wally-ui 1.0.17 → 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.
Files changed (25) hide show
  1. package/README.md +73 -4
  2. package/package.json +1 -1
  3. package/playground/showcase/src/app/app.routes.ts +4 -0
  4. package/playground/showcase/src/app/components/breadcrumb/breadcrumb.html +18 -0
  5. package/playground/showcase/src/app/components/breadcrumb/breadcrumb.ts +20 -0
  6. package/playground/showcase/src/app/components/button/button.html +6 -12
  7. package/playground/showcase/src/app/components/button/button.ts +7 -2
  8. package/playground/showcase/src/app/core/services/ai-prompt.service.ts +43 -0
  9. package/playground/showcase/src/app/pages/components/breadcrumb-docs/breadcrumb-docs.html +208 -0
  10. package/playground/showcase/src/app/pages/components/breadcrumb-docs/breadcrumb-docs.ts +43 -0
  11. package/playground/showcase/src/app/pages/components/button-docs/button-docs.css +0 -0
  12. package/playground/showcase/src/app/pages/components/button-docs/button-docs.html +455 -0
  13. package/playground/showcase/src/app/pages/components/{button/button.spec.ts → button-docs/button-docs.spec.ts} +5 -5
  14. package/playground/showcase/src/app/pages/components/button-docs/button-docs.ts +41 -0
  15. package/playground/showcase/src/app/pages/components/components.html +126 -9
  16. package/playground/showcase/src/app/pages/components/components.routes.ts +5 -1
  17. package/playground/showcase/src/app/pages/components/components.ts +6 -2
  18. package/playground/showcase/src/app/pages/home/home.html +16 -4
  19. package/playground/showcase/src/app/pages/mcp/mcp.css +1 -0
  20. package/playground/showcase/src/app/pages/mcp/mcp.html +196 -0
  21. package/playground/showcase/src/app/pages/mcp/mcp.spec.ts +23 -0
  22. package/playground/showcase/src/app/pages/mcp/mcp.ts +16 -0
  23. package/playground/showcase/src/app/pages/components/button/button.html +0 -192
  24. package/playground/showcase/src/app/pages/components/button/button.ts +0 -12
  25. /package/playground/showcase/src/app/pages/components/{button/button.css → breadcrumb-docs/breadcrumb-docs.css} +0 -0
package/README.md CHANGED
@@ -1,10 +1,79 @@
1
1
  # Wally UI
2
2
 
3
- Where's Wally? Right here bringing you ready-to-use Angular components.
3
+ A modern Angular component library built with standalone components and Tailwind CSS. Wally UI provides a collection of reusable, accessible components that integrate seamlessly into your Angular applications.
4
4
 
5
5
  **[Live Demo](https://wally-ui.com/)**
6
6
 
7
- ## Usage
7
+ ## Features
8
+
9
+ - Built for Angular 17+ with standalone component architecture
10
+ - Server-Side Rendering (SSR) support
11
+ - Dark mode support out of the box
12
+ - Tailwind CSS v3/v4 styling
13
+ - TypeScript interfaces and type safety
14
+ - Individual component installation
15
+ - Zero configuration setup
16
+
17
+ ## Requirements
18
+
19
+ - Angular 17+ (required for standalone component support)
20
+ - Tailwind CSS v3 or v4
21
+ - Node.js 18+
22
+
23
+ ## Installation
24
+
25
+ Install components individually using the CLI:
26
+
8
27
  ```bash
9
- npx wally-ui add button # Add button component
10
- npx wally-ui list # List available components
28
+ # Install specific component
29
+ npx wally-ui add button
30
+
31
+ # List all available components
32
+ npx wally-ui list
33
+ ```
34
+
35
+ ## Project Structure
36
+
37
+ When installing a component, Wally UI creates the following structure:
38
+
39
+ ```
40
+ src/
41
+ └── app/
42
+ └── components/
43
+ └── wally-ui/
44
+ └── button/
45
+ ├── button.ts
46
+ └── button.html
47
+ ```
48
+
49
+ ## Quick Start
50
+
51
+ 1. Install a component:
52
+ ```bash
53
+ npx wally-ui add button
54
+ ```
55
+
56
+ 2. Import and use in your component:
57
+ ```typescript
58
+ import { Component } from '@angular/core';
59
+ import { Button } from './components/wally-ui/button/button';
60
+
61
+ @Component({
62
+ selector: 'app-example',
63
+ imports: [Button],
64
+ template: `<wally-button text="Click me"></wally-button>`
65
+ })
66
+ export class ExampleComponent {}
67
+ ```
68
+
69
+ ## Development Status
70
+
71
+ Wally UI is currently in experimental development. Components are being actively developed and new features are continuously added. More components will be available soon.
72
+
73
+ ## Documentation
74
+
75
+ Visit [wally-ui.com](https://wally-ui.com/) for complete documentation, examples, and component API references.
76
+
77
+ ## License
78
+
79
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wally-ui",
3
- "version": "1.0.17",
3
+ "version": "1.2.0",
4
4
  "description": "About Where’s Wally? Right here — bringing you ready-to-use Angular components with Wally-UI. Stop searching, start building.",
5
5
  "bin": {
6
6
  "wally": "dist/cli.js"
@@ -9,4 +9,8 @@ export const routes: Routes = [
9
9
  path: 'components',
10
10
  loadChildren: () => import('./pages/components/components.routes').then(m => m.componentsRoutes)
11
11
  },
12
+ {
13
+ path: 'mcp',
14
+ loadComponent: () => import('./pages/mcp/mcp').then(m => m.MCP)
15
+ }
12
16
  ];
@@ -0,0 +1,18 @@
1
+ <nav class="">
2
+ <div class="flex items-center space-x-2 text-sm text-gray-700 dark:text-gray-400">
3
+ @for (item of items(); track item.label; let isLast = $last) {
4
+ @if (!isLast && item.url) {
5
+ <a
6
+ [routerLink]="item.url"
7
+ class="hover:text-blue-500 transition-colors">
8
+ {{ item.label }}
9
+ </a>
10
+ <span class="text-gray-400 dark:text-gray-600">/</span>
11
+ } @else {
12
+ <span class="text-[#0a0a0a] dark:text-white font-medium">
13
+ {{ item.label }}
14
+ </span>
15
+ }
16
+ }
17
+ </div>
18
+ </nav>
@@ -0,0 +1,20 @@
1
+ import { Component, input, InputSignal } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { RouterModule } from '@angular/router';
4
+
5
+ export interface BreadcrumbItem {
6
+ label: string;
7
+ url?: string;
8
+ }
9
+
10
+ @Component({
11
+ selector: 'wally-breadcrumb',
12
+ imports: [
13
+ CommonModule,
14
+ RouterModule
15
+ ],
16
+ templateUrl: './breadcrumb.html',
17
+ })
18
+ export class Breadcrumb {
19
+ items: InputSignal<BreadcrumbItem[]> = input<BreadcrumbItem[]>([]);
20
+ }
@@ -1,8 +1,9 @@
1
- <button [type]="type()" [disabled]="disabled() || loading()" class="
1
+ <button [type]="type()" [disabled]="disabled() || loading()" (click)="handleClick()" class="
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 delay-150 duration-300 ease-in-out
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="mr-3 -ml-1 size-4 animate-spin text-white dark:text-[#0a0a0a]" xmlns="http://www.w3.org/2000/svg" fill="none"
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
- <span class="
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>
@@ -1,4 +1,4 @@
1
- import { Component, input, InputSignal } from '@angular/core';
1
+ import { Component, input, InputSignal, output, OutputEmitterRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
 
4
4
  @Component({
@@ -10,9 +10,14 @@ 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);
17
16
  showNotification: InputSignal<boolean> = input<boolean>(false);
17
+
18
+ click: OutputEmitterRef<void> = output<void>();
19
+
20
+ handleClick(): void {
21
+ this.click.emit();
22
+ }
18
23
  }
@@ -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
+ }
@@ -0,0 +1,208 @@
1
+ <div class="font-mono">
2
+ <div class="max-w-4xl mx-auto p-6">
3
+ <div class="mb-4">
4
+ <wally-breadcrumb [items]="breadcrumbItems"></wally-breadcrumb>
5
+ </div>
6
+
7
+ <h1 class="text-2xl font-bold mb-4 text-[#0a0a0a] dark:text-white">
8
+ Breadcrumb
9
+ </h1>
10
+ <p class="text-gray-700 dark:text-gray-400 mb-6">
11
+ A navigation component that shows the current page location within a hierarchy.
12
+ </p>
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
+
46
+ <!-- Installation -->
47
+ <section class="mb-8">
48
+ <h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Installation</h2>
49
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg">
50
+ <code class="text-sm text-[#0a0a0a] dark:text-white">
51
+ npx wally-ui add breadcrumb
52
+ </code>
53
+ </div>
54
+ </section>
55
+
56
+ <!-- Preview -->
57
+ <section class="mb-8">
58
+ <h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">
59
+ Preview
60
+ </h2>
61
+ <div class="p-6 border rounded-lg bg-white dark:bg-[#121212] h-60">
62
+ <div class="flex items-center justify-center h-full">
63
+ <wally-breadcrumb [items]="exampleBreadcrumbs"></wally-breadcrumb>
64
+ </div>
65
+ </div>
66
+ </section>
67
+
68
+ <!-- Import -->
69
+ <section class="mb-8">
70
+ <h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Import</h2>
71
+ <div class="space-y-4">
72
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg">
73
+ <code class="text-sm text-[#0a0a0a] dark:text-white">
74
+ import {{ '{' }} Breadcrumb, BreadcrumbItem {{ '}' }} from './components/wally-ui/breadcrumb/breadcrumb';
75
+ </code>
76
+ </div>
77
+
78
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg">
79
+ <code class="text-sm text-[#0a0a0a] dark:text-white">
80
+ &#64;Component({{ '{' }}<br>
81
+ &nbsp;&nbsp;selector: 'app-example',<br>
82
+ &nbsp;&nbsp;imports: [Breadcrumb],<br>
83
+ &nbsp;&nbsp;templateUrl: './example.html',<br>
84
+ &nbsp;&nbsp;styleUrl: './example.css'<br>
85
+ {{ '}' }})
86
+ </code>
87
+ </div>
88
+ </div>
89
+ </section>
90
+
91
+ <!-- Basic Usage -->
92
+ <section class="mb-8">
93
+ <h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Basic Usage</h2>
94
+
95
+ <div class="space-y-8">
96
+ <div>
97
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
98
+ <code class="text-sm text-[#0a0a0a] dark:text-white">
99
+ {{ '<' }}wally-breadcrumb [items]="breadcrumbItems"{{ '>' }}{{ '<' }}/wally-breadcrumb{{ '>' }}
100
+ </code>
101
+ </div>
102
+ <div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
103
+ <wally-breadcrumb [items]="simpleBreadcrumbs"></wally-breadcrumb>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </section>
108
+
109
+ <!-- Examples -->
110
+ <section class="mb-8">
111
+ <h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Examples</h2>
112
+
113
+ <div class="space-y-8">
114
+ <!-- Multi-level Breadcrumb -->
115
+ <div>
116
+ <h3 class="text-md font-medium mb-3 text-[#0a0a0a] dark:text-white">Multi-level Navigation</h3>
117
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
118
+ <code class="text-sm text-[#0a0a0a] dark:text-white">
119
+ breadcrumbItems: BreadcrumbItem[] = [<br>
120
+ &nbsp;&nbsp;{{ '{' }} label: 'Home', url: '/' {{ '}' }},<br>
121
+ &nbsp;&nbsp;{{ '{' }} label: 'Components', url: '/components' {{ '}' }},<br>
122
+ &nbsp;&nbsp;{{ '{' }} label: 'Button' {{ '}' }}<br>
123
+ ];
124
+ </code>
125
+ </div>
126
+ <div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
127
+ <wally-breadcrumb [items]="exampleBreadcrumbs"></wally-breadcrumb>
128
+ </div>
129
+ </div>
130
+
131
+ <!-- Single Item -->
132
+ <div>
133
+ <h3 class="text-md font-medium mb-3 text-[#0a0a0a] dark:text-white">Single Item</h3>
134
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg mb-4">
135
+ <code class="text-sm text-[#0a0a0a] dark:text-white">
136
+ breadcrumbItems: BreadcrumbItem[] = [<br>
137
+ &nbsp;&nbsp;{{ '{' }} label: 'Components' {{ '}' }}<br>
138
+ ];
139
+ </code>
140
+ </div>
141
+ <div class="p-6 border rounded-lg bg-white dark:bg-[#121212]">
142
+ <wally-breadcrumb [items]="simpleBreadcrumbs"></wally-breadcrumb>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </section>
147
+
148
+ <!-- Properties -->
149
+ <section class="mb-8">
150
+ <h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Properties</h2>
151
+
152
+ <div class="space-y-4">
153
+ <div class="p-4 bg-gray-200 dark:bg-[#121212] rounded-lg">
154
+ <div class="font-mono text-sm mb-2">
155
+ <span class="text-blue-600 dark:text-blue-400">items</span><span class="text-[#0a0a0a] dark:text-white">:
156
+ </span>
157
+ <span class="text-purple-600 dark:text-purple-400">BreadcrumbItem[]</span> <span
158
+ class="text-[#0a0a0a] dark:text-white"> = </span>
159
+ <span class="text-green-600 dark:text-green-400">[]</span>
160
+ <span class="text-[#0a0a0a] dark:text-white">;</span>
161
+ </div>
162
+ <p class="text-sm text-gray-700 dark:text-gray-400">Array of breadcrumb items to display</p>
163
+ </div>
164
+ </div>
165
+ </section>
166
+
167
+ <!-- Interface -->
168
+ <section class="mb-8">
169
+ <h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Interface</h2>
170
+
171
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg">
172
+ <code class="text-sm text-[#0a0a0a] dark:text-white">
173
+ interface BreadcrumbItem {{ '{' }}<br>
174
+ &nbsp;&nbsp;label: string;<br>
175
+ &nbsp;&nbsp;url?: string;<br>
176
+ {{ '}' }}
177
+ </code>
178
+ </div>
179
+ </section>
180
+
181
+ <!-- Under Construction -->
182
+ <section class="mb-8">
183
+ <h2 class="text-lg font-semibold mb-4 text-[#0a0a0a] dark:text-white">Under Construction</h2>
184
+
185
+ <div class="space-y-4">
186
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg">
187
+ <div class="flex items-center gap-2 mb-2">
188
+ <h3 class="text-md font-medium text-[#0a0a0a] dark:text-white">Custom Separators</h3>
189
+ <span class="text-xs bg-yellow-500 text-black px-2 py-1 rounded">Under Construction</span>
190
+ </div>
191
+ <p class="text-sm text-gray-700 dark:text-gray-400">
192
+ Support for custom separator characters and icons between breadcrumb items.
193
+ </p>
194
+ </div>
195
+
196
+ <div class="bg-gray-200 dark:bg-[#121212] p-4 rounded-lg">
197
+ <div class="flex items-center gap-2 mb-2">
198
+ <h3 class="text-md font-medium text-[#0a0a0a] dark:text-white">Dropdown Overflow</h3>
199
+ <span class="text-xs bg-yellow-500 text-black px-2 py-1 rounded">Under Construction</span>
200
+ </div>
201
+ <p class="text-sm text-gray-700 dark:text-gray-400">
202
+ Collapse breadcrumb items into a dropdown when there are too many to display.
203
+ </p>
204
+ </div>
205
+ </div>
206
+ </section>
207
+ </div>
208
+ </div>
@@ -0,0 +1,43 @@
1
+ import { Component } from '@angular/core';
2
+
3
+ import { Breadcrumb, BreadcrumbItem } from '../../../components/breadcrumb/breadcrumb';
4
+
5
+ import { AiPromptService } from '../../../core/services/ai-prompt.service';
6
+
7
+ @Component({
8
+ selector: 'app-breadcrumb-docs',
9
+ imports: [
10
+ Breadcrumb
11
+ ],
12
+ templateUrl: './breadcrumb-docs.html',
13
+ styleUrl: './breadcrumb-docs.css'
14
+ })
15
+ export class BreadcrumbDocs {
16
+ breadcrumbItems: BreadcrumbItem[] = [
17
+ { label: 'Home', url: '/' },
18
+ { label: 'Components', url: '/components' },
19
+ { label: 'Breadcrumb' }
20
+ ];
21
+
22
+ exampleBreadcrumbs: BreadcrumbItem[] = [
23
+ { label: 'Home', url: '/' },
24
+ { label: 'Components', url: '/components' },
25
+ { label: 'Breadcrumb' }
26
+ ];
27
+
28
+ simpleBreadcrumbs: BreadcrumbItem[] = [
29
+ { label: 'Components' }
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
+ }
43
+ }