wally-ui 1.1.0 → 1.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.
- package/package.json +1 -1
- package/playground/showcase/src/app/app.routes.ts +4 -0
- package/playground/showcase/src/app/components/button/button.html +5 -11
- package/playground/showcase/src/app/components/button/button.ts +0 -1
- package/playground/showcase/src/app/core/services/ai-prompt.service.ts +43 -0
- package/playground/showcase/src/app/pages/components/{breadcrumb → breadcrumb-docs}/breadcrumb-docs.html +32 -0
- package/playground/showcase/src/app/pages/components/{breadcrumb → breadcrumb-docs}/breadcrumb-docs.ts +14 -0
- package/playground/showcase/src/app/pages/components/{button → button-docs}/button-docs.html +179 -67
- package/playground/showcase/src/app/pages/components/{button → button-docs}/button-docs.ts +14 -0
- package/playground/showcase/src/app/pages/components/components.routes.ts +2 -2
- package/playground/showcase/src/app/pages/home/home.html +3 -0
- package/playground/showcase/src/app/pages/mcp/mcp.css +1 -0
- package/playground/showcase/src/app/pages/mcp/mcp.html +196 -0
- package/playground/showcase/src/app/pages/mcp/mcp.spec.ts +23 -0
- package/playground/showcase/src/app/pages/mcp/mcp.ts +16 -0
- /package/playground/showcase/src/app/pages/components/{breadcrumb → breadcrumb-docs}/breadcrumb-docs.css +0 -0
- /package/playground/showcase/src/app/pages/components/{button → button-docs}/button-docs.css +0 -0
- /package/playground/showcase/src/app/pages/components/{button → button-docs}/button-docs.spec.ts +0 -0
package/package.json
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
group
|
|
3
3
|
relative
|
|
4
4
|
w-full
|
|
5
|
-
flex items-center justify-center
|
|
5
|
+
flex items-center justify-center gap-2
|
|
6
|
+
text-white text-sm font-medium dark:text-[#0a0a0a]
|
|
6
7
|
bg-[#0a0a0a] hover:bg-[#0a0a0a]/85
|
|
7
8
|
disabled:bg-[#0a0a0a]/85
|
|
8
9
|
dark:bg-white dark:hover:bg-white/85
|
|
@@ -10,7 +11,7 @@
|
|
|
10
11
|
disabled:pointer-events-none
|
|
11
12
|
p-2.5
|
|
12
13
|
rounded-md
|
|
13
|
-
transition
|
|
14
|
+
transition duration-300 ease-in-out
|
|
14
15
|
antialiased
|
|
15
16
|
cursor-pointer
|
|
16
17
|
">
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
@if (loading()) {
|
|
28
|
-
<svg class="
|
|
29
|
+
<svg class="size-4 animate-spin text-white dark:text-[#0a0a0a]" xmlns="http://www.w3.org/2000/svg" fill="none"
|
|
29
30
|
viewBox="0 0 24 24">
|
|
30
31
|
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
|
|
31
32
|
<path class="opacity-75" fill="currentColor"
|
|
@@ -34,12 +35,5 @@
|
|
|
34
35
|
</svg>
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
<
|
|
38
|
-
text-white
|
|
39
|
-
text-sm
|
|
40
|
-
font-medium
|
|
41
|
-
dark:text-[#0a0a0a]
|
|
42
|
-
">
|
|
43
|
-
{{ text() }}
|
|
44
|
-
</span>
|
|
38
|
+
<ng-content></ng-content>
|
|
45
39
|
</button>
|
|
@@ -10,7 +10,6 @@ import { CommonModule } from '@angular/common';
|
|
|
10
10
|
templateUrl: './button.html',
|
|
11
11
|
})
|
|
12
12
|
export class Button {
|
|
13
|
-
text: InputSignal<string> = input<string>('Wally Button');
|
|
14
13
|
type: InputSignal<string> = input<string>('button');
|
|
15
14
|
disabled: InputSignal<boolean> = input<boolean>(false);
|
|
16
15
|
loading: InputSignal<boolean> = input<boolean>(false);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Injectable, Inject, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
+
|
|
4
|
+
@Injectable({
|
|
5
|
+
providedIn: 'root'
|
|
6
|
+
})
|
|
7
|
+
export class AiPromptService {
|
|
8
|
+
|
|
9
|
+
constructor(@Inject(PLATFORM_ID) private platformId: Object) {}
|
|
10
|
+
|
|
11
|
+
generateClaudeUrl(pageUrl?: string): string {
|
|
12
|
+
const url = pageUrl || this.getCurrentUrl();
|
|
13
|
+
const basePrompt = `I'm looking at this Wally UI documentation: ${url} Help me understand how to use it. Be ready to explain concepts, give examples, or help debug based on it.`;
|
|
14
|
+
|
|
15
|
+
return `https://claude.ai/new?q=${encodeURIComponent(basePrompt)}`;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
generateChatGptUrl(pageUrl?: string): string {
|
|
19
|
+
const url = pageUrl || this.getCurrentUrl();
|
|
20
|
+
const basePrompt = `I'm looking at this Wally UI documentation: ${url} Help me understand how to use it. Be ready to explain concepts, give examples, or help debug based on it.`;
|
|
21
|
+
|
|
22
|
+
return `https://chatgpt.com/?prompt=${encodeURIComponent(basePrompt)}`;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
private getCurrentUrl(): string {
|
|
26
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
27
|
+
return window.location.href;
|
|
28
|
+
}
|
|
29
|
+
// Fallback for SSR - you can customize this
|
|
30
|
+
return 'https://wally-ui.com/components/button';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
generateCustomPromptUrl(aiService: 'claude' | 'chatgpt', customPrompt: string, pageUrl?: string): string {
|
|
34
|
+
const url = pageUrl || this.getCurrentUrl();
|
|
35
|
+
const fullPrompt = `${customPrompt} ${url}`;
|
|
36
|
+
|
|
37
|
+
if (aiService === 'claude') {
|
|
38
|
+
return `https://claude.ai/new?q=${encodeURIComponent(fullPrompt)}`;
|
|
39
|
+
} else {
|
|
40
|
+
return `https://chatgpt.com/?prompt=${encodeURIComponent(fullPrompt)}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -11,6 +11,38 @@
|
|
|
11
11
|
A navigation component that shows the current page location within a hierarchy.
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
|
+
<div class="flex flex-wrap gap-2 mb-6">
|
|
15
|
+
<a [href]="claudeUrl" target="_blank"
|
|
16
|
+
class="inline-flex items-center gap-2 px-3 py-1.5 text-xs bg-gray-200 dark:bg-[#121212] text-gray-600 dark:text-gray-300 rounded-lg hover:bg-gray-300 dark:hover:bg-[#1a1a1a] hover:text-[#0a0a0a] dark:hover:text-white transition-colors">
|
|
17
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="size-6" viewBox="0 0 24 24">
|
|
18
|
+
<path fill="currentColor"
|
|
19
|
+
d="m4.714 15.956l4.718-2.648l.079-.23l-.08-.128h-.23l-.79-.048l-2.695-.073l-2.337-.097l-2.265-.122l-.57-.121l-.535-.704l.055-.353l.48-.321l.685.06l1.518.104l2.277.157l1.651.098l2.447.255h.389l.054-.158l-.133-.097l-.103-.098l-2.356-1.596l-2.55-1.688l-1.336-.972l-.722-.491L2 6.223l-.158-1.008l.656-.722l.88.06l.224.061l.893.686l1.906 1.476l2.49 1.833l.364.304l.146-.104l.018-.072l-.164-.274l-1.354-2.446l-1.445-2.49l-.644-1.032l-.17-.619a3 3 0 0 1-.103-.729L6.287.133L6.7 0l.995.134l.42.364l.619 1.415L9.735 4.14l1.555 3.03l.455.898l.243.832l.09.255h.159V9.01l.127-1.706l.237-2.095l.23-2.695l.08-.76l.376-.91l.747-.492l.583.28l.48.685l-.067.444l-.286 1.851l-.558 2.903l-.365 1.942h.213l.243-.242l.983-1.306l1.652-2.064l.728-.82l.85-.904l.547-.431h1.032l.759 1.129l-.34 1.166l-1.063 1.347l-.88 1.142l-1.263 1.7l-.79 1.36l.074.11l.188-.02l2.853-.606l1.542-.28l1.84-.315l.832.388l.09.395l-.327.807l-1.967.486l-2.307.462l-3.436.813l-.043.03l.049.061l1.548.146l.662.036h1.62l3.018.225l.79.522l.473.638l-.08.485l-1.213.62l-1.64-.389l-3.825-.91l-1.31-.329h-.183v.11l1.093 1.068l2.003 1.81l2.508 2.33l.127.578l-.321.455l-.34-.049l-2.204-1.657l-.85-.747l-1.925-1.62h-.127v.17l.443.649l2.343 3.521l.122 1.08l-.17.353l-.607.213l-.668-.122l-1.372-1.924l-1.415-2.168l-1.141-1.943l-.14.08l-.674 7.254l-.316.37l-.728.28l-.607-.461l-.322-.747l.322-1.476l.388-1.924l.316-1.53l.285-1.9l.17-.632l-.012-.042l-.14.018l-1.432 1.967l-2.18 2.945l-1.724 1.845l-.413.164l-.716-.37l.066-.662l.401-.589l2.386-3.036l1.439-1.882l.929-1.086l-.006-.158h-.055L4.138 18.56l-1.13.146l-.485-.456l.06-.746l.231-.243l1.907-1.312Z" />
|
|
20
|
+
</svg>
|
|
21
|
+
|
|
22
|
+
Open in Claude
|
|
23
|
+
</a>
|
|
24
|
+
|
|
25
|
+
<a [href]="chatGptUrl" target="_blank"
|
|
26
|
+
class="inline-flex items-center gap-2 px-3 py-1.5 text-xs bg-gray-200 dark:bg-[#121212] text-gray-600 dark:text-gray-300 rounded-lg hover:bg-gray-300 dark:hover:bg-[#1a1a1a] hover:text-[#0a0a0a] dark:hover:text-white transition-colors">
|
|
27
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="size-6" viewBox="0 0 48 48">
|
|
28
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
29
|
+
d="M18.38 27.94v-14.4l11.19-6.46c6.2-3.58 17.3 5.25 12.64 13.33" />
|
|
30
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
31
|
+
d="m18.38 20.94l12.47-7.2l11.19 6.46c6.2 3.58 4.1 17.61-5.23 17.61" />
|
|
32
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
33
|
+
d="m24.44 17.44l12.47 7.2v12.93c0 7.16-13.2 12.36-17.86 4.28" />
|
|
34
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
35
|
+
d="M30.5 21.2v14.14L19.31 41.8c-6.2 3.58-17.3-5.25-12.64-13.33" />
|
|
36
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
37
|
+
d="m30.5 27.94l-12.47 7.2l-11.19-6.46c-6.21-3.59-4.11-17.61 5.22-17.61" />
|
|
38
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
39
|
+
d="m24.44 31.44l-12.47-7.2V11.31c0-7.16 13.2-12.36 17.86-4.28" />
|
|
40
|
+
</svg>
|
|
41
|
+
|
|
42
|
+
Open in ChatGPT
|
|
43
|
+
</a>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
14
46
|
<!-- Installation -->
|
|
15
47
|
<section class="mb-8">
|
|
16
48
|
<h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Installation</h2>
|
|
@@ -2,6 +2,8 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
|
|
3
3
|
import { Breadcrumb, BreadcrumbItem } from '../../../components/breadcrumb/breadcrumb';
|
|
4
4
|
|
|
5
|
+
import { AiPromptService } from '../../../core/services/ai-prompt.service';
|
|
6
|
+
|
|
5
7
|
@Component({
|
|
6
8
|
selector: 'app-breadcrumb-docs',
|
|
7
9
|
imports: [
|
|
@@ -26,4 +28,16 @@ export class BreadcrumbDocs {
|
|
|
26
28
|
simpleBreadcrumbs: BreadcrumbItem[] = [
|
|
27
29
|
{ label: 'Components' }
|
|
28
30
|
];
|
|
31
|
+
|
|
32
|
+
constructor(
|
|
33
|
+
private aiPromptService: AiPromptService
|
|
34
|
+
) { }
|
|
35
|
+
|
|
36
|
+
get claudeUrl(): string {
|
|
37
|
+
return this.aiPromptService.generateClaudeUrl();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
get chatGptUrl(): string {
|
|
41
|
+
return this.aiPromptService.generateChatGptUrl();
|
|
42
|
+
}
|
|
29
43
|
}
|
package/playground/showcase/src/app/pages/components/{button → button-docs}/button-docs.html
RENAMED
|
@@ -7,10 +7,43 @@
|
|
|
7
7
|
<h1 class="text-2xl font-bold mb-4 text-[#0a0a0a] dark:text-white">
|
|
8
8
|
Button
|
|
9
9
|
</h1>
|
|
10
|
-
<p class="text-gray-700 dark:text-gray-400 mb-
|
|
10
|
+
<p class="text-gray-700 dark:text-gray-400 mb-4">
|
|
11
11
|
A versatile button component with loading states, notifications, and customizable text.
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
|
+
<!-- AI Prompts -->
|
|
15
|
+
<div class="flex flex-wrap gap-2 mb-6">
|
|
16
|
+
<a [href]="claudeUrl" target="_blank"
|
|
17
|
+
class="inline-flex items-center gap-2 px-3 py-1.5 text-xs bg-gray-200 dark:bg-[#121212] text-gray-600 dark:text-gray-300 rounded-lg hover:bg-gray-300 dark:hover:bg-[#1a1a1a] hover:text-[#0a0a0a] dark:hover:text-white transition-colors">
|
|
18
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="size-6" viewBox="0 0 24 24">
|
|
19
|
+
<path fill="currentColor"
|
|
20
|
+
d="m4.714 15.956l4.718-2.648l.079-.23l-.08-.128h-.23l-.79-.048l-2.695-.073l-2.337-.097l-2.265-.122l-.57-.121l-.535-.704l.055-.353l.48-.321l.685.06l1.518.104l2.277.157l1.651.098l2.447.255h.389l.054-.158l-.133-.097l-.103-.098l-2.356-1.596l-2.55-1.688l-1.336-.972l-.722-.491L2 6.223l-.158-1.008l.656-.722l.88.06l.224.061l.893.686l1.906 1.476l2.49 1.833l.364.304l.146-.104l.018-.072l-.164-.274l-1.354-2.446l-1.445-2.49l-.644-1.032l-.17-.619a3 3 0 0 1-.103-.729L6.287.133L6.7 0l.995.134l.42.364l.619 1.415L9.735 4.14l1.555 3.03l.455.898l.243.832l.09.255h.159V9.01l.127-1.706l.237-2.095l.23-2.695l.08-.76l.376-.91l.747-.492l.583.28l.48.685l-.067.444l-.286 1.851l-.558 2.903l-.365 1.942h.213l.243-.242l.983-1.306l1.652-2.064l.728-.82l.85-.904l.547-.431h1.032l.759 1.129l-.34 1.166l-1.063 1.347l-.88 1.142l-1.263 1.7l-.79 1.36l.074.11l.188-.02l2.853-.606l1.542-.28l1.84-.315l.832.388l.09.395l-.327.807l-1.967.486l-2.307.462l-3.436.813l-.043.03l.049.061l1.548.146l.662.036h1.62l3.018.225l.79.522l.473.638l-.08.485l-1.213.62l-1.64-.389l-3.825-.91l-1.31-.329h-.183v.11l1.093 1.068l2.003 1.81l2.508 2.33l.127.578l-.321.455l-.34-.049l-2.204-1.657l-.85-.747l-1.925-1.62h-.127v.17l.443.649l2.343 3.521l.122 1.08l-.17.353l-.607.213l-.668-.122l-1.372-1.924l-1.415-2.168l-1.141-1.943l-.14.08l-.674 7.254l-.316.37l-.728.28l-.607-.461l-.322-.747l.322-1.476l.388-1.924l.316-1.53l.285-1.9l.17-.632l-.012-.042l-.14.018l-1.432 1.967l-2.18 2.945l-1.724 1.845l-.413.164l-.716-.37l.066-.662l.401-.589l2.386-3.036l1.439-1.882l.929-1.086l-.006-.158h-.055L4.138 18.56l-1.13.146l-.485-.456l.06-.746l.231-.243l1.907-1.312Z" />
|
|
21
|
+
</svg>
|
|
22
|
+
|
|
23
|
+
Open in Claude
|
|
24
|
+
</a>
|
|
25
|
+
|
|
26
|
+
<a [href]="chatGptUrl" target="_blank"
|
|
27
|
+
class="inline-flex items-center gap-2 px-3 py-1.5 text-xs bg-gray-200 dark:bg-[#121212] text-gray-600 dark:text-gray-300 rounded-lg hover:bg-gray-300 dark:hover:bg-[#1a1a1a] hover:text-[#0a0a0a] dark:hover:text-white transition-colors">
|
|
28
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="size-6" viewBox="0 0 48 48">
|
|
29
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
30
|
+
d="M18.38 27.94v-14.4l11.19-6.46c6.2-3.58 17.3 5.25 12.64 13.33" />
|
|
31
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
32
|
+
d="m18.38 20.94l12.47-7.2l11.19 6.46c6.2 3.58 4.1 17.61-5.23 17.61" />
|
|
33
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
34
|
+
d="m24.44 17.44l12.47 7.2v12.93c0 7.16-13.2 12.36-17.86 4.28" />
|
|
35
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
36
|
+
d="M30.5 21.2v14.14L19.31 41.8c-6.2 3.58-17.3-5.25-12.64-13.33" />
|
|
37
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
38
|
+
d="m30.5 27.94l-12.47 7.2l-11.19-6.46c-6.21-3.59-4.11-17.61 5.22-17.61" />
|
|
39
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
40
|
+
d="m24.44 31.44l-12.47-7.2V11.31c0-7.16 13.2-12.36 17.86-4.28" />
|
|
41
|
+
</svg>
|
|
42
|
+
|
|
43
|
+
Open in ChatGPT
|
|
44
|
+
</a>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
14
47
|
<!-- Installation -->
|
|
15
48
|
<section class="mb-8">
|
|
16
49
|
<h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Installation</h2>
|
|
@@ -26,10 +59,47 @@
|
|
|
26
59
|
<h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Preview</h2>
|
|
27
60
|
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212] text-center">
|
|
28
61
|
<div class="flex flex-col gap-4">
|
|
29
|
-
<wally-button
|
|
30
|
-
<wally-button
|
|
31
|
-
|
|
32
|
-
|
|
62
|
+
<wally-button>Wally Button</wally-button>
|
|
63
|
+
<wally-button>
|
|
64
|
+
Send
|
|
65
|
+
<svg slot="icon-left" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2"
|
|
66
|
+
stroke="currentColor" class="size-5">
|
|
67
|
+
<path stroke-linecap="round" stroke-linejoin="round"
|
|
68
|
+
d="M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
|
|
69
|
+
</svg>
|
|
70
|
+
</wally-button>
|
|
71
|
+
<wally-button [disabled]="true">Disabled</wally-button>
|
|
72
|
+
<wally-button [loading]="true">
|
|
73
|
+
Loading
|
|
74
|
+
</wally-button>
|
|
75
|
+
|
|
76
|
+
<div class="w-full flex justify-center items-center gap-2">
|
|
77
|
+
<div class="w-full">
|
|
78
|
+
<wally-button [showNotification]="true">
|
|
79
|
+
Messages
|
|
80
|
+
</wally-button>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<div class="flex justify-center">
|
|
84
|
+
<wally-button [showNotification]="true">
|
|
85
|
+
<svg slot="icon-left" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
|
86
|
+
stroke-width="1.5" stroke="currentColor" class="size-5">
|
|
87
|
+
<path stroke-linecap="round" stroke-linejoin="round"
|
|
88
|
+
d="M2.25 13.5h3.86a2.25 2.25 0 0 1 2.012 1.244l.256.512a2.25 2.25 0 0 0 2.013 1.244h3.218a2.25 2.25 0 0 0 2.013-1.244l.256-.512a2.25 2.25 0 0 1 2.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 0 0-2.15-1.588H6.911a2.25 2.25 0 0 0-2.15 1.588L2.35 13.177a2.25 2.25 0 0 0-.1.661Z" />
|
|
89
|
+
</svg>
|
|
90
|
+
</wally-button>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
<div class="flex justify-center">
|
|
94
|
+
<wally-button [showNotification]="true">
|
|
95
|
+
<svg slot="icon-left" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
|
96
|
+
stroke-width="1.5" stroke="currentColor" class="size-5">
|
|
97
|
+
<path stroke-linecap="round" stroke-linejoin="round"
|
|
98
|
+
d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5" />
|
|
99
|
+
</svg>
|
|
100
|
+
</wally-button>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
33
103
|
</div>
|
|
34
104
|
</div>
|
|
35
105
|
</section>
|
|
@@ -67,31 +137,11 @@
|
|
|
67
137
|
<div>
|
|
68
138
|
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
69
139
|
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
70
|
-
{{ '<' }}wally-button{{ '>' }}{{ '<' }}/wally-button{{ '>' }}
|
|
140
|
+
{{ '<' }}wally-button{{ '>' }}Wally Button{{ '<' }}/wally-button{{ '>' }}
|
|
71
141
|
</code>
|
|
72
142
|
</div>
|
|
73
143
|
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
74
|
-
<wally-button
|
|
75
|
-
</div>
|
|
76
|
-
</div>
|
|
77
|
-
</div>
|
|
78
|
-
</section>
|
|
79
|
-
|
|
80
|
-
<!-- Custom Text -->
|
|
81
|
-
<section class="mb-8">
|
|
82
|
-
<h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">
|
|
83
|
-
Custom Text
|
|
84
|
-
</h2>
|
|
85
|
-
|
|
86
|
-
<div class="space-y-8">
|
|
87
|
-
<div>
|
|
88
|
-
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
89
|
-
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
90
|
-
{{ '<' }}wally-button text="Save Changes"{{ '>' }}{{ '<' }}/wally-button{{ '>' }}
|
|
91
|
-
</code>
|
|
92
|
-
</div>
|
|
93
|
-
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
94
|
-
<wally-button text="Save Changes"></wally-button>
|
|
144
|
+
<wally-button>Wally Button</wally-button>
|
|
95
145
|
</div>
|
|
96
146
|
</div>
|
|
97
147
|
</div>
|
|
@@ -111,11 +161,11 @@
|
|
|
111
161
|
</h3>
|
|
112
162
|
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
113
163
|
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
114
|
-
{{ '<' }}wally-button
|
|
164
|
+
{{ '<' }}wally-button [disabled]="true"{{ '>' }}Disabled{{ '<' }}/wally-button{{ '>' }}
|
|
115
165
|
</code>
|
|
116
166
|
</div>
|
|
117
167
|
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
118
|
-
<wally-button
|
|
168
|
+
<wally-button [disabled]="true">Disabled</wally-button>
|
|
119
169
|
</div>
|
|
120
170
|
</div>
|
|
121
171
|
|
|
@@ -126,11 +176,11 @@
|
|
|
126
176
|
</h3>
|
|
127
177
|
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
128
178
|
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
129
|
-
{{ '<' }}wally-button
|
|
179
|
+
{{ '<' }}wally-button [loading]="true"{{ '>' }}Loading{{ '<' }}/wally-button{{ '>' }}
|
|
130
180
|
</code>
|
|
131
181
|
</div>
|
|
132
182
|
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
133
|
-
<wally-button
|
|
183
|
+
<wally-button [loading]="true">Loading</wally-button>
|
|
134
184
|
</div>
|
|
135
185
|
</div>
|
|
136
186
|
|
|
@@ -141,11 +191,11 @@
|
|
|
141
191
|
</h3>
|
|
142
192
|
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
143
193
|
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
144
|
-
{{ '<' }}wally-button
|
|
194
|
+
{{ '<' }}wally-button [showNotification]="true"{{ '>' }}Messages{{ '<' }}/wally-button{{ '>' }}
|
|
145
195
|
</code>
|
|
146
196
|
</div>
|
|
147
197
|
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
148
|
-
<wally-button
|
|
198
|
+
<wally-button [showNotification]="true">Messages</wally-button>
|
|
149
199
|
</div>
|
|
150
200
|
</div>
|
|
151
201
|
</div>
|
|
@@ -162,11 +212,11 @@
|
|
|
162
212
|
<h3 class="text-md font-medium mb-3 text-[#0a0a0a] dark:text-white">Submit Button</h3>
|
|
163
213
|
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
164
214
|
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
165
|
-
{{ '<' }}wally-button
|
|
215
|
+
{{ '<' }}wally-button type="submit"{{ '>' }}Submit Form{{ '<' }}/wally-button{{ '>' }}
|
|
166
216
|
</code>
|
|
167
217
|
</div>
|
|
168
218
|
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
169
|
-
<wally-button
|
|
219
|
+
<wally-button type="submit">Submit Form</wally-button>
|
|
170
220
|
</div>
|
|
171
221
|
</div>
|
|
172
222
|
</div>
|
|
@@ -183,7 +233,7 @@
|
|
|
183
233
|
<h3 class="text-md font-medium mb-3 text-[#0a0a0a] dark:text-white">Handling Click Events</h3>
|
|
184
234
|
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
185
235
|
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
186
|
-
{{ '<' }}wally-button
|
|
236
|
+
{{ '<' }}wally-button (click)="handleClick()"{{ '>' }}Click Me{{ '<' }}/wally-button{{ '>' }}<br><br>
|
|
187
237
|
handleClick() {{ '{' }}<br>
|
|
188
238
|
this.clickMessage.set('Button clicked!');<br>
|
|
189
239
|
{{ '}' }}
|
|
@@ -191,11 +241,11 @@
|
|
|
191
241
|
</div>
|
|
192
242
|
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
193
243
|
<div class="space-y-4 text-center">
|
|
194
|
-
<wally-button
|
|
244
|
+
<wally-button (click)="handleClick()">Click Me</wally-button>
|
|
195
245
|
@if (clickMessage()) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
246
|
+
<p class="text-sm text-green-600 dark:text-green-400 font-medium mt-4">
|
|
247
|
+
{{ clickMessage() }}
|
|
248
|
+
</p>
|
|
199
249
|
}
|
|
200
250
|
</div>
|
|
201
251
|
</div>
|
|
@@ -203,25 +253,79 @@
|
|
|
203
253
|
</div>
|
|
204
254
|
</section>
|
|
205
255
|
|
|
256
|
+
<!-- Button with Icons -->
|
|
257
|
+
<section class="mb-8">
|
|
258
|
+
<h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">
|
|
259
|
+
Button with Icons
|
|
260
|
+
</h2>
|
|
261
|
+
|
|
262
|
+
<div class="space-y-8">
|
|
263
|
+
<!-- Icon with Text -->
|
|
264
|
+
<div>
|
|
265
|
+
<h3 class="text-md font-medium mb-3 text-[#0a0a0a] dark:text-white">Icon with Text</h3>
|
|
266
|
+
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
267
|
+
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
268
|
+
{{ '<' }}wally-button{{ '>' }}<br>
|
|
269
|
+
Save<br>
|
|
270
|
+
{{ '<' }}svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"<br>
|
|
271
|
+
stroke-width="1.5" stroke="currentColor" class="size-5"{{ '>' }}<br>
|
|
272
|
+
{{ '<' }}path stroke-linecap="round" stroke-linejoin="round"<br>
|
|
273
|
+
d="M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" /{{ '>' }}<br>
|
|
274
|
+
{{ '<' }}/svg{{ '>' }}<br>
|
|
275
|
+
{{ '<' }}/wally-button{{ '>' }}
|
|
276
|
+
</code>
|
|
277
|
+
</div>
|
|
278
|
+
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
279
|
+
<wally-button>
|
|
280
|
+
Save
|
|
281
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
|
282
|
+
stroke="currentColor" class="size-5">
|
|
283
|
+
<path stroke-linecap="round" stroke-linejoin="round"
|
|
284
|
+
d="M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
|
|
285
|
+
</svg>
|
|
286
|
+
</wally-button>
|
|
287
|
+
</div>
|
|
288
|
+
</div>
|
|
289
|
+
|
|
290
|
+
<!-- Icon Only -->
|
|
291
|
+
<div>
|
|
292
|
+
<h3 class="text-md font-medium mb-3 text-[#0a0a0a] dark:text-white">Icon Only</h3>
|
|
293
|
+
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
|
|
294
|
+
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
295
|
+
{{ '<' }}wally-button{{ '>' }}<br>
|
|
296
|
+
{{ '<' }}svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"<br>
|
|
297
|
+
stroke-width="1.5" stroke="currentColor" class="size-5"{{ '>' }}<br>
|
|
298
|
+
{{ '<' }}path stroke-linecap="round" stroke-linejoin="round"<br>
|
|
299
|
+
d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5" /{{ '>' }}<br>
|
|
300
|
+
{{ '<' }}/svg{{ '>' }}<br>
|
|
301
|
+
{{ '<' }}/wally-button{{ '>' }}
|
|
302
|
+
</code>
|
|
303
|
+
</div>
|
|
304
|
+
<div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
|
|
305
|
+
<wally-button>
|
|
306
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
|
307
|
+
stroke="currentColor" class="size-5">
|
|
308
|
+
<path stroke-linecap="round" stroke-linejoin="round"
|
|
309
|
+
d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5" />
|
|
310
|
+
</svg>
|
|
311
|
+
</wally-button>
|
|
312
|
+
</div>
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
</section>
|
|
316
|
+
|
|
206
317
|
<!-- Properties -->
|
|
207
318
|
<section class="mb-8">
|
|
208
319
|
<h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Properties</h2>
|
|
209
320
|
|
|
210
321
|
<div class="space-y-4">
|
|
211
|
-
<div class="p-4 bg-gray-200 dark:bg-[#121212] rounded-lg">
|
|
212
|
-
<div class="font-mono text-sm mb-2">
|
|
213
|
-
<span class="text-blue-600 dark:text-blue-400">text</span><span class="text-[#0a0a0a] dark:text-white">: </span>
|
|
214
|
-
<span class="text-purple-600 dark:text-purple-400">string</span> <span class="text-[#0a0a0a] dark:text-white"> = </span>
|
|
215
|
-
<span class="text-green-600 dark:text-green-400">'Wally Button'</span>
|
|
216
|
-
<span class="text-[#0a0a0a] dark:text-white">;</span>
|
|
217
|
-
</div>
|
|
218
|
-
<p class="text-sm text-gray-700 dark:text-gray-400">The text displayed on the button</p>
|
|
219
|
-
</div>
|
|
220
322
|
|
|
221
323
|
<div class="p-4 bg-gray-200 dark:bg-[#121212] rounded-lg">
|
|
222
324
|
<div class="font-mono text-sm mb-2">
|
|
223
|
-
<span class="text-blue-600 dark:text-blue-400">type</span><span class="text-[#0a0a0a] dark:text-white">:
|
|
224
|
-
|
|
325
|
+
<span class="text-blue-600 dark:text-blue-400">type</span><span class="text-[#0a0a0a] dark:text-white">:
|
|
326
|
+
</span>
|
|
327
|
+
<span class="text-purple-600 dark:text-purple-400">string</span> <span
|
|
328
|
+
class="text-[#0a0a0a] dark:text-white"> = </span>
|
|
225
329
|
<span class="text-green-600 dark:text-green-400">'button'</span>
|
|
226
330
|
<span class="text-[#0a0a0a] dark:text-white">;</span>
|
|
227
331
|
</div>
|
|
@@ -230,8 +334,10 @@
|
|
|
230
334
|
|
|
231
335
|
<div class="p-4 bg-gray-200 dark:bg-[#121212] rounded-lg">
|
|
232
336
|
<div class="font-mono text-sm mb-2">
|
|
233
|
-
<span class="text-blue-600 dark:text-blue-400">disabled</span><span class="text-[#0a0a0a] dark:text-white">:
|
|
234
|
-
|
|
337
|
+
<span class="text-blue-600 dark:text-blue-400">disabled</span><span class="text-[#0a0a0a] dark:text-white">:
|
|
338
|
+
</span>
|
|
339
|
+
<span class="text-purple-600 dark:text-purple-400">boolean</span> <span
|
|
340
|
+
class="text-[#0a0a0a] dark:text-white"> = </span>
|
|
235
341
|
<span class="text-green-600 dark:text-green-400">false</span>
|
|
236
342
|
<span class="text-[#0a0a0a] dark:text-white">;</span>
|
|
237
343
|
</div>
|
|
@@ -240,8 +346,10 @@
|
|
|
240
346
|
|
|
241
347
|
<div class="p-4 bg-gray-200 dark:bg-[#121212] rounded-lg">
|
|
242
348
|
<div class="font-mono text-sm mb-2">
|
|
243
|
-
<span class="text-blue-600 dark:text-blue-400">loading</span><span class="text-[#0a0a0a] dark:text-white">:
|
|
244
|
-
|
|
349
|
+
<span class="text-blue-600 dark:text-blue-400">loading</span><span class="text-[#0a0a0a] dark:text-white">:
|
|
350
|
+
</span>
|
|
351
|
+
<span class="text-purple-600 dark:text-purple-400">boolean</span> <span
|
|
352
|
+
class="text-[#0a0a0a] dark:text-white"> = </span>
|
|
245
353
|
<span class="text-green-600 dark:text-green-400">false</span>
|
|
246
354
|
<span class="text-[#0a0a0a] dark:text-white">;</span>
|
|
247
355
|
</div>
|
|
@@ -250,13 +358,27 @@
|
|
|
250
358
|
|
|
251
359
|
<div class="p-4 bg-gray-200 dark:bg-[#121212] rounded-lg">
|
|
252
360
|
<div class="font-mono text-sm mb-2">
|
|
253
|
-
<span class="text-blue-600 dark:text-blue-400">showNotification</span><span
|
|
254
|
-
|
|
361
|
+
<span class="text-blue-600 dark:text-blue-400">showNotification</span><span
|
|
362
|
+
class="text-[#0a0a0a] dark:text-white">: </span>
|
|
363
|
+
<span class="text-purple-600 dark:text-purple-400">boolean</span> <span
|
|
364
|
+
class="text-[#0a0a0a] dark:text-white"> = </span>
|
|
255
365
|
<span class="text-green-600 dark:text-green-400">false</span>
|
|
256
366
|
<span class="text-[#0a0a0a] dark:text-white">;</span>
|
|
257
367
|
</div>
|
|
258
368
|
<p class="text-sm text-gray-700 dark:text-gray-400">Shows notification badge when true</p>
|
|
259
369
|
</div>
|
|
370
|
+
|
|
371
|
+
<div class="p-4 bg-gray-200 dark:bg-[#121212] rounded-lg">
|
|
372
|
+
<div class="font-mono text-sm mb-2">
|
|
373
|
+
<span class="text-blue-600 dark:text-blue-400">icon</span><span class="text-[#0a0a0a] dark:text-white">:
|
|
374
|
+
</span>
|
|
375
|
+
<span class="text-purple-600 dark:text-purple-400">'left' | 'right' | 'none'</span> <span
|
|
376
|
+
class="text-[#0a0a0a] dark:text-white"> = </span>
|
|
377
|
+
<span class="text-green-600 dark:text-green-400">'none'</span>
|
|
378
|
+
<span class="text-[#0a0a0a] dark:text-white">;</span>
|
|
379
|
+
</div>
|
|
380
|
+
<p class="text-sm text-gray-700 dark:text-gray-400">Position of the icon content (left, right, or none)</p>
|
|
381
|
+
</div>
|
|
260
382
|
</div>
|
|
261
383
|
</section>
|
|
262
384
|
|
|
@@ -265,16 +387,6 @@
|
|
|
265
387
|
<h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Under Construction</h2>
|
|
266
388
|
|
|
267
389
|
<div class="space-y-4">
|
|
268
|
-
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg">
|
|
269
|
-
<div class="flex items-center gap-2 mb-2">
|
|
270
|
-
<h3 class="text-md font-medium text-[#0a0a0a] dark:text-white">Button with Icon</h3>
|
|
271
|
-
<span class="text-xs bg-yellow-500 text-black px-2 py-1 rounded">Under Construction</span>
|
|
272
|
-
</div>
|
|
273
|
-
<p class="text-sm text-gray-700 dark:text-gray-400">
|
|
274
|
-
Support for icons within buttons. This will include leading and trailing icon positions with proper spacing.
|
|
275
|
-
</p>
|
|
276
|
-
</div>
|
|
277
|
-
|
|
278
390
|
<div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg">
|
|
279
391
|
<div class="flex items-center gap-2 mb-2">
|
|
280
392
|
<h3 class="text-md font-medium text-[#0a0a0a] dark:text-white">Button Variants</h3>
|
|
@@ -3,6 +3,8 @@ import { Component, signal, WritableSignal } from '@angular/core';
|
|
|
3
3
|
import { Breadcrumb, BreadcrumbItem } from '../../../components/breadcrumb/breadcrumb';
|
|
4
4
|
import { Button } from '../../../components/button/button';
|
|
5
5
|
|
|
6
|
+
import { AiPromptService } from '../../../core/services/ai-prompt.service';
|
|
7
|
+
|
|
6
8
|
@Component({
|
|
7
9
|
selector: 'app-button-docs',
|
|
8
10
|
imports: [
|
|
@@ -21,7 +23,19 @@ export class ButtonDocs {
|
|
|
21
23
|
|
|
22
24
|
clickMessage: WritableSignal<string> = signal<string>('');
|
|
23
25
|
|
|
26
|
+
constructor(
|
|
27
|
+
private aiPromptService: AiPromptService
|
|
28
|
+
) {}
|
|
29
|
+
|
|
24
30
|
handleClick(): void {
|
|
25
31
|
this.clickMessage.set('Button clicked!');
|
|
26
32
|
}
|
|
33
|
+
|
|
34
|
+
get claudeUrl(): string {
|
|
35
|
+
return this.aiPromptService.generateClaudeUrl();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get chatGptUrl(): string {
|
|
39
|
+
return this.aiPromptService.generateChatGptUrl();
|
|
40
|
+
}
|
|
27
41
|
}
|
|
@@ -7,10 +7,10 @@ export const componentsRoutes: Routes = [
|
|
|
7
7
|
},
|
|
8
8
|
{
|
|
9
9
|
path: 'button',
|
|
10
|
-
loadComponent: () => import('./button/button-docs').then(m => m.ButtonDocs)
|
|
10
|
+
loadComponent: () => import('./button-docs/button-docs').then(m => m.ButtonDocs)
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
path: 'breadcrumb',
|
|
14
|
-
loadComponent: () => import('./breadcrumb/breadcrumb-docs').then(m => m.BreadcrumbDocs)
|
|
14
|
+
loadComponent: () => import('./breadcrumb-docs/breadcrumb-docs').then(m => m.BreadcrumbDocs)
|
|
15
15
|
}
|
|
16
16
|
];
|
|
@@ -26,6 +26,9 @@
|
|
|
26
26
|
<a href="/components" class="text-blue-500 underline">
|
|
27
27
|
Documentation
|
|
28
28
|
</a>
|
|
29
|
+
<a href="/mcp" class="text-blue-500 underline">
|
|
30
|
+
MCP Server
|
|
31
|
+
</a>
|
|
29
32
|
|
|
30
33
|
<div class="flex gap-4 mt-2">
|
|
31
34
|
<a href="https://github.com/WalissonCF/wally-ui" target="_blank" class="text-blue-500 underline text-sm">
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* MCP page styles - following project patterns */
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
<div class="max-w-4xl mx-auto p-6 font-mono">
|
|
2
|
+
<div class="mb-4">
|
|
3
|
+
<wally-breadcrumb [items]="breadcrumbItems"></wally-breadcrumb>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<!-- Header -->
|
|
7
|
+
<div class="mb-8">
|
|
8
|
+
<h1 class="text-4xl font-bold text-[#0a0a0a] dark:text-white mb-2">
|
|
9
|
+
Wally UI MCP Server
|
|
10
|
+
</h1>
|
|
11
|
+
<p class="text-lg text-gray-700 dark:text-gray-400">
|
|
12
|
+
Model Context Protocol server for intelligent AI-powered component installation with Claude Desktop.
|
|
13
|
+
</p>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<!-- Installation Section -->
|
|
17
|
+
<section class="mb-8">
|
|
18
|
+
<h2 class="text-2xl font-bold text-[#0a0a0a] dark:text-white mb-4">
|
|
19
|
+
Installation
|
|
20
|
+
</h2>
|
|
21
|
+
|
|
22
|
+
<div class="bg-gray-200 dark:bg-[#121212] rounded-lg p-4 mb-4">
|
|
23
|
+
<code class="text-[#0a0a0a] dark:text-white">
|
|
24
|
+
<pre class="m-0">npm install -g wally-ui-mcp</pre>
|
|
25
|
+
</code>
|
|
26
|
+
</div>
|
|
27
|
+
</section>
|
|
28
|
+
|
|
29
|
+
<!-- Configuration Section -->
|
|
30
|
+
<section class="mb-8">
|
|
31
|
+
<h2 class="text-2xl font-bold text-[#0a0a0a] dark:text-white mb-4">
|
|
32
|
+
Configuration
|
|
33
|
+
</h2>
|
|
34
|
+
|
|
35
|
+
<p class="text-gray-700 dark:text-gray-400 mb-4">
|
|
36
|
+
Add to your Claude Desktop configuration file:
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
<div class="mb-4">
|
|
40
|
+
<p class="text-sm text-gray-700 dark:text-gray-400 mb-2">
|
|
41
|
+
<strong>Mac:</strong> <code
|
|
42
|
+
class="bg-gray-200 dark:bg-[#121212] px-2 py-1 rounded text-[#0a0a0a] dark:text-white">~/Library/Application Support/Claude/claude_desktop_config.json</code>
|
|
43
|
+
</p>
|
|
44
|
+
<p class="text-sm text-gray-700 dark:text-gray-400 mb-4">
|
|
45
|
+
<strong>Windows:</strong> <code
|
|
46
|
+
class="bg-gray-200 dark:bg-[#121212] px-2 py-1 rounded text-[#0a0a0a] dark:text-white">%APPDATA%\Claude\claude_desktop_config.json</code>
|
|
47
|
+
</p>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div class="bg-gray-200 dark:bg-[#121212] rounded-lg p-4 mb-4">
|
|
51
|
+
<code class="text-sm text-[#0a0a0a] dark:text-white">
|
|
52
|
+
{{ '{' }}<br>
|
|
53
|
+
"mcpServers": {{ '{' }}<br>
|
|
54
|
+
"wally-ui": {{ '{' }}<br>
|
|
55
|
+
"command": "npx",<br>
|
|
56
|
+
"args": ["wally-ui-mcp"],<br>
|
|
57
|
+
"env": {{ '{' }}{{ '}' }}<br>
|
|
58
|
+
{{ '}' }}<br>
|
|
59
|
+
{{ '}' }}<br>
|
|
60
|
+
{{ '}' }}
|
|
61
|
+
</code>
|
|
62
|
+
</div>
|
|
63
|
+
</section>
|
|
64
|
+
|
|
65
|
+
<!-- Features Section -->
|
|
66
|
+
<section class="mb-8">
|
|
67
|
+
<h2 class="text-2xl font-bold text-[#0a0a0a] dark:text-white mb-4">
|
|
68
|
+
Available Tools
|
|
69
|
+
</h2>
|
|
70
|
+
|
|
71
|
+
<div class="grid gap-4 md:grid-cols-2">
|
|
72
|
+
<div class="bg-gray-200 dark:bg-[#121212] rounded-lg p-4">
|
|
73
|
+
<h3 class="text-lg font-semibold text-[#0a0a0a] dark:text-white mb-2">
|
|
74
|
+
install-component
|
|
75
|
+
</h3>
|
|
76
|
+
<p class="text-gray-700 dark:text-gray-400 text-sm mb-2">
|
|
77
|
+
Installs Wally UI components directly into your Angular project.
|
|
78
|
+
</p>
|
|
79
|
+
<code class="text-xs bg-gray-200 dark:bg-[#121212] px-2 py-1 rounded text-[#0a0a0a] dark:text-white">
|
|
80
|
+
componentName: string
|
|
81
|
+
</code>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<div class="bg-gray-200 dark:bg-[#121212] rounded-lg p-4">
|
|
85
|
+
<h3 class="text-lg font-semibold text-[#0a0a0a] dark:text-white mb-2">
|
|
86
|
+
list-components
|
|
87
|
+
</h3>
|
|
88
|
+
<p class="text-gray-700 dark:text-gray-400 text-sm mb-2">
|
|
89
|
+
Lists all available components in the Wally UI library.
|
|
90
|
+
</p>
|
|
91
|
+
<code class="text-xs bg-gray-200 dark:bg-[#121212] px-2 py-1 rounded text-[#0a0a0a] dark:text-white">
|
|
92
|
+
No parameters
|
|
93
|
+
</code>
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<div class="bg-gray-200 dark:bg-[#121212] rounded-lg p-4">
|
|
97
|
+
<h3 class="text-lg font-semibold text-[#0a0a0a] dark:text-white mb-2">
|
|
98
|
+
validate-component
|
|
99
|
+
</h3>
|
|
100
|
+
<p class="text-gray-700 dark:text-gray-400 text-sm mb-2">
|
|
101
|
+
Validates component structure and integrity.
|
|
102
|
+
</p>
|
|
103
|
+
<code class="text-xs bg-gray-200 dark:bg-[#121212] px-2 py-1 rounded text-[#0a0a0a] dark:text-white">
|
|
104
|
+
componentName: string
|
|
105
|
+
</code>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<div class="bg-gray-200 dark:bg-[#121212] rounded-lg p-4">
|
|
109
|
+
<h3 class="text-lg font-semibold text-[#0a0a0a] dark:text-white mb-2">
|
|
110
|
+
generate-docs
|
|
111
|
+
</h3>
|
|
112
|
+
<p class="text-gray-700 dark:text-gray-400 text-sm mb-2">
|
|
113
|
+
Generates documentation for components.
|
|
114
|
+
</p>
|
|
115
|
+
<code class="text-xs bg-gray-200 dark:bg-[#121212] px-2 py-1 rounded text-[#0a0a0a] dark:text-white">
|
|
116
|
+
componentName: string
|
|
117
|
+
</code>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
</section>
|
|
121
|
+
|
|
122
|
+
<!-- Usage Examples -->
|
|
123
|
+
<section class="mb-8">
|
|
124
|
+
<h2 class="text-2xl font-bold text-[#0a0a0a] dark:text-white mb-4">
|
|
125
|
+
Usage Examples
|
|
126
|
+
</h2>
|
|
127
|
+
|
|
128
|
+
<div class="space-y-4">
|
|
129
|
+
<div>
|
|
130
|
+
<h3 class="text-lg font-semibold text-[#0a0a0a] dark:text-white mb-2">
|
|
131
|
+
List Available Components
|
|
132
|
+
</h3>
|
|
133
|
+
<p class="text-gray-700 dark:text-gray-400 mb-2">
|
|
134
|
+
Ask Claude to show you what components are available:
|
|
135
|
+
</p>
|
|
136
|
+
<div class="bg-gray-200 dark:bg-[#121212] rounded-lg p-4">
|
|
137
|
+
<code class="text-[#0a0a0a] dark:text-white">
|
|
138
|
+
<pre class="m-0">"Show me the available Wally UI components"</pre>
|
|
139
|
+
</code>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<div>
|
|
144
|
+
<h3 class="text-lg font-semibold text-[#0a0a0a] dark:text-white mb-2">
|
|
145
|
+
Install a Component
|
|
146
|
+
</h3>
|
|
147
|
+
<p class="text-gray-700 dark:text-gray-400 mb-2">
|
|
148
|
+
Ask Claude to install a specific component in your project:
|
|
149
|
+
</p>
|
|
150
|
+
<div class="bg-gray-200 dark:bg-[#121212] rounded-lg p-4">
|
|
151
|
+
<code class="text-[#0a0a0a] dark:text-white">
|
|
152
|
+
<pre class="m-0">"Install the button component from Wally UI in my Angular project"</pre>
|
|
153
|
+
</code>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
</section>
|
|
158
|
+
|
|
159
|
+
<!-- Requirements -->
|
|
160
|
+
<section class="mb-8">
|
|
161
|
+
<h2 class="text-2xl font-bold text-[#0a0a0a] dark:text-white mb-4">
|
|
162
|
+
Requirements
|
|
163
|
+
</h2>
|
|
164
|
+
|
|
165
|
+
<ul class="list-disc list-inside text-gray-700 dark:text-gray-400 space-y-2">
|
|
166
|
+
<li>Node.js 18+</li>
|
|
167
|
+
<li>Claude Desktop with MCP support</li>
|
|
168
|
+
<li>Angular project (for component installation)</li>
|
|
169
|
+
<li>Tailwind CSS configured in your project</li>
|
|
170
|
+
</ul>
|
|
171
|
+
</section>
|
|
172
|
+
|
|
173
|
+
<!-- Links -->
|
|
174
|
+
<section class="mb-8">
|
|
175
|
+
<h2 class="text-2xl font-bold text-[#0a0a0a] dark:text-white mb-4">
|
|
176
|
+
Links
|
|
177
|
+
</h2>
|
|
178
|
+
|
|
179
|
+
<div class="flex flex-wrap gap-4">
|
|
180
|
+
<a href="https://www.npmjs.com/package/wally-ui-mcp" target="_blank"
|
|
181
|
+
class="text-blue-500 underline hover:text-blue-700">
|
|
182
|
+
NPM Package
|
|
183
|
+
</a>
|
|
184
|
+
<a href="https://github.com/WalissonCF/wally-ui" target="_blank"
|
|
185
|
+
class="text-blue-500 underline hover:text-blue-700">
|
|
186
|
+
GitHub Repository
|
|
187
|
+
</a>
|
|
188
|
+
<a href="https://modelcontextprotocol.io/" target="_blank" class="text-blue-500 underline hover:text-blue-700">
|
|
189
|
+
Model Context Protocol
|
|
190
|
+
</a>
|
|
191
|
+
<a href="/components" class="text-blue-500 underline hover:text-blue-700">
|
|
192
|
+
Browse Components
|
|
193
|
+
</a>
|
|
194
|
+
</div>
|
|
195
|
+
</section>
|
|
196
|
+
</div>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { Mcp } from './mcp';
|
|
4
|
+
|
|
5
|
+
describe('Mcp', () => {
|
|
6
|
+
let component: Mcp;
|
|
7
|
+
let fixture: ComponentFixture<Mcp>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
imports: [Mcp]
|
|
12
|
+
})
|
|
13
|
+
.compileComponents();
|
|
14
|
+
|
|
15
|
+
fixture = TestBed.createComponent(Mcp);
|
|
16
|
+
component = fixture.componentInstance;
|
|
17
|
+
fixture.detectChanges();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should create', () => {
|
|
21
|
+
expect(component).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
import { Breadcrumb, BreadcrumbItem } from '../../components/breadcrumb/breadcrumb';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'wally-mcp',
|
|
7
|
+
imports: [Breadcrumb],
|
|
8
|
+
templateUrl: './mcp.html',
|
|
9
|
+
styleUrl: './mcp.css'
|
|
10
|
+
})
|
|
11
|
+
export class MCP {
|
|
12
|
+
breadcrumbItems: BreadcrumbItem[] = [
|
|
13
|
+
{ label: 'Home', url: '/' },
|
|
14
|
+
{ label: 'MCP Server' }
|
|
15
|
+
];
|
|
16
|
+
}
|
|
File without changes
|
/package/playground/showcase/src/app/pages/components/{button → button-docs}/button-docs.css
RENAMED
|
File without changes
|
/package/playground/showcase/src/app/pages/components/{button → button-docs}/button-docs.spec.ts
RENAMED
|
File without changes
|