Skip to content

feat(drawer): adds <rh-drawer> - #3060

Open
zeroedin wants to merge 19 commits into
staging/horseafrom
feat/rh-drawer-take-three
Open

feat(drawer): adds <rh-drawer> #3060
zeroedin wants to merge 19 commits into
staging/horseafrom
feat/rh-drawer-take-three

Conversation

@zeroedin

@zeroedin zeroedin commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

What I did

  1. Created <rh-drawer>, a side panel component for supplementary content or navigation, aligned with the rh-drawer Figma spec.
  2. Three modes driven by container queries:
    • Overlay (default) — dialog panel that slides over content with a close button, Escape, and click-outside dismiss
    • Inline — complementary landmark, always visible when a parent has container-type: inline-size, and the container is wide enough
    • Collapsible — collapsible attribute enables a push/collapse toggle at wide widths that switches to overlap at narrow widths
  3. Automatically inerts surrounding content and locks scroll when in overlay or collapsible overlap mode, like a dialog that it is.
  4. trigger-id property for external trigger elements
  5. accessible-label for the panel.
  6. Slot-based label overrides for close button (close-label), collapse toggle open (collapse-label-open), and collapse toggle closed (collapse-label-closed) with attribute counterparts.
  7. 12 demos covering responsive, collapsible, overlay, contained, fixed position, RTL, session storage, and pattern usage with rh-navigation-primary (for discussion) and rh-navigation-vertical.
  8. Added side navigation pattern docs linking to pattern demos.
  9. Fixed upstream PFE dev server text-align: left to start for RTL support.

Supersedes: #2850

The component was simplified significantly from the previous attempt:

  • rh-drawer.ts: 802 → 400 lines
  • rh-drawer.css: 858 → 399 lines

Testing Instructions

  1. Visit the demos on the deploy preview.
  2. Test overlay, responsive, collapsible, and RTL demos.
  3. Run npx wtr elements/rh-drawer/test/rh-drawer.spec.ts.

Notes to Reviewers

The drawer responds to its nearest ancestor with container-type: inline-size. Without one, it always behaves as an overlay. This was one of the refactorings from the previous drawer. I'm still not convinced this implementation gets it right, as it almost always forces full pattern usage, external container + drawer. In my opinion, a drawer is both the panel (the face and knob) and the box for the contents (holding the clothes). Doing so would allow for easier implimenation I think.

@netlify

netlify Bot commented Jun 26, 2026

Copy link
Copy Markdown

Deploy Preview for red-hat-design-system ready!

Name Link
🔨 Latest commit 5b374be
🔍 Latest deploy log https://app.netlify.com/projects/red-hat-design-system/deploys/6a8dd02013e8da0008af6cbe
😎 Deploy Preview https://deploy-preview-3060--red-hat-design-system.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@changeset-bot

changeset-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 5b374be

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@rhds/elements Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@zeroedin
zeroedin changed the base branch from main to staging/growlithe June 26, 2026 20:10
@qodo-for-redhat-ux

Copy link
Copy Markdown

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: build

Failed stage: Run preactjs/compressed-size-action@v2 [❌]

Failed test name: ""

Failure summary:

The action failed during npm run build because the TypeScript compilation step (wireit task compile)
exited with code 1 due to a type error in elements/rh-drawer/rh-drawer.ts at line 290, column 13.

Specifically, TS2345 was raised because the string "_narrowContainer" was passed to an API whose
parameter type is a union of known/allowed keys, and "_narrowContainer" is not included in that
union. This caused the build to fail, which then caused the npm process to exit with code 1.

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

549:  Attempting to download 24.4.1...
550:  (node:2106) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
551:  (Use `node --trace-deprecation ...` to show where the warning was created)
552:  Acquiring 24.4.1 - x64 from https://github.com/actions/node-versions/releases/download/24.4.1-16309768053/node-24.4.1-linux-x64.tar.gz
553:  Extracting ...
554:  [command]/usr/bin/tar xz --strip 1 --warning=no-unknown-keyword -C /home/runner/work/_temp/5996f524-7721-429b-94c1-d94bde065418 -f /home/runner/work/_temp/9e3da704-d999-4a13-ae0e-d12cd9aa79b9
555:  Adding to the cache ...
556:  ##[group]Environment details
557:  node: v24.4.1
558:  npm: 11.4.2
559:  yarn: 1.22.22
560:  ##[endgroup]
561:  [command]/opt/hostedtoolcache/node/24.4.1/x64/bin/npm config get cache
562:  /home/runner/.npm
563:  Cache hit for: node-cache-Linux-npm-b00334a33a8632726c8e8f8d38578f64dbdb62afacc495f4b86fdffff123036f
564:  (node:2106) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.
565:  Received 125829120 of 179637690 (70.0%), 120.0 MBs/sec
...

595:  npm audit fix --force
596:  Some issues need review, and may require choosing
597:  a different dependency.
598:  Run `npm audit` for details.
599:  ##[endgroup]
600:  ##[group][current] Build using npm
601:  Building using npm run build
602:  [command]/opt/hostedtoolcache/node/24.4.1/x64/bin/npm run build
603:  > @rhds/elements@4.1.5 build
604:  > wireit
605:  Analyzing
606:  33% [2 / 6] [2 running] compile
607:  50% [3 / 6] [3 running] entrypoint
608:  83% [5 / 6] [1 running] compile
609:  ❌ [compile] exited with exit code 1. Output:
610:  ##[error]elements/rh-drawer/rh-drawer.ts(290,13): error TS2345: Argument of type '"_narrowContainer"' is not assignable to parameter of type '"inline" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | ... 337 more ... | "collapseLabelClosed"'.
611:  ##[error]elements/rh-drawer/rh-drawer.ts(290,13): error TS2345: Argument of type '"_narrowContainer"' is not assignable to parameter of type '"attributes" | "lang" | "slot" | "style" | "title" | "animate" | "dir" | "matches" | "normalize" | "addController" | "removeController" | "requestUpdate" | "updateComplete" | ... 333 more ... | "collapseLabelClosed"'.
612:  ##[error]elements/rh-drawer/rh-drawer.ts(290,13): error TS2345: Argument of type '"_narrowContainer"' is not assignable to parameter of type '"click" | "close" | "accessibleLabel" | "slot" | "style" | "title" | "animate" | "dir" | "connectedCallback" | "render" | "disconnectedCallback" | "renderOptions" | "renderRoot" | ... 333 more ... | "collapseLabelClosed"'.
613:  ##[error]elements/rh-drawer/rh-drawer.ts(290,13): error TS2345: Argument of type '"_narrowContainer"' is not assignable to parameter of type '"hidden" | "attributes" | "tagName" | "normalize" | "className" | "inline" | "id" | "appendChild" | "setAttribute" | "slot" | "parentNode" | "childNodes" | "lang" | "title" | ... 332 more ... | "collapseLabelClosed"'.
614:  ❌ 1 script failed.
615:  ##[error]The process '/opt/hostedtoolcache/node/24.4.1/x64/bin/npm' failed with exit code 1
616:  Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/

@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Documentation Health

Module Score
rh-drawer/rh-drawer.js 307/370 82%
Overall 307/370 82%
DrawerOpenEvent — 78/90 ✅
Category Score
Element description 13/25 ⚠️
Attribute documentation 20/20
Slot documentation 15/15
CSS documentation 15/15
Event documentation 15/15
Demos 0/0
DrawerCloseEvent — 76/90 ✅
Category Score
Element description 11/25 ⚠️
Attribute documentation 20/20
Slot documentation 15/15
CSS documentation 15/15
Event documentation 15/15
Demos 0/0
DrawerThresholdEvent — 76/90 ✅
Category Score
Element description 11/25 ⚠️
Attribute documentation 20/20
Slot documentation 15/15
CSS documentation 15/15
Event documentation 15/15
Demos 0/0
rh-drawer (RhDrawer) — 77/100 ⚠️
Category Score
Element description 17/25 ⚠️
Attribute documentation 20/20
Slot documentation 13/15
CSS documentation 4/15
Event documentation 13/15
Demos 10/10

Recommendations:

  1. DrawerThresholdEvent: use RFC 2119 keywords (MUST, SHOULD, AVOID) to clarify requirements (Element description, +5 pts)
  2. DrawerCloseEvent: use RFC 2119 keywords (MUST, SHOULD, AVOID) to clarify requirements (Element description, +5 pts)
  3. rh-drawer: add descriptions to all CSS parts (CSS documentation, +5 pts)
  4. DrawerOpenEvent: use RFC 2119 keywords (MUST, SHOULD, AVOID) to clarify requirements (Element description, +5 pts)
  5. DrawerOpenEvent: mention accessibility considerations (ARIA, screen reader, WCAG) (Element description, +4 pts)

Comment thread elements/rh-drawer/README.md
Comment thread elements/rh-drawer/rh-drawer.ts Outdated
Comment thread elements/rh-drawer/rh-drawer.ts
Comment thread elements/rh-drawer/rh-drawer.ts
Comment thread elements/rh-drawer/docs/40-accessibility.md
Comment thread elements/rh-drawer/rh-drawer.ts Outdated
Comment thread elements/rh-drawer/rh-drawer.ts Outdated
Comment thread elements/rh-drawer/rh-drawer.ts Outdated
this.#resizeObserver = new ResizeObserver(entries => {
const [entry] = entries;
if (entry) {
const narrow = entry.contentBoxSize[0].inlineSize < 992;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

does this need to be configurable per spec?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

That is definitely a question for @coreyvickery prior iteration allowed it to be via tshirt sizes, curernt figma suggests only 992.

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Size Change: +7.15 kB (+2.22%)

Total Size: 329 kB

📦 View Changed
Filename Size Change
elements.js 848 B +10 B (+1.19%)
elements/rh-drawer/rh-drawer.js 6.93 kB +6.93 kB (new file) 🆕
react/rh-drawer/rh-drawer.js 209 B +209 B (new file) 🆕
ℹ️ View Unchanged
Filename Size
elements/rh-accordion/context.js 162 B
elements/rh-accordion/rh-accordion-header.js 3.33 kB
elements/rh-accordion/rh-accordion-panel.js 2.03 kB
elements/rh-accordion/rh-accordion.js 3.67 kB
elements/rh-alert/rh-alert.js 5.59 kB
elements/rh-announcement/rh-announcement.js 2.84 kB
elements/rh-audio-player/rh-audio-player-about.js 2.28 kB
elements/rh-audio-player/rh-audio-player-rate-stepper.js 2.07 kB
elements/rh-audio-player/rh-audio-player-scrolling-text-overflow.js 1.78 kB
elements/rh-audio-player/rh-audio-player-subscribe.js 1.9 kB
elements/rh-audio-player/rh-audio-player.js 13.2 kB
elements/rh-audio-player/rh-cue.js 2.32 kB
elements/rh-audio-player/rh-transcript.js 3.38 kB
elements/rh-avatar/random-pattern-controller.js 2.72 kB
elements/rh-avatar/rh-avatar.js 3.45 kB
elements/rh-back-to-top/rh-back-to-top.js 2.79 kB
elements/rh-badge/rh-badge.js 2.05 kB
elements/rh-blockquote/rh-blockquote.js 1.93 kB
elements/rh-breadcrumb/rh-breadcrumb.js 2.34 kB
elements/rh-button-group/rh-button-group.js 937 B
elements/rh-button/rh-button.js 4.15 kB
elements/rh-card/rh-card.js 3.46 kB
elements/rh-chip/context.js 165 B
elements/rh-chip/rh-chip-group.js 1.98 kB
elements/rh-chip/rh-chip.js 2.45 kB
elements/rh-code-block/prism.css.js 667 B
elements/rh-code-block/prism.js 572 B
elements/rh-code-block/rh-code-block.js 9.21 kB
elements/rh-cta/rh-cta.js 3.83 kB
elements/rh-dialog/rh-dialog.js 5.04 kB
elements/rh-dialog/yt-api.js 617 B
elements/rh-disclosure/rh-disclosure.js 3.41 kB
elements/rh-footer/rh-footer-block.js 1.11 kB
elements/rh-footer/rh-footer-copyright.js 649 B
elements/rh-footer/rh-footer-links.js 1.65 kB
elements/rh-footer/rh-footer-social-link.js 1.24 kB
elements/rh-footer/rh-footer-universal.js 5.69 kB
elements/rh-footer/rh-footer.js 7.44 kB
elements/rh-health-index/rh-health-index.js 2.48 kB
elements/rh-icon/rh-icon.js 2.98 kB
elements/rh-icon/ssr.js 181 B
elements/rh-jump-links/context.js 179 B
elements/rh-jump-links/rh-jump-link.js 2.05 kB
elements/rh-jump-links/rh-jump-links-list.js 1.67 kB
elements/rh-jump-links/rh-jump-links.js 3.01 kB
elements/rh-menu-dropdown/rh-menu-dropdown.js 4.61 kB
elements/rh-menu/rh-menu-item-group.js 941 B
elements/rh-menu/rh-menu-item.js 2.52 kB
elements/rh-menu/rh-menu.js 2.04 kB
elements/rh-navigation-link/rh-navigation-link.js 2.21 kB
elements/rh-navigation-primary/context.js 176 B
elements/rh-navigation-primary/rh-navigation-primary-item-menu.js 1.48 kB
elements/rh-navigation-primary/rh-navigation-primary-item.js 4.22 kB
elements/rh-navigation-primary/rh-navigation-primary.js 10.1 kB
elements/rh-navigation-secondary/rh-navigation-secondary-dropdown.js 3.15 kB
elements/rh-navigation-secondary/rh-navigation-secondary-menu-section.js 2.02 kB
elements/rh-navigation-secondary/rh-navigation-secondary-menu.js 2.01 kB
elements/rh-navigation-secondary/rh-navigation-secondary-overlay.js 828 B
elements/rh-navigation-secondary/rh-navigation-secondary.js 6.32 kB
elements/rh-navigation-secondary/test/fixtures.js 769 B
elements/rh-navigation-vertical/rh-navigation-vertical-list.js 2.62 kB
elements/rh-navigation-vertical/rh-navigation-vertical.js 1.65 kB
elements/rh-pagination/rh-pagination.js 6.51 kB
elements/rh-progress-stepper/context.js 187 B
elements/rh-progress-stepper/rh-progress-step.js 3.02 kB
elements/rh-progress-stepper/rh-progress-stepper.js 4.78 kB
elements/rh-readtime/rh-readtime.js 2.93 kB
elements/rh-scheme-dropdown/rh-scheme-dropdown.js 3.24 kB
elements/rh-scheme-toggle/rh-scheme-toggle.js 2.85 kB
elements/rh-select/rh-option-group.js 1.6 kB
elements/rh-select/rh-option.js 2.39 kB
elements/rh-select/rh-select.js 9.46 kB
elements/rh-site-status/rh-site-status.js 2.51 kB
elements/rh-skeleton/rh-skeleton.js 742 B
elements/rh-skip-link/rh-skip-link.js 1.42 kB
elements/rh-spinner/rh-spinner.js 1.71 kB
elements/rh-stat/rh-stat.js 2.71 kB
elements/rh-subnav/rh-subnav.js 3.26 kB
elements/rh-surface/rh-surface.js 865 B
elements/rh-surface/test/elements.js 763 B
elements/rh-switch/rh-switch.js 3.25 kB
elements/rh-table/rh-sort-button.js 1.88 kB
elements/rh-table/rh-table.js 3.27 kB
elements/rh-tabs/context.js 223 B
elements/rh-tabs/rh-tab-panel.js 1.19 kB
elements/rh-tabs/rh-tab.js 4 kB
elements/rh-tabs/rh-tabs.js 4.82 kB
elements/rh-tag/rh-tag.js 3.32 kB
elements/rh-tile/rh-tile-group.js 1.97 kB
elements/rh-tile/rh-tile.js 5.09 kB
elements/rh-timestamp/rh-timestamp.js 1.33 kB
elements/rh-tooltip/rh-tooltip.js 3.4 kB
elements/rh-video-embed/rh-video-embed.js 5.45 kB
lib/color-palettes.js 851 B
lib/context/headings/consumer.js 591 B
lib/context/headings/provider.js 1.2 kB
lib/elements/rh-context-demo/rh-context-demo.js 1.16 kB
lib/elements/rh-context-picker/rh-context-picker.js 2.18 kB
lib/environment.js 194 B
lib/functions.js 175 B
lib/I18nController.js 1.37 kB
lib/ScreenSizeController.js 876 B
lib/ssr-controller.js 201 B
lib/themable.js 549 B
react/lib/color-palettes.js 97 B
react/lib/context/headings/consumer.js 103 B
react/lib/context/headings/provider.js 105 B
react/lib/elements/rh-context-demo/rh-context-demo.js 186 B
react/lib/elements/rh-context-picker/rh-context-picker.js 189 B
react/lib/functions.js 92 B
react/lib/I18nController.js 97 B
react/lib/ScreenSizeController.js 102 B
react/lib/ssr-controller.js 97 B
react/lib/themable.js 91 B
react/rh-accordion/rh-accordion-header.js 199 B
react/rh-accordion/rh-accordion-panel.js 185 B
react/rh-accordion/rh-accordion.js 202 B
react/rh-alert/rh-alert.js 184 B
react/rh-announcement/rh-announcement.js 189 B
react/rh-audio-player/rh-audio-player-about.js 191 B
react/rh-audio-player/rh-audio-player-rate-stepper.js 223 B
react/rh-audio-player/rh-audio-player-scrolling-text-overflow.js 214 B
react/rh-audio-player/rh-audio-player-subscribe.js 196 B
react/rh-audio-player/rh-audio-player.js 183 B
react/rh-audio-player/rh-cue.js 195 B
react/rh-audio-player/rh-transcript.js 207 B
react/rh-avatar/rh-avatar.js 173 B
react/rh-back-to-top/rh-back-to-top.js 183 B
react/rh-badge/rh-badge.js 174 B
react/rh-blockquote/rh-blockquote.js 179 B
react/rh-breadcrumb/rh-breadcrumb.js 179 B
react/rh-button-group/rh-button-group.js 184 B
react/rh-button/rh-button.js 174 B
react/rh-card/rh-card.js 172 B
react/rh-chip/rh-chip-group.js 182 B
react/rh-chip/rh-chip.js 180 B
react/rh-code-block/rh-code-block.js 193 B
react/rh-cta/rh-cta.js 170 B
react/rh-dialog/rh-dialog.js 203 B
react/rh-disclosure/rh-disclosure.js 192 B
react/rh-footer/rh-footer-block.js 184 B
react/rh-footer/rh-footer-copyright.js 187 B
react/rh-footer/rh-footer-links.js 185 B
react/rh-footer/rh-footer-social-link.js 193 B
react/rh-footer/rh-footer-universal.js 188 B
react/rh-footer/rh-footer.js 174 B
react/rh-health-index/rh-health-index.js 184 B
react/rh-icon/rh-icon.js 195 B
react/rh-jump-links/rh-jump-link.js 183 B
react/rh-jump-links/rh-jump-links-list.js 189 B
react/rh-jump-links/rh-jump-links.js 182 B
react/rh-menu-dropdown/rh-menu-dropdown.js 198 B
react/rh-menu/rh-menu-item-group.js 190 B
react/rh-menu/rh-menu-item.js 181 B
react/rh-menu/rh-menu.js 182 B
react/rh-navigation-link/rh-navigation-link.js 186 B
react/rh-navigation-primary/rh-navigation-primary-item-menu.js 205 B
react/rh-navigation-primary/rh-navigation-primary-item.js 210 B
react/rh-navigation-primary/rh-navigation-primary.js 189 B
react/rh-navigation-secondary/rh-navigation-secondary-dropdown.js 227 B
react/rh-navigation-secondary/rh-navigation-secondary-menu-section.js 205 B
react/rh-navigation-secondary/rh-navigation-secondary-menu.js 199 B
react/rh-navigation-secondary/rh-navigation-secondary-overlay.js 201 B
react/rh-navigation-secondary/rh-navigation-secondary.js 213 B
react/rh-navigation-vertical/rh-navigation-vertical-list.js 209 B
react/rh-navigation-vertical/rh-navigation-vertical.js 189 B
react/rh-pagination/rh-pagination.js 178 B
react/rh-progress-stepper/rh-progress-step.js 196 B
react/rh-progress-stepper/rh-progress-stepper.js 186 B
react/rh-readtime/rh-readtime.js 175 B
react/rh-scheme-dropdown/rh-scheme-dropdown.js 203 B
react/rh-scheme-toggle/rh-scheme-toggle.js 200 B
react/rh-select/rh-option-group.js 187 B
react/rh-select/rh-option.js 177 B
react/rh-select/rh-select.js 204 B
react/rh-site-status/rh-site-status.js 181 B
react/rh-skeleton/rh-skeleton.js 176 B
react/rh-skip-link/rh-skip-link.js 181 B
react/rh-spinner/rh-spinner.js 175 B
react/rh-stat/rh-stat.js 171 B
react/rh-subnav/rh-subnav.js 175 B
react/rh-surface/rh-surface.js 175 B
react/rh-switch/rh-switch.js 185 B
react/rh-table/rh-sort-button.js 200 B
react/rh-table/rh-table.js 174 B
react/rh-tabs/rh-tab-panel.js 181 B
react/rh-tabs/rh-tab.js 187 B
react/rh-tabs/rh-tabs.js 184 B
react/rh-tag/rh-tag.js 171 B
react/rh-tile/rh-tile-group.js 183 B
react/rh-tile/rh-tile.js 181 B
react/rh-timestamp/rh-timestamp.js 176 B
react/rh-tooltip/rh-tooltip.js 175 B
react/rh-video-embed/rh-video-embed.js 227 B
uxdot/ssr-adopt-directive.js 2.02 kB
uxdot/uxdot-best-practice.js 812 B
uxdot/uxdot-copy-button.js 1.24 kB
uxdot/uxdot-copy-permalink.js 1.14 kB
uxdot/uxdot-demo.js 2.89 kB
uxdot/uxdot-example.js 1.14 kB
uxdot/uxdot-feedback.js 983 B
uxdot/uxdot-header.js 886 B
uxdot/uxdot-knob-attribute.js 3.73 kB
uxdot/uxdot-masthead.js 1.45 kB
uxdot/uxdot-pattern-ssr-controller-client.js 386 B
uxdot/uxdot-pattern-ssr-controller-server.js 1.71 kB
uxdot/uxdot-pattern-ssr-controller.js 213 B
uxdot/uxdot-pattern.js 2.37 kB
uxdot/uxdot-repo-status-checklist.js 1.39 kB
uxdot/uxdot-repo-status-list.js 1.24 kB
uxdot/uxdot-repo.js 867 B
uxdot/uxdot-sidenav.js 2.04 kB
uxdot/uxdot-spacer-tokens-table.js 2.45 kB
uxdot/uxdot-toc.js 2.08 kB

compressed-size-action

@zeroedin
zeroedin marked this pull request as ready for review July 9, 2026 14:12

@coreyvickery coreyvickery left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@zeroedin Let's remove any box shadows on the actual tray, but not the button. Ready to ship after that.

Base automatically changed from staging/growlithe to main July 13, 2026 17:21
@zeroedin
zeroedin changed the base branch from main to staging/horsea July 27, 2026 21:26
@zeroedin
zeroedin force-pushed the feat/rh-drawer-take-three branch from a2709a3 to 4eb7ec7 Compare July 27, 2026 21:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Review 🔍

Development

Successfully merging this pull request may close these issues.

3 participants