Dev - #70
Dev#70
Conversation
- Register new shader components in the registry. - Add documentation pages for both shaders. - Create demo examples for various configurations. - Update layout shell to prevent overflow.
Apply uniform import ordering and syntax formatting across the codebase to improve readability and maintainability.
…ding feat: Add Dot Orbit and Mesh Gradient shader components with docs
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughThis PR adds new dot-orbit-shader and mesh-gradient-shader UI components (with examples, docs, playground, and registry entries) backed by a new ChangesShader Components Feature
Sidebar Sheet Overlay Refactor
Import Reordering and Formatting Cleanup
Estimated code review effort: 3 (Moderate) | ~30 minutes Sequence Diagram(s)sequenceDiagram
participant User
participant SheetTrigger
participant Sheet
participant SheetContent
participant SidebarContent
User->>SheetTrigger: click mobile toggle button
SheetTrigger->>Sheet: set open state true
Sheet->>SheetContent: render overlay/popup
SheetContent->>SidebarContent: render grouped links + navLinks
User->>SidebarContent: click a nav link
SidebarContent->>Sheet: onLinkClick closes sidebar
sequenceDiagram
participant Demo as Example/Playground
participant DotOrbitShader
participant MeshGradientShader
participant ShadersReact as "`@paper-design/shaders-react`"
Demo->>DotOrbitShader: pass colors/size/speed props
DotOrbitShader->>ShadersReact: render DotOrbit filling container
Demo->>MeshGradientShader: pass colors/distortion/swirl props
MeshGradientShader->>ShadersReact: render MeshGradient filling container
Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/registry/sonaui/fan-view/fan-view.tsx (1)
40-49: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winCenter the single-item case.
total <= 1still maps a lone card toprogress = 0, which places it at-40°instead of centered above the toggle. If one-card fans are supported, special-casetotal === 1.Suggested fix
- const progress = total <= 1 ? 0 : index / (total - 1); + const progress = total === 1 ? 0.5 : total <= 1 ? 0 : index / (total - 1);🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/registry/sonaui/fan-view/fan-view.tsx` around lines 40 - 49, The single-item fan layout in getFanPoint still uses the left-offset angle when total is 1, so a lone card is not centered above the toggle. Update getFanPoint to special-case total === 1 and return a centered position/rotation for that case, while keeping the existing progress-based math for multi-item fans. Use the existing getFanPoint helper as the fix point so the one-card path is handled consistently wherever fan points are computed.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/app/api/read-file/route.ts`:
- Around line 34-37: The 404 response in the read-file route is exposing the
resolved filesystem path, which should not be sent to clients. Update the logic
in the route handler that checks fs.existsSync(txtFilePath) so the
NextResponse.json payload returns a generic not-found message only, and keep the
concrete txtFilePath details in server-side logging if needed.
In `@src/app/globals.css`:
- Around line 132-134: The CSS in globals.css should keep the height calc
expression on a single line to satisfy the scss/operator-no-newline-after lint
rule. Update the existing calc() declaration in the globals stylesheet so the
subtraction stays inline, using the same value and variables already present,
and make sure the rule remains valid without changing the computed result.
In `@src/components/component-sidebar/index.tsx`:
- Around line 109-141: The mobile sheet content is missing a responsive guard,
so it can still render on desktop when the parent controls isOpen. Add the same
lg:hidden behavior to SheetContent in component-sidebar/index.tsx, alongside the
existing SheetTrigger and SidebarContent mobile logic, so the SheetContent only
displays on small screens.
In `@src/config/components.ts`:
- Around line 94-105: The “Circular Dock Menu” and “Fan View” items are
commented out in the components config, so they no longer appear in
groupedComponents and the sidebar. Update the components list in the config so
these entries are either restored as active items or removed entirely if they
are intentionally obsolete; use the existing component definitions around the
commented entries to keep the navigation in sync with the docs pages.
In `@src/registry/sonaui/dot-orbit-shader/dot-orbit-shader.tsx`:
- Around line 7-8: The DotOrbitShaderProps and MeshGradientShaderProps type
declarations reference React.HTMLAttributes<HTMLDivElement> without importing
the React type namespace, which causes a TypeScript error. Add a type-only React
import at the top of both dot-orbit-shader.tsx and mesh-gradient-shader.tsx,
keeping the props interfaces unchanged so the React.HTMLAttributes reference
resolves correctly.
In `@src/styles/theme-data.css`:
- Around line 64-66: The theme sizing expression is split across multiple lines,
which violates the current Stylelint operator rule. Update the calc() value in
the theme stylesheet so the full subtraction remains on a single line, keeping
the existing value and operators intact. Use the existing CSS variable-based
sizing expression near the theme-data definition as the place to fix it.
---
Outside diff comments:
In `@src/registry/sonaui/fan-view/fan-view.tsx`:
- Around line 40-49: The single-item fan layout in getFanPoint still uses the
left-offset angle when total is 1, so a lone card is not centered above the
toggle. Update getFanPoint to special-case total === 1 and return a centered
position/rotation for that case, while keeping the existing progress-based math
for multi-item fans. Use the existing getFanPoint helper as the fix point so the
one-card path is handled consistently wherever fan points are computed.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 5c21e268-c36a-4f18-a56f-383abf28ba82
⛔ Files ignored due to path filters (1)
bun.lockis excluded by!**/*.lock
📒 Files selected for processing (107)
next.config.tspackage.jsonpublic/r/accordion.jsonpublic/r/bubble-up-button.jsonpublic/r/circular-dock-menu.jsonpublic/r/dot-orbit-shader.jsonpublic/r/expandable-tabs.jsonpublic/r/fan-view.jsonpublic/r/link-preview.jsonpublic/r/magnetic-button.jsonpublic/r/marquee.jsonpublic/r/mesh-gradient-shader.jsonpublic/r/registry.jsonpublic/r/stagger-text.jsonregistry.jsonscripts/build-prop-types.tssrc/app/api/read-file/route.tssrc/app/docs/not-found.tsxsrc/app/globals.csssrc/app/playground/page.tsxsrc/app/robots.tssrc/assets/svgs/index.tssrc/components/Search.tsxsrc/components/button/index.tsxsrc/components/code-block/code-block-source.tsxsrc/components/code-block/code-block.tsxsrc/components/code-block/internal-code-block.tsxsrc/components/code-block/lib/shiki-shared.tssrc/components/code-block/lib/transformers/utils.tssrc/components/common/Fade.tsxsrc/components/common/animated-link.tsxsrc/components/common/code-syntax-highlighter.tsxsrc/components/common/component-installation-server.tsxsrc/components/common/component-installation.tsxsrc/components/common/component-preview-server.tsxsrc/components/common/component-preview.tsxsrc/components/common/fade-in.tsxsrc/components/common/full-width-text.tsxsrc/components/common/logo.tsxsrc/components/common/mdx-components.tsxsrc/components/common/scroll-up-button.tsxsrc/components/common/shadcn-button.tsxsrc/components/common/sheet.tsxsrc/components/common/sidebar-link.tsxsrc/components/common/splil-text-comp.tsxsrc/components/common/stagger-text.tsxsrc/components/common/start-count.tsxsrc/components/common/tabs.tsxsrc/components/common/tag.tsxsrc/components/common/theme-provider.tsxsrc/components/common/theme-toggle.tsxsrc/components/component-card/index.tsxsrc/components/component-sidebar/index.tsxsrc/components/copy-button/copy-button.tsxsrc/components/docs-layout-shell.tsxsrc/components/header/index.tsxsrc/components/hero/feature-grid/InfoCard.tsxsrc/components/hero/feature-grid/index.tsxsrc/components/hero/index-old.tsxsrc/components/profile-popover/index.tsxsrc/components/scroll-area/scroll-area.tsxsrc/components/tabs/tabs.tsxsrc/components/usage/component-usage-server.tsxsrc/components/usage/component-usage.tsxsrc/config/components.tssrc/config/metadata.tssrc/content/docs/changelog.mdxsrc/content/docs/dot-orbit-shader.mdxsrc/content/docs/mesh-gradient-shader.mdxsrc/fonts/clashDisplay/index.tssrc/hooks/useClock.tssrc/hooks/useGitStars.tssrc/lib/fileReader.tssrc/lib/types.tssrc/lib/utils.tssrc/registry/examples/accordion/accordion-splitted.tsxsrc/registry/examples/circular-dock-menu/circular-dock-menu-demo.tsxsrc/registry/examples/dot-orbit-shader/dot-orbit-shader-demo.tsxsrc/registry/examples/dot-orbit-shader/dot-orbit-shader-dense.tsxsrc/registry/examples/dot-orbit-shader/dot-orbit-shader-pastel.tsxsrc/registry/examples/dot-orbit-shader/dot-orbit-shader-slow.tsxsrc/registry/examples/expandable-tabs/expandable-tabs-demo.tsxsrc/registry/examples/hold-to-delete-button/hold-to-delete-button-demo.tsxsrc/registry/examples/mesh-gradient-shader/mesh-gradient-shader-demo.tsxsrc/registry/examples/mesh-gradient-shader/mesh-gradient-shader-monochrome.tsxsrc/registry/examples/mesh-gradient-shader/mesh-gradient-shader-ocean.tsxsrc/registry/examples/mesh-gradient-shader/mesh-gradient-shader-static.tsxsrc/registry/examples/mesh-gradient-shader/mesh-gradient-shader-sunset.tsxsrc/registry/examples/ripple-button/ripple-button-demo.tsxsrc/registry/examples/spinning-text/spinning-text-demo.tsxsrc/registry/index.tssrc/registry/playground/index.tsxsrc/registry/prop-types.tssrc/registry/registry.jsonsrc/registry/sonaui/accordion/accordion.tsxsrc/registry/sonaui/bubble-up-button/bubble-up-button.tsxsrc/registry/sonaui/circular-dock-menu/circular-dock-menu.tsxsrc/registry/sonaui/dot-orbit-shader/dot-orbit-shader.tsxsrc/registry/sonaui/expandable-tabs/expandable-tabs.tsxsrc/registry/sonaui/fan-view/fan-view.tsxsrc/registry/sonaui/link-preview/link-preview.tsxsrc/registry/sonaui/magnetic-button/magnetic-button.tsxsrc/registry/sonaui/marquee/marquee.tsxsrc/registry/sonaui/mesh-gradient-shader/mesh-gradient-shader.tsxsrc/registry/sonaui/stagger-text/stagger-text.tsxsrc/styles/theme-data.csstsconfig.json
💤 Files with no reviewable changes (1)
- src/components/common/logo.tsx
| if (!fs.existsSync(txtFilePath)) { | ||
| return NextResponse.json( | ||
| { error: `File not found: ${txtFilePath}` }, | ||
| { status: 404 } | ||
| { status: 404 }, |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win
Avoid echoing the resolved filesystem path in 404s.
This leaks the server’s directory layout to clients. Return a generic not-found body and keep the concrete path only in server logs.
Suggested fix
- return NextResponse.json(
- { error: `File not found: ${txtFilePath}` },
- { status: 404 },
- );
+ return NextResponse.json(
+ { error: "File not found." },
+ { status: 404 },
+ );📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| if (!fs.existsSync(txtFilePath)) { | |
| return NextResponse.json( | |
| { error: `File not found: ${txtFilePath}` }, | |
| { status: 404 } | |
| { status: 404 }, | |
| if (!fs.existsSync(txtFilePath)) { | |
| return NextResponse.json( | |
| { error: "File not found." }, | |
| { status: 404 }, |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/app/api/read-file/route.ts` around lines 34 - 37, The 404 response in the
read-file route is exposing the resolved filesystem path, which should not be
sent to clients. Update the logic in the route handler that checks
fs.existsSync(txtFilePath) so the NextResponse.json payload returns a generic
not-found message only, and keep the concrete txtFilePath details in server-side
logging if needed.
| 100svh - | ||
| var(--spacing-header-height) - | ||
| 2rem |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Keep the calc() on one line.
This multiline subtraction now violates the current Stylelint rule (scss/operator-no-newline-after), so lint will fail unless the rule is relaxed.
Proposed fix
- 100svh -
- var(--spacing-header-height) -
- 2rem
+ 100svh - var(--spacing-header-height) - 2rem📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 100svh - | |
| var(--spacing-header-height) - | |
| 2rem | |
| 100svh - var(--spacing-header-height) - 2rem |
🧰 Tools
🪛 Stylelint (17.14.0)
[error] 132-132: Unexpected newline after "-" (scss/operator-no-newline-after)
(scss/operator-no-newline-after)
[error] 133-133: Unexpected newline after "-" (scss/operator-no-newline-after)
(scss/operator-no-newline-after)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/app/globals.css` around lines 132 - 134, The CSS in globals.css should
keep the height calc expression on a single line to satisfy the
scss/operator-no-newline-after lint rule. Update the existing calc() declaration
in the globals stylesheet so the subtraction stays inline, using the same value
and variables already present, and make sure the rule remains valid without
changing the computed result.
Source: Linters/SAST tools
| {/* Mobile Sidebar (Sheet component overlay) */} | ||
| <Sheet open={isOpen} onOpenChange={setIsOpen}> | ||
| <SheetTrigger | ||
| render={ | ||
| <motion.button | ||
| className="bg-background/20 fixed right-4 bottom-4 z-50 block rounded-full p-4 backdrop-blur lg:hidden border border-border shadow-lg" | ||
| whileTap={{ scale: 0.95 }} | ||
| initial={{ scale: 0, opacity: 0 }} | ||
| animate={{ scale: 1, opacity: 1 }} | ||
| aria-label="Toggle menu" | ||
| > | ||
| {isOpen ? <MdClose size={24} /> : <FiMenu size={24} />} | ||
| </motion.button> | ||
| } | ||
| /> | ||
| <SheetContent | ||
| side="left" | ||
| className="w-sidebar-width max-w-sidebar-width bg-sidebar border p-4 h-full max-h-[calc(100dvh-var(--spacing-header-height)-2rem)] flex flex-col rounded-lg top-[calc(var(--spacing-header-height)+1rem)]! left-2!" | ||
| showCloseButton={false} | ||
| > | ||
| <div className="sr-only"> | ||
| <SheetTitle>Documentation Navigation</SheetTitle> | ||
| <SheetDescription> | ||
| Browse categories and components | ||
| </SheetDescription> | ||
| </div> | ||
| <div className="flex flex-col h-full overflow-y-auto overscroll-none pr-1"> | ||
| <SidebarContent | ||
| pathname={pathname} | ||
| onLinkClick={closeSidebarOnMobile} | ||
| /> | ||
| </div> | ||
| </SheetContent> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🌐 Web query:
Does Base UI's Dialog.Trigger toggle the dialog closed when clicked while already open, or does it only open it?
💡 Result:
In Base UI, the Dialog.Trigger component is designed to toggle the dialog state [1]. When clicked, if the dialog is closed, it opens it; if the dialog is already open, clicking the trigger closes it [1]. This toggle behavior was specifically addressed in earlier development to ensure consistent interaction [1]. While the documentation describes the Trigger primarily as a component that "opens the dialog" [2], the internal implementation and bug fixes (such as resolving issues where non-modal dialogs would re-open instead of closing [1]) confirm that the intended and current behavior is to toggle the dialog's visibility [1].
Citations:
- 1: [dialog] Clicking the trigger doesn't close non-modal dialogs mui/base-ui#619
- 2: https://mui-base-ui.mintlify.app/api/dialog
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Show the relevant component with line numbers.
sed -n '1,220p' src/components/component-sidebar/index.tsxRepository: Dinil-Thilakarathne/sona-ui
Length of output: 5076
Add lg:hidden to SheetContent
The mobile sheet can still render over the persistent desktop sidebar if isOpen is controlled from the parent, so a responsive guard here is a good safety net.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/components/component-sidebar/index.tsx` around lines 109 - 141, The
mobile sheet content is missing a responsive guard, so it can still render on
desktop when the parent controls isOpen. Add the same lg:hidden behavior to
SheetContent in component-sidebar/index.tsx, alongside the existing SheetTrigger
and SidebarContent mobile logic, so the SheetContent only displays on small
screens.
| // { | ||
| // name: "Circular Dock Menu", | ||
| // slug: "circular-dock-menu", | ||
| // href: "/docs/circular-dock-menu", | ||
| // type: "Components", | ||
| // }, | ||
| // { | ||
| // name: "Fan View", | ||
| // slug: "fan-view", | ||
| // href: "/docs/fan-view", | ||
| // type: "Components", | ||
| // }, |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '\n== src/config/components.ts (relevant lines) ==\n'
sed -n '70,140p' src/config/components.ts
printf '\n== component-sidebar consumer ==\n'
sed -n '1,120p' src/components/component-sidebar/index.tsx
printf '\n== fan-view and circular-dock-menu references ==\n'
rg -n --hidden --glob '!**/node_modules/**' --glob '!**/dist/**' --glob '!**/build/**' \
'fan-view|circular-dock-menu|Circular Dock Menu|Fan View' src docs . 2>/dev/null | sed -n '1,200p'Repository: Dinil-Thilakarathne/sona-ui
Length of output: 16306
Restore the Circular Dock Menu and Fan View links
These entries are commented out, so they drop out of groupedComponents and disappear from the sidebar even though both docs pages still exist. If they’re meant to stay accessible, keep them in the nav; otherwise remove the dead commented code.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/config/components.ts` around lines 94 - 105, The “Circular Dock Menu” and
“Fan View” items are commented out in the components config, so they no longer
appear in groupedComponents and the sidebar. Update the components list in the
config so these entries are either restored as active items or removed entirely
if they are intentionally obsolete; use the existing component definitions
around the commented entries to keep the navigation in sync with the docs pages.
| export interface DotOrbitShaderProps | ||
| extends React.HTMLAttributes<HTMLDivElement> { |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check if React namespace is globally declared (e.g. via tsconfig "types" or global.d.ts)
rg -n "declare global" --type=ts
rg -n '"types"' tsconfig.json
cat tsconfig.json | head -40
# Confirm mesh-gradient-shader.tsx has the same pattern (missing React import) for cross-check
rg -n "React.HTMLAttributes|import.*React" src/registry/sonaui/mesh-gradient-shader/mesh-gradient-shader.tsxRepository: Dinil-Thilakarathne/sona-ui
Length of output: 165
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== repo files =="
git ls-files | rg '(^|/)(tsconfig\.json|global\.d\.ts|.*\.d\.ts|dot-orbit-shader\.tsx|mesh-gradient-shader\.tsx|playground/index\.tsx)$'
echo
echo "== tsconfig.json (top) =="
if [ -f tsconfig.json ]; then
cat -n tsconfig.json | sed -n '1,120p'
fi
echo
echo "== React namespace/type declarations =="
rg -n --hidden --glob '!node_modules' --glob '!dist' --glob '!build' \
'declare global|namespace React|type React|import type \* as React from "react"|from "react"' \
.
echo
echo "== target file =="
cat -n src/registry/sonaui/dot-orbit-shader/dot-orbit-shader.tsx
echo
echo "== similar files =="
for f in src/registry/sonaui/mesh-gradient-shader/mesh-gradient-shader.tsx src/registry/playground/index.tsx; do
if [ -f "$f" ]; then
echo "--- $f ---"
cat -n "$f"
fi
doneRepository: Dinil-Thilakarathne/sona-ui
Length of output: 46384
Add the missing React type import.
React.HTMLAttributes<HTMLDivElement> needs import type * as React from "react"; in src/registry/sonaui/dot-orbit-shader/dot-orbit-shader.tsx to avoid a TypeScript compile error. The same fix is needed in src/registry/sonaui/mesh-gradient-shader/mesh-gradient-shader.tsx.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/registry/sonaui/dot-orbit-shader/dot-orbit-shader.tsx` around lines 7 -
8, The DotOrbitShaderProps and MeshGradientShaderProps type declarations
reference React.HTMLAttributes<HTMLDivElement> without importing the React type
namespace, which causes a TypeScript error. Add a type-only React import at the
top of both dot-orbit-shader.tsx and mesh-gradient-shader.tsx, keeping the props
interfaces unchanged so the React.HTMLAttributes reference resolves correctly.
| 100svh - | ||
| var(--spacing-header-height) - | ||
| 2rem |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Keep the calc() on one line.
This multiline subtraction now violates the current Stylelint rule (scss/operator-no-newline-after), so lint will fail unless the rule is relaxed.
Proposed fix
- 100svh -
- var(--spacing-header-height) -
- 2rem
+ 100svh - var(--spacing-header-height) - 2rem📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 100svh - | |
| var(--spacing-header-height) - | |
| 2rem | |
| 100svh - var(--spacing-header-height) - 2rem |
🧰 Tools
🪛 Stylelint (17.14.0)
[error] 64-64: Unexpected newline after "-" (scss/operator-no-newline-after)
(scss/operator-no-newline-after)
[error] 65-65: Unexpected newline after "-" (scss/operator-no-newline-after)
(scss/operator-no-newline-after)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/styles/theme-data.css` around lines 64 - 66, The theme sizing expression
is split across multiple lines, which violates the current Stylelint operator
rule. Update the calc() value in the theme stylesheet so the full subtraction
remains on a single line, keeping the existing value and operators intact. Use
the existing CSS variable-based sizing expression near the theme-data definition
as the place to fix it.
Source: Linters/SAST tools
|
🎉 This PR is included in version 2.14.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Summary by CodeRabbit
New Features
Documentation
Bug Fixes