@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,282 @@
1
+ <script setup lang="ts">
2
+ definePageMeta({
3
+ title: 'State Components'
4
+ })
5
+
6
+ const handleRetry = () => {
7
+ console.log('Retry clicked')
8
+ }
9
+
10
+ const handleAction = () => {
11
+ console.log('Action clicked')
12
+ }
13
+ </script>
14
+
15
+ <template>
16
+ <UDashboardPanel grow>
17
+ <UContainer>
18
+ <div class="py-8">
19
+ <h1 class="text-3xl font-bold mb-4">State Components Showcase</h1>
20
+ <p class="text-gray-600 dark:text-gray-400 mb-8">
21
+ Loading, empty, and error state components for consistent UI feedback.
22
+ </p>
23
+
24
+ <!-- VAStateLoading Section -->
25
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VAStateLoading</h2>
26
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Loading state with multiple variants.</p>
27
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8">
28
+ <UCard>
29
+ <template #header>
30
+ <h3 class="font-semibold">Rows Variant (Default)</h3>
31
+ </template>
32
+ <ClientOnly>
33
+ <VAStateLoading variant="rows" :rows="4" />
34
+ </ClientOnly>
35
+ </UCard>
36
+
37
+ <UCard>
38
+ <template #header>
39
+ <h3 class="font-semibold">Spinner Variant</h3>
40
+ </template>
41
+ <ClientOnly>
42
+ <VAStateLoading variant="spinner" message="Loading data..." />
43
+ </ClientOnly>
44
+ </UCard>
45
+
46
+ <UCard>
47
+ <template #header>
48
+ <h3 class="font-semibold">Card Variant</h3>
49
+ </template>
50
+ <ClientOnly>
51
+ <VAStateLoading variant="card" />
52
+ </ClientOnly>
53
+ </UCard>
54
+ </div>
55
+
56
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8">
57
+ <UCard>
58
+ <template #header>
59
+ <h3 class="font-semibold">Small Spinner</h3>
60
+ </template>
61
+ <ClientOnly>
62
+ <VAStateLoading variant="spinner" size="sm" message="Please wait..." />
63
+ </ClientOnly>
64
+ </UCard>
65
+
66
+ <UCard>
67
+ <template #header>
68
+ <h3 class="font-semibold">Medium Spinner</h3>
69
+ </template>
70
+ <ClientOnly>
71
+ <VAStateLoading variant="spinner" size="md" message="Loading..." />
72
+ </ClientOnly>
73
+ </UCard>
74
+
75
+ <UCard>
76
+ <template #header>
77
+ <h3 class="font-semibold">Large Spinner</h3>
78
+ </template>
79
+ <ClientOnly>
80
+ <VAStateLoading variant="spinner" size="lg" message="Fetching data..." />
81
+ </ClientOnly>
82
+ </UCard>
83
+ </div>
84
+
85
+ <!-- VAStateEmpty Section -->
86
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VAStateEmpty</h2>
87
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Empty state with icon, title, description, and optional action.</p>
88
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
89
+ <UCard>
90
+ <template #header>
91
+ <h3 class="font-semibold">Default Empty State</h3>
92
+ </template>
93
+ <ClientOnly>
94
+ <VAStateEmpty />
95
+ </ClientOnly>
96
+ </UCard>
97
+
98
+ <UCard>
99
+ <template #header>
100
+ <h3 class="font-semibold">With Custom Content</h3>
101
+ </template>
102
+ <ClientOnly>
103
+ <VAStateEmpty
104
+ icon="i-lucide-users"
105
+ title="No users found"
106
+ description="There are no users matching your search criteria."
107
+ />
108
+ </ClientOnly>
109
+ </UCard>
110
+
111
+ <UCard>
112
+ <template #header>
113
+ <h3 class="font-semibold">With Action Button</h3>
114
+ </template>
115
+ <ClientOnly>
116
+ <VAStateEmpty
117
+ icon="i-lucide-file-plus"
118
+ title="No documents"
119
+ description="Get started by creating your first document."
120
+ >
121
+ <template #action>
122
+ <UButton label="Create Document" icon="i-lucide-plus" />
123
+ </template>
124
+ </VAStateEmpty>
125
+ </ClientOnly>
126
+ </UCard>
127
+
128
+ <UCard>
129
+ <template #header>
130
+ <h3 class="font-semibold">Search Results Empty</h3>
131
+ </template>
132
+ <ClientOnly>
133
+ <VAStateEmpty
134
+ icon="i-lucide-search"
135
+ title="No results"
136
+ description="Try adjusting your search or filters to find what you're looking for."
137
+ />
138
+ </ClientOnly>
139
+ </UCard>
140
+ </div>
141
+
142
+ <!-- VAStateError Section -->
143
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VAStateError</h2>
144
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Error state with optional retry functionality.</p>
145
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
146
+ <UCard>
147
+ <template #header>
148
+ <h3 class="font-semibold">Default Error</h3>
149
+ </template>
150
+ <ClientOnly>
151
+ <VAStateError />
152
+ </ClientOnly>
153
+ </UCard>
154
+
155
+ <UCard>
156
+ <template #header>
157
+ <h3 class="font-semibold">With Retry Button</h3>
158
+ </template>
159
+ <ClientOnly>
160
+ <VAStateError
161
+ title="Connection Failed"
162
+ description="Unable to connect to the server. Please check your internet connection."
163
+ :retryable="true"
164
+ @retry="handleRetry"
165
+ />
166
+ </ClientOnly>
167
+ </UCard>
168
+
169
+ <UCard>
170
+ <template #header>
171
+ <h3 class="font-semibold">Custom Error Message</h3>
172
+ </template>
173
+ <ClientOnly>
174
+ <VAStateError
175
+ title="Permission Denied"
176
+ description="You don't have permission to access this resource. Contact your administrator."
177
+ />
178
+ </ClientOnly>
179
+ </UCard>
180
+
181
+ <UCard>
182
+ <template #header>
183
+ <h3 class="font-semibold">Server Error</h3>
184
+ </template>
185
+ <ClientOnly>
186
+ <VAStateError
187
+ title="Server Error"
188
+ description="Something went wrong on our end. Our team has been notified."
189
+ :retryable="true"
190
+ @retry="handleRetry"
191
+ />
192
+ </ClientOnly>
193
+ </UCard>
194
+ </div>
195
+
196
+ <!-- VAEmptyState Section -->
197
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VAEmptyState</h2>
198
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Styled empty state component with gold accents (Veristone branded).</p>
199
+ <div class="mb-8">
200
+ <UCard>
201
+ <template #header>
202
+ <h3 class="font-semibold">Size Variants</h3>
203
+ </template>
204
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
205
+ <ClientOnly>
206
+ <VAEmptyState size="sm" title="No Data" description="Start adding items" />
207
+ </ClientOnly>
208
+
209
+ <ClientOnly>
210
+ <VAEmptyState
211
+ size="md"
212
+ icon="i-lucide-folder"
213
+ title="No Projects"
214
+ description="Create your first project to get started"
215
+ action-label="Create Project"
216
+ @action="handleAction"
217
+ />
218
+ </ClientOnly>
219
+
220
+ <ClientOnly>
221
+ <VAEmptyState
222
+ size="lg"
223
+ icon="i-lucide-bar-chart-2"
224
+ title="No Analytics Data"
225
+ description="Data will appear once you have some activity"
226
+ />
227
+ </ClientOnly>
228
+ </div>
229
+ </UCard>
230
+ </div>
231
+
232
+ <!-- VALoadingState Section -->
233
+ <h2 class="text-2xl font-semibold mb-4 mt-8">VALoadingState</h2>
234
+ <p class="text-gray-600 dark:text-gray-400 mb-4">Styled loading state with ring animation (Veristone branded).</p>
235
+ <div class="mb-8">
236
+ <UCard>
237
+ <template #header>
238
+ <h3 class="font-semibold">Size Variants</h3>
239
+ </template>
240
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
241
+ <ClientOnly>
242
+ <VALoadingState size="sm" text="Loading..." />
243
+ </ClientOnly>
244
+
245
+ <ClientOnly>
246
+ <VALoadingState
247
+ size="md"
248
+ text="Fetching data"
249
+ description="Please wait while we load your content"
250
+ />
251
+ </ClientOnly>
252
+
253
+ <ClientOnly>
254
+ <VALoadingState
255
+ size="lg"
256
+ text="Processing"
257
+ description="This may take a moment"
258
+ icon="i-lucide-cog"
259
+ />
260
+ </ClientOnly>
261
+ </div>
262
+ </UCard>
263
+ </div>
264
+
265
+ <div class="mb-8">
266
+ <UCard>
267
+ <template #header>
268
+ <h3 class="font-semibold">With Skeleton Rows</h3>
269
+ </template>
270
+ <ClientOnly>
271
+ <VALoadingState
272
+ text="Loading content"
273
+ :show-skeleton="true"
274
+ :skeleton-rows="5"
275
+ />
276
+ </ClientOnly>
277
+ </UCard>
278
+ </div>
279
+ </div>
280
+ </UContainer>
281
+ </UDashboardPanel>
282
+ </template>