Paragon without bootstrap#4384
Conversation
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
✅ Deploy Preview for paragon-openedx-v23 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Thanks for the pull request, @bradenmacdonald! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. 🔘 Update the status of your PRYour PR is currently marked as a draft. After completing the steps above, update its status by clicking "Ready for Review", or removing "WIP" from the title, as appropriate. Where can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
fcaa784 to
6f1131f
Compare
73acd46 to
224b047
Compare
224b047 to
dff038c
Compare
dff038c to
f49529b
Compare
0aa5418 to
c4e9625
Compare
Re-implement the Tabs module on the prototype's modern stack (React Aria + CSS Modules over --pgn-* tokens), matching the Button / Collapsible / Stack conventions. - Behavior from React Aria's useTabList/useTab/useTabPanel + react-stately's useTabListState, replacing react-bootstrap Tabs and the MutationObserver aria-selected shim. Correct tablist/tab/tabpanel roles, arrow-key navigation, and aria-selected/aria-controls linkage. - Declarative <Tabs><Tab eventKey title>…</Tab></Tabs> public API preserved: variant, defaultActiveKey/activeKey, onSelect, per-tab disabled and notification. - Styling ported from src/Nav + src/Tabs SCSS into the global public class layer (src/styles/tabs.css): nav / nav-tabs / nav-pills / nav-inverse-* / nav-button-group over the same tokens, keyboard-only focus via [data-focus-visible]. - Storybook docs (Tabs.mdx + Tabs.stories.tsx) mirror src/Tabs/README.md with a controls-driven Playground and typechecked, editable live examples. - Vitest coverage for selection, keyboard nav, disabled, controlled usage, notifications and per-tab classes. Deliberate gaps documented in the docs: only the active panel is mounted, and the responsive "More…" overflow dropdown is deferred with the Dropdown migration (moreTabText retained but inert). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JXRJCx3Ny3iX9B2kvy4fYd
…type `build-storybook` failed with `Tsconfig not found @edx/typescript-config`. oxc (rolldown's transform) resolves the nearest tsconfig whose include globs actually match each file; the bare `.storybook` entry matched nothing (dot-dir glob), so `.storybook/preview.tsx` escaped to the outer repo's tsconfig, which extends `@edx/typescript-config` — a config that must not apply to the prototype and isn't installed here. Match the entry explicitly (`.storybook/**/*.tsx`) so preview.tsx resolves to the prototype's own tsconfig. Scoped to `.tsx` so `.storybook/main.ts` (a server-side config using `node:` builtins, not part of the browser build and not covered by the restricted `types`) stays out of the type-check program, exactly as before. `tsc`, `vite build`, `vitest`, and `build-storybook` all pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JXRJCx3Ny3iX9B2kvy4fYd
This is a Claude-generated version of Paragon that doesn't use Bootstrap at all.
react-bootstrapuseButton,useFocusRing)--pgn-*tokensstyle-dictionary→ CSS varssrc/tokens.css).jsx/.tsxvite-plugin-dtsFeatures: