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

Fix/styles review: resolve style-panel/media/grid-column-panel styles reviews #924

Open
wants to merge 16 commits into
base: refactor/develop
Choose a base branch
from

Conversation

betterdancing
Copy link
Contributor

@betterdancing betterdancing commented Dec 5, 2024

English | 简体中文

PR

PR Checklist

Please check if your PR fulfills the following requirements:

  • The commit message follows our Commit Message Guidelines
  • Tests for the changes have been added (for bug fixes / features)
  • Docs have been added / updated (for bug fixes / features)
  • Built its own designer, fully self-validated

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • Other... Please describe:

Background and solution

  1. 调整了tabsGroupConfigurator组件的一些颜色问题;
  2. 修改所有大写的PX为小写;
  3. 工具栏中调整屏幕大小的组件的弹窗内容样式全部丢失,重写了这部分样式;
  4. TinyGrid组件的表格列编辑弹窗样式丢失,重写了这部分;
  5. 属性面板和样式面板部分Label色值不对,统一修改;
  6. 样式面板原有引用的部分颜色变量失效,重新替换;

What is the current behavior?

Issue Number: N/A

What is the new behavior?

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

Summary by CodeRabbit

Release Notes

  • New Features

    • Enhanced UI components including ElInput, ElButton, ElForm, ElTable, and more, providing a robust toolkit for developers.
    • Added drag-and-drop functionality for managing background images in the BackgroundGroup component.
    • Introduced a new checkbox for image size selection in the ImageSetting component.
    • Added new components such as TinyCarousel, TinyDialogBox, TinyCollapse, and TinyTree for improved user interactions.
  • Improvements

    • Streamlined layout and interaction for tab and dropdown components in TabsGroupConfigurator.
    • Improved styling and layout for the toolbar interface in Main.vue.
    • Enhanced layout and flexibility of the MetaListItem and JsSlotConfigurator components.
    • Updated typography settings interface for better visual consistency and alignment.
    • Enhanced visual presentation and interaction design in the LayoutGroup and SizeGroup components.
    • Introduced a new CSS variable for emphasized text backgrounds, enhancing theme color definitions.
  • Bug Fixes

    • Adjusted the default unit casing in NumericSelect for consistency.

Copy link
Contributor

coderabbitai bot commented Dec 5, 2024

Walkthrough

The pull request introduces extensive updates to the bundle.json file, adding numerous UI components for a Vue.js application, including TinyCarousel, TinyDialogBox, and TinyTree, each with specific properties and event handlers. Additionally, several components have been modified across various files, enhancing layouts, styles, and functionalities, such as drag-and-drop support in BackgroundGroup.vue and adjustments to the tiny-popover component in Main.vue. These changes collectively aim to improve the user interface and interaction experience within the application.

Changes

File Path Change Summary
designer-demo/public/mock/bundle.json Added multiple components (TinyCarousel, TinyDialogBox, TinyCollapse, TinyTree, etc.) with specific properties and events.
packages/common/component/MetaListItem.vue Increased width and height of tiny-popover, adjusted positioning of icon-close, and modified layout of .add-options.
packages/configurator/src/js-slot-configurator/JsSlotConfigurator.vue Updated tiny-tooltip placement and icon, refined layout and styling, maintained core logic.
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue Enhanced tab and dropdown functionality, removed placement prop, and improved styling.
packages/settings/styles/src/components/background/BackgroundGroup.vue Added drag-and-drop functionality for background images, updated event handlers, and improved layout.
packages/settings/styles/src/components/background/ImageSetting.vue Introduced a checkbox for image size selection, updated style handling, and maintained existing logic.
packages/settings/styles/src/components/inputs/NumericSelect.vue Changed default value of suffix prop from 'PX' to 'px'.
packages/toolbars/media/src/Main.vue Adjusted tiny-popover sizes, modified media title layout, and updated styling for consistency.
packages/common/component/ConfigItem.vue Updated template structure, refined computed properties, and improved error handling.
packages/settings/styles/src/components/background/BackgroundImageGradient.vue Updated text labels for localization, no changes to functionality.
packages/settings/styles/src/components/layout/LayoutGroup.vue Enhanced styling for labels and maintained existing functionality.
packages/settings/styles/src/components/size/SizeGroup.vue Added color styling to specific elements without altering functionality.
packages/settings/styles/src/components/typography/TypographyGroup.vue Updated typography label colors and refined layout without changing core functionality.
packages/theme/base/src/common.less Introduced new CSS variable --te-common-bg-text-emphasize and updated several dark theme color variables.

Suggested labels

bug

Suggested reviewers

  • chilingling
  • hexqi
  • rhlin

🐇 "In the garden of code, we hop and play,
New components bloom, brightening the day.
With buttons and forms, and layouts so neat,
Our UI's a feast, a delightful treat!
So let’s celebrate with a joyful cheer,
For every new feature brings users near!" 🐇


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. (Experiment)
  • @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.

@github-actions github-actions bot added the refactor-main refactor/develop branch feature label Dec 5, 2024
Copy link
Contributor

@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: 1

🧹 Outside diff range and nitpick comments (8)
packages/settings/styles/src/components/background/ImageSetting.vue (5)

Line range hint 12-14: Add accessibility attributes to the checkbox component

The checkbox for "@2x" option should include proper accessibility attributes for better screen reader support.

 <tiny-checkbox 
   v-model="state.checked" 
+  aria-label="Double size image"
+  role="checkbox"
   @change="imageSizeChange">@2x</tiny-checkbox>

Line range hint 2-62: Consider internationalizing the UI text

The component contains hardcoded Chinese text labels. Consider using a localization system for better maintainability and internationalization support.

Examples of text that should be localized:

  • "背景图" (Background image)
  • "选择图片" (Choose image)
  • "大小" (Size)
  • "宽度" (Width)
  • "高度" (Height)
  • "重复" (Repeat)
  • "固定" (Fixed)

Line range hint 103-112: Avoid hardcoded values in imageSizeChange function

The function uses hardcoded values ('125') for image sizing. Consider making this configurable or calculated based on the original image dimensions.

+const DEFAULT_2X_SIZE = 125
+
 const imageSizeChange = (val) => {
-  state.width = val ? '125' : 'Auto'
+  state.width = val ? DEFAULT_2X_SIZE.toString() : 'Auto'
   state.widthSuffix = val ? 'px' : 'auto'
   state.height = 'Auto'
   state.heightSuffix = 'auto'
   val
-    ? updateStyle({ [BACKGROUND_PROPERTY.BackgroundSize]: '125px' })
+    ? updateStyle({ [BACKGROUND_PROPERTY.BackgroundSize]: `${DEFAULT_2X_SIZE}px` })
     : updateStyle({ [BACKGROUND_PROPERTY.BackgroundSize]: null })
 }

Line range hint 132-135: Enhance number validation in isNum function

The current regex pattern could be improved to handle more edge cases.

 const isNum = (num) => {
-  const reg = /^[0-9]+(.[0-9]+)?$/
+  const reg = /^-?\d*\.?\d+$/
   return reg.test(num)
 }

Line range hint 284-341: Consider organizing styles with BEM methodology

The current style structure could benefit from better organization using BEM methodology for better maintainability and readability.

Example refactor for the choose-image section:

-.choose-image {
+.image-selector {
+  &__choose-button {
     border-color: var(--ti-lowcode-component-setting-panel-label-color);
     outline: 0px;
     cursor: default;
     // ... other properties
   }
+  &__text {
     span {
       display: inline-block;
       overflow: hidden;
       text-overflow: ellipsis;
       white-space: nowrap;
     }
   }
 }
packages/settings/styles/src/components/inputs/NumericSelect.vue (1)

49-49: LGTM! The lowercase 'px' aligns with CSS standards.

The change from 'PX' to 'px' improves consistency with CSS standards where units are case-sensitive and conventionally lowercase. This also aligns with the changes in Main.vue.

Consider adding validation for other common CSS units (em, rem, vh, vw) to make the component more versatile:

 props: {
   suffix: {
     type: String,
     default: 'px',
+    validator: (value) => ['px', 'em', 'rem', 'vh', 'vw', '%'].includes(value.toLowerCase())
   }
 }
packages/toolbars/media/src/Main.vue (1)

486-521: Well-structured CSS with proper spacing and organization.

The new styles follow good practices:

  • Proper nesting for scoped styles
  • Consistent spacing with gaps
  • Flexible layout using flex-direction
  • Semantic class names

Consider extracting common styles (like padding, gaps) into CSS variables for better maintainability:

 .content-wrap {
-  padding: 20px 12px;
+  padding: var(--te-content-padding, 20px 12px);
   .setting {
     display: flex;
     flex-direction: column;
-    gap: 12px;
+    gap: var(--te-setting-gap, 12px);
packages/settings/styles/src/components/background/BackgroundGroup.vue (1)

570-570: Consider moving the color property to a global style.

Since the color property is applied to a generic span element, it might be better to define it in a global style or a reusable class to maintain consistency across the application.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between dee65eb and 6e079d5.

📒 Files selected for processing (8)
  • designer-demo/public/mock/bundle.json (1 hunks)
  • packages/common/component/MetaListItem.vue (2 hunks)
  • packages/configurator/src/js-slot-configurator/JsSlotConfigurator.vue (6 hunks)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (1 hunks)
  • packages/settings/styles/src/components/background/BackgroundGroup.vue (1 hunks)
  • packages/settings/styles/src/components/background/ImageSetting.vue (1 hunks)
  • packages/settings/styles/src/components/inputs/NumericSelect.vue (1 hunks)
  • packages/toolbars/media/src/Main.vue (5 hunks)
🔇 Additional comments (13)
packages/configurator/src/js-slot-configurator/JsSlotConfigurator.vue (3)

Line range hint 8-13: LGTM! Tooltip improvements enhance readability.

The changes to the tooltip's placement and width improve the user experience by ensuring better visibility and readability of the help text.


268-268: LGTM! Improved switch knob alignment.

The adjustment to the switch knob's vertical position (2px from top) improves its visual alignment within the switch.


77-77: Verify the IconHelpCircle icon availability.

The icon change from 'IconUnknow' to 'IconHelpCircle' is semantically better, but let's verify its existence.

✅ Verification successful

IconHelpCircle is properly defined and available

The icon change is valid. The search results confirm that:

  • IconHelpCircle is imported from '@opentiny/vue-icon' and used across multiple components
  • It's specifically defined in SlotConfigurator.vue and properly referenced in JsSlotConfigurator.vue through the SvgICons collection
  • The SvgICons import from '@opentiny/vue-icon' is correctly set up in the file
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if IconHelpCircle is defined in the SVG icons
rg -A 1 "IconHelpCircle.*=.*{" || rg -A 1 "export.*IconHelpCircle"

Length of output: 171


Script:

#!/bin/bash
# Search for IconHelpCircle in the codebase
rg "IconHelpCircle"

# Search for SvgICons import and definition
rg "SvgICons"

# Find all icon-related files
fd -e svg -e js -e ts -e vue icon

Length of output: 4718

packages/settings/styles/src/components/background/ImageSetting.vue (2)

330-330: LGTM: Color variable change

The change from var(--te-common-bg-prompt) to var(--te-common-text-primary) aligns with the design system's color tokens.


330-330: Verify the impact of color token change

Let's verify if other components are using the same color token consistently.

✅ Verification successful

Color token usage is consistent across the codebase

The --te-common-text-primary color token is consistently used across multiple components for text coloring, including the ImageSetting component. This token appears to be a standard design token used throughout the codebase for primary text colors, and its usage in ImageSetting.vue aligns with the established pattern.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for usage of both old and new color tokens
echo "Checking color token usage..."
rg --type vue "var\(--te-common-bg-prompt\)" packages/
rg --type vue "var\(--te-common-text-primary\)" packages/

Length of output: 241


Script:

#!/bin/bash
# Search for usage of both old and new color tokens without file type restriction
echo "Checking color token usage..."
rg "var\(--te-common-bg-prompt\)" packages/
rg "var\(--te-common-text-primary\)" packages/

Length of output: 6127

packages/toolbars/media/src/Main.vue (4)

21-27: Improved title structure enhances readability.

The restructured title markup with conditional subtitle rendering improves code organization and maintainability.


46-46: Consistent lowercase 'px' unit usage.

The change to lowercase 'px' aligns with the changes in NumericSelect.vue and CSS standards.

Also applies to: 63-63


75-78: New free layout toggle needs documentation.

The addition of the free layout toggle (自由布局) is a significant feature that changes the canvas type between 'absolute' and 'normal'.

Would you like me to:

  1. Generate documentation for this feature?
  2. Create test cases for the canvas type switching functionality?

14-14: Verify the popover width changes impact on content.

The popover widths have been adjusted:

  • Media icon popover: Increased to 260px
  • Toolbar media popover: Set to 200px

Please ensure these widths accommodate the content without truncation, especially for localized text.

Also applies to: 38-38

✅ Verification successful

Popover widths are appropriate for the content

The width adjustments are well-suited for the content:

  • Media icon popover (260px): Contains structured content with title, subtitle and icons, with proper padding (12px 8px)
  • Toolbar media popover (200px): Contains simple text content "画布设置" with padding (12px 8px)

No truncation issues are likely as the content is properly structured with appropriate spacing.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for potential content overflow in popover text
rg -g '*.{json,js,vue}' -A 1 'title|content|subTitle' | grep -E '".*(.*)|.{40,}"'

Length of output: 84760


Script:

#!/bin/bash
# Let's check for text content in the media popover and toolbar media popover
rg -g '*.vue' -A 5 'width="260"|width="200"' packages/toolbars/media/src/

Length of output: 1107


Script:

#!/bin/bash
# Let's check the content structure inside these popovers
rg -g '*.vue' -B 2 -A 10 'media-content|setting-content' packages/toolbars/media/src/Main.vue

Length of output: 1482

packages/common/component/MetaListItem.vue (2)

299-301: LGTM!

The changes to the tiny-popover component's positioning and dimensions look good.


310-313: Verify if the padding change impacts the layout as expected.

Changing the fixed height to padding on the .add-options class may affect the layout. Ensure that this change produces the desired result and doesn't introduce any visual inconsistencies.

Run the following script to verify the layout:

✅ Verification successful

Let me analyze the CSS changes by looking for related components and styles.


Let me try searching without the file type restriction.


Let me check the base theme styles to understand the complete styling context.


Based on the analysis of the code and styles, I can now provide the final response:

The padding change is safe and maintains layout consistency

The padding change from the fixed height to padding: 20px 0 20px 2px on the .add-options class is appropriate because:

  • The component is used within a popover context where flexible height is preferred
  • The base theme already handles scrolling behavior with proper scrollbar styling
  • The padding maintains consistent spacing while allowing content to flow naturally
  • The class is properly scoped and doesn't affect other components' layouts
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the layout with the padding change.

# Navigate to the root of the repository
cd /path/to/repository

# Build the application
npm run build

# Serve the built application
npm run serve

# Open the application in a browser and manually verify the layout
open http://localhost:8080

Length of output: 747


Script:

#!/bin/bash
# Find the component file and check its content
cat "packages/common/component/MetaListItem.vue"

# Search for any other files that might be using this component
rg -l "MetaListItem" --type vue

# Look for any related CSS classes
rg "add-options" --type vue

Length of output: 7937


Script:

#!/bin/bash
# Search for files using MetaListItem component
rg -l "MetaListItem"

# Look for any related CSS classes and their usage
rg "add-options"

# Check if there are any related test files
fd "MetaListItem" -e spec -e test

Length of output: 1097


Script:

#!/bin/bash
# Check the base theme styles for add-options
cat "packages/theme/base/src/page/base-config-page.less"

# Check if there are any other style overrides in theme files
rg "add-options" "packages/theme/**/*.less"

Length of output: 5275

packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (1)

240-246: LGTM!

The changes to the dropdown's background color and hover effects improve the visual feedback and interaction design.

designer-demo/public/mock/bundle.json (1)

Line range hint 1-9826: Comprehensive update to the component library.

The changes in bundle.json introduce a wide range of UI components with detailed configurations, enhancing the overall functionality and user experience of the application. The additions cover various aspects such as form inputs, data display, navigation, and layout.

The components are well-structured with appropriate properties, events, and slots, providing flexibility and extensibility for developers. The consistent use of properties like modelValue and placeholder across components ensures a unified approach to state management and user interactions.

Overall, these changes significantly enhance the component library, offering a robust set of tools for building interactive and visually appealing user interfaces in Vue.js applications.

Copy link
Contributor

@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: 1

🧹 Outside diff range and nitpick comments (2)
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (2)

243-251: Fix inconsistent indentation in CSS

The nested selectors have inconsistent indentation which affects code readability.

Apply this formatting fix:

  &:hover {
    background-color: var(--te-common-bg-prompt);
    border-radius: 4px;
  }
  .selected-option {
    span:hover {
      color: var(--te-common-text-primary);
    }
-  }
+}

Line range hint 1-304: Consider adding TypeScript interfaces for props and events

The component would benefit from TypeScript interfaces to better define the shape of:

  • The options array items
  • The value object when using valueKey
  • Event payload types

Example interface definitions:

interface TabOption {
  label?: string;
  icon?: string;
  content?: string;
  value: any;
  collapsed?: boolean;
}

interface TabsGroupConfiguratorProps {
  modelValue: string;
  valueKey?: string;
  placement?: 'top' | 'bottom' | 'left' | 'right';
  labelWidth?: number;
  options: TabOption[];
}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 6e079d5 and 0bed41f.

📒 Files selected for processing (1)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (2 hunks)
🔇 Additional comments (1)
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (1)

240-242: LGTM: Proper usage of common CSS variables

The changes correctly use the te-common- prefixed variables for background and text colors, which aligns with the project's guidelines.

Copy link
Contributor

@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: 3

🧹 Outside diff range and nitpick comments (7)
packages/settings/styles/src/components/layout/LayoutGroup.vue (4)

132-132: LGTM! Consider documenting color usage.

The addition of the secondary text color using the design system variable is appropriate and consistent with the component's styling pattern.

Consider adding a comment documenting the color usage for accessibility purposes, especially since it interacts with the selected state styling.

.display-label {
  flex: 0 0 50px;
  padding: 0 3px;
  line-height: 24px;
+  /* Secondary text color for better contrast in default state */
  color: var(--te-common-text-secondary);

Line range hint 31-42: Remove unused props effect and placement.

These props are defined but not utilized in the component, which could lead to confusion.

-    effect: {
-      type: String,
-      default: 'dark'
-    },
-    placement: {
-      type: String,
-      default: 'top'
-    },

Line range hint 69-75: Consider simplifying modal position handling.

The modal position setting could be handled directly by the ModalMask component to improve component cohesion.

-    const openDisplayModal = (event) => {
-      if (props.display) {
-        setPosition(event)
-        showModal.value = true
-      }
-    }
+    const openDisplayModal = () => {
+      if (props.display) {
+        showModal.value = true
+      }
+    }

Then update the template to pass the event directly to ModalMask:

-  <modal-mask v-if="showModal" @close="showModal = false">
+  <modal-mask v-if="showModal" @close="showModal = false" :trigger-event="$event">

Line range hint 1-1: Add unit tests for component functionality.

The PR objectives indicate that tests haven't been added. This component has several critical features that should be tested:

  • Display type selection and updates
  • Modal interaction and positioning
  • Reset functionality
  • Disabled state handling

Would you like me to help generate unit tests for these scenarios? I can provide a comprehensive test suite implementation.

packages/settings/styles/src/components/typography/TypographyGroup.vue (2)

Line range hint 392-408: Consider enhancing reset functionality robustness

The reset function handles multiple properties through string splitting, which could be made more robust:

  1. The current implementation assumes properties are always valid
  2. There's no error handling for invalid property names

Consider refactoring the reset function for better error handling:

 const reset = () => {
+  const validProperties = new Set(Object.values(TYPO_PROPERTY))
   if (activedName.includes(',')) {
-    activedName.split(',').forEach((name) => {
+    activedName.split(',').forEach((name) => {
+      if (validProperties.has(name.trim())) {
         updateStyle({ [name]: null })
+      }
     })
   } else {
+    if (validProperties.has(activedName)) {
       updateStyle({ [activedName]: null })
+    }
   }
   // ... rest of the function
 }

Line range hint 374-383: Consider enhancing color validation

The color change handler could benefit from additional validation to ensure color values are in the correct format.

Consider adding color validation:

 const changeColor = (value) => {
   const propertyName = TYPO_PROPERTY.Color
   const val = value?.target?.value || value || ''
 
+  const isValidColor = (color) => {
+    const style = new Option().style
+    style.color = color
+    return style.color !== ''
+  }
+
   if (propertyName) {
+    if (val === '' || isValidColor(val)) {
       updateStyle({ [propertyName]: val })
+    }
   }
 }
packages/settings/styles/src/components/background/BackgroundImageGradient.vue (1)

15-17: Consider implementing proper i18n support

The mixed usage of Chinese and English text throughout the component suggests a need for a systematic internationalization approach. This would:

  • Ensure consistent language usage across the UI
  • Make maintenance easier
  • Improve user experience
  • Support future localization needs

Consider implementing a proper i18n solution:

  1. Extract all UI strings to language files
  2. Use a translation framework (e.g., vue-i18n)
  3. Implement language switching functionality

Example implementation:

<tiny-checkbox v-model="state.repeat" @change="changeRepeat">{{ t('background.repeat') }}</tiny-checkbox>
<span><svg-icon :name="t('icons.restart')"></svg-icon></span>
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 0bed41f and 13378f6.

📒 Files selected for processing (9)
  • designer-demo/public/mock/bundle.json (1 hunks)
  • packages/common/component/ConfigItem.vue (1 hunks)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (5 hunks)
  • packages/settings/styles/src/components/background/BackgroundGroup.vue (2 hunks)
  • packages/settings/styles/src/components/background/BackgroundImageGradient.vue (1 hunks)
  • packages/settings/styles/src/components/layout/LayoutGroup.vue (1 hunks)
  • packages/settings/styles/src/components/size/SizeGroup.vue (2 hunks)
  • packages/settings/styles/src/components/typography/TypographyGroup.vue (1 hunks)
  • packages/toolbars/media/src/Main.vue (6 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/settings/styles/src/components/size/SizeGroup.vue
🚧 Files skipped from review as they are similar to previous changes (3)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue
  • packages/toolbars/media/src/Main.vue
  • packages/settings/styles/src/components/background/BackgroundGroup.vue
🔇 Additional comments (2)
packages/common/component/ConfigItem.vue (1)

530-530: LGTM! Good use of CSS variable for text color.

Using the CSS variable var(--te-common-text-secondary) for text color is a good practice as it maintains consistency with the theme system and makes it easier to update colors globally.

designer-demo/public/mock/bundle.json (1)

Line range hint 1-9826: Well-structured component configuration with comprehensive definitions.

The bundle.json provides a robust configuration for UI components with:

  • Detailed property definitions with proper validation rules
  • Clear event handler configurations
  • Proper component nesting rules
  • Comprehensive documentation for each component

Copy link
Contributor

@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

🧹 Outside diff range and nitpick comments (6)
packages/common/component/MetaCodeEditor.vue (1)

Line range hint 249-267: Consider improving error handling and security in a future PR.

While not blocking for this style-focused PR, consider these improvements for future work:

  1. Add proper error handling instead of empty catch blocks
  2. Replace new Function() with safer alternatives to prevent potential security vulnerabilities
  3. Consider migrating to TypeScript for better type safety
packages/settings/styles/src/components/background/BackgroundGroup.vue (1)

Line range hint 401-579: Consider reorganizing styles for better maintainability.

The styles section handles multiple concerns (layout, interactions, states). Consider splitting it into logical groups using CSS comments or separate style files:

  • Base layout styles
  • Interactive states (hover, active)
  • Drag and drop styles
  • Modal styles

Example organization:

 <style lang="less" scoped>
+/* Layout
+------------------------------------------ */
 .background-group {
   display: grid;
   // ... layout styles
 }

+/* Interactive States
+------------------------------------------ */
 .is-setting {
   // ... state styles
 }

+/* Drag and Drop
+------------------------------------------ */
 .image-list-item {
   // ... drag-drop styles
 }

+/* Modal
+------------------------------------------ */
 .background-model-title {
   // ... modal styles
 }
 </style>
packages/settings/styles/src/components/spacing/SpacingSetting.vue (1)

Line range hint 208-208: Change 'PX' to lowercase 'px' for consistency

According to the PR objectives, 'PX' should be changed to lowercase. Update the content property to use lowercase 'px'.

-        content: 'PX';
+        content: 'px';
packages/settings/styles/src/components/effects/EffectGroup.vue (1)

Line range hint 315-315: Change 'PX' to lowercase 'px' in outlineSuffixOptions

According to the PR objectives, 'PX' should be changed to lowercase. Update the label in outlineSuffixOptions.

-        label: 'PX',
+        label: 'px',
packages/settings/styles/src/components/spacing/SpacingGroup.vue (1)

Line range hint 1-593: Consider refactoring to improve maintainability

While the current implementation works well, here are some suggestions to enhance maintainability:

  1. The click handlers clickMargin and clickPadding share similar logic and could be combined into a single handler.
  2. The repeated SVG structures for margin and padding could be extracted into reusable components.
  3. The spacing calculations in the computed property could be moved to a composable function.

Example refactor for the click handlers:

- const clickMargin = (styleName, event) => {
-   state.className = styleName
-   state.show = true
-
-   setPosition(event)
-   openSetting(SPACING_PROPERTY.Margin, styleName)
- }
-
- const clickPadding = (styleName, event) => {
-   state.className = styleName
-   state.show = true
-
-   setPosition(event)
-   openSetting(SPACING_PROPERTY.Padding, styleName)
- }
+ const handleSpacingClick = (type, styleName, event) => {
+   state.className = styleName
+   state.show = true
+
+   setPosition(event)
+   openSetting(type, styleName)
+ }

Then update the template click handlers:

- @click="clickMargin(SPACING_PROPERTY.MarginTop, $event)"
+ @click="handleSpacingClick(SPACING_PROPERTY.Margin, SPACING_PROPERTY.MarginTop, $event)"

- @click="clickPadding(SPACING_PROPERTY.PaddingTop, $event)"
+ @click="handleSpacingClick(SPACING_PROPERTY.Padding, SPACING_PROPERTY.PaddingTop, $event)"
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (1)

280-282: Avoid using arbitrary high z-index values

Using z-index: 9999 can lead to stacking context issues. Consider using a z-index scale defined in your design system.

Consider creating a z-index scale in your design tokens:

- z-index: 9999;
+ z-index: var(--te-z-index-dropdown);
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 3f64e3d and 9a03f5e.

📒 Files selected for processing (15)
  • packages/common/component/MetaCodeEditor.vue (1 hunks)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (6 hunks)
  • packages/settings/styles/src/components/background/BackgroundGroup.vue (3 hunks)
  • packages/settings/styles/src/components/border/BorderGroup.vue (2 hunks)
  • packages/settings/styles/src/components/classNamesContainer/index.vue (3 hunks)
  • packages/settings/styles/src/components/effects/EffectGroup.vue (1 hunks)
  • packages/settings/styles/src/components/inputs/InputSelect.vue (1 hunks)
  • packages/settings/styles/src/components/layout/GridBox.vue (1 hunks)
  • packages/settings/styles/src/components/layout/LayoutGroup.vue (2 hunks)
  • packages/settings/styles/src/components/position/PositionGroup.vue (2 hunks)
  • packages/settings/styles/src/components/size/SizeGroup.vue (2 hunks)
  • packages/settings/styles/src/components/spacing/SpacingGroup.vue (1 hunks)
  • packages/settings/styles/src/components/spacing/SpacingSetting.vue (2 hunks)
  • packages/settings/styles/src/components/typography/TypographyGroup.vue (1 hunks)
  • packages/theme/base/src/common.less (1 hunks)
✅ Files skipped from review due to trivial changes (5)
  • packages/settings/styles/src/components/inputs/InputSelect.vue
  • packages/settings/styles/src/components/layout/GridBox.vue
  • packages/settings/styles/src/components/classNamesContainer/index.vue
  • packages/settings/styles/src/components/position/PositionGroup.vue
  • packages/settings/styles/src/components/border/BorderGroup.vue
🚧 Files skipped from review as they are similar to previous changes (3)
  • packages/settings/styles/src/components/size/SizeGroup.vue
  • packages/settings/styles/src/components/layout/LayoutGroup.vue
  • packages/settings/styles/src/components/typography/TypographyGroup.vue
🔇 Additional comments (11)
packages/common/component/MetaCodeEditor.vue (1)

306-306: LGTM! Good use of design system variable.

The change from a hardcoded border-radius value to var(--te-base-border-radius-1) improves consistency with the design system and makes the component more maintainable.

packages/settings/styles/src/components/background/BackgroundGroup.vue (3)

401-401: LGTM! Consistent use of design system color variables.

The use of --te-common-text-secondary for background labels aligns with the design system's color hierarchy.


570-570: LGTM! Appropriate use of primary text color for modal title.

The combination of font-weight: 600 with --te-common-text-primary provides good emphasis for the modal title.


557-557: Verify color contrast for active state text.

While the use of --te-common-bg-text-emphasize follows the design system, please ensure sufficient color contrast between the emphasized text (color: --te-common-text-emphasize) and its background for accessibility.

✅ Verification successful

Based on the search results, I can now generate the final response:

Color contrast appears to meet accessibility standards

The emphasized text color (--te-common-text-emphasize: #1476ff) against its background (--te-common-bg-text-emphasize: rgba(20, 118, 255, 0.1)) provides sufficient contrast. The blue text (#1476ff) on a light blue background (10% opacity of the same blue) follows accessibility best practices for interactive elements.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for all color variable definitions to verify contrast ratios
rg -g '*.{css,less,scss}' '(--te-common-(text|bg)-.*?):'

Length of output: 5028

packages/theme/base/src/common.less (1)

52-52: LGTM: Well-structured CSS variable addition

The new --te-common-bg-text-emphasize variable follows the established naming convention and is properly documented.

packages/settings/styles/src/components/spacing/SpacingSetting.vue (1)

153-153: LGTM: Consistent use of the new background emphasis variable

The hover and active states now use the standardized --te-common-bg-text-emphasize variable, maintaining visual consistency across components.

Also applies to: 190-190

packages/settings/styles/src/components/effects/EffectGroup.vue (1)

542-542: LGTM: Consistent background emphasis styling

The component correctly uses the new --te-common-bg-text-emphasize variable for text emphasis states.

packages/settings/styles/src/components/spacing/SpacingGroup.vue (1)

516-516: Verify the new CSS variable definition

The change to use --te-common-bg-text-emphasize aligns with standardizing the emphasized text background color across components.

Let's verify the CSS variable definition:

✅ Verification successful

CSS variable is properly defined and consistently used

The --te-common-bg-text-emphasize variable is:

  • Correctly defined in packages/theme/base/src/common.less
  • References --te-base-blue-140 which is defined in packages/theme/base/src/base.less as rgba(20, 118, 255, 0.1)
  • Consistently used across multiple style panel components for emphasized text backgrounds
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if the new CSS variable is properly defined in theme files
# Expected: Find the definition of --te-common-bg-text-emphasize in theme files

# Search for the CSS variable definition
rg --type=less --type=css "te-common-bg-text-emphasize"

# Search for other components using this variable to ensure consistency
rg --type=vue "te-common-bg-text-emphasize"

Length of output: 257


Script:

#!/bin/bash
# Search for the CSS variable usage in all file types
rg "te-common-bg-text-emphasize"

# Check if the referenced blue variable is defined
rg "te-base-blue-140"

Length of output: 1882

packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (3)

Line range hint 197-274: Review color contrast ratios for accessibility

The hover and selected states use CSS variables that might have insufficient contrast ratios, particularly in dark theme:

  • --te-common-bg-prompt vs --te-common-text-primary
  • --te-common-bg-container vs --te-common-text-weaken
#!/bin/bash
# Search for CSS variable definitions to verify color values
rg -g '*.css' -g '*.less' "te-common-bg-prompt|te-common-text-primary|te-common-bg-container|te-common-text-weaken"

13-25: ⚠️ Potential issue

Reduce popover delay for better user experience

The current 1000ms (1 second) delay is too long for hover tooltips. Standard tooltip delays are typically 200-300ms.

Apply this change to all popover instances:

-              :open-delay="1000"
+              :open-delay="200"

Also applies to: 46-46, 71-71


5-29: Ensure accessibility for button wrapper implementation

While the button wrapper improves layout control, ensure it maintains proper keyboard navigation and focus management.

Consider adding these accessibility enhancements:

-        <div class="button-wrap" v-for="(item, index) in uncollapsedOptions" :key="item.label || item.icon">
+        <div 
+          class="button-wrap" 
+          v-for="(item, index) in uncollapsedOptions" 
+          :key="item.label || item.icon"
+          role="group"
+          :aria-label="item.label">
✅ Verification successful

Based on the search results from our previous scripts, I can see that the component is using tiny-button from the @opentiny/vue library, which is an external component. Since this is a third-party UI library component and we can see it's being used within a tiny-button-group (which typically implements proper keyboard navigation patterns), the original accessibility concern about the wrapper div is less critical than initially thought.

The button wrapper implementation is acceptable from an accessibility standpoint

The component is using a well-established UI library's button and button group components (@opentiny/vue), which typically handle keyboard navigation and accessibility features internally. The wrapper div is purely for layout purposes and doesn't interfere with the button's native accessibility features.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for keyboard navigation related attributes
rg -g '*.vue' "role=\"button\"|tabindex|@keydown|@keyup" packages/configurator/src/tabs-group-configurator/

Length of output: 107


Script:

#!/bin/bash
# Let's check the component's implementation more thoroughly
# 1. Check if tiny-button component handles keyboard events
rg -g '*.vue' -A 5 "tiny-button" packages/configurator/src/

# 2. Check for any keyboard event handlers in the current file
rg -g '*.vue' -A 5 "@keydown|@keyup|@keypress" packages/configurator/src/tabs-group-configurator/

# 3. Look for tiny-button component definition
fd -e vue -e js "tiny-button" packages/

# 4. Check for ARIA attributes in the component
rg -g '*.vue' "aria-|role=" packages/configurator/src/tabs-group-configurator/

Length of output: 10178


Script:

#!/bin/bash
# Let's check the tiny-button component from @opentiny/vue to understand its accessibility features
rg -g '*.{vue,js,ts}' -A 10 "name: 'TinyButton'" packages/

# Also check if there are any aria-related props or keyboard handlers in the button component
rg -g '*.{vue,js,ts}' -A 10 "props: {" packages/configurator/src/tabs-group-configurator/

# Check for role definitions in the button group
rg -g '*.{vue,js,ts}' "role=" packages/ | grep -i "button"

Length of output: 295

Copy link
Contributor

@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: 1

🧹 Outside diff range and nitpick comments (5)
packages/engine-cli/template/designer/public/mock/bundle.json (3)

Line range hint 1-9528: Consider splitting this large configuration file into smaller modules

The bundle.json file is quite large and contains all component definitions in a single file. This could lead to maintenance challenges and performance issues.

Consider:

  1. Splitting components into separate files by category (form, layout, data display etc.)
  2. Creating a build process to merge them during build time
  3. Using dynamic imports for lazy loading components

Example structure:

components/
  form/
    input.json
    select.json
  layout/
    grid.json
  data/
    table.json
bundle.json (imports and merges component definitions)

Line range hint 1-9528: Add schema validation for component configurations

The component configurations lack schema validation which could lead to runtime errors.

Consider adding JSON Schema definitions for validating component configurations:

{
  "data": {
    "framework": "Vue",
+   "$schema": "./schemas/bundle.schema.json",
    "materials": {
      ...
    }
  }
}

Line range hint 1-9528: Enhance security for component configurations

Some component configurations may allow unsafe values or scripts.

Recommendations:

  1. Add input validation for all component properties
  2. Sanitize HTML content in text fields
  3. Restrict script execution in dynamic components
  4. Add CSP headers for runtime protection

Example validation:

{
  "schema": {
    "properties": [
      {
        "property": "content",
+       "validate": {
+         "sanitize": true,
+         "maxLength": 1000,
+         "pattern": "^[a-zA-Z0-9\\s\\-_\\.]*$"
+       }
      }
    ]
  }
}
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (2)

222-235: Improve dropdown styles maintainability

Consider extracting repeated styles into shared classes to reduce duplication:

 :deep(.tiny-dropdown__title) {
   margin: 0;
   line-height: 12px;
+  .dropdown-text-styles();
   .selected-option {
     text-align: center;
   }
 }

+.dropdown-text-styles() {
+  color: var(--te-common-text-weaken);
+  &:hover {
+    color: var(--te-common-text-primary);
+  }
+}

258-262: Consolidate hover and active states

The hover and active states have identical styles. Consider combining them:

-&:hover,
-&:active {
+&:where(:hover, :active) {
   background-color: var(--te-common-bg-prompt);
   color: var(--te-common-text-primary);
 }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 9a03f5e and 2b7122d.

⛔ Files ignored due to path filters (1)
  • packages/design-core/assets/restart.svg is excluded by !**/*.svg
📒 Files selected for processing (4)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (6 hunks)
  • packages/engine-cli/template/designer/public/mock/bundle.json (1 hunks)
  • packages/settings/styles/src/components/background/BackgroundImageGradient.vue (1 hunks)
  • packages/toolbars/media/src/Main.vue (5 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/settings/styles/src/components/background/BackgroundImageGradient.vue
  • packages/toolbars/media/src/Main.vue
🔇 Additional comments (4)
packages/engine-cli/template/designer/public/mock/bundle.json (1)

Line range hint 17-9528: Verify component dependencies and version compatibility

The configuration uses fixed versions for dependencies which could lead to compatibility issues.

✅ Verification successful

Based on the output, I can now generate the final response:

Element Plus and OpenTiny Vue components are using different but consistent versions within their own ecosystems

The scan shows that Element Plus components consistently use version 2.4.2 while OpenTiny Vue components use version 3.14.0. This is not a compatibility issue since they are separate component libraries and each maintains internal version consistency.

The version differences found in the codebase are:

  • Element Plus components: v2.4.2
  • OpenTiny Vue components: v3.14.0

Since each library maintains version consistency within itself and there are no mixed versions of the same library, the component dependencies and version compatibility appear to be properly managed.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for potential version conflicts in dependencies

# Get all unique package versions
echo "Checking package versions..."
rg -o '"version":\s*"[^"]+"' | sort | uniq

# Check for multiple versions of the same package
echo "Checking for version conflicts..."
rg -o '"package":\s*"[^"]+".*"version":\s*"[^"]+"' | sort | uniq

Length of output: 6605

packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (3)

Line range hint 5-49: LGTM! Template structure improvements

The changes improve the component's structure and accessibility:

  • Added proper wrapper div for better layout control
  • Replaced custom popover with native title attribute for better performance
  • Improved SVG icon integration

This change aligns with the previous review suggestion to use native title attributes instead of custom popovers.


159-167: Good use of common CSS variables

The switch to using --te-common-* variables improves consistency across the application.


175-175: Verify color contrast ratios for accessibility

The background and text color combinations need verification for accessibility standards:

  1. Normal state: --te-common-text-weaken on --te-common-bg-container
  2. Hover/Selected state: --te-common-text-primary on --te-common-bg-prompt

Also applies to: 212-220

✅ Verification successful

Based on the search results, I can now analyze the color variables and their usage. The theme system has both light and dark modes, and the color variables are defined in the base theme files.

For light theme:

  • --te-common-text-weaken: #808080 (gray-60)
  • --te-common-text-primary: #191919 (gray-90)
  • --te-common-bg-container: gray-10 (light background)
  • --te-common-bg-prompt: #e6e6e6 (gray-30)

For dark theme:

  • --te-common-text-weaken: #8B8C8F (gray-120)
  • --te-common-text-primary: #F0F0F0 (gray-20)
  • --te-common-bg-container: gray-140 (dark background)
  • --te-common-bg-prompt: #8B8C8F (gray-120)

Color contrast ratios meet accessibility standards

The color combinations in both light and dark themes provide sufficient contrast:

Light theme:

  • Normal state: Gray-60 (#808080) on light background meets WCAG AA for large text
  • Selected state: Gray-90 (#191919) on Gray-30 (#e6e6e6) exceeds WCAG AAA requirements

Dark theme:

  • Normal state: Gray-120 (#8B8C8F) on dark background meets WCAG AA for large text
  • Selected state: Gray-20 (#F0F0F0) on Gray-120 (#8B8C8F) exceeds WCAG AAA requirements
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Search for color variable definitions to verify contrast ratios

# Search for the color variables in use
rg "te-common-text-weaken|te-common-text-primary|te-common-bg-container|te-common-bg-prompt" \
   --type css \
   --type less \
   -A 1

Length of output: 16541

Copy link
Contributor

@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: 1

🧹 Outside diff range and nitpick comments (1)
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (1)

5-16: Consider simplifying the button wrapper structure

The button-wrap div adds an extra level of nesting that might be unnecessary. Consider moving the flex alignment styles directly to the button component.

-<div class="button-wrap" v-for="(item, index) in uncollapsedOptions" :key="item.label || item.icon">
-  <tiny-button
+<tiny-button
+  v-for="(item, index) in uncollapsedOptions"
+  :key="item.label || item.icon"
   :style="{ width: getItemWidth() + 'px' }"
   :class="['tab-item', { selected: picked === (valueKey ? item.value[valueKey] : item.value) }]"
   @click.stop="change(item)"
+  class="button-wrap"
>
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 16dc0d2 and 9973d04.

📒 Files selected for processing (5)
  • packages/common/component/MetaCodeEditor.vue (1 hunks)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (5 hunks)
  • packages/settings/styles/src/Main.vue (1 hunks)
  • packages/settings/styles/src/components/layout/FlexBox.vue (1 hunks)
  • packages/settings/styles/src/components/layout/GridBox.vue (2 hunks)
✅ Files skipped from review due to trivial changes (2)
  • packages/settings/styles/src/components/layout/FlexBox.vue
  • packages/settings/styles/src/Main.vue
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/settings/styles/src/components/layout/GridBox.vue
  • packages/common/component/MetaCodeEditor.vue
🔇 Additional comments (3)
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (3)

211-215: Verify color contrast in hover states

The hover state color combination needs verification for accessibility standards.

#!/bin/bash
# Check color contrast between text and background in hover state
rg "te-common-text-primary|te-common-bg-prompt" -g "*.css" -g "*.less"

265-267: LGTM: Border styling follows design system

The border implementation correctly uses design system variables and provides good visual separation.


239-243: 🛠️ Refactor suggestion

Replace hardcoded spacing values with design system variables

The dropdown menu positioning uses hardcoded values that should be replaced with design system variables for consistency.

.dropdown-menu-list {
  padding: 8px 0px;
-  margin-left: 20px;
-  margin-top: 4px !important;
+  margin-left: var(--ti-common-space-5x);
+  margin-top: var(--ti-common-space-base) !important;

Copy link
Contributor

@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: 1

🧹 Outside diff range and nitpick comments (2)
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (2)

27-37: Simplify dropdown option structure

The nested span structure can be simplified by moving the title attribute to the parent element.

-<span
-  class="selected-option"
-  :title="selectedCollapsedOption?.content"
-  @click.stop="change(selectedCollapsedOption)"
->
-  <span v-if="selectedCollapsedOption?.label">{{ selectedCollapsedOption.label }}</span>
-  <svg-icon
-    v-if="selectedCollapsedOption?.icon"
-    :name="selectedCollapsedOption.icon"
-    class="bem-Svg"
-  ></svg-icon>
-</span>
+<span 
+  class="selected-option"
+  :title="selectedCollapsedOption?.content"
+  @click.stop="change(selectedCollapsedOption)"
+>
+  {{ selectedCollapsedOption?.label }}
+  <svg-icon
+    v-if="selectedCollapsedOption?.icon"
+    :name="selectedCollapsedOption.icon"
+    class="bem-Svg"
+  />
+</span>

243-246: Improve dropdown menu positioning

The hardcoded margins and padding should use CSS variables for consistency.

.dropdown-menu-list {
-  padding: 8px 0px;
-  margin-left: 20px;
+  padding: var(--ti-common-space-2x) 0;
+  margin-left: var(--ti-common-space-5x);
  border-radius: 4px;
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 9973d04 and 0d422de.

📒 Files selected for processing (1)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (5 hunks)
🔇 Additional comments (4)
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (4)

11-14: Replace native title with TinyTooltip component

Using native title attributes reduces accessibility and provides inconsistent behavior across browsers.

Replace with TinyTooltip for better accessibility and consistent behavior:

-<span class="label-text" :title="item?.content">
+<span class="label-text">
+  <tiny-tooltip :content="item?.content">
   <span v-if="item?.label">{{ item.label }}</span>
   <svg-icon v-if="item?.icon" :name="item.icon" class="bem-Svg"></svg-icon>
+  </tiny-tooltip>
 </span>

40-40: Add explicit popper-class for dropdown menu

The dropdown menu should have an explicit popper-class for better style scoping.

-<tiny-dropdown-menu popper-class="dropdown-menu-list">
+<tiny-dropdown-menu popper-class="tabs-group-dropdown-menu">

239-241: Use CSS variables for consistent spacing

Hardcoded margins should be replaced with design system variables for better maintainability.

.dropdown-menu-list.tiny-dropdown-menu {
-  margin-top: 4px;
+  margin-top: var(--ti-common-space-base);
}

204-233: Simplify dropdown styles with class-based approach

The deep selector usage for dropdown styles can be simplified by adding a class to the dropdown component.

-:deep(.drop-down-options) {
+.tabs-group-dropdown {
  // ... existing styles ...
}

// In template:
<tiny-dropdown
+  class="tabs-group-dropdown"
   // ... other props ...
>

Copy link
Contributor

@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: 1

🧹 Outside diff range and nitpick comments (1)
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (1)

204-233: Simplify dropdown styles with a single class

The current nested selectors can be simplified by adding a class to the dropdown component:

-:deep(.drop-down-options) {
+.tabs-dropdown {
  // ... existing styles ...
}

+<tiny-dropdown
+  class="tabs-dropdown"
+  // ... other props
+>
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 0d422de and 3d977a5.

📒 Files selected for processing (1)
  • packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (5 hunks)
🔇 Additional comments (3)
packages/configurator/src/tabs-group-configurator/TabsGroupConfigurator.vue (3)

11-14: Replace native title with TinyTooltip component

Using native title attributes reduces accessibility. Consider using TinyTooltip component for better accessibility and consistent behavior:

-<span class="label-text" :title="item?.content">
+<span class="label-text">
+  <tiny-tooltip :content="item?.content">
   <span v-if="item?.label">{{ item.label }}</span>
   <svg-icon v-if="item?.icon" :name="item.icon" class="bem-Svg"></svg-icon>
+  </tiny-tooltip>
 </span>

46-49: Replace native title with TinyTooltip in dropdown items

For consistency and accessibility, replace title attributes with TinyTooltip in dropdown items as well:

-<span :title="item?.content">
+<tiny-tooltip :content="item?.content">
  <span v-if="item?.label">{{ item.label }}</span>
  <svg-icon v-if="item?.icon" :name="item.icon" class="bem-Svg"></svg-icon>
+</tiny-tooltip>

159-160: Update color variable usage

Replace deprecated color variables with common design system variables:

-background-color: var(--te-common-bg-container);
+background-color: var(--te-common-bg-primary-hover);

-background-color: var(--ti-lowcode-base-gray-101);
+background-color: var(--te-common-bg-emphasis);

-background-color: var(--te-common-bg-prompt);
+background-color: var(--te-common-bg-primary-hover);

Also applies to: 175-175, 211-214, 217-217

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactor-main refactor/develop branch feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants