Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create Progress bar component and use on card and details page,logout button add and functionality #30

Merged
merged 3 commits into from
Jan 29, 2025

Conversation

namita-25
Copy link
Contributor

@namita-25 namita-25 commented Jan 28, 2025

Summary by CodeRabbit

Based on the comprehensive pull request summary, here are the concise release notes:

  • New Features

    • Added a new Progress component for visual progress tracking.
    • Introduced status and progress indicators in cards and collapses.
    • Implemented a logout menu option for improved user navigation.
  • Improvements

    • Updated logout functionality across components.
    • Refined component interfaces for better type safety.
    • Enhanced layout with more flexible progress representation.
    • Improved image and layout styling.
  • User Experience

    • Enhanced interactivity with progress tracking for content items.
    • Updated rendering logic for better visual presentation.

Copy link

coderabbitai bot commented Jan 28, 2025

Warning

There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

npm warn config production Use --omit=dev instead.
npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: [email protected]
npm error Found: [email protected]
npm error node_modules/eslint
npm error dev eslint@"^9.8.0" from the root project
npm error peer eslint@"^6.0.0 || ^7.0.0 || >=8.0.0" from @eslint-community/[email protected]
npm error node_modules/@eslint-community/eslint-utils
npm error @eslint-community/eslint-utils@"^4.4.0" from @typescript-eslint/[email protected]
npm error node_modules/@typescript-eslint/utils
npm error @typescript-eslint/utils@"^8.0.0" from @nx/[email protected]
npm error node_modules/@nx/eslint-plugin
npm error dev @nx/eslint-plugin@"20.2.2" from the root project
npm error 3 more (@typescript-eslint/eslint-plugin, ...)
npm error @eslint-community/eslint-utils@"^4.2.0" from [email protected]
npm error 1 more (@typescript-eslint/utils)
npm error 18 more (@eslint/compat, @nx/eslint, @nx/eslint, @nx/eslint, ...)
npm error
npm error Could not resolve dependency:
npm error peer eslint@"^7.23.0 || ^8.0.0" from [email protected]
npm error node_modules/eslint-config-next
npm error dev eslint-config-next@"14.2.16" from the root project
npm error
npm error Conflicting peer dependency: [email protected]
npm error node_modules/eslint
npm error peer eslint@"^7.23.0 || ^8.0.0" from [email protected]
npm error node_modules/eslint-config-next
npm error dev eslint-config-next@"14.2.16" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry
npm error this command with --force or --legacy-peer-deps
npm error to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /.npm/_logs/2025-01-28T11_46_50_636Z-eresolve-report.txt
npm error A complete log of this run can be found in: /.npm/_logs/2025-01-28T11_46_50_636Z-debug-0.log

📝 Walkthrough

Walkthrough

The pull request introduces several enhancements across multiple files in the shared library and content micro-frontend. The changes primarily focus on adding progress tracking, status indicators, and implementing a logout functionality. A new Progress component is created in the shared library, which is then integrated into various components like CommonCard and CommonCollapse. The TopAppBar and layout components have been updated to support a more specific logout click handler, and the content pages now include a logout menu and progress-related properties.

Changes

File Change Summary
libs/shared-lib/src/index.ts Added export for all entities from Progress module
libs/shared-lib/src/lib/Card/CommonCard.tsx Added status and progress props to CommonCardProps; Enhanced image rendering with progress overlay
libs/shared-lib/src/lib/Header/TopAppBar.tsx Updated ActionIcon interface to use onLogoutClick with event parameter; Added onMenuClose prop
libs/shared-lib/src/lib/Layout/Layout.tsx Added currentSelectedValues prop; Updated logout click handler signature and added onMenuClose prop
libs/shared-lib/src/lib/Progress/Progress.tsx Created new Progress component with CommonCircularProgressProps
mfes/content/src/components/CommonCollapse.tsx Added status and progress props; Integrated progress indicators
mfes/content/src/pages/content.tsx Implemented logout menu; Added logout functionality; Enhanced content rendering
mfes/content/src/pages/details/[identifier].tsx Added progress and status props to CommonCollapse
mfes/content/src/pages/content-details/[identifier].tsx Adjusted image width styling

Sequence Diagram

sequenceDiagram
    participant User
    participant TopAppBar
    participant Menu
    participant LocalStorage
    participant LoginPage

    User->>TopAppBar: Click Logout Icon
    TopAppBar->>Menu: Open Logout Menu
    User->>Menu: Confirm Logout
    Menu->>LocalStorage: Clear Access Token
    LocalStorage-->>Menu: Token Cleared
    Menu->>LoginPage: Redirect User
Loading

This sequence diagram illustrates the new logout flow introduced in the content page, showing how a user interacts with the logout functionality through the top app bar and menu.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c36152d and 099cfb7.

📒 Files selected for processing (3)
  • libs/shared-lib/src/lib/Layout/Layout.tsx (6 hunks)
  • mfes/content/src/pages/content-details/[identifier].tsx (4 hunks)
  • mfes/content/src/pages/details/[identifier].tsx (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • mfes/content/src/pages/content-details/[identifier].tsx
  • mfes/content/src/pages/details/[identifier].tsx
  • libs/shared-lib/src/lib/Layout/Layout.tsx

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🔭 Outside diff range comments (1)
libs/shared-lib/src/lib/Layout/Layout.tsx (1)

Line range hint 1-1: Remove @ts-nocheck and fix type errors properly.

Using @ts-nocheck disables all TypeScript type checking for the file, which defeats the purpose of using TypeScript. This can lead to runtime errors that could have been caught during development.

Remove the @ts-nocheck directive and properly type check the code. I can help identify and fix the type errors if needed.

🧹 Nitpick comments (7)
libs/shared-lib/src/lib/Progress/Progress.tsx (2)

5-12: Add JSDoc documentation for the interface and its properties.

Adding documentation will improve code maintainability and help other developers understand the purpose of each prop.

+/**
+ * Props for the Progress component
+ */
 interface CommonCircularProgressProps {
+  /** The variant to use. It can be 'determinate' or 'indeterminate' */
   variant?: 'determinate' | 'indeterminate';
+  /** The value of the progress indicator for the determinate variant */
   value?: number;
+  /** The size of the circle in pixels */
   size?: number;
+  /** The thickness of the circle */
   thickness?: number;
+  /** The color of the component */
   color?: string;
+  /** The system prop that allows defining system overrides as well as additional CSS styles */
   sx?: SxProps<Theme>;
 }

14-34: Add prop validation and improve type safety.

Consider these improvements for better type safety and validation:

+import { PropTypes } from '@mui/material';
+
 export const Progress: React.FC<CommonCircularProgressProps> = ({
   variant = 'determinate',
   value = 0,
   size = 40,
   thickness = 3.6,
-  color = 'primary',
+  color = 'primary.main',
   sx = {},
 }) => {
+  // Validate value is between 0 and 100 for determinate variant
+  if (variant === 'determinate' && (value < 0 || value > 100)) {
+    console.warn('Progress value should be between 0 and 100');
+  }
+
   return (
     <CircularProgress
       variant={variant}
       value={value}
       size={size}
       thickness={thickness}
       sx={{
         color,
         ...sx,
       }}
     />
   );
 };
+
+Progress.propTypes = {
+  variant: PropTypes.oneOf(['determinate', 'indeterminate']),
+  value: PropTypes.number,
+  size: PropTypes.number,
+  thickness: PropTypes.number,
+  color: PropTypes.string,
+  sx: PropTypes.object,
+};
mfes/content/src/pages/details/[identifier].tsx (1)

Line range hint 63-74: Optimize performance for large lists.

The current implementation renders all children at once, which could impact performance with large datasets.

Consider implementing:

  1. Virtualization for large lists
  2. Pagination or infinite scroll
  3. Lazy loading of child items

Example implementation using react-window:

import { FixedSizeList } from 'react-window';

const renderNestedChildren = (children: any) => {
  if (!Array.isArray(children)) {
    return null;
  }
  
  return (
    <FixedSizeList
      height={400}
      width="100%"
      itemCount={children.length}
      itemSize={50}
    >
      {({ index, style }) => (
        <CommonCollapse
          style={style}
          key={children[index].id}
          identifier={children[index].identifier}
          title={children[index].name}
          data={children[index]?.children}
          defaultExpanded={false}
          progress={children[index].progress ?? 0}
          status={children[index].status ?? 'Not started'}
        />
      )}
    </FixedSizeList>
  );
};
libs/shared-lib/src/lib/Card/CommonCard.tsx (2)

66-141: Consider extracting the progress overlay into a separate component.

The progress overlay implementation is duplicated in multiple places. Consider creating a reusable ProgressOverlay component to improve maintainability and reduce code duplication.

+// Create a new component ProgressOverlay.tsx
+interface ProgressOverlayProps {
+  progress: number;
+  status?: string;
+  showStatus?: boolean;
+}
+
+export const ProgressOverlay: React.FC<ProgressOverlayProps> = ({
+  progress,
+  status,
+  showStatus,
+}) => (
+  <Box
+    sx={{
+      position: 'absolute',
+      height: '40px',
+      top: 0,
+      width: '100%',
+      display: 'flex',
+      alignItems: 'center',
+      background: 'rgba(0, 0, 0, 0.5)',
+    }}
+  >
+    <Progress
+      variant="determinate"
+      value={100}
+      size={30}
+      thickness={5}
+      sx={{
+        color: '#fff8fb',
+        position: 'absolute',
+        left: '10px',
+      }}
+    />
+    <Progress
+      variant="determinate"
+      value={progress}
+      size={30}
+      thickness={5}
+      sx={{
+        color: progress === 100 ? '#21A400' : '#FFB74D',
+        position: 'absolute',
+        left: '10px',
+      }}
+    />
+    {showStatus && (
+      <Typography
+        sx={{
+          fontSize: '12px',
+          fontWeight: 'bold',
+          marginLeft: '12px',
+          color: progress === 100 ? '#21A400' : '#FFB74D',
+          position: 'absolute',
+          left: '50px',
+        }}
+      >
+        {status}
+      </Typography>
+    )}
+  </Box>
+);

// Use in CommonCard
-{progress !== undefined && (
-  <Box>
-    ... // Current progress overlay implementation
-  </Box>
-)}
+{progress !== undefined && (
+  <ProgressOverlay
+    progress={progress}
+    status={status}
+    showStatus={actions?.toString().toLowerCase() === 'resource'}
+  />
+)}

88-96: Consider using theme variables for consistent styling.

Magic numbers and hardcoded colors are used in the styling. Consider:

  1. Using theme spacing for consistent margins/paddings
  2. Defining color constants or using theme palette
  3. Creating styled components for repeated styles
+// Create theme constants
+const THEME = {
+  colors: {
+    progress: {
+      background: 'rgba(0, 0, 0, 0.5)',
+      completed: '#21A400',
+      inProgress: '#FFB74D',
+      base: '#fff8fb',
+    },
+  },
+  spacing: {
+    progress: {
+      height: '40px',
+      iconSize: '30px',
+      thickness: 5,
+      leftOffset: '10px',
+    },
+  },
+};

// Use in styles
-background: 'rgba(0, 0, 0, 0.5)',
+background: THEME.colors.progress.background,

Also applies to: 104-107, 115-118, 122-128

libs/shared-lib/src/lib/Layout/Layout.tsx (2)

182-183: Consider memoizing selectedValues access.

Accessing selectedValues[filterCode] on every render could be optimized using useMemo for better performance, especially with multiple filters.

-  const currentSelectedValues = selectedValues[filterCode] || [];
+  const currentSelectedValues = React.useMemo(
+    () => selectedValues[filterCode] || [],
+    [selectedValues, filterCode]
+  );

Line range hint 1-605: Consider splitting FilterDialog into a separate component file.

The FilterDialog component has grown complex enough to warrant its own file. This would:

  1. Improve maintainability and testability
  2. Reduce the cognitive load when working with the Layout component
  3. Allow for better separation of concerns
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fca8d15 and d7cbfc8.

📒 Files selected for processing (9)
  • libs/shared-lib/src/index.ts (1 hunks)
  • libs/shared-lib/src/lib/Card/CommonCard.tsx (5 hunks)
  • libs/shared-lib/src/lib/Header/TopAppBar.tsx (2 hunks)
  • libs/shared-lib/src/lib/Layout/Layout.tsx (5 hunks)
  • libs/shared-lib/src/lib/Progress/Progress.tsx (1 hunks)
  • mfes/content/src/components/CommonCollapse.tsx (9 hunks)
  • mfes/content/src/pages/content-details/[identifier].tsx (1 hunks)
  • mfes/content/src/pages/content.tsx (8 hunks)
  • mfes/content/src/pages/details/[identifier].tsx (2 hunks)
🔇 Additional comments (7)
libs/shared-lib/src/index.ts (1)

26-26: Potential naming conflict with Progress exports.

The file exports both Progress/Circular and Progress/Progress. This could lead to confusion when importing. Consider:

  1. Renaming one of the components for clarity
  2. Consolidating both progress components into a single module
mfes/content/src/pages/content-details/[identifier].tsx (1)

105-105: LGTM! The image width adjustment improves visual balance.

The change from 100% to 80% width provides better visual spacing and prevents the image from stretching too wide.

libs/shared-lib/src/lib/Card/CommonCard.tsx (1)

25-26: LGTM! Well-typed props for progress tracking.

The new props are properly typed with clear constraints for the status values.

mfes/content/src/pages/content.tsx (2)

114-114: LGTM! YouTube video support added.

The mime type for YouTube videos is properly added to the supported content types.


309-325: LGTM! Well-implemented logout menu.

The menu implementation follows Material-UI best practices with proper positioning and event handling.

mfes/content/src/components/CommonCollapse.tsx (1)

26-27: LGTM! Well-defined interfaces for progress tracking.

The progress and status props are properly typed and consistent across components.

Also applies to: 44-45

libs/shared-lib/src/lib/Layout/Layout.tsx (1)

150-153: LGTM! Dialog styling is consistent with the design system.

The background color #FEF7FF matches the design system's color palette.

libs/shared-lib/src/lib/Header/TopAppBar.tsx Outdated Show resolved Hide resolved
libs/shared-lib/src/lib/Header/TopAppBar.tsx Show resolved Hide resolved
mfes/content/src/pages/content.tsx Show resolved Hide resolved
mfes/content/src/pages/content.tsx Show resolved Hide resolved
libs/shared-lib/src/lib/Layout/Layout.tsx Outdated Show resolved Hide resolved
@@ -459,6 +465,7 @@ export const Layout: React.FC<LayoutProps> = ({
bgcolor="#FDF7FF"
actionIcons={topAppBarIcons}
menuIconClick={() => setIsDrawerOpen(true)}
onLogoutClick={(event) => action.onLogoutClick(event)}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix undefined 'action' reference in onLogoutClick handler.

There's a critical bug where action is undefined. This will cause a runtime error when the logout button is clicked.

-              onLogoutClick={(event) => action.onLogoutClick(event)}
+              onLogoutClick={(event) => showTopAppBar?.actionIcons?.[0]?.onLogoutClick?.(event)}

Note: The fix assumes the logout action is the first icon. Consider passing the logout handler directly through props for better maintainability.

Committable suggestion skipped: line range outside the PR's diff.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (3)
libs/shared-lib/src/lib/Header/TopAppBar.tsx (1)

13-16: 🛠️ Refactor suggestion

Consider using a more flexible action handling pattern.

The current implementation tightly couples the ActionIcon interface to logout functionality. A more generic approach would be better for maintainability and reusability.

Consider this alternative:

interface ActionIcon {
  icon: React.ReactNode;
  ariaLabel: string;
  anchorEl?: HTMLElement | null;
-  onLogoutClick: (
-    event: React.MouseEvent<HTMLButtonElement, MouseEvent>
-  ) => void;
+  onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
+  actionType: 'logout' | 'menu' | 'profile' | 'other';
}

This change:

  1. Makes the interface more generic and reusable
  2. Maintains type safety through actionType
  3. Allows for future action types without interface changes
mfes/content/src/pages/content.tsx (2)

71-78: ⚠️ Potential issue

Improve token cleanup and error handling during logout.

The current implementation only removes 'accToken', but there might be other auth-related items that should be cleared. Also, the navigation could fail silently.

Consider this enhancement:

  const handleClose = () => {
    setAnchorEl(null);
+   try {
+     // Clear all auth-related items
+     ['accToken', 'refToken', 'userRole', 'userName'].forEach(key => 
+       localStorage.removeItem(key)
+     );
+     router.push(`${process.env.NEXT_PUBLIC_LOGIN}`);
+   } catch (error) {
+     console.error('Logout failed:', error);
+     // Show error notification to user
+   }
  };

154-155: 🛠️ Refactor suggestion

Consider persisting progress state.

Currently, cards are initialized with hardcoded "Not started" status and 0 progress.

Consider:

  1. Fetching initial progress from an API
  2. Persisting progress updates
  3. Showing loading state while fetching progress
+ interface Progress {
+   status: 'Not started' | 'Completed' | 'In progress';
+   progress: number;
+ }
+ 
+ const [progressMap, setProgressMap] = useState<Record<string, Progress>>({});
+ 
+ useEffect(() => {
+   // Fetch progress for visible content
+   const fetchProgress = async () => {
+     try {
+       const progress = await fetch(`/api/progress?ids=${contentData.map(i => i.identifier).join(',')}`);
+       setProgressMap(progress);
+     } catch (error) {
+       console.error('Failed to fetch progress:', error);
+     }
+   };
+   fetchProgress();
+ }, [contentData]);

  <CommonCard
    // ... other props
-   status={'Not started'}
-   progress={0}
+   status={progressMap[item?.identifier]?.status ?? 'Not started'}
+   progress={progressMap[item?.identifier]?.progress ?? 0}
  />
🧹 Nitpick comments (2)
libs/shared-lib/src/lib/Header/TopAppBar.tsx (1)

117-135: Enhance menu configuration and type safety.

The current Menu implementation is hardcoded to show only a logout option. Consider making it more flexible and type-safe.

Consider this enhancement:

+ interface MenuItem {
+   label: string;
+   onClick: () => void;
+   icon?: React.ReactNode;
+ }

interface CommonAppBarProps {
  // ... existing props
+  menuItems?: MenuItem[];
  onMenuClose?: () => void;
}

// In the Menu component:
- <MenuItem onClick={onMenuClose}>Logout</MenuItem>
+ {menuItems?.map((item, index) => (
+   <MenuItem key={index} onClick={item.onClick}>
+     {item.icon && <ListItemIcon>{item.icon}</ListItemIcon>}
+     <ListItemText primary={item.label} />
+   </MenuItem>
+ ))}
mfes/content/src/pages/content.tsx (1)

311-327: Consolidate Menu component implementation.

The Menu component implementation is duplicated from TopAppBar. Consider extracting it into a shared component.

+ // In libs/shared-lib/src/lib/Menu/LogoutMenu.tsx
+ interface LogoutMenuProps {
+   anchorEl: HTMLElement | null;
+   onClose: () => void;
+ }
+ 
+ export const LogoutMenu: React.FC<LogoutMenuProps> = ({ anchorEl, onClose }) => (
+   <Menu
+     id="menu-appbar"
+     anchorEl={anchorEl}
+     anchorOrigin={{
+       vertical: 'top',
+       horizontal: 'right',
+     }}
+     keepMounted
+     transformOrigin={{
+       vertical: 'top',
+       horizontal: 'right',
+     }}
+     open={Boolean(anchorEl)}
+     onClose={onClose}
+   >
+     <MenuItem onClick={onClose}>Logout</MenuItem>
+   </Menu>
+ );

- <Menu>
-   {/* ... duplicate implementation ... */}
- </Menu>
+ <LogoutMenu anchorEl={anchorEl} onClose={handleClose} />
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d7cbfc8 and c36152d.

📒 Files selected for processing (3)
  • libs/shared-lib/src/lib/Header/TopAppBar.tsx (5 hunks)
  • libs/shared-lib/src/lib/Layout/Layout.tsx (6 hunks)
  • mfes/content/src/pages/content.tsx (8 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • libs/shared-lib/src/lib/Layout/Layout.tsx

Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
29.8% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@rushi-tekdi rushi-tekdi merged commit 89c02f1 into tekdi:main Jan 29, 2025
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants