@pattern-stack/frontend-patterns 0.1.3 → 0.2.0-alpha.1
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 +69 -74
- package/README.md +17 -2
- package/cli/commands/generate-hooks.ts +15 -6
- package/cli/commands/scaffold.ts +1 -1
- package/cli/index.ts +1 -3
- package/cli/src/codegen/openapi/__tests__/naming-utils.test.js +367 -0
- package/cli/src/codegen/openapi/client-generator.js +90 -35
- package/cli/src/codegen/openapi/confidence-scorer.js +89 -200
- package/cli/src/codegen/openapi/hook-config.js +45 -63
- package/cli/src/codegen/openapi/hook-generator.js +253 -547
- package/cli/src/codegen/openapi/naming-constants.js +98 -0
- package/cli/src/codegen/openapi/naming-utils.js +149 -0
- package/cli/src/codegen/openapi/parser.js +9 -14
- package/cli/src/codegen/openapi/type-generator.js +6 -16
- package/dist/atoms/components/core/Avatar/Avatar.d.ts +6 -6
- package/dist/atoms/components/core/Avatar/Avatar.d.ts.map +1 -1
- package/dist/atoms/components/core/Avatar/index.d.ts +1 -1
- package/dist/atoms/components/core/Badge/Badge.d.ts +6 -6
- package/dist/atoms/components/core/Badge/Badge.d.ts.map +1 -1
- package/dist/atoms/components/core/Badge/index.d.ts +1 -1
- package/dist/atoms/components/core/Button/Button.d.ts +3 -3
- package/dist/atoms/components/core/Button/Button.d.ts.map +1 -1
- package/dist/atoms/components/core/Button/index.d.ts +2 -2
- package/dist/atoms/components/core/Card/Card.d.ts +2 -2
- package/dist/atoms/components/core/Card/Card.d.ts.map +1 -1
- package/dist/atoms/components/core/Card/index.d.ts +2 -2
- package/dist/atoms/components/core/Card/index.d.ts.map +1 -1
- package/dist/atoms/components/core/Checkbox/Checkbox.d.ts +4 -4
- package/dist/atoms/components/core/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/atoms/components/core/Checkbox/index.d.ts +2 -2
- package/dist/atoms/components/core/Input/Input.d.ts +2 -2
- package/dist/atoms/components/core/Input/Input.d.ts.map +1 -1
- package/dist/atoms/components/core/Input/index.d.ts +2 -2
- package/dist/atoms/components/core/Label/Label.d.ts +3 -4
- package/dist/atoms/components/core/Label/Label.d.ts.map +1 -1
- package/dist/atoms/components/core/Label/index.d.ts +2 -2
- package/dist/atoms/components/core/Select/Select.d.ts +5 -5
- package/dist/atoms/components/core/Select/Select.d.ts.map +1 -1
- package/dist/atoms/components/core/Select/index.d.ts +2 -2
- package/dist/atoms/components/core/Select/index.d.ts.map +1 -1
- package/dist/atoms/components/core/Spinner/Spinner.d.ts +4 -4
- package/dist/atoms/components/core/Spinner/Spinner.d.ts.map +1 -1
- package/dist/atoms/components/core/Spinner/index.d.ts +2 -2
- package/dist/atoms/components/core/Switch/Switch.d.ts +4 -4
- package/dist/atoms/components/core/Switch/Switch.d.ts.map +1 -1
- package/dist/atoms/components/core/Switch/index.d.ts +1 -1
- package/dist/atoms/components/core/index.d.ts +10 -10
- package/dist/atoms/components/core/index.d.ts.map +1 -1
- package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts +2 -2
- package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts.map +1 -1
- package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts +3 -3
- package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts.map +1 -1
- package/dist/atoms/components/data/ActivityFeed/index.d.ts +3 -3
- package/dist/atoms/components/data/ActivityFeed/index.d.ts.map +1 -1
- package/dist/atoms/components/data/ActivityFeed/types.d.ts +3 -3
- package/dist/atoms/components/data/ActivityFeed/types.d.ts.map +1 -1
- package/dist/atoms/components/data/ActivityFeed/utils.d.ts +2 -2
- package/dist/atoms/components/data/ActivityFeed/utils.d.ts.map +1 -1
- package/dist/atoms/components/data/Chart/Chart.d.ts +52 -5
- package/dist/atoms/components/data/Chart/Chart.d.ts.map +1 -1
- package/dist/atoms/components/data/Chart/index.d.ts +2 -2
- package/dist/atoms/components/data/Chart/index.d.ts.map +1 -1
- package/dist/atoms/components/data/DataBadge/DataBadge.d.ts +6 -6
- package/dist/atoms/components/data/DataBadge/DataBadge.d.ts.map +1 -1
- package/dist/atoms/components/data/DataBadge/index.d.ts +1 -1
- package/dist/atoms/components/data/DataTable/DataTable.d.ts +4 -4
- package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +1 -1
- package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +4 -4
- package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +1 -1
- package/dist/atoms/components/data/DataTable/TableCellWithTooltip.d.ts +1 -1
- package/dist/atoms/components/data/DataTable/index.d.ts +2 -2
- package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts +4 -4
- package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts.map +1 -1
- package/dist/atoms/components/data/DetailedCard/index.d.ts +2 -2
- package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts +3 -3
- package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts.map +1 -1
- package/dist/atoms/components/data/EntityIcon/index.d.ts +1 -1
- package/dist/atoms/components/data/IconBadge/IconBadge.d.ts +6 -6
- package/dist/atoms/components/data/IconBadge/IconBadge.d.ts.map +1 -1
- package/dist/atoms/components/data/IconBadge/index.d.ts +2 -2
- package/dist/atoms/components/data/ListCard/ListCard.d.ts +9 -9
- package/dist/atoms/components/data/ListCard/ListCard.d.ts.map +1 -1
- package/dist/atoms/components/data/ListCard/index.d.ts +1 -1
- package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts +5 -5
- package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/atoms/components/data/ProgressBar/index.d.ts +1 -1
- package/dist/atoms/components/data/StatCard/StatCard.d.ts +3 -3
- package/dist/atoms/components/data/StatCard/StatCard.d.ts.map +1 -1
- package/dist/atoms/components/data/StatCard/index.d.ts +1 -1
- package/dist/atoms/components/data/Table/Table.d.ts +2 -2
- package/dist/atoms/components/data/Table/Table.d.ts.map +1 -1
- package/dist/atoms/components/data/Table/index.d.ts +1 -1
- package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts +2 -2
- package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts.map +1 -1
- package/dist/atoms/components/data/TruncatedText/index.d.ts +1 -1
- package/dist/atoms/components/data/index.d.ts +12 -12
- package/dist/atoms/components/data/index.d.ts.map +1 -1
- package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts +15 -15
- package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts.map +1 -1
- package/dist/atoms/components/domain/SalesPanel/index.d.ts +1 -1
- package/dist/atoms/components/domain/SalesPanel/index.d.ts.map +1 -1
- package/dist/atoms/components/domain/index.d.ts +1 -1
- package/dist/atoms/components/feedback/Alert/Alert.d.ts +4 -4
- package/dist/atoms/components/feedback/Alert/Alert.d.ts.map +1 -1
- package/dist/atoms/components/feedback/Alert/index.d.ts +1 -1
- package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts +3 -3
- package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/atoms/components/feedback/EmptyState/index.d.ts +1 -1
- package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +1 -1
- package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts.map +1 -1
- package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts +1 -1
- package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts +30 -4
- package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/atoms/components/feedback/Skeleton/index.d.ts +1 -1
- package/dist/atoms/components/feedback/Toast/Toast.d.ts +4 -4
- package/dist/atoms/components/feedback/Toast/Toast.d.ts.map +1 -1
- package/dist/atoms/components/feedback/Toast/index.d.ts +1 -1
- package/dist/atoms/components/feedback/Toast/index.d.ts.map +1 -1
- package/dist/atoms/components/feedback/index.d.ts +5 -5
- package/dist/atoms/components/feedback/index.d.ts.map +1 -1
- package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts +6 -6
- package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts.map +1 -1
- package/dist/atoms/components/forms/DateTimePicker/index.d.ts +2 -2
- package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts +3 -3
- package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts.map +1 -1
- package/dist/atoms/components/forms/FileUpload/index.d.ts +2 -2
- package/dist/atoms/components/forms/FormField/FormField.d.ts +2 -2
- package/dist/atoms/components/forms/FormField/FormField.d.ts.map +1 -1
- package/dist/atoms/components/forms/FormField/index.d.ts +1 -1
- package/dist/atoms/components/forms/index.d.ts +3 -3
- package/dist/atoms/components/index.d.ts +9 -9
- package/dist/atoms/components/layout/Accordion/Accordion.d.ts +3 -3
- package/dist/atoms/components/layout/Accordion/Accordion.d.ts.map +1 -1
- package/dist/atoms/components/layout/Accordion/index.d.ts +1 -1
- package/dist/atoms/components/layout/Accordion/index.d.ts.map +1 -1
- package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts +2 -3
- package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/atoms/components/layout/Breadcrumb/index.d.ts +1 -1
- package/dist/atoms/components/layout/Breadcrumb/index.d.ts.map +1 -1
- 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 +2 -2
- package/dist/atoms/components/layout/Dialog/index.d.ts.map +1 -1
- package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts +9 -9
- package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/atoms/components/layout/Dropdown/index.d.ts +2 -2
- package/dist/atoms/components/layout/Dropdown/index.d.ts.map +1 -1
- package/dist/atoms/components/layout/Modal/Modal.d.ts +6 -6
- package/dist/atoms/components/layout/Modal/Modal.d.ts.map +1 -1
- package/dist/atoms/components/layout/Modal/index.d.ts +2 -2
- 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 +1 -1
- package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts +6 -6
- package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/atoms/components/layout/Tooltip/index.d.ts +1 -1
- package/dist/atoms/components/layout/index.d.ts +7 -7
- package/dist/atoms/components/layout/index.d.ts.map +1 -1
- package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts +2 -3
- package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts.map +1 -1
- package/dist/atoms/components/navigation/GlobalSearch/index.d.ts +1 -1
- package/dist/atoms/components/navigation/GlobalSearch/index.d.ts.map +1 -1
- package/dist/atoms/components/navigation/index.d.ts +1 -1
- package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts +2 -2
- package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts.map +1 -1
- package/dist/atoms/components/theme/ColorSwatch/index.d.ts +1 -1
- package/dist/atoms/components/theme/DarkModeToggle.d.ts.map +1 -1
- package/dist/atoms/components/theme/PaletteSwitcher.d.ts +1 -1
- package/dist/atoms/components/theme/PaletteSwitcher.d.ts.map +1 -1
- package/dist/atoms/components/theme/StyleGuide.d.ts +1 -1
- package/dist/atoms/components/theme/StyleGuide.d.ts.map +1 -1
- package/dist/atoms/components/theme/index.d.ts +4 -4
- package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts +2 -3
- package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts.map +1 -1
- package/dist/atoms/components/user/UserAvatar/index.d.ts +1 -1
- package/dist/atoms/components/user/UserAvatar/index.d.ts.map +1 -1
- package/dist/atoms/components/user/UserMenu/UserMenu.d.ts +2 -3
- package/dist/atoms/components/user/UserMenu/UserMenu.d.ts.map +1 -1
- package/dist/atoms/components/user/UserMenu/index.d.ts +1 -1
- package/dist/atoms/components/user/UserMenu/index.d.ts.map +1 -1
- package/dist/atoms/components/user/index.d.ts +2 -2
- package/dist/atoms/config/responsive.d.ts +16 -16
- package/dist/atoms/config/responsive.d.ts.map +1 -1
- package/dist/atoms/hooks/index.d.ts +4 -4
- package/dist/atoms/hooks/use-toast.d.ts +1 -1
- package/dist/atoms/hooks/use-toast.d.ts.map +1 -1
- 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 +1 -1
- package/dist/atoms/hooks/useResponsive.d.ts.map +1 -1
- package/dist/atoms/index.d.ts +6 -7
- package/dist/atoms/index.d.ts.map +1 -1
- package/dist/atoms/primitives/Badge.d.ts +6 -6
- package/dist/atoms/primitives/Badge.d.ts.map +1 -1
- package/dist/atoms/primitives/ErrorBoundary.d.ts +3 -3
- package/dist/atoms/primitives/ErrorBoundary.d.ts.map +1 -1
- package/dist/atoms/primitives/Select.d.ts +9 -7
- package/dist/atoms/primitives/Select.d.ts.map +1 -1
- package/dist/atoms/primitives/Switch.d.ts +4 -3
- package/dist/atoms/primitives/Switch.d.ts.map +1 -1
- package/dist/atoms/primitives/Tabs.d.ts +10 -10
- package/dist/atoms/primitives/Tabs.d.ts.map +1 -1
- package/dist/atoms/primitives/avatar.d.ts.map +1 -1
- package/dist/atoms/primitives/button.d.ts +2 -5
- package/dist/atoms/primitives/button.d.ts.map +1 -1
- package/dist/atoms/primitives/button.variants.d.ts +7 -0
- package/dist/atoms/primitives/button.variants.d.ts.map +1 -0
- package/dist/atoms/primitives/card.d.ts +3 -2
- package/dist/atoms/primitives/card.d.ts.map +1 -1
- package/dist/atoms/primitives/checkbox.d.ts +3 -3
- package/dist/atoms/primitives/checkbox.d.ts.map +1 -1
- package/dist/atoms/primitives/dialog.d.ts +4 -4
- package/dist/atoms/primitives/dialog.d.ts.map +1 -1
- package/dist/atoms/primitives/dropdown-menu.d.ts.map +1 -1
- package/dist/atoms/primitives/index.d.ts +16 -16
- package/dist/atoms/primitives/index.d.ts.map +1 -1
- package/dist/atoms/primitives/input.d.ts.map +1 -1
- package/dist/atoms/primitives/label.d.ts +4 -3
- package/dist/atoms/primitives/label.d.ts.map +1 -1
- package/dist/atoms/primitives/skeleton.d.ts.map +1 -1
- package/dist/atoms/primitives/spinner.d.ts +5 -5
- package/dist/atoms/primitives/spinner.d.ts.map +1 -1
- package/dist/atoms/primitives/table.d.ts.map +1 -1
- 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 -4
- 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 +9 -9
- package/dist/atoms/types/entity-config.d.ts.map +1 -1
- package/dist/atoms/types/generated.d.ts.map +1 -1
- package/dist/atoms/types/index.d.ts +6 -6
- package/dist/atoms/types/loading.d.ts +1 -1
- package/dist/atoms/types/navigation.d.ts +1 -1
- package/dist/atoms/types/navigation.d.ts.map +1 -1
- package/dist/atoms/types/ui-config.d.ts +8 -8
- package/dist/atoms/types/ui-config.d.ts.map +1 -1
- 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 +1 -1
- package/dist/atoms/utils/debounce.d.ts +1 -1
- package/dist/atoms/utils/debounce.d.ts.map +1 -1
- package/dist/atoms/utils/field-detection.d.ts +2 -2
- package/dist/atoms/utils/field-detection.d.ts.map +1 -1
- 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 +7 -67
- package/dist/atoms/utils/icon-resolver.d.ts.map +1 -1
- package/dist/atoms/utils/index.d.ts +4 -4
- package/dist/atoms/utils/metric-engine.d.ts +2 -10
- package/dist/atoms/utils/metric-engine.d.ts.map +1 -1
- 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 +6 -4
- package/dist/atoms/utils/ui-mapping.d.ts.map +1 -1
- package/dist/atoms/utils/utils.d.ts +7 -6
- package/dist/atoms/utils/utils.d.ts.map +1 -1
- package/dist/codegen/openapi/bulk-types.d.ts +4 -4
- package/dist/codegen/openapi/bulk-types.d.ts.map +1 -1
- 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 -3
- 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 +1 -1
- package/dist/features/auth/hooks/useAuthContext.d.ts.map +1 -1
- package/dist/features/auth/hooks/usePermissions.d.ts +3 -3
- package/dist/features/auth/index.d.ts +3 -3
- package/dist/features/auth/providers/MockAuthProvider.d.ts +3 -4
- package/dist/features/auth/providers/MockAuthProvider.d.ts.map +1 -1
- package/dist/features/auth/providers/index.d.ts +2 -1
- package/dist/features/auth/providers/index.d.ts.map +1 -1
- 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 +3 -3
- package/dist/features/auth/services/mock-auth-service.d.ts.map +1 -1
- package/dist/features/index.d.ts +1 -1
- package/dist/frontend-patterns.css +713 -576
- package/dist/index.d.ts +17 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +21400 -21788
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +21404 -21792
- package/dist/index.js.map +1 -1
- 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 +2 -2
- package/dist/molecules/layout/BulkSelectionBar.d.ts.map +1 -1
- package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts +1 -1
- package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts +1 -1
- package/dist/molecules/layout/NavigationContext.d.ts +3 -9
- package/dist/molecules/layout/NavigationContext.d.ts.map +1 -1
- 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 +1 -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 -11
- 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 +11 -11
- package/dist/templates/EnhancedDataTemplate.d.ts.map +1 -1
- package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts +2 -2
- package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts.map +1 -1
- package/dist/templates/EnhancedDataTemplate.hooks.d.ts +4 -4
- package/dist/templates/EnhancedDataTemplate.hooks.d.ts.map +1 -1
- 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 +7 -7
- 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 +14 -9
- package/dist/templates/api/APIDataTemplate.d.ts.map +1 -1
- 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 +3 -2
- package/dist/templates/api/index.d.ts.map +1 -1
- package/dist/templates/factory.d.ts +3 -3
- package/dist/templates/factory.d.ts.map +1 -1
- package/dist/templates/index.d.ts +8 -8
- package/dist/templates/index.d.ts.map +1 -1
- package/package.json +10 -7
- package/LICENSE +0 -19
- package/cli/cli/commands/generate-hooks.js +0 -291
- package/cli/cli/commands/init.js +0 -25
- package/cli/cli/commands/scaffold.js +0 -201
- package/cli/cli/index.js +0 -113
- package/cli/commands/generate-hooks.js +0 -291
- package/cli/commands/init.js +0 -25
- package/cli/commands/scaffold.js +0 -201
- package/cli/index.js +0 -6665
- package/cli/src/codegen/openapi/bulk-hook-generator.js +0 -252
- package/cli/src/codegen/openapi/bulk-types.js +0 -89
- package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts +0 -38
- package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts.map +0 -1
- package/dist/codegen/index.d.ts +0 -7
- package/dist/codegen/index.d.ts.map +0 -1
- package/dist/codegen/openapi/bulk-hook-generator.d.ts +0 -40
- package/dist/codegen/openapi/bulk-hook-generator.d.ts.map +0 -1
- package/dist/codegen/openapi/client-generator.d.ts +0 -52
- package/dist/codegen/openapi/client-generator.d.ts.map +0 -1
- package/dist/codegen/openapi/confidence-scorer.d.ts +0 -30
- package/dist/codegen/openapi/confidence-scorer.d.ts.map +0 -1
- package/dist/codegen/openapi/hook-config.d.ts +0 -50
- package/dist/codegen/openapi/hook-config.d.ts.map +0 -1
- package/dist/codegen/openapi/hook-generator.d.ts +0 -108
- package/dist/codegen/openapi/hook-generator.d.ts.map +0 -1
- package/dist/codegen/openapi/index.d.ts +0 -27
- package/dist/codegen/openapi/index.d.ts.map +0 -1
- package/dist/codegen/openapi/parser.d.ts +0 -107
- package/dist/codegen/openapi/parser.d.ts.map +0 -1
- package/dist/codegen/openapi/type-generator.d.ts +0 -53
- package/dist/codegen/openapi/type-generator.d.ts.map +0 -1
- package/dist/generated/client/client.d.ts +0 -23
- package/dist/generated/client/client.d.ts.map +0 -1
- package/dist/generated/client/config.d.ts +0 -10
- package/dist/generated/client/config.d.ts.map +0 -1
- package/dist/generated/client/index.d.ts +0 -12
- package/dist/generated/client/index.d.ts.map +0 -1
- package/dist/generated/client/methods.d.ts +0 -591
- package/dist/generated/client/methods.d.ts.map +0 -1
- package/dist/generated/client/types.d.ts +0 -37
- package/dist/generated/client/types.d.ts.map +0 -1
- package/dist/generated/example.d.ts +0 -8
- package/dist/generated/example.d.ts.map +0 -1
- package/dist/generated/hooks/index.d.ts +0 -11
- package/dist/generated/hooks/index.d.ts.map +0 -1
- package/dist/generated/hooks/keys.d.ts +0 -59
- package/dist/generated/hooks/keys.d.ts.map +0 -1
- package/dist/generated/hooks/mutations.d.ts +0 -551
- package/dist/generated/hooks/mutations.d.ts.map +0 -1
- package/dist/generated/hooks/queries.d.ts +0 -426
- package/dist/generated/hooks/queries.d.ts.map +0 -1
- package/dist/generated/hooks/types.d.ts +0 -318
- package/dist/generated/hooks/types.d.ts.map +0 -1
- package/dist/generated/index.d.ts +0 -13
- package/dist/generated/index.d.ts.map +0 -1
- package/dist/generated/types/endpoints.d.ts +0 -1364
- package/dist/generated/types/endpoints.d.ts.map +0 -1
- package/dist/generated/types/index.d.ts +0 -11
- package/dist/generated/types/index.d.ts.map +0 -1
- package/dist/generated/types/parameters.d.ts +0 -8
- package/dist/generated/types/parameters.d.ts.map +0 -1
- package/dist/generated/types/responses.d.ts +0 -8
- package/dist/generated/types/responses.d.ts.map +0 -1
- package/dist/generated/types/schemas.d.ts +0 -652
- package/dist/generated/types/schemas.d.ts.map +0 -1
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Generate Hooks Command
|
|
4
|
-
*
|
|
5
|
-
* Implementation of the `pattern-stack generate hooks` command
|
|
6
|
-
*
|
|
7
|
-
* Part of FRO-6: Generate Hooks Command
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.generateHooksCommand = generateHooksCommand;
|
|
11
|
-
const fs_1 = require("fs");
|
|
12
|
-
const path_1 = require("path");
|
|
13
|
-
const parser_js_1 = require("../../src/codegen/openapi/parser.js");
|
|
14
|
-
const type_generator_js_1 = require("../../src/codegen/openapi/type-generator.js");
|
|
15
|
-
const client_generator_js_1 = require("../../src/codegen/openapi/client-generator.js");
|
|
16
|
-
const hook_generator_js_1 = require("../../src/codegen/openapi/hook-generator.js");
|
|
17
|
-
async function generateHooksCommand(source, options) {
|
|
18
|
-
try {
|
|
19
|
-
console.log('🚀 Pattern-Stack Hook Generator');
|
|
20
|
-
console.log('================================');
|
|
21
|
-
console.log();
|
|
22
|
-
// Load and parse OpenAPI specification
|
|
23
|
-
console.log('📥 Loading OpenAPI specification...');
|
|
24
|
-
const spec = await (0, parser_js_1.loadOpenAPISpec)(source);
|
|
25
|
-
console.log(`✅ Loaded: ${spec.info.title} v${spec.info.version}`);
|
|
26
|
-
console.log('🔍 Parsing specification...');
|
|
27
|
-
const parsed = await (0, parser_js_1.parseOpenAPI)(spec);
|
|
28
|
-
console.log(`✅ Found ${parsed.endpoints.length} endpoints, ${parsed.schemas.length} schemas`);
|
|
29
|
-
// Generate types
|
|
30
|
-
console.log('🏗️ Generating TypeScript types...');
|
|
31
|
-
const types = (0, type_generator_js_1.generateTypes)(parsed, {
|
|
32
|
-
prefix: options.prefix,
|
|
33
|
-
includeJSDoc: true,
|
|
34
|
-
includeExamples: true
|
|
35
|
-
});
|
|
36
|
-
// Generate API client
|
|
37
|
-
console.log('🔧 Generating API client...');
|
|
38
|
-
const client = (0, client_generator_js_1.generateAPIClient)(parsed, {
|
|
39
|
-
clientType: options.client,
|
|
40
|
-
includeAuth: true,
|
|
41
|
-
authType: options.auth,
|
|
42
|
-
includeInterceptors: true
|
|
43
|
-
});
|
|
44
|
-
// Generate React hooks
|
|
45
|
-
console.log('⚛️ Generating React hooks...');
|
|
46
|
-
const hooks = await (0, hook_generator_js_1.generateHooks)(parsed, {
|
|
47
|
-
includeInfiniteQueries: true,
|
|
48
|
-
includeOptimisticUpdates: true,
|
|
49
|
-
includeMutationHelpers: true,
|
|
50
|
-
enableConfidenceScoring: true
|
|
51
|
-
});
|
|
52
|
-
if (options.dryRun) {
|
|
53
|
-
console.log('\n📋 Dry run - files that would be generated:');
|
|
54
|
-
console.log('Types:');
|
|
55
|
-
console.log(' - schemas.ts');
|
|
56
|
-
console.log(' - endpoints.ts');
|
|
57
|
-
console.log(' - parameters.ts');
|
|
58
|
-
console.log(' - responses.ts');
|
|
59
|
-
console.log();
|
|
60
|
-
console.log('API Client:');
|
|
61
|
-
console.log(' - client.ts');
|
|
62
|
-
console.log(' - methods.ts');
|
|
63
|
-
console.log(' - types.ts');
|
|
64
|
-
console.log(' - config.ts');
|
|
65
|
-
console.log();
|
|
66
|
-
console.log('React Hooks:');
|
|
67
|
-
console.log(' - queries.ts');
|
|
68
|
-
console.log(' - mutations.ts');
|
|
69
|
-
console.log(' - keys.ts');
|
|
70
|
-
console.log(' - types.ts');
|
|
71
|
-
console.log();
|
|
72
|
-
console.log('Generated code preview:');
|
|
73
|
-
console.log('======================');
|
|
74
|
-
console.log();
|
|
75
|
-
console.log('Types (first 20 lines):');
|
|
76
|
-
console.log(types.schemas.split('\n').slice(0, 20).join('\n'));
|
|
77
|
-
console.log('\n...');
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
// Create output directories
|
|
81
|
-
console.log(`📁 Creating output directory: ${options.output}`);
|
|
82
|
-
await ensureDir(options.output);
|
|
83
|
-
await ensureDir((0, path_1.join)(options.output, 'types'));
|
|
84
|
-
await ensureDir((0, path_1.join)(options.output, 'client'));
|
|
85
|
-
await ensureDir((0, path_1.join)(options.output, 'hooks'));
|
|
86
|
-
// Write type files
|
|
87
|
-
console.log('💾 Writing type definitions...');
|
|
88
|
-
await writeFile((0, path_1.join)(options.output, 'types', 'schemas.ts'), types.schemas);
|
|
89
|
-
await writeFile((0, path_1.join)(options.output, 'types', 'endpoints.ts'), types.endpoints);
|
|
90
|
-
await writeFile((0, path_1.join)(options.output, 'types', 'parameters.ts'), types.parameters);
|
|
91
|
-
await writeFile((0, path_1.join)(options.output, 'types', 'responses.ts'), types.responses);
|
|
92
|
-
await writeFile((0, path_1.join)(options.output, 'types', 'index.ts'), types.index);
|
|
93
|
-
// Write client files
|
|
94
|
-
console.log('💾 Writing API client...');
|
|
95
|
-
await writeFile((0, path_1.join)(options.output, 'client', 'client.ts'), client.client);
|
|
96
|
-
await writeFile((0, path_1.join)(options.output, 'client', 'methods.ts'), client.methods);
|
|
97
|
-
await writeFile((0, path_1.join)(options.output, 'client', 'types.ts'), client.types);
|
|
98
|
-
await writeFile((0, path_1.join)(options.output, 'client', 'config.ts'), client.config);
|
|
99
|
-
await writeFile((0, path_1.join)(options.output, 'client', 'index.ts'), client.index);
|
|
100
|
-
// Write hook files
|
|
101
|
-
console.log('💾 Writing React hooks...');
|
|
102
|
-
await writeFile((0, path_1.join)(options.output, 'hooks', 'queries.ts'), hooks.queries);
|
|
103
|
-
await writeFile((0, path_1.join)(options.output, 'hooks', 'mutations.ts'), hooks.mutations);
|
|
104
|
-
await writeFile((0, path_1.join)(options.output, 'hooks', 'keys.ts'), hooks.keys);
|
|
105
|
-
await writeFile((0, path_1.join)(options.output, 'hooks', 'types.ts'), hooks.types);
|
|
106
|
-
await writeFile((0, path_1.join)(options.output, 'hooks', 'index.ts'), hooks.index);
|
|
107
|
-
// Write confidence report if available
|
|
108
|
-
if (hooks.report) {
|
|
109
|
-
await writeFile((0, path_1.join)(options.output, 'hooks', 'confidence-report.md'), hooks.report);
|
|
110
|
-
console.log('📊 Generated confidence report');
|
|
111
|
-
// Check if there are low confidence names
|
|
112
|
-
const lowConfidenceCount = (hooks.report.match(/## Low Confidence Names/g) || []).length;
|
|
113
|
-
if (lowConfidenceCount > 0) {
|
|
114
|
-
console.log('\n⚠️ Some hook names have low confidence and may need review.');
|
|
115
|
-
console.log('Run `npm run review:hooks` to interactively review and improve them.');
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
// Write main index file
|
|
119
|
-
const mainIndex = `/**
|
|
120
|
-
* Generated API Integration
|
|
121
|
-
*
|
|
122
|
-
* Auto-generated from OpenAPI specification: ${spec.info.title}
|
|
123
|
-
* Version: ${spec.info.version}
|
|
124
|
-
* Generated: ${new Date().toISOString()}
|
|
125
|
-
*/
|
|
126
|
-
|
|
127
|
-
export * from './types'
|
|
128
|
-
export * from './client'
|
|
129
|
-
export * from './hooks'
|
|
130
|
-
|
|
131
|
-
// Quick start exports
|
|
132
|
-
export { createAPIClient } from './client'
|
|
133
|
-
export { queryKeys } from './hooks'`;
|
|
134
|
-
await writeFile((0, path_1.join)(options.output, 'index.ts'), mainIndex);
|
|
135
|
-
// Generate usage example
|
|
136
|
-
const usageExample = generateUsageExample(spec.info.title, options);
|
|
137
|
-
await writeFile((0, path_1.join)(options.output, 'example.ts'), usageExample);
|
|
138
|
-
console.log();
|
|
139
|
-
console.log('✅ Generation complete!');
|
|
140
|
-
console.log(`📦 Generated files in: ${options.output}`);
|
|
141
|
-
console.log();
|
|
142
|
-
console.log('🚀 Quick start:');
|
|
143
|
-
console.log(`import { createAPIClient, useGetUsers } from './${options.output}'`);
|
|
144
|
-
console.log();
|
|
145
|
-
console.log('💡 See example.ts for detailed usage instructions');
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
console.error('❌ Generation failed:');
|
|
149
|
-
console.error(error instanceof Error ? error.message : error);
|
|
150
|
-
process.exit(1);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
async function ensureDir(dir) {
|
|
154
|
-
try {
|
|
155
|
-
await fs_1.promises.mkdir(dir, { recursive: true });
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
// Directory might already exist
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
async function writeFile(path, content) {
|
|
162
|
-
await ensureDir((0, path_1.dirname)(path));
|
|
163
|
-
await fs_1.promises.writeFile(path, content, 'utf8');
|
|
164
|
-
}
|
|
165
|
-
function generateUsageExample(apiTitle, options) {
|
|
166
|
-
return `/**
|
|
167
|
-
* ${apiTitle} - Usage Example
|
|
168
|
-
*
|
|
169
|
-
* This file demonstrates how to use the generated API integration
|
|
170
|
-
*/
|
|
171
|
-
|
|
172
|
-
import React from 'react'
|
|
173
|
-
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
|
|
174
|
-
import { createAPIClient, useGetUsers, useCreateUser } from './'
|
|
175
|
-
|
|
176
|
-
// 1. Set up the API client
|
|
177
|
-
const apiClient = createAPIClient({
|
|
178
|
-
baseUrl: 'https://api.example.com/v1',
|
|
179
|
-
${options.auth === 'bearer' ? `getAuthToken: () => localStorage.getItem('authToken'),` : ''}
|
|
180
|
-
${options.auth === 'apiKey' ? `getApiKey: () => process.env.REACT_APP_API_KEY,
|
|
181
|
-
apiKeyHeader: 'X-API-Key',` : ''}
|
|
182
|
-
onError: (error) => {
|
|
183
|
-
console.error('API Error:', error)
|
|
184
|
-
// Handle global errors (show toast, redirect to login, etc.)
|
|
185
|
-
}
|
|
186
|
-
})
|
|
187
|
-
|
|
188
|
-
// 2. Set up React Query
|
|
189
|
-
const queryClient = new QueryClient({
|
|
190
|
-
defaultOptions: {
|
|
191
|
-
queries: {
|
|
192
|
-
staleTime: 5 * 60 * 1000, // 5 minutes
|
|
193
|
-
cacheTime: 10 * 60 * 1000, // 10 minutes
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
})
|
|
197
|
-
|
|
198
|
-
// 3. Wrap your app with providers
|
|
199
|
-
function App() {
|
|
200
|
-
return (
|
|
201
|
-
<QueryClientProvider client={queryClient}>
|
|
202
|
-
<UserList />
|
|
203
|
-
</QueryClientProvider>
|
|
204
|
-
)
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// 4. Use generated hooks in components
|
|
208
|
-
function UserList() {
|
|
209
|
-
// Query hook with automatic loading, error, and data states
|
|
210
|
-
const { data: users, isLoading, error } = useGetUsers({
|
|
211
|
-
limit: 10
|
|
212
|
-
})
|
|
213
|
-
|
|
214
|
-
// Mutation hook with optimistic updates
|
|
215
|
-
const createUserMutation = useCreateUser({
|
|
216
|
-
onSuccess: () => {
|
|
217
|
-
console.log('User created successfully!')
|
|
218
|
-
},
|
|
219
|
-
onError: (error) => {
|
|
220
|
-
console.error('Failed to create user:', error)
|
|
221
|
-
}
|
|
222
|
-
})
|
|
223
|
-
|
|
224
|
-
const handleCreateUser = () => {
|
|
225
|
-
createUserMutation.mutate({
|
|
226
|
-
email: 'new@example.com',
|
|
227
|
-
name: 'New User'
|
|
228
|
-
})
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
if (isLoading) return <div>Loading users...</div>
|
|
232
|
-
if (error) return <div>Error: {error.message}</div>
|
|
233
|
-
|
|
234
|
-
return (
|
|
235
|
-
<div>
|
|
236
|
-
<h2>Users</h2>
|
|
237
|
-
<button
|
|
238
|
-
onClick={handleCreateUser}
|
|
239
|
-
disabled={createUserMutation.isLoading}
|
|
240
|
-
>
|
|
241
|
-
{createUserMutation.isLoading ? 'Creating...' : 'Create User'}
|
|
242
|
-
</button>
|
|
243
|
-
|
|
244
|
-
<ul>
|
|
245
|
-
{users?.map(user => (
|
|
246
|
-
<li key={user.id}>
|
|
247
|
-
{user.name} ({user.email})
|
|
248
|
-
</li>
|
|
249
|
-
))}
|
|
250
|
-
</ul>
|
|
251
|
-
</div>
|
|
252
|
-
)
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
// 5. Advanced usage with infinite queries
|
|
256
|
-
function InfiniteUserList() {
|
|
257
|
-
const {
|
|
258
|
-
data,
|
|
259
|
-
fetchNextPage,
|
|
260
|
-
hasNextPage,
|
|
261
|
-
isFetchingNextPage,
|
|
262
|
-
} = useInfiniteGetUsers({
|
|
263
|
-
limit: 20
|
|
264
|
-
})
|
|
265
|
-
|
|
266
|
-
return (
|
|
267
|
-
<div>
|
|
268
|
-
{data?.pages.map((page, i) => (
|
|
269
|
-
<React.Fragment key={i}>
|
|
270
|
-
{page.map(user => (
|
|
271
|
-
<div key={user.id}>{user.name}</div>
|
|
272
|
-
))}
|
|
273
|
-
</React.Fragment>
|
|
274
|
-
))}
|
|
275
|
-
|
|
276
|
-
<button
|
|
277
|
-
onClick={() => fetchNextPage()}
|
|
278
|
-
disabled={!hasNextPage || isFetchingNextPage}
|
|
279
|
-
>
|
|
280
|
-
{isFetchingNextPage
|
|
281
|
-
? 'Loading more...'
|
|
282
|
-
: hasNextPage
|
|
283
|
-
? 'Load More'
|
|
284
|
-
: 'Nothing more to load'}
|
|
285
|
-
</button>
|
|
286
|
-
</div>
|
|
287
|
-
)
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
export default App`;
|
|
291
|
-
}
|
package/cli/cli/commands/init.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Init Command
|
|
4
|
-
*
|
|
5
|
-
* Implementation of the `pattern-stack init` command
|
|
6
|
-
*
|
|
7
|
-
* Part of FRO-14: Domain Template Initialization
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.initCommand = initCommand;
|
|
11
|
-
async function initCommand(template = 'basic', options) {
|
|
12
|
-
console.log(`🚀 Initializing Pattern-Stack project with ${template} template`);
|
|
13
|
-
if (options.name) {
|
|
14
|
-
console.log(`📦 Project name: ${options.name}`);
|
|
15
|
-
}
|
|
16
|
-
if (options.dir) {
|
|
17
|
-
console.log(`📁 Target directory: ${options.dir}`);
|
|
18
|
-
}
|
|
19
|
-
console.log('\n⚠️ Template initialization not yet implemented');
|
|
20
|
-
console.log('This feature will be available in a future release.');
|
|
21
|
-
console.log('\nFor now, you can:');
|
|
22
|
-
console.log('1. Clone the Pattern-Stack repository');
|
|
23
|
-
console.log('2. Use the generate hooks command to create API integrations');
|
|
24
|
-
console.log('3. Use the scaffold command to create components');
|
|
25
|
-
}
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Scaffold Command
|
|
4
|
-
*
|
|
5
|
-
* Implementation of the `pattern-stack scaffold` command
|
|
6
|
-
*
|
|
7
|
-
* Part of FRO-15: Component Scaffolding Commands
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.scaffoldCommand = scaffoldCommand;
|
|
11
|
-
const fs_1 = require("fs");
|
|
12
|
-
const path_1 = require("path");
|
|
13
|
-
async function scaffoldCommand(type, name, options) {
|
|
14
|
-
console.log(`🏗️ Scaffolding ${type}: ${name}`);
|
|
15
|
-
switch (type) {
|
|
16
|
-
case 'component':
|
|
17
|
-
await scaffoldComponent(name, options);
|
|
18
|
-
break;
|
|
19
|
-
case 'feature':
|
|
20
|
-
await scaffoldFeature(name, options);
|
|
21
|
-
break;
|
|
22
|
-
case 'template':
|
|
23
|
-
await scaffoldTemplate(name, options);
|
|
24
|
-
break;
|
|
25
|
-
default:
|
|
26
|
-
console.error(`❌ Unknown scaffold type: ${type}`);
|
|
27
|
-
console.log('Available types: component, feature, template');
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async function scaffoldComponent(name, options) {
|
|
32
|
-
const outputDir = options.output || `./src/atoms/composed/${name}`;
|
|
33
|
-
const componentContent = `/**
|
|
34
|
-
* ${name} Component
|
|
35
|
-
*
|
|
36
|
-
* Generated by Pattern-Stack CLI
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
import React from 'react'
|
|
40
|
-
import { cn } from '../../utils/utils'
|
|
41
|
-
|
|
42
|
-
export interface ${name}Props {
|
|
43
|
-
className?: string
|
|
44
|
-
children?: React.ReactNode
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export function ${name}({ className, children, ...props }: ${name}Props) {
|
|
48
|
-
return (
|
|
49
|
-
<div className={cn("", className)} {...props}>
|
|
50
|
-
{children}
|
|
51
|
-
</div>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
${name}.displayName = "${name}"`;
|
|
56
|
-
const indexContent = `export { ${name} } from './${name}'
|
|
57
|
-
export type { ${name}Props } from './${name}'`;
|
|
58
|
-
const testContent = `/**
|
|
59
|
-
* ${name} Component Tests
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
import { render, screen } from '@testing-library/react'
|
|
63
|
-
import { ${name} } from './${name}'
|
|
64
|
-
|
|
65
|
-
describe('${name}', () => {
|
|
66
|
-
it('renders children', () => {
|
|
67
|
-
render(<${name}>Test content</${name}>)
|
|
68
|
-
expect(screen.getByText('Test content')).toBeInTheDocument()
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
it('applies custom className', () => {
|
|
72
|
-
const { container } = render(<${name} className="custom-class" />)
|
|
73
|
-
expect(container.firstChild).toHaveClass('custom-class')
|
|
74
|
-
})
|
|
75
|
-
})`;
|
|
76
|
-
await ensureDir(outputDir);
|
|
77
|
-
await writeFile((0, path_1.join)(outputDir, `${name}.tsx`), componentContent);
|
|
78
|
-
await writeFile((0, path_1.join)(outputDir, 'index.ts'), indexContent);
|
|
79
|
-
await writeFile((0, path_1.join)(outputDir, `${name}.test.tsx`), testContent);
|
|
80
|
-
console.log(`✅ Component scaffolded: ${outputDir}`);
|
|
81
|
-
}
|
|
82
|
-
async function scaffoldFeature(name, options) {
|
|
83
|
-
const outputDir = options.output || `./src/features/${name.toLowerCase()}`;
|
|
84
|
-
// Feature hook
|
|
85
|
-
const hookContent = `/**
|
|
86
|
-
* ${name} Hooks
|
|
87
|
-
*
|
|
88
|
-
* Generated by Pattern-Stack CLI
|
|
89
|
-
*/
|
|
90
|
-
|
|
91
|
-
import { useState, useEffect } from 'react'
|
|
92
|
-
|
|
93
|
-
export function use${name}() {
|
|
94
|
-
const [data, setData] = useState(null)
|
|
95
|
-
const [loading, setLoading] = useState(false)
|
|
96
|
-
const [error, setError] = useState<Error | null>(null)
|
|
97
|
-
|
|
98
|
-
// Add your logic here
|
|
99
|
-
|
|
100
|
-
return {
|
|
101
|
-
data,
|
|
102
|
-
loading,
|
|
103
|
-
error,
|
|
104
|
-
refetch: () => {
|
|
105
|
-
// Implement refetch logic
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}`;
|
|
109
|
-
// Feature component
|
|
110
|
-
const componentContent = `/**
|
|
111
|
-
* ${name} Component
|
|
112
|
-
*
|
|
113
|
-
* Generated by Pattern-Stack CLI
|
|
114
|
-
*/
|
|
115
|
-
|
|
116
|
-
import React from 'react'
|
|
117
|
-
import { use${name} } from '../hooks/use${name}'
|
|
118
|
-
|
|
119
|
-
export interface ${name}ComponentProps {
|
|
120
|
-
className?: string
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export function ${name}Component({ className }: ${name}ComponentProps) {
|
|
124
|
-
const { data, loading, error } = use${name}()
|
|
125
|
-
|
|
126
|
-
if (loading) return <div>Loading...</div>
|
|
127
|
-
if (error) return <div>Error: {error.message}</div>
|
|
128
|
-
|
|
129
|
-
return (
|
|
130
|
-
<div className={className}>
|
|
131
|
-
<h2>${name}</h2>
|
|
132
|
-
{/* Add your UI here */}
|
|
133
|
-
</div>
|
|
134
|
-
)
|
|
135
|
-
}`;
|
|
136
|
-
// Feature index
|
|
137
|
-
const indexContent = `export { use${name} } from './hooks/use${name}'
|
|
138
|
-
export { ${name}Component } from './components/${name}Component'
|
|
139
|
-
export type { ${name}ComponentProps } from './components/${name}Component'`;
|
|
140
|
-
await ensureDir((0, path_1.join)(outputDir, 'hooks'));
|
|
141
|
-
await ensureDir((0, path_1.join)(outputDir, 'components'));
|
|
142
|
-
await writeFile((0, path_1.join)(outputDir, 'hooks', `use${name}.ts`), hookContent);
|
|
143
|
-
await writeFile((0, path_1.join)(outputDir, 'hooks', 'index.ts'), `export { use${name} } from './use${name}'`);
|
|
144
|
-
await writeFile((0, path_1.join)(outputDir, 'components', `${name}Component.tsx`), componentContent);
|
|
145
|
-
await writeFile((0, path_1.join)(outputDir, 'components', 'index.ts'), `export { ${name}Component } from './${name}Component'`);
|
|
146
|
-
await writeFile((0, path_1.join)(outputDir, 'index.ts'), indexContent);
|
|
147
|
-
console.log(`✅ Feature scaffolded: ${outputDir}`);
|
|
148
|
-
}
|
|
149
|
-
async function scaffoldTemplate(name, options) {
|
|
150
|
-
const outputDir = options.output || `./src/templates/${name.toLowerCase()}`;
|
|
151
|
-
const templateContent = `/**
|
|
152
|
-
* ${name} Template
|
|
153
|
-
*
|
|
154
|
-
* Generated by Pattern-Stack CLI
|
|
155
|
-
*/
|
|
156
|
-
|
|
157
|
-
import React from 'react'
|
|
158
|
-
import { PageTemplate } from '../PageTemplate'
|
|
159
|
-
|
|
160
|
-
export interface ${name}TemplateProps {
|
|
161
|
-
title?: string
|
|
162
|
-
children?: React.ReactNode
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
export function ${name}Template({
|
|
166
|
-
title = "${name}",
|
|
167
|
-
children
|
|
168
|
-
}: ${name}TemplateProps) {
|
|
169
|
-
return (
|
|
170
|
-
<PageTemplate>
|
|
171
|
-
<div className="space-y-6">
|
|
172
|
-
<header>
|
|
173
|
-
<h1 className="text-3xl font-bold">{title}</h1>
|
|
174
|
-
</header>
|
|
175
|
-
|
|
176
|
-
<main>
|
|
177
|
-
{children}
|
|
178
|
-
</main>
|
|
179
|
-
</div>
|
|
180
|
-
</PageTemplate>
|
|
181
|
-
)
|
|
182
|
-
}`;
|
|
183
|
-
const indexContent = `export { ${name}Template } from './${name}Template'
|
|
184
|
-
export type { ${name}TemplateProps } from './${name}Template'`;
|
|
185
|
-
await ensureDir(outputDir);
|
|
186
|
-
await writeFile((0, path_1.join)(outputDir, `${name}Template.tsx`), templateContent);
|
|
187
|
-
await writeFile((0, path_1.join)(outputDir, 'index.ts'), indexContent);
|
|
188
|
-
console.log(`✅ Template scaffolded: ${outputDir}`);
|
|
189
|
-
}
|
|
190
|
-
async function ensureDir(dir) {
|
|
191
|
-
try {
|
|
192
|
-
await fs_1.promises.mkdir(dir, { recursive: true });
|
|
193
|
-
}
|
|
194
|
-
catch (error) {
|
|
195
|
-
// Directory might already exist
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
async function writeFile(path, content) {
|
|
199
|
-
await ensureDir((0, path_1.dirname)(path));
|
|
200
|
-
await fs_1.promises.writeFile(path, content, 'utf8');
|
|
201
|
-
}
|
package/cli/cli/index.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
/**
|
|
4
|
-
* Pattern-Stack CLI
|
|
5
|
-
*
|
|
6
|
-
* Code generation and scaffolding tools for Pattern-Stack applications
|
|
7
|
-
*
|
|
8
|
-
* Part of FRO-1: CLI Foundation Setup
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
const commander_1 = require("commander");
|
|
12
|
-
const generate_hooks_1 = require("./commands/generate-hooks");
|
|
13
|
-
const scaffold_1 = require("./commands/scaffold");
|
|
14
|
-
const init_1 = require("./commands/init");
|
|
15
|
-
const program = new commander_1.Command();
|
|
16
|
-
program
|
|
17
|
-
.name('pattern-stack')
|
|
18
|
-
.description('Pattern-Stack CLI for code generation and scaffolding')
|
|
19
|
-
.version('1.0.0');
|
|
20
|
-
// Generate commands
|
|
21
|
-
const generateCommand = program
|
|
22
|
-
.command('generate')
|
|
23
|
-
.alias('g')
|
|
24
|
-
.description('Generate code from specifications');
|
|
25
|
-
generateCommand
|
|
26
|
-
.command('hooks')
|
|
27
|
-
.description('Generate React hooks from OpenAPI specification')
|
|
28
|
-
.argument('<source>', 'OpenAPI specification (URL or file path)')
|
|
29
|
-
.option('-o, --output <dir>', 'Output directory', './src/generated')
|
|
30
|
-
.option('--prefix <prefix>', 'Type name prefix', '')
|
|
31
|
-
.option('--client <type>', 'API client type', 'axios')
|
|
32
|
-
.option('--auth <type>', 'Authentication type', 'bearer')
|
|
33
|
-
.option('--dry-run', 'Show what would be generated without writing files')
|
|
34
|
-
.action(generate_hooks_1.generateHooksCommand);
|
|
35
|
-
// Scaffold commands
|
|
36
|
-
program
|
|
37
|
-
.command('scaffold')
|
|
38
|
-
.alias('s')
|
|
39
|
-
.description('Scaffold components and structures')
|
|
40
|
-
.argument('<type>', 'Type to scaffold (component, feature, template)')
|
|
41
|
-
.argument('<name>', 'Name of the item to scaffold')
|
|
42
|
-
.option('-t, --template <template>', 'Template to use')
|
|
43
|
-
.option('-o, --output <dir>', 'Output directory')
|
|
44
|
-
.action(scaffold_1.scaffoldCommand);
|
|
45
|
-
// Init commands
|
|
46
|
-
program
|
|
47
|
-
.command('init')
|
|
48
|
-
.description('Initialize a new Pattern-Stack project')
|
|
49
|
-
.argument('[template]', 'Template to use (financial, ecommerce, analytics)')
|
|
50
|
-
.option('-n, --name <name>', 'Project name')
|
|
51
|
-
.option('-d, --dir <directory>', 'Target directory')
|
|
52
|
-
.option('--git', 'Initialize git repository')
|
|
53
|
-
.option('--install', 'Install dependencies')
|
|
54
|
-
.action(init_1.initCommand);
|
|
55
|
-
// Config commands
|
|
56
|
-
program
|
|
57
|
-
.command('config')
|
|
58
|
-
.description('Manage Pattern-Stack configuration')
|
|
59
|
-
.option('--show', 'Show current configuration')
|
|
60
|
-
.option('--set <key=value>', 'Set configuration value')
|
|
61
|
-
.action((options) => {
|
|
62
|
-
if (options.show) {
|
|
63
|
-
console.log('Current configuration:');
|
|
64
|
-
// Show config
|
|
65
|
-
}
|
|
66
|
-
if (options.set) {
|
|
67
|
-
const [key, value] = options.set.split('=');
|
|
68
|
-
console.log(`Setting ${key} = ${value}`);
|
|
69
|
-
// Set config
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
// Help command
|
|
73
|
-
program
|
|
74
|
-
.command('help')
|
|
75
|
-
.description('Display help for commands')
|
|
76
|
-
.argument('[command]', 'Command to get help for')
|
|
77
|
-
.action((command) => {
|
|
78
|
-
if (command) {
|
|
79
|
-
program.help();
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
console.log(`
|
|
83
|
-
Pattern-Stack CLI
|
|
84
|
-
|
|
85
|
-
Available commands:
|
|
86
|
-
generate hooks <source> Generate React hooks from OpenAPI spec
|
|
87
|
-
scaffold <type> <name> Scaffold components and structures
|
|
88
|
-
init [template] Initialize new project from template
|
|
89
|
-
config Manage configuration
|
|
90
|
-
|
|
91
|
-
Examples:
|
|
92
|
-
pattern-stack generate hooks ./api/openapi.json
|
|
93
|
-
pattern-stack scaffold component UserCard
|
|
94
|
-
pattern-stack init financial --name my-finance-app
|
|
95
|
-
|
|
96
|
-
For more information on a command:
|
|
97
|
-
pattern-stack <command> --help
|
|
98
|
-
`);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
// Handle unknown commands
|
|
102
|
-
program.on('command:*', () => {
|
|
103
|
-
console.error('Invalid command: %s\nSee --help for a list of available commands.', program.args.join(' '));
|
|
104
|
-
process.exit(1);
|
|
105
|
-
});
|
|
106
|
-
// Parse arguments
|
|
107
|
-
if (process.argv.length < 3) {
|
|
108
|
-
program.help();
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
program.parse();
|
|
112
|
-
}
|
|
113
|
-
exports.default = program;
|