@pattern-stack/frontend-patterns 0.0.3 → 0.0.5
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/frontend-patterns.css +1 -1
- package/dist/index.es.js +1918 -3
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1917 -1
- package/dist/index.js.map +1 -1
- package/package.json +10 -5
- package/src/App.css +42 -0
- package/src/App.tsx +64 -0
- package/src/__tests__/README.md +221 -0
- package/src/__tests__/atoms/hooks/simple-hooks.test.ts +44 -0
- package/src/__tests__/atoms/ui/button.test.tsx +68 -0
- package/src/__tests__/atoms/utils/simple.test.ts +18 -0
- package/src/__tests__/atoms/utils/utils.test.ts +77 -0
- package/src/__tests__/features/auth/simple-auth.test.tsx +40 -0
- package/src/__tests__/molecules/layout/simple-layout.test.tsx +81 -0
- package/src/__tests__/organisms/showcase/simple-showcase.test.tsx +167 -0
- package/src/__tests__/setup.ts +51 -0
- package/src/__tests__/utils.tsx +123 -0
- package/src/atoms/composed/Accordion/Accordion.tsx +271 -0
- package/{dist/atoms/composed/Accordion/index.d.ts → src/atoms/composed/Accordion/index.ts} +1 -2
- package/src/atoms/composed/Alert/Alert.tsx +132 -0
- package/src/atoms/composed/Alert/index.ts +1 -0
- package/src/atoms/composed/Breadcrumb/Breadcrumb.tsx +83 -0
- package/src/atoms/composed/Breadcrumb/index.ts +1 -0
- package/src/atoms/composed/Chart/Chart.tsx +425 -0
- package/{dist/atoms/composed/Chart/index.d.ts → src/atoms/composed/Chart/index.ts} +1 -2
- package/src/atoms/composed/ColorSwatch/ColorSwatch.tsx +72 -0
- package/{dist/atoms/composed/ColorSwatch/index.d.ts → src/atoms/composed/ColorSwatch/index.ts} +1 -2
- package/src/atoms/composed/DarkModeToggle.tsx +66 -0
- package/src/atoms/composed/DataBadge/DataBadge.tsx +81 -0
- package/src/atoms/composed/DataBadge/index.ts +1 -0
- package/src/atoms/composed/DataTable/DataTable.tsx +394 -0
- package/src/atoms/composed/DataTable/TableCellWithTooltip.tsx +41 -0
- package/src/atoms/composed/DataTable/index.ts +2 -0
- package/src/atoms/composed/DateTimePicker/DateTimePicker.tsx +611 -0
- package/src/atoms/composed/DateTimePicker/index.ts +2 -0
- package/src/atoms/composed/DetailedCard/DetailedCard.tsx +181 -0
- package/src/atoms/composed/DetailedCard/index.ts +2 -0
- package/src/atoms/composed/EmptyState/EmptyState.tsx +90 -0
- package/src/atoms/composed/EmptyState/index.ts +1 -0
- package/src/atoms/composed/FileUpload/FileUpload.tsx +477 -0
- package/{dist/atoms/composed/FileUpload/index.d.ts → src/atoms/composed/FileUpload/index.ts} +1 -2
- package/src/atoms/composed/FormField/FormField.tsx +92 -0
- package/src/atoms/composed/FormField/index.ts +1 -0
- package/src/atoms/composed/GlobalSearch/GlobalSearch.tsx +37 -0
- package/src/atoms/composed/GlobalSearch/index.ts +1 -0
- package/src/atoms/composed/IconBadge/IconBadge.tsx +95 -0
- package/src/atoms/composed/IconBadge/index.ts +2 -0
- package/src/atoms/composed/Modal/Modal.tsx +223 -0
- package/src/atoms/composed/Modal/index.ts +2 -0
- package/src/atoms/composed/PaletteSwitcher.tsx +386 -0
- package/src/atoms/composed/ProgressBar/ProgressBar.tsx +116 -0
- package/{dist/atoms/composed/ProgressBar/index.d.ts → src/atoms/composed/ProgressBar/index.ts} +1 -2
- package/src/atoms/composed/SalesPanel/SalesPanel.tsx +116 -0
- package/src/atoms/composed/SalesPanel/index.ts +1 -0
- package/src/atoms/composed/SalesPanel/mockSalesData.ts +151 -0
- package/src/atoms/composed/StatCard/StatCard.tsx +219 -0
- package/src/atoms/composed/StatCard/index.ts +1 -0
- package/src/atoms/composed/StyleGuide.tsx +717 -0
- package/src/atoms/composed/Toast/Toast.tsx +219 -0
- package/{dist/atoms/composed/Toast/index.d.ts → src/atoms/composed/Toast/index.ts} +1 -2
- package/src/atoms/composed/Tooltip/Tooltip.tsx +213 -0
- package/src/atoms/composed/Tooltip/index.ts +1 -0
- package/src/atoms/composed/UserAvatar/UserAvatar.tsx +139 -0
- package/src/atoms/composed/UserAvatar/index.ts +1 -0
- package/src/atoms/composed/UserMenu/UserMenu.tsx +16 -0
- package/src/atoms/composed/UserMenu/index.ts +1 -0
- package/{dist/atoms/composed/index.d.ts → src/atoms/composed/index.ts} +7 -2
- package/src/atoms/hooks/useApi.ts +80 -0
- package/src/atoms/hooks/useHealth.ts +17 -0
- package/{dist/atoms/index.d.ts → src/atoms/index.ts} +6 -2
- package/src/atoms/services/api/client.ts +134 -0
- package/src/atoms/services/auth-service.ts +248 -0
- package/src/atoms/services/health.ts +15 -0
- package/{dist/atoms/services/index.d.ts → src/atoms/services/index.ts} +1 -2
- package/src/atoms/shared/config/constants.ts +17 -0
- package/src/atoms/shared/config/dashboard-sizes.ts +111 -0
- package/src/atoms/shared/config/environment.ts +10 -0
- package/src/atoms/shared/index.ts +4 -0
- package/src/atoms/shared/styles/color-palettes.css +566 -0
- package/src/atoms/types/auth.ts +62 -0
- package/src/atoms/types/entity-config.ts +127 -0
- package/{dist/atoms/types/generated.d.ts → src/atoms/types/generated.ts} +1 -1
- package/{dist/atoms/types/index.d.ts → src/atoms/types/index.ts} +2 -1
- package/{dist/atoms/types/loading.d.ts → src/atoms/types/loading.ts} +10 -8
- package/src/atoms/ui/Badge.tsx +30 -0
- package/src/atoms/ui/ErrorBoundary.tsx +59 -0
- package/src/atoms/ui/Select.tsx +53 -0
- package/src/atoms/ui/Switch.tsx +42 -0
- package/src/atoms/ui/Tabs.tsx +118 -0
- package/src/atoms/ui/avatar.tsx +48 -0
- package/src/atoms/ui/button.tsx +70 -0
- package/src/atoms/ui/card.tsx +76 -0
- package/src/atoms/ui/dropdown-menu.tsx +199 -0
- package/{dist/atoms/ui/index.d.ts → src/atoms/ui/index.ts} +27 -3
- package/src/atoms/ui/input.tsx +23 -0
- package/src/atoms/ui/label.tsx +23 -0
- package/src/atoms/ui/skeleton.tsx +13 -0
- package/src/atoms/ui/spinner.tsx +49 -0
- package/src/atoms/ui/table.tsx +116 -0
- package/src/atoms/utils/animations.ts +135 -0
- package/src/atoms/utils/metric-engine.ts +236 -0
- package/src/atoms/utils/tooltip-helpers.ts +140 -0
- package/src/atoms/utils/utils.ts +10 -0
- package/src/features/auth/components/LoginForm.tsx +168 -0
- package/src/features/auth/components/LogoutButton.tsx +19 -0
- package/src/features/auth/components/ProtectedRoute.tsx +60 -0
- package/{dist/features/auth/components/index.d.ts → src/features/auth/components/index.ts} +1 -1
- package/src/features/auth/hooks/index.ts +2 -0
- package/src/features/auth/hooks/useAuth.tsx +205 -0
- package/src/features/auth/hooks/usePermissions.ts +35 -0
- package/src/features/auth/index.ts +2 -0
- package/src/features/index.ts +2 -0
- package/src/index.css +704 -0
- package/{dist/index.d.ts → src/index.ts} +5 -2
- package/src/main.tsx +48 -0
- package/src/molecules/.gitkeep +0 -0
- package/src/molecules/forms/FormGroup.tsx +75 -0
- package/src/molecules/forms/SearchInput.tsx +259 -0
- package/src/molecules/forms/index.ts +4 -0
- package/src/molecules/index.ts +4 -0
- package/src/molecules/layout/AppHeader/AppHeader.tsx +42 -0
- package/src/molecules/layout/AppHeader/index.ts +1 -0
- package/src/molecules/layout/AppLayout.tsx +29 -0
- package/src/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.tsx +42 -0
- package/src/molecules/layout/DashboardWithSidePanel/index.ts +1 -0
- package/src/molecules/layout/PageTemplate.tsx +87 -0
- package/src/molecules/layout/SectionHeader/SectionHeader.tsx +87 -0
- package/{dist/molecules/layout/SectionHeader/index.d.ts → src/molecules/layout/SectionHeader/index.ts} +1 -2
- package/src/molecules/layout/ShowcaseSection.tsx +57 -0
- package/src/molecules/layout/Sidebar.tsx +152 -0
- package/src/molecules/layout/SidebarButton/SidebarButton.tsx +99 -0
- package/src/molecules/layout/SidebarButton/index.ts +1 -0
- package/src/molecules/layout/SidebarContext.tsx +31 -0
- package/{dist/molecules/layout/index.d.ts → src/molecules/layout/index.ts} +2 -2
- package/src/molecules/navigation/NavMenu.tsx +188 -0
- package/src/molecules/navigation/Pagination.tsx +172 -0
- package/src/molecules/navigation/index.ts +4 -0
- package/src/organisms/entity/CategoryBreakdownPanel.tsx +427 -0
- package/src/organisms/entity/EntityListPanel.tsx +339 -0
- package/src/organisms/entity/MetricsOverviewPanel.tsx +236 -0
- package/src/organisms/entity/TrendAnalysisPanel.tsx +337 -0
- package/src/organisms/entity/index.ts +4 -0
- package/src/organisms/index.ts +8 -0
- package/src/organisms/showcase/ComponentShowcasePage.tsx +2496 -0
- package/src/organisms/showcase/index.ts +1 -0
- package/src/pages/AdminShowcase/AdminCRUDShowcase.tsx +242 -0
- package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +173 -0
- package/src/pages/AdminShowcase/AdminDetailShowcase.tsx +385 -0
- package/src/pages/AdminShowcase/SalesPerformanceDashboard.tsx +158 -0
- package/src/pages/AdminShowcase/index.tsx +4 -0
- package/src/pages/ComponentShowcase/BadgesShowcase.tsx +188 -0
- package/src/pages/ComponentShowcase/CardsShowcase.tsx +392 -0
- package/src/pages/ComponentShowcase/PalettesShowcase.tsx +207 -0
- package/src/pages/ComponentShowcase/StatesShowcase.tsx +485 -0
- package/src/pages/ComponentShowcase/TablesShowcase.tsx +134 -0
- package/src/pages/ComponentShowcase/TypographyShowcase.tsx +255 -0
- package/src/pages/ComponentShowcase/index.tsx +188 -0
- package/src/pages/EntityShowcase/EntityManagementShowcase.tsx +137 -0
- package/src/pages/EntityShowcase/EntityPerformanceShowcase.tsx +117 -0
- package/src/pages/EntityShowcase/index.ts +2 -0
- package/src/pages/EntityTemplateExample.tsx +229 -0
- package/src/pages/TestEntityTemplate.tsx +40 -0
- package/src/pages/index.ts +3 -0
- package/src/templates/AuthTemplate.tsx +216 -0
- package/src/templates/ComponentShowcaseTemplate.tsx +173 -0
- package/src/templates/DashboardTemplate.tsx +232 -0
- package/src/templates/DataTemplate.tsx +319 -0
- package/src/templates/admin/AdminCRUDTemplate.tsx +630 -0
- package/src/templates/admin/AdminDashboardTemplate.tsx +351 -0
- package/src/templates/admin/AdminDetailTemplate.tsx +563 -0
- package/src/templates/admin/index.ts +29 -0
- package/src/templates/entity/EntityManagementTemplate.tsx +430 -0
- package/src/templates/entity/EntityPerformanceDashboardTemplate.tsx +277 -0
- package/src/templates/entity/configs/financial-config.ts +141 -0
- package/src/templates/entity/configs/index.ts +1 -0
- package/src/templates/entity/index.ts +3 -0
- package/src/templates/factory.tsx +169 -0
- package/src/templates/financial/FinancialDashboardTemplate.tsx +326 -0
- package/src/templates/index.ts +40 -0
- package/src/vite-env.d.ts +1 -0
- package/dist/atoms/composed/Accordion/Accordion.d.ts +0 -20
- package/dist/atoms/composed/Accordion/Accordion.d.ts.map +0 -1
- package/dist/atoms/composed/Accordion/index.d.ts.map +0 -1
- package/dist/atoms/composed/Alert/Alert.d.ts +0 -25
- package/dist/atoms/composed/Alert/Alert.d.ts.map +0 -1
- package/dist/atoms/composed/Alert/index.d.ts +0 -2
- package/dist/atoms/composed/Alert/index.d.ts.map +0 -1
- package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts +0 -17
- package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts.map +0 -1
- package/dist/atoms/composed/Breadcrumb/index.d.ts +0 -2
- package/dist/atoms/composed/Breadcrumb/index.d.ts.map +0 -1
- package/dist/atoms/composed/Chart/Chart.d.ts +0 -37
- package/dist/atoms/composed/Chart/Chart.d.ts.map +0 -1
- package/dist/atoms/composed/Chart/index.d.ts.map +0 -1
- package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts +0 -19
- package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts.map +0 -1
- package/dist/atoms/composed/ColorSwatch/index.d.ts.map +0 -1
- package/dist/atoms/composed/DarkModeToggle.d.ts +0 -4
- package/dist/atoms/composed/DarkModeToggle.d.ts.map +0 -1
- package/dist/atoms/composed/DataBadge/DataBadge.d.ts +0 -13
- package/dist/atoms/composed/DataBadge/DataBadge.d.ts.map +0 -1
- package/dist/atoms/composed/DataBadge/index.d.ts +0 -2
- package/dist/atoms/composed/DataBadge/index.d.ts.map +0 -1
- package/dist/atoms/composed/DataTable/DataTable.d.ts +0 -28
- package/dist/atoms/composed/DataTable/DataTable.d.ts.map +0 -1
- package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts +0 -10
- package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts.map +0 -1
- package/dist/atoms/composed/DataTable/index.d.ts +0 -3
- package/dist/atoms/composed/DataTable/index.d.ts.map +0 -1
- package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts +0 -45
- package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts.map +0 -1
- package/dist/atoms/composed/DateTimePicker/index.d.ts +0 -3
- package/dist/atoms/composed/DateTimePicker/index.d.ts.map +0 -1
- package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts +0 -30
- package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts.map +0 -1
- package/dist/atoms/composed/DetailedCard/index.d.ts +0 -3
- package/dist/atoms/composed/DetailedCard/index.d.ts.map +0 -1
- package/dist/atoms/composed/EmptyState/EmptyState.d.ts +0 -18
- package/dist/atoms/composed/EmptyState/EmptyState.d.ts.map +0 -1
- package/dist/atoms/composed/EmptyState/index.d.ts +0 -2
- package/dist/atoms/composed/EmptyState/index.d.ts.map +0 -1
- package/dist/atoms/composed/FileUpload/FileUpload.d.ts +0 -46
- package/dist/atoms/composed/FileUpload/FileUpload.d.ts.map +0 -1
- package/dist/atoms/composed/FileUpload/index.d.ts.map +0 -1
- package/dist/atoms/composed/FormField/FormField.d.ts +0 -23
- package/dist/atoms/composed/FormField/FormField.d.ts.map +0 -1
- package/dist/atoms/composed/FormField/index.d.ts +0 -2
- package/dist/atoms/composed/FormField/index.d.ts.map +0 -1
- package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts +0 -8
- package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts.map +0 -1
- package/dist/atoms/composed/GlobalSearch/index.d.ts +0 -2
- package/dist/atoms/composed/GlobalSearch/index.d.ts.map +0 -1
- package/dist/atoms/composed/IconBadge/IconBadge.d.ts +0 -16
- package/dist/atoms/composed/IconBadge/IconBadge.d.ts.map +0 -1
- package/dist/atoms/composed/IconBadge/index.d.ts +0 -3
- package/dist/atoms/composed/IconBadge/index.d.ts.map +0 -1
- package/dist/atoms/composed/Modal/Modal.d.ts +0 -18
- package/dist/atoms/composed/Modal/Modal.d.ts.map +0 -1
- package/dist/atoms/composed/Modal/index.d.ts +0 -3
- package/dist/atoms/composed/Modal/index.d.ts.map +0 -1
- package/dist/atoms/composed/PaletteSwitcher.d.ts +0 -7
- package/dist/atoms/composed/PaletteSwitcher.d.ts.map +0 -1
- package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts +0 -25
- package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts.map +0 -1
- package/dist/atoms/composed/ProgressBar/index.d.ts.map +0 -1
- package/dist/atoms/composed/StatCard/StatCard.d.ts +0 -21
- package/dist/atoms/composed/StatCard/StatCard.d.ts.map +0 -1
- package/dist/atoms/composed/StatCard/index.d.ts +0 -2
- package/dist/atoms/composed/StatCard/index.d.ts.map +0 -1
- package/dist/atoms/composed/StyleGuide.d.ts +0 -3
- package/dist/atoms/composed/StyleGuide.d.ts.map +0 -1
- package/dist/atoms/composed/Toast/Toast.d.ts +0 -40
- package/dist/atoms/composed/Toast/Toast.d.ts.map +0 -1
- package/dist/atoms/composed/Toast/index.d.ts.map +0 -1
- package/dist/atoms/composed/Tooltip/Tooltip.d.ts +0 -16
- package/dist/atoms/composed/Tooltip/Tooltip.d.ts.map +0 -1
- package/dist/atoms/composed/Tooltip/index.d.ts +0 -2
- package/dist/atoms/composed/Tooltip/index.d.ts.map +0 -1
- package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts +0 -8
- package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts.map +0 -1
- package/dist/atoms/composed/UserAvatar/index.d.ts +0 -2
- package/dist/atoms/composed/UserAvatar/index.d.ts.map +0 -1
- package/dist/atoms/composed/UserMenu/UserMenu.d.ts +0 -8
- package/dist/atoms/composed/UserMenu/UserMenu.d.ts.map +0 -1
- package/dist/atoms/composed/UserMenu/index.d.ts +0 -2
- package/dist/atoms/composed/UserMenu/index.d.ts.map +0 -1
- package/dist/atoms/composed/index.d.ts.map +0 -1
- package/dist/atoms/hooks/useApi.d.ts +0 -25
- package/dist/atoms/hooks/useApi.d.ts.map +0 -1
- package/dist/atoms/hooks/useHealth.d.ts +0 -19
- package/dist/atoms/hooks/useHealth.d.ts.map +0 -1
- package/dist/atoms/index.d.ts.map +0 -1
- package/dist/atoms/services/api/client.d.ts +0 -20
- package/dist/atoms/services/api/client.d.ts.map +0 -1
- package/dist/atoms/services/auth-service.d.ts +0 -24
- package/dist/atoms/services/auth-service.d.ts.map +0 -1
- package/dist/atoms/services/health.d.ts +0 -7
- package/dist/atoms/services/health.d.ts.map +0 -1
- package/dist/atoms/services/index.d.ts.map +0 -1
- package/dist/atoms/shared/config/constants.d.ts +0 -15
- package/dist/atoms/shared/config/constants.d.ts.map +0 -1
- package/dist/atoms/shared/config/dashboard-sizes.d.ts +0 -83
- package/dist/atoms/shared/config/dashboard-sizes.d.ts.map +0 -1
- package/dist/atoms/shared/config/environment.d.ts +0 -10
- package/dist/atoms/shared/config/environment.d.ts.map +0 -1
- package/dist/atoms/shared/index.d.ts +0 -4
- package/dist/atoms/shared/index.d.ts.map +0 -1
- package/dist/atoms/types/auth.d.ts +0 -56
- package/dist/atoms/types/auth.d.ts.map +0 -1
- package/dist/atoms/types/generated.d.ts.map +0 -1
- package/dist/atoms/types/index.d.ts.map +0 -1
- package/dist/atoms/types/loading.d.ts.map +0 -1
- package/dist/atoms/ui/Badge.d.ts +0 -10
- package/dist/atoms/ui/Badge.d.ts.map +0 -1
- package/dist/atoms/ui/ErrorBoundary.d.ts +0 -18
- package/dist/atoms/ui/ErrorBoundary.d.ts.map +0 -1
- package/dist/atoms/ui/Select.d.ts +0 -28
- package/dist/atoms/ui/Select.d.ts.map +0 -1
- package/dist/atoms/ui/Switch.d.ts +0 -9
- package/dist/atoms/ui/Switch.d.ts.map +0 -1
- package/dist/atoms/ui/Tabs.d.ts +0 -30
- package/dist/atoms/ui/Tabs.d.ts.map +0 -1
- package/dist/atoms/ui/avatar.d.ts +0 -7
- package/dist/atoms/ui/avatar.d.ts.map +0 -1
- package/dist/atoms/ui/button.d.ts +0 -14
- package/dist/atoms/ui/button.d.ts.map +0 -1
- package/dist/atoms/ui/card.d.ts +0 -12
- package/dist/atoms/ui/card.d.ts.map +0 -1
- package/dist/atoms/ui/dropdown-menu.d.ts +0 -28
- package/dist/atoms/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/atoms/ui/index.d.ts.map +0 -1
- package/dist/atoms/ui/input.d.ts +0 -5
- package/dist/atoms/ui/input.d.ts.map +0 -1
- package/dist/atoms/ui/label.d.ts +0 -6
- package/dist/atoms/ui/label.d.ts.map +0 -1
- package/dist/atoms/ui/skeleton.d.ts +0 -3
- package/dist/atoms/ui/skeleton.d.ts.map +0 -1
- package/dist/atoms/ui/spinner.d.ts +0 -14
- package/dist/atoms/ui/spinner.d.ts.map +0 -1
- package/dist/atoms/ui/table.d.ts +0 -11
- package/dist/atoms/ui/table.d.ts.map +0 -1
- package/dist/atoms/utils/animations.d.ts +0 -65
- package/dist/atoms/utils/animations.d.ts.map +0 -1
- package/dist/atoms/utils/tooltip-helpers.d.ts +0 -71
- package/dist/atoms/utils/tooltip-helpers.d.ts.map +0 -1
- package/dist/atoms/utils/utils.d.ts +0 -4
- package/dist/atoms/utils/utils.d.ts.map +0 -1
- package/dist/features/auth/components/LoginForm.d.ts +0 -2
- package/dist/features/auth/components/LoginForm.d.ts.map +0 -1
- package/dist/features/auth/components/LogoutButton.d.ts +0 -2
- package/dist/features/auth/components/LogoutButton.d.ts.map +0 -1
- package/dist/features/auth/components/ProtectedRoute.d.ts +0 -10
- package/dist/features/auth/components/ProtectedRoute.d.ts.map +0 -1
- package/dist/features/auth/components/index.d.ts.map +0 -1
- package/dist/features/auth/hooks/index.d.ts +0 -3
- package/dist/features/auth/hooks/index.d.ts.map +0 -1
- package/dist/features/auth/hooks/useAuth.d.ts +0 -10
- package/dist/features/auth/hooks/useAuth.d.ts.map +0 -1
- package/dist/features/auth/hooks/usePermissions.d.ts +0 -13
- package/dist/features/auth/hooks/usePermissions.d.ts.map +0 -1
- package/dist/features/auth/index.d.ts +0 -3
- package/dist/features/auth/index.d.ts.map +0 -1
- package/dist/features/index.d.ts +0 -2
- package/dist/features/index.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/molecules/forms/FormGroup.d.ts +0 -17
- package/dist/molecules/forms/FormGroup.d.ts.map +0 -1
- package/dist/molecules/forms/SearchInput.d.ts +0 -36
- package/dist/molecules/forms/SearchInput.d.ts.map +0 -1
- package/dist/molecules/forms/index.d.ts +0 -3
- package/dist/molecules/forms/index.d.ts.map +0 -1
- package/dist/molecules/index.d.ts +0 -4
- package/dist/molecules/index.d.ts.map +0 -1
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts +0 -7
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +0 -1
- package/dist/molecules/layout/AppHeader/index.d.ts +0 -2
- package/dist/molecules/layout/AppHeader/index.d.ts.map +0 -1
- package/dist/molecules/layout/AppLayout.d.ts +0 -2
- package/dist/molecules/layout/AppLayout.d.ts.map +0 -1
- package/dist/molecules/layout/PageTemplate.d.ts +0 -19
- package/dist/molecules/layout/PageTemplate.d.ts.map +0 -1
- package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts +0 -24
- package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts.map +0 -1
- package/dist/molecules/layout/SectionHeader/index.d.ts.map +0 -1
- package/dist/molecules/layout/ShowcaseSection.d.ts +0 -22
- package/dist/molecules/layout/ShowcaseSection.d.ts.map +0 -1
- package/dist/molecules/layout/Sidebar.d.ts +0 -6
- package/dist/molecules/layout/Sidebar.d.ts.map +0 -1
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +0 -13
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +0 -1
- package/dist/molecules/layout/SidebarButton/index.d.ts +0 -2
- package/dist/molecules/layout/SidebarButton/index.d.ts.map +0 -1
- package/dist/molecules/layout/SidebarContext.d.ts +0 -12
- package/dist/molecules/layout/SidebarContext.d.ts.map +0 -1
- package/dist/molecules/layout/index.d.ts.map +0 -1
- package/dist/molecules/navigation/NavMenu.d.ts +0 -20
- package/dist/molecules/navigation/NavMenu.d.ts.map +0 -1
- package/dist/molecules/navigation/Pagination.d.ts +0 -14
- package/dist/molecules/navigation/Pagination.d.ts.map +0 -1
- package/dist/molecules/navigation/index.d.ts +0 -3
- package/dist/molecules/navigation/index.d.ts.map +0 -1
- package/dist/organisms/index.d.ts +0 -2
- package/dist/organisms/index.d.ts.map +0 -1
- package/dist/organisms/showcase/ComponentShowcasePage.d.ts +0 -3
- package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +0 -1
- package/dist/templates/AuthTemplate.d.ts +0 -68
- package/dist/templates/AuthTemplate.d.ts.map +0 -1
- package/dist/templates/ComponentShowcaseTemplate.d.ts +0 -53
- package/dist/templates/ComponentShowcaseTemplate.d.ts.map +0 -1
- package/dist/templates/DashboardTemplate.d.ts +0 -62
- package/dist/templates/DashboardTemplate.d.ts.map +0 -1
- package/dist/templates/DataTemplate.d.ts +0 -78
- package/dist/templates/DataTemplate.d.ts.map +0 -1
- package/dist/templates/admin/AdminCRUDTemplate.d.ts +0 -105
- package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +0 -1
- package/dist/templates/admin/AdminDashboardTemplate.d.ts +0 -89
- package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +0 -1
- package/dist/templates/admin/AdminDetailTemplate.d.ts +0 -132
- package/dist/templates/admin/AdminDetailTemplate.d.ts.map +0 -1
- package/dist/templates/admin/index.d.ts +0 -4
- package/dist/templates/admin/index.d.ts.map +0 -1
- package/dist/templates/factory.d.ts +0 -28
- package/dist/templates/factory.d.ts.map +0 -1
- package/dist/templates/index.d.ts +0 -7
- package/dist/templates/index.d.ts.map +0 -1
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ComponentShowcaseTemplate } from '../../templates';
|
|
3
|
+
import { DataBadge } from '../../atoms/composed';
|
|
4
|
+
import { Badge } from '../../atoms/ui';
|
|
5
|
+
import { CheckCircle, AlertTriangle, XCircle, Info, Clock } from 'lucide-react';
|
|
6
|
+
|
|
7
|
+
export const BadgesShowcase: React.FC = () => {
|
|
8
|
+
return (
|
|
9
|
+
<ComponentShowcaseTemplate
|
|
10
|
+
category={1}
|
|
11
|
+
title="Badges"
|
|
12
|
+
description="Semantic badges for categorizing and indicating status in data interfaces."
|
|
13
|
+
primaryComponent={{
|
|
14
|
+
title: "Badge Component",
|
|
15
|
+
description: "Foundation badge component with multiple variants, sizes, and states. Base for all badge-based components.",
|
|
16
|
+
badge: {
|
|
17
|
+
text: "UI Foundation",
|
|
18
|
+
variant: "category",
|
|
19
|
+
category: 1
|
|
20
|
+
},
|
|
21
|
+
children: (
|
|
22
|
+
<div className="space-y-6">
|
|
23
|
+
{/* Basic Badge Variants */}
|
|
24
|
+
<div className="space-y-4">
|
|
25
|
+
<h4 className="text-base font-medium">Badge Variants</h4>
|
|
26
|
+
<div className="flex flex-wrap gap-2">
|
|
27
|
+
<Badge variant="default">Default</Badge>
|
|
28
|
+
<Badge variant="secondary">Secondary</Badge>
|
|
29
|
+
<Badge variant="destructive">Destructive</Badge>
|
|
30
|
+
<Badge variant="outline">Outline</Badge>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
{/* Badge Sizes */}
|
|
35
|
+
<div className="space-y-4">
|
|
36
|
+
<h4 className="text-base font-medium">Sizes</h4>
|
|
37
|
+
<div className="flex flex-wrap items-center gap-2">
|
|
38
|
+
<Badge variant="default" className="text-xs px-2 py-0.5">Small</Badge>
|
|
39
|
+
<Badge variant="default">Medium</Badge>
|
|
40
|
+
<Badge variant="default" className="text-base px-3 py-1.5">Large</Badge>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
{/* Badge with Icons */}
|
|
45
|
+
<div className="space-y-4">
|
|
46
|
+
<h4 className="text-base font-medium">With Icons</h4>
|
|
47
|
+
<div className="flex flex-wrap gap-2">
|
|
48
|
+
<Badge variant="default">
|
|
49
|
+
<CheckCircle className="w-3 h-3 mr-1" />
|
|
50
|
+
Success
|
|
51
|
+
</Badge>
|
|
52
|
+
<Badge variant="destructive">
|
|
53
|
+
<XCircle className="w-3 h-3 mr-1" />
|
|
54
|
+
Error
|
|
55
|
+
</Badge>
|
|
56
|
+
<Badge variant="outline">
|
|
57
|
+
<Info className="w-3 h-3 mr-1" />
|
|
58
|
+
Info
|
|
59
|
+
</Badge>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
)
|
|
64
|
+
}}
|
|
65
|
+
composedExamples={{
|
|
66
|
+
title: "Business Badge Components",
|
|
67
|
+
description: "Specialized badge components built for specific data interface use cases with enhanced functionality.",
|
|
68
|
+
sections: [
|
|
69
|
+
{
|
|
70
|
+
title: "DataBadge Component",
|
|
71
|
+
description: "Enhanced badge component with category theming, status variants, and interactive capabilities for data interfaces.",
|
|
72
|
+
badge: {
|
|
73
|
+
text: "Business Component",
|
|
74
|
+
variant: "category",
|
|
75
|
+
category: 2
|
|
76
|
+
},
|
|
77
|
+
category: 2,
|
|
78
|
+
children: (
|
|
79
|
+
<div className="space-y-6">
|
|
80
|
+
{/* Basic DataBadge Usage */}
|
|
81
|
+
<div className="space-y-4">
|
|
82
|
+
<h4 className="text-base font-medium">Basic Usage</h4>
|
|
83
|
+
<div className="flex flex-wrap gap-2">
|
|
84
|
+
<DataBadge variant="category" category={1}>Category 1</DataBadge>
|
|
85
|
+
<DataBadge variant="status" status="success">Success</DataBadge>
|
|
86
|
+
<DataBadge variant="status" status="neutral">Neutral</DataBadge>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
{/* DataBadge Sizes */}
|
|
91
|
+
<div className="space-y-4">
|
|
92
|
+
<h4 className="text-base font-medium">Sizes</h4>
|
|
93
|
+
<div className="flex flex-wrap items-center gap-2">
|
|
94
|
+
<DataBadge variant="category" category={2} size="sm">Small</DataBadge>
|
|
95
|
+
<DataBadge variant="category" category={2} size="md">Medium</DataBadge>
|
|
96
|
+
<DataBadge variant="category" category={2} size="lg">Large</DataBadge>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
{/* Interactive DataBadge */}
|
|
101
|
+
<div className="space-y-4">
|
|
102
|
+
<h4 className="text-base font-medium">Interactive</h4>
|
|
103
|
+
<div className="flex flex-wrap gap-2">
|
|
104
|
+
<DataBadge
|
|
105
|
+
variant="category"
|
|
106
|
+
category={3}
|
|
107
|
+
interactive
|
|
108
|
+
onClick={() => alert('Badge clicked!')}
|
|
109
|
+
>
|
|
110
|
+
Clickable Badge
|
|
111
|
+
</DataBadge>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
)
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
title: "Category Badges",
|
|
119
|
+
description: "Use category badges to classify and organize different types of content, data, or functionality.",
|
|
120
|
+
badge: {
|
|
121
|
+
text: "8 Categories",
|
|
122
|
+
variant: "category",
|
|
123
|
+
category: 1
|
|
124
|
+
},
|
|
125
|
+
category: 2,
|
|
126
|
+
children: (
|
|
127
|
+
<div className="space-y-4">
|
|
128
|
+
<div className="flex flex-wrap gap-2">
|
|
129
|
+
{[1, 2, 3, 4, 5, 6, 7, 8].map(category => (
|
|
130
|
+
<DataBadge key={category} variant="category" category={category as 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8}>
|
|
131
|
+
Category {category}
|
|
132
|
+
</DataBadge>
|
|
133
|
+
))}
|
|
134
|
+
</div>
|
|
135
|
+
<div className="flex flex-wrap gap-2">
|
|
136
|
+
<DataBadge variant="category" category={1} size="sm">Small</DataBadge>
|
|
137
|
+
<DataBadge variant="category" category={2} size="md">Medium</DataBadge>
|
|
138
|
+
<DataBadge variant="category" category={3} size="lg">Large</DataBadge>
|
|
139
|
+
</div>
|
|
140
|
+
<div className="flex flex-wrap gap-2">
|
|
141
|
+
<DataBadge variant="category" category={4} interactive onClick={() => alert('Clicked!')}>
|
|
142
|
+
Interactive
|
|
143
|
+
</DataBadge>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
)
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
title: "Status Badges",
|
|
150
|
+
description: "Use status badges to communicate operational states, health indicators, and system feedback.",
|
|
151
|
+
badge: {
|
|
152
|
+
text: "5 States",
|
|
153
|
+
variant: "status",
|
|
154
|
+
status: "success"
|
|
155
|
+
},
|
|
156
|
+
category: 2,
|
|
157
|
+
children: (
|
|
158
|
+
<div className="space-y-4">
|
|
159
|
+
<div className="flex flex-wrap gap-2">
|
|
160
|
+
<DataBadge variant="status" status="success">
|
|
161
|
+
<CheckCircle className="w-3 h-3 mr-1" />
|
|
162
|
+
Success
|
|
163
|
+
</DataBadge>
|
|
164
|
+
<DataBadge variant="status" status="warning">
|
|
165
|
+
<AlertTriangle className="w-3 h-3 mr-1" />
|
|
166
|
+
Warning
|
|
167
|
+
</DataBadge>
|
|
168
|
+
<DataBadge variant="status" status="error">
|
|
169
|
+
<XCircle className="w-3 h-3 mr-1" />
|
|
170
|
+
Error
|
|
171
|
+
</DataBadge>
|
|
172
|
+
<DataBadge variant="status" status="info">
|
|
173
|
+
<Info className="w-3 h-3 mr-1" />
|
|
174
|
+
Info
|
|
175
|
+
</DataBadge>
|
|
176
|
+
<DataBadge variant="status" status="neutral">
|
|
177
|
+
<Clock className="w-3 h-3 mr-1" />
|
|
178
|
+
Neutral
|
|
179
|
+
</DataBadge>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
)
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}}
|
|
186
|
+
/>
|
|
187
|
+
);
|
|
188
|
+
};
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ComponentShowcaseTemplate } from '../../templates';
|
|
3
|
+
import { StatCard, DetailedCard, DataBadge, FileUpload } from '../../atoms/composed';
|
|
4
|
+
import { Card } from '../../atoms/ui';
|
|
5
|
+
import { Database, CheckCircle, Users, Activity, TrendingUp } from 'lucide-react';
|
|
6
|
+
|
|
7
|
+
export const CardsShowcase: React.FC = () => {
|
|
8
|
+
return (
|
|
9
|
+
<ComponentShowcaseTemplate
|
|
10
|
+
category={1}
|
|
11
|
+
title="Cards"
|
|
12
|
+
description="Analytics cards for displaying key metrics, statistics, and detailed information in data interfaces."
|
|
13
|
+
primaryComponent={{
|
|
14
|
+
title: "Card Component",
|
|
15
|
+
description: "Base card component with category theming, border styling, and hover effects. Foundation for all card-based components.",
|
|
16
|
+
badge: {
|
|
17
|
+
text: "UI Foundation",
|
|
18
|
+
variant: "category",
|
|
19
|
+
category: 1
|
|
20
|
+
},
|
|
21
|
+
children: (
|
|
22
|
+
<div className="space-y-6">
|
|
23
|
+
{/* Basic Card Usage */}
|
|
24
|
+
<div className="space-y-4">
|
|
25
|
+
<h4 className="text-base font-medium">Basic Card</h4>
|
|
26
|
+
<div className="grid md:grid-cols-3 gap-4">
|
|
27
|
+
<Card className="p-4">
|
|
28
|
+
<h3 className="font-medium mb-2">Default Card</h3>
|
|
29
|
+
<p className="text-sm text-muted-foreground">Basic card with standard styling, border, and shadow effects.</p>
|
|
30
|
+
</Card>
|
|
31
|
+
<Card category={1} className="p-4">
|
|
32
|
+
<h3 className="font-medium mb-2">Category Card</h3>
|
|
33
|
+
<p className="text-sm text-muted-foreground">Card with category theming - colored left border and background tint.</p>
|
|
34
|
+
</Card>
|
|
35
|
+
<Card category={2} className="p-4">
|
|
36
|
+
<h3 className="font-medium mb-2">Interactive Card</h3>
|
|
37
|
+
<p className="text-sm text-muted-foreground">Hover effects and interactive states for clickable cards.</p>
|
|
38
|
+
</Card>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
{/* Category Variants */}
|
|
43
|
+
<div className="space-y-4">
|
|
44
|
+
<h4 className="text-base font-medium">Category Variants</h4>
|
|
45
|
+
<div className="grid md:grid-cols-4 gap-4">
|
|
46
|
+
{[1, 2, 3, 4, 5, 6, 7, 8].map(category => (
|
|
47
|
+
<Card key={category} category={category as 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8} className="p-3">
|
|
48
|
+
<div className="text-sm font-medium">Category {category}</div>
|
|
49
|
+
<div className="text-xs text-muted-foreground mt-1">
|
|
50
|
+
Border: category-{category}
|
|
51
|
+
</div>
|
|
52
|
+
</Card>
|
|
53
|
+
))}
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
)
|
|
58
|
+
}}
|
|
59
|
+
composedExamples={{
|
|
60
|
+
title: "Business Card Components",
|
|
61
|
+
description: "Domain-specific card components built on the base Card component for data interfaces and analytics applications.",
|
|
62
|
+
sections: [
|
|
63
|
+
{
|
|
64
|
+
title: "StatCard Component",
|
|
65
|
+
description: "Compact analytics cards for displaying key metrics and statistics with optional trends and interactive states.",
|
|
66
|
+
badge: {
|
|
67
|
+
text: "Business Component",
|
|
68
|
+
variant: "category",
|
|
69
|
+
category: 2
|
|
70
|
+
},
|
|
71
|
+
category: 2,
|
|
72
|
+
children: (
|
|
73
|
+
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
74
|
+
<StatCard
|
|
75
|
+
title="Total Models"
|
|
76
|
+
value="1,234"
|
|
77
|
+
subtitle="Active dbt models"
|
|
78
|
+
category={1}
|
|
79
|
+
icon={<Database className="w-5 h-5" />}
|
|
80
|
+
trend={{ value: 12.5, label: "vs last month" }}
|
|
81
|
+
/>
|
|
82
|
+
<StatCard
|
|
83
|
+
title="Success Rate"
|
|
84
|
+
value="99.2%"
|
|
85
|
+
subtitle="Test pass rate"
|
|
86
|
+
category={2}
|
|
87
|
+
icon={<CheckCircle className="w-5 h-5" />}
|
|
88
|
+
trend={{ value: 2.1, label: "vs last week" }}
|
|
89
|
+
/>
|
|
90
|
+
<StatCard
|
|
91
|
+
title="Active Users"
|
|
92
|
+
value="567"
|
|
93
|
+
subtitle="Monthly active users"
|
|
94
|
+
category={3}
|
|
95
|
+
icon={<Users className="w-5 h-5" />}
|
|
96
|
+
trend={{ value: -3.2, label: "vs last month" }}
|
|
97
|
+
/>
|
|
98
|
+
<StatCard
|
|
99
|
+
title="Data Freshness"
|
|
100
|
+
value="4.2hrs"
|
|
101
|
+
subtitle="Average delay"
|
|
102
|
+
category={4}
|
|
103
|
+
icon={<Activity className="w-5 h-5" />}
|
|
104
|
+
onClick={() => alert('Card clicked!')}
|
|
105
|
+
/>
|
|
106
|
+
<StatCard
|
|
107
|
+
title="Query Performance"
|
|
108
|
+
value="1.8s"
|
|
109
|
+
subtitle="Average duration"
|
|
110
|
+
category={5}
|
|
111
|
+
icon={<TrendingUp className="w-5 h-5" />}
|
|
112
|
+
trend={{ value: 0 }}
|
|
113
|
+
/>
|
|
114
|
+
<StatCard
|
|
115
|
+
title="Data Volume"
|
|
116
|
+
value="2.4TB"
|
|
117
|
+
subtitle="Total processed"
|
|
118
|
+
category={6}
|
|
119
|
+
icon={<Database className="w-5 h-5" />}
|
|
120
|
+
/>
|
|
121
|
+
</div>
|
|
122
|
+
)
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
title: "DetailedCard Component",
|
|
126
|
+
description: "Rich information cards with multiple metrics, descriptions, and interactive elements for complex data display.",
|
|
127
|
+
badge: {
|
|
128
|
+
text: "Business Component",
|
|
129
|
+
variant: "category",
|
|
130
|
+
category: 2
|
|
131
|
+
},
|
|
132
|
+
category: 2,
|
|
133
|
+
children: (
|
|
134
|
+
<div className="grid md:grid-cols-1 lg:grid-cols-2 gap-6">
|
|
135
|
+
<DetailedCard
|
|
136
|
+
title="Customer Analytics Model"
|
|
137
|
+
subtitle="Production Model"
|
|
138
|
+
description="Advanced analytics model for customer behavior tracking and segmentation. Processes customer interactions, purchase patterns, and engagement metrics."
|
|
139
|
+
category={1}
|
|
140
|
+
icon={<Database className="w-5 h-5" />}
|
|
141
|
+
primaryMetric={{
|
|
142
|
+
label: "Success Rate",
|
|
143
|
+
value: "98.7%",
|
|
144
|
+
trend: { value: 5.2, label: "vs last week" }
|
|
145
|
+
}}
|
|
146
|
+
secondaryMetrics={[
|
|
147
|
+
{ label: "Daily Runs", value: "24", status: "success" },
|
|
148
|
+
{ label: "Avg Runtime", value: "2.4min", status: "info" },
|
|
149
|
+
{ label: "Data Quality", value: "95%", status: "warning" },
|
|
150
|
+
{ label: "Test Coverage", value: "87%", status: "success" }
|
|
151
|
+
]}
|
|
152
|
+
tags={[
|
|
153
|
+
{ label: "Production", status: "success" },
|
|
154
|
+
{ label: "Analytics", category: 1 },
|
|
155
|
+
{ label: "Customer Data", category: 3 }
|
|
156
|
+
]}
|
|
157
|
+
onClick={() => alert('Model details clicked!')}
|
|
158
|
+
/>
|
|
159
|
+
|
|
160
|
+
<DetailedCard
|
|
161
|
+
title="Revenue Forecasting Pipeline"
|
|
162
|
+
subtitle="Critical Business Model"
|
|
163
|
+
description="Machine learning pipeline for revenue forecasting and business intelligence. Combines historical data with market trends for accurate predictions."
|
|
164
|
+
category={2}
|
|
165
|
+
icon={<TrendingUp className="w-5 h-5" />}
|
|
166
|
+
primaryMetric={{
|
|
167
|
+
label: "Accuracy Score",
|
|
168
|
+
value: "94.3%",
|
|
169
|
+
trend: { value: -1.2, label: "vs last month" }
|
|
170
|
+
}}
|
|
171
|
+
secondaryMetrics={[
|
|
172
|
+
{ label: "Predictions", value: "156", status: "info" },
|
|
173
|
+
{ label: "Model Score", value: "0.943", status: "success" },
|
|
174
|
+
{ label: "Data Freshness", value: "2hrs", status: "warning" },
|
|
175
|
+
{ label: "Dependencies", value: "12", status: "neutral" }
|
|
176
|
+
]}
|
|
177
|
+
tags={[
|
|
178
|
+
{ label: "ML Model", category: 5 },
|
|
179
|
+
{ label: "Critical", status: "error" },
|
|
180
|
+
{ label: "Revenue", category: 2 },
|
|
181
|
+
{ label: "Forecasting", category: 4 }
|
|
182
|
+
]}
|
|
183
|
+
onClick={() => alert('Pipeline details clicked!')}
|
|
184
|
+
/>
|
|
185
|
+
</div>
|
|
186
|
+
)
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
}}
|
|
190
|
+
ephemeralExamples={{
|
|
191
|
+
title: "Ephemeral Components",
|
|
192
|
+
description: "Application-specific components built inline for one-off use cases. Consider promoting to shared library if pattern emerges across multiple apps.",
|
|
193
|
+
sections: [
|
|
194
|
+
{
|
|
195
|
+
title: "BankAccountCard",
|
|
196
|
+
description: "Custom card for financial data display - built inline for this demo. Shows how to extend business components for specific domains.",
|
|
197
|
+
badge: {
|
|
198
|
+
text: "App-Specific",
|
|
199
|
+
variant: "category",
|
|
200
|
+
category: 3
|
|
201
|
+
},
|
|
202
|
+
category: 3,
|
|
203
|
+
children: (
|
|
204
|
+
<div className="grid md:grid-cols-2 gap-6">
|
|
205
|
+
{/* BankAccountCard - Inline ephemeral component */}
|
|
206
|
+
<Card category={1} className="p-6">
|
|
207
|
+
<div className="flex items-start justify-between mb-4">
|
|
208
|
+
<div className="flex items-center gap-3">
|
|
209
|
+
<div className="w-10 h-10 rounded bg-category-1/20 flex items-center justify-center">
|
|
210
|
+
<Database className="w-5 h-5 text-category-1" />
|
|
211
|
+
</div>
|
|
212
|
+
<div>
|
|
213
|
+
<h3 className="font-semibold">Checking Account</h3>
|
|
214
|
+
<p className="text-sm text-muted-foreground">Wells Fargo ••••4892</p>
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
<DataBadge variant="status" status="success" size="sm">Active</DataBadge>
|
|
218
|
+
</div>
|
|
219
|
+
|
|
220
|
+
<div className="space-y-3">
|
|
221
|
+
<div className="flex justify-between items-baseline">
|
|
222
|
+
<span className="text-2xl font-bold">$12,847.32</span>
|
|
223
|
+
<span className="text-sm text-muted-foreground">Available Balance</span>
|
|
224
|
+
</div>
|
|
225
|
+
|
|
226
|
+
<div className="grid grid-cols-2 gap-4 pt-3 border-t border-border">
|
|
227
|
+
<div>
|
|
228
|
+
<div className="text-xs text-muted-foreground">Last Transaction</div>
|
|
229
|
+
<div className="text-sm font-medium">-$45.20</div>
|
|
230
|
+
</div>
|
|
231
|
+
<div>
|
|
232
|
+
<div className="text-xs text-muted-foreground">Interest Rate</div>
|
|
233
|
+
<div className="text-sm font-medium">0.15% APY</div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
</Card>
|
|
238
|
+
|
|
239
|
+
<Card category={2} className="p-6">
|
|
240
|
+
<div className="flex items-start justify-between mb-4">
|
|
241
|
+
<div className="flex items-center gap-3">
|
|
242
|
+
<div className="w-10 h-10 rounded bg-category-2/20 flex items-center justify-center">
|
|
243
|
+
<TrendingUp className="w-5 h-5 text-category-2" />
|
|
244
|
+
</div>
|
|
245
|
+
<div>
|
|
246
|
+
<h3 className="font-semibold">Investment Account</h3>
|
|
247
|
+
<p className="text-sm text-muted-foreground">Vanguard ••••7361</p>
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
<DataBadge variant="status" status="info" size="sm">Growth</DataBadge>
|
|
251
|
+
</div>
|
|
252
|
+
|
|
253
|
+
<div className="space-y-3">
|
|
254
|
+
<div className="flex justify-between items-baseline">
|
|
255
|
+
<span className="text-2xl font-bold">$89,234.56</span>
|
|
256
|
+
<span className="text-sm text-category-2 font-medium">+$2,341 (2.7%)</span>
|
|
257
|
+
</div>
|
|
258
|
+
|
|
259
|
+
<div className="grid grid-cols-2 gap-4 pt-3 border-t border-border">
|
|
260
|
+
<div>
|
|
261
|
+
<div className="text-xs text-muted-foreground">Portfolio Value</div>
|
|
262
|
+
<div className="text-sm font-medium">$91,575.91</div>
|
|
263
|
+
</div>
|
|
264
|
+
<div>
|
|
265
|
+
<div className="text-xs text-muted-foreground">Unrealized P&L</div>
|
|
266
|
+
<div className="text-sm font-medium text-category-2">+$4,682.45</div>
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
</Card>
|
|
271
|
+
</div>
|
|
272
|
+
)
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
title: "FileUpload Component",
|
|
276
|
+
description: "Drag-and-drop file upload component with progress tracking, validation, and preview support for modern file handling workflows.",
|
|
277
|
+
badge: {
|
|
278
|
+
text: "Business Component",
|
|
279
|
+
variant: "category",
|
|
280
|
+
category: 2
|
|
281
|
+
},
|
|
282
|
+
category: 2,
|
|
283
|
+
children: (
|
|
284
|
+
<div className="space-y-6">
|
|
285
|
+
{/* Basic File Upload */}
|
|
286
|
+
<Card className="p-6" category={2}>
|
|
287
|
+
<h5 className="font-medium mb-4">Basic File Upload</h5>
|
|
288
|
+
<FileUpload
|
|
289
|
+
accept="image/*,.pdf,.doc,.docx"
|
|
290
|
+
multiple
|
|
291
|
+
maxSize={5 * 1024 * 1024} // 5MB
|
|
292
|
+
maxFiles={3}
|
|
293
|
+
uploadText="Choose files or drag and drop"
|
|
294
|
+
dragText="Drop files here"
|
|
295
|
+
onChange={(files) => console.log('Files changed:', files)}
|
|
296
|
+
onUpload={async (files) => {
|
|
297
|
+
console.log('Uploading files:', files);
|
|
298
|
+
// Simulate upload delay
|
|
299
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
300
|
+
}}
|
|
301
|
+
/>
|
|
302
|
+
</Card>
|
|
303
|
+
|
|
304
|
+
{/* Compact Variant */}
|
|
305
|
+
<div className="grid md:grid-cols-2 gap-6">
|
|
306
|
+
<Card className="p-4" category={2}>
|
|
307
|
+
<h5 className="font-medium mb-4">Compact Variant</h5>
|
|
308
|
+
<FileUpload
|
|
309
|
+
variant="compact"
|
|
310
|
+
accept="image/*"
|
|
311
|
+
maxSize={2 * 1024 * 1024} // 2MB
|
|
312
|
+
maxFiles={1}
|
|
313
|
+
uploadText="Upload image"
|
|
314
|
+
onChange={(files) => console.log('Image files:', files)}
|
|
315
|
+
/>
|
|
316
|
+
</Card>
|
|
317
|
+
|
|
318
|
+
<Card className="p-4" category={2}>
|
|
319
|
+
<h5 className="font-medium mb-4">Large Variant</h5>
|
|
320
|
+
<FileUpload
|
|
321
|
+
variant="large"
|
|
322
|
+
accept=".zip,.tar,.gz"
|
|
323
|
+
maxSize={50 * 1024 * 1024} // 50MB
|
|
324
|
+
maxFiles={1}
|
|
325
|
+
uploadText="Upload archive"
|
|
326
|
+
dragText="Drop your archive here"
|
|
327
|
+
onChange={(files) => console.log('Archive files:', files)}
|
|
328
|
+
/>
|
|
329
|
+
</Card>
|
|
330
|
+
</div>
|
|
331
|
+
|
|
332
|
+
{/* Different File Types */}
|
|
333
|
+
<Card className="p-6" category={2}>
|
|
334
|
+
<h5 className="font-medium mb-4">Different File Type Restrictions</h5>
|
|
335
|
+
<div className="grid md:grid-cols-3 gap-4">
|
|
336
|
+
<div>
|
|
337
|
+
<h6 className="text-sm font-medium mb-2">Images Only</h6>
|
|
338
|
+
<FileUpload
|
|
339
|
+
variant="compact"
|
|
340
|
+
accept="image/*"
|
|
341
|
+
maxSize={10 * 1024 * 1024}
|
|
342
|
+
maxFiles={5}
|
|
343
|
+
showPreview
|
|
344
|
+
uploadText="Images"
|
|
345
|
+
onChange={(files) => console.log('Images:', files)}
|
|
346
|
+
/>
|
|
347
|
+
</div>
|
|
348
|
+
<div>
|
|
349
|
+
<h6 className="text-sm font-medium mb-2">Documents</h6>
|
|
350
|
+
<FileUpload
|
|
351
|
+
variant="compact"
|
|
352
|
+
accept=".pdf,.doc,.docx,.txt"
|
|
353
|
+
maxSize={20 * 1024 * 1024}
|
|
354
|
+
maxFiles={10}
|
|
355
|
+
uploadText="Documents"
|
|
356
|
+
onChange={(files) => console.log('Documents:', files)}
|
|
357
|
+
/>
|
|
358
|
+
</div>
|
|
359
|
+
<div>
|
|
360
|
+
<h6 className="text-sm font-medium mb-2">CSV/Excel</h6>
|
|
361
|
+
<FileUpload
|
|
362
|
+
variant="compact"
|
|
363
|
+
accept=".csv,.xlsx,.xls"
|
|
364
|
+
maxSize={50 * 1024 * 1024}
|
|
365
|
+
maxFiles={1}
|
|
366
|
+
uploadText="Data files"
|
|
367
|
+
onChange={(files) => console.log('Data files:', files)}
|
|
368
|
+
/>
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
</Card>
|
|
372
|
+
|
|
373
|
+
{/* Error States */}
|
|
374
|
+
<Card className="p-6" category={2}>
|
|
375
|
+
<h5 className="font-medium mb-4">Error State Example</h5>
|
|
376
|
+
<FileUpload
|
|
377
|
+
accept="image/*"
|
|
378
|
+
maxSize={100 * 1024} // Very small limit for demo
|
|
379
|
+
maxFiles={1}
|
|
380
|
+
error="File size too large. Please select a smaller file."
|
|
381
|
+
uploadText="Try uploading a large image to see error"
|
|
382
|
+
onChange={(files) => console.log('Error demo files:', files)}
|
|
383
|
+
/>
|
|
384
|
+
</Card>
|
|
385
|
+
</div>
|
|
386
|
+
)
|
|
387
|
+
}
|
|
388
|
+
]
|
|
389
|
+
}}
|
|
390
|
+
/>
|
|
391
|
+
);
|
|
392
|
+
};
|