Skip to content

Commit a366ec0

Browse files
TheSonOfThomptsckbruugeystephl3Copilot
authored
feat(eslint): Adds ESLint plugin (#2044)
* Create few-years-stare.md * scaffolds eslint plugin * scaffold test rule * scaffold jsx rules * TS & JSX scaffold * rule creator script * Adds prebuild step * resolves TS issues * Update buildRulesIndex.ts * fixes TS resolution * update rollup. mv ruletester * Creates standard-testid lint rule * mv deepOmit * Update createNewRule.ts * creates 'boolean-verb-prefix', * fix tests * exclude tests from build * update rule creator script * updates readme * Update package.json * changesets * rename rule-tester * Create rude-scissors-deliver.md * creates no-indirect-imports rule * fix * updates docs * prettier * Update react17 jest.config to omit eslint-plugin * fix default prefix * turns off rules by default * add comments * enables "no-indirect-imports" * address SL comments * bump build tool * merge main * fix ts error * update md files * update install ALL_PACKAGES * bump packages * rm "standard test id" test * rm "boolean verb" rule * Update tsconfig.json * Update package.json * update ruleTester * Update index.ts * Squashed commit of the following: commit cee1e791b4e7c0f2aca0e2e83b7451e4aeaa0763 Author: Brooke Scarlett Yalof <[email protected]> Date: Thu Sep 18 11:01:09 2025 -0400 LG-5514: Migrate HTMLElementProps to React.ComponentProps (#3127) * replace html element props * update to follow pattern * with changesets * fix bug * runs fix commit 3471b94e9e3b62134223f84fe5bf9add7061a8ba Author: Brooke Scarlett Yalof <[email protected]> Date: Wed Sep 17 15:20:16 2025 -0400 Update React ref objects to be explicitly nullable (where appropriate) (#3132) commit 0700607e996a0be622264a91a03571aca1d9c6a2 Author: Brooke Scarlett Yalof <[email protected]> Date: Wed Sep 17 13:32:14 2025 -0400 LG-5476: Updates InfoSprinkleProps (#3130) * updates infosprinkle props * rm fixme * Update cyan-walls-sell.md commit cfab277dc1d282b1165382df6d03e757ceea0550 Author: Adam Thompson <[email protected]> Date: Wed Sep 17 13:10:32 2025 -0400 Adds missing changelogs (#3131) commit aeb3b3fd4c3547b1243228c80a1a2c8f36c07e08 Author: Brooke Scarlett Yalof <[email protected]> Date: Wed Sep 17 11:11:18 2025 -0400 uncomment test (#3128) commit 74a2c4293a4dafd5587c0c488ff5484352458571 Author: Mohamed Khelif <[email protected]> Date: Tue Sep 16 12:07:00 2025 -0400 Make loading message configurable for @lg-chat/input-bar (#3116) * Update InputBarFeedback.tsx * Support custom loading message * Changeset * run lint * CR * Use ReactNode * lint --------- Co-authored-by: Shaneeza <[email protected]> commit 67dd0daa01ee8e2613d143627f57480e3cacc7da Author: Adam Thompson <[email protected]> Date: Tue Sep 16 11:57:49 2025 -0400 fix bad changeset (#3124) commit 6f30c55587a29c996a869ab0e685453dfd5aed7b Author: Adam Thompson <[email protected]> Date: Mon Sep 15 15:49:35 2025 -0400 React 17 Compatibility Integration (#3119) * [LG-5490] chore: React17 compatibility (#3101) * Component compat * .ts compat * PolymorphicRenderFunctionReturnType * sync spec files * update Link & BackLink specs * Update useEchart.spec.ts * Update index.ts * Update FormField.spec.tsx * restore Popover.spec.tsx ts expect error * Update PasswordInput.spec.tsx * select spec * packages/table/src/utils/stories.testutils.tsx * sync ts files * @ts-ignore React18 * packages/popover/src/Popover/Popover.spec.tsx * Refresh RTLOverrides * packages/toast/src/InternalToast/InternalToast.stories.tsx * fix render hook * Update ExpandedContent.spec.tsx * charts/core/src/ChartContext/ChartContext.spec.tsx * changesets * renderDescendantsTestContext * cleanup tooltip tests * bump popover-polyfill * fix ToggleEvent type import * test(date-picker): wrap timer advancement in waitFor * test(getAllPackages): ensure temporary directories * [LG-5480] chore: Enables React 17 testing (#3110) * Component compat * .ts compat * PolymorphicRenderFunctionReturnType * sync spec files * update Link & BackLink specs * Update useEchart.spec.ts * Update index.ts * Update FormField.spec.tsx * restore Popover.spec.tsx ts expect error * Update PasswordInput.spec.tsx * select spec * packages/table/src/utils/stories.testutils.tsx * sync ts files * @ts-ignore React18 * packages/popover/src/Popover/Popover.spec.tsx * Refresh RTLOverrides * packages/toast/src/InternalToast/InternalToast.stories.tsx * fix render hook * Update ExpandedContent.spec.tsx * charts/core/src/ChartContext/ChartContext.spec.tsx * changesets * renderDescendantsTestContext * cleanup tooltip tests * bump popover-polyfill * fix ToggleEvent type import * test(date-picker): wrap timer advancement in waitFor * test(getAllPackages): ensure temporary directories * Creates R17 init script * Delete install-react17.ts * Update react17.yml * Update init.ts * cleanup tsconfigs * Update package.json * install lodash. rm gh-pages * init defaults deep * rm clean from init script * lint * feat: add lib exists type * lint exports * storyoobk addon typoe * chore: update react17 files * Delete init.ts * lint * add separate R17 build & test jobs * Squashed commit of the following: commit 87dc0b671aa3e0b7052435d5ba7f98812285cbdd Author: Adam Thompson <[email protected]> Date: Wed Sep 10 13:22:33 2025 -0400 [LG-5490] chore: React17 compatibility (#3101) * Component compat * .ts compat * PolymorphicRenderFunctionReturnType * sync spec files * update Link & BackLink specs * Update useEchart.spec.ts * Update index.ts * Update FormField.spec.tsx * restore Popover.spec.tsx ts expect error * Update PasswordInput.spec.tsx * select spec * packages/table/src/utils/stories.testutils.tsx * sync ts files * @ts-ignore React18 * packages/popover/src/Popover/Popover.spec.tsx * Refresh RTLOverrides * packages/toast/src/InternalToast/InternalToast.stories.tsx * fix render hook * Update ExpandedContent.spec.tsx * charts/core/src/ChartContext/ChartContext.spec.tsx * changesets * renderDescendantsTestContext * cleanup tooltip tests * bump popover-polyfill * fix ToggleEvent type import * test(date-picker): wrap timer advancement in waitFor * test(getAllPackages): ensure temporary directories * chore(testing-lib): RTL overrides re-organization (#3114) * Updates internal structure of RTL overrides * Update rtl-overrides.md * fix git mv * Update hooks.spec.tsx * fix act * Squashed commit of the following: commit 87dc0b671aa3e0b7052435d5ba7f98812285cbdd Author: Adam Thompson <[email protected]> Date: Wed Sep 10 13:22:33 2025 -0400 [LG-5490] chore: React17 compatibility (#3101) * Component compat * .ts compat * PolymorphicRenderFunctionReturnType * sync spec files * update Link & BackLink specs * Update useEchart.spec.ts * Update index.ts * Update FormField.spec.tsx * restore Popover.spec.tsx ts expect error * Update PasswordInput.spec.tsx * select spec * packages/table/src/utils/stories.testutils.tsx * sync ts files * @ts-ignore React18 * packages/popover/src/Popover/Popover.spec.tsx * Refresh RTLOverrides * packages/toast/src/InternalToast/InternalToast.stories.tsx * fix render hook * Update ExpandedContent.spec.tsx * charts/core/src/ChartContext/ChartContext.spec.tsx * changesets * renderDescendantsTestContext * cleanup tooltip tests * bump popover-polyfill * fix ToggleEvent type import * test(date-picker): wrap timer advancement in waitFor * test(getAllPackages): ensure temporary directories * no --frozen-lockfile * [LG-5354, LG-5461] fix(Polymorphic) Updates Polymorphic return types (#3111) * PolymorphicRenderFunctionReturnType * propTypes * tsdoc * Create poly-types.md * Update poly-types.md * Create poly-types.md * pkg json scripts * rename PolymorphicReturnType * Update Polymorphic.hooks.tsx * Update Polymorphic.hooks.tsx * rm pre-install step * Adds polymorphic tests to assert event type * fix: Fixes tests failing in React 17 (#3112) * Update r17-packages.json * Update transformToNestedData.spec.ts * Update DrawerToolbarContext.spec.tsx * Update Message.spec.tsx * WIP resizable * Update setup.js * useResizable * Update useScreenReaderAnnouncer.tsx * Update ProgressBar.spec.tsx * changeset * Update .changeset/progress-bar-strict.md * Update react17.yml * Update react17.yml * Update react17.yml * export isReact17 * Update transformToNestedData.spec.ts * Update transformToNestedData.spec.ts * rm cache: false * useDrawerToolbarContext tests * consistent queryByRole * chore: adds React17 reset script (#3115) * Component compat * .ts compat * PolymorphicRenderFunctionReturnType * sync spec files * update Link & BackLink specs * Update useEchart.spec.ts * Update index.ts * Update FormField.spec.tsx * restore Popover.spec.tsx ts expect error * Update PasswordInput.spec.tsx * select spec * packages/table/src/utils/stories.testutils.tsx * sync ts files * @ts-ignore React18 * packages/popover/src/Popover/Popover.spec.tsx * Refresh RTLOverrides * packages/toast/src/InternalToast/InternalToast.stories.tsx * fix render hook * Update ExpandedContent.spec.tsx * charts/core/src/ChartContext/ChartContext.spec.tsx * changesets * renderDescendantsTestContext * cleanup tooltip tests * bump popover-polyfill * fix ToggleEvent type import * test(date-picker): wrap timer advancement in waitFor * test(getAllPackages): ensure temporary directories * Creates R17 init script * Delete install-react17.ts * Update react17.yml * Update init.ts * cleanup tsconfigs * Update package.json * install lodash. rm gh-pages * init defaults deep * rm clean from init script * lint * feat: add lib exists type * lint exports * storyoobk addon typoe * chore: update react17 files * Delete init.ts * lint * add separate R17 build & test jobs * Squashed commit of the following: commit 87dc0b671aa3e0b7052435d5ba7f98812285cbdd Author: Adam Thompson <[email protected]> Date: Wed Sep 10 13:22:33 2025 -0400 [LG-5490] chore: React17 compatibility (#3101) * Component compat * .ts compat * PolymorphicRenderFunctionReturnType * sync spec files * update Link & BackLink specs * Update useEchart.spec.ts * Update index.ts * Update FormField.spec.tsx * restore Popover.spec.tsx ts expect error * Update PasswordInput.spec.tsx * select spec * packages/table/src/utils/stories.testutils.tsx * sync ts files * @ts-ignore React18 * packages/popover/src/Popover/Popover.spec.tsx * Refresh RTLOverrides * packages/toast/src/InternalToast/InternalToast.stories.tsx * fix render hook * Update ExpandedContent.spec.tsx * charts/core/src/ChartContext/ChartContext.spec.tsx * changesets * renderDescendantsTestContext * cleanup tooltip tests * bump popover-polyfill * fix ToggleEvent type import * test(date-picker): wrap timer advancement in waitFor * test(getAllPackages): ensure temporary directories * chore(testing-lib): RTL overrides re-organization (#3114) * Updates internal structure of RTL overrides * Update rtl-overrides.md * fix git mv * Update hooks.spec.tsx * fix act * Squashed commit of the following: commit 87dc0b671aa3e0b7052435d5ba7f98812285cbdd Author: Adam Thompson <[email protected]> Date: Wed Sep 10 13:22:33 2025 -0400 [LG-5490] chore: React17 compatibility (#3101) * Component compat * .ts compat * PolymorphicRenderFunctionReturnType * sync spec files * update Link & BackLink specs * Update useEchart.spec.ts * Update index.ts * Update FormField.spec.tsx * restore Popover.spec.tsx ts expect error * Update PasswordInput.spec.tsx * select spec * packages/table/src/utils/stories.testutils.tsx * sync ts files * @ts-ignore React18 * packages/popover/src/Popover/Popover.spec.tsx * Refresh RTLOverrides * packages/toast/src/InternalToast/InternalToast.stories.tsx * fix render hook * Update ExpandedContent.spec.tsx * charts/core/src/ChartContext/ChartContext.spec.tsx * changesets * renderDescendantsTestContext * cleanup tooltip tests * bump popover-polyfill * fix ToggleEvent type import * test(date-picker): wrap timer advancement in waitFor * test(getAllPackages): ensure temporary directories * no --frozen-lockfile * [LG-5354, LG-5461] fix(Polymorphic) Updates Polymorphic return types (#3111) * PolymorphicRenderFunctionReturnType * propTypes * tsdoc * Create poly-types.md * Update poly-types.md * Create poly-types.md * pkg json scripts * rename PolymorphicReturnType * Update Polymorphic.hooks.tsx * Update Polymorphic.hooks.tsx * rm pre-install step * Adds polymorphic tests to assert event type * fix: Fixes tests failing in React 17 (#3112) * Update r17-packages.json * Update transformToNestedData.spec.ts * Update DrawerToolbarContext.spec.tsx * Update Message.spec.tsx * WIP resizable * Update setup.js * useResizable * Update useScreenReaderAnnouncer.tsx * Update ProgressBar.spec.tsx * changeset * Update .changeset/progress-bar-strict.md * Update react17.yml * Update react17.yml * Update react17.yml * export isReact17 * Update transformToNestedData.spec.ts * Update transformToNestedData.spec.ts * rm cache: false * useDrawerToolbarContext tests * consistent queryByRole * Update Polymorphic.hooks.tsx * Update Polymorphic.hooks.tsx * WIP resizable * useResizable * Update react17.yml * Update react17.yml * Update react17.yml * Update transformToNestedData.spec.ts * rm cache: false * useDrawerToolbarContext tests * Create reset.mjs * Update package.json * reset yaml * Update reset.mjs * TK comments * fix defaults deep ordering * Update scripts/react17/init.mjs commit 3c2464cd07e7074972e261510194b4621a016168 Author: Adam Thompson <[email protected]> Date: Fri Sep 12 17:45:03 2025 -0400 [LG-5501] feat(Menu) Adds `onOpen` & `onClose` callbacks (#3120) * export MenuContext from Menu * adds onOpen & onClose * Create menu-callbacks.md * lint commit 1f334cbb324515ba3d210cb554e57602aeaab951 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed Sep 10 12:59:36 2025 +0000 Version Packages (#3108) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit b92bc727f133d88559bd8000754a7a7457960050 Author: Stephen Lee <[email protected]> Date: Tue Sep 9 18:55:40 2025 -0700 [LG-5485|LG-5486] feat(chat): add responsive design support for wide screens (#3092) * style(message-prompts): refactor spacing styles and add max-width of 400px to MessagePrompts * chore(message-prompts): changeset * style(chat-window): update styles for larger screen width * chore(chat-window): changeset commit a9eb17283c57e78af6f7743ecf23a443e4e46391 Author: Stephen Lee <[email protected]> Date: Tue Sep 9 17:20:24 2025 -0700 [LG-5437] feat(message): implement compound components pattern with utils (#3109) * [LG-5437] feat: add and export bannerChildrenContainerClassName for custom styling and update MessageBanner styles (#3071) * refactor(banner): reorganize types and styles, introduce shared types file * feat(banner): export bannerChildrenContainerClassName and refactor Banner styles * chore(banner): changeset * feat(message): update VerifiedAnswerBanner styles * chore(message): changeset * refactor(banner): reorg Banner subcomponents * chore: feedback * [LG-5437] feat(rich-links): update RichLink styling and remove imageUrl prop (#3072) * refactor(rich-links): remove imageUrl prop and adjust styles for RichLink components * chore(rich-links): changeset * [LG-5437] feat(message): add expand/collapse functionality for MessageLinks (#3073) * chore(message): add icon and icon-button deps * feat(message): implement expandable MessageLinks with accessibility improvements * chore(message): changeset * chore(message): feedback * chore(message): feedback * [LG-5437] refactor(message): migrate MessageActions into Message package (#3087) * chore(message): remove @lg-chat/avatar dev dep * chore(message): update message-feedback to dep, add message-rating dep, and add @storybook/test dev dep * refactor(message): copy over MessageActions code from @lg-chat/message-actions * chore(message-actions): mark @lg-chat/message-actions exports deprecated * docs(message): copy over @lg-chat/message-actions README details * chore: changesets * [LG-5437] feat(lib): add findChild and filterChildren utils for compound components (#3088) * chore(lib): add @emotion/styled as dev dep * feat(lib): add findChild util for compound components * feat(lib): add filterChildren util for compound components * feat(lib): export findChild and filterChildren utils * chore(lib): changeset * refactor(lib): filterChildren uses Children.map() * refactor(lib): extract hasStaticProperty and hasAnyStaticProperty into separate util for usage in findChild and filterChildren * [LG-5437] feat(message): implement compound components pattern (#3089) * chore(message): add @emotion/styled dev dep * refactor(message): replace VerificationInfo with MessageVerifiedBanner and update related types * feat(message): enable compound subcomponents for compact message * docs(message): update README * chore(message): changeset * chore(message): address feedback * fix(lib): hasAnyStaticProperty type * fix(message): darkMode in MessageActions stories commit a3dee88fd4db36b2e6ad691745b820e8bc341918 Author: Stephen Lee <[email protected]> Date: Fri Sep 5 18:04:34 2025 -0700 feat(chat-disclaimer): remove deprecated DisclaimerModal component (#3094) * chore(chat-disclaimer): rm deprecated DisclaimerModal * docs(chat-disclaimer): update README * chore(chat-disclaimer): changeset commit dc3299bed75dc5be62eb6782e955773da3904fb9 Author: Adam Thompson <[email protected]> Date: Fri Sep 5 18:13:12 2025 -0400 chore(Types): Enables TS downleveling (#3096) * updates icon build scripts ts * adds icon validate script * rm validate * build with relative rollup * rm checksum tests * rebuild icons * changest * add ./dist/* export * use rollup api for icon build batch * rm icon postbuild made redundant by "exports" field * Update install.spec.ts * Update getPackageJson.spec.ts * Update happy-heads-greet.md * update umd name * ensureDirSync * Update tsconfig.json * cleanup * fixes bad story imports * Update package.json * adds generated icon story * cleanup * direct import syntax * mv svgrrc * add svgrrc to cspell * rebuild checksums * Update Icon.stories.tsx * enable ts downleveling * changeset for all packages * Update build-downlevel.md * Enable package.exports updating in ts-downlevel * updates package json exports * Refactor import statements in install.ts to consolidate package manager imports from '@lg-tools/meta' * Enhance SkeletonLoader story by adding StoryMetaType and updating component export * fixes ts export paths * Update TypeScript export paths in package.json to use DEFAULT_TYPES_EXPORT_PATH * rm old ts in package json * Update getPackageName.spec.ts * Update updatePackageJsonTypes.ts * types@<5.0 * types@<=5.0 * reorder exports * fixes broken story imports * rm redundant types export * fix bad json format * lint * Update ts-downlevel-packages.md commit 5ef631af75da9285f631933c1b05cca927cc4a43 Author: Adam Thompson <[email protected]> Date: Fri Sep 5 17:25:57 2025 -0400 chore(Icon): Update icon build script & package exports (#3105) * updates icon build scripts ts * adds icon validate script * rm validate * build with relative rollup * rm checksum tests * rebuild icons * changest * add ./dist/* export * use rollup api for icon build batch * rm icon postbuild made redundant by "exports" field * Update install.spec.ts * Update getPackageJson.spec.ts * Update happy-heads-greet.md * update umd name * ensureDirSync * Update tsconfig.json * cleanup * fixes bad story imports * Update package.json * adds generated icon story * cleanup * direct import syntax * mv svgrrc * add svgrrc to cspell * rebuild checksums * Update Icon.stories.tsx * lint commit 071a228244720b290438262a8387ab0e73838860 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri Sep 5 01:12:34 2025 +0000 Version Packages (#3104) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit c0ce1c4e010e0eadeadf9579e457c870e265ae13 Author: Shaneeza <[email protected]> Date: Wed Sep 3 17:08:25 2025 -0400 feat(DrawerToolbar): enhance auto-close drawer logic (#3099) * feat(DrawerToolbar): enhance toolbar visibility management and add dynamic item handling * refactor(DrawerToolbar): remove unnecessary comments and streamline context logic * fix(DrawerToolbar): clarify parameter descriptions in getDrawerToolbarData function * docs(Drawer): add changeset * feat(DrawerToolbarLayout): add back toolbarData prop to manage toolbar items and drawer content * fix(DrawerToolbarContext): update test and context logic to use LayoutData type for drawer items * refactor(DrawerToolbarContext): add back useMemo commit f5dd0240095c7dfc707d8fc30233cab9eab00bd2 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed Sep 3 13:35:21 2025 -0400 Version Packages (#3095) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit e1bc4446f6c67d66ee5c127c3f5a5d6f93a0b7d7 Author: Terrence Keane <[email protected]> Date: Wed Sep 3 11:56:14 2025 -0400 [LG-5489] fix(chart-card): fix header layout (#3102) * refactor(ChartCard): adjust grid layout styles * chore(chart-card): changeset commit 172c2282bf0526996b73e60399d755107c4781fe Author: Adam Thompson <[email protected]> Date: Fri Aug 29 13:11:45 2025 -0400 chore(TS) Include `.spec` files in tsconfig (#3076) * update tsconfig.json excludes * update TS in testing-lib context spec * updates tsconfigs * lockfile * Update chat provider tsconfig.json * Update isValidDate.spec.ts * Update hooks tsconfig.json * update icon tsconfig.json * update typography specs * updates charts specs * Update Button.spec.tsx * Update FeaturesEmptyState.spec.tsx * add FIXME * changesets * Update tsconfig-spec-files.md * update tsconfig - descendants & popover * updates descendants test utils * add @lg-tools/storybook-utils to hooks * Update PasswordInput.spec.tsx * Update SearchInput.testutils types * add @storybook/types to toast * Update Pagination.spec.tsx * Update InfoSprinkle.spec.tsx * Update tsconfig.json * update table util types * Update getNewSegmentValueFromInputValue.spec.ts * Update Menu.spec.tsx * Update tsconfig.json * fix renderCustomTooltip test util * Update index.ts * update icon checksum * Update Highlight.stories.tsx * update icon types entry point * ignore missing devDeps in validate commit 658953495b55eecf837eb92e5a6c103189260ec0 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Aug 28 20:42:56 2025 +0000 Version Packages (#3090) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 92db4312a984e630c79248ec18a9cfb34f8bd14e Author: Shaneeza <[email protected]> Date: Thu Aug 28 15:32:48 2025 -0400 [LG-5481] feat(drawer): toggle drawer based on toolbar item visibility (#3085) * wip * feat(DrawerToolbar): enhance toolbar visibility management and add toggle functionality * wip, not complete * remove resolvedInitialState * actually remove resolvedInitialState * maybe a fix? * refactor(Drawer): remove unused animations and update layout styles for mobile responsiveness * refactor(Drawer): streamline styles by removing unused animations * refactor(Drawer): update context and layout components to use the same styles, wip * refactor(Drawer): improve context handling and layout structure for better drawer integration * refactor(Drawer): consolidate layout rendering and improve content styling * feat(Drawer): introduce LayoutGrid component for improved drawer layout management * refactor(Drawer): clean up unused code and lint * feat(Drawer): add toolbar visibility toggle functionality and update test utils * refactor(Drawer): update constants and styles * refactor(Drawer): adjust mobile layout styles for toolbar visibility * refactor(Drawer): rename story exports for clarity and enhance toolbar item tests * refactor(Drawer): enhance layout styles and logic for drawer visibility handling * refactor(Drawer): update drawer width calculation and enhance toolbar flicker handling * test(Drawer): add unit test for setHasToolbar functionality in DrawerLayoutContext * refactor(Drawer): improve embedded styles and overlay handling for drawer layout * docs(Drawer): update README * refactor(Drawer): remove empty media query from embedded drawer styles * docs(Drawer): add changesets * feat(Drawer): replace layoutGird with PanelGrid component and update story data * refactor(Drawer): remove unused contentStyles from DrawerToolbarLayout and PanelGrid * fix(Drawer): update initial width calculation to consider resizable state for embedded drawers * feat(Drawer): refactor styling logic for embedded drawer layout with toolbar and panel content * fix(Drawer): simplify props handling in DrawerToolbarLayout story * feat(Drawer): enhance DrawerToolbarLayout with dynamic toolbar visibility and item management * feat(Drawer): implement useCallback for data retrieval and add test for drawer visibility based on active item * feat(Drawer): introduce useToolbarData hook for managing toolbar state and simplify story implementations * fix(Drawer): refine drawer closing logic * fix(Drawer): update useToolbarData dependencies to include hasToolbarData and hasHiddenToolbarItem * docs(Drawer): add changeset * fix(DrawerToolbarLayout): improve drawer closing logic based on active toolbar item visibility commit 71c6daa01dc3e39616b037518bbb471adc6cd2c1 Author: Shaneeza <[email protected]> Date: Thu Aug 28 14:22:50 2025 -0400 [LG-5460] feat(drawer): add toolbar item visibility control (#3067) * wip * feat(DrawerToolbar): enhance toolbar visibility management and add toggle functionality * wip, not complete * remove resolvedInitialState * actually remove resolvedInitialState * maybe a fix? * refactor(Drawer): remove unused animations and update layout styles for mobile responsiveness * refactor(Drawer): streamline styles by removing unused animations * refactor(Drawer): update context and layout components to use the same styles, wip * refactor(Drawer): improve context handling and layout structure for better drawer integration * refactor(Drawer): consolidate layout rendering and improve content styling * feat(Drawer): introduce LayoutGrid component for improved drawer layout management * refactor(Drawer): clean up unused code and lint * feat(Drawer): add toolbar visibility toggle functionality and update test utils * refactor(Drawer): update constants and styles * refactor(Drawer): adjust mobile layout styles for toolbar visibility * refactor(Drawer): rename story exports for clarity and enhance toolbar item tests * refactor(Drawer): enhance layout styles and logic for drawer visibility handling * refactor(Drawer): update drawer width calculation and enhance toolbar flicker handling * test(Drawer): add unit test for setHasToolbar functionality in DrawerLayoutContext * refactor(Drawer): improve embedded styles and overlay handling for drawer layout * docs(Drawer): update README * refactor(Drawer): remove empty media query from embedded drawer styles * docs(Drawer): add changesets * feat(Drawer): replace layoutGird with PanelGrid component and update story data * refactor(Drawer): remove unused contentStyles from DrawerToolbarLayout and PanelGrid * fix(Drawer): update initial width calculation to consider resizable state for embedded drawers * feat(Drawer): refactor styling logic for embedded drawer layout with toolbar and panel content * fix(Drawer): simplify props handling in DrawerToolbarLayout story commit 0e7772058b650cb99c229e1a6031679edca33ab8 Author: Stephen Lee <[email protected]> Date: Thu Aug 28 08:11:26 2025 -0700 [LG-5473] feat(drawer): add hasPadding prop to decouple padding from scrollable behavior (#3078) * feat(drawer): add hasPadding prop * expose hasPadding in toolbarData in DrawerToolbarLayout * docs(drawer): README * chore(drawer): changeset commit 43e812e291c440bdbde730a8972de012936b5509 Author: Shaneeza <[email protected]> Date: Thu Aug 28 11:07:03 2025 -0400 feat(panel): update Panel to find the current language option by matching either its display name or language value. (#3075) commit 5fc3bc31502f165c07874e8d7b445a83b75943e5 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Aug 28 01:34:05 2025 +0000 Version Packages (#3074) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 7b49fcfa8b32cee19e583dd5ef80230c9455d005 Author: Stephen Lee <[email protected]> Date: Wed Aug 27 15:59:46 2025 -0700 [LG-5471] fix(tokens): fix z-index layering for top/left inside overflow shadows (#3080) * fix(tokens): overflow shadow z-index layering * chore(tokens): changeset * refactor(tokens): addOverflowShadow internal utils commit 305ac2e7bedff67759c3cdcf9885e4f696802d6f Author: Stephen Lee <[email protected]> Date: Wed Aug 27 13:54:16 2025 -0700 fix(chat-window): remove redundant LeafyGreenChatProvider (#3086) * fix(chat-window): removed redundant LeafyGreenChatProvider wrapper and added LeafyGreenProvider wrapper * chore(chat-window): changeset * refactor(chat-window): officially make @lg-chat/leafygreen-chat-provider peer dep * fix(chat): dependencies commit 1b1ca1722e4fb3f1292db269c7efa3e25a85147c Author: Stephen Lee <[email protected]> Date: Wed Aug 27 10:56:53 2025 -0700 [LG-5470] fix(input-bar): send button remains disabled with whitespace input (#3079) * fix(input-bar): send button remains disabled with whitespace input * chore(input-bar): changeset commit e5cfcaf6480f26ebf59e9cba694be5368ad8982c Author: Stephen Lee <[email protected]> Date: Wed Aug 27 10:56:47 2025 -0700 [LG-5479] fix(lg-markdown): downgrade react-markdown to 8.0.7 for react 17 compatibility (#3082) * chore(lg-markdown): revert react-markdown version bump due to react 17 incompatibility * chore(lg-markdown): changeset * refactor(lg-markdown): use unknown instead of any commit 0abf6415c8cc3ffbe6a72f0302ac1e3a25a65ac9 Author: Stephen Lee <[email protected]> Date: Wed Aug 27 09:45:03 2025 -0700 [LG-5388] fix(input-bar): inline primary button interactive green to avoid import/type issues (#3081) * fix(input-bar): temporarily define PRIMARY_BUTTON_INTERACTIVE_GREEN to avoid import issues * chore(input-bar): changeset * docs(input-bar): update tsdocs for constant Co-authored-by: Terrence Keane <[email protected]> --------- Co-authored-by: Terrence Keane <[email protected]> commit d0977a92149ed2ca9cc3a5f856f5dde96ee9579f Author: Adam Thompson <[email protected]> Date: Mon Aug 25 12:03:55 2025 -0400 chore(install): add `postversion` script (#3029) * add postversion to install tool * changeset * Update .changeset/warm-pants-call.md Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> commit 9718c2333ce1ba4a708e81a1bfe99bfd4a8b2f73 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri Aug 22 17:35:05 2025 -0400 Version Packages (#3069) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit f87b084c9178410b4cea3dd96693374c58d02039 Author: Terrence Keane <[email protected]> Date: Fri Aug 22 16:01:05 2025 -0400 [LG-5465] feat(icon): add award glyph (#3070) * feat(icon): add Award icon and update README with new build instructions - Introduced new Award icon with corresponding SVG and TypeScript component. - Updated README to reflect changes in build command from `yarn` to `pnpm`. - Added Award icon to glyphs index for accessibility. * changeset * fix(icon): update Award icon SVG paths and checksum - Modified SVG paths for the Award icon to enhance visual representation. - Updated checksum in the generated file for integrity verification. commit 262cf9517b4b2df8453e5d54d0bcb2230cf9fcce Author: Stephen Lee <[email protected]> Date: Fri Aug 22 09:23:25 2025 -0700 [LG-5442] feat(lg-markdown): upgrade react-markdown to v10.1.0 and improve styling (#3059) * chore(lg-markdown): bump react-markdown to 10.1.0 * chore(lg-markdown): add proper baseFontSize argType to stories * chore(message): remove spacious stories * refactor(lg-markdown): enhance componentsMap with ExtraProps and improve built-in spacing * chore(lg-markdown): changeset commit 8b4f493157f9737d9f977dd62551d2da9f6110be Author: Stephen Lee <[email protected]> Date: Fri Aug 22 08:24:47 2025 -0700 [LG-5414] feat(message-feedback): enable async form submission and support error message customization (#3061) * [breaking] feat(message-feedback): enable async form submission and support error message customization * fix(message-actions): add missing @storybook/test dev dep * feat(message-actions): enhance feedback submission with error handling and customizable messages * chore: changesets * fix(message-actions): initial feedback state commit 2c06601d7854e9eff78d2a06299996d5e5a6bdf2 Author: Stephen Lee <[email protected]> Date: Fri Aug 22 08:22:38 2025 -0700 [LG-5453] feat(chat-disclaimer): update DisclaimerText with theming and deprecate DisclaimerModal (#3062) * chore(chat-disclaimer): mark DisclaimerModal deprecated * chore(chat-disclaimer): add leafygreen-provider peer dep * feat(chat-disclaimer): enhance DisclaimerText component with theming and styling improvements * chore(chat-disclaimer): changeset commit d0b23af270d04f288caa7c38411dbe692820f58d Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Aug 21 23:37:01 2025 +0000 Version Packages (#3068) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 707923d050d847962fe25322625ad76b85677c64 Author: Stephen Lee <[email protected]> Date: Thu Aug 21 14:39:03 2025 -0700 fix(suggestions): hide title when state is unset (#3064) * fix(suggestions): hide title for unset state * chore(suggestions): changeset * fix(suggestions): add typography dep commit 4412ce1132381a18bafe96e9e74cf19b7c5defa5 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue Aug 19 21:26:49 2025 +0000 Version Packages (#3056) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 5994b734568f6c04b611cd156850cd212029f30a Author: Stephen Lee <[email protected]> Date: Tue Aug 19 12:11:43 2025 -0700 [LG-4952] feat(modal): Modal renders as dialog element in top layer (#3048) * chore(modal): add @leafygreen-ui/toast as dev dep * feat(modal): add focusModalChildElement util * [breaking] refactor(modal): use <dialog> element in LG modals, remove initialFocus prop, and update custom styling props * docs(modals): update READMEs * chore(modals): changeset * chore(modal): remove unused deps * [LG-4952] feat(codemods): add modal-v20 codemod for automatic Modal v20 upgrade (#3049) * feat(codemods): modal-v20 🚀 * docs: update codemods README with modal-v20 details and add modal package upgrade guide * chore: modal and codemods changesets * refactor: feedback commit d81075360a655d9e2e6d82036e48a9741358e55d Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue Aug 19 17:45:44 2025 +0000 Version Packages (#3053) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 558e853a4c74a518f354aafaf4ea00c7019f5ec5 Author: Stephen Lee <[email protected]> Date: Tue Aug 19 09:31:29 2025 -0700 fix(codemods): resolve path resolution issue preventing codemod discovery (#3054) * fix(codemods): identify correct dist dir * chore: add codemods package to root dev deps * chore(codemods): changeset * fix(codemods): add back console.log commit f9558fae4e51a43a57851627ebf200c7e4a95c44 Author: Shaneeza <[email protected]> Date: Tue Aug 19 09:55:12 2025 -0400 refactor(Code): update README and TypeScript definitions for onCopy, copyButtonAppearance, and panel (#3052) * refactor(Code): update README and TypeScript definitions for onCopy, copyButtonAppearance, and panel * fix: update documentation for onCopy and copyButtonAppearance in README * docs: clarify onCopy callback usage in README and TypeScript definitions commit a1999fcf845d79b5212061c993df5bbced290f0c Author: Adam Thompson <[email protected]> Date: Mon Aug 18 21:22:11 2025 -0400 chore(Copilot) Adds copilot instructions (#3042) * Adds copilot instructions * Update .github/copilot-instructions.md Co-authored-by: Copilot <[email protected]> * fix: pnpm run test --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Stephen Lee <[email protected]> commit 815f0607ed4ce7e3b90923f2403c29ec39edf2f0 Author: Stephen Lee <[email protected]> Date: Mon Aug 18 16:17:23 2025 -0700 chore(docs): standardize package installation commands and remove HTML output sections (#3051) * docs: consistent install instructions and no html outputs in READMEs * docs(message-feedback): drop extra PNPM subsection commit 349a97f95933a1017fd1c85f3b598cf859f78d74 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon Aug 18 16:52:32 2025 +0000 Version Packages (#3050) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit f75e6292a52a55f2ad618f4dfa299f2e5e2c64e0 Author: Stephen Lee <[email protected]> Date: Mon Aug 18 07:54:03 2025 -0700 [LG-5432] feat(suggestions): add apply state and improve component flexibility (#3033) * feat(suggestions): add apply state, remove fixed width, and spread props to root node * docs(suggestions): update README * chore(suggestions): changeset * chore: lint fix * test(suggestions): remove redundant tests commit 036315f31df648929de599caa1797083f41614f5 Author: Brooke Scarlett Yalof <[email protected]> Date: Mon Aug 18 09:57:21 2025 -0400 Adds purple badge (#3046) commit 67ad7558682ec5dab6867e03471f63458579504b Author: Shaneeza <[email protected]> Date: Fri Aug 15 17:35:29 2025 -0400 [LG-5429] fix(Table): Dynamic table data (#3038) * wip * feat(Table): add DynamicData story * refactor(Table): rename 'haveColumnDefinitionsChanged' to 'shouldMemoizeRows' * feat(Table): update Basic story and add DynamicData story with emoji toggle * refactor(Table): remove debug console logs from InternalRowWithRT and useLeafyGreenTable * refactor(Table): rename internal row type interfaces for clarity * refactor(Table): optimize memoization logic in InternalRowWithRT * refactor(Table): update story structure and add tests for shouldMemoizeRows * docs(Table): adds changeset * docs(Table): clarify shouldMemoizeRows documentation in Row and TableContext types * refactor(Table):revert types changes * feat(Table): add DynamicData play function story and refactor decorators for StickyHeader * docs(Table): enhance documentation for shouldMemoizeRows to clarify memoization behavior based on column definitions * refactor(Table): simplify memoization comparison in InternalRowWithRT by using lodash's omit * refactor(Table): rename tableStory.testutils to stories.testutils and update imports commit 4f6f16c00e48d94444df4d8887b844f7ec556fb7 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri Aug 15 18:39:18 2025 +0000 Version Packages (#3045) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit af2634e7a383fdaeb2175fe1ecbb55fd82bf7d53 Author: Shaneeza <[email protected]> Date: Fri Aug 15 12:35:24 2025 -0400 [LG-5427] fix(drawer): Drawer title width (#3022) * feat(Drawer): update title so it takes up all of the available space * chore(drawer): add changeset for updated title to utilize full header space [LG-5427] * refactor(Drawer): simplify IconButton usage in story, move aria-label * style h2 tag * refactor(Drawer.stories): replace h2 tag with Body component for consistency * wip * feat(Drawer): add inlineChildrenInTitle prop for custom title actions * update changeset * refactor(Drawer): update title styling to use fontWeights. * feat(Drawer): combine close icon with custom icons * refactor(Drawer): remove inlineChildrenInTitle prop, and update documentation and examples * fix(Drawer): update aria-labels for IconButton components for clarity * fix(Drawer): update documentation and remove inlineChildrenInTitle prop from components * docs(Drawer): remove title section from README for clarity commit d3c0f1f40d478a4a9bf900e1141ea3bca76cb644 Author: Stephen Lee <[email protected]> Date: Fri Aug 15 08:07:50 2025 -0700 [LG-5431] fix(button): add constants subpath export for PRIMARY_BUTTON_INTERACTIVE_GREEN (#3035) * fix: button constant export and transpilation * chore: changeset * fix(button): build * fix(button): rollup includes /testing export * fix(button): rollup config commit a8017ccbe759f560372b454dbb455d6b6f088b43 Author: Stephen Lee <[email protected]> Date: Fri Aug 15 08:03:50 2025 -0700 test(popover): enable top-layer popover tests with polyfill and improve test coverage (#3037) * test: add @oddbird/popover-polyfill to polyfill popover API testing * test(popover): rely on polyfill for testing * chore(test): changeset * refactor(popover): use popover-polyfill in popover package only commit 9698e57e8f7126e9f395bec35433243c41dd6c7d Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri Aug 15 04:05:20 2025 +0000 Version Packages (#3031) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit b7ffd1121478b75579997cc3880db852bdbfa648 Author: Stephen Lee <[email protected]> Date: Thu Aug 14 21:00:50 2025 -0700 [LG-4952] refactor(modal): extract CloseButton component and move close icon color types (#3025) * refactor(modal): break out CloseButton component with shared types file for CloseIconColor * refactor(modal): use CloseButton and CloseIconColorProp type in Modal * refactor(modal): use BUTTON_OFFSET constant for close button commit d72b4135f3ce51587ac12b49eac009b633c158ce Author: Stephen Lee <[email protected]> Date: Thu Aug 14 15:21:21 2025 -0700 [LG-5436|LG-5441] feat(chat): deprecate spacious variant and add assistantName prop to LeafyGreenChatProvider (#3040) * refactor(leafygreen-chat-provider): mark variant deprecated * docs(leafygreen-chat-provider): update README * feat(leafygreen-chat-provider): add assistantName prop * docs(leafygreen-chat-provider): update README * refactor(message): use assistantName from context * chore: changeset * fix: variant tests * docs(leafygreen-chat-provider): update assistantName default in README commit b2fc50e2946fb0e22670cd318f375a494e40cc51 Author: Stephen Lee <[email protected]> Date: Thu Aug 14 08:05:21 2025 -0700 chore: update PR description generation instructions for concise output (#3039) * chore: update github pull request template * chore(prompt-kit): update copilot pull request description gen instructions * chore(cursor): update pull request description gen instructions * chore(prompt-kit): changeset commit eabc7dd18bd4ec6f907a40e2897a1f260abcef6d Author: Brooke Scarlett Yalof <[email protected]> Date: Wed Aug 13 11:47:20 2025 -0400 Allows Select to be a controlled component (#3023) * Adds new glyph * update generated * allows select to be controlled component * Delete .changeset/sharp-melons-end.md * Update packages/select/src/Select/Select.tsx Co-authored-by: Copilot <[email protected]> * With changeset * better changeset * Update packages/select/src/Select/Select.tsx Co-authored-by: Adam Thompson <[email protected]> * with proper import statement --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Adam Thompson <[email protected]> commit 5dc2459cd33274f857819c10acb538e053e6cf9c Author: Stephen Lee <[email protected]> Date: Tue Aug 12 13:31:34 2025 -0700 [LG-5416] feat(marketing-modal): remove deprecated buttonText/onButtonClick in favor of buttonProps (#3026) * chore(marketing-modal): remove deprecated props * docs(marketing-modal): update README * chore(marketing-modal): changeset commit e846e6344e2513686ef97260f57bbf19530be2bf Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue Aug 12 14:25:17 2025 +0000 Version Packages (#3030) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit ac3c7e89424d81c435ff009f580c0a77329b7d7b Author: Adam Thompson <[email protected]> Date: Mon Aug 11 17:56:27 2025 -0400 [LG-5400] feat(Icon) Adds Shortcut-icon (#3027) * Create Shortcut.svg * build Shortcut * Create loud-candies-sell.md * use correct base svg * checksum commit 9ac5a6c6b75ed481c86f99609ef3cca7dd0dc4ce Author: Adam Thompson <[email protected]> Date: Mon Aug 11 17:00:37 2025 -0400 Update settings.json (#3028) commit 542020932a5bd5433fac3b390edf4efc810575ee Author: alina 颖思 <[email protected]> Date: Mon Aug 11 13:52:15 2025 -0400 LG-3077: compare icon checksums against prior builds (#2991) * copy over rebuild * batched rollup commands * properly process batches * modularize scripts in package.json * revert * turbo inputs outputs * rm debug logs * clean old refs * clarifying comments * extract reusable * only rebuild on file change * comment fix * helper method * batch rollup bundles * comment clarity * use pqueue to manage concurrency * changeset * build index.ts * single exports and stories build * update devDeps * verbose logging * explicit async fn types * move final console log * checksum comparison * GA cache layer * mock src change * trigger build * clarify PR workflow * remove test comment * separate scripts * update package.json scripts * constants file * build on CLI command only * remove unnecessary log * file and function renaming * warn for fallback * changeset * debugging console statements * Update AIModel.tsx --------- Co-authored-by: Adam Michael Thompson <[email protected]> commit 0f47afd357a30973fc68af49dc439cca50faa4be Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri Aug 8 22:02:19 2025 +0000 Version Packages (#3014) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 05ac5dcfd1a5bac87fb1551e650a2a4fe313df48 Author: Shaneeza <[email protected]> Date: Fri Aug 8 16:52:30 2025 -0400 refactor(DrawerWithToolbarWrapper): integrate DrawerToolbarContext for drawer open state management (#3024) commit 0af5361f47899b7d7a38cc2fe70c8790feb46b15 Author: Stephen Lee <[email protected]> Date: Fri Aug 8 10:17:33 2025 -0700 [LG-5424] feat(prompt-kit): add Copilot custom instructions for PR title and description generation (#3018) * refactor(prompt-kit): add examples to commitMessageGeneration custom instructions * feat(prompt-kit): add pull request custom instructions * refactor(prompt-kit): update settings.json to merge * chore: update vscode settings with pull request custom instructions * chore(prompt-kit): changeset * chore(prompt-kit): remove pull request title generation instructions from settings * chore(prompt-kit): update to include title gen instructions * fix: update vscode settings to allow Copilot to generate PR title and description commit 775b4a86ee8cb0b8c988154156f719eda7535fb0 Author: Shaneeza <[email protected]> Date: Fri Aug 8 13:07:01 2025 -0400 [LG-5417] fix(drawer): stale toolbar data (#3016) * LG-5361: Resizable hook (#2979) * wip * can drag the drawer and it snaps shut * comments * add todos * keyboard interaction * update keyboard logic to work with handle position * remove css transition from within hook * change drawer onChange type * fix handleType issues * fix some TS errors * remove handlerType from getResizerProps * remove size obj * some more cleanup * remove dup code * fix some TS errors * remove snap close logic * create DrawerLayoutContext * fix weird transition * remove error in file * fix open and resizable checks * add top and bottom support * make getKeyboardInteraction DRYer * add useResizable story * all tests are passing * update useResizable tests * rename handleType to dragFrom * add comments to useResizable * create a utils folder for useResizable * only prevent default when arrow keys are pressed * update types * aria-value updates on resize * add className to getResizerProps * update body cursor on resize * remove comment * rename dragFrom to position * fix failing tests * remove comments * lint * lint and clean up * move useResizable hook to hook package * revert drawer changes * fix build error, improve useResizable utility functions * update pnpm-lock * update tsdocs * lint * reorganize and update types * remove defaults from minSize and maxSize * use enum values for SIZE_GROWTH_KEY_MAPPINGS * add util folder * move calculateNewSize to utils * move getNextKeyboardSize to utils * update tests * lint * move updateSize function * add comments * fix ketboard decrease bug * move utils to util folder * fix validate error * update lockfile * move hook to a package * update lock file * remove palette from hooks * LG-5375: Resizable drawer (#2980) * wip * can drag the drawer and it snaps shut * comments * add todos * keyboard interaction * update keyboard logic to work with handle position * remove css transition from within hook * change drawer onChange type * fix handleType issues * fix some TS errors * remove handlerType from getResizerProps * remove size obj * some more cleanup * remove dup code * fix some TS errors * remove snap close logic * create DrawerLayoutContext * fix weird transition * remove error in file * fix open and resizable checks * add top and bottom support * make getKeyboardInteraction DRYer * add useResizable story * all tests are passing * update useResizable tests * rename handleType to dragFrom * add comments to useResizable * create a utils folder for useResizable * only prevent default when arrow keys are pressed * update types * aria-value updates on resize * add className to getResizerProps * update body cursor on resize * remove comment * rename dragFrom to position * fix failing tests * remove comments * lint * lint and clean up * move useResizable hook to hook package * revert drawer changes * extract drawer changes from resizable hook branch * clean up DrawerLayout types * update types and rename some consts * organize toolbar styles better * some more cleanup * lint * fix build error, improve useResizable utility functions * update pnpm-lock * update tsdocs * lint * fix embedded animation * lint * fix DrawerLayout.spec * update tsdocs and refactor DrawerToolbarLayout stories * clean up drawer.tsx * remove drawer check * update Drawer story open prop * isOverLay to isOverlay * remove TOOLBAR_WIDTH export * unify transition duration and timing function across components * remove resizableRef check * create setIsDrawerOpen to update value within components * fix failing test in DrawerLayoutContext * use css vars * update CSS var * add defaults * lint * add resolvedProp hooks * remove check in LayoutComponent * add more tests to DrawerLayoutContext and update spec file * fix build error * update css var * fix failing test * set a default for --drawer-width * story ts error * fix story ts error * trigger checks * reorganize and update types * remove defaults from minSize and maxSize * use enum values for SIZE_GROWTH_KEY_MAPPINGS * add util folder * move calculateNewSize to utils * move getNextKeyboardSize to utils * update tests * lint * move updateSize function * add comments * fix ketboard decrease bug * move utils to util folder * fix validate error * update lockfile * move hook to a package * update lock file * remove palette from hooks * use resizable package * lint * LG-5401 drawer size prop (#2994) * wip * can drag the drawer and it snaps shut * comments * add todos * keyboard interaction * update keyboard logic to work with handle position * remove css transition from within hook * change drawer onChange type * fix handleType issues * fix some TS errors * remove handlerType from getResizerProps * remove size obj * some more cleanup * remove dup code * fix some TS errors * remove snap close logic * create DrawerLayoutContext * fix weird transition * remove error in file * fix open and resizable checks * add top and bottom support * make getKeyboardInteraction DRYer * add useResizable story * all tests are passing * update useResizable tests * rename handleType to dragFrom * add comments to useResizable * create a utils folder for useResizable * only prevent default when arrow keys are pressed * update types * aria-value updates on resize * add className to getResizerProps * update body cursor on resize * remove comment * rename dragFrom to position * fix failing tests * remove comments * lint * lint and clean up * move useResizable hook to hook package * revert drawer changes * extract drawer changes from resizable hook branch * clean up DrawerLayout types * update types and rename some consts * organize toolbar styles better * some more cleanup * lint * fix build error, improve useResizable utility functions * update pnpm-lock * update tsdocs * lint * fix embedded animation * lint * fix DrawerLayout.spec * update tsdocs and refactor DrawerToolbarLayout stories * clean up drawer.tsx * remove drawer check * update Drawer story open prop * isOverLay to isOverlay * remove TOOLBAR_WIDTH export * unify transition duration and timing function across components * remove resizableRef check * create setIsDrawerOpen to update value within components * fix failing test in DrawerLayoutContext * use css vars * update CSS var * add defaults * lint * add resolvedProp hooks * remove check in LayoutComponent * add more tests to DrawerLayoutContext and update spec file * fix build error * update css var * fix failing test * set a default for --drawer-width * story ts error * fix story ts error * trigger checks * add size prop to drawer * update stories and update sizes * lint * update Drawer prop table * testing * remove testing comments * remove type from Size export * update README to included sizes * remove DRAWER_MAX_PERCENTAGE_WIDTH and update getResolvedDrawerSizes * remove drawer.constants and updates DRAWER_WIDTH * remove palette from hooks * refactor: misc. `Drawer` and `Resizable` updates (#3004) * wip * can drag the drawer and it snaps shut * comments * add todos * keyboard interaction * update keyboard logic to work with handle position * remove css transition from within hook * change drawer onChange type * fix handleType issues * fix some TS errors * remove handlerType from getResizerProps * remove size obj * some more cleanup * remove dup code * fix some TS errors * remove snap close logic * create DrawerLayoutContext * fix weird transition * remove error in file * fix open and resizable checks * add top and bottom support * make getKeyboardInteraction DRYer * add useResizable story * all tests are passing * update useResizable tests * rename handleType to dragFrom * add comments to useResizable * create a utils folder for useResizable * only prevent default when arrow keys are pressed * update types * aria-value updates on resize * add className to getResizerProps * update body cursor on resize * remove comment * rename dragFrom to position * fix failing tests * remove comments * lint * lint and clean up * move useResizable hook to hook package * revert drawer changes * extract drawer changes from resizable hook branch * clean up DrawerLayout types * update types and rename some consts * organize toolbar styles better * some more cleanup * lint * fix build error, improve useResizable utility functions * update pnpm-lock * update tsdocs * lint * fix embedded animation * lint * fix DrawerLayout.spec * update tsdocs and refactor DrawerToolbarLayout stories * clean up drawer.tsx * remove drawer check * update Drawer story open prop * isOverLay to isOverlay * remove TOOLBAR_WIDTH export * unify transition duration and timing function across components * remove resizableRef check * create setIsDrawerOpen to update value within components * fix failing test in DrawerLayoutContext * use css vars * update CSS var * add defaults * lint * add resolvedProp hooks * remove check in LayoutComponent * add more tests to DrawerLayoutContext and update spec file * fix build error * update css var * fix failing test * set a default for --drawer-width * story ts error * fix story ts error * trigger checks * reorganize and update types * remove defaults from minSize and maxSize * add size prop to drawer * use enum values for SIZE_GROWTH_KEY_MAPPINGS * add util folder * move calculateNewSize to utils * move getNextKeyboardSize to utils * update tests * lint * move updateSize function * add comments * update stories and update sizes * lint * update Drawer prop table * fix ketboard decrease bug * move utils to util folder * fix validate error * update lockfile * move hook to a package * update lock file * remove palette from hooks * use resizable package * lint * show toolbar focus and disable keydown on blur * remove conditional initial size passed to initialSize * testing * remove testing comments * remove type from Size export * update README to included sizes * remove DRAWER_MAX_PERCENTAGE_WIDTH and update getResolvedDrawerSizes * use var for padding hack * remove keyMap from hook spec * remove keydown on window * update comments * remove constants file * feedback * docs, refactor: Update `Drawer` and `Resizable` docs and reorganize Drawer directory (#3009) * wip * can drag the drawer and it snaps shut * comments * add todos * keyboard interaction * update keyboard logic to work with handle position * remove css transition from within hook * change drawer onChange type * fix handleType issues * fix some TS errors * remove handlerType from getResizerProps * remove size obj * some more cleanup * remove dup code * fix some TS errors * remove snap close logic * create DrawerLayoutContext * fix weird transition * remo…
1 parent 394ba93 commit a366ec0

24 files changed

+843
-451
lines changed

.changeset/eslint-plugin.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@lg-tools/eslint-plugin': minor
3+
---
4+
5+
First pre-release of `eslint-plugin`

.changeset/install-add-eslint.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@lg-tools/install': minor
3+
---
4+
5+
Adds 'eslint-plugin' to ALL_PACKAGES
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@lg-tools/test': minor
3+
---
4+
5+
Adds `structuredClone` polyfill for testing eslint plugins

pnpm-lock.yaml

Lines changed: 290 additions & 451 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/eslint-plugin/README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# eslint-plugin-leafygreen
2+
3+
Lint Rules for LeafyGreen UI
4+
5+
## Installation
6+
7+
You'll first need to install [ESLint](https://eslint.org/):
8+
9+
```sh
10+
pnpm install -D eslint
11+
```
12+
13+
Next, install `@lg-tools/eslint-plugin`:
14+
15+
```sh
16+
pnpm install -D @lg-tools/eslint-plugin
17+
```
18+
19+
## Usage
20+
21+
Add `@lg-tools` to the plugins section of your `.eslintrc` configuration file. (You can omit the `/eslint-plugin` suffix):
22+
23+
```json
24+
{
25+
"plugins": ["@lg-tools"],
26+
"extends": ["plugin:@lg-tools/internal"]
27+
}
28+
```
29+
30+
Optionally configure the rules you want to use under the rules section.
31+
32+
```json
33+
{
34+
"rules": {
35+
"@lg-tools/some-rule": ["warn"]
36+
}
37+
}
38+
```
39+
40+
## Rules
41+
42+
<!--
43+
Auto-generate this section with
44+
`pnpm --filter="@lg-tools/eslint-plugin" run docs`
45+
-->
46+
<!-- begin auto-generated rules list -->
47+
48+
💼 Configurations enabled in.\
49+
🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).
50+
51+
| Name | Description | 💼 | 🔧 |
52+
| :------------------------------------------------------- | :------------------------------------------------- | :------------------ | :-- |
53+
| [no-indirect-imports](docs/rules/no-indirect-imports.md) | Forbid indirect imports from `src/` or `packages/` | ![badge-internal][] | 🔧 |
54+
55+
<!-- end auto-generated rules list -->
56+
57+
## Contributing
58+
59+
To create a new rule:
60+
61+
### 1. Run the `create-rule` script
62+
63+
```sh
64+
pnpm --filter @lg-tools/eslint-plugin run create-rule <rule-name>
65+
```
66+
67+
This will create a new file in `src/rules`, and a test file in `src/tests`
68+
69+
### 2. Add AST Listeners
70+
71+
Inside your new `src/rules/<my-rule>.ts` file, add the appropriate metadata, and write AST listeners.
72+
73+
The return object of a rule's `create` method should return at least one AST listener.
74+
75+
These work similar to CSS selectors, and run a function when the ESLint static analyzer hits a specific AST node.
76+
77+
See [ESLint Docs](https://eslint.org/docs/latest/extend/custom-rules) for more details.
78+
79+
```ts
80+
export const exampleRule = createRule({
81+
// ...
82+
create: context => {
83+
return {
84+
VariableDeclaration: node => {
85+
// Executes on any variable declaration
86+
// e.g. const myVar = 5;
87+
},
88+
};
89+
},
90+
});
91+
```
92+
93+
## 3. Add tests
94+
95+
Inside the new `src/test/<my-rule>.spec.ts` file, add valid and invalid test cases.
96+
97+
See [ESLint RuleTester docs](https://eslint.org/docs/latest/integrate/nodejs-api#ruletester) for more details.
98+
99+
### Useful Resources
100+
101+
- [ESLint Docs](https://eslint.org/docs/latest/extend/custom-rules)
102+
- [ESLint RuleTester](https://eslint.org/docs/latest/integrate/nodejs-api#ruletester)
103+
- [ESTree Spec](https://github.com/estree/estree/blob/master/README.md)
104+
- [JSX Spec](https://github.com/facebook/jsx/blob/main/README.md)
105+
- [TSESLint Listener Definitions](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/utils/src/ts-eslint/Rule.ts#L293)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Forbid indirect imports from `src/` or `packages/` (`@lg-tools/no-indirect-imports`)
2+
3+
💼 This rule is enabled in the `internal` config.
4+
5+
🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
6+
7+
<!-- end auto-generated rule header -->

tools/eslint-plugin/package.json

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"name": "@lg-tools/eslint-plugin",
3+
"version": "0.0.1",
4+
"description": "ESLint Rules for LeafyGreen",
5+
"keywords": [
6+
"eslint",
7+
"eslintplugin",
8+
"eslint-plugin",
9+
"leafygreen"
10+
],
11+
"main": "./dist/umd/index.js",
12+
"module": "./dist/esm/index.js",
13+
"types": "./dist/types/index.d.ts",
14+
"exports": {
15+
".": {
16+
"types": "./dist/types/index.d.ts",
17+
"types@<=5.0": "./dist/types/ts4.9/index.d.ts",
18+
"import": "./dist/esm/index.js",
19+
"require": "./dist/umd/index.js"
20+
}
21+
},
22+
"scripts": {
23+
"prebuild": "npx ts-node ./scripts/buildRulesIndex.ts",
24+
"build": "lg-build bundle",
25+
"tsc": "lg-build tsc",
26+
"docs": "eslint-doc-generator",
27+
"lint": "npm-run-all \"lint:*\"",
28+
"lint:eslint-docs": "npm-run-all \"update:eslint-docs -- --check\"",
29+
"lint:js": "eslint .",
30+
"create-rule": "npx ts-node ./scripts/createNewRule.ts"
31+
},
32+
"dependencies": {
33+
"@babel/eslint-parser": "7.28.4",
34+
"@typescript-eslint/types": "8.44.0",
35+
"@typescript-eslint/utils": "8.44.0",
36+
"eslint": "9.16.0",
37+
"lodash": "^4.17.21"
38+
},
39+
"devDependencies": {
40+
"@lg-tools/build": "workspace:^",
41+
"@lg-tools/test": "workspace:^",
42+
"@types/eslint": "9.6.1",
43+
"@typescript-eslint/rule-tester": "8.44.0",
44+
"commander": "^11.0.0",
45+
"eslint-doc-generator": "^2.2.2",
46+
"fs-extra": "11.1.1"
47+
},
48+
"peerDependencies": {
49+
"eslint": "^9.16.0"
50+
},
51+
"license": "Apache-2.0"
52+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import fse from 'fs-extra';
2+
import path from 'path';
3+
4+
import { makeId, makeVarName } from './utils';
5+
6+
buildRulesIndexFile();
7+
8+
/**
9+
* Utility function that creates or updates the Rules index file
10+
* after a new Rule is created
11+
*/
12+
export function buildRulesIndexFile() {
13+
const rulesDir = path.resolve(__dirname, '../src/rules');
14+
fse.readdir(rulesDir).then(files => {
15+
files = files.filter(file => file !== 'index.ts');
16+
const importStatements = files
17+
.map(fileName => {
18+
const fileId = makeId(fileName.replace('.ts', ''));
19+
return `import { ${makeVarName(fileId)} } from './${fileId}';`;
20+
})
21+
.join('\n');
22+
23+
const declarations = files
24+
.map(fileName => {
25+
const fileId = makeId(fileName.replace('.ts', ''));
26+
return ` '${fileId}': ${makeVarName(fileId)},`;
27+
})
28+
.join('\n');
29+
30+
const indexContent = `/**
31+
* DO NOT MODIFY THIS FILE
32+
* ANY CHANGES WILL BE REMOVED ON THE NEXT BUILD
33+
*/
34+
${importStatements}
35+
36+
export const rules = {
37+
${declarations}
38+
};
39+
`;
40+
41+
fse.writeFile(path.resolve(rulesDir, 'index.ts'), indexContent);
42+
});
43+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import { Command } from 'commander';
2+
import fse from 'fs-extra';
3+
import path from 'path';
4+
5+
import { buildRulesIndexFile } from './buildRulesIndex';
6+
import {
7+
makeDefaultMessageId,
8+
makeFileName,
9+
makeId,
10+
makeVarName,
11+
} from './utils';
12+
13+
const cli = new Command('');
14+
cli.argument('<rule-name>', 'The name of the rule');
15+
cli.action(createNewRule);
16+
cli.parse(process.argv);
17+
18+
/**
19+
* Creates a new Rule within `eslint-plugin/src/rules`
20+
*/
21+
function createNewRule(ruleName: string) {
22+
const rulesDir = path.resolve(__dirname, '../src/rules');
23+
const testsDir = path.resolve(__dirname, '../src/tests');
24+
25+
const varName = makeVarName(ruleName);
26+
const ruleId = makeId(ruleName);
27+
const fileName = makeFileName(ruleName);
28+
const msgId = makeDefaultMessageId(ruleName);
29+
30+
const ruleTemplate = `
31+
import { createRule } from '../utils/createRule';
32+
33+
export const ${varName} = createRule({
34+
name: '${ruleId}',
35+
meta: {
36+
type: 'suggestion',
37+
messages: {
38+
'${msgId}': '',
39+
},
40+
schema: [],
41+
docs: {
42+
description: '',
43+
}
44+
},
45+
defaultOptions: [],
46+
create: context => {
47+
return {}
48+
}
49+
});
50+
`;
51+
52+
const testTemplate = `
53+
import { ${varName} } from '../rules/${fileName}';
54+
55+
import { ruleTester } from './utils/ruleTester.testutils';
56+
57+
ruleTester.run('${ruleId}', ${varName}, {
58+
valid: [{
59+
code: \`\`, // valid code snippet
60+
}],
61+
invalid: [{
62+
code: \`\`, // code with lint errors
63+
// output: '', // fixed code
64+
errors: [{
65+
messageId: '${msgId}',
66+
}]
67+
}]
68+
});
69+
`;
70+
71+
fse.writeFileSync(path.resolve(rulesDir, `${fileName}.ts`), ruleTemplate);
72+
fse.writeFileSync(
73+
path.resolve(testsDir, `${fileName}.spec.ts`),
74+
testTemplate,
75+
);
76+
buildRulesIndexFile();
77+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"compilerOptions": {
3+
"module": "CommonJS",
4+
"noEmit": true,
5+
"tsBuildInfoFile": "./tsconfig.tsbuildinfo",
6+
"incremental": true,
7+
"target": "ES5",
8+
"jsx": "react",
9+
"allowJs": true,
10+
"pretty": true,
11+
"strictNullChecks": true,
12+
"noUnusedLocals": false,
13+
"esModuleInterop": true,
14+
"strict": true,
15+
"allowSyntheticDefaultImports": true,
16+
"moduleResolution": "node",
17+
"baseUrl": ".",
18+
"skipLibCheck": true,
19+
"resolveJsonModule": true
20+
}
21+
}

0 commit comments

Comments
 (0)