@pattern-stack/frontend-patterns 0.1.2 → 0.1.3
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 +85 -0
- package/LICENSE +19 -0
- package/cli/cli/commands/generate-hooks.js +291 -0
- package/cli/cli/commands/init.js +25 -0
- package/cli/cli/commands/scaffold.js +201 -0
- package/cli/cli/index.js +113 -0
- package/cli/commands/generate-hooks.js +291 -0
- package/cli/commands/generate-hooks.ts +316 -0
- package/cli/commands/init.js +25 -0
- package/cli/commands/init.ts +33 -0
- package/cli/commands/scaffold.js +201 -0
- package/cli/commands/scaffold.ts +224 -0
- package/cli/index.js +6665 -0
- package/cli/index.ts +124 -0
- package/cli/src/codegen/openapi/bulk-hook-generator.js +252 -0
- package/cli/src/codegen/openapi/bulk-types.js +89 -0
- package/cli/src/codegen/openapi/client-generator.js +672 -0
- package/cli/src/codegen/openapi/confidence-scorer.js +204 -0
- package/cli/src/codegen/openapi/hook-config.js +66 -0
- package/cli/src/codegen/openapi/hook-generator.js +1057 -0
- package/cli/src/codegen/openapi/parser.js +279 -0
- package/cli/src/codegen/openapi/type-generator.js +339 -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 +23 -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/ActivityFeed.stories.d.ts +38 -0
- package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.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/{composed → components/data}/Chart/Chart.d.ts +2 -2
- package/dist/atoms/components/data/Chart/Chart.d.ts.map +1 -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.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/components/data/DataTable/TableCellWithTooltip.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/index.d.ts.map +1 -0
- package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts.map +1 -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/{composed → components/data}/IconBadge/IconBadge.d.ts +2 -1
- package/dist/atoms/components/data/IconBadge/IconBadge.d.ts.map +1 -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/components/data/ProgressBar/ProgressBar.d.ts.map +1 -0
- package/dist/atoms/components/data/ProgressBar/index.d.ts.map +1 -0
- package/dist/atoms/{composed → components/data}/StatCard/StatCard.d.ts +1 -1
- package/dist/atoms/components/data/StatCard/StatCard.d.ts.map +1 -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/components/feedback/Alert/Alert.d.ts.map +1 -0
- package/dist/atoms/components/feedback/Alert/index.d.ts.map +1 -0
- package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts.map +1 -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 +41 -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/components/feedback/Toast/Toast.d.ts.map +1 -0
- 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/components/forms/DateTimePicker/DateTimePicker.d.ts.map +1 -0
- package/dist/atoms/components/forms/DateTimePicker/index.d.ts.map +1 -0
- package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts.map +1 -0
- package/dist/atoms/components/forms/FileUpload/index.d.ts.map +1 -0
- package/dist/atoms/components/forms/FormField/FormField.d.ts.map +1 -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/components/layout/Accordion/Accordion.d.ts.map +1 -0
- package/dist/atoms/components/layout/Accordion/index.d.ts.map +1 -0
- package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/atoms/components/layout/Breadcrumb/index.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.map +1 -0
- package/dist/atoms/components/layout/Modal/index.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/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/components/navigation/GlobalSearch/GlobalSearch.d.ts.map +1 -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/components/theme/ColorSwatch/ColorSwatch.d.ts.map +1 -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/components/theme/PaletteSwitcher.d.ts.map +1 -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/components/user/UserAvatar/UserAvatar.d.ts.map +1 -0
- package/dist/atoms/components/user/UserAvatar/index.d.ts.map +1 -0
- package/dist/atoms/components/user/UserMenu/UserMenu.d.ts.map +1 -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/useResponsive.d.ts +42 -0
- package/dist/atoms/hooks/useResponsive.d.ts.map +1 -0
- package/dist/atoms/index.d.ts +4 -5
- package/dist/atoms/index.d.ts.map +1 -1
- package/dist/atoms/primitives/Badge.d.ts.map +1 -0
- package/dist/atoms/primitives/ErrorBoundary.d.ts.map +1 -0
- package/dist/atoms/{ui → primitives}/Select.d.ts +1 -1
- package/dist/atoms/primitives/Select.d.ts.map +1 -0
- package/dist/atoms/primitives/Switch.d.ts.map +1 -0
- package/dist/atoms/primitives/Tabs.d.ts.map +1 -0
- package/dist/atoms/primitives/avatar.d.ts.map +1 -0
- package/dist/atoms/{ui → primitives}/button.d.ts +3 -3
- package/dist/atoms/primitives/button.d.ts.map +1 -0
- package/dist/atoms/{ui → primitives}/card.d.ts +1 -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/{ui → primitives}/index.d.ts +2 -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 +2 -0
- 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 +1 -1
- package/dist/atoms/primitives/spinner.d.ts.map +1 -0
- package/dist/atoms/primitives/table.d.ts.map +1 -0
- package/dist/atoms/shared/index.d.ts +1 -0
- package/dist/atoms/shared/index.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/index.d.ts +3 -0
- package/dist/atoms/types/index.d.ts.map +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/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-resolver.d.ts +76 -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 +30 -0
- package/dist/atoms/utils/metric-engine.d.ts.map +1 -0
- package/dist/atoms/utils/ui-mapping.d.ts +17 -0
- package/dist/atoms/utils/ui-mapping.d.ts.map +1 -0
- package/dist/atoms/utils/utils.d.ts +5 -0
- package/dist/atoms/utils/utils.d.ts.map +1 -1
- package/dist/codegen/index.d.ts +7 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/openapi/bulk-hook-generator.d.ts +40 -0
- package/dist/codegen/openapi/bulk-hook-generator.d.ts.map +1 -0
- package/dist/codegen/openapi/bulk-types.d.ts +142 -0
- package/dist/codegen/openapi/bulk-types.d.ts.map +1 -0
- package/dist/codegen/openapi/client-generator.d.ts +52 -0
- package/dist/codegen/openapi/client-generator.d.ts.map +1 -0
- package/dist/codegen/openapi/confidence-scorer.d.ts +30 -0
- package/dist/codegen/openapi/confidence-scorer.d.ts.map +1 -0
- package/dist/codegen/openapi/hook-config.d.ts +50 -0
- package/dist/codegen/openapi/hook-config.d.ts.map +1 -0
- package/dist/codegen/openapi/hook-generator.d.ts +108 -0
- package/dist/codegen/openapi/hook-generator.d.ts.map +1 -0
- package/dist/codegen/openapi/index.d.ts +27 -0
- package/dist/codegen/openapi/index.d.ts.map +1 -0
- package/dist/codegen/openapi/parser.d.ts +107 -0
- package/dist/codegen/openapi/parser.d.ts.map +1 -0
- package/dist/codegen/openapi/type-generator.d.ts +53 -0
- package/dist/codegen/openapi/type-generator.d.ts.map +1 -0
- package/dist/features/auth/components/LoginForm.d.ts.map +1 -1
- package/dist/features/auth/hooks/index.d.ts +1 -0
- package/dist/features/auth/hooks/index.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/index.d.ts +1 -0
- package/dist/features/auth/index.d.ts.map +1 -1
- package/dist/features/auth/providers/MockAuthProvider.d.ts +9 -0
- package/dist/features/auth/providers/MockAuthProvider.d.ts.map +1 -0
- package/dist/features/auth/providers/index.d.ts +2 -0
- package/dist/features/auth/providers/index.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/frontend-patterns.css +4417 -1
- package/dist/generated/client/client.d.ts +23 -0
- package/dist/generated/client/client.d.ts.map +1 -0
- package/dist/generated/client/config.d.ts +10 -0
- package/dist/generated/client/config.d.ts.map +1 -0
- package/dist/generated/client/index.d.ts +12 -0
- package/dist/generated/client/index.d.ts.map +1 -0
- package/dist/generated/client/methods.d.ts +591 -0
- package/dist/generated/client/methods.d.ts.map +1 -0
- package/dist/generated/client/types.d.ts +37 -0
- package/dist/generated/client/types.d.ts.map +1 -0
- package/dist/generated/example.d.ts +8 -0
- package/dist/generated/example.d.ts.map +1 -0
- package/dist/generated/hooks/index.d.ts +11 -0
- package/dist/generated/hooks/index.d.ts.map +1 -0
- package/dist/generated/hooks/keys.d.ts +59 -0
- package/dist/generated/hooks/keys.d.ts.map +1 -0
- package/dist/generated/hooks/mutations.d.ts +551 -0
- package/dist/generated/hooks/mutations.d.ts.map +1 -0
- package/dist/generated/hooks/queries.d.ts +426 -0
- package/dist/generated/hooks/queries.d.ts.map +1 -0
- package/dist/generated/hooks/types.d.ts +318 -0
- package/dist/generated/hooks/types.d.ts.map +1 -0
- package/dist/generated/index.d.ts +13 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/types/endpoints.d.ts +1364 -0
- package/dist/generated/types/endpoints.d.ts.map +1 -0
- package/dist/generated/types/index.d.ts +11 -0
- package/dist/generated/types/index.d.ts.map +1 -0
- package/dist/generated/types/parameters.d.ts +8 -0
- package/dist/generated/types/parameters.d.ts.map +1 -0
- package/dist/generated/types/responses.d.ts +8 -0
- package/dist/generated/types/responses.d.ts.map +1 -0
- package/dist/generated/types/schemas.d.ts +652 -0
- package/dist/generated/types/schemas.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +27448 -8431
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +27460 -8422
- 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/SearchInput.d.ts.map +1 -1
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +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 +15 -0
- package/dist/molecules/layout/NavigationContext.d.ts.map +1 -0
- package/dist/molecules/layout/Sidebar.d.ts.map +1 -1
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +2 -0
- package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -1
- package/dist/molecules/layout/index.d.ts +4 -0
- package/dist/molecules/layout/index.d.ts.map +1 -1
- package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -1
- package/dist/templates/DataTemplate.d.ts +1 -1
- 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.map +1 -1
- package/dist/templates/admin/AdminDashboardTemplate.d.ts +6 -9
- package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -1
- package/dist/templates/admin/AdminDetailTemplate.d.ts +1 -1
- package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -1
- package/dist/templates/api/APIDataTemplate.d.ts +66 -0
- package/dist/templates/api/APIDataTemplate.d.ts.map +1 -0
- package/dist/templates/api/index.d.ts +8 -0
- package/dist/templates/api/index.d.ts.map +1 -0
- package/dist/templates/factory.d.ts +2 -1
- package/dist/templates/factory.d.ts.map +1 -1
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/package.json +37 -11
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.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.map +0 -1
- package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/atoms/composed/EmptyState/EmptyState.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/atoms/composed/FormField/FormField.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/atoms/composed/IconBadge/IconBadge.d.ts.map +0 -1
- package/dist/atoms/composed/IconBadge/index.d.ts.map +0 -1
- package/dist/atoms/composed/Modal/Modal.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/atoms/composed/StatCard/StatCard.d.ts.map +0 -1
- package/dist/atoms/composed/StatCard/index.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/atoms/composed/UserMenu/UserMenu.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/atoms/ui/ErrorBoundary.d.ts.map +0 -1
- package/dist/atoms/ui/Select.d.ts.map +0 -1
- package/dist/atoms/ui/Switch.d.ts.map +0 -1
- 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.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.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/data}/Chart/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/DataBadge/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/DataTable/TableCellWithTooltip.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/DataTable/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/DetailedCard/DetailedCard.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/DetailedCard/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/IconBadge/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/ProgressBar/ProgressBar.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/ProgressBar/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/data}/StatCard/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/feedback}/Alert/Alert.d.ts +0 -0
- /package/dist/atoms/{composed → components/feedback}/Alert/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/feedback}/EmptyState/EmptyState.d.ts +0 -0
- /package/dist/atoms/{composed → components/feedback}/EmptyState/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/feedback}/Toast/Toast.d.ts +0 -0
- /package/dist/atoms/{composed → components/feedback}/Toast/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/forms}/DateTimePicker/DateTimePicker.d.ts +0 -0
- /package/dist/atoms/{composed → components/forms}/DateTimePicker/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/forms}/FileUpload/FileUpload.d.ts +0 -0
- /package/dist/atoms/{composed → components/forms}/FileUpload/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/forms}/FormField/FormField.d.ts +0 -0
- /package/dist/atoms/{composed → components/forms}/FormField/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/layout}/Accordion/Accordion.d.ts +0 -0
- /package/dist/atoms/{composed → components/layout}/Accordion/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/layout}/Breadcrumb/Breadcrumb.d.ts +0 -0
- /package/dist/atoms/{composed → components/layout}/Breadcrumb/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/layout}/Modal/Modal.d.ts +0 -0
- /package/dist/atoms/{composed → components/layout}/Modal/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/layout}/Tooltip/Tooltip.d.ts +0 -0
- /package/dist/atoms/{composed → components/navigation}/GlobalSearch/GlobalSearch.d.ts +0 -0
- /package/dist/atoms/{composed → components/navigation}/GlobalSearch/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/theme}/ColorSwatch/ColorSwatch.d.ts +0 -0
- /package/dist/atoms/{composed → components/theme}/ColorSwatch/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/theme}/DarkModeToggle.d.ts +0 -0
- /package/dist/atoms/{composed → components/theme}/PaletteSwitcher.d.ts +0 -0
- /package/dist/atoms/{composed → components/theme}/StyleGuide.d.ts +0 -0
- /package/dist/atoms/{composed → components/user}/UserAvatar/UserAvatar.d.ts +0 -0
- /package/dist/atoms/{composed → components/user}/UserAvatar/index.d.ts +0 -0
- /package/dist/atoms/{composed → components/user}/UserMenu/UserMenu.d.ts +0 -0
- /package/dist/atoms/{composed → components/user}/UserMenu/index.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/Badge.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/ErrorBoundary.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/Switch.d.ts +0 -0
- /package/dist/atoms/{ui → primitives}/Tabs.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,717 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Card } from '../ui/card';
|
|
3
|
-
import { DataTable, type Column } from './DataTable/DataTable';
|
|
4
|
-
import { StatCard } from './StatCard/StatCard';
|
|
5
|
-
import { DataBadge } from './DataBadge/DataBadge';
|
|
6
|
-
import { EmptyState } from './EmptyState/EmptyState';
|
|
7
|
-
import { cn } from '../utils/utils';
|
|
8
|
-
import { Users, DollarSign, ShoppingCart, TrendingUp } from 'lucide-react';
|
|
9
|
-
|
|
10
|
-
export const StyleGuide: React.FC = () => {
|
|
11
|
-
return (
|
|
12
|
-
<div className="p-8 space-y-8 max-w-6xl mx-auto">
|
|
13
|
-
<div>
|
|
14
|
-
<h1 className="text-3xl font-bold mb-2">Data Interface Style Guide</h1>
|
|
15
|
-
<p className="text-muted-foreground">Comprehensive design system for data applications</p>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
{/* Color System */}
|
|
19
|
-
<section>
|
|
20
|
-
<h2 className="text-2xl font-semibold mb-4">Color System</h2>
|
|
21
|
-
<p className="text-muted-foreground mb-8">
|
|
22
|
-
Our comprehensive color palette designed for data visualization and interface design.
|
|
23
|
-
</p>
|
|
24
|
-
|
|
25
|
-
{/* Category Colors */}
|
|
26
|
-
<div className="mb-8">
|
|
27
|
-
<h3 className="text-lg font-medium mb-3">Data Categories (8 colors)</h3>
|
|
28
|
-
<p className="text-sm text-muted-foreground mb-4">
|
|
29
|
-
Distinct, accessible colors for data categorization and visualization.
|
|
30
|
-
</p>
|
|
31
|
-
<div className="grid grid-cols-4 gap-4">
|
|
32
|
-
{[
|
|
33
|
-
{ num: 1, color: 'hsl(220 70% 50%)', name: 'Blue' },
|
|
34
|
-
{ num: 2, color: 'hsl(160 60% 45%)', name: 'Teal' },
|
|
35
|
-
{ num: 3, color: 'hsl(30 80% 55%)', name: 'Orange' },
|
|
36
|
-
{ num: 4, color: 'hsl(280 65% 60%)', name: 'Purple' },
|
|
37
|
-
{ num: 5, color: 'hsl(340 75% 55%)', name: 'Pink' },
|
|
38
|
-
{ num: 6, color: 'hsl(120 50% 45%)', name: 'Green' },
|
|
39
|
-
{ num: 7, color: 'hsl(45 85% 60%)', name: 'Yellow' },
|
|
40
|
-
{ num: 8, color: 'hsl(15 75% 50%)', name: 'Red' },
|
|
41
|
-
].map(({ num, color }) => (
|
|
42
|
-
<div key={num} className="space-y-2">
|
|
43
|
-
<div
|
|
44
|
-
className="h-16 rounded flex items-center justify-center text-white font-semibold"
|
|
45
|
-
style={{ backgroundColor: color }}
|
|
46
|
-
>
|
|
47
|
-
Category {num}
|
|
48
|
-
</div>
|
|
49
|
-
<div
|
|
50
|
-
className="px-3 py-1 rounded text-sm"
|
|
51
|
-
style={{
|
|
52
|
-
backgroundColor: color.replace(')', ' / 0.1)'),
|
|
53
|
-
color: color,
|
|
54
|
-
border: `1px solid ${color.replace(')', ' / 0.2)')}`
|
|
55
|
-
}}
|
|
56
|
-
>
|
|
57
|
-
Badge {num}
|
|
58
|
-
</div>
|
|
59
|
-
<div className="text-xs text-center font-mono">bg-category-{num}</div>
|
|
60
|
-
</div>
|
|
61
|
-
))}
|
|
62
|
-
</div>
|
|
63
|
-
</div>
|
|
64
|
-
|
|
65
|
-
{/* Status Colors */}
|
|
66
|
-
<div className="mb-8">
|
|
67
|
-
<h3 className="text-lg font-medium mb-3">Status Colors</h3>
|
|
68
|
-
<p className="text-sm text-muted-foreground mb-4">
|
|
69
|
-
Semantic colors for communicating state and feedback.
|
|
70
|
-
</p>
|
|
71
|
-
<div className="grid grid-cols-5 gap-4">
|
|
72
|
-
{[
|
|
73
|
-
{ status: 'success', color: 'hsl(142 76% 36%)' },
|
|
74
|
-
{ status: 'warning', color: 'hsl(45 93% 47%)' },
|
|
75
|
-
{ status: 'error', color: 'hsl(0 84% 60%)' },
|
|
76
|
-
{ status: 'info', color: 'hsl(217 91% 60%)' },
|
|
77
|
-
{ status: 'neutral', color: 'hsl(215 16% 47%)' },
|
|
78
|
-
].map(({ status, color }) => (
|
|
79
|
-
<div key={status} className="space-y-2">
|
|
80
|
-
<div
|
|
81
|
-
className="h-16 rounded flex items-center justify-center text-white font-semibold capitalize"
|
|
82
|
-
style={{ backgroundColor: color }}
|
|
83
|
-
>
|
|
84
|
-
{status}
|
|
85
|
-
</div>
|
|
86
|
-
<div
|
|
87
|
-
className="px-3 py-1 rounded-pill text-sm capitalize"
|
|
88
|
-
style={{
|
|
89
|
-
backgroundColor: color.replace(')', ' / 0.1)'),
|
|
90
|
-
color: color,
|
|
91
|
-
border: `1px solid ${color.replace(')', ' / 0.2)')}`
|
|
92
|
-
}}
|
|
93
|
-
>
|
|
94
|
-
{status}
|
|
95
|
-
</div>
|
|
96
|
-
<div className="text-xs text-center font-mono">bg-status-{status}</div>
|
|
97
|
-
</div>
|
|
98
|
-
))}
|
|
99
|
-
</div>
|
|
100
|
-
</div>
|
|
101
|
-
|
|
102
|
-
{/* Standard Gray Scale */}
|
|
103
|
-
<div className="mb-8">
|
|
104
|
-
<h3 className="text-lg font-medium mb-3">Standard Gray Scale</h3>
|
|
105
|
-
<p className="text-sm text-muted-foreground mb-4">
|
|
106
|
-
Tailwind-compatible gray scale (50-950) for consistent neutral colors.
|
|
107
|
-
</p>
|
|
108
|
-
<div className="grid grid-cols-6 gap-2">
|
|
109
|
-
{[
|
|
110
|
-
{ shade: 50, color: 'hsl(210 20% 98%)' },
|
|
111
|
-
{ shade: 100, color: 'hsl(214 15% 91%)' },
|
|
112
|
-
{ shade: 200, color: 'hsl(213 27% 84%)' },
|
|
113
|
-
{ shade: 300, color: 'hsl(215 25% 77%)' },
|
|
114
|
-
{ shade: 400, color: 'hsl(215 20% 65%)' },
|
|
115
|
-
{ shade: 500, color: 'hsl(215 16% 47%)' },
|
|
116
|
-
{ shade: 600, color: 'hsl(215 19% 35%)' },
|
|
117
|
-
{ shade: 700, color: 'hsl(215 25% 27%)' },
|
|
118
|
-
{ shade: 800, color: 'hsl(217 33% 17%)' },
|
|
119
|
-
{ shade: 900, color: 'hsl(222 47% 11%)' },
|
|
120
|
-
{ shade: 950, color: 'hsl(224 71% 4%)' },
|
|
121
|
-
].map(({ shade, color }) => (
|
|
122
|
-
<div key={shade} className="space-y-1">
|
|
123
|
-
<div
|
|
124
|
-
className="h-12 rounded border flex items-center justify-center text-xs font-mono"
|
|
125
|
-
style={{
|
|
126
|
-
backgroundColor: color,
|
|
127
|
-
color: shade >= 500 ? 'white' : 'black',
|
|
128
|
-
borderColor: 'hsl(214.3 31.8% 91.4%)'
|
|
129
|
-
}}
|
|
130
|
-
>
|
|
131
|
-
{shade}
|
|
132
|
-
</div>
|
|
133
|
-
<div className="text-xs text-center font-mono">gray-{shade}</div>
|
|
134
|
-
</div>
|
|
135
|
-
))}
|
|
136
|
-
</div>
|
|
137
|
-
</div>
|
|
138
|
-
|
|
139
|
-
{/* Additional Semantic Colors */}
|
|
140
|
-
<div className="mb-8">
|
|
141
|
-
<h3 className="text-lg font-medium mb-3">Additional Semantic Colors</h3>
|
|
142
|
-
<p className="text-sm text-muted-foreground mb-4">
|
|
143
|
-
Extended semantic palette for specific use cases and contexts.
|
|
144
|
-
</p>
|
|
145
|
-
<div className="grid grid-cols-5 gap-4">
|
|
146
|
-
{[
|
|
147
|
-
{ name: 'danger', color: 'hsl(0 84% 60%)' },
|
|
148
|
-
{ name: 'positive', color: 'hsl(142 76% 36%)' },
|
|
149
|
-
{ name: 'negative', color: 'hsl(0 84% 60%)' },
|
|
150
|
-
{ name: 'pending', color: 'hsl(45 93% 47%)' },
|
|
151
|
-
{ name: 'disabled', color: 'hsl(215 16% 47%)' },
|
|
152
|
-
].map(({ name, color }) => (
|
|
153
|
-
<div key={name} className="space-y-2">
|
|
154
|
-
<div
|
|
155
|
-
className="h-16 rounded flex items-center justify-center text-white font-semibold capitalize"
|
|
156
|
-
style={{ backgroundColor: color }}
|
|
157
|
-
>
|
|
158
|
-
{name}
|
|
159
|
-
</div>
|
|
160
|
-
<div className="text-xs text-center font-mono">bg-{name}</div>
|
|
161
|
-
</div>
|
|
162
|
-
))}
|
|
163
|
-
</div>
|
|
164
|
-
</div>
|
|
165
|
-
|
|
166
|
-
{/* Interactive State Colors */}
|
|
167
|
-
<div className="mb-8">
|
|
168
|
-
<h3 className="text-lg font-medium mb-3">Interactive State Colors</h3>
|
|
169
|
-
<p className="text-sm text-muted-foreground mb-4">
|
|
170
|
-
Hover, active, and disabled states for interactive elements.
|
|
171
|
-
</p>
|
|
172
|
-
<div className="grid grid-cols-3 gap-4">
|
|
173
|
-
{[
|
|
174
|
-
{ name: 'Primary States', states: [
|
|
175
|
-
{ label: 'Default', color: 'hsl(222.2 47.4% 11.2%)', textColor: 'hsl(210 40% 98%)' },
|
|
176
|
-
{ label: 'Hover', color: 'hsl(222.2 47.4% 15%)', textColor: 'white' },
|
|
177
|
-
{ label: 'Active', color: 'hsl(222.2 47.4% 8%)', textColor: 'white' },
|
|
178
|
-
]},
|
|
179
|
-
{ name: 'Secondary States', states: [
|
|
180
|
-
{ label: 'Default', color: 'hsl(210 40% 96%)', textColor: 'hsl(222.2 84% 4.9%)' },
|
|
181
|
-
{ label: 'Hover', color: 'hsl(210 40% 92%)', textColor: 'hsl(222.2 84% 4.9%)' },
|
|
182
|
-
{ label: 'Active', color: 'hsl(210 40% 88%)', textColor: 'hsl(222.2 84% 4.9%)' },
|
|
183
|
-
]},
|
|
184
|
-
{ name: 'Destructive States', states: [
|
|
185
|
-
{ label: 'Default', color: 'hsl(0 84.2% 60.2%)', textColor: 'hsl(210 40% 98%)' },
|
|
186
|
-
{ label: 'Hover', color: 'hsl(0 84.2% 65%)', textColor: 'white' },
|
|
187
|
-
{ label: 'Active', color: 'hsl(0 84.2% 55%)', textColor: 'white' },
|
|
188
|
-
]},
|
|
189
|
-
].map(({ name, states }) => (
|
|
190
|
-
<div key={name} className="space-y-3">
|
|
191
|
-
<h4 className="text-sm font-medium">{name}</h4>
|
|
192
|
-
<div className="space-y-2">
|
|
193
|
-
{states.map(({ label, color, textColor }) => (
|
|
194
|
-
<div key={label} className="space-y-1">
|
|
195
|
-
<div
|
|
196
|
-
className="h-12 rounded flex items-center justify-center text-sm font-medium"
|
|
197
|
-
style={{ backgroundColor: color, color: textColor }}
|
|
198
|
-
>
|
|
199
|
-
{label}
|
|
200
|
-
</div>
|
|
201
|
-
<div className="text-xs text-center font-mono">bg-{name.toLowerCase().split(' ')[0]}-{label.toLowerCase()}</div>
|
|
202
|
-
</div>
|
|
203
|
-
))}
|
|
204
|
-
</div>
|
|
205
|
-
</div>
|
|
206
|
-
))}
|
|
207
|
-
</div>
|
|
208
|
-
</div>
|
|
209
|
-
|
|
210
|
-
{/* Extended Gray Scale */}
|
|
211
|
-
<div className="mb-8">
|
|
212
|
-
<h3 className="text-lg font-medium mb-3">Extended Gray Scale (Custom)</h3>
|
|
213
|
-
<p className="text-sm text-muted-foreground mb-4">
|
|
214
|
-
Custom gray values (25-925) for fine-grained neutral color control.
|
|
215
|
-
</p>
|
|
216
|
-
<div className="grid grid-cols-6 gap-2">
|
|
217
|
-
{[
|
|
218
|
-
{ shade: 25, color: 'hsl(210 20% 98%)' },
|
|
219
|
-
{ shade: 75, color: 'hsl(214 15% 91%)' },
|
|
220
|
-
{ shade: 150, color: 'hsl(213 27% 84%)' },
|
|
221
|
-
{ shade: 250, color: 'hsl(215 25% 77%)' },
|
|
222
|
-
{ shade: 350, color: 'hsl(215 20% 65%)' },
|
|
223
|
-
{ shade: 450, color: 'hsl(215 16% 47%)' },
|
|
224
|
-
{ shade: 550, color: 'hsl(215 19% 35%)' },
|
|
225
|
-
{ shade: 650, color: 'hsl(215 25% 27%)' },
|
|
226
|
-
{ shade: 750, color: 'hsl(217 33% 17%)' },
|
|
227
|
-
{ shade: 850, color: 'hsl(222 47% 11%)' },
|
|
228
|
-
{ shade: 925, color: 'hsl(224 71% 4%)' },
|
|
229
|
-
].map(({ shade, color }) => (
|
|
230
|
-
<div key={shade} className="space-y-1">
|
|
231
|
-
<div
|
|
232
|
-
className="h-12 rounded border flex items-center justify-center text-xs font-mono"
|
|
233
|
-
style={{
|
|
234
|
-
backgroundColor: color,
|
|
235
|
-
color: shade >= 450 ? 'white' : 'black',
|
|
236
|
-
borderColor: 'hsl(214.3 31.8% 91.4%)'
|
|
237
|
-
}}
|
|
238
|
-
>
|
|
239
|
-
{shade}
|
|
240
|
-
</div>
|
|
241
|
-
<div className="text-xs text-center font-mono">gray-{shade}</div>
|
|
242
|
-
</div>
|
|
243
|
-
))}
|
|
244
|
-
</div>
|
|
245
|
-
</div>
|
|
246
|
-
</section>
|
|
247
|
-
|
|
248
|
-
{/* Radius System */}
|
|
249
|
-
<section>
|
|
250
|
-
<h2 className="text-2xl font-semibold mb-4">Border Radius System</h2>
|
|
251
|
-
<div className="space-y-6">
|
|
252
|
-
{/* Regular Border Radius */}
|
|
253
|
-
<div>
|
|
254
|
-
<h3 className="text-lg font-medium mb-3">Standard Border Radius</h3>
|
|
255
|
-
<div className="grid grid-cols-4 gap-4">
|
|
256
|
-
{[
|
|
257
|
-
{ name: 'xs', class: 'rounded-xs', description: '2px' },
|
|
258
|
-
{ name: 'sm', class: 'rounded-sm', description: '4px' },
|
|
259
|
-
{ name: 'default', class: 'rounded', description: '8px' },
|
|
260
|
-
{ name: 'md', class: 'rounded-md', description: '10px' },
|
|
261
|
-
{ name: 'lg', class: 'rounded-lg', description: '12px' },
|
|
262
|
-
{ name: 'xl', class: 'rounded-xl', description: '16px' },
|
|
263
|
-
{ name: '2xl', class: 'rounded-2xl', description: '20px' },
|
|
264
|
-
{ name: '3xl', class: 'rounded-3xl', description: '24px' },
|
|
265
|
-
].map((radius) => (
|
|
266
|
-
<div key={radius.name} className="text-center">
|
|
267
|
-
<div
|
|
268
|
-
className={cn("h-16 w-full mb-2 flex items-center justify-center text-white font-medium", radius.class)}
|
|
269
|
-
style={{ backgroundColor: 'hsl(220 70% 50%)' }}
|
|
270
|
-
>
|
|
271
|
-
{radius.name}
|
|
272
|
-
</div>
|
|
273
|
-
<div className="text-sm font-mono">{radius.class}</div>
|
|
274
|
-
<div className="text-xs text-muted-foreground">{radius.description}</div>
|
|
275
|
-
</div>
|
|
276
|
-
))}
|
|
277
|
-
</div>
|
|
278
|
-
</div>
|
|
279
|
-
|
|
280
|
-
{/* Pill Shapes */}
|
|
281
|
-
<div>
|
|
282
|
-
<h3 className="text-lg font-medium mb-3">Pill Shapes (Fully Rounded)</h3>
|
|
283
|
-
<div className="space-y-3">
|
|
284
|
-
<div className="flex items-center gap-4">
|
|
285
|
-
<div
|
|
286
|
-
className="px-6 py-3 rounded-pill text-white font-medium"
|
|
287
|
-
style={{ backgroundColor: 'hsl(220 70% 50%)' }}
|
|
288
|
-
>
|
|
289
|
-
Button Pill
|
|
290
|
-
</div>
|
|
291
|
-
<div className="text-sm font-mono">rounded-pill</div>
|
|
292
|
-
<div className="text-sm text-muted-foreground">Perfect for buttons and badges</div>
|
|
293
|
-
</div>
|
|
294
|
-
<div className="flex items-center gap-4">
|
|
295
|
-
<div
|
|
296
|
-
className="px-4 py-2 rounded-pill text-sm"
|
|
297
|
-
style={{
|
|
298
|
-
backgroundColor: 'hsl(220 70% 50% / 0.1)',
|
|
299
|
-
color: 'hsl(220 70% 50%)',
|
|
300
|
-
border: '1px solid hsl(220 70% 50% / 0.2)'
|
|
301
|
-
}}
|
|
302
|
-
>
|
|
303
|
-
Badge Pill
|
|
304
|
-
</div>
|
|
305
|
-
<div className="text-sm font-mono">rounded-pill</div>
|
|
306
|
-
<div className="text-sm text-muted-foreground">Great for status indicators</div>
|
|
307
|
-
</div>
|
|
308
|
-
<div className="flex items-center gap-4">
|
|
309
|
-
<div
|
|
310
|
-
className="w-8 h-8 rounded-pill flex items-center justify-center text-white font-medium"
|
|
311
|
-
style={{ backgroundColor: 'hsl(220 70% 50%)' }}
|
|
312
|
-
>
|
|
313
|
-
A
|
|
314
|
-
</div>
|
|
315
|
-
<div className="text-sm font-mono">rounded-pill</div>
|
|
316
|
-
<div className="text-sm text-muted-foreground">Avatar or icon containers</div>
|
|
317
|
-
</div>
|
|
318
|
-
</div>
|
|
319
|
-
</div>
|
|
320
|
-
</div>
|
|
321
|
-
</section>
|
|
322
|
-
|
|
323
|
-
{/* Spacing System */}
|
|
324
|
-
<section>
|
|
325
|
-
<h2 className="text-2xl font-semibold mb-4">Spacing System</h2>
|
|
326
|
-
<div className="space-y-4">
|
|
327
|
-
<div>
|
|
328
|
-
<h3 className="text-lg font-medium mb-3">Card Layouts</h3>
|
|
329
|
-
<div className="space-y-4">
|
|
330
|
-
|
|
331
|
-
{/* Standard Card */}
|
|
332
|
-
<Card className="card-container">
|
|
333
|
-
<h4 className="text-data-label">Standard Card</h4>
|
|
334
|
-
<p className="text-data-value">Uses var(--card-padding) for consistent spacing</p>
|
|
335
|
-
<p className="text-data-meta">Perfect for primary content containers</p>
|
|
336
|
-
</Card>
|
|
337
|
-
|
|
338
|
-
{/* Nested Card */}
|
|
339
|
-
<Card className="card-container">
|
|
340
|
-
<h4 className="text-data-label">Parent Card</h4>
|
|
341
|
-
<p className="text-data-value mb-4">Contains nested elements with proper spacing</p>
|
|
342
|
-
|
|
343
|
-
<div className="card-nested">
|
|
344
|
-
<h5 className="text-data-label">Nested Card</h5>
|
|
345
|
-
<p className="text-data-value">Automatically offset by var(--nested-offset)</p>
|
|
346
|
-
<p className="text-data-meta">Edges align perfectly with parent</p>
|
|
347
|
-
</div>
|
|
348
|
-
</Card>
|
|
349
|
-
|
|
350
|
-
{/* Flush Cards */}
|
|
351
|
-
<Card className="card-container">
|
|
352
|
-
<h4 className="text-data-label mb-4">List with Flush Cards</h4>
|
|
353
|
-
{['Item 1', 'Item 2', 'Item 3'].map((item, i) => (
|
|
354
|
-
<div key={i} className="card-flush border">
|
|
355
|
-
<div className="text-data-value">{item}</div>
|
|
356
|
-
<div className="text-data-meta">Flush cards for seamless lists</div>
|
|
357
|
-
</div>
|
|
358
|
-
))}
|
|
359
|
-
</Card>
|
|
360
|
-
</div>
|
|
361
|
-
</div>
|
|
362
|
-
|
|
363
|
-
<div>
|
|
364
|
-
<h3 className="text-lg font-medium mb-3">Edge Alignment</h3>
|
|
365
|
-
<Card className="card-container">
|
|
366
|
-
<h4 className="text-data-label">Edge Alignment Demo</h4>
|
|
367
|
-
<div className="edge-align-both bg-muted p-4 rounded text-center">
|
|
368
|
-
<div className="text-data-value">Edge Aligned Content</div>
|
|
369
|
-
<div className="text-data-meta">Extends to card edges using edge-align-both</div>
|
|
370
|
-
</div>
|
|
371
|
-
</Card>
|
|
372
|
-
</div>
|
|
373
|
-
</div>
|
|
374
|
-
</section>
|
|
375
|
-
|
|
376
|
-
{/* Typography */}
|
|
377
|
-
<section>
|
|
378
|
-
<h2 className="text-2xl font-semibold mb-4">Typography System</h2>
|
|
379
|
-
<p className="text-muted-foreground mb-8">
|
|
380
|
-
Specialized typography classes designed for data interfaces and information hierarchy.
|
|
381
|
-
</p>
|
|
382
|
-
|
|
383
|
-
<div className="space-y-6">
|
|
384
|
-
{/* Data Typography Hierarchy */}
|
|
385
|
-
<Card className="card-container">
|
|
386
|
-
<h3 className="text-lg font-medium mb-4">Data Typography Hierarchy</h3>
|
|
387
|
-
<div className="space-y-4">
|
|
388
|
-
<div>
|
|
389
|
-
<div className="text-data-label">Label Text</div>
|
|
390
|
-
<div className="text-data-value">Primary Value</div>
|
|
391
|
-
<div className="text-data-meta">Supporting metadata information</div>
|
|
392
|
-
</div>
|
|
393
|
-
<div className="text-sm text-muted-foreground">
|
|
394
|
-
Perfect for displaying data relationships with clear visual hierarchy.
|
|
395
|
-
</div>
|
|
396
|
-
</div>
|
|
397
|
-
</Card>
|
|
398
|
-
|
|
399
|
-
{/* Typography Scale */}
|
|
400
|
-
<Card className="card-container">
|
|
401
|
-
<h3 className="text-lg font-medium mb-4">Data Typography Scale</h3>
|
|
402
|
-
|
|
403
|
-
<div className="grid grid-cols-3 gap-4">
|
|
404
|
-
<div>
|
|
405
|
-
<div className="text-data-xs mb-1">Data XS</div>
|
|
406
|
-
<div className="text-xs font-mono bg-muted p-2 rounded">text-data-xs</div>
|
|
407
|
-
<div className="text-xs text-muted-foreground mt-1">12px • For fine details</div>
|
|
408
|
-
</div>
|
|
409
|
-
<div>
|
|
410
|
-
<div className="text-data-sm mb-1">Data SM</div>
|
|
411
|
-
<div className="text-xs font-mono bg-muted p-2 rounded">text-data-sm</div>
|
|
412
|
-
<div className="text-xs text-muted-foreground mt-1">14px • Metadata</div>
|
|
413
|
-
</div>
|
|
414
|
-
<div>
|
|
415
|
-
<div className="text-data-base mb-1">Data Base</div>
|
|
416
|
-
<div className="text-xs font-mono bg-muted p-2 rounded">text-data-base</div>
|
|
417
|
-
<div className="text-xs text-muted-foreground mt-1">16px • Body text</div>
|
|
418
|
-
</div>
|
|
419
|
-
<div>
|
|
420
|
-
<div className="text-data-lg mb-1">Data LG</div>
|
|
421
|
-
<div className="text-xs font-mono bg-muted p-2 rounded">text-data-lg</div>
|
|
422
|
-
<div className="text-xs text-muted-foreground mt-1">18px • Emphasis</div>
|
|
423
|
-
</div>
|
|
424
|
-
<div>
|
|
425
|
-
<div className="text-data-xl mb-1">Data XL</div>
|
|
426
|
-
<div className="text-xs font-mono bg-muted p-2 rounded">text-data-xl</div>
|
|
427
|
-
<div className="text-xs text-muted-foreground mt-1">20px • Headings</div>
|
|
428
|
-
</div>
|
|
429
|
-
</div>
|
|
430
|
-
</Card>
|
|
431
|
-
</div>
|
|
432
|
-
</section>
|
|
433
|
-
|
|
434
|
-
{/* Stat Cards */}
|
|
435
|
-
<section>
|
|
436
|
-
<h2 className="text-2xl font-semibold mb-4">Stat Cards</h2>
|
|
437
|
-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
438
|
-
<StatCard
|
|
439
|
-
title="Total Users"
|
|
440
|
-
value="1,234"
|
|
441
|
-
subtitle="Active accounts"
|
|
442
|
-
trend={{ value: 12.5, label: "vs last month" }}
|
|
443
|
-
category={1}
|
|
444
|
-
icon={<Users className="w-5 h-5" />}
|
|
445
|
-
onClick={() => console.log('Navigate to users')}
|
|
446
|
-
/>
|
|
447
|
-
<StatCard
|
|
448
|
-
title="Revenue"
|
|
449
|
-
value="$45,231"
|
|
450
|
-
subtitle="Monthly recurring"
|
|
451
|
-
trend={{ value: -3.2, label: "vs last month" }}
|
|
452
|
-
category={2}
|
|
453
|
-
icon={<DollarSign className="w-5 h-5" />}
|
|
454
|
-
/>
|
|
455
|
-
<StatCard
|
|
456
|
-
title="Orders"
|
|
457
|
-
value="89"
|
|
458
|
-
subtitle="This week"
|
|
459
|
-
trend={{ value: 0, label: "vs last week" }}
|
|
460
|
-
category={3}
|
|
461
|
-
icon={<ShoppingCart className="w-5 h-5" />}
|
|
462
|
-
/>
|
|
463
|
-
<StatCard
|
|
464
|
-
title="Growth Rate"
|
|
465
|
-
value="23.1%"
|
|
466
|
-
subtitle="Year over year"
|
|
467
|
-
trend={{ value: 8.7, label: "vs last year" }}
|
|
468
|
-
category={4}
|
|
469
|
-
icon={<TrendingUp className="w-5 h-5" />}
|
|
470
|
-
/>
|
|
471
|
-
</div>
|
|
472
|
-
</section>
|
|
473
|
-
|
|
474
|
-
{/* Data Badges */}
|
|
475
|
-
<section>
|
|
476
|
-
<h2 className="text-2xl font-semibold mb-4">Data Badges</h2>
|
|
477
|
-
<Card className="card-container space-y-6">
|
|
478
|
-
<div>
|
|
479
|
-
<h3 className="text-lg font-medium mb-3">Category Badges</h3>
|
|
480
|
-
<div className="flex flex-wrap gap-2">
|
|
481
|
-
<DataBadge variant="category" category={1}>User</DataBadge>
|
|
482
|
-
<DataBadge variant="category" category={2}>Admin</DataBadge>
|
|
483
|
-
<DataBadge variant="category" category={3}>Manager</DataBadge>
|
|
484
|
-
<DataBadge variant="category" category={4}>Guest</DataBadge>
|
|
485
|
-
<DataBadge variant="category" category={5}>VIP</DataBadge>
|
|
486
|
-
</div>
|
|
487
|
-
</div>
|
|
488
|
-
|
|
489
|
-
<div>
|
|
490
|
-
<h3 className="text-lg font-medium mb-3">Status Badges</h3>
|
|
491
|
-
<div className="flex flex-wrap gap-2">
|
|
492
|
-
<DataBadge variant="status" status="success">Active</DataBadge>
|
|
493
|
-
<DataBadge variant="status" status="warning">Pending</DataBadge>
|
|
494
|
-
<DataBadge variant="status" status="error">Inactive</DataBadge>
|
|
495
|
-
<DataBadge variant="status" status="info">Processing</DataBadge>
|
|
496
|
-
<DataBadge variant="status" status="neutral">Unknown</DataBadge>
|
|
497
|
-
</div>
|
|
498
|
-
</div>
|
|
499
|
-
|
|
500
|
-
<div>
|
|
501
|
-
<h3 className="text-lg font-medium mb-3">Interactive Badges</h3>
|
|
502
|
-
<div className="flex flex-wrap gap-2">
|
|
503
|
-
<DataBadge variant="category" category={1} interactive onClick={() => alert('Category clicked!')}>
|
|
504
|
-
Clickable
|
|
505
|
-
</DataBadge>
|
|
506
|
-
<DataBadge variant="status" status="success" size="lg" interactive>
|
|
507
|
-
Large Badge
|
|
508
|
-
</DataBadge>
|
|
509
|
-
<DataBadge variant="category" category={3} size="sm">
|
|
510
|
-
Small Badge
|
|
511
|
-
</DataBadge>
|
|
512
|
-
</div>
|
|
513
|
-
</div>
|
|
514
|
-
</Card>
|
|
515
|
-
</section>
|
|
516
|
-
|
|
517
|
-
{/* Empty States */}
|
|
518
|
-
<section>
|
|
519
|
-
<h2 className="text-2xl font-semibold mb-4">Empty States</h2>
|
|
520
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
521
|
-
<Card className="card-container">
|
|
522
|
-
<EmptyState
|
|
523
|
-
variant="no-data"
|
|
524
|
-
title="No users found"
|
|
525
|
-
description="Get started by inviting your first team member to the workspace."
|
|
526
|
-
action={{
|
|
527
|
-
label: "Invite User",
|
|
528
|
-
onClick: () => console.log('Invite user')
|
|
529
|
-
}}
|
|
530
|
-
secondaryAction={{
|
|
531
|
-
label: "Learn More",
|
|
532
|
-
onClick: () => console.log('Learn more')
|
|
533
|
-
}}
|
|
534
|
-
/>
|
|
535
|
-
</Card>
|
|
536
|
-
|
|
537
|
-
<Card className="card-container">
|
|
538
|
-
<EmptyState
|
|
539
|
-
variant="no-results"
|
|
540
|
-
title="No search results"
|
|
541
|
-
description="Try adjusting your search terms or clearing the current filters."
|
|
542
|
-
action={{
|
|
543
|
-
label: "Clear Filters",
|
|
544
|
-
onClick: () => console.log('Clear filters')
|
|
545
|
-
}}
|
|
546
|
-
/>
|
|
547
|
-
</Card>
|
|
548
|
-
</div>
|
|
549
|
-
</section>
|
|
550
|
-
|
|
551
|
-
{/* Data Table Component */}
|
|
552
|
-
<section>
|
|
553
|
-
<h2 className="text-2xl font-semibold mb-4">Data Table Component</h2>
|
|
554
|
-
<Card className="card-container">
|
|
555
|
-
<DataTableExample />
|
|
556
|
-
</Card>
|
|
557
|
-
</section>
|
|
558
|
-
|
|
559
|
-
{/* Usage Examples */}
|
|
560
|
-
<section>
|
|
561
|
-
<h2 className="text-2xl font-semibold mb-4">Real-World Examples</h2>
|
|
562
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
563
|
-
|
|
564
|
-
{/* Data Table Card */}
|
|
565
|
-
<Card className="card-container">
|
|
566
|
-
<div className="text-data-label">User Analytics</div>
|
|
567
|
-
<div className="space-y-3 mt-4">
|
|
568
|
-
{[
|
|
569
|
-
{ label: 'Active Users', value: '1,234', status: 'success', category: 1, categoryClass: 'bg-category-1', statusClass: 'status-success' },
|
|
570
|
-
{ label: 'New Signups', value: '89', status: 'info', category: 2, categoryClass: 'bg-category-2', statusClass: 'status-info' },
|
|
571
|
-
{ label: 'Churn Rate', value: '2.3%', status: 'warning', category: 3, categoryClass: 'bg-category-3', statusClass: 'status-warning' },
|
|
572
|
-
].map((item, i) => (
|
|
573
|
-
<div key={i} className="flex items-center justify-between p-3 bg-muted/30 rounded">
|
|
574
|
-
<div className="flex items-center gap-3">
|
|
575
|
-
<div className={cn("w-3 h-3 rounded-full", item.categoryClass)}></div>
|
|
576
|
-
<div className="text-data-value">{item.label}</div>
|
|
577
|
-
</div>
|
|
578
|
-
<div className="flex items-center gap-2">
|
|
579
|
-
<div className="text-data-value">{item.value}</div>
|
|
580
|
-
<div className={cn("px-2 py-1 rounded-pill text-xs", item.statusClass)}>
|
|
581
|
-
{item.status}
|
|
582
|
-
</div>
|
|
583
|
-
</div>
|
|
584
|
-
</div>
|
|
585
|
-
))}
|
|
586
|
-
</div>
|
|
587
|
-
</Card>
|
|
588
|
-
|
|
589
|
-
{/* Status Dashboard */}
|
|
590
|
-
<Card className="card-container">
|
|
591
|
-
<div className="text-data-label">System Status</div>
|
|
592
|
-
<div className="grid grid-cols-2 gap-card-gap mt-4">
|
|
593
|
-
{[
|
|
594
|
-
{ service: 'API', status: 'success', uptime: '99.9%', statusClass: 'status-success' },
|
|
595
|
-
{ service: 'Database', status: 'success', uptime: '99.8%', statusClass: 'status-success' },
|
|
596
|
-
{ service: 'Cache', status: 'warning', uptime: '98.2%', statusClass: 'status-warning' },
|
|
597
|
-
{ service: 'CDN', status: 'error', uptime: '97.1%', statusClass: 'status-error' },
|
|
598
|
-
].map((item, i) => (
|
|
599
|
-
<div key={i} className="card-nested">
|
|
600
|
-
<div className="text-data-label">{item.service}</div>
|
|
601
|
-
<div className="text-data-value">{item.uptime}</div>
|
|
602
|
-
<div className={cn("px-2 py-1 rounded-pill text-xs mt-2 inline-block", item.statusClass)}>
|
|
603
|
-
{item.status}
|
|
604
|
-
</div>
|
|
605
|
-
</div>
|
|
606
|
-
))}
|
|
607
|
-
</div>
|
|
608
|
-
</Card>
|
|
609
|
-
</div>
|
|
610
|
-
</section>
|
|
611
|
-
</div>
|
|
612
|
-
);
|
|
613
|
-
};
|
|
614
|
-
|
|
615
|
-
// DataTable Example Component
|
|
616
|
-
const DataTableExample = () => {
|
|
617
|
-
// Sample data
|
|
618
|
-
const sampleData = [
|
|
619
|
-
{ id: 1, name: 'John Doe', email: 'john@example.com', role: 'Admin', status: 'active', category: 1 },
|
|
620
|
-
{ id: 2, name: 'Jane Smith', email: 'jane@example.com', role: 'User', status: 'active', category: 2 },
|
|
621
|
-
{ id: 3, name: 'Bob Johnson', email: 'bob@example.com', role: 'Manager', status: 'inactive', category: 3 },
|
|
622
|
-
{ id: 4, name: 'Alice Brown', email: 'alice@example.com', role: 'User', status: 'pending', category: 4 },
|
|
623
|
-
{ id: 5, name: 'Charlie Wilson', email: 'charlie@example.com', role: 'Admin', status: 'active', category: 1 },
|
|
624
|
-
{ id: 6, name: 'Diana Evans', email: 'diana@example.com', role: 'Manager', status: 'active', category: 2 },
|
|
625
|
-
{ id: 7, name: 'Frank Miller', email: 'frank@example.com', role: 'User', status: 'inactive', category: 3 },
|
|
626
|
-
{ id: 8, name: 'Grace Lee', email: 'grace@example.com', role: 'Admin', status: 'active', category: 4 },
|
|
627
|
-
{ id: 9, name: 'Henry Taylor', email: 'henry@example.com', role: 'User', status: 'pending', category: 1 },
|
|
628
|
-
{ id: 10, name: 'Iris Clark', email: 'iris@example.com', role: 'Manager', status: 'active', category: 2 },
|
|
629
|
-
{ id: 11, name: 'Jack Davis', email: 'jack@example.com', role: 'User', status: 'active', category: 3 },
|
|
630
|
-
{ id: 12, name: 'Kate Moore', email: 'kate@example.com', role: 'Admin', status: 'inactive', category: 4 },
|
|
631
|
-
];
|
|
632
|
-
|
|
633
|
-
// Column definitions
|
|
634
|
-
const columns: Column<typeof sampleData[0]>[] = [
|
|
635
|
-
{
|
|
636
|
-
key: 'name',
|
|
637
|
-
header: 'Name',
|
|
638
|
-
sortable: true,
|
|
639
|
-
filterable: true,
|
|
640
|
-
},
|
|
641
|
-
{
|
|
642
|
-
key: 'email',
|
|
643
|
-
header: 'Email',
|
|
644
|
-
sortable: true,
|
|
645
|
-
filterable: true,
|
|
646
|
-
},
|
|
647
|
-
{
|
|
648
|
-
key: 'role',
|
|
649
|
-
header: 'Role',
|
|
650
|
-
sortable: true,
|
|
651
|
-
filterable: true,
|
|
652
|
-
cell: (item) => (
|
|
653
|
-
<DataBadge variant="category" category={item.category as 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8}>
|
|
654
|
-
{item.role}
|
|
655
|
-
</DataBadge>
|
|
656
|
-
),
|
|
657
|
-
},
|
|
658
|
-
{
|
|
659
|
-
key: 'status',
|
|
660
|
-
header: 'Status',
|
|
661
|
-
sortable: true,
|
|
662
|
-
filterable: true,
|
|
663
|
-
cell: (item) => {
|
|
664
|
-
const statusType = {
|
|
665
|
-
active: 'success',
|
|
666
|
-
inactive: 'neutral',
|
|
667
|
-
pending: 'warning',
|
|
668
|
-
}[item.status] || 'neutral';
|
|
669
|
-
|
|
670
|
-
return (
|
|
671
|
-
<DataBadge variant="status" status={statusType as 'success' | 'warning' | 'error' | 'info' | 'neutral'}>
|
|
672
|
-
{item.status}
|
|
673
|
-
</DataBadge>
|
|
674
|
-
);
|
|
675
|
-
},
|
|
676
|
-
},
|
|
677
|
-
];
|
|
678
|
-
|
|
679
|
-
return (
|
|
680
|
-
<div className="space-y-4">
|
|
681
|
-
<div>
|
|
682
|
-
<h3 className="text-lg font-medium mb-2">Advanced Data Table</h3>
|
|
683
|
-
<p className="text-data-meta mb-4">
|
|
684
|
-
Features: sorting, filtering, pagination, custom cell rendering
|
|
685
|
-
</p>
|
|
686
|
-
</div>
|
|
687
|
-
|
|
688
|
-
<DataTable
|
|
689
|
-
data={sampleData}
|
|
690
|
-
columns={columns}
|
|
691
|
-
pageSize={5}
|
|
692
|
-
searchPlaceholder="Search users..."
|
|
693
|
-
onRowClick={(item) => console.log('Clicked:', item)}
|
|
694
|
-
/>
|
|
695
|
-
|
|
696
|
-
<div className="mt-6 p-4 bg-muted/30 rounded">
|
|
697
|
-
<h4 className="text-data-label mb-2">Usage Example</h4>
|
|
698
|
-
<pre className="text-xs overflow-x-auto">
|
|
699
|
-
{`<DataTable
|
|
700
|
-
data={users}
|
|
701
|
-
columns={[
|
|
702
|
-
{ key: 'name', header: 'Name', sortable: true },
|
|
703
|
-
{ key: 'email', header: 'Email', sortable: true },
|
|
704
|
-
{
|
|
705
|
-
key: 'status',
|
|
706
|
-
header: 'Status',
|
|
707
|
-
cell: (item) => <StatusBadge status={item.status} />
|
|
708
|
-
}
|
|
709
|
-
]}
|
|
710
|
-
pageSize={10}
|
|
711
|
-
onRowClick={(user) => navigate(\`/users/\${user.id}\`)}
|
|
712
|
-
/>`}
|
|
713
|
-
</pre>
|
|
714
|
-
</div>
|
|
715
|
-
</div>
|
|
716
|
-
);
|
|
717
|
-
};
|