wally-ui 1.12.1 → 1.13.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 (67) hide show
  1. package/dist/cli.js +8 -5
  2. package/dist/cli.js.map +1 -1
  3. package/package.json +1 -1
  4. package/playground/showcase/src/app/app.routes.server.ts +4 -0
  5. package/playground/showcase/src/app/components/ai/ai-composer/ai-composer.html +164 -31
  6. package/playground/showcase/src/app/components/ai/ai-composer/ai-composer.ts +25 -3
  7. package/playground/showcase/src/app/components/ai/ai-prompt-input/ai-prompt-input.html +1 -1
  8. package/playground/showcase/src/app/components/badge/badge.css +0 -0
  9. package/playground/showcase/src/app/components/badge/badge.html +3 -0
  10. package/playground/showcase/src/app/components/badge/badge.ts +24 -0
  11. package/playground/showcase/src/app/components/button/button.html +1 -3
  12. package/playground/showcase/src/app/components/button/button.ts +4 -4
  13. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-content/dropdown-menu-content.css +0 -0
  14. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-content/dropdown-menu-content.html +9 -0
  15. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-content/dropdown-menu-content.spec.ts +23 -0
  16. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-content/dropdown-menu-content.ts +167 -0
  17. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-group/dropdown-menu-group.css +0 -0
  18. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-group/dropdown-menu-group.html +5 -0
  19. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-group/dropdown-menu-group.spec.ts +23 -0
  20. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-group/dropdown-menu-group.ts +10 -0
  21. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-item/dropdown-menu-item.css +0 -0
  22. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-item/dropdown-menu-item.html +6 -0
  23. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-item/dropdown-menu-item.spec.ts +23 -0
  24. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-item/dropdown-menu-item.ts +37 -0
  25. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-label/dropdown-menu-label.css +0 -0
  26. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-label/dropdown-menu-label.html +3 -0
  27. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-label/dropdown-menu-label.spec.ts +23 -0
  28. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-label/dropdown-menu-label.ts +11 -0
  29. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-portal/dropdown-menu-portal.css +0 -0
  30. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-portal/dropdown-menu-portal.html +1 -0
  31. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-portal/dropdown-menu-portal.spec.ts +23 -0
  32. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-portal/dropdown-menu-portal.ts +11 -0
  33. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-separator/dropdown-menu-separator.css +0 -0
  34. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-separator/dropdown-menu-separator.html +1 -0
  35. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-separator/dropdown-menu-separator.spec.ts +23 -0
  36. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-separator/dropdown-menu-separator.ts +11 -0
  37. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub/dropdown-menu-sub.css +0 -0
  38. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub/dropdown-menu-sub.html +3 -0
  39. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub/dropdown-menu-sub.spec.ts +23 -0
  40. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub/dropdown-menu-sub.ts +16 -0
  41. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub-content/dropdown-menu-sub-content.css +0 -0
  42. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub-content/dropdown-menu-sub-content.html +9 -0
  43. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub-content/dropdown-menu-sub-content.spec.ts +23 -0
  44. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub-content/dropdown-menu-sub-content.ts +31 -0
  45. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub-trigger/dropdown-menu-sub-trigger.css +0 -0
  46. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub-trigger/dropdown-menu-sub-trigger.html +13 -0
  47. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub-trigger/dropdown-menu-sub-trigger.spec.ts +23 -0
  48. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub-trigger/dropdown-menu-sub-trigger.ts +40 -0
  49. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub.service.spec.ts +16 -0
  50. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-sub.service.ts +23 -0
  51. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-trigger/dropdown-menu-trigger.css +0 -0
  52. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-trigger/dropdown-menu-trigger.html +8 -0
  53. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-trigger/dropdown-menu-trigger.spec.ts +23 -0
  54. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu-trigger/dropdown-menu-trigger.ts +55 -0
  55. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu.css +0 -0
  56. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu.html +3 -0
  57. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu.service.spec.ts +16 -0
  58. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu.service.ts +31 -0
  59. package/playground/showcase/src/app/components/dropdown-menu/dropdown-menu.ts +69 -0
  60. package/playground/showcase/src/app/components/tooltip/tooltip.ts +195 -80
  61. package/playground/showcase/src/app/pages/documentation/components/components.html +110 -51
  62. package/playground/showcase/src/app/pages/documentation/components/components.routes.ts +4 -0
  63. package/playground/showcase/src/app/pages/documentation/components/dropdown-menu-docs/dropdown-menu-docs.css +1 -0
  64. package/playground/showcase/src/app/pages/documentation/components/dropdown-menu-docs/dropdown-menu-docs.examples.ts +404 -0
  65. package/playground/showcase/src/app/pages/documentation/components/dropdown-menu-docs/dropdown-menu-docs.html +612 -0
  66. package/playground/showcase/src/app/pages/documentation/components/dropdown-menu-docs/dropdown-menu-docs.ts +127 -0
  67. package/playground/showcase/src/app/pages/home/home.html +10 -6
@@ -11,140 +11,198 @@
11
11
  <h1 id="page-title" class="text-3xl sm:text-4xl font-bold text-[#0a0a0a] dark:text-white mb-4 uppercase">
12
12
  <span aria-hidden="true">&gt;_ </span>Components
13
13
  </h1>
14
- <p 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">
15
- Explore our collection of production-ready Angular components. Copy-paste ready TypeScript with accessibility-first design.
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">
16
+ Explore our collection of production-ready Angular components. Copy-paste ready TypeScript with
17
+ accessibility-first design.
16
18
  </p>
17
19
  </header>
18
20
 
19
21
  <!-- Status Notice -->
20
22
  <section class="mb-10" aria-labelledby="status-heading">
21
- <h2 id="status-heading" class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-3">
23
+ <h2 id="status-heading"
24
+ class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-3">
22
25
  [ Status ]
23
26
  </h2>
24
27
  <div class="bg-neutral-100 dark:bg-[#121212] border-2 border-neutral-300 dark:border-neutral-700 p-4">
25
28
  <p class="text-xs sm:text-sm text-neutral-700 dark:text-neutral-300">
26
- More components are being built and will be added soon. All components include full TypeScript support, ARIA accessibility, and Angular SSR compatibility.
29
+ More components are being built and will be added soon. All components include full TypeScript support, ARIA
30
+ accessibility, and Angular SSR compatibility.
27
31
  </p>
28
32
  </div>
29
33
  </section>
30
34
 
31
35
  <!-- Available Components -->
32
36
  <section id="available-components" aria-labelledby="components-heading">
33
- <h2 id="components-heading" class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
37
+ <h2 id="components-heading"
38
+ class="text-[10px] sm:text-xs text-neutral-500 dark:text-neutral-500 uppercase tracking-wider mb-4">
34
39
  [ Available Components ]
35
40
  </h2>
36
41
 
37
42
  <div class="space-y-0 border-2 border-neutral-300 dark:border-neutral-700">
43
+ <!-- Breadcrumb Component -->
44
+ <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article"
45
+ aria-labelledby="breadcrumb-heading">
46
+ <a href="/documentation/components/breadcrumb"
47
+ class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
48
+ aria-label="Navigate to Breadcrumb component documentation with semantic HTML structure, ARIA attributes, and responsive design">
49
+ <div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3">
50
+ <div class="flex-1">
51
+ <div class="flex items-center gap-3 mb-2">
52
+ <h3 id="breadcrumb-heading"
53
+ class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
54
+ <span aria-hidden="true">&gt;_ </span>Breadcrumb
55
+ </h3>
56
+ <span class="text-[10px] font-bold bg-yellow-500 text-black px-2 py-1 uppercase tracking-wider"
57
+ aria-label="Status: Under Construction">
58
+ UNDER CONSTRUCTION
59
+ </span>
60
+ </div>
61
+ <p
62
+ 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">
63
+ Semantic navigation breadcrumbs with proper HTML structure (ol/li), ARIA attributes, responsive
64
+ design, and current page indication. Perfect for hierarchical navigation.
65
+ </p>
66
+ </div>
67
+ </div>
68
+ </a>
69
+ </article>
38
70
 
39
71
  <!-- Button Component -->
40
- <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article" aria-labelledby="button-heading">
72
+ <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article"
73
+ aria-labelledby="button-heading">
41
74
  <a href="/documentation/components/button"
42
- class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
43
- aria-label="Navigate to Button component documentation with code examples, API reference, and accessibility features">
75
+ class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
76
+ aria-label="Navigate to Button component documentation with code examples, API reference, and accessibility features">
44
77
  <div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3">
45
78
  <div class="flex-1">
46
79
  <div class="flex items-center gap-3 mb-2">
47
- <h3 id="button-heading" class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
80
+ <h3 id="button-heading"
81
+ class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
48
82
  <span aria-hidden="true">&gt;_ </span>Button
49
83
  </h3>
50
- <span class="text-[10px] font-bold bg-blue-500 text-white px-2 py-1 uppercase tracking-wider" aria-label="Status: New Component">
84
+ <span class="text-[10px] font-bold bg-blue-500 text-white px-2 py-1 uppercase tracking-wider"
85
+ aria-label="Status: New Component">
51
86
  NEW
52
87
  </span>
53
88
  </div>
54
- <p 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">
55
- Versatile button with variants (primary, secondary), loading states, disabled support, and full ARIA accessibility. Production-ready with comprehensive TypeScript typing.
89
+ <p
90
+ 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">
91
+ Versatile button with variants (primary, secondary), loading states, disabled support, and full ARIA
92
+ accessibility. Production-ready with comprehensive TypeScript typing.
56
93
  </p>
57
94
  </div>
58
95
  </div>
59
96
  </a>
60
97
  </article>
61
98
 
62
- <!-- Input Component -->
63
- <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article" aria-labelledby="input-heading">
64
- <a href="/documentation/components/input"
65
- class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
66
- aria-label="Navigate to Input component documentation with FormGroup integration, validation states, and TypeScript examples">
99
+
100
+ <!-- Carousel Component -->
101
+ <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article"
102
+ aria-labelledby="carousel-heading">
103
+ <a href="/documentation/components/carousel"
104
+ class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
105
+ aria-label="Navigate to Carousel component documentation with touch/swipe gestures, keyboard navigation, and circular buffer algorithm">
67
106
  <div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3">
68
107
  <div class="flex-1">
69
108
  <div class="flex items-center gap-3 mb-2">
70
- <h3 id="input-heading" class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
71
- <span aria-hidden="true">&gt;_ </span>Input
109
+ <h3 id="carousel-heading"
110
+ class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
111
+ <span aria-hidden="true">&gt;_ </span>Carousel
72
112
  </h3>
73
- <span class="text-[10px] font-bold bg-yellow-500 text-black px-2 py-1 uppercase tracking-wider" aria-label="Status: Under Construction">
113
+ <span class="text-[10px] font-bold bg-yellow-500 text-black px-2 py-1 uppercase tracking-wider"
114
+ aria-label="Status: Under Construction">
74
115
  UNDER CONSTRUCTION
75
116
  </span>
76
117
  </div>
77
- <p 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">
78
- Full-featured input with FormGroup integration, validation states (loading, valid, error), password toggle, and type support (text, email, password). Enterprise-grade accessibility.
118
+ <p
119
+ 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">
120
+ Enterprise carousel with circular buffer algorithm, touch/swipe gestures, keyboard navigation (arrows,
121
+ Home, End), dot indicators, and full ARIA compliance. GPU-accelerated transitions.
79
122
  </p>
80
123
  </div>
81
124
  </div>
82
125
  </a>
83
126
  </article>
84
127
 
85
- <!-- Carousel Component -->
86
- <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article" aria-labelledby="carousel-heading">
87
- <a href="/documentation/components/carousel"
88
- class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
89
- aria-label="Navigate to Carousel component documentation with touch/swipe gestures, keyboard navigation, and circular buffer algorithm">
128
+ <!-- Dropdown Menu Component -->
129
+ <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article"
130
+ aria-labelledby="dropdown-menu-heading">
131
+ <a href="/documentation/components/dropdown-menu"
132
+ class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
133
+ aria-label="Navigate to Dropdown Menu component documentation with composable architecture, nested submenus, and viewport-aware positioning">
90
134
  <div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3">
91
135
  <div class="flex-1">
92
136
  <div class="flex items-center gap-3 mb-2">
93
- <h3 id="carousel-heading" class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
94
- <span aria-hidden="true">&gt;_ </span>Carousel
137
+ <h3 id="dropdown-menu-heading"
138
+ class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
139
+ <span aria-hidden="true">&gt;_ </span>Dropdown Menu
95
140
  </h3>
96
- <span class="text-[10px] font-bold bg-yellow-500 text-black px-2 py-1 uppercase tracking-wider" aria-label="Status: Under Construction">
97
- UNDER CONSTRUCTION
141
+ <span class="text-[10px] font-bold bg-blue-500 text-white px-2 py-1 uppercase tracking-wider"
142
+ aria-label="Status: New Component">
143
+ NEW
98
144
  </span>
99
145
  </div>
100
- <p 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">
101
- Enterprise carousel with circular buffer algorithm, touch/swipe gestures, keyboard navigation (arrows, Home, End), dot indicators, and full ARIA compliance. GPU-accelerated transitions.
146
+ <p
147
+ 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">
148
+ Composable dropdown menu with nested submenus, click/hover modes, viewport-aware positioning, smooth animations, and full ARIA accessibility. Inspired by Radix UI and shadcn/ui.
102
149
  </p>
103
150
  </div>
104
151
  </div>
105
152
  </a>
106
153
  </article>
107
154
 
108
- <!-- Breadcrumb Component -->
109
- <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article" aria-labelledby="breadcrumb-heading">
110
- <a href="/documentation/components/breadcrumb"
111
- class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
112
- aria-label="Navigate to Breadcrumb component documentation with semantic HTML structure, ARIA attributes, and responsive design">
155
+ <!-- Input Component -->
156
+ <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article"
157
+ aria-labelledby="input-heading">
158
+ <a href="/documentation/components/input"
159
+ class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
160
+ aria-label="Navigate to Input component documentation with FormGroup integration, validation states, and TypeScript examples">
113
161
  <div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3">
114
162
  <div class="flex-1">
115
163
  <div class="flex items-center gap-3 mb-2">
116
- <h3 id="breadcrumb-heading" class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
117
- <span aria-hidden="true">&gt;_ </span>Breadcrumb
164
+ <h3 id="input-heading"
165
+ class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
166
+ <span aria-hidden="true">&gt;_ </span>Input
118
167
  </h3>
119
- <span class="text-[10px] font-bold bg-yellow-500 text-black px-2 py-1 uppercase tracking-wider" aria-label="Status: Under Construction">
168
+ <span class="text-[10px] font-bold bg-yellow-500 text-black px-2 py-1 uppercase tracking-wider"
169
+ aria-label="Status: Under Construction">
120
170
  UNDER CONSTRUCTION
121
171
  </span>
122
172
  </div>
123
- <p 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">
124
- Semantic navigation breadcrumbs with proper HTML structure (ol/li), ARIA attributes, responsive design, and current page indication. Perfect for hierarchical navigation.
173
+ <p
174
+ 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">
175
+ Full-featured input with FormGroup integration, validation states (loading, valid, error), password
176
+ toggle, and type support (text, email, password). Enterprise-grade accessibility.
125
177
  </p>
126
178
  </div>
127
179
  </div>
128
180
  </a>
129
181
  </article>
130
182
 
183
+
131
184
  <!-- Tooltip Component -->
132
- <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article" aria-labelledby="tooltip-heading">
185
+ <article class="group border-b-2 border-neutral-300 dark:border-neutral-700 last:border-b-0" role="article"
186
+ aria-labelledby="tooltip-heading">
133
187
  <a href="/documentation/components/tooltip"
134
- class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
135
- aria-label="Navigate to Tooltip component documentation with smart auto-positioning, overflow detection, and accessibility features">
188
+ class="block px-4 py-4 sm:py-5 bg-white dark:bg-[#0a0a0a] hover:bg-[#0a0a0a] dark:hover:bg-white transition-all duration-150 cursor-pointer"
189
+ aria-label="Navigate to Tooltip component documentation with smart auto-positioning, overflow detection, and accessibility features">
136
190
  <div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3">
137
191
  <div class="flex-1">
138
192
  <div class="flex items-center gap-3 mb-2">
139
- <h3 id="tooltip-heading" class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
193
+ <h3 id="tooltip-heading"
194
+ class="text-base sm:text-lg font-bold text-[#0a0a0a] dark:text-white group-hover:text-white dark:group-hover:text-[#0a0a0a] uppercase tracking-wide transition-colors duration-150">
140
195
  <span aria-hidden="true">&gt;_ </span>Tooltip
141
196
  </h3>
142
- <span class="text-[10px] font-bold bg-blue-500 text-white px-2 py-1 uppercase tracking-wider" aria-label="Status: New Component">
197
+ <span class="text-[10px] font-bold bg-blue-500 text-white px-2 py-1 uppercase tracking-wider"
198
+ aria-label="Status: New Component">
143
199
  NEW
144
200
  </span>
145
201
  </div>
146
- <p 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">
147
- Smart tooltip with auto-positioning, overflow detection, and smooth animations. Wraps any element with full ARIA support and keyboard navigation. Rich content support coming in v2.0.
202
+ <p
203
+ 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">
204
+ Smart tooltip with auto-positioning, overflow detection, and smooth animations. Wraps any element with
205
+ full ARIA support and keyboard navigation. Rich content support coming in v2.0.
148
206
  </p>
149
207
  </div>
150
208
  </div>
@@ -157,7 +215,8 @@
157
215
  <!-- Ad Space -->
158
216
  <aside class="mt-12" aria-label="Advertisement">
159
217
  <div class="w-auto h-auto">
160
- <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4944285767597175"
218
+ <script async
219
+ src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4944285767597175"
161
220
  crossorigin="anonymous"></script>
162
221
  <ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-gw-3+1f-3d+2z"
163
222
  data-ad-client="ca-pub-4944285767597175" data-ad-slot="4427496130"></ins>
@@ -24,5 +24,9 @@ export const componentsRoutes: Routes = [
24
24
  {
25
25
  path: 'tooltip',
26
26
  loadComponent: () => import('./tooltip-docs/tooltip-docs').then(m => m.TooltipDocs)
27
+ },
28
+ {
29
+ path: 'dropdown-menu',
30
+ loadComponent: () => import('./dropdown-menu-docs/dropdown-menu-docs').then(m => m.DropdownMenuDocs)
27
31
  }
28
32
  ];