purity-mcp 0.0.0-stage → 2.0.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.
- package/README.md +252 -2
- package/dist/data/component-catalog.d.ts +3 -0
- package/dist/data/component-catalog.d.ts.map +1 -0
- package/dist/data/component-catalog.js +330 -0
- package/dist/data/component-catalog.js.map +1 -0
- package/dist/data/documentation.d.ts +10 -0
- package/dist/data/documentation.d.ts.map +1 -0
- package/dist/data/documentation.js +617 -0
- package/dist/data/documentation.js.map +1 -0
- package/dist/data/templates.d.ts +11 -0
- package/dist/data/templates.d.ts.map +1 -0
- package/dist/data/templates.js +633 -0
- package/dist/data/templates.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +3 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +153 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +3 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +177 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +108 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/components.tool.d.ts +34 -0
- package/dist/tools/components.tool.d.ts.map +1 -0
- package/dist/tools/components.tool.js +41 -0
- package/dist/tools/components.tool.js.map +1 -0
- package/dist/tools/docs.tool.d.ts +44 -0
- package/dist/tools/docs.tool.d.ts.map +1 -0
- package/dist/tools/docs.tool.js +60 -0
- package/dist/tools/docs.tool.js.map +1 -0
- package/dist/tools/inspect.tool.d.ts +9 -0
- package/dist/tools/inspect.tool.d.ts.map +1 -0
- package/dist/tools/inspect.tool.js +204 -0
- package/dist/tools/inspect.tool.js.map +1 -0
- package/dist/tools/scaffold.tool.d.ts +28 -0
- package/dist/tools/scaffold.tool.d.ts.map +1 -0
- package/dist/tools/scaffold.tool.js +56 -0
- package/dist/tools/scaffold.tool.js.map +1 -0
- package/dist/tools/transform.tool.d.ts +9 -0
- package/dist/tools/transform.tool.d.ts.map +1 -0
- package/dist/tools/transform.tool.js +9 -0
- package/dist/tools/transform.tool.js.map +1 -0
- package/dist/tools/validate.tool.d.ts +13 -0
- package/dist/tools/validate.tool.d.ts.map +1 -0
- package/dist/tools/validate.tool.js +53 -0
- package/dist/tools/validate.tool.js.map +1 -0
- package/dist/types.d.ts +105 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/code-analyzer.d.ts +3 -0
- package/dist/utils/code-analyzer.d.ts.map +1 -0
- package/dist/utils/code-analyzer.js +282 -0
- package/dist/utils/code-analyzer.js.map +1 -0
- package/dist/utils/template-converter.d.ts +12 -0
- package/dist/utils/template-converter.d.ts.map +1 -0
- package/dist/utils/template-converter.js +158 -0
- package/dist/utils/template-converter.js.map +1 -0
- package/package.json +45 -4
package/README.md
CHANGED
|
@@ -1,3 +1,253 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Purity Model Context Protocol (MCP) Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://modelcontextprotocol.io/)
|
|
4
|
+
[](https://www.typescriptlang.org/)
|
|
5
|
+
[](https://vitest.dev/)
|
|
6
|
+
[](https://gnome.org)
|
|
7
|
+
|
|
8
|
+
Official **Model Context Protocol (MCP)** server for the **Purity** framework.
|
|
9
|
+
|
|
10
|
+
This server bridges your AI development environments (**Claude Desktop**, **Cursor**, **Google Antigravity / AGY**, **VS Code / Cline / Roo Code / Continue**, **Windsurf**) directly into Purity's architecture—eliminating hallucinations, enforcing synchronous signals, scaffolding 100% compliant Custom Elements, inspecting project health, and transforming foreign template code in real time.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## ⚡ Features at a Glance
|
|
15
|
+
|
|
16
|
+
| Category | Capability | Description |
|
|
17
|
+
| :--- | :--- | :--- |
|
|
18
|
+
| 🛠️ **Tools** | `purity_scaffold` | Scaffold components, services, pipes, directives, validators, interceptors, behaviors, and pages with tests. |
|
|
19
|
+
| 🔍 **Tools** | `purity_validate` | Deep static analysis auditing signal mutations, path aliases, inline styles, Adwaita tokens, and foreign syntax. |
|
|
20
|
+
| 📊 **Tools** | `purity_inspect_project` | Scans workspace health, discovered components, test coverage, and SCSS architecture. |
|
|
21
|
+
| 📚 **Tools** | `purity_get_docs` | Authoritative reference documentation and runnable code examples across 20+ framework topics. |
|
|
22
|
+
| 🧩 **Tools** | `purity_lookup_component` | Look up signatures, reactive signals, methods, events, and copy-paste HTML for shared UI components. |
|
|
23
|
+
| 🗂️ **Tools** | `purity_list_components` | Browse all built-in UI components and widgets categorized by role. |
|
|
24
|
+
| 🔄 **Tools** | `purity_transform_template` | Converts Angular (`*ngFor`, `*ngIf`, `(click)`, `[(ngModel)]`) or Vue (`v-for`, `v-if`, `@click`, `v-model`) to Purity. |
|
|
25
|
+
| 📖 **Resources** | `purity://docs/*` | Live access to Cheatsheet, Architecture Rules, and Adwaita Design Tokens. |
|
|
26
|
+
| 🎨 **Resources** | `purity://catalog/*` | Live catalog of all UI components (`switch-button`, `modal-view`, `expander`, `popover`, etc.). |
|
|
27
|
+
| 📋 **Resources** | `purity://templates/*` | Dynamic starter templates for any Purity construct. |
|
|
28
|
+
| 💬 **Prompts** | `purity-create-component` | Guided workflow to design and implement production-ready Purity Custom Elements. |
|
|
29
|
+
| 💬 **Prompts** | `purity-review-code` | 10-point architectural and quality audit prompt. |
|
|
30
|
+
| 💬 **Prompts** | `purity-migrate-component`| Seamless migration prompt from React / Angular / Vue to Purity. |
|
|
31
|
+
| 💬 **Prompts** | `purity-debug-reactivity` | Reactivity troubleshooter diagnosing signal access, untracked dependencies, and effect loops. |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 🚀 Quick Setup
|
|
36
|
+
|
|
37
|
+
### 1. Build the MCP Server
|
|
38
|
+
Inside the repository:
|
|
39
|
+
```bash
|
|
40
|
+
cd AI
|
|
41
|
+
npm install
|
|
42
|
+
npm run build
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Verify it runs:
|
|
46
|
+
```bash
|
|
47
|
+
node dist/index.js --help
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## ⚙️ Environment Configuration
|
|
53
|
+
|
|
54
|
+
### 1. Claude Desktop
|
|
55
|
+
Add to your `claude_desktop_config.json`:
|
|
56
|
+
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
57
|
+
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
58
|
+
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"mcpServers": {
|
|
63
|
+
"purity": {
|
|
64
|
+
"command": "node",
|
|
65
|
+
"args": ["/absolute/path/to/purity/AI/dist/index.js"]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### 2. Cursor
|
|
74
|
+
Add to your project's `.cursor/mcp.json` (or global Cursor MCP configuration):
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"mcpServers": {
|
|
79
|
+
"purity": {
|
|
80
|
+
"command": "node",
|
|
81
|
+
"args": ["${workspaceFolder}/AI/dist/index.js"]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### 3. Google Antigravity / AGY
|
|
90
|
+
Add to your MCP server configuration:
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"mcpServers": {
|
|
95
|
+
"purity": {
|
|
96
|
+
"command": "node",
|
|
97
|
+
"args": ["/run/media/{logged_user}/d/Development/purity/AI/dist/index.js"]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### 4. VS Code (Cline, Roo Code, Continue)
|
|
106
|
+
In your VS Code extension settings (`cline_mcp_settings.json` or `roo_code_mcp_settings.json`):
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"mcpServers": {
|
|
111
|
+
"purity": {
|
|
112
|
+
"command": "node",
|
|
113
|
+
"args": ["/absolute/path/to/purity/AI/dist/index.js"]
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### 5. Windsurf
|
|
122
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"mcpServers": {
|
|
127
|
+
"purity": {
|
|
128
|
+
"command": "node",
|
|
129
|
+
"args": ["/absolute/path/to/purity/AI/dist/index.js"]
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 🛠️ MCP Tools Reference
|
|
138
|
+
|
|
139
|
+
### `purity_scaffold`
|
|
140
|
+
Generates complete, production-ready Purity boilerplate files adhering to all architectural standards:
|
|
141
|
+
- **`type`**: `'component'` | `'service'` | `'pipe'` | `'directive'` | `'validator'` | `'interceptor'` | `'behavior'` | `'page'`
|
|
142
|
+
- **`name`**: Artifact name (e.g. `'user-badge'`)
|
|
143
|
+
- **`selector`** *(optional)*: Custom element tag (e.g. `'user-badge'`)
|
|
144
|
+
- **`targetDir`** *(optional)*: Directory to save generated files
|
|
145
|
+
- **`writeToDisk`** *(optional)*: Automatically writes files to disk when `true`
|
|
146
|
+
- **`description`** *(optional)*: Summary description of functionality
|
|
147
|
+
|
|
148
|
+
*Example Tool Call:*
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"type": "component",
|
|
152
|
+
"name": "shopping-cart",
|
|
153
|
+
"description": "Interactive checkout tray",
|
|
154
|
+
"writeToDisk": false
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
### `purity_validate`
|
|
161
|
+
Audits TypeScript, HTML, or SCSS against Purity's 10 non-negotiable rules:
|
|
162
|
+
- **`code`** *(optional)*: Raw code string to validate
|
|
163
|
+
- **`filePath`** *(optional)*: Path to file on disk to validate
|
|
164
|
+
- **`fileName`** *(optional)*: Virtual filename (e.g. `'my.component.ts'`, `'card.component.scss'`)
|
|
165
|
+
|
|
166
|
+
*Returns:*
|
|
167
|
+
- Numerical score (0 to 100)
|
|
168
|
+
- Validation status (`valid: true/false`)
|
|
169
|
+
- Specific violation list with line numbers, code snippets, and exact recommended replacements.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
### `purity_inspect_project`
|
|
174
|
+
Audits the health and structure of a Purity repository:
|
|
175
|
+
- **`projectRoot`** *(optional)*: Path to project root (defaults to current working directory).
|
|
176
|
+
- Detects registered `@Component`, `@Injectable`, `@Pipe`, `@Directive`, `@Validator`, and `HttpInterceptor` instances.
|
|
177
|
+
- Verifies test coverage (`*.spec.ts`) and SCSS pairing for all components.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
### `purity_get_docs`
|
|
182
|
+
Provides instant reference documentation and runnable code examples:
|
|
183
|
+
- **`topic`**:
|
|
184
|
+
`'signals'` | `'components'` | `'templates'` | `'repeaters'` | `'virtual-for'` | `'conditionals'` | `'slots'` | `'di'` | `'http'` | `'interceptors'` | `'pipes'` | `'directives'` | `'validators'` | `'behaviors'` | `'router'` | `'seo'` | `'design-system'` | `'cursors'` | `'styling'` | `'testing'` | `'rules'`
|
|
185
|
+
- **`detail`**: `'full'` | `'summary'` | `'examples'`
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
### `purity_lookup_component`
|
|
190
|
+
Inspects built-in shared UI components and widgets:
|
|
191
|
+
- **`query`**: Component name or selector (e.g. `'switch-button'`, `'modal-view'`, `'popover'`, `'expander'`, `'date-time-picker'`, `'loader'`, `'navigation-menu'`, `'profile-avatar'`, `'radial-context-menu'`, `'analogue-clock'`).
|
|
192
|
+
- Returns tag selector, inputs, signals, methods, events, slots, and copy-paste HTML examples.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### `purity_transform_template`
|
|
197
|
+
Translates foreign framework templates into idiomatic Purity templates:
|
|
198
|
+
- Angular `*ngFor="let item of items; let i = index"` ➔ `for="let item, i of items"`
|
|
199
|
+
- Vue `v-for="(item, i) in items"` ➔ `for="let item, i of items"`
|
|
200
|
+
- Angular `*ngIf="isLoggedIn"` ➔ `if="isLoggedIn"`
|
|
201
|
+
- Vue `v-if` / `v-else-if` / `v-else` ➔ `if` / `else-if` / `else`
|
|
202
|
+
- Angular `(click)="save()"` / Vue `@click="save"` ➔ `onclick="save()"`
|
|
203
|
+
- Angular `[(ngModel)]="val"` / Vue `v-model="val"` ➔ `value="{{ val() }}" oninput="val.set(this.value)"`
|
|
204
|
+
- Strips prohibited inline styles and suggests clean SCSS styling.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 📖 MCP Resources Reference
|
|
209
|
+
|
|
210
|
+
Connect to these resources in your MCP client:
|
|
211
|
+
|
|
212
|
+
- **`purity://docs/cheatsheet`**: Single-page developer cheat sheet covering signals, components, repeaters, DI, and Adwaita styles.
|
|
213
|
+
- **`purity://docs/architecture`**: Official framework architectural rules and quality constraints.
|
|
214
|
+
- **`purity://docs/design-system`**: Adwaita glassmorphism tokens, corner radii hierarchy, and KDE Breeze cursors.
|
|
215
|
+
- **`purity://catalog/components`**: Markdown table of all shared components and widgets with categories and descriptions.
|
|
216
|
+
- **`purity://templates/{type}`**: Dynamic starter template for `component`, `service`, `pipe`, `directive`, `validator`, `interceptor`, `behavior`, or `page`.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 💬 MCP Prompts Reference
|
|
221
|
+
|
|
222
|
+
Invoke these prompts in your AI chat:
|
|
223
|
+
|
|
224
|
+
- **`purity-create-component`**: Guides the AI step-by-step in generating an end-to-end Purity Custom Element with signals, templates, SCSS, and unit tests.
|
|
225
|
+
- **`purity-review-code`**: Directs the AI to run a rigorous 10-point compliance audit against Purity rules.
|
|
226
|
+
- **`purity-migrate-component`**: Instructs the AI to migrate React, Angular, or Vue components into Purity Custom Elements.
|
|
227
|
+
- **`purity-debug-reactivity`**: Directs the AI to analyze reactivity bugs (signal subscriptions, untracked dependencies, effect loops).
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 🧪 Testing
|
|
232
|
+
|
|
233
|
+
The MCP server has its own dedicated Vitest test suite:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
cd AI
|
|
237
|
+
npm test
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Tests cover:
|
|
241
|
+
- File scaffolding for all 8 artifact types
|
|
242
|
+
- Deep static validation checks & scoring
|
|
243
|
+
- Workspace inspection and artifact discovery
|
|
244
|
+
- Documentation retrieval across all topics
|
|
245
|
+
- Component catalog lookup and categorization
|
|
246
|
+
- Template conversion from Angular and Vue syntax
|
|
247
|
+
- Server instantiation and registration
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## 📄 License
|
|
252
|
+
|
|
253
|
+
MIT © Purity Framework Team
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-catalog.d.ts","sourceRoot":"","sources":["../../src/data/component-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,iBAAiB,EAAE,iBAAiB,EAwUhD,CAAC"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
export const COMPONENT_CATALOG = [
|
|
2
|
+
{
|
|
3
|
+
name: 'SwitchButtonComponent',
|
|
4
|
+
selector: 'switch-button',
|
|
5
|
+
description: 'Adwaita toggle switch component with fine-grained signals and programmatic control.',
|
|
6
|
+
category: 'form',
|
|
7
|
+
inputs: [
|
|
8
|
+
{ name: 'checked', type: 'boolean | string', description: 'Initial checked state (supports boolean or "true")', default: 'false' },
|
|
9
|
+
{ name: 'disabled', type: 'boolean | string', description: 'Whether the switch is interactive', default: 'false' }
|
|
10
|
+
],
|
|
11
|
+
signals: [
|
|
12
|
+
{ name: 'checked', type: 'Signal<boolean>', description: 'Current toggle state signal' },
|
|
13
|
+
{ name: 'disabled', type: 'Signal<boolean>', description: 'Disabled state signal' }
|
|
14
|
+
],
|
|
15
|
+
methods: [
|
|
16
|
+
{ name: 'toggle', signature: 'toggle(): void', description: 'Toggles between checked and unchecked' },
|
|
17
|
+
{ name: 'check', signature: 'check(): void', description: 'Sets state to checked' },
|
|
18
|
+
{ name: 'uncheck', signature: 'uncheck(): void', description: 'Sets state to unchecked' }
|
|
19
|
+
],
|
|
20
|
+
events: [
|
|
21
|
+
{ name: 'change', description: 'Dispatched when state changes with detail: { checked: boolean }' }
|
|
22
|
+
],
|
|
23
|
+
slots: [],
|
|
24
|
+
htmlExample: `<!-- Declarative attribute sync with parent signal -->
|
|
25
|
+
<switch-button checked="{{ isDarkMode() }}" onchange="handleThemeToggle($event)"></switch-button>`,
|
|
26
|
+
typescriptExample: `import { Component, signal, ViewChild } from '@purity/core';
|
|
27
|
+
import { SwitchButtonComponent } from '@components/switch-button/switch-button.component';
|
|
28
|
+
|
|
29
|
+
@Component({ selector: 'settings-view' })
|
|
30
|
+
export class SettingsView {
|
|
31
|
+
@ViewChild('switch-button')
|
|
32
|
+
toggleSwitch?: SwitchButtonComponent;
|
|
33
|
+
|
|
34
|
+
isDarkMode = signal(true);
|
|
35
|
+
|
|
36
|
+
handleThemeToggle(e: CustomEvent) {
|
|
37
|
+
this.isDarkMode.set(e.detail.checked);
|
|
38
|
+
}
|
|
39
|
+
}`
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'ModalViewComponent',
|
|
43
|
+
selector: 'modal-view',
|
|
44
|
+
description: 'Floating Adwaita dialog with open, close, maximize, backdrop blur, and slotted regions.',
|
|
45
|
+
category: 'overlay',
|
|
46
|
+
inputs: [
|
|
47
|
+
{ name: 'is-open', type: 'boolean | string', description: 'Visibility state of the modal', default: 'false' },
|
|
48
|
+
{ name: 'title', type: 'string', description: 'Modal header title text', default: '""' }
|
|
49
|
+
],
|
|
50
|
+
signals: [
|
|
51
|
+
{ name: 'isOpen', type: 'Signal<boolean>', description: 'Modal open/closed reactive state' },
|
|
52
|
+
{ name: 'isMaximized', type: 'Signal<boolean>', description: 'Maximized full-screen state' }
|
|
53
|
+
],
|
|
54
|
+
methods: [
|
|
55
|
+
{ name: 'open', signature: 'open(): void', description: 'Opens the modal dialog' },
|
|
56
|
+
{ name: 'close', signature: 'close(): void', description: 'Closes the modal dialog' },
|
|
57
|
+
{ name: 'toggle', signature: 'toggle(): void', description: 'Toggles open/close state' },
|
|
58
|
+
{ name: 'maximize', signature: 'maximize(): void', description: 'Toggles maximized state' }
|
|
59
|
+
],
|
|
60
|
+
events: [
|
|
61
|
+
{ name: 'modal-opened', description: 'Fired when modal opens' },
|
|
62
|
+
{ name: 'modal-closed', description: 'Fired when modal closes' }
|
|
63
|
+
],
|
|
64
|
+
slots: [
|
|
65
|
+
{ name: 'header', description: 'Custom header content' },
|
|
66
|
+
{ name: 'default', description: 'Body content' },
|
|
67
|
+
{ name: 'footer', description: 'Action buttons / footer' }
|
|
68
|
+
],
|
|
69
|
+
htmlExample: `<modal-view is-open="{{ showDialog() }}" title="Confirm Action">
|
|
70
|
+
<p>Are you sure you want to proceed?</p>
|
|
71
|
+
<div slot="footer">
|
|
72
|
+
<button class="button-default" onclick="showDialog.set(false)">Cancel</button>
|
|
73
|
+
<button class="button-primary" onclick="confirmAction()">Confirm</button>
|
|
74
|
+
</div>
|
|
75
|
+
</modal-view>`,
|
|
76
|
+
typescriptExample: `import { Component, signal } from '@purity/core';
|
|
77
|
+
|
|
78
|
+
@Component({ selector: 'user-manager' })
|
|
79
|
+
export class UserManager {
|
|
80
|
+
showDialog = signal(false);
|
|
81
|
+
|
|
82
|
+
confirmAction() {
|
|
83
|
+
this.showDialog.set(false);
|
|
84
|
+
}
|
|
85
|
+
}`
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: 'ExpanderComponent',
|
|
89
|
+
selector: 'expander',
|
|
90
|
+
description: 'Collapsible accordion card with animated header, toggle methods, and slot support.',
|
|
91
|
+
category: 'layout',
|
|
92
|
+
inputs: [
|
|
93
|
+
{ name: 'title', type: 'string', description: 'Title displayed on the expander header', default: '""' },
|
|
94
|
+
{ name: 'is-expanded', type: 'boolean | string', description: 'Whether the expander is currently open', default: 'false' }
|
|
95
|
+
],
|
|
96
|
+
signals: [
|
|
97
|
+
{ name: 'isExpanded', type: 'Signal<boolean>', description: 'Expanded reactive state signal' }
|
|
98
|
+
],
|
|
99
|
+
methods: [
|
|
100
|
+
{ name: 'toggle', signature: 'toggle(): void', description: 'Toggles expanded/collapsed state' },
|
|
101
|
+
{ name: 'expand', signature: 'expand(): void', description: 'Expands the content' },
|
|
102
|
+
{ name: 'collapse', signature: 'collapse(): void', description: 'Collapses the content' }
|
|
103
|
+
],
|
|
104
|
+
events: [
|
|
105
|
+
{ name: 'expander-toggled', description: 'Dispatched with detail: { expanded: boolean }' }
|
|
106
|
+
],
|
|
107
|
+
slots: [
|
|
108
|
+
{ name: 'header', description: 'Optional custom header content' },
|
|
109
|
+
{ name: 'default', description: 'Collapsible body content' }
|
|
110
|
+
],
|
|
111
|
+
htmlExample: `<!-- Direct structural repeater interoperability -->
|
|
112
|
+
<expander for="let section of sections" title="{{ section.name }}" is-expanded="{{ section.isOpen }}">
|
|
113
|
+
<p>{{ section.details }}</p>
|
|
114
|
+
</expander>`,
|
|
115
|
+
typescriptExample: `import { Component, signal } from '@purity/core';
|
|
116
|
+
|
|
117
|
+
@Component({ selector: 'faq-section' })
|
|
118
|
+
export class FaqSection {
|
|
119
|
+
sections = signal([
|
|
120
|
+
{ name: 'Reactivity', isOpen: true, details: 'Synchronous signals with automatic tracking' },
|
|
121
|
+
{ name: 'Components', isOpen: false, details: 'Native Custom Elements v1' }
|
|
122
|
+
]);
|
|
123
|
+
}`
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'PopoverComponent',
|
|
127
|
+
selector: 'popover',
|
|
128
|
+
description: 'Anchored floating container with viewport collision auto-flipping and directional placement.',
|
|
129
|
+
category: 'overlay',
|
|
130
|
+
inputs: [
|
|
131
|
+
{ name: 'is-open', type: 'boolean | string', description: 'Popover visibility state', default: 'false' },
|
|
132
|
+
{ name: 'target', type: 'string', description: 'CSS selector or ID of anchor trigger element', default: '""' },
|
|
133
|
+
{ name: 'placement', type: '"top" | "bottom" | "left" | "right"', description: 'Preferred anchor placement', default: '"bottom"' }
|
|
134
|
+
],
|
|
135
|
+
signals: [
|
|
136
|
+
{ name: 'isOpen', type: 'Signal<boolean>', description: 'Current open signal' }
|
|
137
|
+
],
|
|
138
|
+
methods: [
|
|
139
|
+
{ name: 'open', signature: 'open(): void', description: 'Shows the popover' },
|
|
140
|
+
{ name: 'close', signature: 'close(): void', description: 'Hides the popover' },
|
|
141
|
+
{ name: 'toggle', signature: 'toggle(): void', description: 'Toggles popover visibility' }
|
|
142
|
+
],
|
|
143
|
+
events: [
|
|
144
|
+
{ name: 'popover-opened', description: 'Dispatched when popover displays' },
|
|
145
|
+
{ name: 'popover-closed', description: 'Dispatched when popover closes' }
|
|
146
|
+
],
|
|
147
|
+
slots: [
|
|
148
|
+
{ name: 'default', description: 'Popover card contents' }
|
|
149
|
+
],
|
|
150
|
+
htmlExample: `<button id="btnOptions" class="button-default" onclick="showOptions.set(!showOptions())">Options</button>
|
|
151
|
+
<popover target="#btnOptions" is-open="{{ showOptions() }}" placement="bottom">
|
|
152
|
+
<div class="popover-menu">
|
|
153
|
+
<button onclick="edit()">Edit</button>
|
|
154
|
+
<button onclick="deleteItem()">Delete</button>
|
|
155
|
+
</div>
|
|
156
|
+
</popover>`,
|
|
157
|
+
typescriptExample: `import { Component, signal } from '@purity/core';
|
|
158
|
+
|
|
159
|
+
@Component({ selector: 'action-bar' })
|
|
160
|
+
export class ActionBar {
|
|
161
|
+
showOptions = signal(false);
|
|
162
|
+
}`
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'DateTimePickerComponent',
|
|
166
|
+
selector: 'date-time-picker',
|
|
167
|
+
description: 'Reactive calendar and time selector with body teleportation and Adwaita styling.',
|
|
168
|
+
category: 'form',
|
|
169
|
+
inputs: [
|
|
170
|
+
{ name: 'value', type: 'string', description: 'ISO date string or current value', default: '""' },
|
|
171
|
+
{ name: 'format', type: 'string', description: 'Date format string (e.g. "YYYY-MM-DD")', default: '"YYYY-MM-DD"' },
|
|
172
|
+
{ name: 'mode', type: '"date" | "time" | "datetime"', description: 'Picker selection mode', default: '"date"' }
|
|
173
|
+
],
|
|
174
|
+
signals: [
|
|
175
|
+
{ name: 'selectedDate', type: 'Signal<Date | null>', description: 'Currently selected date signal' }
|
|
176
|
+
],
|
|
177
|
+
methods: [
|
|
178
|
+
{ name: 'open', signature: 'open(): void', description: 'Opens the calendar popup' },
|
|
179
|
+
{ name: 'close', signature: 'close(): void', description: 'Closes the calendar popup' },
|
|
180
|
+
{ name: 'setDate', signature: 'setDate(date: Date): void', description: 'Programmatically selects a date' }
|
|
181
|
+
],
|
|
182
|
+
events: [
|
|
183
|
+
{ name: 'date-change', description: 'Dispatched with detail: { date: Date, formatted: string }' }
|
|
184
|
+
],
|
|
185
|
+
slots: [],
|
|
186
|
+
htmlExample: `<date-time-picker value="{{ eventDate() }}" ondate-change="handleDateSelect($event)"></date-time-picker>`,
|
|
187
|
+
typescriptExample: `import { Component, signal } from '@purity/core';
|
|
188
|
+
|
|
189
|
+
@Component({ selector: 'event-form' })
|
|
190
|
+
export class EventForm {
|
|
191
|
+
eventDate = signal('2026-10-28');
|
|
192
|
+
handleDateSelect(e: CustomEvent) {
|
|
193
|
+
this.eventDate.set(e.detail.formatted);
|
|
194
|
+
}
|
|
195
|
+
}`
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
name: 'LoaderComponent',
|
|
199
|
+
selector: 'loader-component',
|
|
200
|
+
description: 'Glassmorphic spinner and progress indicator with show/hide methods and message signal.',
|
|
201
|
+
category: 'overlay',
|
|
202
|
+
inputs: [
|
|
203
|
+
{ name: 'is-loading', type: 'boolean | string', description: 'Loading state', default: 'false' },
|
|
204
|
+
{ name: 'message', type: 'string', description: 'Optional status message text', default: '""' }
|
|
205
|
+
],
|
|
206
|
+
signals: [
|
|
207
|
+
{ name: 'isLoading', type: 'Signal<boolean>', description: 'Loading state signal' },
|
|
208
|
+
{ name: 'message', type: 'Signal<string>', description: 'Current message signal' }
|
|
209
|
+
],
|
|
210
|
+
methods: [
|
|
211
|
+
{ name: 'show', signature: 'show(message?: string): void', description: 'Activates loader with optional message' },
|
|
212
|
+
{ name: 'hide', signature: 'hide(): void', description: 'Hides loader' }
|
|
213
|
+
],
|
|
214
|
+
events: [],
|
|
215
|
+
slots: [],
|
|
216
|
+
htmlExample: `<loader-component is-loading="{{ isFetching() }}" message="Syncing records..."></loader-component>`,
|
|
217
|
+
typescriptExample: `import { Component, signal } from '@purity/core';
|
|
218
|
+
|
|
219
|
+
@Component({ selector: 'data-grid' })
|
|
220
|
+
export class DataGrid {
|
|
221
|
+
isFetching = signal(false);
|
|
222
|
+
}`
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: 'ProfileAvatarComponent',
|
|
226
|
+
selector: 'profile-avatar',
|
|
227
|
+
description: 'User avatar displaying image, fallback initials, presence status badge, and custom sizing.',
|
|
228
|
+
category: 'widget',
|
|
229
|
+
inputs: [
|
|
230
|
+
{ name: 'src', type: 'string', description: 'Avatar image URL', default: '""' },
|
|
231
|
+
{ name: 'name', type: 'string', description: 'User full name for initial computation', default: '""' },
|
|
232
|
+
{ name: 'status', type: '"online" | "offline" | "busy" | "away"', description: 'Presence indicator status', default: '"offline"' },
|
|
233
|
+
{ name: 'size', type: '"sm" | "md" | "lg" | "xl"', description: 'Avatar dimensions', default: '"md"' }
|
|
234
|
+
],
|
|
235
|
+
signals: [
|
|
236
|
+
{ name: 'status', type: 'Signal<string>', description: 'Presence status signal' }
|
|
237
|
+
],
|
|
238
|
+
methods: [],
|
|
239
|
+
events: [],
|
|
240
|
+
slots: [],
|
|
241
|
+
htmlExample: `<profile-avatar src="{{ user().avatar }}" name="{{ user().fullName }}" status="online" size="md"></profile-avatar>`,
|
|
242
|
+
typescriptExample: `import { Component, signal } from '@purity/core';
|
|
243
|
+
|
|
244
|
+
@Component({ selector: 'user-badge' })
|
|
245
|
+
export class UserBadge {
|
|
246
|
+
user = signal({ fullName: 'Ada Lovelace', avatar: '' });
|
|
247
|
+
}`
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
name: 'RadialContextMenuComponent',
|
|
251
|
+
selector: 'radial-context-menu',
|
|
252
|
+
description: 'Circular context menu with pie segments, icon badges, submenus, and mouse trigger.',
|
|
253
|
+
category: 'navigation',
|
|
254
|
+
inputs: [
|
|
255
|
+
{ name: 'radius', type: 'number', description: 'Outer circle radius in pixels', default: '120' }
|
|
256
|
+
],
|
|
257
|
+
signals: [
|
|
258
|
+
{ name: 'isOpen', type: 'Signal<boolean>', description: 'Menu open signal' }
|
|
259
|
+
],
|
|
260
|
+
methods: [
|
|
261
|
+
{ name: 'openAt', signature: 'openAt(x: number, y: number): void', description: 'Opens menu at specific viewport coordinates' },
|
|
262
|
+
{ name: 'close', signature: 'close(): void', description: 'Closes radial menu' }
|
|
263
|
+
],
|
|
264
|
+
events: [
|
|
265
|
+
{ name: 'item-selected', description: 'Dispatched with detail: { action: string, data?: any }' }
|
|
266
|
+
],
|
|
267
|
+
slots: [
|
|
268
|
+
{ name: 'default', description: 'Menu item icons and actions' }
|
|
269
|
+
],
|
|
270
|
+
htmlExample: `<div oncontextmenu="handleContextMenu($event)">
|
|
271
|
+
Right click here
|
|
272
|
+
<radial-context-menu id="radialMenu"></radial-context-menu>
|
|
273
|
+
</div>`,
|
|
274
|
+
typescriptExample: `import { Component, ViewChild } from '@purity/core';
|
|
275
|
+
import { RadialContextMenuComponent } from '@components/radial-context-menu/radial-context-menu.component';
|
|
276
|
+
|
|
277
|
+
@Component({ selector: 'canvas-view' })
|
|
278
|
+
export class CanvasView {
|
|
279
|
+
@ViewChild('#radialMenu')
|
|
280
|
+
radialMenu?: RadialContextMenuComponent;
|
|
281
|
+
|
|
282
|
+
handleContextMenu(e: MouseEvent) {
|
|
283
|
+
e.preventDefault();
|
|
284
|
+
this.radialMenu?.openAt(e.clientX, e.clientY);
|
|
285
|
+
}
|
|
286
|
+
}`
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
name: 'NavigationMenuComponent',
|
|
290
|
+
selector: 'navigation-menu',
|
|
291
|
+
description: 'Draggable floating radial navigation bar with quick routes, glassmorphic backdrop, and Breeze cursors.',
|
|
292
|
+
category: 'navigation',
|
|
293
|
+
inputs: [],
|
|
294
|
+
signals: [
|
|
295
|
+
{ name: 'isExpanded', type: 'Signal<boolean>', description: 'Menu expansion state signal' }
|
|
296
|
+
],
|
|
297
|
+
methods: [
|
|
298
|
+
{ name: 'toggle', signature: 'toggle(): void', description: 'Toggles expanded floating items' }
|
|
299
|
+
],
|
|
300
|
+
events: [],
|
|
301
|
+
slots: [],
|
|
302
|
+
htmlExample: `<navigation-menu></navigation-menu>`,
|
|
303
|
+
typescriptExample: `import { Component } from '@purity/core';
|
|
304
|
+
|
|
305
|
+
@Component({ selector: 'app-root' })
|
|
306
|
+
export class AppRoot {}`
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: 'AnalogueClockComponent',
|
|
310
|
+
selector: 'analogue-clock',
|
|
311
|
+
description: '2D Canvas analogue clock widget with smooth sweep hands, configurable theme, and timezone support.',
|
|
312
|
+
category: 'widget',
|
|
313
|
+
inputs: [
|
|
314
|
+
{ name: 'size', type: 'number', description: 'Canvas dimension in pixels', default: '200' },
|
|
315
|
+
{ name: 'timezone', type: 'string', description: 'IANA timezone string (e.g. "UTC", "America/New_York")', default: '"local"' }
|
|
316
|
+
],
|
|
317
|
+
signals: [
|
|
318
|
+
{ name: 'currentTime', type: 'Signal<Date>', description: 'Current ticking clock time' }
|
|
319
|
+
],
|
|
320
|
+
methods: [],
|
|
321
|
+
events: [],
|
|
322
|
+
slots: [],
|
|
323
|
+
htmlExample: `<analogue-clock size="240" timezone="UTC"></analogue-clock>`,
|
|
324
|
+
typescriptExample: `import { Component } from '@purity/core';
|
|
325
|
+
|
|
326
|
+
@Component({ selector: 'clock-dashboard' })
|
|
327
|
+
export class ClockDashboard {}`
|
|
328
|
+
}
|
|
329
|
+
];
|
|
330
|
+
//# sourceMappingURL=component-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-catalog.js","sourceRoot":"","sources":["../../src/data/component-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DocTopic } from '../types.js';
|
|
2
|
+
export interface DocEntry {
|
|
3
|
+
topic: DocTopic;
|
|
4
|
+
title: string;
|
|
5
|
+
summary: string;
|
|
6
|
+
content: string;
|
|
7
|
+
examples: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare const DOCUMENTATION: Record<DocTopic, DocEntry>;
|
|
10
|
+
//# sourceMappingURL=documentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation.d.ts","sourceRoot":"","sources":["../../src/data/documentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CA4nBpD,CAAC"}
|