@pattern-stack/frontend-patterns 0.1.2 → 0.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +80 -0
- package/README.md +17 -2
- package/cli/commands/generate-hooks.ts +316 -0
- package/cli/commands/init.ts +33 -0
- package/cli/commands/scaffold.ts +224 -0
- package/cli/index.ts +122 -0
- package/cli/src/codegen/openapi/client-generator.js +659 -0
- package/cli/src/codegen/openapi/hook-generator.js +725 -0
- package/cli/src/codegen/openapi/parser.js +274 -0
- package/cli/src/codegen/openapi/type-generator.js +329 -0
- package/dist/atoms/components/core/Avatar/Avatar.d.ts +41 -0
- package/dist/atoms/components/core/Avatar/Avatar.d.ts.map +1 -0
- package/dist/atoms/components/core/Avatar/index.d.ts +2 -0
- package/dist/atoms/components/core/Avatar/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Badge/Badge.d.ts +38 -0
- package/dist/atoms/components/core/Badge/Badge.d.ts.map +1 -0
- package/dist/atoms/components/core/Badge/index.d.ts +2 -0
- package/dist/atoms/components/core/Badge/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Button/Button.d.ts +28 -0
- package/dist/atoms/components/core/Button/Button.d.ts.map +1 -0
- package/dist/atoms/components/core/Button/index.d.ts +3 -0
- package/dist/atoms/components/core/Button/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Card/Card.d.ts +41 -0
- package/dist/atoms/components/core/Card/Card.d.ts.map +1 -0
- package/dist/atoms/components/core/Card/index.d.ts +3 -0
- package/dist/atoms/components/core/Card/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Checkbox/Checkbox.d.ts +28 -0
- package/dist/atoms/components/core/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/atoms/components/core/Checkbox/index.d.ts +3 -0
- package/dist/atoms/components/core/Checkbox/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Input/Input.d.ts +37 -0
- package/dist/atoms/components/core/Input/Input.d.ts.map +1 -0
- package/dist/atoms/components/core/Input/index.d.ts +3 -0
- package/dist/atoms/components/core/Input/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Label/Label.d.ts +22 -0
- package/dist/atoms/components/core/Label/Label.d.ts.map +1 -0
- package/dist/atoms/components/core/Label/index.d.ts +3 -0
- package/dist/atoms/components/core/Label/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Select/Select.d.ts +42 -0
- package/dist/atoms/components/core/Select/Select.d.ts.map +1 -0
- package/dist/atoms/components/core/Select/index.d.ts +3 -0
- package/dist/atoms/components/core/Select/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Spinner/Spinner.d.ts +25 -0
- package/dist/atoms/components/core/Spinner/Spinner.d.ts.map +1 -0
- package/dist/atoms/components/core/Spinner/index.d.ts +3 -0
- package/dist/atoms/components/core/Spinner/index.d.ts.map +1 -0
- package/dist/atoms/components/core/Switch/Switch.d.ts +35 -0
- package/dist/atoms/components/core/Switch/Switch.d.ts.map +1 -0
- package/dist/atoms/components/core/Switch/index.d.ts +2 -0
- package/dist/atoms/components/core/Switch/index.d.ts.map +1 -0
- package/dist/atoms/components/core/index.d.ts +11 -0
- package/dist/atoms/components/core/index.d.ts.map +1 -0
- package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts +4 -0
- package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts.map +1 -0
- package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts +9 -0
- package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts.map +1 -0
- package/dist/atoms/components/data/ActivityFeed/index.d.ts +4 -0
- package/dist/atoms/components/data/ActivityFeed/index.d.ts.map +1 -0
- package/dist/atoms/components/data/ActivityFeed/types.d.ts +26 -0
- package/dist/atoms/components/data/ActivityFeed/types.d.ts.map +1 -0
- package/dist/atoms/components/data/ActivityFeed/utils.d.ts +5 -0
- package/dist/atoms/components/data/ActivityFeed/utils.d.ts.map +1 -0
- package/dist/atoms/components/data/Chart/Chart.d.ts +84 -0
- package/dist/atoms/components/data/Chart/Chart.d.ts.map +1 -0
- package/dist/atoms/components/data/Chart/index.d.ts +3 -0
- package/dist/atoms/components/data/Chart/index.d.ts.map +1 -0
- package/dist/atoms/components/data/DataBadge/DataBadge.d.ts +18 -0
- package/dist/atoms/components/data/DataBadge/DataBadge.d.ts.map +1 -0
- package/dist/atoms/components/data/DataBadge/index.d.ts +2 -0
- package/dist/atoms/components/data/DataBadge/index.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/DataTable.d.ts +5 -0
- package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +51 -0
- package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +1 -0
- package/dist/atoms/{composed → components/data}/DataTable/TableCellWithTooltip.d.ts +1 -1
- package/dist/atoms/components/data/DataTable/TableCellWithTooltip.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/index.d.ts +3 -0
- package/dist/atoms/components/data/DataTable/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/data}/DetailedCard/DetailedCard.d.ts +4 -4
- package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts.map +1 -0
- package/dist/atoms/components/data/DetailedCard/index.d.ts +3 -0
- package/dist/atoms/components/data/DetailedCard/index.d.ts.map +1 -0
- package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts +24 -0
- package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts.map +1 -0
- package/dist/atoms/components/data/EntityIcon/index.d.ts +2 -0
- package/dist/atoms/components/data/EntityIcon/index.d.ts.map +1 -0
- package/dist/atoms/components/data/IconBadge/IconBadge.d.ts +17 -0
- package/dist/atoms/components/data/IconBadge/IconBadge.d.ts.map +1 -0
- package/dist/atoms/components/data/IconBadge/index.d.ts +3 -0
- package/dist/atoms/components/data/IconBadge/index.d.ts.map +1 -0
- package/dist/atoms/components/data/ListCard/ListCard.d.ts +32 -0
- package/dist/atoms/components/data/ListCard/ListCard.d.ts.map +1 -0
- package/dist/atoms/components/data/ListCard/index.d.ts +2 -0
- package/dist/atoms/components/data/ListCard/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/data}/ProgressBar/ProgressBar.d.ts +5 -5
- package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts.map +1 -0
- package/dist/atoms/components/data/ProgressBar/index.d.ts +2 -0
- package/dist/atoms/components/data/ProgressBar/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/data}/StatCard/StatCard.d.ts +3 -3
- package/dist/atoms/components/data/StatCard/StatCard.d.ts.map +1 -0
- package/dist/atoms/components/data/StatCard/index.d.ts +2 -0
- package/dist/atoms/components/data/StatCard/index.d.ts.map +1 -0
- package/dist/atoms/components/data/Table/Table.d.ts +41 -0
- package/dist/atoms/components/data/Table/Table.d.ts.map +1 -0
- package/dist/atoms/components/data/Table/index.d.ts +2 -0
- package/dist/atoms/components/data/Table/index.d.ts.map +1 -0
- package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts +26 -0
- package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts.map +1 -0
- package/dist/atoms/components/data/TruncatedText/index.d.ts +2 -0
- package/dist/atoms/components/data/TruncatedText/index.d.ts.map +1 -0
- package/dist/atoms/components/data/index.d.ts +13 -0
- package/dist/atoms/components/data/index.d.ts.map +1 -0
- package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts +19 -0
- package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts.map +1 -0
- package/dist/atoms/components/domain/SalesPanel/index.d.ts +2 -0
- package/dist/atoms/components/domain/SalesPanel/index.d.ts.map +1 -0
- package/dist/atoms/components/domain/SalesPanel/mockSalesData.d.ts +63 -0
- package/dist/atoms/components/domain/SalesPanel/mockSalesData.d.ts.map +1 -0
- package/dist/atoms/components/domain/index.d.ts +2 -0
- package/dist/atoms/components/domain/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/feedback}/Alert/Alert.d.ts +4 -4
- package/dist/atoms/components/feedback/Alert/Alert.d.ts.map +1 -0
- package/dist/atoms/components/feedback/Alert/index.d.ts +2 -0
- package/dist/atoms/components/feedback/Alert/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/feedback}/EmptyState/EmptyState.d.ts +3 -3
- package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts.map +1 -0
- package/dist/atoms/components/feedback/EmptyState/index.d.ts +2 -0
- package/dist/atoms/components/feedback/EmptyState/index.d.ts.map +1 -0
- package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +61 -0
- package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
- package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts +2 -0
- package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts.map +1 -0
- package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts +67 -0
- package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts.map +1 -0
- package/dist/atoms/components/feedback/Skeleton/index.d.ts +2 -0
- package/dist/atoms/components/feedback/Skeleton/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/feedback}/Toast/Toast.d.ts +4 -4
- package/dist/atoms/components/feedback/Toast/Toast.d.ts.map +1 -0
- package/dist/atoms/{composed → components/feedback}/Toast/index.d.ts +1 -1
- package/dist/atoms/components/feedback/Toast/index.d.ts.map +1 -0
- package/dist/atoms/components/feedback/index.d.ts +6 -0
- package/dist/atoms/components/feedback/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/forms}/DateTimePicker/DateTimePicker.d.ts +6 -6
- package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts.map +1 -0
- package/dist/atoms/components/forms/DateTimePicker/index.d.ts +3 -0
- package/dist/atoms/components/forms/DateTimePicker/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/forms}/FileUpload/FileUpload.d.ts +3 -3
- package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts.map +1 -0
- package/dist/atoms/components/forms/FileUpload/index.d.ts +3 -0
- package/dist/atoms/components/forms/FileUpload/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/forms}/FormField/FormField.d.ts +2 -2
- package/dist/atoms/components/forms/FormField/FormField.d.ts.map +1 -0
- package/dist/atoms/components/forms/FormField/index.d.ts +2 -0
- package/dist/atoms/components/forms/FormField/index.d.ts.map +1 -0
- package/dist/atoms/components/forms/index.d.ts +4 -0
- package/dist/atoms/components/forms/index.d.ts.map +1 -0
- package/dist/atoms/components/index.d.ts +10 -0
- package/dist/atoms/components/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/layout}/Accordion/Accordion.d.ts +3 -3
- package/dist/atoms/components/layout/Accordion/Accordion.d.ts.map +1 -0
- package/dist/atoms/components/layout/Accordion/index.d.ts +2 -0
- package/dist/atoms/components/layout/Accordion/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/layout}/Breadcrumb/Breadcrumb.d.ts +2 -3
- package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/atoms/components/layout/Breadcrumb/index.d.ts +2 -0
- package/dist/atoms/components/layout/Breadcrumb/index.d.ts.map +1 -0
- package/dist/atoms/components/layout/Dialog/Dialog.d.ts +45 -0
- package/dist/atoms/components/layout/Dialog/Dialog.d.ts.map +1 -0
- package/dist/atoms/components/layout/Dialog/index.d.ts +3 -0
- package/dist/atoms/components/layout/Dialog/index.d.ts.map +1 -0
- package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts +40 -0
- package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts.map +1 -0
- package/dist/atoms/components/layout/Dropdown/index.d.ts +3 -0
- package/dist/atoms/components/layout/Dropdown/index.d.ts.map +1 -0
- package/dist/atoms/components/layout/Modal/Modal.d.ts +18 -0
- package/dist/atoms/components/layout/Modal/Modal.d.ts.map +1 -0
- package/dist/atoms/components/layout/Modal/index.d.ts +3 -0
- package/dist/atoms/components/layout/Modal/index.d.ts.map +1 -0
- package/dist/atoms/components/layout/Tabs/Tabs.d.ts +46 -0
- package/dist/atoms/components/layout/Tabs/Tabs.d.ts.map +1 -0
- package/dist/atoms/components/layout/Tabs/index.d.ts +2 -0
- package/dist/atoms/components/layout/Tabs/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/layout}/Tooltip/Tooltip.d.ts +6 -6
- package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/atoms/components/layout/Tooltip/index.d.ts +2 -0
- package/dist/atoms/components/layout/Tooltip/index.d.ts.map +1 -0
- package/dist/atoms/components/layout/index.d.ts +8 -0
- package/dist/atoms/components/layout/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/navigation}/GlobalSearch/GlobalSearch.d.ts +2 -3
- package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts.map +1 -0
- package/dist/atoms/components/navigation/GlobalSearch/index.d.ts +2 -0
- package/dist/atoms/components/navigation/GlobalSearch/index.d.ts.map +1 -0
- package/dist/atoms/components/navigation/index.d.ts +2 -0
- package/dist/atoms/components/navigation/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/theme}/ColorSwatch/ColorSwatch.d.ts +2 -2
- package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts.map +1 -0
- package/dist/atoms/components/theme/ColorSwatch/index.d.ts +2 -0
- package/dist/atoms/components/theme/ColorSwatch/index.d.ts.map +1 -0
- package/dist/atoms/components/theme/DarkModeToggle.d.ts.map +1 -0
- package/dist/atoms/{composed → components/theme}/PaletteSwitcher.d.ts +1 -1
- package/dist/atoms/components/theme/PaletteSwitcher.d.ts.map +1 -0
- package/dist/atoms/components/theme/StyleGuide.d.ts +3 -0
- package/dist/atoms/components/theme/StyleGuide.d.ts.map +1 -0
- package/dist/atoms/components/theme/index.d.ts +5 -0
- package/dist/atoms/components/theme/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/user}/UserAvatar/UserAvatar.d.ts +2 -3
- package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts.map +1 -0
- package/dist/atoms/components/user/UserAvatar/index.d.ts +2 -0
- package/dist/atoms/components/user/UserAvatar/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/user}/UserMenu/UserMenu.d.ts +2 -3
- package/dist/atoms/components/user/UserMenu/UserMenu.d.ts.map +1 -0
- package/dist/atoms/components/user/UserMenu/index.d.ts +2 -0
- package/dist/atoms/components/user/UserMenu/index.d.ts.map +1 -0
- package/dist/atoms/components/user/index.d.ts +3 -0
- package/dist/atoms/components/user/index.d.ts.map +1 -0
- package/dist/atoms/config/responsive.d.ts +147 -0
- package/dist/atoms/config/responsive.d.ts.map +1 -0
- package/dist/atoms/hooks/index.d.ts +5 -0
- package/dist/atoms/hooks/index.d.ts.map +1 -0
- package/dist/atoms/hooks/use-toast.d.ts +16 -0
- package/dist/atoms/hooks/use-toast.d.ts.map +1 -0
- package/dist/atoms/hooks/useApi.d.ts +2 -2
- package/dist/atoms/hooks/useApi.d.ts.map +1 -1
- package/dist/atoms/hooks/useResponsive.d.ts +42 -0
- package/dist/atoms/hooks/useResponsive.d.ts.map +1 -0
- package/dist/atoms/index.d.ts +6 -8
- package/dist/atoms/index.d.ts.map +1 -1
- package/dist/atoms/primitives/Badge.d.ts +10 -0
- package/dist/atoms/primitives/Badge.d.ts.map +1 -0
- package/dist/atoms/{ui → primitives}/ErrorBoundary.d.ts +3 -3
- package/dist/atoms/primitives/ErrorBoundary.d.ts.map +1 -0
- package/dist/atoms/primitives/Select.d.ts +30 -0
- package/dist/atoms/primitives/Select.d.ts.map +1 -0
- package/dist/atoms/primitives/Switch.d.ts +10 -0
- package/dist/atoms/primitives/Switch.d.ts.map +1 -0
- package/dist/atoms/primitives/Tabs.d.ts +30 -0
- package/dist/atoms/primitives/Tabs.d.ts.map +1 -0
- package/dist/atoms/primitives/avatar.d.ts.map +1 -0
- package/dist/atoms/primitives/button.d.ts +11 -0
- package/dist/atoms/primitives/button.d.ts.map +1 -0
- package/dist/atoms/primitives/button.variants.d.ts +7 -0
- package/dist/atoms/primitives/button.variants.d.ts.map +1 -0
- package/dist/atoms/{ui → primitives}/card.d.ts +2 -1
- package/dist/atoms/primitives/card.d.ts.map +1 -0
- package/dist/atoms/primitives/checkbox.d.ts +12 -0
- package/dist/atoms/primitives/checkbox.d.ts.map +1 -0
- package/dist/atoms/primitives/dialog.d.ts +34 -0
- package/dist/atoms/primitives/dialog.d.ts.map +1 -0
- package/dist/atoms/primitives/dropdown-menu.d.ts.map +1 -0
- package/dist/atoms/primitives/index.d.ts +17 -0
- package/dist/atoms/primitives/index.d.ts.map +1 -0
- package/dist/atoms/primitives/input.d.ts.map +1 -0
- package/dist/atoms/{ui → primitives}/label.d.ts +4 -1
- package/dist/atoms/primitives/label.d.ts.map +1 -0
- package/dist/atoms/primitives/skeleton.d.ts.map +1 -0
- package/dist/atoms/{ui → primitives}/spinner.d.ts +4 -4
- package/dist/atoms/primitives/spinner.d.ts.map +1 -0
- package/dist/atoms/primitives/table.d.ts.map +1 -0
- package/dist/atoms/services/api/client.d.ts +11 -2
- package/dist/atoms/services/api/client.d.ts.map +1 -1
- package/dist/atoms/services/auth-service.d.ts +1 -1
- package/dist/atoms/services/auth-service.d.ts.map +1 -1
- package/dist/atoms/services/health.d.ts +2 -2
- package/dist/atoms/services/index.d.ts +3 -3
- package/dist/atoms/shared/config/dashboard-sizes.d.ts +17 -17
- package/dist/atoms/shared/config/dashboard-sizes.d.ts.map +1 -1
- package/dist/atoms/shared/config/environment.d.ts.map +1 -1
- package/dist/atoms/shared/index.d.ts +4 -3
- package/dist/atoms/shared/index.d.ts.map +1 -1
- package/dist/atoms/types/auth.d.ts +11 -1
- package/dist/atoms/types/auth.d.ts.map +1 -1
- package/dist/atoms/types/entity-config.d.ts +117 -0
- package/dist/atoms/types/entity-config.d.ts.map +1 -0
- package/dist/atoms/types/generated.d.ts.map +1 -1
- package/dist/atoms/types/index.d.ts +6 -3
- package/dist/atoms/types/index.d.ts.map +1 -1
- package/dist/atoms/types/loading.d.ts +1 -1
- package/dist/atoms/types/navigation.d.ts +30 -0
- package/dist/atoms/types/navigation.d.ts.map +1 -0
- package/dist/atoms/types/ui-config.d.ts +50 -0
- package/dist/atoms/types/ui-config.d.ts.map +1 -0
- package/dist/atoms/utils/animations.d.ts +7 -7
- package/dist/atoms/utils/animations.d.ts.map +1 -1
- package/dist/atoms/utils/color-manager.d.ts +68 -0
- package/dist/atoms/utils/color-manager.d.ts.map +1 -0
- package/dist/atoms/utils/debounce.d.ts +6 -0
- package/dist/atoms/utils/debounce.d.ts.map +1 -0
- package/dist/atoms/utils/field-detection.d.ts +15 -0
- package/dist/atoms/utils/field-detection.d.ts.map +1 -0
- package/dist/atoms/utils/icon-map.d.ts +68 -0
- package/dist/atoms/utils/icon-map.d.ts.map +1 -0
- package/dist/atoms/utils/icon-resolver.d.ts +16 -0
- package/dist/atoms/utils/icon-resolver.d.ts.map +1 -0
- package/dist/atoms/utils/index.d.ts +5 -0
- package/dist/atoms/utils/index.d.ts.map +1 -0
- package/dist/atoms/utils/metric-engine.d.ts +22 -0
- package/dist/atoms/utils/metric-engine.d.ts.map +1 -0
- package/dist/atoms/utils/tooltip-helpers.d.ts +1 -1
- package/dist/atoms/utils/tooltip-helpers.d.ts.map +1 -1
- package/dist/atoms/utils/ui-mapping.d.ts +19 -0
- package/dist/atoms/utils/ui-mapping.d.ts.map +1 -0
- package/dist/atoms/utils/utils.d.ts +7 -1
- package/dist/atoms/utils/utils.d.ts.map +1 -1
- package/dist/codegen/openapi/bulk-types.d.ts +142 -0
- package/dist/codegen/openapi/bulk-types.d.ts.map +1 -0
- package/dist/features/auth/components/LoginForm.d.ts.map +1 -1
- package/dist/features/auth/components/LogoutButton.d.ts.map +1 -1
- package/dist/features/auth/components/ProtectedRoute.d.ts +2 -2
- package/dist/features/auth/components/ProtectedRoute.d.ts.map +1 -1
- package/dist/features/auth/components/index.d.ts +3 -3
- package/dist/features/auth/hooks/auth-context.d.ts +3 -0
- package/dist/features/auth/hooks/auth-context.d.ts.map +1 -0
- package/dist/features/auth/hooks/index.d.ts +4 -2
- package/dist/features/auth/hooks/index.d.ts.map +1 -1
- package/dist/features/auth/hooks/use-auth.d.ts +3 -0
- package/dist/features/auth/hooks/use-auth.d.ts.map +1 -0
- package/dist/features/auth/hooks/useAuth.d.ts +3 -4
- package/dist/features/auth/hooks/useAuth.d.ts.map +1 -1
- package/dist/features/auth/hooks/useAuthContext.d.ts +7 -0
- package/dist/features/auth/hooks/useAuthContext.d.ts.map +1 -0
- package/dist/features/auth/hooks/usePermissions.d.ts +3 -3
- package/dist/features/auth/index.d.ts +3 -2
- package/dist/features/auth/index.d.ts.map +1 -1
- package/dist/features/auth/providers/MockAuthProvider.d.ts +8 -0
- package/dist/features/auth/providers/MockAuthProvider.d.ts.map +1 -0
- package/dist/features/auth/providers/index.d.ts +3 -0
- package/dist/features/auth/providers/index.d.ts.map +1 -0
- package/dist/features/auth/providers/mock-auth-context.d.ts +3 -0
- package/dist/features/auth/providers/mock-auth-context.d.ts.map +1 -0
- package/dist/features/auth/providers/use-mock-auth.d.ts +3 -0
- package/dist/features/auth/providers/use-mock-auth.d.ts.map +1 -0
- package/dist/features/auth/services/mock-auth-service.d.ts +17 -0
- package/dist/features/auth/services/mock-auth-service.d.ts.map +1 -0
- package/dist/features/index.d.ts +1 -1
- package/dist/frontend-patterns.css +5069 -516
- package/dist/index.d.ts +17 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +27080 -8451
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +27103 -8453
- package/dist/index.js.map +1 -1
- package/dist/molecules/feedback/index.d.ts +2 -0
- package/dist/molecules/feedback/index.d.ts.map +1 -0
- package/dist/molecules/forms/FormGroup.d.ts +2 -2
- package/dist/molecules/forms/FormGroup.d.ts.map +1 -1
- package/dist/molecules/forms/SearchInput.d.ts +1 -1
- package/dist/molecules/forms/SearchInput.d.ts.map +1 -1
- package/dist/molecules/forms/index.d.ts +2 -2
- package/dist/molecules/forms/index.d.ts.map +1 -1
- package/dist/molecules/index.d.ts +3 -3
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts +1 -1
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -1
- package/dist/molecules/layout/AppHeader/index.d.ts +1 -1
- package/dist/molecules/layout/BulkSelectionBar.d.ts +15 -0
- package/dist/molecules/layout/BulkSelectionBar.d.ts.map +1 -0
- package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts +16 -0
- package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts.map +1 -0
- package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts +2 -0
- package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts.map +1 -0
- package/dist/molecules/layout/NavigationContext.d.ts +9 -0
- package/dist/molecules/layout/NavigationContext.d.ts.map +1 -0
- package/dist/molecules/layout/PageTemplate.d.ts +1 -1
- package/dist/molecules/layout/PageTemplate.d.ts.map +1 -1
- package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts +4 -4
- package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts.map +1 -1
- package/dist/molecules/layout/SectionHeader/index.d.ts +1 -1
- package/dist/molecules/layout/ShowcaseSection.d.ts +4 -4
- package/dist/molecules/layout/ShowcaseSection.d.ts.map +1 -1
- package/dist/molecules/layout/Sidebar.d.ts.map +1 -1
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +3 -1
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -1
- package/dist/molecules/layout/SidebarButton/index.d.ts +1 -1
- package/dist/molecules/layout/SidebarContext.d.ts +1 -8
- package/dist/molecules/layout/SidebarContext.d.ts.map +1 -1
- package/dist/molecules/layout/index.d.ts +14 -7
- package/dist/molecules/layout/index.d.ts.map +1 -1
- package/dist/molecules/layout/navigation-context.d.ts +9 -0
- package/dist/molecules/layout/navigation-context.d.ts.map +1 -0
- package/dist/molecules/layout/sidebar-context.d.ts +7 -0
- package/dist/molecules/layout/sidebar-context.d.ts.map +1 -0
- package/dist/molecules/layout/use-navigation.d.ts +2 -0
- package/dist/molecules/layout/use-navigation.d.ts.map +1 -0
- package/dist/molecules/layout/use-sidebar.d.ts +2 -0
- package/dist/molecules/layout/use-sidebar.d.ts.map +1 -0
- package/dist/molecules/navigation/NavMenu.d.ts +2 -2
- package/dist/molecules/navigation/NavMenu.d.ts.map +1 -1
- package/dist/molecules/navigation/Pagination.d.ts +2 -2
- package/dist/molecules/navigation/index.d.ts +2 -2
- package/dist/organisms/index.d.ts +1 -1
- package/dist/organisms/showcase/ComponentShowcasePage.d.ts +1 -1
- package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -1
- package/dist/templates/AuthTemplate.d.ts +4 -4
- package/dist/templates/AuthTemplate.d.ts.map +1 -1
- package/dist/templates/ComponentShowcaseTemplate.d.ts +7 -7
- package/dist/templates/ComponentShowcaseTemplate.d.ts.map +1 -1
- package/dist/templates/DashboardTemplate.d.ts +3 -3
- package/dist/templates/DashboardTemplate.d.ts.map +1 -1
- package/dist/templates/DataTemplate.d.ts +3 -3
- package/dist/templates/DataTemplate.d.ts.map +1 -1
- package/dist/templates/EnhancedDataTemplate.d.ts +188 -0
- package/dist/templates/EnhancedDataTemplate.d.ts.map +1 -0
- package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts +18 -0
- package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts.map +1 -0
- package/dist/templates/EnhancedDataTemplate.hooks.d.ts +22 -0
- package/dist/templates/EnhancedDataTemplate.hooks.d.ts.map +1 -0
- package/dist/templates/admin/AdminCRUDTemplate.d.ts +4 -4
- package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -1
- package/dist/templates/admin/AdminDashboardTemplate.d.ts +10 -13
- package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -1
- package/dist/templates/admin/AdminDetailTemplate.d.ts +4 -4
- package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -1
- package/dist/templates/admin/index.d.ts +3 -3
- package/dist/templates/admin/index.d.ts.map +1 -1
- package/dist/templates/api/APIDataTemplate.d.ts +71 -0
- package/dist/templates/api/APIDataTemplate.d.ts.map +1 -0
- package/dist/templates/api/create-api-data-template.d.ts +4 -0
- package/dist/templates/api/create-api-data-template.d.ts.map +1 -0
- package/dist/templates/api/index.d.ts +9 -0
- package/dist/templates/api/index.d.ts.map +1 -0
- package/dist/templates/factory.d.ts +4 -3
- package/dist/templates/factory.d.ts.map +1 -1
- package/dist/templates/index.d.ts +8 -6
- package/dist/templates/index.d.ts.map +1 -1
- package/package.json +38 -9
- package/dist/atoms/composed/Accordion/Accordion.d.ts.map +0 -1
- package/dist/atoms/composed/Accordion/index.d.ts +0 -2
- package/dist/atoms/composed/Accordion/index.d.ts.map +0 -1
- 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.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 +0 -3
- package/dist/atoms/composed/Chart/index.d.ts.map +0 -1
- package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts.map +0 -1
- package/dist/atoms/composed/ColorSwatch/index.d.ts +0 -2
- package/dist/atoms/composed/ColorSwatch/index.d.ts.map +0 -1
- 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.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.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.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.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.map +0 -1
- package/dist/atoms/composed/FileUpload/index.d.ts +0 -3
- package/dist/atoms/composed/FileUpload/index.d.ts.map +0 -1
- 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.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.map +0 -1
- package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts.map +0 -1
- package/dist/atoms/composed/ProgressBar/index.d.ts +0 -2
- package/dist/atoms/composed/ProgressBar/index.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/atoms/composed/Toast/index.d.ts.map +0 -1
- 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.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.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 +0 -25
- package/dist/atoms/composed/index.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.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.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.map +0 -1
- package/dist/atoms/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/atoms/ui/index.d.ts +0 -15
- package/dist/atoms/ui/index.d.ts.map +0 -1
- package/dist/atoms/ui/input.d.ts.map +0 -1
- package/dist/atoms/ui/label.d.ts.map +0 -1
- package/dist/atoms/ui/skeleton.d.ts.map +0 -1
- package/dist/atoms/ui/spinner.d.ts.map +0 -1
- package/dist/atoms/ui/table.d.ts.map +0 -1
- package/src/App.css +0 -42
- package/src/App.tsx +0 -54
- package/src/__tests__/README.md +0 -221
- package/src/__tests__/atoms/hooks/simple-hooks.test.ts +0 -44
- package/src/__tests__/atoms/ui/button.test.tsx +0 -68
- package/src/__tests__/atoms/utils/simple.test.ts +0 -18
- package/src/__tests__/atoms/utils/utils.test.ts +0 -77
- package/src/__tests__/features/auth/simple-auth.test.tsx +0 -40
- package/src/__tests__/molecules/layout/simple-layout.test.tsx +0 -81
- package/src/__tests__/organisms/showcase/simple-showcase.test.tsx +0 -167
- package/src/__tests__/setup.ts +0 -51
- package/src/__tests__/utils.tsx +0 -123
- package/src/atoms/composed/Accordion/Accordion.tsx +0 -271
- package/src/atoms/composed/Accordion/index.ts +0 -1
- package/src/atoms/composed/Alert/Alert.tsx +0 -132
- package/src/atoms/composed/Alert/index.ts +0 -1
- package/src/atoms/composed/Breadcrumb/Breadcrumb.tsx +0 -83
- package/src/atoms/composed/Breadcrumb/index.ts +0 -1
- package/src/atoms/composed/Chart/Chart.tsx +0 -425
- package/src/atoms/composed/Chart/index.ts +0 -2
- package/src/atoms/composed/ColorSwatch/ColorSwatch.tsx +0 -72
- package/src/atoms/composed/ColorSwatch/index.ts +0 -1
- package/src/atoms/composed/DarkModeToggle.tsx +0 -66
- package/src/atoms/composed/DataBadge/DataBadge.tsx +0 -81
- package/src/atoms/composed/DataBadge/index.ts +0 -1
- package/src/atoms/composed/DataTable/DataTable.tsx +0 -394
- package/src/atoms/composed/DataTable/TableCellWithTooltip.tsx +0 -41
- package/src/atoms/composed/DataTable/index.ts +0 -2
- package/src/atoms/composed/DateTimePicker/DateTimePicker.tsx +0 -611
- package/src/atoms/composed/DateTimePicker/index.ts +0 -2
- package/src/atoms/composed/DetailedCard/DetailedCard.tsx +0 -181
- package/src/atoms/composed/DetailedCard/index.ts +0 -2
- package/src/atoms/composed/EmptyState/EmptyState.tsx +0 -90
- package/src/atoms/composed/EmptyState/index.ts +0 -1
- package/src/atoms/composed/FileUpload/FileUpload.tsx +0 -477
- package/src/atoms/composed/FileUpload/index.ts +0 -2
- package/src/atoms/composed/FormField/FormField.tsx +0 -92
- package/src/atoms/composed/FormField/index.ts +0 -1
- package/src/atoms/composed/GlobalSearch/GlobalSearch.tsx +0 -37
- package/src/atoms/composed/GlobalSearch/index.ts +0 -1
- package/src/atoms/composed/IconBadge/IconBadge.tsx +0 -95
- package/src/atoms/composed/IconBadge/index.ts +0 -2
- package/src/atoms/composed/Modal/Modal.tsx +0 -223
- package/src/atoms/composed/Modal/index.ts +0 -2
- package/src/atoms/composed/PaletteSwitcher.tsx +0 -386
- package/src/atoms/composed/ProgressBar/ProgressBar.tsx +0 -116
- package/src/atoms/composed/ProgressBar/index.ts +0 -1
- package/src/atoms/composed/StatCard/StatCard.tsx +0 -219
- package/src/atoms/composed/StatCard/index.ts +0 -1
- package/src/atoms/composed/StyleGuide.tsx +0 -717
- package/src/atoms/composed/Toast/Toast.tsx +0 -219
- package/src/atoms/composed/Toast/index.ts +0 -1
- package/src/atoms/composed/Tooltip/Tooltip.tsx +0 -213
- package/src/atoms/composed/Tooltip/index.ts +0 -1
- package/src/atoms/composed/UserAvatar/UserAvatar.tsx +0 -139
- package/src/atoms/composed/UserAvatar/index.ts +0 -1
- package/src/atoms/composed/UserMenu/UserMenu.tsx +0 -16
- package/src/atoms/composed/UserMenu/index.ts +0 -1
- package/src/atoms/composed/index.ts +0 -29
- package/src/atoms/hooks/useApi.ts +0 -80
- package/src/atoms/hooks/useHealth.ts +0 -17
- package/src/atoms/index.ts +0 -13
- package/src/atoms/services/api/client.ts +0 -134
- package/src/atoms/services/auth-service.ts +0 -248
- package/src/atoms/services/health.ts +0 -15
- package/src/atoms/services/index.ts +0 -3
- package/src/atoms/shared/config/constants.ts +0 -17
- package/src/atoms/shared/config/dashboard-sizes.ts +0 -111
- package/src/atoms/shared/config/environment.ts +0 -10
- package/src/atoms/shared/index.ts +0 -4
- package/src/atoms/shared/styles/color-palettes.css +0 -566
- package/src/atoms/types/auth.ts +0 -62
- package/src/atoms/types/generated.ts +0 -1469
- package/src/atoms/types/index.ts +0 -4
- package/src/atoms/types/loading.ts +0 -28
- package/src/atoms/ui/Badge.tsx +0 -30
- package/src/atoms/ui/ErrorBoundary.tsx +0 -59
- package/src/atoms/ui/Select.tsx +0 -53
- package/src/atoms/ui/Switch.tsx +0 -42
- package/src/atoms/ui/Tabs.tsx +0 -118
- package/src/atoms/ui/avatar.tsx +0 -48
- package/src/atoms/ui/button.tsx +0 -70
- package/src/atoms/ui/card.tsx +0 -76
- package/src/atoms/ui/dropdown-menu.tsx +0 -199
- package/src/atoms/ui/index.ts +0 -39
- package/src/atoms/ui/input.tsx +0 -23
- package/src/atoms/ui/label.tsx +0 -23
- package/src/atoms/ui/skeleton.tsx +0 -13
- package/src/atoms/ui/spinner.tsx +0 -49
- package/src/atoms/ui/table.tsx +0 -116
- package/src/atoms/utils/animations.ts +0 -135
- package/src/atoms/utils/tooltip-helpers.ts +0 -140
- package/src/atoms/utils/utils.ts +0 -9
- package/src/features/auth/components/LoginForm.tsx +0 -168
- package/src/features/auth/components/LogoutButton.tsx +0 -19
- package/src/features/auth/components/ProtectedRoute.tsx +0 -60
- package/src/features/auth/components/index.ts +0 -4
- package/src/features/auth/hooks/index.ts +0 -2
- package/src/features/auth/hooks/useAuth.tsx +0 -205
- package/src/features/auth/hooks/usePermissions.ts +0 -35
- package/src/features/auth/index.ts +0 -2
- package/src/features/index.ts +0 -2
- package/src/index.css +0 -704
- package/src/index.ts +0 -13
- package/src/main.tsx +0 -48
- package/src/molecules/.gitkeep +0 -0
- package/src/molecules/forms/FormGroup.tsx +0 -75
- package/src/molecules/forms/SearchInput.tsx +0 -259
- package/src/molecules/forms/index.ts +0 -4
- package/src/molecules/index.ts +0 -4
- package/src/molecules/layout/AppHeader/AppHeader.tsx +0 -42
- package/src/molecules/layout/AppHeader/index.ts +0 -1
- package/src/molecules/layout/AppLayout.tsx +0 -29
- package/src/molecules/layout/PageTemplate.tsx +0 -87
- package/src/molecules/layout/SectionHeader/SectionHeader.tsx +0 -87
- package/src/molecules/layout/SectionHeader/index.ts +0 -1
- package/src/molecules/layout/ShowcaseSection.tsx +0 -57
- package/src/molecules/layout/Sidebar.tsx +0 -144
- package/src/molecules/layout/SidebarButton/SidebarButton.tsx +0 -99
- package/src/molecules/layout/SidebarButton/index.ts +0 -1
- package/src/molecules/layout/SidebarContext.tsx +0 -31
- package/src/molecules/layout/index.ts +0 -7
- package/src/molecules/navigation/NavMenu.tsx +0 -188
- package/src/molecules/navigation/Pagination.tsx +0 -172
- package/src/molecules/navigation/index.ts +0 -4
- package/src/organisms/index.ts +0 -5
- package/src/organisms/showcase/ComponentShowcasePage.tsx +0 -2496
- package/src/organisms/showcase/index.ts +0 -1
- package/src/pages/AdminShowcase/AdminCRUDShowcase.tsx +0 -242
- package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +0 -171
- package/src/pages/AdminShowcase/AdminDetailShowcase.tsx +0 -385
- package/src/pages/AdminShowcase/index.tsx +0 -3
- package/src/pages/ComponentShowcase/BadgesShowcase.tsx +0 -188
- package/src/pages/ComponentShowcase/CardsShowcase.tsx +0 -392
- package/src/pages/ComponentShowcase/PalettesShowcase.tsx +0 -207
- package/src/pages/ComponentShowcase/StatesShowcase.tsx +0 -485
- package/src/pages/ComponentShowcase/TablesShowcase.tsx +0 -134
- package/src/pages/ComponentShowcase/TypographyShowcase.tsx +0 -255
- package/src/pages/ComponentShowcase/index.tsx +0 -188
- package/src/pages/index.ts +0 -2
- package/src/templates/AuthTemplate.tsx +0 -216
- package/src/templates/ComponentShowcaseTemplate.tsx +0 -173
- package/src/templates/DashboardTemplate.tsx +0 -232
- package/src/templates/DataTemplate.tsx +0 -319
- package/src/templates/admin/AdminCRUDTemplate.tsx +0 -630
- package/src/templates/admin/AdminDashboardTemplate.tsx +0 -351
- package/src/templates/admin/AdminDetailTemplate.tsx +0 -563
- package/src/templates/admin/index.ts +0 -29
- package/src/templates/factory.tsx +0 -169
- package/src/templates/index.ts +0 -37
- package/src/vite-env.d.ts +0 -1
- /package/dist/atoms/{composed → components/theme}/DarkModeToggle.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/avatar.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/dropdown-menu.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/input.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/skeleton.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/table.d.ts +0 -0
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { useMutation, useQuery, useQueryClient, type UseQueryOptions, type UseMutationOptions } from '@tanstack/react-query';
|
|
2
|
-
import { apiClient } from '../services/api/client';
|
|
3
|
-
|
|
4
|
-
// Generic query hook
|
|
5
|
-
export function useApiQuery<T>(
|
|
6
|
-
queryKey: (string | number)[],
|
|
7
|
-
queryFn: () => Promise<T>,
|
|
8
|
-
options?: Omit<UseQueryOptions<T>, 'queryKey' | 'queryFn'>
|
|
9
|
-
) {
|
|
10
|
-
return useQuery({
|
|
11
|
-
queryKey,
|
|
12
|
-
queryFn,
|
|
13
|
-
...options,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// Generic mutation hook
|
|
18
|
-
export function useApiMutation<TData, TVariables = void>(
|
|
19
|
-
mutationFn: (variables: TVariables) => Promise<TData>,
|
|
20
|
-
options?: UseMutationOptions<TData, Error, TVariables>
|
|
21
|
-
) {
|
|
22
|
-
const queryClient = useQueryClient();
|
|
23
|
-
|
|
24
|
-
return useMutation({
|
|
25
|
-
mutationFn,
|
|
26
|
-
onSuccess: (data, variables, context) => {
|
|
27
|
-
// Invalidate queries on successful mutation
|
|
28
|
-
queryClient.invalidateQueries();
|
|
29
|
-
options?.onSuccess?.(data, variables, context);
|
|
30
|
-
},
|
|
31
|
-
...options,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Example types for API hooks
|
|
36
|
-
interface ExampleData {
|
|
37
|
-
id: string;
|
|
38
|
-
name: string;
|
|
39
|
-
description?: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
interface CreateExampleData {
|
|
43
|
-
name: string;
|
|
44
|
-
description?: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
interface UpdateExampleData {
|
|
48
|
-
name?: string;
|
|
49
|
-
description?: string;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Specific API hooks - examples with proper typing
|
|
53
|
-
export function useGetExample(id: string) {
|
|
54
|
-
return useApiQuery(
|
|
55
|
-
['example', id],
|
|
56
|
-
() => apiClient.get<ExampleData>(`/api/example/${id}`),
|
|
57
|
-
{
|
|
58
|
-
enabled: !!id,
|
|
59
|
-
}
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export function useCreateExample() {
|
|
64
|
-
return useApiMutation(
|
|
65
|
-
(data: CreateExampleData) => apiClient.post<ExampleData>('/api/example', data)
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function useUpdateExample() {
|
|
70
|
-
return useApiMutation(
|
|
71
|
-
({ id, data }: { id: string; data: UpdateExampleData }) =>
|
|
72
|
-
apiClient.put<ExampleData>(`/api/example/${id}`, data)
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export function useDeleteExample() {
|
|
77
|
-
return useApiMutation(
|
|
78
|
-
(id: string) => apiClient.delete<void>(`/api/example/${id}`)
|
|
79
|
-
);
|
|
80
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { useQuery } from '@tanstack/react-query';
|
|
2
|
-
import { healthApi } from '../services/health';
|
|
3
|
-
|
|
4
|
-
export const healthKeys = {
|
|
5
|
-
all: ['health'] as const,
|
|
6
|
-
status: () => [...healthKeys.all, 'status'] as const,
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export function useHealth() {
|
|
10
|
-
return useQuery({
|
|
11
|
-
queryKey: healthKeys.status(),
|
|
12
|
-
queryFn: healthApi.getHealth,
|
|
13
|
-
staleTime: 2 * 60 * 1000, // 2 minutes
|
|
14
|
-
refetchInterval: 5 * 60 * 1000, // Auto-refresh every 5 minutes
|
|
15
|
-
retry: 2,
|
|
16
|
-
});
|
|
17
|
-
}
|
package/src/atoms/index.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// Foundation layer exports
|
|
2
|
-
export * from './shared';
|
|
3
|
-
export * from './utils/utils';
|
|
4
|
-
export * from './utils/animations';
|
|
5
|
-
export * from './services/api/client';
|
|
6
|
-
export * from './hooks/useApi';
|
|
7
|
-
export * from './types/generated';
|
|
8
|
-
|
|
9
|
-
// UI primitives
|
|
10
|
-
export * from './ui';
|
|
11
|
-
|
|
12
|
-
// Composed components
|
|
13
|
-
export * from './composed';
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import axios, { type AxiosInstance, type AxiosRequestConfig, type AxiosResponse } from 'axios';
|
|
2
|
-
|
|
3
|
-
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:8080';
|
|
4
|
-
|
|
5
|
-
export interface ApiClientConfig {
|
|
6
|
-
baseURL?: string;
|
|
7
|
-
timeout?: number;
|
|
8
|
-
headers?: Record<string, string>;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// Global auth service reference - will be set by AuthProvider
|
|
12
|
-
let globalAuthService: any = null;
|
|
13
|
-
|
|
14
|
-
export function setGlobalAuthService(authService: any): void {
|
|
15
|
-
globalAuthService = authService;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
class ApiClient {
|
|
19
|
-
private instance: AxiosInstance;
|
|
20
|
-
|
|
21
|
-
constructor(config: ApiClientConfig = {}) {
|
|
22
|
-
this.instance = axios.create({
|
|
23
|
-
baseURL: config.baseURL || API_BASE_URL,
|
|
24
|
-
timeout: config.timeout || 10000,
|
|
25
|
-
headers: {
|
|
26
|
-
'Content-Type': 'application/json',
|
|
27
|
-
...config.headers,
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
this.setupInterceptors();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private setupInterceptors() {
|
|
35
|
-
// Request interceptor for auth tokens and auto-refresh
|
|
36
|
-
this.instance.interceptors.request.use(
|
|
37
|
-
async (config) => {
|
|
38
|
-
// Add auth token if available
|
|
39
|
-
if (globalAuthService) {
|
|
40
|
-
const tokenData = globalAuthService.getTokenData();
|
|
41
|
-
if (tokenData?.token) {
|
|
42
|
-
// Check if token should be refreshed
|
|
43
|
-
if (globalAuthService.shouldRefreshToken()) {
|
|
44
|
-
try {
|
|
45
|
-
await globalAuthService.refreshToken();
|
|
46
|
-
// Get the updated token
|
|
47
|
-
const newTokenData = globalAuthService.getTokenData();
|
|
48
|
-
config.headers.Authorization = `Bearer ${newTokenData?.token}`;
|
|
49
|
-
} catch {
|
|
50
|
-
// Refresh failed, use existing token (will likely fail and trigger logout)
|
|
51
|
-
config.headers.Authorization = `Bearer ${tokenData.token}`;
|
|
52
|
-
}
|
|
53
|
-
} else {
|
|
54
|
-
config.headers.Authorization = `Bearer ${tokenData.token}`;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
// Fallback to old method if no auth service
|
|
59
|
-
const token = localStorage.getItem('auth_token');
|
|
60
|
-
if (token) {
|
|
61
|
-
config.headers.Authorization = `Bearer ${token}`;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return config;
|
|
65
|
-
},
|
|
66
|
-
(error) => Promise.reject(error)
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
// Response interceptor for error handling
|
|
70
|
-
this.instance.interceptors.response.use(
|
|
71
|
-
(response) => response,
|
|
72
|
-
async (error) => {
|
|
73
|
-
if (error.response?.status === 401) {
|
|
74
|
-
if (globalAuthService) {
|
|
75
|
-
// Try to refresh token once
|
|
76
|
-
const tokenData = globalAuthService.getTokenData();
|
|
77
|
-
if (tokenData?.refreshToken && !error.config._retry) {
|
|
78
|
-
error.config._retry = true;
|
|
79
|
-
try {
|
|
80
|
-
await globalAuthService.refreshToken();
|
|
81
|
-
// Retry the original request with new token
|
|
82
|
-
const newTokenData = globalAuthService.getTokenData();
|
|
83
|
-
error.config.headers.Authorization = `Bearer ${newTokenData?.token}`;
|
|
84
|
-
return this.instance.request(error.config);
|
|
85
|
-
} catch {
|
|
86
|
-
// Refresh failed, clear auth
|
|
87
|
-
globalAuthService.clearAuth();
|
|
88
|
-
window.location.reload();
|
|
89
|
-
}
|
|
90
|
-
} else {
|
|
91
|
-
// No refresh token or retry failed, clear auth
|
|
92
|
-
globalAuthService.clearAuth();
|
|
93
|
-
window.location.reload();
|
|
94
|
-
}
|
|
95
|
-
} else {
|
|
96
|
-
// Fallback to old method
|
|
97
|
-
localStorage.removeItem('auth_token');
|
|
98
|
-
localStorage.removeItem('auth_user');
|
|
99
|
-
window.location.reload();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return Promise.reject(error);
|
|
103
|
-
}
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
async get<T>(url: string, config?: AxiosRequestConfig): Promise<T> {
|
|
108
|
-
const response: AxiosResponse<T> = await this.instance.get(url, config);
|
|
109
|
-
return response.data;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
async post<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {
|
|
113
|
-
const response: AxiosResponse<T> = await this.instance.post(url, data, config);
|
|
114
|
-
return response.data;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
async put<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {
|
|
118
|
-
const response: AxiosResponse<T> = await this.instance.put(url, data, config);
|
|
119
|
-
return response.data;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
async patch<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {
|
|
123
|
-
const response: AxiosResponse<T> = await this.instance.patch(url, data, config);
|
|
124
|
-
return response.data;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
async delete<T>(url: string, config?: AxiosRequestConfig): Promise<T> {
|
|
128
|
-
const response: AxiosResponse<T> = await this.instance.delete(url, config);
|
|
129
|
-
return response.data;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export const apiClient = new ApiClient();
|
|
134
|
-
export default apiClient;
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
import { apiClient } from './api/client';
|
|
2
|
-
import type {
|
|
3
|
-
AuthConfig,
|
|
4
|
-
BaseUser,
|
|
5
|
-
LoginCredentials,
|
|
6
|
-
LoginResponse,
|
|
7
|
-
RefreshResponse,
|
|
8
|
-
TokenData
|
|
9
|
-
} from '../types';
|
|
10
|
-
|
|
11
|
-
export class AuthService<T extends BaseUser = BaseUser> {
|
|
12
|
-
private config: AuthConfig;
|
|
13
|
-
private refreshPromise: Promise<void> | null = null;
|
|
14
|
-
|
|
15
|
-
constructor(config: AuthConfig) {
|
|
16
|
-
this.config = {
|
|
17
|
-
tokenStorage: 'localStorage',
|
|
18
|
-
tokenRefreshBuffer: 5, // 5 minutes before expiry
|
|
19
|
-
autoRefresh: true,
|
|
20
|
-
...config
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
private getStorageKey(key: string): string {
|
|
25
|
-
return `auth_${key}`;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
private setItem(key: string, value: string): void {
|
|
29
|
-
const storageKey = this.getStorageKey(key);
|
|
30
|
-
switch (this.config.tokenStorage) {
|
|
31
|
-
case 'sessionStorage':
|
|
32
|
-
sessionStorage.setItem(storageKey, value);
|
|
33
|
-
break;
|
|
34
|
-
case 'cookie':
|
|
35
|
-
// Simple cookie implementation - for production use a proper cookie library
|
|
36
|
-
document.cookie = `${storageKey}=${value}; path=/; secure; samesite=strict`;
|
|
37
|
-
break;
|
|
38
|
-
default:
|
|
39
|
-
localStorage.setItem(storageKey, value);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
private getItem(key: string): string | null {
|
|
44
|
-
const storageKey = this.getStorageKey(key);
|
|
45
|
-
switch (this.config.tokenStorage) {
|
|
46
|
-
case 'sessionStorage':
|
|
47
|
-
return sessionStorage.getItem(storageKey);
|
|
48
|
-
case 'cookie':
|
|
49
|
-
// Simple cookie reading - for production use a proper cookie library
|
|
50
|
-
const match = document.cookie.match(`(?:^|;)\\s*${storageKey}=([^;]*)`);
|
|
51
|
-
return match ? decodeURIComponent(match[1]) : null;
|
|
52
|
-
default:
|
|
53
|
-
return localStorage.getItem(storageKey);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
private removeItem(key: string): void {
|
|
58
|
-
const storageKey = this.getStorageKey(key);
|
|
59
|
-
switch (this.config.tokenStorage) {
|
|
60
|
-
case 'sessionStorage':
|
|
61
|
-
sessionStorage.removeItem(storageKey);
|
|
62
|
-
break;
|
|
63
|
-
case 'cookie':
|
|
64
|
-
document.cookie = `${storageKey}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
|
|
65
|
-
break;
|
|
66
|
-
default:
|
|
67
|
-
localStorage.removeItem(storageKey);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
getTokenData(): TokenData | null {
|
|
72
|
-
const token = this.getItem('token');
|
|
73
|
-
const refreshToken = this.getItem('refresh_token');
|
|
74
|
-
const expiresAt = this.getItem('expires_at');
|
|
75
|
-
|
|
76
|
-
if (!token) return null;
|
|
77
|
-
|
|
78
|
-
return {
|
|
79
|
-
token,
|
|
80
|
-
refreshToken: refreshToken || undefined,
|
|
81
|
-
expiresAt: expiresAt ? parseInt(expiresAt, 10) : undefined
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
private setTokenData(tokenData: TokenData): void {
|
|
86
|
-
this.setItem('token', tokenData.token);
|
|
87
|
-
if (tokenData.refreshToken) {
|
|
88
|
-
this.setItem('refresh_token', tokenData.refreshToken);
|
|
89
|
-
}
|
|
90
|
-
if (tokenData.expiresAt) {
|
|
91
|
-
this.setItem('expires_at', tokenData.expiresAt.toString());
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
getStoredUser(): T | null {
|
|
96
|
-
const userData = this.getItem('user');
|
|
97
|
-
if (!userData) return null;
|
|
98
|
-
|
|
99
|
-
try {
|
|
100
|
-
return JSON.parse(userData) as T;
|
|
101
|
-
} catch {
|
|
102
|
-
this.clearAuth();
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
private setStoredUser(user: T): void {
|
|
108
|
-
this.setItem('user', JSON.stringify(user));
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
clearAuth(): void {
|
|
112
|
-
this.removeItem('token');
|
|
113
|
-
this.removeItem('refresh_token');
|
|
114
|
-
this.removeItem('expires_at');
|
|
115
|
-
this.removeItem('user');
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
async login(credentials: LoginCredentials): Promise<T> {
|
|
119
|
-
const response = await apiClient.post<LoginResponse<T>>(
|
|
120
|
-
`${this.config.apiUrl}${this.config.endpoints.login}`,
|
|
121
|
-
credentials
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
const { token, refreshToken, user, expiresIn } = response;
|
|
125
|
-
|
|
126
|
-
// Calculate expiration time
|
|
127
|
-
const expiresAt = expiresIn
|
|
128
|
-
? Date.now() + (expiresIn * 1000)
|
|
129
|
-
: undefined;
|
|
130
|
-
|
|
131
|
-
// Store tokens and user
|
|
132
|
-
this.setTokenData({ token, refreshToken, expiresAt });
|
|
133
|
-
this.setStoredUser(user);
|
|
134
|
-
|
|
135
|
-
// Setup auto-refresh if enabled
|
|
136
|
-
if (this.config.autoRefresh && expiresAt) {
|
|
137
|
-
this.scheduleTokenRefresh(expiresAt);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return user;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
async refreshToken(): Promise<void> {
|
|
144
|
-
// Prevent multiple simultaneous refresh attempts
|
|
145
|
-
if (this.refreshPromise) {
|
|
146
|
-
return this.refreshPromise;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const tokenData = this.getTokenData();
|
|
150
|
-
if (!tokenData?.refreshToken) {
|
|
151
|
-
throw new Error('No refresh token available');
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
this.refreshPromise = this.performTokenRefresh(tokenData.refreshToken);
|
|
155
|
-
|
|
156
|
-
try {
|
|
157
|
-
await this.refreshPromise;
|
|
158
|
-
} finally {
|
|
159
|
-
this.refreshPromise = null;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
private async performTokenRefresh(refreshToken: string): Promise<void> {
|
|
164
|
-
try {
|
|
165
|
-
const response = await apiClient.post<RefreshResponse>(
|
|
166
|
-
`${this.config.apiUrl}${this.config.endpoints.refresh}`,
|
|
167
|
-
{ refreshToken }
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
const { token, refreshToken: newRefreshToken, expiresIn } = response;
|
|
171
|
-
|
|
172
|
-
const expiresAt = expiresIn
|
|
173
|
-
? Date.now() + (expiresIn * 1000)
|
|
174
|
-
: undefined;
|
|
175
|
-
|
|
176
|
-
// Update stored tokens
|
|
177
|
-
this.setTokenData({
|
|
178
|
-
token,
|
|
179
|
-
refreshToken: newRefreshToken || refreshToken,
|
|
180
|
-
expiresAt
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
// Schedule next refresh
|
|
184
|
-
if (this.config.autoRefresh && expiresAt) {
|
|
185
|
-
this.scheduleTokenRefresh(expiresAt);
|
|
186
|
-
}
|
|
187
|
-
} catch (error) {
|
|
188
|
-
// Refresh failed, clear auth
|
|
189
|
-
this.clearAuth();
|
|
190
|
-
throw error;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
private scheduleTokenRefresh(expiresAt: number): void {
|
|
195
|
-
const bufferMs = (this.config.tokenRefreshBuffer || 5) * 60 * 1000;
|
|
196
|
-
const refreshAt = expiresAt - bufferMs;
|
|
197
|
-
const delay = Math.max(0, refreshAt - Date.now());
|
|
198
|
-
|
|
199
|
-
setTimeout(() => {
|
|
200
|
-
if (this.getTokenData()) {
|
|
201
|
-
this.refreshToken().catch(() => {
|
|
202
|
-
// Silent fail - user will need to re-login
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
}, delay);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
isTokenExpired(): boolean {
|
|
209
|
-
const tokenData = this.getTokenData();
|
|
210
|
-
if (!tokenData?.expiresAt) return false;
|
|
211
|
-
|
|
212
|
-
return Date.now() >= tokenData.expiresAt;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
shouldRefreshToken(): boolean {
|
|
216
|
-
const tokenData = this.getTokenData();
|
|
217
|
-
if (!tokenData?.expiresAt || !tokenData.refreshToken) return false;
|
|
218
|
-
|
|
219
|
-
const bufferMs = (this.config.tokenRefreshBuffer || 5) * 60 * 1000;
|
|
220
|
-
return Date.now() >= (tokenData.expiresAt - bufferMs);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
async getCurrentUser(): Promise<T | null> {
|
|
224
|
-
const tokenData = this.getTokenData();
|
|
225
|
-
if (!tokenData?.token) return null;
|
|
226
|
-
|
|
227
|
-
try {
|
|
228
|
-
return await apiClient.get<T>(`${this.config.apiUrl}${this.config.endpoints.me}`);
|
|
229
|
-
} catch {
|
|
230
|
-
return null;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
async logout(): Promise<void> {
|
|
235
|
-
const tokenData = this.getTokenData();
|
|
236
|
-
|
|
237
|
-
// Call logout endpoint if available
|
|
238
|
-
if (this.config.endpoints.logout && tokenData?.token) {
|
|
239
|
-
try {
|
|
240
|
-
await apiClient.post(`${this.config.apiUrl}${this.config.endpoints.logout}`);
|
|
241
|
-
} catch {
|
|
242
|
-
// Ignore logout endpoint errors
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
this.clearAuth();
|
|
247
|
-
}
|
|
248
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { apiClient } from './api/client';
|
|
2
|
-
import type { components } from '../types/generated';
|
|
3
|
-
|
|
4
|
-
type HealthCheckResponse = components['schemas']['HealthResponse'];
|
|
5
|
-
|
|
6
|
-
export const healthApi = {
|
|
7
|
-
getHealth: async (): Promise<HealthCheckResponse> => {
|
|
8
|
-
try {
|
|
9
|
-
return await apiClient.get<HealthCheckResponse>('/api/v1/health');
|
|
10
|
-
} catch (error) {
|
|
11
|
-
console.warn('Health API call failed:', error);
|
|
12
|
-
throw error;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export const APP_NAME = 'Design System Showcase';
|
|
2
|
-
|
|
3
|
-
export const API_ENDPOINTS = {
|
|
4
|
-
HEALTH: '/health',
|
|
5
|
-
} as const;
|
|
6
|
-
|
|
7
|
-
export const ROUTES = {
|
|
8
|
-
HOME: '/',
|
|
9
|
-
COMPONENTS: '/components',
|
|
10
|
-
STYLE_GUIDE: '/style-guide',
|
|
11
|
-
} as const;
|
|
12
|
-
|
|
13
|
-
export const UI_CONFIG = {
|
|
14
|
-
DEFAULT_PAGE_SIZE: 20,
|
|
15
|
-
DEBOUNCE_DELAY: 300,
|
|
16
|
-
TOAST_DURATION: 5000,
|
|
17
|
-
} as const;
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
// Dashboard component sizing constants
|
|
2
|
-
// These provide standardized heights for consistent layouts
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Dashboard chart heights in pixels
|
|
6
|
-
* Use these constants instead of hardcoded values for consistent sizing
|
|
7
|
-
*/
|
|
8
|
-
export const DASHBOARD_CHART_HEIGHTS = {
|
|
9
|
-
// Compact sizes for dense layouts
|
|
10
|
-
compact: 180, // For small charts in grids
|
|
11
|
-
small: 240, // Standard small chart size
|
|
12
|
-
|
|
13
|
-
// Medium sizes for primary content
|
|
14
|
-
medium: 320, // Most common dashboard chart size
|
|
15
|
-
mediumLarge: 400, // For detailed primary charts
|
|
16
|
-
|
|
17
|
-
// Large sizes for feature charts
|
|
18
|
-
large: 480, // Full-featured charts with legends
|
|
19
|
-
extraLarge: 600, // Hero charts and detailed analytics
|
|
20
|
-
|
|
21
|
-
// Special purpose sizes
|
|
22
|
-
sidebar: 200, // For sidebar/secondary charts
|
|
23
|
-
mobile: 160, // Mobile-optimized height
|
|
24
|
-
} as const;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Dashboard container heights (includes padding)
|
|
28
|
-
* These account for padding, headers, and spacing
|
|
29
|
-
*/
|
|
30
|
-
export const DASHBOARD_CONTAINER_HEIGHTS = {
|
|
31
|
-
// Chart containers (chart height + padding/headers)
|
|
32
|
-
compactChart: DASHBOARD_CHART_HEIGHTS.compact + 80, // 260px
|
|
33
|
-
smallChart: DASHBOARD_CHART_HEIGHTS.small + 80, // 320px
|
|
34
|
-
mediumChart: DASHBOARD_CHART_HEIGHTS.medium + 80, // 400px
|
|
35
|
-
mediumLargeChart: DASHBOARD_CHART_HEIGHTS.mediumLarge + 80, // 480px
|
|
36
|
-
largeChart: DASHBOARD_CHART_HEIGHTS.large + 80, // 560px
|
|
37
|
-
extraLargeChart: DASHBOARD_CHART_HEIGHTS.extraLarge + 80, // 680px
|
|
38
|
-
|
|
39
|
-
// Sidebar and panel heights
|
|
40
|
-
sidebarPanel: 280, // For alert panels, activity feeds
|
|
41
|
-
sidebarChart: DASHBOARD_CHART_HEIGHTS.sidebar + 60, // 260px
|
|
42
|
-
|
|
43
|
-
// Grid item heights
|
|
44
|
-
statCard: 120, // For metric/stat cards
|
|
45
|
-
miniChart: 180, // For sparkline charts
|
|
46
|
-
} as const;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* CSS height classes mapping to our size constants
|
|
50
|
-
* Use these in className props for consistent styling
|
|
51
|
-
*/
|
|
52
|
-
export const DASHBOARD_HEIGHT_CLASSES = {
|
|
53
|
-
// Chart heights
|
|
54
|
-
'chart-compact': `h-[${DASHBOARD_CHART_HEIGHTS.compact}px]`,
|
|
55
|
-
'chart-small': `h-[${DASHBOARD_CHART_HEIGHTS.small}px]`,
|
|
56
|
-
'chart-medium': `h-[${DASHBOARD_CHART_HEIGHTS.medium}px]`,
|
|
57
|
-
'chart-medium-large': `h-[${DASHBOARD_CHART_HEIGHTS.mediumLarge}px]`,
|
|
58
|
-
'chart-large': `h-[${DASHBOARD_CHART_HEIGHTS.large}px]`,
|
|
59
|
-
'chart-extra-large': `h-[${DASHBOARD_CHART_HEIGHTS.extraLarge}px]`,
|
|
60
|
-
'chart-sidebar': `h-[${DASHBOARD_CHART_HEIGHTS.sidebar}px]`,
|
|
61
|
-
|
|
62
|
-
// Container heights
|
|
63
|
-
'container-compact-chart': `h-[${DASHBOARD_CONTAINER_HEIGHTS.compactChart}px]`,
|
|
64
|
-
'container-small-chart': `h-[${DASHBOARD_CONTAINER_HEIGHTS.smallChart}px]`,
|
|
65
|
-
'container-medium-chart': `h-[${DASHBOARD_CONTAINER_HEIGHTS.mediumChart}px]`,
|
|
66
|
-
'container-medium-large-chart': `h-[${DASHBOARD_CONTAINER_HEIGHTS.mediumLargeChart}px]`,
|
|
67
|
-
'container-large-chart': `h-[${DASHBOARD_CONTAINER_HEIGHTS.largeChart}px]`,
|
|
68
|
-
'container-extra-large-chart': `h-[${DASHBOARD_CONTAINER_HEIGHTS.extraLargeChart}px]`,
|
|
69
|
-
|
|
70
|
-
// Panel heights
|
|
71
|
-
'sidebar-panel': `h-[${DASHBOARD_CONTAINER_HEIGHTS.sidebarPanel}px]`,
|
|
72
|
-
'sidebar-chart': `h-[${DASHBOARD_CONTAINER_HEIGHTS.sidebarChart}px]`,
|
|
73
|
-
'stat-card': `h-[${DASHBOARD_CONTAINER_HEIGHTS.statCard}px]`,
|
|
74
|
-
'mini-chart': `h-[${DASHBOARD_CONTAINER_HEIGHTS.miniChart}px]`,
|
|
75
|
-
} as const;
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Helper function to get chart height for Chart component
|
|
79
|
-
*/
|
|
80
|
-
export const getChartHeight = (size: keyof typeof DASHBOARD_CHART_HEIGHTS): number => {
|
|
81
|
-
return DASHBOARD_CHART_HEIGHTS[size];
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Helper function to get container height class
|
|
86
|
-
*/
|
|
87
|
-
export const getContainerHeightClass = (size: keyof typeof DASHBOARD_HEIGHT_CLASSES): string => {
|
|
88
|
-
return DASHBOARD_HEIGHT_CLASSES[size];
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Responsive height configurations for different screen sizes
|
|
93
|
-
*/
|
|
94
|
-
export const RESPONSIVE_CHART_HEIGHTS = {
|
|
95
|
-
mobile: {
|
|
96
|
-
primary: DASHBOARD_CHART_HEIGHTS.mobile,
|
|
97
|
-
secondary: DASHBOARD_CHART_HEIGHTS.compact,
|
|
98
|
-
},
|
|
99
|
-
tablet: {
|
|
100
|
-
primary: DASHBOARD_CHART_HEIGHTS.small,
|
|
101
|
-
secondary: DASHBOARD_CHART_HEIGHTS.sidebar,
|
|
102
|
-
},
|
|
103
|
-
desktop: {
|
|
104
|
-
primary: DASHBOARD_CHART_HEIGHTS.medium,
|
|
105
|
-
secondary: DASHBOARD_CHART_HEIGHTS.small,
|
|
106
|
-
},
|
|
107
|
-
large: {
|
|
108
|
-
primary: DASHBOARD_CHART_HEIGHTS.large,
|
|
109
|
-
secondary: DASHBOARD_CHART_HEIGHTS.medium,
|
|
110
|
-
},
|
|
111
|
-
} as const;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export const env = {
|
|
2
|
-
API_BASE_URL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:8080',
|
|
3
|
-
OPENAPI_URL: import.meta.env.OPENAPI_URL || 'http://localhost:8080/openapi.json',
|
|
4
|
-
NODE_ENV: import.meta.env.NODE_ENV || 'development',
|
|
5
|
-
IS_DEVELOPMENT: import.meta.env.NODE_ENV === 'development',
|
|
6
|
-
IS_PRODUCTION: import.meta.env.NODE_ENV === 'production',
|
|
7
|
-
// Feature flags for development
|
|
8
|
-
USE_MOCK_DATA: import.meta.env.VITE_USE_MOCK_DATA === 'true' || false,
|
|
9
|
-
MOCK_API_DELAY: parseInt(import.meta.env.VITE_MOCK_API_DELAY || '500'),
|
|
10
|
-
} as const;
|