Skip to content

feat(style): remove deprecated semantic spacing tokens#3320

Merged
rivka-ungar merged 8 commits intovibe4from
breaking-change/remove-deprecated-spacing-tokens
Mar 5, 2026
Merged

feat(style): remove deprecated semantic spacing tokens#3320
rivka-ungar merged 8 commits intovibe4from
breaking-change/remove-deprecated-spacing-tokens

Conversation

@rivka-ungar
Copy link
Copy Markdown
Contributor

@rivka-ungar rivka-ungar commented Mar 5, 2026

User description

Summary

  • Remove 7 deprecated semantic spacing CSS custom properties (--spacing-xs, --spacing-small, --spacing-medium, --spacing-large, --spacing-xl, --spacing-xxl, --spacing-xxxl) from @vibe/style
  • Replace all internal usages (87 files) with numeric spacing tokens (--space-4, --space-8, --space-16, --space-24, --space-32, --space-48, --space-64)
  • Update Flex component to use explicit token map instead of dynamic var(--spacing-${gap}) interpolation
  • Update stylelint config (props-to-allowed-vars.js) to remove old tokens from allowed vars list
  • Keep use-new-spacing-tokens stylelint rule as migration aid for external consumers (auto-fix enabled)

Breaking Changes

Removed Token Replacement
--spacing-xs --space-4
--spacing-small --space-8
--spacing-medium --space-16
--spacing-large --space-24
--spacing-xl --space-32
--spacing-xxl --space-48
--spacing-xxxl --space-64

Migration for Consumers

Run stylelint auto-fix to migrate all usages automatically:

npx stylelint --fix "**/*.scss"

The @vibe/style/use-new-spacing-tokens rule will replace all legacy token references.

Task Link

Monday.com Task

Test Plan

  • Lint passes (0 errors)
  • Build passes across all 20 packages
  • Migration guide updated (VIBE4_MIGRATION_GUIDE.md)
  • Changelog updated (VIBE4_CHANGELOG.md)
  • No remaining old token references in source code (verified via grep)
  • Stylelint migration rule preserved for consumer auto-fix

🤖 Generated with Claude Code


PR Type

Enhancement


Description

  • Remove 7 deprecated semantic spacing tokens from @vibe/style

  • Replace all internal usages across 77+ SCSS files with numeric tokens

  • Update Flex component to use explicit token map instead of dynamic interpolation

  • Update stylelint config and migration documentation for consumers


Diagram Walkthrough

flowchart LR
  A["Deprecated Tokens<br/>--spacing-xs<br/>--spacing-small<br/>--spacing-medium<br/>--spacing-large<br/>--spacing-xl<br/>--spacing-xxl<br/>--spacing-xxxl"] -->|"Replace with"| B["Numeric Tokens<br/>--space-4<br/>--space-8<br/>--space-16<br/>--space-24<br/>--space-32<br/>--space-48<br/>--space-64"]
  A -->|"Remove from"| C["spacing.scss<br/>props-to-allowed-vars.js"]
  B -->|"Update in"| D["77+ SCSS files<br/>Flex component<br/>Test files"]
  E["Stylelint Rule<br/>use-new-spacing-tokens"] -->|"Auto-fix for"| F["External Consumers"]
Loading

File Walkthrough

Relevant files
Breaking change
1 files
spacing.scss
Remove deprecated semantic spacing token definitions         
+0/-7     
Enhancement
1 files
Flex.tsx
Replace dynamic spacing interpolation with explicit token map
+7/-1     
Configuration changes
1 files
props-to-allowed-vars.js
Remove deprecated tokens from stylelint allowed vars list
+2/-17   
Documentation
3 files
parse-monday-css.js
Update example comments to use new numeric tokens               
+3/-3     
VIBE4_CHANGELOG.md
Document spacing token removal and migration path               
+6/-5     
VIBE4_MIGRATION_GUIDE.md
Add comprehensive spacing token migration guide                   
+48/-0   
Tests
1 files
index.test.js
Update stylelint test expectations for single token           
+1/-4     
Bug fix
13 files
BaseInput.module.scss
Replace deprecated spacing tokens with numeric equivalents
+7/-7     
Button.module.scss
Replace deprecated spacing tokens with numeric equivalents
+9/-9     
DialogContentContainer.module.scss
Replace deprecated spacing tokens with numeric equivalents
+3/-3     
_utilities.scss
Update utility spacing variable map with new tokens           
+7/-7     
Tooltip.module.scss
Replace deprecated spacing tokens with numeric equivalents
+2/-2     
Text.module.scss
Replace deprecated spacing tokens with numeric equivalents
+1/-1     
AlertBanner.module.scss
Replace deprecated spacing tokens with numeric equivalents
+1/-1     
AlertBannerButton.module.scss
Replace deprecated spacing tokens with numeric equivalents
+1/-1     
AlertBannerLink.module.scss
Replace deprecated spacing tokens with numeric equivalents
+1/-1     
AlertBannerText.module.scss
Replace deprecated spacing tokens with numeric equivalents
+1/-1     
AvatarGroup.module.scss
Replace deprecated spacing tokens with numeric equivalents
+1/-1     
AvatarGroupCounter.module.scss
Replace deprecated spacing tokens with numeric equivalents
+2/-2     
AvatarGroupCounterTooltipContent.module.scss
Replace deprecated spacing tokens with numeric equivalents
+2/-2     
Additional files
67 files
BaseItem.module.scss +3/-3     
Checkbox.module.scss +1/-1     
Chips.module.scss +4/-4     
ColorPickerClearButton.module.scss +2/-2     
Combobox.module.scss +2/-2     
ComboboxCategory.module.scss +1/-1     
ComboboxItems.module.scss +2/-2     
StickyCategoryHeader.module.scss +1/-1     
Counter.module.scss +3/-3     
DatePicker.module.scss +2/-2     
Divider.module.scss +2/-2     
DropdownBase.module.scss +1/-1     
DropdownBaseList.module.scss +1/-1     
Trigger.module.scss +4/-4     
EditableTypography.module.scss +2/-2     
EmptyState.module.scss +2/-2     
ExpandCollapse.module.scss +3/-3     
FieldLabel.module.scss +2/-2     
Label.module.scss +3/-3     
Link.module.scss +2/-2     
ListItemAvatar.module.scss +1/-1     
ListItemIcon.module.scss +2/-2     
ListTitle.module.scss +1/-1     
MenuDivider.module.scss +1/-1     
BaseMenuItem.module.scss +2/-2     
MenuItemIcon.module.scss +3/-3     
MenuItemSubMenuIcon.module.scss +1/-1     
MenuItemButton.module.scss +1/-1     
MenuTitle.module.scss +4/-4     
MenuButton.module.scss +1/-1     
Modal.module.scss +7/-7     
ModalHeader.module.scss +1/-1     
ModalFooterBase.module.scss +1/-1     
ModalBasicLayout.module.scss +3/-3     
ModalMediaLayout.module.scss +2/-2     
ModalSideBySideLayout.module.scss +2/-2     
MultiStepIndicator.module.scss +2/-2     
StepIndicator.module.scss +3/-3     
PercentageLabel.module.scss +1/-1     
ProgressBar.module.scss +1/-1     
Search.module.scss +1/-1     
SelectionIndicator.module.scss +1/-1     
SliderBase.module.scss +1/-1     
SliderInfix.module.scss +2/-2     
Steps.module.scss +2/-2     
StepsGalleryHeader.module.scss +2/-2     
StepsHeader.module.scss +1/-1     
StepsNumbersHeader.module.scss +1/-1     
TableCellSkeleton.module.scss +2/-2     
TableHeaderCell.module.scss +4/-4     
TableRowMenu.module.scss +3/-3     
Tab.module.scss +2/-2     
TextArea.module.scss +3/-3     
TextField.module.scss +8/-8     
Tipseen.module.scss +5/-5     
TipseenBasicContent.module.scss +1/-1     
TipseenContent.module.scss +1/-1     
TipseenTitle.module.scss +2/-2     
Toast.module.scss +5/-5     
MockToggle.module.scss +1/-1     
ListTitle.module.scss +3/-3     
withGlobalStyle.module.scss +1/-1     
dialog-description.module.scss +1/-1     
Chips.stories.tsx +3/-3     
Heading.stories.tsx +1/-1     
example-table.module.scss +2/-2     
playground-helpers.ts +2/-2     

Remove legacy spacing CSS custom properties (--spacing-xs, --spacing-small,
--spacing-medium, --spacing-large, --spacing-xl, --spacing-xxl, --spacing-xxxl)
from @vibe/style and replace all internal usages with numeric spacing tokens
(--space-4, --space-8, --space-16, --space-24, --space-32, --space-48, --space-64).

- Remove 7 deprecated token definitions from spacing.scss
- Update 77 SCSS files across core, components, base, and docs packages
- Update Flex component to use token map instead of dynamic interpolation
- Update stylelint config to remove old tokens from allowed vars
- Update VIBE4_CHANGELOG.md and VIBE4_MIGRATION_GUIDE.md
- Keep use-new-spacing-tokens stylelint rule as migration aid for consumers

BREAKING CHANGE: Semantic spacing tokens (--spacing-xs, --spacing-small,
--spacing-medium, --spacing-large, --spacing-xl, --spacing-xxl, --spacing-xxxl)
have been removed. Use numeric spacing tokens instead. Run
`npx stylelint --fix "**/*.scss"` with @vibe/style/use-new-spacing-tokens
rule enabled to auto-fix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@rivka-ungar rivka-ungar requested a review from a team as a code owner March 5, 2026 13:27
@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

Review Summary by Qodo

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Remove 7 deprecated semantic spacing tokens from @vibe/style
• Replace all internal usages across 77+ SCSS files with numeric tokens
• Update Flex component to use explicit token map instead of interpolation
• Update stylelint config and migration documentation for consumers

Grey Divider

File Changes

1. packages/style/src/spacing.scss Breaking change +0/-7

Remove deprecated semantic spacing token definitions

packages/style/src/spacing.scss


2. packages/components/layout/src/Flex/Flex.tsx ✨ Enhancement +7/-1

Replace dynamic spacing interpolation with explicit token map

packages/components/layout/src/Flex/Flex.tsx


3. packages/style/stylelint-config/rules/use-defined-css-var-when-available/props-to-allowed-vars.js ⚙️ Configuration changes +1/-8

Remove old tokens from stylelint allowed vars list

packages/style/stylelint-config/rules/use-defined-css-var-when-available/props-to-allowed-vars.js


View more (85)
4. packages/style/stylelint-config/rules/use-defined-css-var-when-available/parse-monday-css.js 📝 Documentation +3/-3

Update example comments to reference new numeric tokens

packages/style/stylelint-config/rules/use-defined-css-var-when-available/parse-monday-css.js


5. packages/style/stylelint-config/rules/use-defined-css-var-when-available/__tests__/index.test.js 🧪 Tests +1/-2

Update test expectations for new spacing tokens

packages/style/stylelint-config/rules/use-defined-css-var-when-available/tests/index.test.js


6. packages/base/src/BaseInput/BaseInput.module.scss 🐞 Bug fix +5/-5

Replace deprecated spacing tokens with numeric equivalents

packages/base/src/BaseInput/BaseInput.module.scss


7. packages/components/button/src/Button/Button.module.scss 🐞 Bug fix +9/-9

Replace deprecated spacing tokens with numeric equivalents

packages/components/button/src/Button/Button.module.scss


8. packages/components/dialog/src/DialogContentContainer/DialogContentContainer.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/components/dialog/src/DialogContentContainer/DialogContentContainer.module.scss


9. packages/components/layout/src/Box/_utilities.scss 🐞 Bug fix +7/-7

Update utility spacing vars map with new numeric tokens

packages/components/layout/src/Box/_utilities.scss


10. packages/components/tooltip/src/Tooltip/Tooltip.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/components/tooltip/src/Tooltip/Tooltip.module.scss


11. packages/components/typography/src/Text/Text.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/components/typography/src/Text/Text.module.scss


12. packages/core/src/components/AlertBanner/AlertBanner.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/AlertBanner/AlertBanner.module.scss


13. packages/core/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.module.scss


14. packages/core/src/components/AlertBanner/AlertBannerLink/AlertBannerLink.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/AlertBanner/AlertBannerLink/AlertBannerLink.module.scss


15. packages/core/src/components/AlertBanner/AlertBannerText/AlertBannerText.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/AlertBanner/AlertBannerText/AlertBannerText.module.scss


16. packages/core/src/components/AvatarGroup/AvatarGroup.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/AvatarGroup/AvatarGroup.module.scss


17. packages/core/src/components/AvatarGroup/AvatarGroupCounter.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/AvatarGroup/AvatarGroupCounter.module.scss


18. packages/core/src/components/AvatarGroup/AvatarGroupCounterTooltipContent.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/AvatarGroup/AvatarGroupCounterTooltipContent.module.scss


19. packages/core/src/components/BaseItem/BaseItem.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/BaseItem/BaseItem.module.scss


20. packages/core/src/components/Checkbox/Checkbox.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Checkbox/Checkbox.module.scss


21. packages/core/src/components/Chips/Chips.module.scss 🐞 Bug fix +4/-4

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Chips/Chips.module.scss


22. packages/core/src/components/ColorPicker/components/ColorPickerContent/ColorPickerClearButton.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/ColorPicker/components/ColorPickerContent/ColorPickerClearButton.module.scss


23. packages/core/src/components/Combobox/Combobox.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Combobox/Combobox.module.scss


24. packages/core/src/components/Combobox/components/ComboboxCategory/ComboboxCategory.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Combobox/components/ComboboxCategory/ComboboxCategory.module.scss


25. packages/core/src/components/Combobox/components/ComboboxItems/ComboboxItems.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Combobox/components/ComboboxItems/ComboboxItems.module.scss


26. packages/core/src/components/Combobox/components/StickyCategoryHeader/StickyCategoryHeader.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Combobox/components/StickyCategoryHeader/StickyCategoryHeader.module.scss


27. packages/core/src/components/Counter/Counter.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Counter/Counter.module.scss


28. packages/core/src/components/DatePicker/DatePicker.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/DatePicker/DatePicker.module.scss


29. packages/core/src/components/Divider/Divider.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Divider/Divider.module.scss


30. packages/core/src/components/Dropdown/components/DropdownBase/DropdownBase.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Dropdown/components/DropdownBase/DropdownBase.module.scss


31. packages/core/src/components/Dropdown/components/DropdownBaseList/DropdownBaseList.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Dropdown/components/DropdownBaseList/DropdownBaseList.module.scss


32. packages/core/src/components/Dropdown/components/Trigger/Trigger.module.scss 🐞 Bug fix +6/-6

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Dropdown/components/Trigger/Trigger.module.scss


33. packages/core/src/components/EditableTypography/EditableTypography.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/EditableTypography/EditableTypography.module.scss


34. packages/core/src/components/EmptyState/EmptyState.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/EmptyState/EmptyState.module.scss


35. packages/core/src/components/ExpandCollapse/ExpandCollapse.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/ExpandCollapse/ExpandCollapse.module.scss


36. packages/core/src/components/FieldLabel/FieldLabel.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/FieldLabel/FieldLabel.module.scss


37. packages/core/src/components/Label/Label.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Label/Label.module.scss


38. packages/core/src/components/Link/Link.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Link/Link.module.scss


39. packages/core/src/components/ListItemAvatar/ListItemAvatar.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/ListItemAvatar/ListItemAvatar.module.scss


40. packages/core/src/components/ListItemIcon/ListItemIcon.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/ListItemIcon/ListItemIcon.module.scss


41. packages/core/src/components/ListTitle/ListTitle.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/ListTitle/ListTitle.module.scss


42. packages/core/src/components/Menu/MenuDivider/MenuDivider.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Menu/MenuDivider/MenuDivider.module.scss


43. packages/core/src/components/Menu/MenuItem/components/BaseMenuItem/BaseMenuItem.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Menu/MenuItem/components/BaseMenuItem/BaseMenuItem.module.scss


44. packages/core/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.module.scss


45. packages/core/src/components/Menu/MenuItem/components/MenuItemSubMenuIcon/MenuItemSubMenuIcon.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Menu/MenuItem/components/MenuItemSubMenuIcon/MenuItemSubMenuIcon.module.scss


46. packages/core/src/components/Menu/MenuItemButton/MenuItemButton.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Menu/MenuItemButton/MenuItemButton.module.scss


47. packages/core/src/components/Menu/MenuTitle/MenuTitle.module.scss 🐞 Bug fix +4/-4

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Menu/MenuTitle/MenuTitle.module.scss


48. packages/core/src/components/MenuButton/MenuButton.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/MenuButton/MenuButton.module.scss


49. packages/core/src/components/Modal/Modal/Modal.module.scss 🐞 Bug fix +7/-7

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Modal/Modal/Modal.module.scss


50. packages/core/src/components/Modal/ModalHeader/ModalHeader.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Modal/ModalHeader/ModalHeader.module.scss


51. packages/core/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.module.scss


52. packages/core/src/components/Modal/layouts/ModalBasicLayout/ModalBasicLayout.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Modal/layouts/ModalBasicLayout/ModalBasicLayout.module.scss


53. packages/core/src/components/Modal/layouts/ModalMediaLayout/ModalMediaLayout.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Modal/layouts/ModalMediaLayout/ModalMediaLayout.module.scss


54. packages/core/src/components/Modal/layouts/ModalSideBySideLayout/ModalSideBySideLayout.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Modal/layouts/ModalSideBySideLayout/ModalSideBySideLayout.module.scss


55. packages/core/src/components/MultiStepIndicator/MultiStepIndicator.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/MultiStepIndicator/MultiStepIndicator.module.scss


56. packages/core/src/components/MultiStepIndicator/components/StepIndicator/StepIndicator.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/MultiStepIndicator/components/StepIndicator/StepIndicator.module.scss


57. packages/core/src/components/ProgressBars/PercentageLabel/PercentageLabel.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/ProgressBars/PercentageLabel/PercentageLabel.module.scss


58. packages/core/src/components/ProgressBars/ProgressBar/ProgressBar.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/ProgressBars/ProgressBar/ProgressBar.module.scss


59. packages/core/src/components/Search/Search.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Search/Search.module.scss


60. packages/core/src/components/Slider/SelectionIndicator.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Slider/SelectionIndicator.module.scss


61. packages/core/src/components/Slider/SliderBase/SliderBase.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Slider/SliderBase/SliderBase.module.scss


62. packages/core/src/components/Slider/SliderInfix.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Slider/SliderInfix.module.scss


63. packages/core/src/components/Steps/Steps.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Steps/Steps.module.scss


64. packages/core/src/components/Steps/StepsGalleryHeader.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Steps/StepsGalleryHeader.module.scss


65. packages/core/src/components/Steps/StepsHeader.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Steps/StepsHeader.module.scss


66. packages/core/src/components/Steps/StepsNumbersHeader.module.scss 🐞 Bug fix +1/-1

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Steps/StepsNumbersHeader.module.scss


67. packages/core/src/components/Table/TableCellSkeleton/TableCellSkeleton.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Table/TableCellSkeleton/TableCellSkeleton.module.scss


68. packages/core/src/components/Table/TableHeaderCell/TableHeaderCell.module.scss 🐞 Bug fix +4/-4

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Table/TableHeaderCell/TableHeaderCell.module.scss


69. packages/core/src/components/Table/TableRowMenu/TableRowMenu.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Table/TableRowMenu/TableRowMenu.module.scss


70. packages/core/src/components/Tabs/Tab/Tab.module.scss 🐞 Bug fix +2/-2

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/Tabs/Tab/Tab.module.scss


71. packages/core/src/components/TextArea/TextArea.module.scss 🐞 Bug fix +3/-3

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/TextArea/TextArea.module.scss


72. packages/core/src/components/TextField/TextField.module.scss 🐞 Bug fix +7/-7

Replace deprecated spacing tokens with numeric equivalents

packages/core/src/components/TextField/TextField.module.scss


73. packages/core/src/components/Tipseen/ 📦 Other +0/-0

packages/core/src/components/Tipseen/


74. VIBE4_CHANGELOG.md Additional files +6/-5

...

VIBE4_CHANGELOG.md


75. VIBE4_MIGRATION_GUIDE.md Additional files +48/-0

...

VIBE4_MIGRATION_GUIDE.md


76. packages/core/src/components/Tipseen/Tipseen.module.scss Additional files +5/-5

...

packages/core/src/components/Tipseen/Tipseen.module.scss


77. packages/core/src/components/Tipseen/TipseenBasicContent.module.scss Additional files +1/-1

...

packages/core/src/components/Tipseen/TipseenBasicContent.module.scss


78. packages/core/src/components/Tipseen/TipseenContent.module.scss Additional files +1/-1

...

packages/core/src/components/Tipseen/TipseenContent.module.scss


79. packages/core/src/components/Tipseen/TipseenTitle.module.scss Additional files +2/-2

...

packages/core/src/components/Tipseen/TipseenTitle.module.scss


80. packages/core/src/components/Toast/Toast.module.scss Additional files +5/-5

...

packages/core/src/components/Toast/Toast.module.scss


81. packages/core/src/components/Toggle/MockToggle.module.scss Additional files +1/-1

...

packages/core/src/components/Toggle/MockToggle.module.scss


82. packages/core/src/components/next/List/ListTitle/ListTitle.module.scss Additional files +3/-3

...

packages/core/src/components/next/List/ListTitle/ListTitle.module.scss


83. packages/docs/src/decorators/withGlobalStyle/withGlobalStyle.module.scss Additional files +1/-1

...

packages/docs/src/decorators/withGlobalStyle/withGlobalStyle.module.scss


84. packages/docs/src/layout/related-components/descriptions/dialog-description/dialog-description.module.scss Additional files +1/-1

...

packages/docs/src/layout/related-components/descriptions/dialog-description/dialog-description.module.scss


85. packages/docs/src/pages/components/Chips/Chips.stories.tsx Additional files +3/-3

...

packages/docs/src/pages/components/Chips/Chips.stories.tsx


86. packages/docs/src/pages/components/Heading/Heading.stories.tsx Additional files +1/-1

...

packages/docs/src/pages/components/Heading/Heading.stories.tsx


87. packages/docs/src/pages/foundations/typography/examples-table/example-table.module.scss Additional files +2/-2

...

packages/docs/src/pages/foundations/typography/examples-table/example-table.module.scss


88. packages/docs/src/pages/playground/playground-helpers.ts Additional files +2/-2

...

packages/docs/src/pages/playground/playground-helpers.ts


Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

qodo-free-for-open-source-projects bot commented Mar 5, 2026

Code Review by Qodo

🐞 Bugs (11) 📘 Rule violations (12) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Docs reference removed spacing vars 🐞 Bug ✓ Correctness
Description
After removing --spacing-* tokens from @vibe/style, the v4 changelog/migration guide still
describe the “Input Padding” change using var(--spacing-medium)/var(--spacing-small), which are
no longer defined. Consumers may copy these snippets and end up with broken/ineffective CSS
variables.
Code

VIBE4_CHANGELOG.md[R528-534]

+#### Design Tokens — Spacing
-- **Change**: TBD
-- **Reason**: TBD
-- **Migration**: TBD
-- **Codemod**: ❌ Manual
+- [x] **Status**: Complete
+- **Change**: Removed deprecated semantic spacing CSS custom properties (`--spacing-xs`, `--spacing-small`, `--spacing-medium`, `--spacing-large`, `--spacing-xl`, `--spacing-xxl`, `--spacing-xxxl`) from `@vibe/style`. All internal usages replaced with numeric spacing tokens (`--space-4`, `--space-8`, `--space-16`, `--space-24`, `--space-32`, `--space-48`, `--space-64`).
+- **Reason**: The numeric naming convention is more scalable, unambiguous, and consistent with modern design token practices. The semantic names (`small`, `medium`, `large`) don't scale beyond `xxxl` and create ambiguity about exact values.
+- **Migration**: Replace all usages of old spacing tokens with their numeric equivalents. Run `npx stylelint --fix "**/*.scss"` with `@vibe/style/use-new-spacing-tokens` rule enabled to auto-fix.
+- **Codemod**: ✅ Stylelint auto-fix via `@vibe/style/use-new-spacing-tokens` rule
Evidence
The PR removes the legacy --spacing-* definitions from the global spacing tokens, but the v4
“Input Padding” documentation still instructs using those removed tokens in prose and code blocks,
making the docs inaccurate post-change.

packages/style/src/spacing.scss[1-14]
VIBE4_CHANGELOG.md[508-513]
VIBE4_MIGRATION_GUIDE.md[536-572]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR removes legacy semantic spacing CSS vars (`--spacing-*`), but some v4 documentation sections still reference those removed tokens (notably the “Input Padding” change). This makes the migration guidance inaccurate post-change.
### Issue Context
Consumers rely on VIBE4_CHANGELOG.md and VIBE4_MIGRATION_GUIDE.md for copy/paste-ready examples. After removing the token definitions, any remaining references to `--spacing-small`/`--spacing-medium` will not resolve.
### Fix Focus Areas
- VIBE4_CHANGELOG.md[508-513]
- VIBE4_MIGRATION_GUIDE.md[536-572]
- packages/style/src/spacing.scss[1-14]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Docs reference removed spacing vars 🐞 Bug ✓ Correctness
Description
After removing --spacing-* tokens from @vibe/style, the v4 changelog/migration guide still
describe the “Input Padding” change using var(--spacing-medium)/var(--spacing-small), which are
no longer defined. Consumers may copy these snippets and end up with broken/ineffective CSS
variables.
Code

VIBE4_CHANGELOG.md[R528-534]

+#### Design Tokens — Spacing
-- **Change**: TBD
-- **Reason**: TBD
-- **Migration**: TBD
-- **Codemod**: ❌ Manual
+- [x] **Status**: Complete
+- **Change**: Removed deprecated semantic spacing CSS custom properties (`--spacing-xs`, `--spacing-small`, `--spacing-medium`, `--spacing-large`, `--spacing-xl`, `--spacing-xxl`, `--spacing-xxxl`) from `@vibe/style`. All internal usages replaced with numeric spacing tokens (`--space-4`, `--space-8`, `--space-16`, `--space-24`, `--space-32`, `--space-48`, `--space-64`).
+- **Reason**: The numeric naming convention is more scalable, unambiguous, and consistent with modern design token practices. The semantic names (`small`, `medium`, `large`) don't scale beyond `xxxl` and create ambiguity about exact values.
+- **Migration**: Replace all usages of old spacing tokens with their numeric equivalents. Run `npx stylelint --fix "**/*.scss"` with `@vibe/style/use-new-spacing-tokens` rule enabled to auto-fix.
+- **Codemod**: ✅ Stylelint auto-fix via `@vibe/style/use-new-spacing-tokens` rule
Evidence
The PR removes the legacy --spacing-* definitions from the global spacing tokens, but the v4
“Input Padding” documentation still instructs using those removed tokens in prose and code blocks,
making the docs inaccurate post-change.

packages/style/src/spacing.scss[1-14]
VIBE4_CHANGELOG.md[508-513]
VIBE4_MIGRATION_GUIDE.md[536-572]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR removes legacy semantic spacing CSS vars (`--spacing-*`), but some v4 documentation sections still reference those removed tokens (notably the “Input Padding” change). This makes the migration guidance inaccurate post-change.
### Issue Context
Consumers rely on VIBE4_CHANGELOG.md and VIBE4_MIGRATION_GUIDE.md for copy/paste-ready examples. After removing the token definitions, any remaining references to `--spacing-small`/`--spacing-medium` will not resolve.
### Fix Focus Areas
- VIBE4_CHANGELOG.md[508-513]
- VIBE4_MIGRATION_GUIDE.md[536-572]
- packages/style/src/spacing.scss[1-14]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Hardcoded 12px in ListTitle 📘 Rule violation ✓ Correctness
Description
next/ListTitle.module.scss uses hardcoded 12px values where an equivalent spacing token exists
(--space-12). This violates the SCSS module design token requirement.
Code

packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[R14-18]

+  padding: var(--space-16) 12px var(--space-8);
}
.large {
-  padding: var(--spacing-medium) 12px var(--spacing-small);
+  padding: var(--space-16) 12px var(--space-8);
Evidence
Compliance rule 3 requires using design tokens. The modified lines include 12px even though
--space-12 is defined as 12px.

CLAUDE.md
packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]
packages/style/src/spacing.scss[1-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
SCSS module styling uses hardcoded `12px` spacing values even though an equivalent design token (`--space-12`) exists.
## Issue Context
Rule 3 requires SCSS modules to use design tokens instead of hardcoded values where applicable.
## Fix Focus Areas
- packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (6)
4. Hardcoded 12px in ListTitle 📘 Rule violation ✓ Correctness
Description
next/ListTitle.module.scss uses hardcoded 12px values where an equivalent spacing token exists
(--space-12). This violates the SCSS module design token requirement.
Code

packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[R14-18]

+  padding: var(--space-16) 12px var(--space-8);
}
.large {
-  padding: var(--spacing-medium) 12px var(--spacing-small);
+  padding: var(--space-16) 12px var(--space-8);
Evidence
Compliance rule 3 requires using design tokens. The modified lines include 12px even though
--space-12 is defined as 12px.

CLAUDE.md
packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]
packages/style/src/spacing.scss[1-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
SCSS module styling uses hardcoded `12px` spacing values even though an equivalent design token (`--space-12`) exists.
## Issue Context
Rule 3 requires SCSS modules to use design tokens instead of hardcoded values where applicable.
## Fix Focus Areas
- packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Hardcoded 12px in ListTitle 📘 Rule violation ✓ Correctness
Description
next/ListTitle.module.scss uses hardcoded 12px values where an equivalent spacing token exists
(--space-12). This violates the SCSS module design token requirement.
Code

packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[R14-18]

+  padding: var(--space-16) 12px var(--space-8);
}
.large {
-  padding: var(--spacing-medium) 12px var(--spacing-small);
+  padding: var(--space-16) 12px var(--space-8);
Evidence
Compliance rule 3 requires using design tokens. The modified lines include 12px even though
--space-12 is defined as 12px.

CLAUDE.md
packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]
packages/style/src/spacing.scss[1-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
SCSS module styling uses hardcoded `12px` spacing values even though an equivalent design token (`--space-12`) exists.
## Issue Context
Rule 3 requires SCSS modules to use design tokens instead of hardcoded values where applicable.
## Fix Focus Areas
- packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Hardcoded 12px in ListTitle 📘 Rule violation ✓ Correctness
Description
next/ListTitle.module.scss uses hardcoded 12px values where an equivalent spacing token exists
(--space-12). This violates the SCSS module design token requirement.
Code

packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[R14-18]

+  padding: var(--space-16) 12px var(--space-8);
}
.large {
-  padding: var(--spacing-medium) 12px var(--spacing-small);
+  padding: var(--space-16) 12px var(--space-8);
Evidence
Compliance rule 3 requires using design tokens. The modified lines include 12px even though
--space-12 is defined as 12px.

CLAUDE.md
packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]
packages/style/src/spacing.scss[1-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
SCSS module styling uses hardcoded `12px` spacing values even though an equivalent design token (`--space-12`) exists.
## Issue Context
Rule 3 requires SCSS modules to use design tokens instead of hardcoded values where applicable.
## Fix Focus Areas
- packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


7. Hardcoded 12px in ListTitle 📘 Rule violation ✓ Correctness
Description
next/ListTitle.module.scss uses hardcoded 12px values where an equivalent spacing token exists
(--space-12). This violates the SCSS module design token requirement.
Code

packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[R14-18]

+  padding: var(--space-16) 12px var(--space-8);
}
.large {
-  padding: var(--spacing-medium) 12px var(--spacing-small);
+  padding: var(--space-16) 12px var(--space-8);
Evidence
Compliance rule 3 requires using design tokens. The modified lines include 12px even though
--space-12 is defined as 12px.

CLAUDE.md
packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]
packages/style/src/spacing.scss[1-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
SCSS module styling uses hardcoded `12px` spacing values even though an equivalent design token (`--space-12`) exists.
## Issue Context
Rule 3 requires SCSS modules to use design tokens instead of hardcoded values where applicable.
## Fix Focus Areas
- packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


8. Hardcoded 12px in ListTitle 📘 Rule violation ✓ Correctness
Description
next/ListTitle.module.scss uses hardcoded 12px values where an equivalent spacing token exists
(--space-12). This violates the SCSS module design token requirement.
Code

packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[R14-18]

+  padding: var(--space-16) 12px var(--space-8);
}
.large {
-  padding: var(--spacing-medium) 12px var(--spacing-small);
+  padding: var(--space-16) 12px var(--space-8);
Evidence
Compliance rule 3 requires using design tokens. The modified lines include 12px even though
--space-12 is defined as 12px.

CLAUDE.md
packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]
packages/style/src/spacing.scss[1-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
SCSS module styling uses hardcoded `12px` spacing values even though an equivalent design token (`--space-12`) exists.
## Issue Context
Rule 3 requires SCSS modules to use design tokens instead of hardcoded values where applicable.
## Fix Focus Areas
- packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


9. Hardcoded 12px in ListTitle 📘 Rule violation ✓ Correctness
Description
next/ListTitle.module.scss uses hardcoded 12px values where an equivalent spacing token exists
(--space-12). This violates the SCSS module design token requirement.
Code

packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[R14-18]

+  padding: var(--space-16) 12px var(--space-8);
}
.large {
-  padding: var(--spacing-medium) 12px var(--spacing-small);
+  padding: var(--space-16) 12px var(--space-8);
Evidence
Compliance rule 3 requires using design tokens. The modified lines include 12px even though
--space-12 is defined as 12px.

CLAUDE.md
packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]
packages/style/src/spacing.scss[1-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
SCSS module styling uses hardcoded `12px` spacing values even though an equivalent design token (`--space-12`) exists.
## Issue Context
Rule 3 requires SCSS modules to use design tokens instead of hardcoded values where applicable.
## Fix Focus Areas
- packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

10. Flex gap map unguarded 🐞 Bug ⛯ Reliability
Description
Flex now maps string gap values via a local token map and returns { gap: gapTokenMap[gap] }.
If a runtime consumer passes an unexpected string, the lookup returns undefined and the component
silently renders with no gap (layout regression with no signal).
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
The new implementation does an unguarded map lookup (gapTokenMap[gap]) with a map typed as
Record, so it provides no exhaustiveness guarantees if FlexGap changes and no runtime protection
if a non-typed consumer passes an unexpected string.

packages/components/layout/src/Flex/Flex.tsx[94-108]
packages/components/layout/src/Flex/Flex.types.ts[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Flex` uses `gapTokenMap[gap]` without a fallback/guard. For non-TS (or dynamically typed) consumers, an invalid string value will silently result in `gap: undefined` and the layout will lose spacing.
### Issue Context
`FlexGap` is a fixed union today, but the map is typed as `Record&amp;amp;amp;lt;string, string&amp;amp;amp;gt;` and the lookup is unguarded.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[94-108]
- packages/components/layout/src/Flex/Flex.types.ts[1-8]
### Suggested change
- Change `gapTokenMap` typing to `Record&amp;amp;amp;lt;FlexGap, string&amp;amp;amp;gt;` (ensures compile-time coverage).
- Add a runtime guard:
- If `typeof gap === &amp;amp;amp;quot;string&amp;amp;amp;quot;` and `gapTokenMap[gap as FlexGap]` is missing, return `{}` (or `undefined`) and optionally `console.warn` in non-production builds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


11. Flex gap map type-safety 🐞 Bug ⛯ Reliability
Description
Flex now uses a hardcoded gapTokenMap, but it is typed as Record, so future changes to the
FlexGap union won’t force map updates at compile time. This can lead to silent missing gaps (e.g.,
gap: undefined) if new gap sizes are added later.
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
FlexGap is a narrow union, but the new map is typed broadly (Record). This removes
exhaustiveness checking between FlexGap and the token map, making it easier to introduce a runtime
layout regression when extending gap options.

packages/components/layout/src/Flex/Flex.types.ts[7-8]
packages/components/layout/src/Flex/Flex.tsx[101-107]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`gapTokenMap` is typed as `Record&amp;amp;lt;string, string&amp;amp;gt;`, which prevents TypeScript from enforcing that the mapping stays in sync with the `FlexGap` union. If `FlexGap` is extended in the future, the map could be left incomplete and cause missing `gap` styling at runtime.
### Issue Context
The map-based approach is good, but it should be declared as exhaustive over `FlexGap` and defensively handle unexpected values.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[101-107]
- packages/components/layout/src/Flex/Flex.types.ts[7-8]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


12. Flex gap map unguarded 🐞 Bug ⛯ Reliability
Description
Flex now maps string gap values via a local token map and returns { gap: gapTokenMap[gap] }.
If a runtime consumer passes an unexpected string, the lookup returns undefined and the component
silently renders with no gap (layout regression with no signal).
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
The new implementation does an unguarded map lookup (gapTokenMap[gap]) with a map typed as
Record, so it provides no exhaustiveness guarantees if FlexGap changes and no runtime protection
if a non-typed consumer passes an unexpected string.

packages/components/layout/src/Flex/Flex.tsx[94-108]
packages/components/layout/src/Flex/Flex.types.ts[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Flex` uses `gapTokenMap[gap]` without a fallback/guard. For non-TS (or dynamically typed) consumers, an invalid string value will silently result in `gap: undefined` and the layout will lose spacing.
### Issue Context
`FlexGap` is a fixed union today, but the map is typed as `Record&amp;amp;amp;amp;lt;string, string&amp;amp;amp;amp;gt;` and the lookup is unguarded.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[94-108]
- packages/components/layout/src/Flex/Flex.types.ts[1-8]
### Suggested change
- Change `gapTokenMap` typing to `Record&amp;amp;amp;amp;lt;FlexGap, string&amp;amp;amp;amp;gt;` (ensures compile-time coverage).
- Add a runtime guard:
- If `typeof gap === &amp;amp;amp;amp;quot;string&amp;amp;amp;amp;quot;` and `gapTokenMap[gap as FlexGap]` is missing, return `{}` (or `undefined`) and optionally `console.warn` in non-production builds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (11)
13. Button uses 2px padding 📘 Rule violation ✓ Correctness
Description
Button styles use a literal 2px value where an equivalent spacing design token exists
(--space-2). This reduces consistency and makes theme/token-based refactors harder.
Code

packages/components/button/src/Button/Button.module.scss[91]

+  padding: 2px var(--space-4);
Evidence
PR Compliance ID 5 requires using design tokens where applicable; --space-2 is defined, but the
updated Button padding still uses a raw 2px value.

CLAUDE.md
packages/components/button/src/Button/Button.module.scss[91-91]
packages/style/src/spacing.scss[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Button styles use a raw `2px` value even though `--space-2` exists.
## Issue Context
We want all spacing values to use design tokens when available to keep styling consistent and theme-friendly.
## Fix Focus Areas
- packages/components/button/src/Button/Button.module.scss[91-91]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


14. Flex gap map unguarded 🐞 Bug ⛯ Reliability
Description
Flex now maps string gap values via a local token map and returns { gap: gapTokenMap[gap] }.
If a runtime consumer passes an unexpected string, the lookup returns undefined and the component
silently renders with no gap (layout regression with no signal).
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
The new implementation does an unguarded map lookup (gapTokenMap[gap]) with a map typed as
Record, so it provides no exhaustiveness guarantees if FlexGap changes and no runtime protection
if a non-typed consumer passes an unexpected string.

packages/components/layout/src/Flex/Flex.tsx[94-108]
packages/components/layout/src/Flex/Flex.types.ts[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Flex` uses `gapTokenMap[gap]` without a fallback/guard. For non-TS (or dynamically typed) consumers, an invalid string value will silently result in `gap: undefined` and the layout will lose spacing.
### Issue Context
`FlexGap` is a fixed union today, but the map is typed as `Record&amp;amp;amp;lt;string, string&amp;amp;amp;gt;` and the lookup is unguarded.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[94-108]
- packages/components/layout/src/Flex/Flex.types.ts[1-8]
### Suggested change
- Change `gapTokenMap` typing to `Record&amp;amp;amp;lt;FlexGap, string&amp;amp;amp;gt;` (ensures compile-time coverage).
- Add a runtime guard:
- If `typeof gap === &amp;amp;amp;quot;string&amp;amp;amp;quot;` and `gapTokenMap[gap as FlexGap]` is missing, return `{}` (or `undefined`) and optionally `console.warn` in non-production builds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


15. Button uses 12px padding 📘 Rule violation ✓ Correctness
Description
Button styles use a literal 12px value where an equivalent spacing design token exists
(--space-12). This reduces consistency and makes theme/token-based refactors harder.
Code

packages/components/button/src/Button/Button.module.scss[126]

+  padding: 12px var(--space-24);
Evidence
PR Compliance ID 5 requires using design tokens where applicable; --space-12 is defined, but the
updated Button padding still uses a raw 12px value.

CLAUDE.md
packages/components/button/src/Button/Button.module.scss[126-126]
packages/style/src/spacing.scss[4-6]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Button styles use a raw `12px` value even though `--space-12` exists.
## Issue Context
We want all spacing values to use design tokens when available to keep styling consistent and theme-friendly.
## Fix Focus Areas
- packages/components/button/src/Button/Button.module.scss[126-126]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


16. Label uses 2px padding 📘 Rule violation ✓ Correctness
Description
Label styles use a literal 2px value where an equivalent spacing design token exists
(--space-2). This reduces consistency and makes theme/token-based refactors harder.
Code

packages/core/src/components/Label/Label.module.scss[20]

+  padding: 2px var(--space-8);
Evidence
PR Compliance ID 5 requires using design tokens where applicable; --space-2 is defined, but the
updated Label padding still uses a raw 2px value.

CLAUDE.md
packages/core/src/components/Label/Label.module.scss[20-20]
packages/style/src/spacing.scss[1-4]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Label styles use a raw `2px` value even though `--space-2` exists.
## Issue Context
We want all spacing values to use design tokens when available to keep styling consistent and theme-friendly.
## Fix Focus Areas
- packages/core/src/components/Label/Label.module.scss[20-20]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


17. ModalFooterBase uses 20px 📘 Rule violation ✓ Correctness
Description
Modal footer styles use a literal 20px value where an equivalent spacing design token exists
(--space-20). This reduces consistency and makes theme/token-based refactors harder.
Code

packages/core/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.module.scss[4]

+  padding: 20px var(--space-24);
Evidence
PR Compliance ID 5 requires using design tokens where applicable; --space-20 is defined, but the
updated footer padding still uses a raw 20px value.

CLAUDE.md
packages/core/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.module.scss[4-4]
packages/style/src/spacing.scss[6-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Modal footer styles use a raw `20px` value even though `--space-20` exists.
## Issue Context
We want all spacing values to use design tokens when available to keep styling consistent and theme-friendly.
## Fix Focus Areas
- packages/core/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.module.scss[4-4]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


18. Tipseen uses 20px padding 📘 Rule violation ✓ Correctness
Description
Tipseen padding uses literal 20px values where an equivalent spacing design token exists
(--space-20). This reduces consistency and makes theme/token-based refactors harder.
Code

packages/core/src/components/Tipseen/TipseenBasicContent.module.scss[2]

+  padding: var(--space-16) 20px var(--space-24) 20px;
Evidence
PR Compliance ID 5 requires using design tokens where applicable; --space-20 is defined, but the
updated Tipseen padding shorthand still includes raw 20px values.

CLAUDE.md
packages/core/src/components/Tipseen/TipseenBasicContent.module.scss[2-2]
packages/style/src/spacing.scss[6-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Tipseen padding uses raw `20px` values even though `--space-20` exists.
## Issue Context
We want all spacing values to use design tokens when available to keep styling consistent and theme-friendly.
## Fix Focus Areas
- packages/core/src/components/Tipseen/TipseenBasicContent.module.scss[2-2]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


19. Flex gap map unguarded 🐞 Bug ⛯ Reliability
Description
Flex now maps string gap values via a local token map and returns { gap: gapTokenMap[gap] }.
If a runtime consumer passes an unexpected string, the lookup returns undefined and the component
silently renders with no gap (layout regression with no signal).
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
The new implementation does an unguarded map lookup (gapTokenMap[gap]) with a map typed as
Record, so it provides no exhaustiveness guarantees if FlexGap changes and no runtime protection
if a non-typed consumer passes an unexpected string.

packages/components/layout/src/Flex/Flex.tsx[94-108]
packages/components/layout/src/Flex/Flex.types.ts[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Flex` uses `gapTokenMap[gap]` without a fallback/guard. For non-TS (or dynamically typed) consumers, an invalid string value will silently result in `gap: undefined` and the layout will lose spacing.
### Issue Context
`FlexGap` is a fixed union today, but the map is typed as `Record&amp;amp;amp;amp;lt;string, string&amp;amp;amp;amp;gt;` and the lookup is unguarded.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[94-108]
- packages/components/layout/src/Flex/Flex.types.ts[1-8]
### Suggested change
- Change `gapTokenMap` typing to `Record&amp;amp;amp;amp;lt;FlexGap, string&amp;amp;amp;amp;gt;` (ensures compile-time coverage).
- Add a runtime guard:
- If `typeof gap === &amp;amp;amp;amp;quot;string&amp;amp;amp;amp;quot;` and `gapTokenMap[gap as FlexGap]` is missing, return `{}` (or `undefined`) and optionally `console.warn` in non-production builds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


20. Flex gap map unguarded 🐞 Bug ⛯ Reliability
Description
Flex now maps string gap values via a local token map and returns { gap: gapTokenMap[gap] }.
If a runtime consumer passes an unexpected string, the lookup returns undefined and the component
silently renders with no gap (layout regression with no signal).
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
The new implementation does an unguarded map lookup (gapTokenMap[gap]) with a map typed as
Record, so it provides no exhaustiveness guarantees if FlexGap changes and no runtime protection
if a non-typed consumer passes an unexpected string.

packages/components/layout/src/Flex/Flex.tsx[94-108]
packages/components/layout/src/Flex/Flex.types.ts[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Flex` uses `gapTokenMap[gap]` without a fallback/guard. For non-TS (or dynamically typed) consumers, an invalid string value will silently result in `gap: undefined` and the layout will lose spacing.
### Issue Context
`FlexGap` is a fixed union today, but the map is typed as `Record&amp;amp;amp;lt;string, string&amp;amp;amp;gt;` and the lookup is unguarded.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[94-108]
- packages/components/layout/src/Flex/Flex.types.ts[1-8]
### Suggested change
- Change `gapTokenMap` typing to `Record&amp;amp;amp;lt;FlexGap, string&amp;amp;amp;gt;` (ensures compile-time coverage).
- Add a runtime guard:
- If `typeof gap === &amp;amp;amp;quot;string&amp;amp;amp;quot;` and `gapTokenMap[gap as FlexGap]` is missing, return `{}` (or `undefined`) and optionally `console.warn` in non-production builds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


21. Flex gap map type-safety 🐞 Bug ⛯ Reliability
Description
Flex now uses a hardcoded gapTokenMap, but it is typed as Record, so future changes to the
FlexGap union won’t force map updates at compile time. This can lead to silent missing gaps (e.g.,
gap: undefined) if new gap sizes are added later.
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
FlexGap is a narrow union, but the new map is typed broadly (Record). This removes
exhaustiveness checking between FlexGap and the token map, making it easier to introduce a runtime
layout regression when extending gap options.

packages/components/layout/src/Flex/Flex.types.ts[7-8]
packages/components/layout/src/Flex/Flex.tsx[101-107]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`gapTokenMap` is typed as `Record&amp;amp;amp;lt;string, string&amp;amp;amp;gt;`, which prevents TypeScript from enforcing that the mapping stays in sync with the `FlexGap` union. If `FlexGap` is extended in the future, the map could be left incomplete and cause missing `gap` styling at runtime.
### Issue Context
The map-based approach is good, but it should be declared as exhaustive over `FlexGap` and defensively handle unexpected values.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[101-107]
- packages/components/layout/src/Flex/Flex.types.ts[7-8]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


22. Flex gap map unguarded 🐞 Bug ⛯ Reliability
Description
Flex now maps string gap values via a local token map and returns { gap: gapTokenMap[gap] }.
If a runtime consumer passes an unexpected string, the lookup returns undefined and the component
silently renders with no gap (layout regression with no signal).
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
The new implementation does an unguarded map lookup (gapTokenMap[gap]) with a map typed as
Record, so it provides no exhaustiveness guarantees if FlexGap changes and no runtime protection
if a non-typed consumer passes an unexpected string.

packages/components/layout/src/Flex/Flex.tsx[94-108]
packages/components/layout/src/Flex/Flex.types.ts[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Flex` uses `gapTokenMap[gap]` without a fallback/guard. For non-TS (or dynamically typed) consumers, an invalid string value will silently result in `gap: undefined` and the layout will lose spacing.
### Issue Context
`FlexGap` is a fixed union today, but the map is typed as `Record&amp;amp;amp;amp;amp;lt;string, string&amp;amp;amp;amp;amp;gt;` and the lookup is unguarded.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[94-108]
- packages/components/layout/src/Flex/Flex.types.ts[1-8]
### Suggested change
- Change `gapTokenMap` typing to `Record&amp;amp;amp;amp;amp;lt;FlexGap, string&amp;amp;amp;amp;amp;gt;` (ensures compile-time coverage).
- Add a runtime guard:
- If `typeof gap === &amp;amp;amp;amp;amp;quot;string&amp;amp;amp;amp;amp;quot;` and `gapTokenMap[gap as FlexGap]` is missing, return `{}` (or `undefined`) and optionally `console.warn` in non-production builds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


23. Flex gap map unguarded 🐞 Bug ⛯ Reliability
Description
Flex now maps string gap values via a local token map and returns { gap: gapTokenMap[gap] }.
If a runtime consumer passes an unexpected string, the lookup returns undefined and the component
silently renders with no gap (layout regression with no signal).
Code

packages/components/layout/src/Flex/Flex.tsx[R101-107]

+      const gapTokenMap: Record<string, string> = {
+        xs: "var(--space-4)",
+        small: "var(--space-8)",
+        medium: "var(--space-16)",
+        large: "var(--space-24)"
+      };
+      return { gap: gapTokenMap[gap] };
Evidence
The new implementation does an unguarded map lookup (gapTokenMap[gap]) with a map typed as
Record, so it provides no exhaustiveness guarantees if FlexGap changes and no runtime protection
if a non-typed consumer passes an unexpected string.

packages/components/layout/src/Flex/Flex.tsx[94-108]
packages/components/layout/src/Flex/Flex.types.ts[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Flex` uses `gapTokenMap[gap]` without a fallback/guard. For non-TS (or dynamically typed) consumers, an invalid string value will silently result in `gap: undefined` and the layout will lose spacing.
### Issue Context
`FlexGap` is a fixed union today, but the map is typed as `Record&amp;amp;amp;amp;lt;string, string&amp;amp;amp;amp;gt;` and the lookup is unguarded.
### Fix Focus Areas
- packages/components/layout/src/Flex/Flex.tsx[94-108]
- packages/components/layout/src/Flex/Flex.types.ts[1-8]
### Suggested change
- Change `gapTokenMap` typing to `Record&amp;amp;amp;amp;lt;FlexGap, string&amp;amp;amp;amp;gt;` (ensures compile-time coverage).
- Add a runtime guard:
- If `typeof gap === &amp;amp;amp;amp;quot;string&amp;amp;amp;amp;quot;` and `gapTokenMap[gap as FlexGap]` is missing, return `{}` (or `undefined`) and optionally `console.warn` in non-production builds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Grey Divider

Previous review results

Review updated until commit 274b3ed

Results up to commit e0b8507


🐞 Bugs (11) 📘 Rule violations (12) 📎 Requirement gaps (0)

Grey Divider
Action required
1. Docs reference removed spacing vars 🐞 Bug ✓ Correctness
Description
After removing --spacing-* tokens from @vibe/style, the v4 changelog/migration guide still
describe the “Input Padding” change using var(--spacing-medium)/var(--spacing-small), which are
no longer defined. Consumers may copy these snippets and end up with broken/ineffective CSS
variables.
Code

VIBE4_CHANGELOG.md[R528-534]

+#### Design Tokens — Spacing
-- **Change**: TBD
-- **Reason**: TBD
-- **Migration**: TBD
-- **Codemod**: ❌ Manual
+- [x] **Status**: Complete
+- **Change**: Removed deprecated semantic spacing CSS custom properties (`--spacing-xs`, `--spacing-small`, `--spacing-medium`, `--spacing-large`, `--spacing-xl`, `--spacing-xxl`, `--spacing-xxxl`) from `@vibe/style`. All internal usages replaced with numeric spacing tokens (`--space-4`, `--space-8`, `--space-16`, `--space-24`, `--space-32`, `--space-48`, `--space-64`).
+- **Reason**: The numeric naming convention is more scalable, unambiguous, and consistent with modern design token practices. The semantic names (`small`, `medium`, `large`) don't scale beyond `xxxl` and create ambiguity about exact values.
+- **Migration**: Replace all usages of old spacing tokens with their numeric equivalents. Run `npx stylelint --fix "**/*.scss"` with `@vibe/style/use-new-spacing-tokens` rule enabled to auto-fix.
+- **Codemod**: ✅ Stylelint auto-fix via `@vibe/style/use-new-spacing-tokens` rule
Evidence
The PR removes the legacy --spacing-* definitions from the global spacing tokens, but the v4
“Input Padding” documentation still instructs using those removed tokens in prose and code blocks,
making the docs inaccurate post-change.

packages/style/src/spacing.scss[1-14]
[VIBE4_CHANGELOG.md[508-513]](https://g...

Comment on lines +14 to +18
padding: var(--space-16) 12px var(--space-8);
}

.large {
padding: var(--spacing-medium) 12px var(--spacing-small);
padding: var(--space-16) 12px var(--space-8);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Action required

1. Hardcoded 12px in listtitle 📘 Rule violation ✓ Correctness

next/ListTitle.module.scss uses hardcoded 12px values where an equivalent spacing token exists
(--space-12). This violates the SCSS module design token requirement.
Agent Prompt
## Issue description
SCSS module styling uses hardcoded `12px` spacing values even though an equivalent design token (`--space-12`) exists.

## Issue Context
Rule 3 requires SCSS modules to use design tokens instead of hardcoded values where applicable.

## Fix Focus Areas
- packages/core/src/components/next/List/ListTitle/ListTitle.module.scss[14-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Resolve conflicts between spacing token removal and input padding
reduction. Take vibe4's new padding values with new token names:
- BaseInput: --space-12 for inline-start (vibe4's reduced padding)
- TextField: --space-12 for inline-start, --space-4 for inline-end
- TextArea: uniform --space-8 padding
- Dropdown Trigger: removed padding-inline-start from selectedItem

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

qodo-free-for-open-source-projects bot commented Mar 5, 2026

Persistent review updated to latest commit 4af42da

With old spacing tokens removed, each pixel value now maps to only one
CSS variable. Update test expectation for the single-var warning format
and remove the now-unnecessary recommended array from spacing props
config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 5, 2026

📦 Bundle Size Analysis

Changed Components

Component Base PR Diff
@vibe/dialog 53.84KB 52.12KB -1.72KB 🟢
@vibe/icon-button 68.11KB 66.07KB -2.04KB 🟢
@vibe/tooltip 63KB 61.29KB -1.72KB 🟢
@vibe/typography 65.48KB 63.47KB -2.01KB 🟢
AccordionItem 68.18KB 66.45KB -1.74KB 🟢
AlertBanner 72.93KB 70.79KB -2.14KB 🟢
AlertBannerText 65.54KB 63.9KB -1.64KB 🟢
Avatar 68.26KB 66.74KB -1.53KB 🟢
AvatarGroup 96.05KB 93.45KB -2.61KB 🟢
BreadcrumbItem 66.22KB 64.66KB -1.56KB 🟢
BreadcrumbMenu 70.39KB 68.73KB -1.67KB 🟢
BreadcrumbMenuItem 79.43KB 77.15KB -2.28KB 🟢
ButtonGroup 70.29KB 68.33KB -1.96KB 🟢
Checkbox 68.44KB 66.8KB -1.63KB 🟢
Chips 77.07KB 75.11KB -1.96KB 🟢
ColorPicker 76.41KB 74.48KB -1.93KB 🟢
ColorPickerContent 75.59KB 73.78KB -1.82KB 🟢
Combobox 86.31KB 84.06KB -2.26KB 🟢
DatePicker 134.56KB 112.47KB -22.08KB 🟢
Dropdown 126.07KB 95.32KB -30.75KB 🟢
EditableHeading 68.36KB 66.58KB -1.78KB 🟢
EditableText 68.22KB 66.46KB -1.76KB 🟢
EmptyState 72.71KB 70.47KB -2.24KB 🟢
ExpandCollapse 68.04KB 66.22KB -1.82KB 🟢
Info 74.32KB 72.22KB -2.1KB 🟢
Label 70.42KB 68.74KB -1.68KB 🟢
List 74.94KB 72.95KB -1.98KB 🟢
ListItem 67.32KB 65.63KB -1.69KB 🟢
ListItemAvatar 68.49KB 66.96KB -1.52KB 🟢
ListTitle 66.79KB 64.97KB -1.82KB 🟢
MenuItem 79.32KB 77.08KB -2.24KB 🟢
MenuItemButton 72.32KB 70.17KB -2.15KB 🟢
MenuTitle 67.18KB 65.32KB -1.87KB 🟢
MenuButton 67.75KB 66.13KB -1.62KB 🟢
Modal 111.94KB 79.18KB -32.76KB 🟢
ModalHeader 67.63KB 65.79KB -1.83KB 🟢
ModalFooter 69.48KB 67.73KB -1.75KB 🟢
ModalFooterWizard 70.48KB 68.61KB -1.86KB 🟢
NumberField 74.95KB 72.88KB -2.07KB 🟢
RadioButton 67.62KB 65.91KB -1.71KB 🟢
Search 72.49KB 70.66KB -1.83KB 🟢
Slider 75.82KB 74.03KB -1.79KB 🟢
SplitButton 68.78KB 66.68KB -2.11KB 🟢
Steps 73.5KB 71.32KB -2.18KB 🟢
TableBody 68.7KB 66.7KB -2KB 🟢
TableCell 66.89KB 65.13KB -1.76KB 🟢
TableHeaderCell 74.24KB 72.26KB -1.98KB 🟢
TableRowMenu 70.63KB 69.01KB -1.62KB 🟢
TableVirtualizedBody 73.32KB 71.44KB -1.88KB 🟢
Tab 65.52KB 63.97KB -1.55KB 🟢
TextArea 68.05KB 66.39KB -1.65KB 🟢
TextField 71.45KB 69.48KB -1.97KB 🟢
TextWithHighlight 65.91KB 64.38KB -1.54KB 🟢
Tipseen 73.26KB 71.25KB -2.02KB 🟢
TipseenContent 73.69KB 71.65KB -2.04KB 🟢
TipseenMedia 73.48KB 71.42KB -2.06KB 🟢
TipseenWizard 76.03KB 73.93KB -2.1KB 🟢
Toast 76.23KB 74.03KB -2.2KB 🟢
Toggle 68.39KB 66.63KB -1.75KB 🟢
TransitionView 37.69KB 5.44KB -32.25KB 🟢
ListItem (Next) 71.68KB 69.99KB -1.68KB 🟢
ListTitle (Next) 67.04KB 65.28KB -1.76KB 🟢
Unchanged Components
Component Base PR Diff
@vibe/button 17.74KB 17.28KB -467B 🟢
@vibe/clickable 6.07KB 5.96KB -105B 🟢
@vibe/icon 13.01KB 12.91KB -96B 🟢
@vibe/layer 2.96KB 2.96KB 0B ➖
@vibe/layout 10.56KB 9.83KB -747B 🟢
@vibe/loader 5.8KB 5.66KB -150B 🟢
Accordion 6.37KB 6.31KB -60B 🟢
AlertBannerButton 19.23KB 18.76KB -484B 🟢
AlertBannerLink 15.56KB 15.2KB -371B 🟢
AttentionBox 74.49KB 74.25KB -251B 🟢
Badge 43.56KB 43.2KB -375B 🟢
BreadcrumbsBar 5.79KB 5.68KB -115B 🟢
Counter 42.47KB 42.28KB -192B 🟢
Divider 5.54KB 5.42KB -114B 🟢
FormattedNumber 5.9KB 5.82KB -89B 🟢
GridKeyboardNavigationContext 4.66KB 4.67KB +11B 🔺
HiddenText 5.45KB 5.38KB -69B 🟢
Link 15.22KB 14.89KB -337B 🟢
ListItemIcon 14.23KB 14.01KB -225B 🟢
Menu 8.76KB 8.67KB -97B 🟢
MenuDivider 5.69KB 5.57KB -121B 🟢
MenuGridItem 7.24KB 7.16KB -75B 🟢
ModalContent 4.77KB 4.71KB -52B 🟢
ModalMedia 7.79KB 7.47KB -322B 🟢
ModalBasicLayout 9.21KB 8.9KB -311B 🟢
ModalMediaLayout 8.32KB 8.1KB -225B 🟢
ModalSideBySideLayout 6.36KB 6.3KB -59B 🟢
MultiStepIndicator 53.27KB 53.14KB -133B 🟢
ProgressBar 7.42KB 7.32KB -95B 🟢
Skeleton 6.21KB 5.98KB -236B 🟢
SplitButtonMenu 8.89KB 8.81KB -83B 🟢
Table 7.33KB 7.27KB -53B 🟢
TableContainer 5.38KB 5.31KB -67B 🟢
TableHeader 5.69KB 5.64KB -52B 🟢
TableRow 5.63KB 5.57KB -62B 🟢
TabList 8.92KB 8.89KB -33B 🟢
TabPanel 5.33KB 5.29KB -49B 🟢
TabPanels 5.97KB 5.87KB -105B 🟢
TabsContext 5.55KB 5.46KB -89B 🟢
ThemeProvider 4.68KB 4.36KB -329B 🟢
ToastButton 19.07KB 18.63KB -451B 🟢
ToastLink 15.4KB 15.07KB -337B 🟢
VirtualizedGrid 12.62KB 12.54KB -83B 🟢
VirtualizedList 12.42KB 12.26KB -156B 🟢
List (Next) 8.21KB 8.14KB -64B 🟢

📊 Summary:

  • Total Base Size: 4.98MB
  • Total PR Size: 4.76MB
  • Total Difference: 234.8KB

⚠️ Significant size change detected! Please review the changes carefully.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

qodo-free-for-open-source-projects bot commented Mar 5, 2026

Persistent review updated to latest commit a32fd0b

Comment on lines +528 to +534
#### Design Tokens — Spacing

- **Change**: TBD
- **Reason**: TBD
- **Migration**: TBD
- **Codemod**: ❌ Manual
- [x] **Status**: Complete
- **Change**: Removed deprecated semantic spacing CSS custom properties (`--spacing-xs`, `--spacing-small`, `--spacing-medium`, `--spacing-large`, `--spacing-xl`, `--spacing-xxl`, `--spacing-xxxl`) from `@vibe/style`. All internal usages replaced with numeric spacing tokens (`--space-4`, `--space-8`, `--space-16`, `--space-24`, `--space-32`, `--space-48`, `--space-64`).
- **Reason**: The numeric naming convention is more scalable, unambiguous, and consistent with modern design token practices. The semantic names (`small`, `medium`, `large`) don't scale beyond `xxxl` and create ambiguity about exact values.
- **Migration**: Replace all usages of old spacing tokens with their numeric equivalents. Run `npx stylelint --fix "**/*.scss"` with `@vibe/style/use-new-spacing-tokens` rule enabled to auto-fix.
- **Codemod**: ✅ Stylelint auto-fix via `@vibe/style/use-new-spacing-tokens` rule
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Action required

1. Docs reference removed spacing vars 🐞 Bug ✓ Correctness

After removing --spacing-* tokens from @vibe/style, the v4 changelog/migration guide still
describe the “Input Padding” change using var(--spacing-medium)/var(--spacing-small), which are
no longer defined. Consumers may copy these snippets and end up with broken/ineffective CSS
variables.
Agent Prompt
### Issue description
The PR removes legacy semantic spacing CSS vars (`--spacing-*`), but some v4 documentation sections still reference those removed tokens (notably the “Input Padding” change). This makes the migration guidance inaccurate post-change.

### Issue Context
Consumers rely on VIBE4_CHANGELOG.md and VIBE4_MIGRATION_GUIDE.md for copy/paste-ready examples. After removing the token definitions, any remaining references to `--spacing-small`/`--spacing-medium` will not resolve.

### Fix Focus Areas
- VIBE4_CHANGELOG.md[508-513]
- VIBE4_MIGRATION_GUIDE.md[536-572]
- packages/style/src/spacing.scss[1-14]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Update 20 snapshots reflecting --spacing-* → --space-* token changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

qodo-free-for-open-source-projects bot commented Mar 5, 2026

Persistent review updated to latest commit c14492b

rivka-ungar and others added 2 commits March 5, 2026 18:19
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

qodo-free-for-open-source-projects bot commented Mar 5, 2026

Persistent review updated to latest commit e0b8507

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

qodo-free-for-open-source-projects bot commented Mar 5, 2026

Persistent review updated to latest commit 274b3ed

@rivka-ungar rivka-ungar merged commit b504327 into vibe4 Mar 5, 2026
14 checks passed
@rivka-ungar rivka-ungar deleted the breaking-change/remove-deprecated-spacing-tokens branch March 5, 2026 17:41
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.

1 participant