-
-
Notifications
You must be signed in to change notification settings - Fork 11.2k
Renamed files to kebab-case for admin design system #25625
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
Renamed files to kebab-case for admin design system #25625
Conversation
WalkthroughThis PR standardizes filenames/imports in apps/admin-x-design-system from PascalCase to kebab-case across many components and Storybook files, updates several lazy/dynamic import specifiers, replaces a number of Tailwind sizing utilities with project sizing tokens, adds an ESLint rule Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Areas to check:
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (107)
⛔ Files not processed due to max files limit (27)
💤 Files with no reviewable changes (1)
✅ Files skipped from review due to trivial changes (2)
🚧 Files skipped from review as they are similar to previous changes (58)
🧰 Additional context used🧠 Learnings (23)📓 Common learnings📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-25T14:28:50.351ZApplied to files:
📚 Learning: 2025-05-28T12:54:13.035ZApplied to files:
📚 Learning: 2025-11-24T17:29:43.865ZApplied to files:
📚 Learning: 2025-01-29T15:23:58.658ZApplied to files:
📚 Learning: 2025-11-25T11:58:51.652ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-10-23T07:35:27.719ZApplied to files:
📚 Learning: 2025-11-24T17:29:43.865ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
📚 Learning: 2025-11-26T11:05:59.314ZApplied to files:
🧬 Code graph analysis (1)apps/admin-x-design-system/src/global/layout/app-menu.tsx (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
🔇 Additional comments (50)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this 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
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/admin-x-design-system/src/global/button.tsx (1)
141-151: Fix concatenated label classes when bothhideLabelandloadingare trueThe current concatenation:
let labelClasses = ''; labelClasses += (label && hideLabel) ? 'sr-only' : ''; labelClasses += loading ? 'invisible' : '';produces
"sr-onlyinvisible"(no space) when bothhideLabelandloadingare true, so neither Tailwind class applies correctly.You can avoid this by using
clsx(already imported) instead of manual string concatenation:- let labelClasses = ''; - labelClasses += (label && hideLabel) ? 'sr-only' : ''; - labelClasses += loading ? 'invisible' : ''; + const labelClasses = clsx( + label && hideLabel && 'sr-only', + loading && 'invisible' + );This keeps the semantics identical but ensures valid class names in all combinations.
🧹 Nitpick comments (1)
apps/admin-x-design-system/src/global/sort-menu.tsx (1)
2-3: Imports align with kebab-case; consider refactoring nested buttonThe imports from
./buttonand./popoverplus thesize-6class update are consistent with the new kebab-case/file-size conventions and don’t alter SortMenu behavior.Unrelated to the rename, the sort-direction control is currently rendered as a
<button>nested inside the outer<button>row (lines 71–79), which is invalid HTML and can confuse browsers/screen readers. When you next touch this component, consider refactoring so there’s only a single actual button per row (e.g., wrap the inner control in a non-interactive element or move it outside the row button).Also applies to: 70-80
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (107)
apps/admin-x-design-system/.eslintrc.cjs(1 hunks)apps/admin-x-design-system/.storybook/preview.tsx(1 hunks)apps/admin-x-design-system/README.md(0 hunks)apps/admin-x-design-system/src/boilerplate.stories.tsx(1 hunks)apps/admin-x-design-system/src/design-system-app.tsx(1 hunks)apps/admin-x-design-system/src/global/avatar.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/banner.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/breadcrumbs.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/breadcrumbs.tsx(1 hunks)apps/admin-x-design-system/src/global/button-group.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/button-group.tsx(2 hunks)apps/admin-x-design-system/src/global/button.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/button.tsx(1 hunks)apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/chrome/desktop-chrome.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/chrome/mobile-chrome.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/error-boundary.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/error-boundary.tsx(1 hunks)apps/admin-x-design-system/src/global/form/checkbox-group.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/checkbox-group.tsx(1 hunks)apps/admin-x-design-system/src/global/form/checkbox.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/checkbox.tsx(2 hunks)apps/admin-x-design-system/src/global/form/code-editor-view.tsx(1 hunks)apps/admin-x-design-system/src/global/form/code-editor.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/code-editor.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-indicator.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-indicator.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-picker-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-picker-field.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-picker.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-picker.tsx(1 hunks)apps/admin-x-design-system/src/global/form/currency-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/currency-field.tsx(1 hunks)apps/admin-x-design-system/src/global/form/file-upload.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/form.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/form/form.tsx(1 hunks)apps/admin-x-design-system/src/global/form/html-editor.tsx(1 hunks)apps/admin-x-design-system/src/global/form/html-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/html-field.tsx(1 hunks)apps/admin-x-design-system/src/global/form/image-upload.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/image-upload.tsx(1 hunks)apps/admin-x-design-system/src/global/form/multi-select.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/multi-select.tsx(1 hunks)apps/admin-x-design-system/src/global/form/radio.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/radio.tsx(2 hunks)apps/admin-x-design-system/src/global/form/select.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/select.tsx(1 hunks)apps/admin-x-design-system/src/global/form/text-area.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/text-area.tsx(1 hunks)apps/admin-x-design-system/src/global/form/text-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/text-field.tsx(1 hunks)apps/admin-x-design-system/src/global/form/toggle-group.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/toggle.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/toggle.tsx(1 hunks)apps/admin-x-design-system/src/global/form/url-text-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/url-text-field.tsx(1 hunks)apps/admin-x-design-system/src/global/heading.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/heading.tsx(1 hunks)apps/admin-x-design-system/src/global/hint.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/icon-label.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/icon-label.tsx(1 hunks)apps/admin-x-design-system/src/global/icon.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/infinite-scroll-listener.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/layout/app-menu.tsx(2 hunks)apps/admin-x-design-system/src/global/layout/global-actions.tsx(1 hunks)apps/admin-x-design-system/src/global/layout/page-header.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/layout/page.stories.tsx(4 hunks)apps/admin-x-design-system/src/global/layout/page.tsx(2 hunks)apps/admin-x-design-system/src/global/layout/view-container.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/layout/view-container.tsx(1 hunks)apps/admin-x-design-system/src/global/link.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/list-heading.tsx(1 hunks)apps/admin-x-design-system/src/global/list-item.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/list.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/list.tsx(1 hunks)apps/admin-x-design-system/src/global/loading-indicator.stories.tsx(3 hunks)apps/admin-x-design-system/src/global/menu.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/menu.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/limit-modal.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/modal-page.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/modal-page.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/modal.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/modal.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/preview-modal.tsx(2 hunks)apps/admin-x-design-system/src/global/no-value-label.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/no-value-label.tsx(1 hunks)apps/admin-x-design-system/src/global/pagination.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/pagination.tsx(2 hunks)apps/admin-x-design-system/src/global/popover.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/separator.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/sort-menu.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/sort-menu.tsx(2 hunks)apps/admin-x-design-system/src/global/sortable-list.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/sortable-list.tsx(1 hunks)apps/admin-x-design-system/src/global/sticky-footer.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/tab-view.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/tab-view.tsx(1 hunks)apps/admin-x-design-system/src/global/table-head.tsx(1 hunks)apps/admin-x-design-system/src/global/table-row.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/table.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/table.tsx(1 hunks)apps/admin-x-design-system/src/global/table/dynamic-table.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/table/dynamic-table.tsx(1 hunks)
⛔ Files not processed due to max files limit (26)
- apps/admin-x-design-system/src/global/toast.stories.tsx
- apps/admin-x-design-system/src/global/toast.tsx
- apps/admin-x-design-system/src/global/tooltip.stories.tsx
- apps/admin-x-design-system/src/index.ts
- apps/admin-x-design-system/src/providers/design-system-provider.tsx
- apps/admin-x-design-system/src/settings/setting-group-content.stories.tsx
- apps/admin-x-design-system/src/settings/setting-group-content.tsx
- apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
- apps/admin-x-design-system/src/settings/setting-group-header.tsx
- apps/admin-x-design-system/src/settings/setting-group.stories.tsx
- apps/admin-x-design-system/src/settings/setting-group.tsx
- apps/admin-x-design-system/src/settings/setting-nav-item.stories.tsx
- apps/admin-x-design-system/src/settings/setting-nav-item.tsx
- apps/admin-x-design-system/src/settings/setting-nav-section.stories.tsx
- apps/admin-x-design-system/src/settings/setting-section-header.stories.tsx
- apps/admin-x-design-system/src/settings/setting-section.stories.tsx
- apps/admin-x-design-system/src/settings/setting-section.tsx
- apps/admin-x-design-system/src/settings/setting-value.stories.tsx
- apps/admin-x-design-system/src/settings/setting-value.tsx
- apps/admin-x-design-system/src/settings/stripe-button.stories.tsx
- apps/admin-x-design-system/src/settings/stripe-button.tsx
- apps/admin-x-design-system/src/utils/modals.tsx
- apps/admin-x-design-system/test/.eslintrc.cjs
- apps/admin-x-design-system/test/unit/hooks/use-pagination.test.ts
- apps/admin-x-design-system/test/unit/hooks/use-sortable-indexed-list.test.ts
- apps/admin-x-design-system/test/unit/utils/format-url.test.ts
💤 Files with no reviewable changes (1)
- apps/admin-x-design-system/README.md
🧰 Additional context used
🧠 Learnings (28)
📓 Common learnings
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use `PascalCase` for component identifiers in filenames while keeping ShadCN-generated files in kebab-case
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use `camelCase` for function and variable names
Learnt from: ibalosh
Repo: TryGhost/Ghost PR: 25525
File: apps/shade/src/shade-app.tsx:4-4
Timestamp: 2025-11-25T11:58:51.652Z
Learning: In apps/shade, the app wrapper file should be named `src/shade-app.tsx` (kebab-case) while the component itself is exported as `ShadeApp` (PascalCase). Context providers should be placed in `src/providers/*` using kebab-case filenames.
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/ui/**/*.{ts,tsx} : Atomic UI components should be placed in `src/components/ui/*` and each component must have a corresponding `*.stories.tsx` file next to it for Storybook documentation
Applied to files:
apps/admin-x-design-system/src/global/popover.stories.tsxapps/admin-x-design-system/src/global/banner.stories.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsxapps/admin-x-design-system/src/global/form/select.stories.tsxapps/admin-x-design-system/src/global/breadcrumbs.stories.tsxapps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/menu.stories.tsxapps/admin-x-design-system/.storybook/preview.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsxapps/admin-x-design-system/src/global/pagination.stories.tsxapps/admin-x-design-system/src/global/modal/modal.stories.tsxapps/admin-x-design-system/src/global/form/checkbox-group.stories.tsxapps/admin-x-design-system/src/global/form/file-upload.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/layout/app-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.stories.tsxapps/admin-x-design-system/src/global/form/color-picker.stories.tsxapps/admin-x-design-system/src/global/menu.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsxapps/admin-x-design-system/src/global/table-row.stories.tsxapps/admin-x-design-system/src/global/form/radio.stories.tsxapps/admin-x-design-system/src/boilerplate.stories.tsxapps/admin-x-design-system/src/global/button-group.stories.tsxapps/admin-x-design-system/src/global/button.tsxapps/admin-x-design-system/src/global/error-boundary.stories.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/form/image-upload.stories.tsxapps/admin-x-design-system/src/global/form/code-editor.stories.tsxapps/admin-x-design-system/src/global/modal/limit-modal.stories.tsxapps/admin-x-design-system/src/global/layout/view-container.stories.tsxapps/admin-x-design-system/src/global/infinite-scroll-listener.stories.tsxapps/admin-x-design-system/src/global/form/url-text-field.stories.tsxapps/admin-x-design-system/src/global/button.stories.tsxapps/admin-x-design-system/src/global/no-value-label.stories.tsxapps/admin-x-design-system/src/global/form/checkbox.stories.tsxapps/admin-x-design-system/src/global/separator.stories.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/table/dynamic-table.stories.tsxapps/admin-x-design-system/src/global/form/color-picker-field.stories.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/list-item.stories.tsxapps/admin-x-design-system/src/global/sort-menu.stories.tsxapps/admin-x-design-system/src/global/table.stories.tsxapps/admin-x-design-system/src/global/form/html-field.stories.tsxapps/admin-x-design-system/src/global/sticky-footer.stories.tsxapps/admin-x-design-system/src/global/form/multi-select.stories.tsxapps/admin-x-design-system/src/global/form/color-indicator.stories.tsxapps/admin-x-design-system/src/global/form/form.stories.tsxapps/admin-x-design-system/src/global/chrome/mobile-chrome.stories.tsxapps/admin-x-design-system/src/global/icon.stories.tsxapps/admin-x-design-system/src/global/layout/page-header.stories.tsxapps/admin-x-design-system/src/global/form/text-field.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/global/modal/modal.tsxapps/admin-x-design-system/src/global/tab-view.tsxapps/admin-x-design-system/src/global/form/toggle.stories.tsxapps/admin-x-design-system/src/global/avatar.stories.tsxapps/admin-x-design-system/src/global/link.stories.tsxapps/admin-x-design-system/src/global/form/text-area.stories.tsxapps/admin-x-design-system/src/global/loading-indicator.stories.tsxapps/admin-x-design-system/src/global/sort-menu.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use `PascalCase` for component identifiers in filenames while keeping ShadCN-generated files in kebab-case
Applied to files:
apps/admin-x-design-system/src/global/popover.stories.tsxapps/admin-x-design-system/src/global/banner.stories.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsxapps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/menu.stories.tsxapps/admin-x-design-system/src/global/form/text-field.tsxapps/admin-x-design-system/src/global/form/checkbox.tsxapps/admin-x-design-system/src/global/pagination.stories.tsxapps/admin-x-design-system/src/global/modal/modal.stories.tsxapps/admin-x-design-system/src/global/form/toggle.tsxapps/admin-x-design-system/src/global/form/image-upload.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/layout/app-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.stories.tsxapps/admin-x-design-system/src/global/form/text-area.tsxapps/admin-x-design-system/src/global/form/color-picker.stories.tsxapps/admin-x-design-system/src/global/menu.tsxapps/admin-x-design-system/src/global/form/html-field.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/.eslintrc.cjsapps/admin-x-design-system/src/global/table-row.stories.tsxapps/admin-x-design-system/src/global/form/form.tsxapps/admin-x-design-system/src/global/table.tsxapps/admin-x-design-system/src/global/layout/global-actions.tsxapps/admin-x-design-system/src/global/button.tsxapps/admin-x-design-system/src/global/sortable-list.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/form/code-editor.stories.tsxapps/admin-x-design-system/src/global/no-value-label.stories.tsxapps/admin-x-design-system/src/global/separator.stories.tsxapps/admin-x-design-system/src/global/form/radio.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/form/color-picker-field.stories.tsxapps/admin-x-design-system/src/global/form/code-editor.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/list-item.stories.tsxapps/admin-x-design-system/src/global/table.stories.tsxapps/admin-x-design-system/src/global/list.tsxapps/admin-x-design-system/src/global/form/multi-select.tsxapps/admin-x-design-system/src/global/form/form.stories.tsxapps/admin-x-design-system/src/global/chrome/mobile-chrome.stories.tsxapps/admin-x-design-system/src/global/layout/page-header.stories.tsxapps/admin-x-design-system/src/global/form/text-field.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/design-system-app.tsxapps/admin-x-design-system/src/global/table-head.tsxapps/admin-x-design-system/src/global/modal/modal.tsxapps/admin-x-design-system/src/global/tab-view.tsxapps/admin-x-design-system/src/global/heading.tsxapps/admin-x-design-system/src/global/form/toggle.stories.tsxapps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/src/global/form/checkbox-group.tsxapps/admin-x-design-system/src/global/sort-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/**/*.stories.{ts,tsx} : Storybook stories should demonstrate key variants and states (sizes, disabled/loading, critical props) with minimal but representative examples
Applied to files:
apps/admin-x-design-system/src/global/popover.stories.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsxapps/admin-x-design-system/src/global/breadcrumbs.stories.tsxapps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/menu.stories.tsxapps/admin-x-design-system/.storybook/preview.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsxapps/admin-x-design-system/src/global/modal/modal.stories.tsxapps/admin-x-design-system/src/global/form/checkbox-group.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/modal/preview-modal.stories.tsxapps/admin-x-design-system/src/global/form/color-picker.stories.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsxapps/admin-x-design-system/src/global/table-row.stories.tsxapps/admin-x-design-system/src/boilerplate.stories.tsxapps/admin-x-design-system/src/global/button-group.stories.tsxapps/admin-x-design-system/src/global/modal/limit-modal.stories.tsxapps/admin-x-design-system/src/global/layout/view-container.stories.tsxapps/admin-x-design-system/src/global/infinite-scroll-listener.stories.tsxapps/admin-x-design-system/src/global/button.stories.tsxapps/admin-x-design-system/src/global/no-value-label.stories.tsxapps/admin-x-design-system/src/global/form/checkbox.stories.tsxapps/admin-x-design-system/src/global/table/dynamic-table.stories.tsxapps/admin-x-design-system/src/global/form/color-picker-field.stories.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/list-item.stories.tsxapps/admin-x-design-system/src/global/sort-menu.stories.tsxapps/admin-x-design-system/src/global/table.stories.tsxapps/admin-x-design-system/src/global/sticky-footer.stories.tsxapps/admin-x-design-system/src/global/form/multi-select.stories.tsxapps/admin-x-design-system/src/global/form/color-indicator.stories.tsxapps/admin-x-design-system/src/global/form/form.stories.tsxapps/admin-x-design-system/src/global/icon.stories.tsxapps/admin-x-design-system/src/global/form/text-field.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/global/form/toggle.stories.tsxapps/admin-x-design-system/src/global/loading-indicator.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/index.ts : Place new UI components under `src/components/ui` and export them from `src/index.ts`
Applied to files:
apps/admin-x-design-system/src/global/popover.stories.tsxapps/admin-x-design-system/src/global/banner.stories.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsxapps/admin-x-design-system/src/global/form/select.stories.tsxapps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/menu.stories.tsxapps/admin-x-design-system/src/global/button-group.tsxapps/admin-x-design-system/src/global/layout/app-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.stories.tsxapps/admin-x-design-system/src/global/form/color-picker.stories.tsxapps/admin-x-design-system/src/global/menu.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/form/form.tsxapps/admin-x-design-system/src/global/layout/global-actions.tsxapps/admin-x-design-system/src/global/button.tsxapps/admin-x-design-system/src/global/sortable-list.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/layout/view-container.stories.tsxapps/admin-x-design-system/src/global/form/color-indicator.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/form/color-picker.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/form/multi-select.tsxapps/admin-x-design-system/src/global/form/html-field.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/design-system-app.tsxapps/admin-x-design-system/src/global/modal/modal.tsxapps/admin-x-design-system/src/global/tab-view.tsxapps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/src/global/sort-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: For new UI components, prioritize comprehensive Storybook stories; add focused unit tests where they provide real value (e.g., hooks, utils, logic-heavy parts)
Applied to files:
apps/admin-x-design-system/src/global/popover.stories.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/table-row.stories.tsxapps/admin-x-design-system/src/global/layout/view-container.stories.tsxapps/admin-x-design-system/src/global/button.stories.tsxapps/admin-x-design-system/src/global/form/checkbox.stories.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/form/color-indicator.stories.tsxapps/admin-x-design-system/src/global/form/form.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use the `@` alias for internal imports (e.g., `@/lib/utils`)
Applied to files:
apps/admin-x-design-system/src/global/banner.stories.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsxapps/admin-x-design-system/src/global/form/select.stories.tsxapps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/menu.stories.tsxapps/admin-x-design-system/.storybook/preview.tsxapps/admin-x-design-system/src/global/form/text-field.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome.stories.tsxapps/admin-x-design-system/src/global/form/image-upload.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/layout/app-menu.tsxapps/admin-x-design-system/src/global/form/text-area.tsxapps/admin-x-design-system/src/global/form/color-picker.stories.tsxapps/admin-x-design-system/src/global/error-boundary.tsxapps/admin-x-design-system/src/global/menu.tsxapps/admin-x-design-system/src/global/form/html-field.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/form/form.tsxapps/admin-x-design-system/src/global/form/html-editor.tsxapps/admin-x-design-system/src/global/table.tsxapps/admin-x-design-system/src/global/layout/global-actions.tsxapps/admin-x-design-system/src/global/button.tsxapps/admin-x-design-system/src/global/sortable-list.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/form/image-upload.stories.tsxapps/admin-x-design-system/src/global/form/code-editor.stories.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/form/code-editor.tsxapps/admin-x-design-system/src/global/form/color-picker.tsxapps/admin-x-design-system/src/global/list-item.stories.tsxapps/admin-x-design-system/src/global/list.tsxapps/admin-x-design-system/src/global/form/multi-select.tsxapps/admin-x-design-system/src/global/form/html-field.stories.tsxapps/admin-x-design-system/src/global/sticky-footer.stories.tsxapps/admin-x-design-system/src/global/form/code-editor-view.tsxapps/admin-x-design-system/src/global/hint.stories.tsxapps/admin-x-design-system/src/global/chrome/mobile-chrome.stories.tsxapps/admin-x-design-system/src/global/icon.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/design-system-app.tsxapps/admin-x-design-system/src/global/table-head.tsxapps/admin-x-design-system/src/global/modal/modal.tsxapps/admin-x-design-system/src/global/tab-view.tsxapps/admin-x-design-system/src/global/heading.tsxapps/admin-x-design-system/src/global/form/toggle.stories.tsxapps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/link.stories.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/src/global/form/text-area.stories.tsxapps/admin-x-design-system/src/global/modal/preview-modal.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsxapps/admin-x-design-system/src/global/no-value-label.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Prefer compound subcomponents (e.g., `Header.Title`, `Header.Meta`, `Header.Actions`) for multi-region components instead of many props
Applied to files:
apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsxapps/admin-x-design-system/src/global/form/text-field.tsxapps/admin-x-design-system/src/global/form/checkbox.tsxapps/admin-x-design-system/src/global/form/toggle.tsxapps/admin-x-design-system/src/global/layout/app-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.stories.tsxapps/admin-x-design-system/src/global/form/text-area.tsxapps/admin-x-design-system/src/global/menu.tsxapps/admin-x-design-system/src/global/form/html-field.tsxapps/admin-x-design-system/src/global/form/form.tsxapps/admin-x-design-system/src/global/layout/global-actions.tsxapps/admin-x-design-system/src/global/sortable-list.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/form/color-indicator.tsxapps/admin-x-design-system/src/global/form/radio.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/list.tsxapps/admin-x-design-system/src/global/form/multi-select.tsxapps/admin-x-design-system/src/global/layout/page-header.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/global/table-head.tsxapps/admin-x-design-system/src/global/modal/modal.tsxapps/admin-x-design-system/src/global/heading.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/src/global/form/checkbox-group.tsxapps/admin-x-design-system/src/global/sort-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use `camelCase` for function and variable names
Applied to files:
apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsxapps/admin-x-design-system/src/global/menu.tsxapps/admin-x-design-system/.eslintrc.cjsapps/admin-x-design-system/src/global/table.tsxapps/admin-x-design-system/src/global/sortable-list.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/form/code-editor.tsxapps/admin-x-design-system/src/global/form/multi-select.tsxapps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/src/global/form/checkbox-group.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use CVA (Class Variance Authority) for component variants when useful instead of heavy prop configuration
Applied to files:
apps/admin-x-design-system/src/global/form/select.stories.tsxapps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/form/checkbox.tsxapps/admin-x-design-system/src/global/form/toggle.tsxapps/admin-x-design-system/src/global/modal/preview-modal.stories.tsxapps/admin-x-design-system/src/global/form/color-picker.stories.tsxapps/admin-x-design-system/src/global/menu.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/sortable-list.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/modal/confirmation-modal.tsxapps/admin-x-design-system/src/global/form/radio.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/form/multi-select.tsxapps/admin-x-design-system/src/global/modal/limit-modal.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/global/modal/modal.tsxapps/admin-x-design-system/src/global/tab-view.tsxapps/admin-x-design-system/src/global/form/toggle.stories.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/src/global/form/checkbox-group.tsxapps/admin-x-design-system/src/global/sort-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/**/*.stories.{ts,tsx} : Storybook stories for new components should include an overview explaining what the component does and its primary use case
Applied to files:
apps/admin-x-design-system/src/global/breadcrumbs.stories.tsxapps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/chrome/desktop-chrome.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/modal/preview-modal.stories.tsxapps/admin-x-design-system/src/global/form/color-picker.stories.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/table-row.stories.tsxapps/admin-x-design-system/src/boilerplate.stories.tsxapps/admin-x-design-system/src/global/layout/view-container.stories.tsxapps/admin-x-design-system/src/global/infinite-scroll-listener.stories.tsxapps/admin-x-design-system/src/global/button.stories.tsxapps/admin-x-design-system/src/global/form/color-picker-field.stories.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/table.stories.tsxapps/admin-x-design-system/src/global/sticky-footer.stories.tsxapps/admin-x-design-system/src/global/form/color-indicator.stories.tsxapps/admin-x-design-system/src/global/form/form.stories.tsxapps/admin-x-design-system/src/global/layout/page-header.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/global/form/toggle.stories.tsxapps/admin-x-design-system/src/global/form/text-area.stories.tsxapps/admin-x-design-system/src/global/heading.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/layout/**/*.{ts,tsx} : Reusable layout containers (Page, Heading, Header, ViewHeader, ErrorPage) should be placed in `src/components/layout/*`
Applied to files:
apps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsxapps/admin-x-design-system/src/global/layout/app-menu.tsxapps/admin-x-design-system/src/global/error-boundary.tsxapps/admin-x-design-system/src/global/form/form.tsxapps/admin-x-design-system/src/global/layout/global-actions.tsxapps/admin-x-design-system/src/global/sortable-list.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/layout/view-container.stories.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/form/multi-select.tsxapps/admin-x-design-system/src/global/layout/page-header.stories.tsxapps/admin-x-design-system/src/global/table-head.tsxapps/admin-x-design-system/src/global/heading.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/src/global/form/checkbox-group.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/features/**/*.{ts,tsx} : Higher-level, opinionated components (e.g., PostShareModal, SourceTabs) should be placed in `src/components/features/*`
Applied to files:
apps/admin-x-design-system/src/global/tab-view.stories.tsxapps/admin-x-design-system/src/global/modal/modal.stories.tsxapps/admin-x-design-system/src/global/modal/preview-modal.stories.tsxapps/admin-x-design-system/src/global/menu.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsxapps/admin-x-design-system/src/global/modal/modal.tsxapps/admin-x-design-system/src/global/tab-view.tsxapps/admin-x-design-system/src/global/modal/preview-modal.tsx
📚 Learning: 2025-11-25T14:28:50.351Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T14:28:50.351Z
Learning: Use `shade` design system for new components in Admin UI (avoid legacy `admin-x-design-system`)
Applied to files:
apps/admin-x-design-system/.storybook/preview.tsx
📚 Learning: 2025-11-25T11:58:51.652Z
Learnt from: ibalosh
Repo: TryGhost/Ghost PR: 25525
File: apps/shade/src/shade-app.tsx:4-4
Timestamp: 2025-11-25T11:58:51.652Z
Learning: In apps/shade, the app wrapper file should be named `src/shade-app.tsx` (kebab-case) while the component itself is exported as `ShadeApp` (PascalCase). Context providers should be placed in `src/providers/*` using kebab-case filenames.
Applied to files:
apps/admin-x-design-system/src/global/form/text-field.tsxapps/admin-x-design-system/src/global/sortable-list.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/design-system-app.tsxapps/admin-x-design-system/src/global/list-heading.tsx
📚 Learning: 2025-05-28T12:54:13.035Z
Learnt from: kevinansfield
Repo: TryGhost/Ghost PR: 23566
File: apps/admin-x-design-system/src/global/form/ColorIndicator.tsx:77-79
Timestamp: 2025-05-28T12:54:13.035Z
Learning: In the ColorIndicator component in apps/admin-x-design-system/src/global/form/ColorIndicator.tsx, the containerClassName prop is currently useless because it gets hardcoded to 'flex flex-col gap-3' instead of being merged with any passed-in className.
Applied to files:
apps/admin-x-design-system/src/global/form/checkbox.tsxapps/admin-x-design-system/src/global/form/color-picker.stories.tsxapps/admin-x-design-system/src/global/form/color-indicator.tsxapps/admin-x-design-system/src/global/form/color-picker-field.stories.tsxapps/admin-x-design-system/src/global/form/color-picker.tsxapps/admin-x-design-system/src/global/form/color-indicator.stories.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use Tailwind CSS scoped via `.shade` class; dark mode uses `.dark`
Applied to files:
apps/admin-x-design-system/src/global/form/checkbox.tsxapps/admin-x-design-system/src/global/modal/preview-modal.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsx
📚 Learning: 2025-07-14T16:46:42.646Z
Learnt from: sagzy
Repo: TryGhost/Ghost PR: 24350
File: apps/admin-x-settings/src/components/settings/growth/Network.tsx:29-33
Timestamp: 2025-07-14T16:46:42.646Z
Learning: In the Ghost Admin UI, toggles should not display a checked state when disabled. The design principle is to either show disabled+unchecked or enabled+toggleable states, never checked+disabled. This applies to components like the Network toggle in apps/admin-x-settings/src/components/settings/growth/Network.tsx.
Applied to files:
apps/admin-x-design-system/src/global/form/toggle.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/form/toggle.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/assets/**/*.{svg} : Logos and custom icon SVGs should be placed in `src/assets/*` with icons auto-exported via `Icon`
Applied to files:
apps/admin-x-design-system/src/global/form/image-upload.tsxapps/admin-x-design-system/src/global/icon.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/global/tab-view.tsxapps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/no-value-label.tsx
📚 Learning: 2025-11-25T14:28:50.351Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T14:28:50.351Z
Learning: Ember admin uses `AdminXComponent` to dynamically import React apps with Suspense and error boundaries
Applied to files:
apps/admin-x-design-system/src/global/error-boundary.tsxapps/admin-x-design-system/src/global/form/html-editor.tsxapps/admin-x-design-system/src/global/error-boundary.stories.tsx
📚 Learning: 2025-10-23T07:35:27.719Z
Learnt from: jonatansberg
Repo: TryGhost/Ghost PR: 25227
File: apps/posts/src/views/Tags/components/TagsList.tsx:99-101
Timestamp: 2025-10-23T07:35:27.719Z
Learning: In the Shade library (apps/shade/src/components/ui/table.tsx), both TableRow and TableCell components include 'relative' positioning in their base className definitions by default, so explicit relative positioning may not be needed unless overriding with other position values like 'static'.
Applied to files:
apps/admin-x-design-system/src/global/table/dynamic-table.tsxapps/admin-x-design-system/src/global/table-row.stories.tsxapps/admin-x-design-system/src/global/table.tsxapps/admin-x-design-system/src/global/table.stories.tsxapps/admin-x-design-system/src/global/table-head.tsx
📚 Learning: 2025-10-23T07:31:38.913Z
Learnt from: jonatansberg
Repo: TryGhost/Ghost PR: 25227
File: apps/posts/src/views/Tags/components/TagsList.tsx:96-96
Timestamp: 2025-10-23T07:31:38.913Z
Learning: The Shade library's TableRow component includes a 'group' class in its base className, and custom selectors like [&.group:hover_td]:bg-transparent may be used to override default group-hover behavior from TableCell components.
Applied to files:
apps/admin-x-design-system/src/global/table/dynamic-table.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: When changing tokens/config, verify Storybook and a library build still succeed
Applied to files:
apps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/layout/page.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/{src,test}/**/*.{ts,tsx,js} : Follow ESLint and `tailwindcss/*` plugin rules when writing styles
Applied to files:
apps/admin-x-design-system/.eslintrc.cjs
📚 Learning: 2025-11-24T17:29:43.865Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: e2e/AGENTS.md:0-0
Timestamp: 2025-11-24T17:29:43.865Z
Learning: Applies to e2e/**/*.test.ts : Test suite names should follow the format 'Ghost Admin - Feature' or 'Ghost Public - Feature'
Applied to files:
apps/admin-x-design-system/.eslintrc.cjs
📚 Learning: 2025-11-24T17:29:43.865Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: e2e/AGENTS.md:0-0
Timestamp: 2025-11-24T17:29:43.865Z
Learning: Applies to e2e/**/*.test.ts : Test names should be lowercase and follow the format 'what is tested - expected outcome'
Applied to files:
apps/admin-x-design-system/src/global/table-row.stories.tsx
📚 Learning: 2025-11-12T22:26:48.725Z
Learnt from: troyciesco
Repo: TryGhost/Ghost PR: 25271
File: apps/stats/src/views/Stats/Growth/Growth.tsx:199-204
Timestamp: 2025-11-12T22:26:48.725Z
Learning: In apps/stats/src/views/Stats/Growth/Growth.tsx, the loading skeleton for the top posts/pages table intentionally uses colSpan={1} to only span the first (wider) column, creating a visual effect where the skeleton appears only in the main content column (which contains post/page titles with dates).
Applied to files:
apps/admin-x-design-system/src/global/layout/page.stories.tsx
📚 Learning: 2025-11-06T05:35:41.162Z
Learnt from: danielraffel
Repo: TryGhost/Ghost PR: 25366
File: apps/admin/src/layout/app-sidebar/NavHeader.tsx:13-23
Timestamp: 2025-11-06T05:35:41.162Z
Learning: In apps/admin/src/layout/app-sidebar/NavHeader.tsx, the React component dispatches a synthetic KeyboardEvent to trigger the Ember keymaster.js search modal shortcut. This approach is known to have cross-browser reliability issues but was deferred for architectural refactoring in a separate PR. The recommended fix is to expose a global function or custom DOM event from the Ember app instead of relying on synthetic keyboard events with keymaster.js.
Applied to files:
apps/admin-x-design-system/src/global/sort-menu.tsxapps/admin-x-design-system/src/global/modal/preview-modal.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Admin-X Settings tests
- GitHub Check: Lint
- GitHub Check: Unit tests (Node 22.18.0)
- GitHub Check: Build & Push
44a8e63 to
56178a2
Compare
There was a problem hiding this 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
🧹 Nitpick comments (1)
apps/admin-x-design-system/src/global/form/checkbox-group.stories.tsx (1)
3-9: Story import updated correctly to kebab-case filenameImporting
CheckboxGroupfrom./checkbox-groupmatches the new file naming convention and shouldn’t affect runtime behavior.While you’re here, consider normalizing the story
titlestring ('GLobal / Form / Checkbox group') to consistent capitalization if that casing isn’t intentional.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (107)
apps/admin-x-design-system/.eslintrc.cjs(1 hunks)apps/admin-x-design-system/.storybook/preview.tsx(1 hunks)apps/admin-x-design-system/README.md(0 hunks)apps/admin-x-design-system/src/boilerplate.stories.tsx(1 hunks)apps/admin-x-design-system/src/design-system-app.tsx(1 hunks)apps/admin-x-design-system/src/global/avatar.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/banner.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/breadcrumbs.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/breadcrumbs.tsx(1 hunks)apps/admin-x-design-system/src/global/button-group.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/button-group.tsx(2 hunks)apps/admin-x-design-system/src/global/button.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/button.tsx(1 hunks)apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/chrome/desktop-chrome.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/chrome/mobile-chrome.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/error-boundary.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/error-boundary.tsx(1 hunks)apps/admin-x-design-system/src/global/form/checkbox-group.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/checkbox-group.tsx(1 hunks)apps/admin-x-design-system/src/global/form/checkbox.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/checkbox.tsx(2 hunks)apps/admin-x-design-system/src/global/form/code-editor-view.tsx(1 hunks)apps/admin-x-design-system/src/global/form/code-editor.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/code-editor.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-indicator.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-indicator.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-picker-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-picker-field.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-picker.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/color-picker.tsx(1 hunks)apps/admin-x-design-system/src/global/form/currency-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/currency-field.tsx(1 hunks)apps/admin-x-design-system/src/global/form/file-upload.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/form.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/form/form.tsx(1 hunks)apps/admin-x-design-system/src/global/form/html-editor.tsx(1 hunks)apps/admin-x-design-system/src/global/form/html-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/html-field.tsx(1 hunks)apps/admin-x-design-system/src/global/form/image-upload.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/image-upload.tsx(1 hunks)apps/admin-x-design-system/src/global/form/multi-select.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/multi-select.tsx(1 hunks)apps/admin-x-design-system/src/global/form/radio.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/radio.tsx(2 hunks)apps/admin-x-design-system/src/global/form/select.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/select.tsx(1 hunks)apps/admin-x-design-system/src/global/form/text-area.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/text-area.tsx(1 hunks)apps/admin-x-design-system/src/global/form/text-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/text-field.tsx(1 hunks)apps/admin-x-design-system/src/global/form/toggle-group.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/toggle.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/toggle.tsx(1 hunks)apps/admin-x-design-system/src/global/form/url-text-field.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/form/url-text-field.tsx(1 hunks)apps/admin-x-design-system/src/global/heading.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/heading.tsx(1 hunks)apps/admin-x-design-system/src/global/hint.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/icon-label.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/icon-label.tsx(1 hunks)apps/admin-x-design-system/src/global/icon.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/infinite-scroll-listener.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/layout/app-menu.tsx(2 hunks)apps/admin-x-design-system/src/global/layout/global-actions.tsx(1 hunks)apps/admin-x-design-system/src/global/layout/page-header.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/layout/page.stories.tsx(4 hunks)apps/admin-x-design-system/src/global/layout/page.tsx(2 hunks)apps/admin-x-design-system/src/global/layout/view-container.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/layout/view-container.tsx(1 hunks)apps/admin-x-design-system/src/global/link.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/list-heading.tsx(1 hunks)apps/admin-x-design-system/src/global/list-item.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/list.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/list.tsx(1 hunks)apps/admin-x-design-system/src/global/loading-indicator.stories.tsx(3 hunks)apps/admin-x-design-system/src/global/menu.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/menu.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/limit-modal.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/modal-page.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/modal-page.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/modal.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/modal.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/modal/preview-modal.tsx(2 hunks)apps/admin-x-design-system/src/global/no-value-label.stories.tsx(3 hunks)apps/admin-x-design-system/src/global/no-value-label.tsx(1 hunks)apps/admin-x-design-system/src/global/pagination.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/pagination.tsx(2 hunks)apps/admin-x-design-system/src/global/popover.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/separator.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/sort-menu.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/sort-menu.tsx(2 hunks)apps/admin-x-design-system/src/global/sortable-list.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/sortable-list.tsx(1 hunks)apps/admin-x-design-system/src/global/sticky-footer.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/tab-view.stories.tsx(1 hunks)apps/admin-x-design-system/src/global/tab-view.tsx(1 hunks)apps/admin-x-design-system/src/global/table-head.tsx(1 hunks)apps/admin-x-design-system/src/global/table-row.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/table.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/table.tsx(1 hunks)apps/admin-x-design-system/src/global/table/dynamic-table.stories.tsx(2 hunks)apps/admin-x-design-system/src/global/table/dynamic-table.tsx(1 hunks)
⛔ Files not processed due to max files limit (26)
- apps/admin-x-design-system/src/global/toast.stories.tsx
- apps/admin-x-design-system/src/global/toast.tsx
- apps/admin-x-design-system/src/global/tooltip.stories.tsx
- apps/admin-x-design-system/src/index.ts
- apps/admin-x-design-system/src/providers/design-system-provider.tsx
- apps/admin-x-design-system/src/settings/setting-group-content.stories.tsx
- apps/admin-x-design-system/src/settings/setting-group-content.tsx
- apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
- apps/admin-x-design-system/src/settings/setting-group-header.tsx
- apps/admin-x-design-system/src/settings/setting-group.stories.tsx
- apps/admin-x-design-system/src/settings/setting-group.tsx
- apps/admin-x-design-system/src/settings/setting-nav-item.stories.tsx
- apps/admin-x-design-system/src/settings/setting-nav-item.tsx
- apps/admin-x-design-system/src/settings/setting-nav-section.stories.tsx
- apps/admin-x-design-system/src/settings/setting-section-header.stories.tsx
- apps/admin-x-design-system/src/settings/setting-section.stories.tsx
- apps/admin-x-design-system/src/settings/setting-section.tsx
- apps/admin-x-design-system/src/settings/setting-value.stories.tsx
- apps/admin-x-design-system/src/settings/setting-value.tsx
- apps/admin-x-design-system/src/settings/stripe-button.stories.tsx
- apps/admin-x-design-system/src/settings/stripe-button.tsx
- apps/admin-x-design-system/src/utils/modals.tsx
- apps/admin-x-design-system/test/.eslintrc.cjs
- apps/admin-x-design-system/test/unit/hooks/use-pagination.test.ts
- apps/admin-x-design-system/test/unit/hooks/use-sortable-indexed-list.test.ts
- apps/admin-x-design-system/test/unit/utils/format-url.test.ts
💤 Files with no reviewable changes (1)
- apps/admin-x-design-system/README.md
🚧 Files skipped from review as they are similar to previous changes (63)
- apps/admin-x-design-system/src/global/form/color-picker.stories.tsx
- apps/admin-x-design-system/src/global/list-item.stories.tsx
- apps/admin-x-design-system/src/boilerplate.stories.tsx
- apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx
- apps/admin-x-design-system/src/global/form/color-indicator.tsx
- apps/admin-x-design-system/src/global/error-boundary.stories.tsx
- apps/admin-x-design-system/src/global/form/url-text-field.stories.tsx
- apps/admin-x-design-system/src/global/tab-view.tsx
- apps/admin-x-design-system/src/global/hint.stories.tsx
- apps/admin-x-design-system/src/global/breadcrumbs.stories.tsx
- apps/admin-x-design-system/src/global/infinite-scroll-listener.stories.tsx
- apps/admin-x-design-system/src/global/breadcrumbs.tsx
- apps/admin-x-design-system/src/global/form/toggle.stories.tsx
- apps/admin-x-design-system/src/design-system-app.tsx
- apps/admin-x-design-system/src/global/icon.stories.tsx
- apps/admin-x-design-system/src/global/layout/app-menu.tsx
- apps/admin-x-design-system/src/global/sortable-list.tsx
- apps/admin-x-design-system/src/global/sticky-footer.stories.tsx
- apps/admin-x-design-system/.storybook/preview.tsx
- apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx
- apps/admin-x-design-system/src/global/form/select.stories.tsx
- apps/admin-x-design-system/src/global/chrome/mobile-chrome.stories.tsx
- apps/admin-x-design-system/src/global/form/code-editor.tsx
- apps/admin-x-design-system/src/global/modal/modal.tsx
- apps/admin-x-design-system/src/global/layout/page-header.stories.tsx
- apps/admin-x-design-system/src/global/form/color-indicator.stories.tsx
- apps/admin-x-design-system/src/global/form/text-area.stories.tsx
- apps/admin-x-design-system/src/global/sort-menu.tsx
- apps/admin-x-design-system/src/global/form/html-editor.tsx
- apps/admin-x-design-system/src/global/modal/modal.stories.tsx
- apps/admin-x-design-system/src/global/button.tsx
- apps/admin-x-design-system/src/global/tab-view.stories.tsx
- apps/admin-x-design-system/src/global/layout/page.stories.tsx
- apps/admin-x-design-system/src/global/form/radio.tsx
- apps/admin-x-design-system/src/global/form/text-field.tsx
- apps/admin-x-design-system/src/global/menu.stories.tsx
- apps/admin-x-design-system/src/global/banner.stories.tsx
- apps/admin-x-design-system/src/global/heading.tsx
- apps/admin-x-design-system/src/global/form/currency-field.tsx
- apps/admin-x-design-system/src/global/form/checkbox.tsx
- apps/admin-x-design-system/src/global/chrome/desktop-chrome.stories.tsx
- apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx
- apps/admin-x-design-system/src/global/table-row.stories.tsx
- apps/admin-x-design-system/src/global/avatar.stories.tsx
- apps/admin-x-design-system/src/global/form/html-field.tsx
- apps/admin-x-design-system/src/global/form/image-upload.tsx
- apps/admin-x-design-system/src/global/form/currency-field.stories.tsx
- apps/admin-x-design-system/src/global/form/image-upload.stories.tsx
- apps/admin-x-design-system/src/global/menu.tsx
- apps/admin-x-design-system/src/global/form/toggle.tsx
- apps/admin-x-design-system/src/global/sortable-list.stories.tsx
- apps/admin-x-design-system/src/global/loading-indicator.stories.tsx
- apps/admin-x-design-system/src/global/error-boundary.tsx
- apps/admin-x-design-system/src/global/form/multi-select.tsx
- apps/admin-x-design-system/src/global/separator.stories.tsx
- apps/admin-x-design-system/src/global/form/color-picker-field.stories.tsx
- apps/admin-x-design-system/src/global/form/color-picker.tsx
- apps/admin-x-design-system/src/global/form/multi-select.stories.tsx
- apps/admin-x-design-system/src/global/table.stories.tsx
- apps/admin-x-design-system/src/global/layout/view-container.stories.tsx
- apps/admin-x-design-system/src/global/table-head.tsx
- apps/admin-x-design-system/src/global/form/checkbox.stories.tsx
- apps/admin-x-design-system/src/global/heading.stories.tsx
🧰 Additional context used
🧠 Learnings (23)
📓 Common learnings
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use `PascalCase` for component identifiers in filenames while keeping ShadCN-generated files in kebab-case
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use `camelCase` for function and variable names
Learnt from: ibalosh
Repo: TryGhost/Ghost PR: 25525
File: apps/shade/src/shade-app.tsx:4-4
Timestamp: 2025-11-25T11:58:51.652Z
Learning: In apps/shade, the app wrapper file should be named `src/shade-app.tsx` (kebab-case) while the component itself is exported as `ShadeApp` (PascalCase). Context providers should be placed in `src/providers/*` using kebab-case filenames.
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/{src,test}/**/*.{ts,tsx,js} : Follow ESLint and `tailwindcss/*` plugin rules when writing styles
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/**/*.stories.{ts,tsx} : Storybook stories should demonstrate key variants and states (sizes, disabled/loading, critical props) with minimal but representative examples
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/ui/**/*.{ts,tsx} : Atomic UI components should be placed in `src/components/ui/*` and each component must have a corresponding `*.stories.tsx` file next to it for Storybook documentation
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use the `@` alias for internal imports (e.g., `@/lib/utils`)
Learnt from: sagzy
Repo: TryGhost/Ghost PR: 24673
File: ghost/i18n/lib/i18n.js:34-35
Timestamp: 2025-11-24T11:12:15.712Z
Learning: In the Ghost i18n package (ghost/i18n/lib/i18n.js), changing existing locale codes requires backwards compatibility handling for users who have already configured those locales. Such changes should be done in a separate PR with migration logic rather than included in feature PRs.
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use `PascalCase` for component identifiers in filenames while keeping ShadCN-generated files in kebab-case
Applied to files:
apps/admin-x-design-system/src/global/table.tsxapps/admin-x-design-system/src/global/form/checkbox-group.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/pagination.stories.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/table/dynamic-table.stories.tsxapps/admin-x-design-system/src/global/form/text-area.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/list.tsxapps/admin-x-design-system/src/global/form/code-editor.stories.tsxapps/admin-x-design-system/src/global/form/text-field.stories.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/.eslintrc.cjsapps/admin-x-design-system/src/global/icon-label.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use `camelCase` for function and variable names
Applied to files:
apps/admin-x-design-system/src/global/table.tsxapps/admin-x-design-system/.eslintrc.cjs
📚 Learning: 2025-10-23T07:35:27.719Z
Learnt from: jonatansberg
Repo: TryGhost/Ghost PR: 25227
File: apps/posts/src/views/Tags/components/TagsList.tsx:99-101
Timestamp: 2025-10-23T07:35:27.719Z
Learning: In the Shade library (apps/shade/src/components/ui/table.tsx), both TableRow and TableCell components include 'relative' positioning in their base className definitions by default, so explicit relative positioning may not be needed unless overriding with other position values like 'static'.
Applied to files:
apps/admin-x-design-system/src/global/table.tsxapps/admin-x-design-system/src/global/table/dynamic-table.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use the `@` alias for internal imports (e.g., `@/lib/utils`)
Applied to files:
apps/admin-x-design-system/src/global/table.tsxapps/admin-x-design-system/src/global/form/file-upload.stories.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/no-value-label.tsxapps/admin-x-design-system/src/global/form/text-area.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/list.tsxapps/admin-x-design-system/src/global/form/code-editor.stories.tsxapps/admin-x-design-system/src/global/list-heading.tsxapps/admin-x-design-system/src/global/form/radio.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/ui/**/*.{ts,tsx} : Atomic UI components should be placed in `src/components/ui/*` and each component must have a corresponding `*.stories.tsx` file next to it for Storybook documentation
Applied to files:
apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsxapps/admin-x-design-system/src/global/form/file-upload.stories.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/form/checkbox-group.stories.tsxapps/admin-x-design-system/src/global/pagination.stories.tsxapps/admin-x-design-system/src/global/no-value-label.stories.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/table/dynamic-table.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/button-group.stories.tsxapps/admin-x-design-system/src/global/form/code-editor.stories.tsxapps/admin-x-design-system/src/global/popover.stories.tsxapps/admin-x-design-system/src/global/form/text-field.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsxapps/admin-x-design-system/src/global/sort-menu.stories.tsxapps/admin-x-design-system/src/global/form/radio.stories.tsxapps/admin-x-design-system/src/global/button.stories.tsxapps/admin-x-design-system/src/global/form/html-field.stories.tsxapps/admin-x-design-system/src/global/link.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/global/form/form.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/**/*.stories.{ts,tsx} : Storybook stories should demonstrate key variants and states (sizes, disabled/loading, critical props) with minimal but representative examples
Applied to files:
apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsxapps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/form/checkbox-group.stories.tsxapps/admin-x-design-system/src/global/no-value-label.stories.tsxapps/admin-x-design-system/src/global/table/dynamic-table.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/button-group.stories.tsxapps/admin-x-design-system/src/global/popover.stories.tsxapps/admin-x-design-system/src/global/form/text-field.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsxapps/admin-x-design-system/src/global/sort-menu.stories.tsxapps/admin-x-design-system/src/global/button.stories.tsxapps/admin-x-design-system/src/global/link.stories.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsxapps/admin-x-design-system/src/global/form/form.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/index.ts : Place new UI components under `src/components/ui` and export them from `src/index.ts`
Applied to files:
apps/admin-x-design-system/src/global/form/file-upload.stories.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/layout/global-actions.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsx
📚 Learning: 2025-10-23T07:31:38.913Z
Learnt from: jonatansberg
Repo: TryGhost/Ghost PR: 25227
File: apps/posts/src/views/Tags/components/TagsList.tsx:96-96
Timestamp: 2025-10-23T07:31:38.913Z
Learning: The Shade library's TableRow component includes a 'group' class in its base className, and custom selectors like [&.group:hover_td]:bg-transparent may be used to override default group-hover behavior from TableCell components.
Applied to files:
apps/admin-x-design-system/src/global/table/dynamic-table.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/**/*.stories.{ts,tsx} : Storybook stories for new components should include an overview explaining what the component does and its primary use case
Applied to files:
apps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/no-value-label.stories.tsxapps/admin-x-design-system/src/global/table/dynamic-table.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsxapps/admin-x-design-system/src/global/sort-menu.stories.tsxapps/admin-x-design-system/src/global/form/form.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: When changing tokens/config, verify Storybook and a library build still succeed
Applied to files:
apps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/modal/modal-page.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: For new UI components, prioritize comprehensive Storybook stories; add focused unit tests where they provide real value (e.g., hooks, utils, logic-heavy parts)
Applied to files:
apps/admin-x-design-system/src/global/form/toggle-group.stories.tsxapps/admin-x-design-system/src/global/no-value-label.stories.tsxapps/admin-x-design-system/src/global/list.stories.tsxapps/admin-x-design-system/src/global/popover.stories.tsxapps/admin-x-design-system/src/global/form/form.stories.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use CVA (Class Variance Authority) for component variants when useful instead of heavy prop configuration
Applied to files:
apps/admin-x-design-system/src/global/form/checkbox-group.tsxapps/admin-x-design-system/src/global/modal/limit-modal.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/button-group.tsxapps/admin-x-design-system/src/global/modal/confirmation-modal.tsxapps/admin-x-design-system/src/global/form/color-picker-field.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Prefer compound subcomponents (e.g., `Header.Title`, `Header.Meta`, `Header.Actions`) for multi-region components instead of many props
Applied to files:
apps/admin-x-design-system/src/global/form/checkbox-group.tsxapps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/form/form.tsxapps/admin-x-design-system/src/global/form/text-area.tsxapps/admin-x-design-system/src/global/list.tsxapps/admin-x-design-system/src/global/list-heading.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/layout/**/*.{ts,tsx} : Reusable layout containers (Page, Heading, Header, ViewHeader, ErrorPage) should be placed in `src/components/layout/*`
Applied to files:
apps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/layout/view-container.tsxapps/admin-x-design-system/src/global/form/form.tsxapps/admin-x-design-system/src/global/modal/modal-page.tsxapps/admin-x-design-system/src/global/layout/global-actions.tsxapps/admin-x-design-system/src/global/list-heading.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/features/**/*.{ts,tsx} : Higher-level, opinionated components (e.g., PostShareModal, SourceTabs) should be placed in `src/components/features/*`
Applied to files:
apps/admin-x-design-system/src/global/layout/page.tsxapps/admin-x-design-system/src/global/layout/view-container.tsx
📚 Learning: 2025-11-25T11:58:51.652Z
Learnt from: ibalosh
Repo: TryGhost/Ghost PR: 25525
File: apps/shade/src/shade-app.tsx:4-4
Timestamp: 2025-11-25T11:58:51.652Z
Learning: In apps/shade, the app wrapper file should be named `src/shade-app.tsx` (kebab-case) while the component itself is exported as `ShadeApp` (PascalCase). Context providers should be placed in `src/providers/*` using kebab-case filenames.
Applied to files:
apps/admin-x-design-system/src/global/layout/page.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/assets/**/*.{svg} : Logos and custom icon SVGs should be placed in `src/assets/*` with icons auto-exported via `Icon`
Applied to files:
apps/admin-x-design-system/src/global/icon-label.tsxapps/admin-x-design-system/src/global/no-value-label.tsxapps/admin-x-design-system/src/global/icon-label.stories.tsx
📚 Learning: 2025-01-29T15:23:58.658Z
Learnt from: cathysarisky
Repo: TryGhost/Ghost PR: 21982
File: ghost/i18n/locales/hu v2/portal.json:70-70
Timestamp: 2025-01-29T15:23:58.658Z
Learning: Typos and spelling errors within localization files (ghost/i18n/locales/*.json) must be treated as important problems, not nitpicks, as they directly affect the user experience for speakers of that language. These issues should be flagged with high priority during code review.
Applied to files:
apps/admin-x-design-system/src/global/no-value-label.stories.tsx
📚 Learning: 2025-05-28T12:54:13.035Z
Learnt from: kevinansfield
Repo: TryGhost/Ghost PR: 23566
File: apps/admin-x-design-system/src/global/form/ColorIndicator.tsx:77-79
Timestamp: 2025-05-28T12:54:13.035Z
Learning: In the ColorIndicator component in apps/admin-x-design-system/src/global/form/ColorIndicator.tsx, the containerClassName prop is currently useless because it gets hardcoded to 'flex flex-col gap-3' instead of being merged with any passed-in className.
Applied to files:
apps/admin-x-design-system/src/global/form/color-picker-field.tsx
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/{src,test}/**/*.{ts,tsx,js} : Follow ESLint and `tailwindcss/*` plugin rules when writing styles
Applied to files:
apps/admin-x-design-system/.eslintrc.cjs
📚 Learning: 2025-11-24T17:29:43.865Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: e2e/AGENTS.md:0-0
Timestamp: 2025-11-24T17:29:43.865Z
Learning: Applies to e2e/**/*.test.ts : Test suite names should follow the format 'Ghost Admin - Feature' or 'Ghost Public - Feature'
Applied to files:
apps/admin-x-design-system/.eslintrc.cjs
📚 Learning: 2025-11-24T11:12:15.712Z
Learnt from: sagzy
Repo: TryGhost/Ghost PR: 24673
File: ghost/i18n/lib/i18n.js:34-35
Timestamp: 2025-11-24T11:12:15.712Z
Learning: In the Ghost i18n package (ghost/i18n/lib/i18n.js), changing existing locale codes requires backwards compatibility handling for users who have already configured those locales. Such changes should be done in a separate PR with migration logic rather than included in feature PRs.
Applied to files:
apps/admin-x-design-system/.eslintrc.cjs
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Admin-X Settings tests
- GitHub Check: Unit tests (Node 22.18.0)
- GitHub Check: Lint
- GitHub Check: Build & Push
🔇 Additional comments (46)
apps/admin-x-design-system/src/global/form/html-field.stories.tsx (1)
3-3: Import path rename matches new kebab-case conventionThe updated import path correctly reflects the kebab-case filename and should keep Storybook behavior unchanged. No issues from this change.
apps/admin-x-design-system/src/global/link.stories.tsx (1)
3-24: Import path and story definition look correctThe switch to
./linkmatches the new lowercase filename convention, and the Storybook meta/story typings remain valid with no behavioral changes. All good here.apps/admin-x-design-system/src/global/popover.stories.tsx (1)
4-5: Imports correctly aligned to kebab-case filenamesUpdating the imports to
./buttonand./popovermatches the new lowercase/kebab-case filename convention without altering story behavior. Looks good and consistent with the PR’s goals.apps/admin-x-design-system/src/global/form/code-editor.stories.tsx (1)
5-5: Import path now correctly follows kebab-case filename conventionThe updated import (
./code-editor) matches the kebab-case file naming goal while retaining a PascalCase component identifier; this is consistent with the stated PR conventions.apps/admin-x-design-system/src/global/form/checkbox-group.tsx (1)
2-4: Import path casing aligns with kebab-case renamesSwitching
Heading,Hint, andCheckboximports to kebab-case paths is consistent with the PR’s filename convention change and preserves behavior (same default + named export usage).apps/admin-x-design-system/src/global/form/text-area.tsx (1)
4-6: LGTM! Import paths correctly updated to kebab-case.The import paths have been properly updated to use kebab-case file names while maintaining PascalCase for the component exports (
useFocusContext,Heading,Hint). This aligns with the PR objective of standardizing filenames to kebab-case format.apps/admin-x-design-system/src/global/form/form.stories.tsx (2)
3-7: Imports correctly updated to kebab-case pathsThe Storybook story and component imports now match the kebab-case filenames and PR conventions; no behavioral changes introduced.
56-56: Formatting-only change is safeThe updated closing brace here is formatting-only and does not affect story behavior.
apps/admin-x-design-system/src/global/form/file-upload.stories.tsx (1)
3-3: LGTM! Import path correctly updated to kebab-case.The import path change from
./FileUploadto./file-uploadaligns with the PR's kebab-case standardization objective while correctly preserving the PascalCase component identifier.apps/admin-x-design-system/src/global/form/code-editor-view.tsx (1)
5-7: LGTM! Import paths correctly updated to kebab-case.The import paths have been properly updated to reflect the renamed files (kebab-case), while maintaining correct casing for the imported identifiers (PascalCase for components, camelCase for hooks). This aligns with the PR objective to standardize filenames to kebab-case.
apps/admin-x-design-system/src/global/form/url-text-field.tsx (1)
2-4: Imports correctly updated to kebab‑case module pathsThe updated import paths align with the new kebab-case filenames and preserve the existing component/util APIs; no behavioral changes introduced here.
apps/admin-x-design-system/src/global/form/form.tsx (1)
3-3: LGTM! Import path updated to kebab-case.The import path correctly reflects the kebab-case naming convention. No functional changes.
apps/admin-x-design-system/src/global/form/select.tsx (1)
5-8: LGTM! Import paths updated to kebab-case.All import paths correctly reflect the kebab-case naming convention. No functional changes.
apps/admin-x-design-system/src/global/form/text-field.stories.tsx (1)
5-7: LGTM! Import paths updated to kebab-case.All import paths correctly reflect the kebab-case naming convention. Story configuration and logic remain unchanged.
apps/admin-x-design-system/src/global/sort-menu.stories.tsx (1)
3-3: LGTM! Import path correctly updated to kebab-case.The import path change from
'./SortMenu'to'./sort-menu'aligns with the PR's kebab-case standardization objective and ensures consistent filename resolution across different filesystems.apps/admin-x-design-system/src/global/button.stories.tsx (1)
3-3: Import path correctly uses kebab-case convention.The change from
'./Button'to'./button'is correct and consistent with the kebab-case naming already applied throughout the codebase. The button.tsx file exists and all related imports have been updated accordingly.apps/admin-x-design-system/src/global/form/toggle-group.stories.tsx (1)
3-4: Import paths correctly updated to kebab-case.The kebab-case file naming has been properly applied:
./toggleand./toggle-group, while component identifiers remain PascalCase. Both renamed files exist and are correctly exported.apps/admin-x-design-system/src/global/form/color-picker-field.tsx (1)
4-6: Import paths correctly migrated to kebab-case naming convention.The import statements in lines 4-6 have been properly updated to use kebab-case file paths (color-indicator, color-picker, toggle), while the component identifiers themselves correctly remain in PascalCase (ColorIndicator, ColorPicker, ToggleDirections). The corresponding files have been renamed, and no remaining old-style PascalCase imports exist in the codebase.
apps/admin-x-design-system/src/global/icon-label.tsx (1)
2-2: Import path is correctly using kebab-case naming.The import
import Icon from './icon';matches the actual kebab-case filenameicon.tsx. No inconsistent uppercase Icon imports exist in the codebase.apps/admin-x-design-system/src/global/icon-label.stories.tsx (1)
3-3: Import path correctly uses kebab-case naming convention.All story file imports in admin-x-design-system follow the consistent pattern of kebab-case file paths with PascalCase component identifiers. The icon-label.stories.tsx import (
from './icon-label') aligns with this established convention across the entire codebase.apps/admin-x-design-system/src/global/layout/global-actions.tsx (1)
2-10: Import path normalization to kebab-case looks correctThe Button import now matches the kebab-case filename (
../button), and the default export remains unchanged, so this should resolve cleanly on case-sensitive filesystems.apps/admin-x-design-system/src/global/no-value-label.tsx (1)
2-2: Icon import updated to match lowercase filenameSwitching to
./iconaligns with the kebab-case file naming and should be a no-op functionally as long as the file was renamed accordingly.apps/admin-x-design-system/src/global/form/radio.stories.tsx (1)
4-4: Radio story now targets kebab-case component pathUpdating the import to
./radiokeeps the stories in sync with the renamed component file; the rest of the story typings and args remain valid.apps/admin-x-design-system/src/global/no-value-label.stories.tsx (1)
3-34: Stories now import kebab-case modules and fix copy typoBoth List/NoValueLabel imports now use lowercase paths, and the displayed text has the corrected “No available entry” copy in all occurrences, which is consistent and tidy for Storybook.
apps/admin-x-design-system/src/global/list.tsx (1)
3-6: Heading/Hint/ListHeading/Separator imports aligned with kebab-case filesAll shared global components are now imported from lowercase paths (
./heading,./hint,./list-heading,./separator), matching the new filename convention without altering List’s behavior.apps/admin-x-design-system/.eslintrc.cjs (1)
33-35: New filename rule matches the kebab-case naming conventionAdding
'ghost/filenames/match-regex': ['error', '^[a-z0-9.-]+$', false]will enforce lowercase, digit, hyphen, and dot-only filenames, which fits the intended kebab-case pattern across this package.apps/admin-x-design-system/src/global/modal/modal-page.tsx (1)
3-3: ModalPage Heading import updated to lowercase pathUsing
../headingbrings this file in line with the rest of the global components’ kebab-case filenames, with no change to the ModalPage API.apps/admin-x-design-system/src/global/button-group.stories.tsx (1)
3-5: ButtonGroup stories now reference kebab-case modulesThe story imports for
ButtonGroupandButtonPropscorrectly point to./button-groupand./button, and the file now has a proper trailing newline; story args remain unchanged.Also applies to: 61-61
apps/admin-x-design-system/src/global/modal/limit-modal.tsx (1)
3-3: LGTM! Import path correctly updated to kebab-case.The import path change from
./Modalto./modalaligns with the PR's objective to standardize filenames to kebab-case format. The component logic remains unchanged.apps/admin-x-design-system/src/global/table/dynamic-table.tsx (1)
4-4: LGTM! Import path correctly updated to kebab-case.The import path for
tableRowHoverBgClasseshas been correctly updated from../TableRowto../table-row, consistent with the kebab-case naming convention.apps/admin-x-design-system/src/global/layout/view-container.tsx (1)
2-7: LGTM! All import paths correctly updated to kebab-case.The import paths for
TabView,Heading,Button,ButtonGroup, andDynamicTablehave been consistently updated to their kebab-case equivalents. This aligns with the PR's objective to standardize filename conventions.apps/admin-x-design-system/src/global/modal/modal-page.stories.tsx (1)
3-3: LGTM! Storybook import path correctly updated.The import path has been updated from
./ModalPageto./modal-page, maintaining consistency with the kebab-case naming convention across the design system.apps/admin-x-design-system/src/global/list-heading.tsx (1)
2-3: LGTM! Import paths correctly updated to kebab-case.Both imports for
HeadingandSeparatorhave been updated to their kebab-case equivalents (./headingand./separator), aligning with the standardized naming convention.apps/admin-x-design-system/src/global/pagination.stories.tsx (1)
3-3: LGTM! Storybook import path correctly updated.The import path has been updated from
./Paginationto./pagination, maintaining consistency with the kebab-case filename convention.apps/admin-x-design-system/src/global/table/dynamic-table.stories.tsx (1)
3-7: LGTM! All story import paths correctly updated to kebab-case.All component imports (
DynamicTable,Avatar,Hint,Pagination,Button) have been consistently updated to their kebab-case paths, maintaining alignment with the standardized naming convention.apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx (1)
5-6: LGTM! Storybook import paths correctly updated to kebab-case.Both imports for
ButtonandConfirmationModalhave been updated to their kebab-case equivalents (../buttonand./confirmation-modal), aligning with the standardized naming convention across modal components.apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx (1)
1-4: LGTM! Import paths updated to kebab-case.The import path updates are consistent with the PR's objective to standardize filenames to kebab-case format across the admin design system.
apps/admin-x-design-system/src/global/list.stories.tsx (1)
3-5: LGTM! Storybook imports updated to kebab-case.The import path updates align with the new kebab-case file naming convention.
apps/admin-x-design-system/src/global/table.tsx (1)
3-9: LGTM! Import paths consistently updated to kebab-case.All import path updates (use-pagination, heading, hint, loading-indicator, pagination, separator, table-row) follow the kebab-case convention uniformly.
apps/admin-x-design-system/src/global/button-group.tsx (2)
2-5: LGTM! Import paths updated to kebab-case.The import path updates for button and tooltip components are consistent with the kebab-case naming convention.
57-57: LGTM! Minor formatting improvement.The spacing around the ternary operator improves readability without changing behavior.
apps/admin-x-design-system/src/global/pagination.tsx (2)
2-3: LGTM! Import paths updated to kebab-case.The import path updates align with the new file naming convention.
19-21: LGTM! Improved Tailwind utility usage.Replacing
h-[10px] w-[10px]withsize-[10px]is a more concise way to specify equal dimensions in Tailwind CSS while maintaining identical behavior.apps/admin-x-design-system/src/global/layout/page.tsx (1)
2-8: LGTM! Import paths updated to kebab-case.All import path updates (tab-view, app-menu, global-actions, button, breadcrumbs, page-header) are consistent with the kebab-case naming convention.
apps/admin-x-design-system/src/global/modal/preview-modal.tsx (2)
4-15: LGTM! Import paths updated to kebab-case.All import path updates across hooks, components, and utilities are consistent with the kebab-case naming convention.
283-283: LGTM! Improved Tailwind utility usage.Replacing
h-full w-fullwithsize-fullis more concise while maintaining identical behavior.
|
hey @peterzimon this is just a simple rename in design system. It passes all checks, and I took a look manually of storybook stories, they look fine. If you will have a minute or two, would love if you could take a quick glance through it, just in case you can think of something that could break. Thanks |
# Conflicts: # apps/admin-x-design-system/src/global/form/html-editor.tsx # apps/admin-x-design-system/src/index.ts
56178a2 to
06d7c6c
Compare
ref https://linear.app/ghost/issue/NY-722/migrate-ghost-codebase-to-kebab-case-file-naming-convention
what
why