wally-ui 1.11.1 → 1.12.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/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/package.json +4 -2
- package/playground/showcase/public/sitemap.xml +32 -0
- package/playground/showcase/src/app/app.routes.server.ts +8 -0
- package/playground/showcase/src/app/components/ai/ai-chat/ai-chat.css +0 -0
- package/playground/showcase/src/app/components/ai/ai-chat/ai-chat.html +5 -0
- package/playground/showcase/src/app/components/ai/ai-chat/ai-chat.spec.ts +23 -0
- package/playground/showcase/src/app/components/ai/ai-chat/ai-chat.ts +17 -0
- package/playground/showcase/src/app/components/ai/ai-composer/ai-composer.css +0 -0
- package/playground/showcase/src/app/components/ai/ai-composer/ai-composer.html +69 -0
- package/playground/showcase/src/app/components/ai/ai-composer/ai-composer.spec.ts +23 -0
- package/playground/showcase/src/app/components/ai/ai-composer/ai-composer.ts +19 -0
- package/playground/showcase/src/app/components/ai/ai-prompt-input/ai-prompt-input.css +0 -0
- package/playground/showcase/src/app/components/ai/ai-prompt-input/ai-prompt-input.html +10 -0
- package/playground/showcase/src/app/components/ai/ai-prompt-input/ai-prompt-input.spec.ts +23 -0
- package/playground/showcase/src/app/components/ai/ai-prompt-input/ai-prompt-input.ts +25 -0
- package/playground/showcase/src/app/components/button/button.html +5 -1
- package/playground/showcase/src/app/components/button/button.ts +1 -0
- package/playground/showcase/src/app/components/carousel/carousel.html +1 -33
- package/playground/showcase/src/app/components/carousel/carousel.ts +199 -251
- package/playground/showcase/src/app/components/tooltip/tooltip.css +0 -0
- package/playground/showcase/src/app/components/tooltip/tooltip.html +9 -0
- package/playground/showcase/src/app/components/tooltip/tooltip.ts +189 -0
- package/playground/showcase/src/app/pages/documentation/chat-sdk/chat-sdk.html +99 -0
- package/playground/showcase/src/app/pages/documentation/chat-sdk/chat-sdk.ts +20 -0
- package/playground/showcase/src/app/pages/documentation/components/components.html +23 -0
- package/playground/showcase/src/app/pages/documentation/components/components.routes.ts +4 -0
- package/playground/showcase/src/app/pages/documentation/components/tooltip-docs/tooltip-docs.css +1 -0
- package/playground/showcase/src/app/pages/documentation/components/tooltip-docs/tooltip-docs.examples.ts +150 -0
- package/playground/showcase/src/app/pages/documentation/components/tooltip-docs/tooltip-docs.html +471 -0
- package/playground/showcase/src/app/pages/documentation/components/tooltip-docs/tooltip-docs.ts +69 -0
- package/playground/showcase/src/app/pages/documentation/documentation.routes.ts +4 -0
- package/playground/showcase/src/app/pages/home/home.html +26 -0
- package/playground/showcase/src/app/pages/home/home.ts +3 -2
- package/playground/showcase/src/index.html +7 -4
package/playground/showcase/src/app/pages/documentation/components/tooltip-docs/tooltip-docs.html
ADDED
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
<main class="min-h-dvh bg-white dark:bg-[#0a0a0a] font-mono" role="main">
|
|
2
|
+
<div class="max-w-4xl mx-auto px-4 py-8 sm:px-6 md:px-8">
|
|
3
|
+
|
|
4
|
+
<!-- Breadcrumb Navigation -->
|
|
5
|
+
<nav class="mb-8" aria-label="Breadcrumb navigation">
|
|
6
|
+
<wally-breadcrumb [items]="breadcrumbItems"></wally-breadcrumb>
|
|
7
|
+
</nav>
|
|
8
|
+
|
|
9
|
+
<!-- Header -->
|
|
10
|
+
<header class="mb-12" role="banner">
|
|
11
|
+
<h1 id="page-title" class="text-3xl sm:text-4xl font-bold text-[#0a0a0a] dark:text-white mb-4 uppercase">
|
|
12
|
+
<span aria-hidden="true">>_ </span>Tooltip
|
|
13
|
+
</h1>
|
|
14
|
+
<p
|
|
15
|
+
class="text-sm sm:text-base text-neutral-700 dark:text-neutral-300 border-l-2 border-neutral-300 dark:border-neutral-700 pl-4 leading-relaxed">
|
|
16
|
+
Accessible tooltip component with smart auto-positioning, overflow detection, and smooth animations. Wraps any element to provide contextual information on hover or focus.
|
|
17
|
+
</p>
|
|
18
|
+
</header>
|
|
19
|
+
|
|
20
|
+
<!-- AI Assistant Links -->
|
|
21
|
+
<div class="flex flex-wrap gap-0 mt-6 mb-12 border-2 border-neutral-300 dark:border-neutral-700" role="list"
|
|
22
|
+
aria-label="Open documentation in AI coding assistants">
|
|
23
|
+
<a [href]="claudeUrl" target="_blank"
|
|
24
|
+
class="group flex-1 min-w-[200px] flex items-center justify-center gap-2 px-4 py-3 bg-white dark:bg-[#0a0a0a] border-b-2 sm:border-b-0 sm:border-r-2 border-neutral-300 dark:border-neutral-700 hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
|
|
25
|
+
rel="noopener noreferrer" role="listitem"
|
|
26
|
+
aria-label="Open Tooltip component documentation in Claude AI assistant (opens in new tab)">
|
|
27
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
28
|
+
class="size-5 text-[#0a0a0a] dark:text-neutral-400 group-hover:text-white dark:group-hover:text-[#0a0a0a] transition-colors duration-150"
|
|
29
|
+
viewBox="0 0 24 24" aria-hidden="true">
|
|
30
|
+
<path fill="currentColor"
|
|
31
|
+
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" />
|
|
32
|
+
</svg>
|
|
33
|
+
<span
|
|
34
|
+
class="text-xs sm:text-sm font-medium text-[#0a0a0a] dark:text-neutral-400 group-hover:text-white dark:group-hover:text-[#0a0a0a] transition-colors duration-150">
|
|
35
|
+
Open in Claude
|
|
36
|
+
</span>
|
|
37
|
+
</a>
|
|
38
|
+
|
|
39
|
+
<a [href]="chatGptUrl" target="_blank"
|
|
40
|
+
class="group flex-1 min-w-[200px] flex items-center justify-center gap-2 px-4 py-3 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
|
|
41
|
+
rel="noopener noreferrer" role="listitem"
|
|
42
|
+
aria-label="Open Tooltip component documentation in ChatGPT AI assistant (opens in new tab)">
|
|
43
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
44
|
+
class="size-5 text-[#0a0a0a] dark:text-neutral-400 group-hover:text-white dark:group-hover:text-[#0a0a0a] transition-colors duration-150"
|
|
45
|
+
viewBox="0 0 48 48" aria-hidden="true">
|
|
46
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
47
|
+
d="M18.38 27.94v-14.4l11.19-6.46c6.2-3.58 17.3 5.25 12.64 13.33" />
|
|
48
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
49
|
+
d="m18.38 20.94l12.47-7.2l11.19 6.46c6.2 3.58 4.1 17.61-5.23 17.61" />
|
|
50
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
51
|
+
d="m24.44 17.44l12.47 7.2v12.93c0 7.16-13.2 12.36-17.86 4.28" />
|
|
52
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
53
|
+
d="M30.5 21.2v14.14L19.31 41.8c-6.2 3.58-17.3-5.25-12.64-13.33" />
|
|
54
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
55
|
+
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" />
|
|
56
|
+
<path fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round"
|
|
57
|
+
d="m24.44 31.44l-12.47-7.2V11.31c0-7.16 13.2-12.36 17.86-4.28" />
|
|
58
|
+
</svg>
|
|
59
|
+
<span
|
|
60
|
+
class="text-xs sm:text-sm font-medium text-[#0a0a0a] dark:text-neutral-400 group-hover:text-white dark:group-hover:text-[#0a0a0a] transition-colors duration-150">
|
|
61
|
+
Open in ChatGPT
|
|
62
|
+
</span>
|
|
63
|
+
</a>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<!-- Installation -->
|
|
67
|
+
<section id="installation" class="mb-12" aria-labelledby="installation-heading">
|
|
68
|
+
<h2 id="installation-heading"
|
|
69
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
70
|
+
[ Installation ]
|
|
71
|
+
</h2>
|
|
72
|
+
<code
|
|
73
|
+
class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white block bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3"
|
|
74
|
+
aria-label="Installation command for Tooltip component">
|
|
75
|
+
<pre><code [innerHTML]="installationCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
76
|
+
</code>
|
|
77
|
+
</section>
|
|
78
|
+
|
|
79
|
+
<!-- Import -->
|
|
80
|
+
<section id="import" class="mb-12" aria-labelledby="import-heading">
|
|
81
|
+
<h2 id="import-heading"
|
|
82
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
83
|
+
[ Import ]
|
|
84
|
+
</h2>
|
|
85
|
+
<div class="space-y-3">
|
|
86
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3">
|
|
87
|
+
<pre><code [innerHTML]="importCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
88
|
+
</div>
|
|
89
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3">
|
|
90
|
+
<pre><code [innerHTML]="componentImportCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</section>
|
|
94
|
+
|
|
95
|
+
<!-- Basic Usage -->
|
|
96
|
+
<section id="basic-usage" class="mb-12" aria-labelledby="basic-usage-heading">
|
|
97
|
+
<h2 id="basic-usage-heading"
|
|
98
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
99
|
+
[ Basic Usage ]
|
|
100
|
+
</h2>
|
|
101
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
102
|
+
<pre><code [innerHTML]="basicUsageCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a] flex items-center justify-center" role="img"
|
|
105
|
+
aria-label="Live preview of basic tooltip on hover">
|
|
106
|
+
<wally-tooltip text="This is a tooltip">
|
|
107
|
+
<wally-button variant="secondary">Hover me</wally-button>
|
|
108
|
+
</wally-tooltip>
|
|
109
|
+
</div>
|
|
110
|
+
</section>
|
|
111
|
+
|
|
112
|
+
<!-- Positioning System -->
|
|
113
|
+
<section id="positioning" class="mb-12" aria-labelledby="positioning-heading">
|
|
114
|
+
<h2 id="positioning-heading"
|
|
115
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
116
|
+
[ Smart Auto-Positioning ]
|
|
117
|
+
</h2>
|
|
118
|
+
|
|
119
|
+
<article class="mb-8" aria-labelledby="auto-position-heading">
|
|
120
|
+
<h3 id="auto-position-heading"
|
|
121
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
122
|
+
<span aria-hidden="true">> </span>Auto Position (Default)
|
|
123
|
+
</h3>
|
|
124
|
+
<p class="text-xs sm:text-sm text-neutral-600 dark:text-neutral-400 mb-3 leading-relaxed">
|
|
125
|
+
Automatically detects viewport space and positions tooltip optimally. Includes overflow detection for edge cases.
|
|
126
|
+
</p>
|
|
127
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
128
|
+
<pre><code [innerHTML]="positionsCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a] flex items-center justify-center" role="img"
|
|
131
|
+
aria-label="Live preview of tooltip positioning options">
|
|
132
|
+
<div class="flex flex-wrap gap-4 justify-center">
|
|
133
|
+
<wally-tooltip text="Auto positioned" position="auto">
|
|
134
|
+
<wally-button variant="outline">Auto</wally-button>
|
|
135
|
+
</wally-tooltip>
|
|
136
|
+
<wally-tooltip text="Always on top" position="top">
|
|
137
|
+
<wally-button variant="outline">Top</wally-button>
|
|
138
|
+
</wally-tooltip>
|
|
139
|
+
<wally-tooltip text="Always on bottom" position="bottom">
|
|
140
|
+
<wally-button variant="outline">Bottom</wally-button>
|
|
141
|
+
</wally-tooltip>
|
|
142
|
+
<wally-tooltip text="Always on left" position="left">
|
|
143
|
+
<wally-button variant="outline">Left</wally-button>
|
|
144
|
+
</wally-tooltip>
|
|
145
|
+
<wally-tooltip text="Always on right" position="right">
|
|
146
|
+
<wally-button variant="outline">Right</wally-button>
|
|
147
|
+
</wally-tooltip>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
</article>
|
|
151
|
+
</section>
|
|
152
|
+
|
|
153
|
+
<!-- Usage Examples -->
|
|
154
|
+
<section id="examples" class="mb-12" aria-labelledby="examples-heading">
|
|
155
|
+
<h2 id="examples-heading"
|
|
156
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
157
|
+
[ Usage Examples ]
|
|
158
|
+
</h2>
|
|
159
|
+
|
|
160
|
+
<!-- With Button -->
|
|
161
|
+
<article class="mb-8" aria-labelledby="with-button-heading">
|
|
162
|
+
<h3 id="with-button-heading"
|
|
163
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
164
|
+
<span aria-hidden="true">> </span>With Button Component
|
|
165
|
+
</h3>
|
|
166
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
167
|
+
<pre><code [innerHTML]="withButtonCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
168
|
+
</div>
|
|
169
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a] flex items-center justify-center" role="img"
|
|
170
|
+
aria-label="Live preview of tooltip with button component">
|
|
171
|
+
<wally-tooltip text="Save your changes">
|
|
172
|
+
<wally-button variant="primary">Save</wally-button>
|
|
173
|
+
</wally-tooltip>
|
|
174
|
+
</div>
|
|
175
|
+
</article>
|
|
176
|
+
|
|
177
|
+
<!-- With Icon Button -->
|
|
178
|
+
<article class="mb-8" aria-labelledby="with-icon-heading">
|
|
179
|
+
<h3 id="with-icon-heading"
|
|
180
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
181
|
+
<span aria-hidden="true">> </span>Icon-Only Button
|
|
182
|
+
</h3>
|
|
183
|
+
<p class="text-xs sm:text-sm text-neutral-600 dark:text-neutral-400 mb-3 leading-relaxed">
|
|
184
|
+
Essential for icon-only buttons to provide context for screen readers and visual users.
|
|
185
|
+
</p>
|
|
186
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
187
|
+
<pre><code [innerHTML]="withIconCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
188
|
+
</div>
|
|
189
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a] flex items-center justify-center" role="img"
|
|
190
|
+
aria-label="Live preview of tooltip with icon button">
|
|
191
|
+
<wally-tooltip text="Send message">
|
|
192
|
+
<wally-button [variant]="'ghost'" [rounded]="true" ariaLabel="Send">
|
|
193
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5">
|
|
194
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5" />
|
|
195
|
+
</svg>
|
|
196
|
+
</wally-button>
|
|
197
|
+
</wally-tooltip>
|
|
198
|
+
</div>
|
|
199
|
+
</article>
|
|
200
|
+
</section>
|
|
201
|
+
|
|
202
|
+
<!-- Configuration -->
|
|
203
|
+
<section id="configuration" class="mb-12" aria-labelledby="configuration-heading">
|
|
204
|
+
<h2 id="configuration-heading"
|
|
205
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
206
|
+
[ Configuration ]
|
|
207
|
+
</h2>
|
|
208
|
+
|
|
209
|
+
<!-- Custom Delay -->
|
|
210
|
+
<article class="mb-8" aria-labelledby="delay-heading">
|
|
211
|
+
<h3 id="delay-heading"
|
|
212
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
213
|
+
<span aria-hidden="true">> </span>Custom Delay
|
|
214
|
+
</h3>
|
|
215
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
216
|
+
<pre><code [innerHTML]="customDelayCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
217
|
+
</div>
|
|
218
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a] flex items-center justify-center" role="img"
|
|
219
|
+
aria-label="Live preview of tooltips with custom delays">
|
|
220
|
+
<div class="flex gap-4">
|
|
221
|
+
<wally-tooltip text="Quick tooltip" [delay]="100">
|
|
222
|
+
<wally-button variant="ghost">Fast (100ms)</wally-button>
|
|
223
|
+
</wally-tooltip>
|
|
224
|
+
<wally-tooltip text="Delayed tooltip" [delay]="500">
|
|
225
|
+
<wally-button variant="ghost">Slow (500ms)</wally-button>
|
|
226
|
+
</wally-tooltip>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
</article>
|
|
230
|
+
|
|
231
|
+
<!-- Disabled State -->
|
|
232
|
+
<article class="mb-8" aria-labelledby="disabled-heading">
|
|
233
|
+
<h3 id="disabled-heading"
|
|
234
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
235
|
+
<span aria-hidden="true">> </span>Disabled State
|
|
236
|
+
</h3>
|
|
237
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
238
|
+
<pre><code [innerHTML]="disabledCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
239
|
+
</div>
|
|
240
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a] flex items-center justify-center" role="img"
|
|
241
|
+
aria-label="Live preview of disabled tooltip">
|
|
242
|
+
<wally-tooltip text="This won't show" [disabled]="true">
|
|
243
|
+
<wally-button variant="secondary">Disabled Tooltip</wally-button>
|
|
244
|
+
</wally-tooltip>
|
|
245
|
+
</div>
|
|
246
|
+
</article>
|
|
247
|
+
|
|
248
|
+
<!-- Custom Offset -->
|
|
249
|
+
<article class="mb-8" aria-labelledby="offset-heading">
|
|
250
|
+
<h3 id="offset-heading"
|
|
251
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
252
|
+
<span aria-hidden="true">> </span>Custom Offset
|
|
253
|
+
</h3>
|
|
254
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
255
|
+
<pre><code [innerHTML]="customOffsetCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
256
|
+
</div>
|
|
257
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a] flex items-center justify-center" role="img"
|
|
258
|
+
aria-label="Live preview of tooltips with custom offset spacing">
|
|
259
|
+
<div class="flex gap-4">
|
|
260
|
+
<wally-tooltip text="More space" [offset]="4">
|
|
261
|
+
<wally-button variant="secondary">Large offset</wally-button>
|
|
262
|
+
</wally-tooltip>
|
|
263
|
+
<wally-tooltip text="Close" [offset]="1">
|
|
264
|
+
<wally-button variant="secondary">Small offset</wally-button>
|
|
265
|
+
</wally-tooltip>
|
|
266
|
+
</div>
|
|
267
|
+
</div>
|
|
268
|
+
</article>
|
|
269
|
+
</section>
|
|
270
|
+
|
|
271
|
+
<!-- Production Examples -->
|
|
272
|
+
<section id="production-examples" class="mb-12" aria-labelledby="production-heading">
|
|
273
|
+
<h2 id="production-heading"
|
|
274
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
275
|
+
[ Production Examples ]
|
|
276
|
+
</h2>
|
|
277
|
+
|
|
278
|
+
<!-- Dashboard Toolbar -->
|
|
279
|
+
<article class="mb-8" aria-labelledby="dashboard-heading">
|
|
280
|
+
<h3 id="dashboard-heading"
|
|
281
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
282
|
+
<span aria-hidden="true">> </span>Dashboard Toolbar
|
|
283
|
+
</h3>
|
|
284
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
285
|
+
<pre><code [innerHTML]="dashboardCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
286
|
+
</div>
|
|
287
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a] flex items-center justify-center" role="img"
|
|
288
|
+
aria-label="Live preview of dashboard toolbar with tooltips">
|
|
289
|
+
<div class="flex gap-2">
|
|
290
|
+
<wally-tooltip text="Export data to CSV">
|
|
291
|
+
<wally-button variant="outline" ariaLabel="Export">
|
|
292
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5">
|
|
293
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" />
|
|
294
|
+
</svg>
|
|
295
|
+
</wally-button>
|
|
296
|
+
</wally-tooltip>
|
|
297
|
+
|
|
298
|
+
<wally-tooltip text="Refresh dashboard">
|
|
299
|
+
<wally-button variant="outline" ariaLabel="Refresh">
|
|
300
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5">
|
|
301
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
|
|
302
|
+
</svg>
|
|
303
|
+
</wally-button>
|
|
304
|
+
</wally-tooltip>
|
|
305
|
+
|
|
306
|
+
<wally-tooltip text="Settings">
|
|
307
|
+
<wally-button variant="outline" ariaLabel="Settings">
|
|
308
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5">
|
|
309
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z" />
|
|
310
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
|
|
311
|
+
</svg>
|
|
312
|
+
</wally-button>
|
|
313
|
+
</wally-tooltip>
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
</article>
|
|
317
|
+
|
|
318
|
+
<!-- Form Field Help -->
|
|
319
|
+
<article class="mb-8" aria-labelledby="form-field-heading">
|
|
320
|
+
<h3 id="form-field-heading"
|
|
321
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
322
|
+
<span aria-hidden="true">> </span>Form Field Help
|
|
323
|
+
</h3>
|
|
324
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3 mb-4">
|
|
325
|
+
<pre><code [innerHTML]="formFieldCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
326
|
+
</div>
|
|
327
|
+
<div class="p-8 border-2 border-neutral-300 dark:border-neutral-700 bg-white dark:bg-[#0a0a0a]" role="img"
|
|
328
|
+
aria-label="Live preview of form field with help tooltip">
|
|
329
|
+
<div class="flex items-start gap-2">
|
|
330
|
+
<wally-input label="Email" type="email" placeholder="your@email.com" class="flex-1" />
|
|
331
|
+
<wally-tooltip text="We'll never share your email">
|
|
332
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-4 text-neutral-500 cursor-help mt-[30px]">
|
|
333
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" />
|
|
334
|
+
</svg>
|
|
335
|
+
</wally-tooltip>
|
|
336
|
+
</div>
|
|
337
|
+
</div>
|
|
338
|
+
</article>
|
|
339
|
+
</section>
|
|
340
|
+
|
|
341
|
+
<!-- Future Features -->
|
|
342
|
+
<section id="future-features" class="mb-12" aria-labelledby="future-heading">
|
|
343
|
+
<h2 id="future-heading"
|
|
344
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
345
|
+
[ Future Features ]
|
|
346
|
+
</h2>
|
|
347
|
+
|
|
348
|
+
<article class="mb-8" aria-labelledby="rich-content-heading">
|
|
349
|
+
<h3 id="rich-content-heading"
|
|
350
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-3 uppercase">
|
|
351
|
+
<span aria-hidden="true">> </span>Rich Content Support (Coming Soon)
|
|
352
|
+
</h3>
|
|
353
|
+
<p class="text-xs sm:text-sm text-neutral-600 dark:text-neutral-400 mb-3 leading-relaxed">
|
|
354
|
+
Future version will support custom HTML content projection, allowing images, formatted text, and interactive elements inside tooltips.
|
|
355
|
+
</p>
|
|
356
|
+
<div class="bg-neutral-100 dark:bg-[#121212] border border-neutral-300 dark:border-neutral-700 p-3">
|
|
357
|
+
<pre><code [innerHTML]="richContentCode" class="text-xs sm:text-sm text-[#0a0a0a] dark:text-white"></code></pre>
|
|
358
|
+
</div>
|
|
359
|
+
</article>
|
|
360
|
+
</section>
|
|
361
|
+
|
|
362
|
+
<!-- API Reference -->
|
|
363
|
+
<section id="api-reference" class="mb-12" aria-labelledby="api-heading">
|
|
364
|
+
<h2 id="api-heading"
|
|
365
|
+
class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
|
|
366
|
+
[ API Reference ]
|
|
367
|
+
</h2>
|
|
368
|
+
|
|
369
|
+
<!-- Input Properties -->
|
|
370
|
+
<article class="mb-8" aria-labelledby="input-properties-heading">
|
|
371
|
+
<h3 id="input-properties-heading"
|
|
372
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-4 uppercase">
|
|
373
|
+
<span aria-hidden="true">> </span>Input Properties
|
|
374
|
+
</h3>
|
|
375
|
+
<div class="bg-white dark:bg-[#0f0f0f] border-2 border-neutral-300 dark:border-neutral-800 overflow-hidden">
|
|
376
|
+
<div class="overflow-x-auto">
|
|
377
|
+
<table class="w-full text-sm">
|
|
378
|
+
<thead class="bg-gray-50 dark:bg-gray-900">
|
|
379
|
+
<tr>
|
|
380
|
+
<th class="text-left p-4 font-medium text-gray-900 dark:text-gray-100">Property</th>
|
|
381
|
+
<th class="text-left p-4 font-medium text-gray-900 dark:text-gray-100">Type</th>
|
|
382
|
+
<th class="text-left p-4 font-medium text-gray-900 dark:text-gray-100">Default</th>
|
|
383
|
+
<th class="text-left p-4 font-medium text-gray-900 dark:text-gray-100">Description</th>
|
|
384
|
+
</tr>
|
|
385
|
+
</thead>
|
|
386
|
+
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
|
|
387
|
+
<tr>
|
|
388
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">text</td>
|
|
389
|
+
<td class="p-4 font-mono text-purple-600 dark:text-purple-400">string</td>
|
|
390
|
+
<td class="p-4 font-mono text-green-600 dark:text-green-400">required</td>
|
|
391
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Text content displayed in the tooltip</td>
|
|
392
|
+
</tr>
|
|
393
|
+
<tr>
|
|
394
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">position</td>
|
|
395
|
+
<td class="p-4 font-mono text-purple-600 dark:text-purple-400">'top' | 'bottom' | 'left' | 'right' | 'auto'</td>
|
|
396
|
+
<td class="p-4 font-mono text-green-600 dark:text-green-400">'auto'</td>
|
|
397
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Tooltip position. 'auto' intelligently detects best position based on viewport space</td>
|
|
398
|
+
</tr>
|
|
399
|
+
<tr>
|
|
400
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">delay</td>
|
|
401
|
+
<td class="p-4 font-mono text-purple-600 dark:text-purple-400">number</td>
|
|
402
|
+
<td class="p-4 font-mono text-green-600 dark:text-green-400">200</td>
|
|
403
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Show delay in milliseconds</td>
|
|
404
|
+
</tr>
|
|
405
|
+
<tr>
|
|
406
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">disabled</td>
|
|
407
|
+
<td class="p-4 font-mono text-purple-600 dark:text-purple-400">boolean</td>
|
|
408
|
+
<td class="p-4 font-mono text-green-600 dark:text-green-400">false</td>
|
|
409
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Disables tooltip display</td>
|
|
410
|
+
</tr>
|
|
411
|
+
<tr>
|
|
412
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">offset</td>
|
|
413
|
+
<td class="p-4 font-mono text-purple-600 dark:text-purple-400">number</td>
|
|
414
|
+
<td class="p-4 font-mono text-green-600 dark:text-green-400">2</td>
|
|
415
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Distance from target element in pixels</td>
|
|
416
|
+
</tr>
|
|
417
|
+
</tbody>
|
|
418
|
+
</table>
|
|
419
|
+
</div>
|
|
420
|
+
</div>
|
|
421
|
+
</article>
|
|
422
|
+
|
|
423
|
+
<!-- Technical Features -->
|
|
424
|
+
<article class="mb-8" aria-labelledby="technical-heading">
|
|
425
|
+
<h3 id="technical-heading"
|
|
426
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white mb-4 uppercase">
|
|
427
|
+
<span aria-hidden="true">> </span>Technical Features
|
|
428
|
+
</h3>
|
|
429
|
+
<div class="bg-white dark:bg-[#0f0f0f] border-2 border-neutral-300 dark:border-neutral-800 overflow-hidden">
|
|
430
|
+
<div class="overflow-x-auto">
|
|
431
|
+
<table class="w-full text-sm">
|
|
432
|
+
<thead class="bg-gray-50 dark:bg-gray-900">
|
|
433
|
+
<tr>
|
|
434
|
+
<th class="text-left p-4 font-medium text-gray-900 dark:text-gray-100">Feature</th>
|
|
435
|
+
<th class="text-left p-4 font-medium text-gray-900 dark:text-gray-100">Description</th>
|
|
436
|
+
</tr>
|
|
437
|
+
</thead>
|
|
438
|
+
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
|
|
439
|
+
<tr>
|
|
440
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">Auto-Positioning</td>
|
|
441
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Detects viewport space and positions tooltip automatically with priority: top → bottom → right → left</td>
|
|
442
|
+
</tr>
|
|
443
|
+
<tr>
|
|
444
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">Overflow Detection</td>
|
|
445
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Automatically shifts tooltip horizontally/vertically when near viewport edges (8px padding)</td>
|
|
446
|
+
</tr>
|
|
447
|
+
<tr>
|
|
448
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">Arrow Indicator</td>
|
|
449
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Dynamic arrow that points to target element, adjusts based on position</td>
|
|
450
|
+
</tr>
|
|
451
|
+
<tr>
|
|
452
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">Smooth Animation</td>
|
|
453
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">GPU-accelerated fade transitions (150ms show, 100ms hide)</td>
|
|
454
|
+
</tr>
|
|
455
|
+
<tr>
|
|
456
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">Accessibility</td>
|
|
457
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">role="tooltip", aria-hidden, keyboard support (focus/blur events)</td>
|
|
458
|
+
</tr>
|
|
459
|
+
<tr>
|
|
460
|
+
<td class="p-4 font-mono text-blue-600 dark:text-blue-400">Dark Mode</td>
|
|
461
|
+
<td class="p-4 text-gray-700 dark:text-gray-300">Automatic theme detection and color adaptation</td>
|
|
462
|
+
</tr>
|
|
463
|
+
</tbody>
|
|
464
|
+
</table>
|
|
465
|
+
</div>
|
|
466
|
+
</div>
|
|
467
|
+
</article>
|
|
468
|
+
</section>
|
|
469
|
+
|
|
470
|
+
</div>
|
|
471
|
+
</main>
|
package/playground/showcase/src/app/pages/documentation/components/tooltip-docs/tooltip-docs.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
import { AiPromptService } from '../../../../core/services/ai-prompt.service';
|
|
4
|
+
import { getFormattedCode } from '../../../../core/utils/prism';
|
|
5
|
+
|
|
6
|
+
import { TooltipCodeExamples } from './tooltip-docs.examples';
|
|
7
|
+
|
|
8
|
+
import { Breadcrumb, BreadcrumbItem } from '../../../../components/breadcrumb/breadcrumb';
|
|
9
|
+
import { Button } from '../../../../components/button/button';
|
|
10
|
+
import { Tooltip } from '../../../../components/tooltip/tooltip';
|
|
11
|
+
import { Input } from '../../../../components/input/input';
|
|
12
|
+
|
|
13
|
+
@Component({
|
|
14
|
+
selector: 'app-tooltip-docs',
|
|
15
|
+
imports: [
|
|
16
|
+
Button,
|
|
17
|
+
Breadcrumb,
|
|
18
|
+
Tooltip,
|
|
19
|
+
Input
|
|
20
|
+
],
|
|
21
|
+
templateUrl: './tooltip-docs.html',
|
|
22
|
+
styleUrl: './tooltip-docs.css'
|
|
23
|
+
})
|
|
24
|
+
export class TooltipDocs {
|
|
25
|
+
breadcrumbItems: BreadcrumbItem[] = [
|
|
26
|
+
{ label: 'Home', url: '/' },
|
|
27
|
+
{ label: 'Documentation', url: '/documentation' },
|
|
28
|
+
{ label: 'Components', url: '/documentation/components' },
|
|
29
|
+
{ label: 'Tooltip' }
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
// Installation & Import
|
|
33
|
+
installationCode = getFormattedCode(TooltipCodeExamples.installation, 'bash');
|
|
34
|
+
importCode = getFormattedCode(TooltipCodeExamples.import, 'typescript');
|
|
35
|
+
componentImportCode = getFormattedCode(TooltipCodeExamples.componentImport, 'typescript');
|
|
36
|
+
basicUsageCode = getFormattedCode(TooltipCodeExamples.basicUsage, 'html');
|
|
37
|
+
|
|
38
|
+
// Positioning
|
|
39
|
+
positionsCode = getFormattedCode(TooltipCodeExamples.positions, 'html');
|
|
40
|
+
|
|
41
|
+
// Examples
|
|
42
|
+
withButtonCode = getFormattedCode(TooltipCodeExamples.withButton, 'html');
|
|
43
|
+
withIconCode = getFormattedCode(TooltipCodeExamples.withIcon, 'html');
|
|
44
|
+
customDelayCode = getFormattedCode(TooltipCodeExamples.customDelay, 'html');
|
|
45
|
+
disabledCode = getFormattedCode(TooltipCodeExamples.disabled, 'html');
|
|
46
|
+
customOffsetCode = getFormattedCode(TooltipCodeExamples.customOffset, 'html');
|
|
47
|
+
|
|
48
|
+
// Production Examples
|
|
49
|
+
dashboardCode = getFormattedCode(TooltipCodeExamples.dashboard, 'html');
|
|
50
|
+
formFieldCode = getFormattedCode(TooltipCodeExamples.formField, 'html');
|
|
51
|
+
navigationCode = getFormattedCode(TooltipCodeExamples.navigation, 'html');
|
|
52
|
+
avatarCode = getFormattedCode(TooltipCodeExamples.avatar, 'html');
|
|
53
|
+
statusBadgeCode = getFormattedCode(TooltipCodeExamples.statusBadge, 'html');
|
|
54
|
+
|
|
55
|
+
// Future Features
|
|
56
|
+
richContentCode = getFormattedCode(TooltipCodeExamples.richContent, 'html');
|
|
57
|
+
|
|
58
|
+
constructor(
|
|
59
|
+
private aiPromptService: AiPromptService
|
|
60
|
+
) { }
|
|
61
|
+
|
|
62
|
+
get claudeUrl(): string {
|
|
63
|
+
return this.aiPromptService.generateClaudeUrl();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
get chatGptUrl(): string {
|
|
67
|
+
return this.aiPromptService.generateChatGptUrl();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -8,5 +8,9 @@ export const documentationRoutes: Routes = [
|
|
|
8
8
|
{
|
|
9
9
|
path: 'components',
|
|
10
10
|
loadChildren: () => import('./components/components.routes').then(m => m.componentsRoutes)
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
path: 'chat-sdk',
|
|
14
|
+
loadComponent: () => import('./chat-sdk/chat-sdk').then(m => m.ChatSdk)
|
|
11
15
|
}
|
|
12
16
|
];
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
<main class="min-h-dvh subpixel-antialiased font-mono bg-white dark:bg-[#0a0a0a]" role="main">
|
|
2
2
|
<div class="w-full min-h-dvh flex flex-col items-center justify-center px-4 py-12 sm:px-6 md:px-8 lg:px-12">
|
|
3
|
+
<!-- <div class="w-full max-w-4xl">
|
|
4
|
+
<wally-ai-chat></wally-ai-chat>
|
|
5
|
+
</div> -->
|
|
6
|
+
|
|
3
7
|
<article class="w-full max-w-3xl">
|
|
4
8
|
<header class="w-full mb-10 sm:mb-12 space-y-6">
|
|
5
9
|
<hgroup class="space-y-6">
|
|
@@ -121,6 +125,28 @@
|
|
|
121
125
|
</div>
|
|
122
126
|
</a>
|
|
123
127
|
|
|
128
|
+
<a [routerLink]="'/documentation/chat-sdk'"
|
|
129
|
+
class="group block px-4 py-3 sm:py-4 bg-white dark:bg-[#0a0a0a] border-b-2 border-neutral-300 dark:border-neutral-700 hover:bg-[#0a0a0a] dark:hover:bg-white hover:border-[#0a0a0a] dark:hover:border-white transition-all duration-150 cursor-pointer"
|
|
130
|
+
aria-label="Chat SDK - Complete chat development SDK with AI interface, message matrix, streaming service, and Wally UI components">
|
|
131
|
+
<div class="flex items-start justify-between gap-4">
|
|
132
|
+
<div class="flex-1 min-w-0">
|
|
133
|
+
<div class="flex items-center gap-3 mb-1">
|
|
134
|
+
<h4
|
|
135
|
+
class="text-sm sm:text-base font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
|
|
136
|
+
<span aria-hidden="true">>_ </span>Chat SDK
|
|
137
|
+
</h4>
|
|
138
|
+
<span class="text-[10px] font-bold bg-blue-500 text-white px-2 py-1 uppercase tracking-wider" aria-label="Status: Coming Soon">
|
|
139
|
+
COMING SOON
|
|
140
|
+
</span>
|
|
141
|
+
</div>
|
|
142
|
+
<p
|
|
143
|
+
class="text-xs sm:text-sm text-neutral-600 dark:text-neutral-400 group-hover:text-neutral-300 dark:group-hover:text-neutral-600 transition-colors duration-150">
|
|
144
|
+
Complete chat development SDK: AI interface with message matrix (ai: 1/2, me: 1/1), streaming data service, and full visual customization using Wally UI components
|
|
145
|
+
</p>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
</a>
|
|
149
|
+
|
|
124
150
|
<a [routerLink]="'/mcp'"
|
|
125
151
|
class="group block px-4 py-3 sm:py-4 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white hover:border-[#0a0a0a] dark:hover:border-white transition-all duration-150 cursor-pointer"
|
|
126
152
|
aria-label="Learn about Wally UI MCP Server integration with AI coding assistants like Claude, ChatGPT, and Cursor">
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { RouterModule } from '@angular/router';
|
|
2
2
|
import { Component } from '@angular/core';
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
import { AiChat } from '../../components/ai/ai-chat/ai-chat';
|
|
4
5
|
|
|
5
6
|
@Component({
|
|
6
7
|
selector: 'wally-home',
|
|
7
|
-
imports: [RouterModule,
|
|
8
|
+
imports: [RouterModule, AiChat],
|
|
8
9
|
templateUrl: './home.html',
|
|
9
10
|
styleUrl: './home.css'
|
|
10
11
|
})
|
|
@@ -47,12 +47,15 @@
|
|
|
47
47
|
</script>
|
|
48
48
|
|
|
49
49
|
<script>
|
|
50
|
-
// Tailwind V4
|
|
50
|
+
// Tailwind V4 - Auto theme detection (ignores localStorage)
|
|
51
51
|
function updateTheme() {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
// Remove any cached theme preference from other projects
|
|
53
|
+
if (localStorage.theme) {
|
|
54
|
+
localStorage.removeItem('theme');
|
|
55
|
+
}
|
|
55
56
|
|
|
57
|
+
// Always use system preference
|
|
58
|
+
const isDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
56
59
|
document.documentElement.classList.toggle("dark", isDark);
|
|
57
60
|
}
|
|
58
61
|
|