@veristone/nuxt-v-app 0.1.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 (136) hide show
  1. package/README.md +42 -0
  2. package/app/app.vue +7 -0
  3. package/app/assets/css/v-app.css +313 -0
  4. package/app/components/V/A/Badge.vue +75 -0
  5. package/app/components/V/A/Btn/Add.vue +17 -0
  6. package/app/components/V/A/Btn/Back.vue +25 -0
  7. package/app/components/V/A/Btn/ConfirmDelete.vue +45 -0
  8. package/app/components/V/A/Btn/Edit.vue +35 -0
  9. package/app/components/V/A/Btn/Export.vue +28 -0
  10. package/app/components/V/A/Btn/Refresh.vue +21 -0
  11. package/app/components/V/A/Btn/Submit.vue +45 -0
  12. package/app/components/V/A/Btn/View.vue +23 -0
  13. package/app/components/V/A/Card.legacy.vue +291 -0
  14. package/app/components/V/A/Card.vue +108 -0
  15. package/app/components/V/A/CompanyMenu.vue +83 -0
  16. package/app/components/V/A/Data/KeyValue.vue +98 -0
  17. package/app/components/V/A/Data/StatusBadge.vue +44 -0
  18. package/app/components/V/A/DataField.vue +140 -0
  19. package/app/components/V/A/DataGrid.vue +43 -0
  20. package/app/components/V/A/DataTable.vue +144 -0
  21. package/app/components/V/A/EmptyState.vue +154 -0
  22. package/app/components/V/A/Fmt/Currency.vue +36 -0
  23. package/app/components/V/A/Fmt/DateTime.vue +34 -0
  24. package/app/components/V/A/Fmt/Percent.vue +47 -0
  25. package/app/components/V/A/LoadingState.vue +140 -0
  26. package/app/components/V/A/MetricCard.vue +129 -0
  27. package/app/components/V/A/Modal/Base.vue +195 -0
  28. package/app/components/V/A/Modal/Confirm.vue +92 -0
  29. package/app/components/V/A/Modal/Form.vue +105 -0
  30. package/app/components/V/A/Navigation.vue +110 -0
  31. package/app/components/V/A/QuickActions.vue +169 -0
  32. package/app/components/V/A/Slide.vue +109 -0
  33. package/app/components/V/A/Slideover.vue +259 -0
  34. package/app/components/V/A/State/Empty.vue +20 -0
  35. package/app/components/V/A/State/Error.vue +34 -0
  36. package/app/components/V/A/State/Loading.vue +33 -0
  37. package/app/components/V/A/StatsCard.vue +215 -0
  38. package/app/components/V/A/StatusBadge.vue +215 -0
  39. package/app/components/V/A/Table.vue +674 -0
  40. package/app/components/V/A/UserMenu.vue +127 -0
  41. package/app/components/V/A/WelcomeHeader.vue +96 -0
  42. package/app/components/V/Modal.vue +36 -0
  43. package/app/components/Va/Blocks/VaBlockGridCharts.vue +32 -0
  44. package/app/components/Va/Blocks/VaBlockGridKPI.vue +32 -0
  45. package/app/components/Va/Blocks/VaBlockGridTables.vue +23 -0
  46. package/app/components/Va/Blocks/VaBlockKpiGrid.vue +8 -0
  47. package/app/components/Va/Blocks/VaBlockSessionFilterBar.vue +8 -0
  48. package/app/components/Va/Cards/VaCardDonutChart.vue +59 -0
  49. package/app/components/Va/Cards/VaCardHeader.vue +10 -0
  50. package/app/components/Va/Cards/VaCardKpi.vue +17 -0
  51. package/app/components/Va/Cards/VaCardKpi2.vue +55 -0
  52. package/app/components/Va/Cards/VaCardLatestOrders.vue +82 -0
  53. package/app/components/Va/Cards/VaCardPopularProducts.vue +88 -0
  54. package/app/components/Va/Cards/VaCardRevenueBarChart.vue +49 -0
  55. package/app/components/Va/Cards/VaCardSubtitle.vue +5 -0
  56. package/app/components/Va/Cards/VaCardTitle.vue +5 -0
  57. package/app/components/Va/Cards/VaCardWithActiveUsers.vue +41 -0
  58. package/app/components/Va/Cards/VaCardWithChart.vue +135 -0
  59. package/app/components/Va/Cards/VaCardWithChartBlock.vue +26 -0
  60. package/app/components/Va/Cards/VaCardWithIndicator.vue +39 -0
  61. package/app/components/Va/Cards/VaCardWithProgressCircle.vue +34 -0
  62. package/app/components/Va/Cards/types.ts +11 -0
  63. package/app/components/Va/Charts/VaChartAppPerformanceBar.vue +118 -0
  64. package/app/components/Va/Charts/VaChartAppPerformanceBarChart.vue +118 -0
  65. package/app/components/Va/Charts/VaChartAreaMini.vue +127 -0
  66. package/app/components/Va/Charts/VaChartBarMini.vue +68 -0
  67. package/app/components/Va/Charts/VaChartCardinalMulti.vue +108 -0
  68. package/app/components/Va/Charts/VaChartColorBarChart.vue +78 -0
  69. package/app/components/Va/Charts/VaChartDonutHalf.vue +35 -0
  70. package/app/components/Va/Charts/VaChartDonutMini.vue +77 -0
  71. package/app/components/Va/Charts/VaChartExpensesBar.vue +58 -0
  72. package/app/components/Va/Charts/VaChartFinanceSummary.vue +96 -0
  73. package/app/components/Va/Charts/VaChartGoogleSearchConsole.vue +90 -0
  74. package/app/components/Va/Charts/VaChartIncomeBar.vue +82 -0
  75. package/app/components/Va/Charts/VaChartLegend.vue +25 -0
  76. package/app/components/Va/Charts/VaChartLineMini.vue +205 -0
  77. package/app/components/Va/Charts/VaChartRealtimeTraffic.vue +182 -0
  78. package/app/components/Va/Charts/VaChartRevenue.vue +43 -0
  79. package/app/components/Va/Charts/VaChartRevenueLine.vue +42 -0
  80. package/app/components/Va/Charts/VaChartRevenuevsCost.vue +84 -0
  81. package/app/components/Va/Charts/VaChartSearchIntent.vue +179 -0
  82. package/app/components/Va/Charts/VaChartSpendingTrend.vue +127 -0
  83. package/app/components/Va/Charts/VaChartStackedHorizontal.vue +64 -0
  84. package/app/components/Va/Charts/VaChartStepMinimal.vue +109 -0
  85. package/app/components/Va/Charts/VaChartStockComparisonLine.vue +86 -0
  86. package/app/components/Va/Charts/VaChartStocksPortfolioLine.vue +161 -0
  87. package/app/components/Va/Charts/VaChartStocksSectorLine.vue +223 -0
  88. package/app/components/Va/Charts/VaChartTasksCategories.vue +96 -0
  89. package/app/components/Va/Charts/VaChartTasksProgress.vue +130 -0
  90. package/app/components/Va/Charts/VaChartTrafficOverview.vue +112 -0
  91. package/app/components/Va/Charts/VaChartWebPerformanceLineChart.vue +114 -0
  92. package/app/components/Va/Charts/VaChartWinLostBar.vue +110 -0
  93. package/app/components/Va/Charts/VaChartWinLostDonut.vue +107 -0
  94. package/app/components/Va/Charts/VaChartWinLostLine.vue +111 -0
  95. package/app/components/Va/Charts/types.ts +10 -0
  96. package/app/components/Va/Dashboard/Navigation/types.ts +8 -0
  97. package/app/components/Va/Dashboard/VaDashboardKPICard.vue +31 -0
  98. package/app/components/Va/Dashboard/VaDashboardNavigation.vue +50 -0
  99. package/app/components/Va/Dashboard/VaDashboardPricePlan.vue +102 -0
  100. package/app/components/Va/Dashboard/VaDashboardUsageChart.vue +84 -0
  101. package/app/components/Va/Dashboard/VaDashboardUsageRequestChart.vue +46 -0
  102. package/app/components/Va/Layout/NotificationsSlideover.vue +169 -0
  103. package/app/components/Va/Layout/SideNav/types.ts +5 -0
  104. package/app/components/Va/Layout/SideNav.vue +108 -0
  105. package/app/components/Va/Layout/TeamsMenu.vue +57 -0
  106. package/app/components/Va/Layout/UserMenu.vue +57 -0
  107. package/app/composables/useDashboard.ts +25 -0
  108. package/app/composables/useVAAnimation.ts +324 -0
  109. package/app/composables/useVAUtils.ts +118 -0
  110. package/app/composables/useVCrud.ts +647 -0
  111. package/app/composables/useVFetch.ts +46 -0
  112. package/app/composables/useVFileUpload.ts +45 -0
  113. package/app/composables/useVToast.ts +73 -0
  114. package/app/composables/useXATableColumns.ts +456 -0
  115. package/app/data/BillingStats.ts +65 -0
  116. package/app/data/SearchData.ts +58 -0
  117. package/app/data/TasksData.ts +101 -0
  118. package/app/data/dashboardData.ts +113 -0
  119. package/app/layouts/default.vue +171 -0
  120. package/app/layouts/legacy.vue +61 -0
  121. package/app/pages/playground/base.vue +498 -0
  122. package/app/pages/playground/blocks.vue +108 -0
  123. package/app/pages/playground/buttons.vue +237 -0
  124. package/app/pages/playground/cards.vue +326 -0
  125. package/app/pages/playground/charts.vue +338 -0
  126. package/app/pages/playground/dashboard.vue +315 -0
  127. package/app/pages/playground/formatters.vue +329 -0
  128. package/app/pages/playground/index.vue +109 -0
  129. package/app/pages/playground/layout.vue +159 -0
  130. package/app/pages/playground/modals.vue +606 -0
  131. package/app/pages/playground/states.vue +282 -0
  132. package/app/pages/playground/tables.vue +618 -0
  133. package/app/pages/test-layout.vue +10 -0
  134. package/nuxt.config.ts +12 -0
  135. package/package.json +71 -0
  136. package/tsconfig.json +18 -0
@@ -0,0 +1,338 @@
1
+ <template>
2
+ <UDashboardPanel grow>
3
+ <UContainer>
4
+ <div class="py-8">
5
+ <h1 class="text-3xl font-bold mb-4">Chart Components Showcase</h1>
6
+ <p class="text-gray-600 dark:text-gray-400 mb-8">
7
+ These chart components use embedded demo data. Wrap them in ClientOnly for SSR compatibility.
8
+ </p>
9
+
10
+ <!-- Mini Charts -->
11
+ <h2 class="text-2xl font-semibold mb-4 mt-8">Mini Charts</h2>
12
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Compact chart components for dashboards and summaries.</p>
13
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
14
+ <UCard>
15
+ <template #header>
16
+ <h3 class="text-sm font-semibold">VaChartAreaMini</h3>
17
+ </template>
18
+ <ClientOnly>
19
+ <VaChartAreaMini />
20
+ </ClientOnly>
21
+ </UCard>
22
+
23
+ <UCard>
24
+ <template #header>
25
+ <h3 class="text-sm font-semibold">VaChartBarMini</h3>
26
+ </template>
27
+ <ClientOnly>
28
+ <VaChartBarMini />
29
+ </ClientOnly>
30
+ </UCard>
31
+
32
+ <UCard>
33
+ <template #header>
34
+ <h3 class="text-sm font-semibold">VaChartLineMini</h3>
35
+ </template>
36
+ <ClientOnly>
37
+ <VaChartLineMini />
38
+ </ClientOnly>
39
+ </UCard>
40
+
41
+ <UCard>
42
+ <template #header>
43
+ <h3 class="text-sm font-semibold">VaChartDonutMini</h3>
44
+ </template>
45
+ <ClientOnly>
46
+ <VaChartDonutMini />
47
+ </ClientOnly>
48
+ </UCard>
49
+
50
+ <UCard>
51
+ <template #header>
52
+ <h3 class="text-sm font-semibold">VaChartDonutHalf</h3>
53
+ </template>
54
+ <ClientOnly>
55
+ <VaChartDonutHalf />
56
+ </ClientOnly>
57
+ </UCard>
58
+
59
+ <UCard>
60
+ <template #header>
61
+ <h3 class="text-sm font-semibold">VaChartStepMinimal</h3>
62
+ </template>
63
+ <ClientOnly>
64
+ <VaChartStepMinimal />
65
+ </ClientOnly>
66
+ </UCard>
67
+ </div>
68
+
69
+ <!-- Revenue & Financial Charts -->
70
+ <h2 class="text-2xl font-semibold mb-4 mt-8">Revenue & Financial Charts</h2>
71
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Charts for revenue tracking, expenses, and financial analysis.</p>
72
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
73
+ <UCard>
74
+ <template #header>
75
+ <h3 class="text-sm font-semibold">VaChartRevenue</h3>
76
+ </template>
77
+ <ClientOnly>
78
+ <VaChartRevenue />
79
+ </ClientOnly>
80
+ </UCard>
81
+
82
+ <UCard>
83
+ <template #header>
84
+ <h3 class="text-sm font-semibold">VaChartRevenueLine</h3>
85
+ </template>
86
+ <ClientOnly>
87
+ <VaChartRevenueLine />
88
+ </ClientOnly>
89
+ </UCard>
90
+
91
+ <UCard>
92
+ <template #header>
93
+ <h3 class="text-sm font-semibold">VaChartRevenuevsCost</h3>
94
+ </template>
95
+ <ClientOnly>
96
+ <VaChartRevenuevsCost />
97
+ </ClientOnly>
98
+ </UCard>
99
+
100
+ <UCard>
101
+ <template #header>
102
+ <h3 class="text-sm font-semibold">VaChartFinanceSummary</h3>
103
+ </template>
104
+ <ClientOnly>
105
+ <VaChartFinanceSummary />
106
+ </ClientOnly>
107
+ </UCard>
108
+
109
+ <UCard>
110
+ <template #header>
111
+ <h3 class="text-sm font-semibold">VaChartExpensesBar</h3>
112
+ </template>
113
+ <ClientOnly>
114
+ <VaChartExpensesBar />
115
+ </ClientOnly>
116
+ </UCard>
117
+
118
+ <UCard>
119
+ <template #header>
120
+ <h3 class="text-sm font-semibold">VaChartIncomeBar</h3>
121
+ </template>
122
+ <ClientOnly>
123
+ <VaChartIncomeBar />
124
+ </ClientOnly>
125
+ </UCard>
126
+
127
+ <UCard>
128
+ <template #header>
129
+ <h3 class="text-sm font-semibold">VaChartSpendingTrend</h3>
130
+ </template>
131
+ <ClientOnly>
132
+ <VaChartSpendingTrend />
133
+ </ClientOnly>
134
+ </UCard>
135
+
136
+ <UCard>
137
+ <template #header>
138
+ <h3 class="text-sm font-semibold">VaChartColorBarChart</h3>
139
+ </template>
140
+ <ClientOnly>
141
+ <VaChartColorBarChart />
142
+ </ClientOnly>
143
+ </UCard>
144
+ </div>
145
+
146
+ <!-- Performance & Analytics Charts -->
147
+ <h2 class="text-2xl font-semibold mb-4 mt-8">Performance & Analytics</h2>
148
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Charts for application performance, traffic, and analytics metrics.</p>
149
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
150
+ <UCard>
151
+ <template #header>
152
+ <h3 class="text-sm font-semibold">VaChartAppPerformanceBar</h3>
153
+ </template>
154
+ <ClientOnly>
155
+ <VaChartAppPerformanceBar />
156
+ </ClientOnly>
157
+ </UCard>
158
+
159
+ <UCard>
160
+ <template #header>
161
+ <h3 class="text-sm font-semibold">VaChartAppPerformanceBarChart</h3>
162
+ </template>
163
+ <ClientOnly>
164
+ <VaChartAppPerformanceBarChart />
165
+ </ClientOnly>
166
+ </UCard>
167
+
168
+ <UCard>
169
+ <template #header>
170
+ <h3 class="text-sm font-semibold">VaChartWebPerformanceLineChart</h3>
171
+ </template>
172
+ <ClientOnly>
173
+ <VaChartWebPerformanceLineChart />
174
+ </ClientOnly>
175
+ </UCard>
176
+
177
+ <UCard>
178
+ <template #header>
179
+ <h3 class="text-sm font-semibold">VaChartTrafficOverview</h3>
180
+ </template>
181
+ <ClientOnly>
182
+ <VaChartTrafficOverview />
183
+ </ClientOnly>
184
+ </UCard>
185
+
186
+ <UCard>
187
+ <template #header>
188
+ <h3 class="text-sm font-semibold">VaChartRealtimeTraffic</h3>
189
+ </template>
190
+ <ClientOnly>
191
+ <VaChartRealtimeTraffic />
192
+ </ClientOnly>
193
+ </UCard>
194
+
195
+ <UCard>
196
+ <template #header>
197
+ <h3 class="text-sm font-semibold">VaChartGoogleSearchConsole</h3>
198
+ </template>
199
+ <ClientOnly>
200
+ <VaChartGoogleSearchConsole />
201
+ </ClientOnly>
202
+ </UCard>
203
+
204
+ <UCard>
205
+ <template #header>
206
+ <h3 class="text-sm font-semibold">VaChartSearchIntent</h3>
207
+ </template>
208
+ <ClientOnly>
209
+ <VaChartSearchIntent />
210
+ </ClientOnly>
211
+ </UCard>
212
+ </div>
213
+
214
+ <!-- Stock & Multi-Series Charts -->
215
+ <h2 class="text-2xl font-semibold mb-4 mt-8">Stock & Multi-Series</h2>
216
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Charts for stock data, portfolio comparison, and multi-series visualization.</p>
217
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
218
+ <UCard>
219
+ <template #header>
220
+ <h3 class="text-sm font-semibold">VaChartCardinalMulti</h3>
221
+ </template>
222
+ <ClientOnly>
223
+ <VaChartCardinalMulti />
224
+ </ClientOnly>
225
+ </UCard>
226
+
227
+ <UCard>
228
+ <template #header>
229
+ <h3 class="text-sm font-semibold">VaChartStockComparisonLine</h3>
230
+ </template>
231
+ <ClientOnly>
232
+ <VaChartStockComparisonLine />
233
+ </ClientOnly>
234
+ </UCard>
235
+
236
+ <UCard>
237
+ <template #header>
238
+ <h3 class="text-sm font-semibold">VaChartStocksPortfolioLine</h3>
239
+ </template>
240
+ <ClientOnly>
241
+ <VaChartStocksPortfolioLine />
242
+ </ClientOnly>
243
+ </UCard>
244
+
245
+ <UCard>
246
+ <template #header>
247
+ <h3 class="text-sm font-semibold">VaChartStocksSectorLine</h3>
248
+ </template>
249
+ <ClientOnly>
250
+ <VaChartStocksSectorLine />
251
+ </ClientOnly>
252
+ </UCard>
253
+
254
+ <UCard>
255
+ <template #header>
256
+ <h3 class="text-sm font-semibold">VaChartStackedHorizontal</h3>
257
+ </template>
258
+ <ClientOnly>
259
+ <VaChartStackedHorizontal />
260
+ </ClientOnly>
261
+ </UCard>
262
+ </div>
263
+
264
+ <!-- Task & Win/Loss Charts -->
265
+ <h2 class="text-2xl font-semibold mb-4 mt-8">Tasks & Win/Loss</h2>
266
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Charts for task progress tracking and win/loss analysis.</p>
267
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
268
+ <UCard>
269
+ <template #header>
270
+ <h3 class="text-sm font-semibold">VaChartTasksProgress</h3>
271
+ </template>
272
+ <ClientOnly>
273
+ <VaChartTasksProgress />
274
+ </ClientOnly>
275
+ </UCard>
276
+
277
+ <UCard>
278
+ <template #header>
279
+ <h3 class="text-sm font-semibold">VaChartTasksCategories</h3>
280
+ </template>
281
+ <ClientOnly>
282
+ <VaChartTasksCategories />
283
+ </ClientOnly>
284
+ </UCard>
285
+
286
+ <UCard>
287
+ <template #header>
288
+ <h3 class="text-sm font-semibold">VaChartWinLostBar</h3>
289
+ </template>
290
+ <ClientOnly>
291
+ <VaChartWinLostBar />
292
+ </ClientOnly>
293
+ </UCard>
294
+
295
+ <UCard>
296
+ <template #header>
297
+ <h3 class="text-sm font-semibold">VaChartWinLostDonut</h3>
298
+ </template>
299
+ <ClientOnly>
300
+ <VaChartWinLostDonut />
301
+ </ClientOnly>
302
+ </UCard>
303
+
304
+ <UCard>
305
+ <template #header>
306
+ <h3 class="text-sm font-semibold">VaChartWinLostLine</h3>
307
+ </template>
308
+ <ClientOnly>
309
+ <VaChartWinLostLine />
310
+ </ClientOnly>
311
+ </UCard>
312
+ </div>
313
+
314
+ <!-- Legend Component -->
315
+ <h2 class="text-2xl font-semibold mb-4 mt-8">Chart Utilities</h2>
316
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Utility components for chart legends and additional chart features.</p>
317
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
318
+ <UCard>
319
+ <template #header>
320
+ <h3 class="text-sm font-semibold">VaChartLegend</h3>
321
+ </template>
322
+ <ClientOnly>
323
+ <VaChartLegend :items="legendItems" />
324
+ </ClientOnly>
325
+ </UCard>
326
+ </div>
327
+ </div>
328
+ </UContainer>
329
+ </UDashboardPanel>
330
+ </template>
331
+
332
+ <script setup lang="ts">
333
+ const legendItems = [
334
+ { name: 'Revenue', color: '#3b82f6' },
335
+ { name: 'Expenses', color: '#ef4444' },
336
+ { name: 'Profit', color: '#22c55e' }
337
+ ]
338
+ </script>
@@ -0,0 +1,315 @@
1
+ <template>
2
+ <UDashboardPanel grow>
3
+ <UContainer>
4
+ <div class="py-8">
5
+ <h1 class="text-3xl font-bold mb-4">Dashboard Components Showcase</h1>
6
+ <p class="text-gray-600 dark:text-gray-400 mb-8">
7
+ Dashboard-specific components for navigation, KPIs, pricing, and usage visualization.
8
+ </p>
9
+
10
+ <!-- VaDashboardNavigation -->
11
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VaDashboardNavigation</h2>
12
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Navigation component for dashboard sidebars and top menus with icon support.</p>
13
+ <UCard>
14
+ <template #header>
15
+ <h3 class="font-semibold">Standard Navigation</h3>
16
+ </template>
17
+ <ClientOnly>
18
+ <VaDashboardNavigation :sections="mockNavSections" />
19
+ </ClientOnly>
20
+ </UCard>
21
+
22
+ <!-- VaDashboardKPICard -->
23
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VaDashboardKPICard</h2>
24
+ <p class="text-gray-600 dark:text-gray-400 mb-4">KPI cards displaying metrics with trend indicators, icons, and percentage changes.</p>
25
+ <UCard>
26
+ <template #header>
27
+ <h3 class="font-semibold">KPI Examples</h3>
28
+ </template>
29
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
30
+ <ClientOnly>
31
+ <VaDashboardKPICard
32
+ title="Total Revenue"
33
+ :value="125000"
34
+ :change="12.5"
35
+ trend="up"
36
+ icon="i-heroicons-currency-dollar"
37
+ />
38
+ </ClientOnly>
39
+
40
+ <ClientOnly>
41
+ <VaDashboardKPICard
42
+ title="Active Users"
43
+ :value="8432"
44
+ :change="-3.2"
45
+ trend="down"
46
+ icon="i-heroicons-users"
47
+ />
48
+ </ClientOnly>
49
+
50
+ <ClientOnly>
51
+ <VaDashboardKPICard
52
+ title="Conversion Rate"
53
+ :value="3.45"
54
+ :change="0.8"
55
+ trend="up"
56
+ icon="i-heroicons-chart-bar"
57
+ suffix="%"
58
+ />
59
+ </ClientOnly>
60
+
61
+ <ClientOnly>
62
+ <VaDashboardKPICard
63
+ title="Avg Order Value"
64
+ :value="89.50"
65
+ :change="5.2"
66
+ trend="up"
67
+ icon="i-heroicons-shopping-cart"
68
+ prefix="$"
69
+ />
70
+ </ClientOnly>
71
+ </div>
72
+ </UCard>
73
+
74
+ <!-- VAStatsCard (HubSpot Style) -->
75
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VAStatsCard - HubSpot Style</h2>
76
+ <p class="text-gray-600 dark:text-gray-400 mb-4">HubSpot-style stats cards with accent colors and trend visualization.</p>
77
+ <UCard>
78
+ <template #header>
79
+ <h3 class="font-semibold">Stats Card Variations</h3>
80
+ </template>
81
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
82
+ <ClientOnly>
83
+ <VAStatsCard
84
+ label="Monthly Revenue"
85
+ :value="58981"
86
+ :previous-value="52000"
87
+ format="currency"
88
+ icon="i-lucide-dollar-sign"
89
+ accent-color="coral"
90
+ />
91
+ </ClientOnly>
92
+
93
+ <ClientOnly>
94
+ <VAStatsCard
95
+ label="New Signups"
96
+ :value="1234"
97
+ :previous-value="1100"
98
+ icon="i-lucide-user-plus"
99
+ accent-color="teal"
100
+ />
101
+ </ClientOnly>
102
+
103
+ <ClientOnly>
104
+ <VAStatsCard
105
+ label="Churn Rate"
106
+ :value="2.1"
107
+ :previous-value="2.8"
108
+ format="percentage"
109
+ icon="i-lucide-trending-down"
110
+ accent-color="warning"
111
+ :invert-trend="true"
112
+ />
113
+ </ClientOnly>
114
+
115
+ <ClientOnly>
116
+ <VAStatsCard
117
+ label="NPS Score"
118
+ :value="72"
119
+ :previous-value="68"
120
+ icon="i-lucide-star"
121
+ accent-color="success"
122
+ />
123
+ </ClientOnly>
124
+ </div>
125
+ </UCard>
126
+
127
+ <!-- VaDashboardPricePlan -->
128
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VaDashboardPricePlan</h2>
129
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Pricing plan cards with features list and call-to-action buttons.</p>
130
+ <UCard>
131
+ <template #header>
132
+ <h3 class="font-semibold">Pricing Tiers</h3>
133
+ </template>
134
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
135
+ <ClientOnly>
136
+ <VaDashboardPricePlan
137
+ name="Starter"
138
+ :price="9.99"
139
+ period="month"
140
+ :features="starterFeatures"
141
+ buttonText="Get Started"
142
+ />
143
+ </ClientOnly>
144
+
145
+ <ClientOnly>
146
+ <VaDashboardPricePlan
147
+ name="Pro"
148
+ :price="29.99"
149
+ period="month"
150
+ :features="proFeatures"
151
+ buttonText="Upgrade to Pro"
152
+ highlighted
153
+ />
154
+ </ClientOnly>
155
+
156
+ <ClientOnly>
157
+ <VaDashboardPricePlan
158
+ name="Enterprise"
159
+ :price="99.99"
160
+ period="month"
161
+ :features="enterpriseFeatures"
162
+ buttonText="Contact Sales"
163
+ />
164
+ </ClientOnly>
165
+ </div>
166
+ </UCard>
167
+
168
+ <!-- VaDashboardUsageChart -->
169
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VaDashboardUsageChart</h2>
170
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Usage chart showing current consumption against limits.</p>
171
+ <UCard>
172
+ <template #header>
173
+ <h3 class="font-semibold">API Usage Example</h3>
174
+ </template>
175
+ <ClientOnly>
176
+ <VaDashboardUsageChart
177
+ title="API Usage"
178
+ :data="mockUsageData"
179
+ :limit="10000"
180
+ :current="7500"
181
+ />
182
+ </ClientOnly>
183
+ </UCard>
184
+
185
+ <!-- VaDashboardUsageRequestChart -->
186
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VaDashboardUsageRequestChart</h2>
187
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Request volume chart showing traffic patterns over time.</p>
188
+ <UCard>
189
+ <template #header>
190
+ <h3 class="font-semibold">Request Volume Example</h3>
191
+ </template>
192
+ <ClientOnly>
193
+ <VaDashboardUsageRequestChart
194
+ title="Request Volume"
195
+ :data="mockRequestData"
196
+ :total="125000"
197
+ />
198
+ </ClientOnly>
199
+ </UCard>
200
+
201
+ <!-- Dashboard Layout Example -->
202
+ <h2 class="text-2xl font-semibold mb-4 mt-8">Full Dashboard Layout</h2>
203
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Complete dashboard layout combining multiple components.</p>
204
+ <UCard>
205
+ <template #header>
206
+ <h3 class="font-semibold">Complete Dashboard Example</h3>
207
+ </template>
208
+ <div class="space-y-6">
209
+ <!-- Stats Row -->
210
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
211
+ <ClientOnly>
212
+ <VAStatsCard
213
+ label="Total Sales"
214
+ :value="124500"
215
+ :previous-value="115000"
216
+ format="currency"
217
+ icon="i-lucide-shopping-bag"
218
+ accent-color="coral"
219
+ />
220
+ </ClientOnly>
221
+ <ClientOnly>
222
+ <VAStatsCard
223
+ label="Orders"
224
+ :value="1842"
225
+ :previous-value="1650"
226
+ icon="i-lucide-package"
227
+ accent-color="teal"
228
+ />
229
+ </ClientOnly>
230
+ <ClientOnly>
231
+ <VAStatsCard
232
+ label="Customers"
233
+ :value="3421"
234
+ :previous-value="3200"
235
+ icon="i-lucide-users"
236
+ accent-color="navy"
237
+ />
238
+ </ClientOnly>
239
+ <ClientOnly>
240
+ <VAStatsCard
241
+ label="Returns"
242
+ :value="23"
243
+ :previous-value="31"
244
+ icon="i-lucide-undo-2"
245
+ accent-color="amber"
246
+ :invert-trend="true"
247
+ />
248
+ </ClientOnly>
249
+ </div>
250
+
251
+ <!-- Charts Row -->
252
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
253
+ <ClientOnly>
254
+ <VACard title="Revenue Trend" icon="i-lucide-trending-up">
255
+ <ClientOnly>
256
+ <VaChartRevenueLine />
257
+ </ClientOnly>
258
+ </VACard>
259
+ </ClientOnly>
260
+
261
+ <ClientOnly>
262
+ <VACard title="Sales Distribution" icon="i-lucide-pie-chart">
263
+ <ClientOnly>
264
+ <VaChartDonutHalf />
265
+ </ClientOnly>
266
+ </VACard>
267
+ </ClientOnly>
268
+ </div>
269
+ </div>
270
+ </UCard>
271
+ </div>
272
+ </UContainer>
273
+ </UDashboardPanel>
274
+ </template>
275
+
276
+ <script setup lang="ts">
277
+ definePageMeta({
278
+ title: 'Dashboard Components'
279
+ })
280
+
281
+ const mockNavSections = [
282
+ {
283
+ label: 'Main',
284
+ children: [
285
+ { label: 'Dashboard', leadingIcon: 'i-heroicons-home', href: '/dashboard' },
286
+ { label: 'Analytics', leadingIcon: 'i-heroicons-chart-bar', href: '/analytics' },
287
+ { label: 'Reports', leadingIcon: 'i-heroicons-document-text', href: '/reports' },
288
+ { label: 'Settings', leadingIcon: 'i-heroicons-cog', href: '/settings' }
289
+ ]
290
+ }
291
+ ]
292
+
293
+ const starterFeatures = ['5 User Accounts', '10 GB Storage', '1,000 API Calls/month', 'Email Support']
294
+ const proFeatures = ['20 User Accounts', '50 GB Storage', '10,000 API Calls/month', 'Priority Support', 'Advanced Analytics']
295
+ const enterpriseFeatures = ['Unlimited Users', 'Custom Storage', 'Unlimited API Calls', '24/7 Dedicated Support', 'Custom Integrations', 'SLA']
296
+
297
+ const mockUsageData = [
298
+ { date: '2024-01-01', value: 1200 },
299
+ { date: '2024-01-02', value: 1500 },
300
+ { date: '2024-01-03', value: 1800 },
301
+ { date: '2024-01-04', value: 1600 },
302
+ { date: '2024-01-05', value: 2100 },
303
+ { date: '2024-01-06', value: 1900 },
304
+ { date: '2024-01-07', value: 2300 }
305
+ ]
306
+
307
+ const mockRequestData = [
308
+ { hour: '00:00', requests: 450 },
309
+ { hour: '04:00', requests: 320 },
310
+ { hour: '08:00', requests: 1200 },
311
+ { hour: '12:00', requests: 1800 },
312
+ { hour: '16:00', requests: 1500 },
313
+ { hour: '20:00', requests: 980 }
314
+ ]
315
+ </script>