Skip to content

Conversation

tsck
Copy link
Collaborator

@tsck tsck commented Aug 21, 2025

✍️ Proposed changes

This PR adds comprehensive download functionality to the CodeEditor component, allowing users to download their code with appropriate file extensions based on the selected language. The implementation includes both imperative API access and Panel UI integration.

Key Features:

  • Smart file extensions: Automatic mapping from editor language to appropriate file extension (.js, .ts, .py, .css, etc.) with .txt fallback
  • Imperative API: New downloadContent(filename?) method on CodeEditor ref handle
  • Panel integration: Download button in secondary menu now performs actual file downloads
  • Content validation: Prevents downloads of empty/whitespace-only content with user warnings
  • Context support: Download function available to child components via CodeEditorContext
  • Comprehensive testing: Behavior-focused tests that verify actual download triggers rather than implementation details

The implementation uses browser-native Blob API and maintains full backward compatibility while extending the component's capabilities. Supports 16+ languages including JavaScript, TypeScript, Python, Java, Go, Rust, and more.

🎟️ Jira ticket: LG-5455

✅ Checklist

For bug fixes, new features & breaking changes

  • I have added tests that prove my fix is effective or that my feature works
  • I have added necessary documentation (if appropriate)
  • I have run npm run build:ts and there are no errors
  • I have run npm test and there are no errors
  • I have run npm run lint:eslint and there are no errors
  • I have run npm run lint:stylelint and there are no errors
  • I have added or updated a Changeset (npx changeset)
  • I have tested this change in Storybook and/or in a test application
  • I have tested this change against both light and dark mode (if applicable)

🧪 How to test changes

Testing Download Functionality

  1. Basic Download Test:

    • Create a CodeEditor with some content: <CodeEditor defaultValue="console.log('test');" language="javascript" />
    • Call ref.current.downloadContent('my-script') or use Panel download button
    • Verify file downloads as my-script.js with correct content
  2. Language Extension Mapping:

    • Test different languages: JavaScript (.js), TypeScript (.ts), Python (.py), etc.
    • Verify correct file extensions are applied automatically
    • Test with no language specified - should default to .txt
  3. Edge Cases:

    • Try downloading empty content - should show warning and prevent download
    • Try downloading whitespace-only content - should show warning and prevent download
    • Test default filename behavior when no filename provided
  4. Panel Integration:

    • Use <Panel showSecondaryMenuButton /> component
    • Click secondary menu → Download option
    • Verify download is triggered through context
  5. Imperative API:

    • Test ref.current.downloadContent() without filename (uses 'code' default)
    • Test ref.current.downloadContent('custom-name') with custom filename
    • Verify both methods work correctly

Testing in Storybook

  • Navigate to CodeEditor stories
  • Test download functionality in different language configurations
  • Verify Panel component download integration works properly

@tsck tsck requested a review from a team as a code owner August 21, 2025 20:39
@tsck tsck requested review from TheSonOfThomp and removed request for a team August 21, 2025 20:39
Copy link

changeset-bot bot commented Aug 21, 2025

🦋 Changeset detected

Latest commit: 249a6d5

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

This PR includes changesets to release 1 package
Name Type
@leafygreen-ui/code-editor 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

@tsck tsck requested review from a team and shaneeza and removed request for TheSonOfThomp and a team August 21, 2025 20:39
Copy link
Contributor

github-actions bot commented Aug 21, 2025

Size Change: +1.3 kB (+0.06%)

Total Size: 2.07 MB

Filename Size Change
packages/code-editor/dist/esm/index.js 12.9 kB +283 B (+2.24%)
packages/code-editor/dist/esm/testing/index.js 17.7 kB +352 B (+2.03%)
packages/code-editor/dist/umd/index.js 13.2 kB +303 B (+2.35%)
packages/code-editor/dist/umd/testing/index.js 18 kB +358 B (+2.03%)
ℹ️ View Unchanged
Filename Size
charts/chart-card/dist/esm/index.js 2.78 kB
charts/chart-card/dist/umd/index.js 2.94 kB
charts/colors/dist/esm/index.js 530 B
charts/colors/dist/umd/index.js 649 B
charts/core/dist/esm/index.js 16.1 kB
charts/core/dist/umd/index.js 16.4 kB
charts/drag-provider/dist/esm/index.js 1.37 kB
charts/drag-provider/dist/umd/index.js 1.49 kB
charts/legend/dist/esm/index.js 1.52 kB
charts/legend/dist/umd/index.js 1.67 kB
charts/series-provider/dist/esm/index.js 1.28 kB
charts/series-provider/dist/umd/index.js 1.4 kB
chat/avatar/dist/esm/index.js 1.36 kB
chat/avatar/dist/umd/index.js 1.52 kB
chat/chat-disclaimer/dist/esm/index.js 932 B
chat/chat-disclaimer/dist/umd/index.js 1.11 kB
chat/chat-window/dist/esm/index.js 1.67 kB
chat/chat-window/dist/umd/index.js 1.83 kB
chat/fixed-chat-window/dist/esm/index.js 2.4 kB
chat/fixed-chat-window/dist/umd/index.js 2.58 kB
chat/input-bar/dist/esm/index.js 7.5 kB
chat/input-bar/dist/umd/index.js 7.74 kB
chat/leafygreen-chat-provider/dist/esm/index.js 957 B
chat/leafygreen-chat-provider/dist/umd/index.js 1.11 kB
chat/lg-markdown/dist/esm/index.js 1.66 kB
chat/lg-markdown/dist/umd/index.js 1.8 kB
chat/message-actions/dist/esm/index.js 3.8 kB
chat/message-actions/dist/umd/index.js 3.99 kB
chat/message-feed/dist/esm/index.js 2.8 kB
chat/message-feed/dist/umd/index.js 3.02 kB
chat/message-feedback/dist/esm/index.js 4.5 kB
chat/message-feedback/dist/umd/index.js 4.71 kB
chat/message-prompts/dist/esm/index.js 1.72 kB
chat/message-prompts/dist/umd/index.js 1.87 kB
chat/message-rating/dist/esm/index.js 2.58 kB
chat/message-rating/dist/umd/index.js 2.77 kB
chat/message/dist/esm/index.js 5.02 kB
chat/message/dist/umd/index.js 5.19 kB
chat/rich-links/dist/esm/index.js 2.73 kB
chat/rich-links/dist/umd/index.js 2.94 kB
chat/suggestions/dist/esm/index.js 1.65 kB
chat/suggestions/dist/esm/testing/index.js 55 B
chat/suggestions/dist/umd/index.js 1.84 kB
chat/suggestions/dist/umd/testing/index.js 113 B
chat/title-bar/dist/esm/index.js 1.38 kB
chat/title-bar/dist/umd/index.js 1.59 kB
packages/a11y/dist/esm/index.js 1.71 kB
packages/a11y/dist/umd/index.js 1.83 kB
packages/avatar/dist/esm/index.js 3.4 kB
packages/avatar/dist/umd/index.js 3.58 kB
packages/badge/dist/esm/index.js 1.47 kB
packages/badge/dist/umd/index.js 1.65 kB
packages/banner/dist/esm/index.js 3.09 kB
packages/banner/dist/umd/index.js 3.38 kB
packages/box/dist/esm/index.js 489 B
packages/box/dist/umd/index.js 633 B
packages/button/dist/esm/constants.js 121 B
packages/button/dist/esm/index.js 4.8 kB
packages/button/dist/esm/testing/index.js 321 B
packages/button/dist/umd/constants.js 262 B
packages/button/dist/umd/index.js 4.98 kB
packages/button/dist/umd/testing/index.js 438 B
packages/callout/dist/esm/index.js 1.55 kB
packages/callout/dist/umd/index.js 1.72 kB
packages/card/dist/esm/index.js 1.52 kB
packages/card/dist/umd/index.js 1.69 kB
packages/checkbox/dist/esm/index.js 4.27 kB
packages/checkbox/dist/umd/index.js 4.46 kB
packages/chip/dist/esm/index.js 3.21 kB
packages/chip/dist/umd/index.js 3.42 kB
packages/code/dist/esm/index.js 10.6 kB
packages/code/dist/esm/testing/index.js 11.4 kB
packages/code/dist/umd/index.js 11.2 kB
packages/code/dist/umd/testing/index.js 12 kB
packages/combobox/dist/esm/index.js 11.5 kB
packages/combobox/dist/umd/index.js 11.8 kB
packages/confirmation-modal/dist/esm/index.js 2.61 kB
packages/confirmation-modal/dist/umd/index.js 2.83 kB
packages/context-drawer/dist/esm/index.js 3.12 kB
packages/context-drawer/dist/esm/testing/index.js 3.52 kB
packages/context-drawer/dist/umd/index.js 3.28 kB
packages/context-drawer/dist/umd/testing/index.js 3.67 kB
packages/copyable/dist/esm/index.js 2.77 kB
packages/copyable/dist/umd/index.js 2.97 kB
packages/date-picker/dist/esm/index.js 13.6 kB
packages/date-picker/dist/umd/index.js 14 kB
packages/date-utils/dist/esm/index.js 2.7 kB
packages/date-utils/dist/esm/testing/index.js 1.35 kB
packages/date-utils/dist/umd/index.js 2.8 kB
packages/date-utils/dist/umd/testing/index.js 1.49 kB
packages/descendants/dist/esm/index.js 2.81 kB
packages/descendants/dist/umd/index.js 2.92 kB
packages/drawer/dist/esm/index.js 7.78 kB
packages/drawer/dist/esm/testing/index.js 490 B
packages/drawer/dist/umd/index.js 7.93 kB
packages/drawer/dist/umd/testing/index.js 605 B
packages/emotion/dist/esm/index.js 356 B
packages/emotion/dist/umd/index.js 570 B
packages/empty-state/dist/esm/index.js 1.75 kB
packages/empty-state/dist/umd/index.js 1.93 kB
packages/expandable-card/dist/esm/index.js 2.95 kB
packages/expandable-card/dist/esm/testing/index.js 3.47 kB
packages/expandable-card/dist/umd/index.js 3.15 kB
packages/expandable-card/dist/umd/testing/index.js 3.67 kB
packages/form-field/dist/esm/index.js 4.37 kB
packages/form-field/dist/umd/index.js 4.53 kB
packages/form-footer/dist/esm/index.js 1.68 kB
packages/form-footer/dist/umd/index.js 1.9 kB
packages/gallery-indicator/dist/esm/index.js 1.39 kB
packages/gallery-indicator/dist/esm/testing/index.js 351 B
packages/gallery-indicator/dist/umd/index.js 1.54 kB
packages/gallery-indicator/dist/umd/testing/index.js 475 B
packages/guide-cue/dist/esm/index.js 5.17 kB
packages/guide-cue/dist/umd/index.js 5.37 kB
packages/hooks/dist/esm/index.js 3.54 kB
packages/hooks/dist/umd/index.js 3.66 kB
packages/icon-button/dist/esm/index.js 2.27 kB
packages/icon-button/dist/umd/index.js 2.48 kB
packages/icon/dist/ActivityFeed.js 1.96 kB
packages/icon/dist/AddFile.js 1.73 kB
packages/icon/dist/AIModel.js 1.57 kB
packages/icon/dist/AllProducts.js 1.8 kB
packages/icon/dist/AnalyticsNode.js 1.57 kB
packages/icon/dist/Apps.js 1.4 kB
packages/icon/dist/Array.js 1.52 kB
packages/icon/dist/ArrowDown.js 1.65 kB
packages/icon/dist/ArrowLeft.js 1.66 kB
packages/icon/dist/ArrowRight.js 1.65 kB
packages/icon/dist/ArrowUp.js 1.65 kB
packages/icon/dist/Award.js 2.09 kB
packages/icon/dist/Beaker.js 2.08 kB
packages/icon/dist/Bell.js 1.61 kB
packages/icon/dist/Biometric.js 2.18 kB
packages/icon/dist/Boolean.js 1.45 kB
packages/icon/dist/Building.js 1.6 kB
packages/icon/dist/Bulb.js 1.64 kB
packages/icon/dist/Calendar.js 1.6 kB
packages/icon/dist/Camera.js 1.69 kB
packages/icon/dist/Cap.js 1.81 kB
packages/icon/dist/CaretDown.js 1.47 kB
packages/icon/dist/CaretLeft.js 1.47 kB
packages/icon/dist/CaretRight.js 1.46 kB
packages/icon/dist/CaretUp.js 1.47 kB
packages/icon/dist/ChartFilled.js 1.57 kB
packages/icon/dist/Charts.js 1.54 kB
packages/icon/dist/Checkmark.js 1.61 kB
packages/icon/dist/CheckmarkWithCircle.js 1.68 kB
packages/icon/dist/ChevronDown.js 1.57 kB
packages/icon/dist/ChevronLeft.js 1.57 kB
packages/icon/dist/ChevronRight.js 1.59 kB
packages/icon/dist/ChevronUp.js 1.56 kB
packages/icon/dist/Circle.js 1.34 kB
packages/icon/dist/Clock.js 1.63 kB
packages/icon/dist/ClockWithArrow.js 1.92 kB
packages/icon/dist/Clone.js 1.5 kB
packages/icon/dist/Cloud.js 1.68 kB
packages/icon/dist/Code.js 1.89 kB
packages/icon/dist/CodeBlock.js 1.83 kB
packages/icon/dist/Coin.js 1.94 kB
packages/icon/dist/Colon.js 1.45 kB
packages/icon/dist/Config.js 1.76 kB
packages/icon/dist/Connect.js 1.93 kB
packages/icon/dist/Copy.js 1.88 kB
packages/icon/dist/CreditCard.js 1.43 kB
packages/icon/dist/CurlyBraces.js 2.04 kB
packages/icon/dist/Cursor.js 1.56 kB
packages/icon/dist/Dashboard.js 1.57 kB
packages/icon/dist/Database.js 2.03 kB
packages/icon/dist/Diagram.js 1.65 kB
packages/icon/dist/Diagram2.js 1.66 kB
packages/icon/dist/Diagram3.js 1.63 kB
packages/icon/dist/Disconnect.js 1.87 kB
packages/icon/dist/Download.js 1.79 kB
packages/icon/dist/Drag.js 1.61 kB
packages/icon/dist/Edit.js 1.51 kB
packages/icon/dist/Ellipsis.js 1.49 kB
packages/icon/dist/Email.js 1.71 kB
packages/icon/dist/EmptyDatabase.js 4.31 kB
packages/icon/dist/EmptyFolder.js 2.1 kB
packages/icon/dist/Eraser.js 1.78 kB
packages/icon/dist/Escalation.js 1.68 kB
packages/icon/dist/esm/ActivityFeed.js 1.75 kB
packages/icon/dist/esm/AddFile.js 1.52 kB
packages/icon/dist/esm/AIModel.js 1.38 kB
packages/icon/dist/esm/AllProducts.js 1.6 kB
packages/icon/dist/esm/AnalyticsNode.js 1.36 kB
packages/icon/dist/esm/Apps.js 1.2 kB
packages/icon/dist/esm/Array.js 1.32 kB
packages/icon/dist/esm/ArrowDown.js 1.44 kB
packages/icon/dist/esm/ArrowLeft.js 1.45 kB
packages/icon/dist/esm/ArrowRight.js 1.44 kB
packages/icon/dist/esm/ArrowUp.js 1.44 kB
packages/icon/dist/esm/Award.js 1.88 kB
packages/icon/dist/esm/Beaker.js 1.88 kB
packages/icon/dist/esm/Bell.js 1.41 kB
packages/icon/dist/esm/Biometric.js 1.97 kB
packages/icon/dist/esm/Boolean.js 1.25 kB
packages/icon/dist/esm/Building.js 1.4 kB
packages/icon/dist/esm/Bulb.js 1.44 kB
packages/icon/dist/esm/Calendar.js 1.4 kB
packages/icon/dist/esm/Camera.js 1.49 kB
packages/icon/dist/esm/Cap.js 1.6 kB
packages/icon/dist/esm/CaretDown.js 1.27 kB
packages/icon/dist/esm/CaretLeft.js 1.26 kB
packages/icon/dist/esm/CaretRight.js 1.26 kB
packages/icon/dist/esm/CaretUp.js 1.27 kB
packages/icon/dist/esm/ChartFilled.js 1.36 kB
packages/icon/dist/esm/Charts.js 1.34 kB
packages/icon/dist/esm/Checkmark.js 1.4 kB
packages/icon/dist/esm/CheckmarkWithCircle.js 1.47 kB
packages/icon/dist/esm/ChevronDown.js 1.37 kB
packages/icon/dist/esm/ChevronLeft.js 1.37 kB
packages/icon/dist/esm/ChevronRight.js 1.38 kB
packages/icon/dist/esm/ChevronUp.js 1.36 kB
packages/icon/dist/esm/Circle.js 1.14 kB
packages/icon/dist/esm/Clock.js 1.43 kB
packages/icon/dist/esm/ClockWithArrow.js 1.71 kB
packages/icon/dist/esm/Clone.js 1.3 kB
packages/icon/dist/esm/Cloud.js 1.48 kB
packages/icon/dist/esm/Code.js 1.69 kB
packages/icon/dist/esm/CodeBlock.js 1.62 kB
packages/icon/dist/esm/Coin.js 1.73 kB
packages/icon/dist/esm/Colon.js 1.25 kB
packages/icon/dist/esm/Config.js 1.56 kB
packages/icon/dist/esm/Connect.js 1.73 kB
packages/icon/dist/esm/Copy.js 1.67 kB
packages/icon/dist/esm/CreditCard.js 1.23 kB
packages/icon/dist/esm/CurlyBraces.js 1.83 kB
packages/icon/dist/esm/Cursor.js 1.35 kB
packages/icon/dist/esm/Dashboard.js 1.37 kB
packages/icon/dist/esm/Database.js 1.83 kB
packages/icon/dist/esm/Diagram.js 1.45 kB
packages/icon/dist/esm/Diagram2.js 1.46 kB
packages/icon/dist/esm/Diagram3.js 1.43 kB
packages/icon/dist/esm/Disconnect.js 1.66 kB
packages/icon/dist/esm/Download.js 1.58 kB
packages/icon/dist/esm/Drag.js 1.42 kB
packages/icon/dist/esm/Edit.js 1.31 kB
packages/icon/dist/esm/Ellipsis.js 1.29 kB
packages/icon/dist/esm/Email.js 1.51 kB
packages/icon/dist/esm/EmptyDatabase.js 4.08 kB
packages/icon/dist/esm/EmptyFolder.js 1.89 kB
packages/icon/dist/esm/Eraser.js 1.57 kB
packages/icon/dist/esm/Escalation.js 1.47 kB
packages/icon/dist/esm/Export.js 1.58 kB
packages/icon/dist/esm/Favorite.js 1.53 kB
packages/icon/dist/esm/Federation.js 1.85 kB
packages/icon/dist/esm/File.js 1.34 kB
packages/icon/dist/esm/Filter.js 1.32 kB
packages/icon/dist/esm/Folder.js 1.23 kB
packages/icon/dist/esm/Format.js 1.66 kB
packages/icon/dist/esm/FullScreenEnter.js 1.49 kB
packages/icon/dist/esm/FullScreenExit.js 1.5 kB
packages/icon/dist/esm/Function.js 2.54 kB
packages/icon/dist/esm/Gauge.js 1.53 kB
packages/icon/dist/esm/GlobeAmericas.js 1.45 kB
packages/icon/dist/esm/GovernmentBuilding.js 1.48 kB
packages/icon/dist/esm/Guide.js 1.79 kB
packages/icon/dist/esm/Hash.js 1.63 kB
packages/icon/dist/esm/HiddenSecondaryNode.js 2.9 kB
packages/icon/dist/esm/Highlight.js 1.68 kB
packages/icon/dist/esm/Home.js 1.59 kB
packages/icon/dist/esm/HorizontalDrag.js 1.42 kB
packages/icon/dist/esm/Import.js 1.57 kB
packages/icon/dist/esm/ImportantWithCircle.js 1.34 kB
packages/icon/dist/esm/index.js 35.2 kB
packages/icon/dist/esm/InfoWithCircle.js 1.37 kB
packages/icon/dist/esm/InternalEmployee.js 1.66 kB
packages/icon/dist/esm/InviteUser.js 1.68 kB
packages/icon/dist/esm/Key.js 1.48 kB
packages/icon/dist/esm/Laptop.js 1.46 kB
packages/icon/dist/esm/LightningBolt.js 1.34 kB
packages/icon/dist/esm/Link.js 1.84 kB
packages/icon/dist/esm/List.js 1.48 kB
packages/icon/dist/esm/Lock.js 1.43 kB
packages/icon/dist/esm/LogIn.js 1.51 kB
packages/icon/dist/esm/LogOut.js 1.57 kB
packages/icon/dist/esm/MagnifyingGlass.js 1.41 kB
packages/icon/dist/esm/Megaphone.js 1.38 kB
packages/icon/dist/esm/Menu.js 1.29 kB
packages/icon/dist/esm/Minus.js 1.24 kB
packages/icon/dist/esm/Mobile.js 1.24 kB
packages/icon/dist/esm/Moon.js 1.42 kB
packages/icon/dist/esm/MultiDirectionArrow.js 1.46 kB
packages/icon/dist/esm/MultiLayers.js 2.42 kB
packages/icon/dist/esm/NavCollapse.js 1.48 kB
packages/icon/dist/esm/NavExpand.js 1.49 kB
packages/icon/dist/esm/NoFilter.js 1.47 kB
packages/icon/dist/esm/NotAllowed.js 1.35 kB
packages/icon/dist/esm/Note.js 1.39 kB
packages/icon/dist/esm/NumberedList.js 2.29 kB
packages/icon/dist/esm/OpenNewTab.js 1.67 kB
packages/icon/dist/esm/OutlineFavorite.js 1.8 kB
packages/icon/dist/esm/Package.js 1.65 kB
packages/icon/dist/esm/Pause.js 1.29 kB
packages/icon/dist/esm/Pending.js 1.27 kB
packages/icon/dist/esm/Person.js 1.46 kB
packages/icon/dist/esm/PersonGroup.js 1.66 kB
packages/icon/dist/esm/PersonWithLock.js 1.67 kB
packages/icon/dist/esm/Pin.js 1.4 kB
packages/icon/dist/esm/Play.js 1.28 kB
packages/icon/dist/esm/Plus.js 1.3 kB
packages/icon/dist/esm/PlusWithCircle.js 1.33 kB
packages/icon/dist/esm/Primary.js 1.35 kB
packages/icon/dist/esm/Project.js 1.39 kB
packages/icon/dist/esm/QuestionMarkWithCircle.js 1.7 kB
packages/icon/dist/esm/Read.js 2 kB
packages/icon/dist/esm/Recommended.js 2.17 kB
packages/icon/dist/esm/Redo.js 1.64 kB
packages/icon/dist/esm/Refresh.js 1.71 kB
packages/icon/dist/esm/Relationship.js 1.4 kB
packages/icon/dist/esm/ReplicaSet.js 1.55 kB
packages/icon/dist/esm/Resize.js 1.37 kB
packages/icon/dist/esm/Resource.js 1.7 kB
packages/icon/dist/esm/Return.js 1.47 kB
packages/icon/dist/esm/Revert.js 1.51 kB
packages/icon/dist/esm/Router.js 2.17 kB
packages/icon/dist/esm/Save.js 1.9 kB
packages/icon/dist/esm/SearchIndex.js 2.03 kB
packages/icon/dist/esm/Secondary.js 1.58 kB
packages/icon/dist/esm/Serverless.js 1.54 kB
packages/icon/dist/esm/Settings.js 1.97 kB
packages/icon/dist/esm/ShardedCluster.js 1.92 kB
packages/icon/dist/esm/Shell.js 1.46 kB
packages/icon/dist/esm/Shield.js 1.89 kB
packages/icon/dist/esm/Shirt.js 1.4 kB
packages/icon/dist/esm/Shortcut.js 1.97 kB
packages/icon/dist/esm/SMS.js 1.41 kB
packages/icon/dist/esm/SortAscending.js 1.5 kB
packages/icon/dist/esm/SortDescending.js 1.49 kB
packages/icon/dist/esm/Sparkle.js 1.83 kB
packages/icon/dist/esm/SplitHorizontal.js 1.26 kB
packages/icon/dist/esm/SplitVertical.js 1.26 kB
packages/icon/dist/esm/Stitch.js 1.29 kB
packages/icon/dist/esm/Stop.js 1.15 kB
packages/icon/dist/esm/Streaming.js 2.29 kB
packages/icon/dist/esm/String.js 1.4 kB
packages/icon/dist/esm/Sun.js 1.63 kB
packages/icon/dist/esm/Support.js 1.49 kB
packages/icon/dist/esm/Sweep.js 1.51 kB
packages/icon/dist/esm/Table.js 1.28 kB
packages/icon/dist/esm/Tag.js 1.32 kB
packages/icon/dist/esm/TemporaryTable.js 1.52 kB
packages/icon/dist/esm/ThumbsDown.js 1.61 kB
packages/icon/dist/esm/ThumbsUp.js 1.6 kB
packages/icon/dist/esm/TimeSeries.js 1.66 kB
packages/icon/dist/esm/TimeSeriesCollection.js 1.79 kB
packages/icon/dist/esm/Trash.js 1.32 kB
packages/icon/dist/esm/Undo.js 1.63 kB
packages/icon/dist/esm/University.js 1.82 kB
packages/icon/dist/esm/Unlock.js 1.5 kB
packages/icon/dist/esm/Unsorted.js 1.54 kB
packages/icon/dist/esm/UpDownCarets.js 1.39 kB
packages/icon/dist/esm/Upload.js 1.59 kB
packages/icon/dist/esm/VerticalEllipsis.js 1.3 kB
packages/icon/dist/esm/View.js 1.45 kB
packages/icon/dist/esm/Visibility.js 1.62 kB
packages/icon/dist/esm/VisibilityOff.js 2.01 kB
packages/icon/dist/esm/Warning.js 1.39 kB
packages/icon/dist/esm/Wizard.js 1.73 kB
packages/icon/dist/esm/Wrench.js 1.72 kB
packages/icon/dist/esm/Write.js 2 kB
packages/icon/dist/esm/X.js 1.42 kB
packages/icon/dist/esm/XWithCircle.js 1.37 kB
packages/icon/dist/Export.js 1.78 kB
packages/icon/dist/Favorite.js 1.74 kB
packages/icon/dist/Federation.js 2.06 kB
packages/icon/dist/File.js 1.54 kB
packages/icon/dist/Filter.js 1.53 kB
packages/icon/dist/Folder.js 1.43 kB
packages/icon/dist/Format.js 1.86 kB
packages/icon/dist/FullScreenEnter.js 1.69 kB
packages/icon/dist/FullScreenExit.js 1.7 kB
packages/icon/dist/Function.js 2.75 kB
packages/icon/dist/Gauge.js 1.73 kB
packages/icon/dist/GlobeAmericas.js 1.65 kB
packages/icon/dist/GovernmentBuilding.js 1.68 kB
packages/icon/dist/Guide.js 2 kB
packages/icon/dist/Hash.js 1.83 kB
packages/icon/dist/HiddenSecondaryNode.js 3.11 kB
packages/icon/dist/Highlight.js 1.89 kB
packages/icon/dist/Home.js 1.8 kB
packages/icon/dist/HorizontalDrag.js 1.62 kB
packages/icon/dist/Import.js 1.78 kB
packages/icon/dist/ImportantWithCircle.js 1.54 kB
packages/icon/dist/index.js 35.5 kB
packages/icon/dist/InfoWithCircle.js 1.57 kB
packages/icon/dist/InternalEmployee.js 1.87 kB
packages/icon/dist/InviteUser.js 1.88 kB
packages/icon/dist/Key.js 1.68 kB
packages/icon/dist/Laptop.js 1.66 kB
packages/icon/dist/LightningBolt.js 1.54 kB
packages/icon/dist/Link.js 2.05 kB
packages/icon/dist/List.js 1.68 kB
packages/icon/dist/Lock.js 1.63 kB
packages/icon/dist/LogIn.js 1.71 kB
packages/icon/dist/LogOut.js 1.77 kB
packages/icon/dist/MagnifyingGlass.js 1.61 kB
packages/icon/dist/Megaphone.js 1.58 kB
packages/icon/dist/Menu.js 1.49 kB
packages/icon/dist/Minus.js 1.44 kB
packages/icon/dist/Mobile.js 1.44 kB
packages/icon/dist/Moon.js 1.63 kB
packages/icon/dist/MultiDirectionArrow.js 1.66 kB
packages/icon/dist/MultiLayers.js 2.63 kB
packages/icon/dist/NavCollapse.js 1.68 kB
packages/icon/dist/NavExpand.js 1.69 kB
packages/icon/dist/NoFilter.js 1.67 kB
packages/icon/dist/NotAllowed.js 1.55 kB
packages/icon/dist/Note.js 1.59 kB
packages/icon/dist/NumberedList.js 2.5 kB
packages/icon/dist/OpenNewTab.js 1.88 kB
packages/icon/dist/OutlineFavorite.js 2.01 kB
packages/icon/dist/Package.js 1.85 kB
packages/icon/dist/Pause.js 1.49 kB
packages/icon/dist/Pending.js 1.47 kB
packages/icon/dist/Person.js 1.67 kB
packages/icon/dist/PersonGroup.js 1.87 kB
packages/icon/dist/PersonWithLock.js 1.87 kB
packages/icon/dist/Pin.js 1.6 kB
packages/icon/dist/Play.js 1.48 kB
packages/icon/dist/Plus.js 1.5 kB
packages/icon/dist/PlusWithCircle.js 1.53 kB
packages/icon/dist/Primary.js 1.55 kB
packages/icon/dist/Project.js 1.59 kB
packages/icon/dist/QuestionMarkWithCircle.js 1.91 kB
packages/icon/dist/Read.js 2.2 kB
packages/icon/dist/Recommended.js 2.38 kB
packages/icon/dist/Redo.js 1.85 kB
packages/icon/dist/Refresh.js 1.91 kB
packages/icon/dist/Relationship.js 1.6 kB
packages/icon/dist/ReplicaSet.js 1.75 kB
packages/icon/dist/Resize.js 1.57 kB
packages/icon/dist/Resource.js 1.9 kB
packages/icon/dist/Return.js 1.67 kB
packages/icon/dist/Revert.js 1.71 kB
packages/icon/dist/Router.js 2.38 kB
packages/icon/dist/Save.js 2.1 kB
packages/icon/dist/SearchIndex.js 2.24 kB
packages/icon/dist/Secondary.js 1.79 kB
packages/icon/dist/Serverless.js 1.75 kB
packages/icon/dist/Settings.js 2.17 kB
packages/icon/dist/ShardedCluster.js 2.12 kB
packages/icon/dist/Shell.js 1.66 kB
packages/icon/dist/Shield.js 2.1 kB
packages/icon/dist/Shirt.js 1.61 kB
packages/icon/dist/Shortcut.js 2.18 kB
packages/icon/dist/SMS.js 1.62 kB
packages/icon/dist/SortAscending.js 1.7 kB
packages/icon/dist/SortDescending.js 1.7 kB
packages/icon/dist/Sparkle.js 2.03 kB
packages/icon/dist/SplitHorizontal.js 1.47 kB
packages/icon/dist/SplitVertical.js 1.46 kB
packages/icon/dist/Stitch.js 1.5 kB
packages/icon/dist/Stop.js 1.34 kB
packages/icon/dist/Streaming.js 2.5 kB
packages/icon/dist/String.js 1.61 kB
packages/icon/dist/Sun.js 1.82 kB
packages/icon/dist/Support.js 1.7 kB
packages/icon/dist/Sweep.js 1.72 kB
packages/icon/dist/Table.js 1.49 kB
packages/icon/dist/Tag.js 1.52 kB
packages/icon/dist/TemporaryTable.js 1.73 kB
packages/icon/dist/ThumbsDown.js 1.82 kB
packages/icon/dist/ThumbsUp.js 1.81 kB
packages/icon/dist/TimeSeries.js 1.86 kB
packages/icon/dist/TimeSeriesCollection.js 2 kB
packages/icon/dist/Trash.js 1.52 kB
packages/icon/dist/umd/ActivityFeed.js 1.96 kB
packages/icon/dist/umd/AddFile.js 1.73 kB
packages/icon/dist/umd/AIModel.js 1.57 kB
packages/icon/dist/umd/AllProducts.js 1.8 kB
packages/icon/dist/umd/AnalyticsNode.js 1.57 kB
packages/icon/dist/umd/Apps.js 1.4 kB
packages/icon/dist/umd/Array.js 1.52 kB
packages/icon/dist/umd/ArrowDown.js 1.65 kB
packages/icon/dist/umd/ArrowLeft.js 1.66 kB
packages/icon/dist/umd/ArrowRight.js 1.65 kB
packages/icon/dist/umd/ArrowUp.js 1.65 kB
packages/icon/dist/umd/Award.js 2.09 kB
packages/icon/dist/umd/Beaker.js 2.08 kB
packages/icon/dist/umd/Bell.js 1.61 kB
packages/icon/dist/umd/Biometric.js 2.18 kB
packages/icon/dist/umd/Boolean.js 1.45 kB
packages/icon/dist/umd/Building.js 1.6 kB
packages/icon/dist/umd/Bulb.js 1.64 kB
packages/icon/dist/umd/Calendar.js 1.6 kB
packages/icon/dist/umd/Camera.js 1.69 kB
packages/icon/dist/umd/Cap.js 1.81 kB
packages/icon/dist/umd/CaretDown.js 1.47 kB
packages/icon/dist/umd/CaretLeft.js 1.47 kB
packages/icon/dist/umd/CaretRight.js 1.46 kB
packages/icon/dist/umd/CaretUp.js 1.47 kB
packages/icon/dist/umd/ChartFilled.js 1.57 kB
packages/icon/dist/umd/Charts.js 1.54 kB
packages/icon/dist/umd/Checkmark.js 1.61 kB
packages/icon/dist/umd/CheckmarkWithCircle.js 1.68 kB
packages/icon/dist/umd/ChevronDown.js 1.57 kB
packages/icon/dist/umd/ChevronLeft.js 1.57 kB
packages/icon/dist/umd/ChevronRight.js 1.59 kB
packages/icon/dist/umd/ChevronUp.js 1.56 kB
packages/icon/dist/umd/Circle.js 1.34 kB
packages/icon/dist/umd/Clock.js 1.63 kB
packages/icon/dist/umd/ClockWithArrow.js 1.92 kB
packages/icon/dist/umd/Clone.js 1.5 kB
packages/icon/dist/umd/Cloud.js 1.68 kB
packages/icon/dist/umd/Code.js 1.89 kB
packages/icon/dist/umd/CodeBlock.js 1.83 kB
packages/icon/dist/umd/Coin.js 1.94 kB
packages/icon/dist/umd/Colon.js 1.45 kB
packages/icon/dist/umd/Config.js 1.76 kB
packages/icon/dist/umd/Connect.js 1.93 kB
packages/icon/dist/umd/Copy.js 1.88 kB
packages/icon/dist/umd/CreditCard.js 1.43 kB
packages/icon/dist/umd/CurlyBraces.js 2.04 kB
packages/icon/dist/umd/Cursor.js 1.56 kB
packages/icon/dist/umd/Dashboard.js 1.57 kB
packages/icon/dist/umd/Database.js 2.03 kB
packages/icon/dist/umd/Diagram.js 1.65 kB
packages/icon/dist/umd/Diagram2.js 1.66 kB
packages/icon/dist/umd/Diagram3.js 1.63 kB
packages/icon/dist/umd/Disconnect.js 1.87 kB
packages/icon/dist/umd/Download.js 1.79 kB
packages/icon/dist/umd/Drag.js 1.61 kB
packages/icon/dist/umd/Edit.js 1.51 kB
packages/icon/dist/umd/Ellipsis.js 1.49 kB
packages/icon/dist/umd/Email.js 1.71 kB
packages/icon/dist/umd/EmptyDatabase.js 4.31 kB
packages/icon/dist/umd/EmptyFolder.js 2.1 kB
packages/icon/dist/umd/Eraser.js 1.78 kB
packages/icon/dist/umd/Escalation.js 1.68 kB
packages/icon/dist/umd/Export.js 1.78 kB
packages/icon/dist/umd/Favorite.js 1.74 kB
packages/icon/dist/umd/Federation.js 2.06 kB
packages/icon/dist/umd/File.js 1.54 kB
packages/icon/dist/umd/Filter.js 1.53 kB
packages/icon/dist/umd/Folder.js 1.43 kB
packages/icon/dist/umd/Format.js 1.86 kB
packages/icon/dist/umd/FullScreenEnter.js 1.69 kB
packages/icon/dist/umd/FullScreenExit.js 1.7 kB
packages/icon/dist/umd/Function.js 2.75 kB
packages/icon/dist/umd/Gauge.js 1.73 kB
packages/icon/dist/umd/GlobeAmericas.js 1.65 kB
packages/icon/dist/umd/GovernmentBuilding.js 1.68 kB
packages/icon/dist/umd/Guide.js 2 kB
packages/icon/dist/umd/Hash.js 1.83 kB
packages/icon/dist/umd/HiddenSecondaryNode.js 3.11 kB
packages/icon/dist/umd/Highlight.js 1.89 kB
packages/icon/dist/umd/Home.js 1.8 kB
packages/icon/dist/umd/HorizontalDrag.js 1.62 kB
packages/icon/dist/umd/Import.js 1.78 kB
packages/icon/dist/umd/ImportantWithCircle.js 1.54 kB
packages/icon/dist/umd/index.js 35.5 kB
packages/icon/dist/umd/InfoWithCircle.js 1.57 kB
packages/icon/dist/umd/InternalEmployee.js 1.87 kB
packages/icon/dist/umd/InviteUser.js 1.88 kB
packages/icon/dist/umd/Key.js 1.68 kB
packages/icon/dist/umd/Laptop.js 1.66 kB
packages/icon/dist/umd/LightningBolt.js 1.54 kB
packages/icon/dist/umd/Link.js 2.05 kB
packages/icon/dist/umd/List.js 1.68 kB
packages/icon/dist/umd/Lock.js 1.63 kB
packages/icon/dist/umd/LogIn.js 1.71 kB
packages/icon/dist/umd/LogOut.js 1.77 kB
packages/icon/dist/umd/MagnifyingGlass.js 1.61 kB
packages/icon/dist/umd/Megaphone.js 1.58 kB
packages/icon/dist/umd/Menu.js 1.49 kB
packages/icon/dist/umd/Minus.js 1.44 kB
packages/icon/dist/umd/Mobile.js 1.44 kB
packages/icon/dist/umd/Moon.js 1.63 kB
packages/icon/dist/umd/MultiDirectionArrow.js 1.66 kB
packages/icon/dist/umd/MultiLayers.js 2.63 kB
packages/icon/dist/umd/NavCollapse.js 1.68 kB
packages/icon/dist/umd/NavExpand.js 1.69 kB
packages/icon/dist/umd/NoFilter.js 1.67 kB
packages/icon/dist/umd/NotAllowed.js 1.55 kB
packages/icon/dist/umd/Note.js 1.59 kB
packages/icon/dist/umd/NumberedList.js 2.5 kB
packages/icon/dist/umd/OpenNewTab.js 1.88 kB
packages/icon/dist/umd/OutlineFavorite.js 2.01 kB
packages/icon/dist/umd/Package.js 1.85 kB
packages/icon/dist/umd/Pause.js 1.49 kB
packages/icon/dist/umd/Pending.js 1.47 kB
packages/icon/dist/umd/Person.js 1.67 kB
packages/icon/dist/umd/PersonGroup.js 1.87 kB
packages/icon/dist/umd/PersonWithLock.js 1.87 kB
packages/icon/dist/umd/Pin.js 1.6 kB
packages/icon/dist/umd/Play.js 1.48 kB
packages/icon/dist/umd/Plus.js 1.5 kB
packages/icon/dist/umd/PlusWithCircle.js 1.53 kB
packages/icon/dist/umd/Primary.js 1.55 kB
packages/icon/dist/umd/Project.js 1.59 kB
packages/icon/dist/umd/QuestionMarkWithCircle.js 1.91 kB
packages/icon/dist/umd/Read.js 2.2 kB
packages/icon/dist/umd/Recommended.js 2.38 kB
packages/icon/dist/umd/Redo.js 1.85 kB
packages/icon/dist/umd/Refresh.js 1.91 kB
packages/icon/dist/umd/Relationship.js 1.6 kB
packages/icon/dist/umd/ReplicaSet.js 1.75 kB
packages/icon/dist/umd/Resize.js 1.57 kB
packages/icon/dist/umd/Resource.js 1.9 kB
packages/icon/dist/umd/Return.js 1.67 kB
packages/icon/dist/umd/Revert.js 1.71 kB
packages/icon/dist/umd/Router.js 2.38 kB
packages/icon/dist/umd/Save.js 2.1 kB
packages/icon/dist/umd/SearchIndex.js 2.24 kB
packages/icon/dist/umd/Secondary.js 1.79 kB
packages/icon/dist/umd/Serverless.js 1.75 kB
packages/icon/dist/umd/Settings.js 2.17 kB
packages/icon/dist/umd/ShardedCluster.js 2.12 kB
packages/icon/dist/umd/Shell.js 1.66 kB
packages/icon/dist/umd/Shield.js 2.1 kB
packages/icon/dist/umd/Shirt.js 1.61 kB
packages/icon/dist/umd/Shortcut.js 2.18 kB
packages/icon/dist/umd/SMS.js 1.62 kB
packages/icon/dist/umd/SortAscending.js 1.7 kB
packages/icon/dist/umd/SortDescending.js 1.7 kB
packages/icon/dist/umd/Sparkle.js 2.03 kB
packages/icon/dist/umd/SplitHorizontal.js 1.47 kB
packages/icon/dist/umd/SplitVertical.js 1.46 kB
packages/icon/dist/umd/Stitch.js 1.5 kB
packages/icon/dist/umd/Stop.js 1.34 kB
packages/icon/dist/umd/Streaming.js 2.5 kB
packages/icon/dist/umd/String.js 1.61 kB
packages/icon/dist/umd/Sun.js 1.82 kB
packages/icon/dist/umd/Support.js 1.7 kB
packages/icon/dist/umd/Sweep.js 1.72 kB
packages/icon/dist/umd/Table.js 1.49 kB
packages/icon/dist/umd/Tag.js 1.52 kB
packages/icon/dist/umd/TemporaryTable.js 1.73 kB
packages/icon/dist/umd/ThumbsDown.js 1.82 kB
packages/icon/dist/umd/ThumbsUp.js 1.81 kB
packages/icon/dist/umd/TimeSeries.js 1.86 kB
packages/icon/dist/umd/TimeSeriesCollection.js 2 kB
packages/icon/dist/umd/Trash.js 1.52 kB
packages/icon/dist/umd/Undo.js 1.84 kB
packages/icon/dist/umd/University.js 2.03 kB
packages/icon/dist/umd/Unlock.js 1.71 kB
packages/icon/dist/umd/Unsorted.js 1.75 kB
packages/icon/dist/umd/UpDownCarets.js 1.59 kB
packages/icon/dist/umd/Upload.js 1.8 kB
packages/icon/dist/umd/VerticalEllipsis.js 1.5 kB
packages/icon/dist/umd/View.js 1.65 kB
packages/icon/dist/umd/Visibility.js 1.82 kB
packages/icon/dist/umd/VisibilityOff.js 2.23 kB
packages/icon/dist/umd/Warning.js 1.59 kB
packages/icon/dist/umd/Wizard.js 1.94 kB
packages/icon/dist/umd/Wrench.js 1.93 kB
packages/icon/dist/umd/Write.js 2.21 kB
packages/icon/dist/umd/X.js 1.63 kB
packages/icon/dist/umd/XWithCircle.js 1.57 kB
packages/icon/dist/Undo.js 1.84 kB
packages/icon/dist/University.js 2.03 kB
packages/icon/dist/Unlock.js 1.71 kB
packages/icon/dist/Unsorted.js 1.75 kB
packages/icon/dist/UpDownCarets.js 1.59 kB
packages/icon/dist/Upload.js 1.8 kB
packages/icon/dist/VerticalEllipsis.js 1.5 kB
packages/icon/dist/View.js 1.65 kB
packages/icon/dist/Visibility.js 1.82 kB
packages/icon/dist/VisibilityOff.js 2.23 kB
packages/icon/dist/Warning.js 1.59 kB
packages/icon/dist/Wizard.js 1.94 kB
packages/icon/dist/Wrench.js 1.93 kB
packages/icon/dist/Write.js 2.21 kB
packages/icon/dist/X.js 1.63 kB
packages/icon/dist/XWithCircle.js 1.57 kB
packages/info-sprinkle/dist/esm/index.js 1.83 kB
packages/info-sprinkle/dist/umd/index.js 2.03 kB
packages/inline-definition/dist/esm/index.js 1.7 kB
packages/inline-definition/dist/umd/index.js 1.85 kB
packages/input-option/dist/esm/index.js 2.67 kB
packages/input-option/dist/umd/index.js 2.81 kB
packages/leafygreen-provider/dist/esm/index.js 1.87 kB
packages/leafygreen-provider/dist/umd/index.js 2.03 kB
packages/lib/dist/esm/index.js 2.86 kB
packages/lib/dist/umd/index.js 3.02 kB
packages/loading-indicator/dist/esm/index.js 3.39 kB
packages/loading-indicator/dist/umd/index.js 3.55 kB
packages/logo/dist/esm/index.js 39 kB
packages/logo/dist/umd/index.js 39.3 kB
packages/marketing-modal/dist/esm/index.js 3.54 kB
packages/marketing-modal/dist/umd/index.js 3.73 kB
packages/menu/dist/esm/index.js 8.14 kB
packages/menu/dist/umd/index.js 8.4 kB
packages/modal/dist/esm/index.js 3.3 kB
packages/modal/dist/umd/index.js 3.44 kB
packages/number-input/dist/esm/index.js 5.68 kB
packages/number-input/dist/umd/index.js 5.86 kB
packages/ordered-list/dist/esm/index.js 1.33 kB
packages/ordered-list/dist/umd/index.js 1.5 kB
packages/pagination/dist/esm/index.js 1.68 kB
packages/pagination/dist/umd/index.js 1.9 kB
packages/palette/dist/esm/index.js 411 B
packages/palette/dist/umd/index.js 561 B
packages/password-input/dist/esm/index.js 4.54 kB
packages/password-input/dist/umd/index.js 4.75 kB
packages/pipeline/dist/esm/index.js 7.85 kB
packages/pipeline/dist/umd/index.js 8.11 kB
packages/polymorphic/dist/esm/index.js 1.27 kB
packages/polymorphic/dist/umd/index.js 1.4 kB
packages/popover/dist/esm/index.js 4.98 kB
packages/popover/dist/umd/index.js 5.14 kB
packages/portal/dist/esm/index.js 919 B
packages/portal/dist/umd/index.js 1.08 kB
packages/preview-card/dist/esm/index.js 2.35 kB
packages/preview-card/dist/esm/testing/index.js 2.67 kB
packages/preview-card/dist/umd/index.js 2.49 kB
packages/preview-card/dist/umd/testing/index.js 2.81 kB
packages/progress-bar/dist/esm/index.js 5.54 kB
packages/progress-bar/dist/esm/testing/index.js 507 B
packages/progress-bar/dist/umd/index.js 5.77 kB
packages/progress-bar/dist/umd/testing/index.js 630 B
packages/radio-box-group/dist/esm/index.js 2.87 kB
packages/radio-box-group/dist/umd/index.js 2.99 kB
packages/radio-group/dist/esm/index.js 3.25 kB
packages/radio-group/dist/umd/index.js 3.39 kB
packages/resizable/dist/esm/index.js 2.48 kB
packages/resizable/dist/umd/index.js 2.57 kB
packages/ripple/dist/esm/index.js 954 B
packages/ripple/dist/umd/index.js 1.05 kB
packages/search-input/dist/esm/index.js 5.9 kB
packages/search-input/dist/umd/index.js 6.12 kB
packages/section-nav/dist/esm/index.js 2.62 kB
packages/section-nav/dist/esm/testing/index.js 2.85 kB
packages/section-nav/dist/umd/index.js 2.76 kB
packages/section-nav/dist/umd/testing/index.js 3.02 kB
packages/segmented-control/dist/esm/index.js 5.44 kB
packages/segmented-control/dist/umd/index.js 5.58 kB
packages/select/dist/esm/index.js 8.69 kB
packages/select/dist/esm/testing/index.js 698 B
packages/select/dist/umd/index.js 8.89 kB
packages/select/dist/umd/testing/index.js 831 B
packages/side-nav/dist/esm/index.js 7.47 kB
packages/side-nav/dist/umd/index.js 7.72 kB
packages/skeleton-loader/dist/esm/index.js 3.19 kB
packages/skeleton-loader/dist/umd/index.js 3.39 kB
packages/split-button/dist/esm/index.js 3.56 kB
packages/split-button/dist/umd/index.js 3.72 kB
packages/stepper/dist/esm/index.js 3.47 kB
packages/stepper/dist/umd/index.js 3.68 kB
packages/table/dist/esm/index.js 8.14 kB
packages/table/dist/esm/testing/index.js 694 B
packages/table/dist/umd/index.js 8.4 kB
packages/table/dist/umd/testing/index.js 809 B
packages/tabs/dist/esm/index.js 5.14 kB
packages/tabs/dist/esm/testing/index.js 597 B
packages/tabs/dist/umd/index.js 5.28 kB
packages/tabs/dist/umd/testing/index.js 713 B
packages/testing-lib/dist/esm/index.js 3.31 kB
packages/testing-lib/dist/umd/index.js 3.53 kB
packages/testing-lib/dist/umd/renderHookServer.js 590 B
packages/testing-lib/dist/umd/renderHookServerV17.js 386 B
packages/text-area/dist/esm/index.js 2.19 kB
packages/text-area/dist/esm/testing/index.js 466 B
packages/text-area/dist/umd/index.js 2.35 kB
packages/text-area/dist/umd/testing/index.js 597 B
packages/text-input/dist/esm/index.js 2.5 kB
packages/text-input/dist/esm/testing/index.js 463 B
packages/text-input/dist/umd/index.js 2.67 kB
packages/text-input/dist/umd/testing/index.js 593 B
packages/toast/dist/esm/index.js 8.22 kB
packages/toast/dist/umd/index.js 8.51 kB
packages/toggle/dist/esm/index.js 3 kB
packages/toggle/dist/esm/testing/index.js 276 B
packages/toggle/dist/umd/index.js 3.18 kB
packages/toggle/dist/umd/testing/index.js 403 B
packages/tokens/dist/esm/index.js 2.83 kB
packages/tokens/dist/umd/index.js 2.93 kB
packages/toolbar/dist/esm/index.js 3.24 kB
packages/toolbar/dist/esm/testing/index.js 527 B
packages/toolbar/dist/umd/index.js 3.36 kB
packages/toolbar/dist/umd/testing/index.js 638 B
packages/tooltip/dist/esm/index.js 4.35 kB
packages/tooltip/dist/umd/index.js 4.63 kB
packages/typography/dist/esm/index.js 5.81 kB
packages/typography/dist/umd/index.js 5.95 kB
tools/build/dist/esm/index.js 6.2 kB
tools/build/dist/umd/cli.js 6.55 kB
tools/build/dist/umd/index.js 6.49 kB
tools/cli/dist/esm/index.js 2.33 kB
tools/cli/dist/umd/index.js 2.49 kB
tools/codemods/dist/_virtual/_rollupPluginBabelHelpers.js 936 B
tools/codemods/dist/codemods/modal-v20/transform.js 787 B
tools/codemods/dist/codemods/popover-v12/transform.js 1.1 kB
tools/codemods/dist/codemods/tabs-v17/transform.js 368 B
tools/codemods/dist/constants.js 148 B
tools/codemods/dist/esm/_virtual/_rollupPluginBabelHelpers.mjs 928 B
tools/codemods/dist/esm/codemods/modal-v20/transform.mjs 788 B
tools/codemods/dist/esm/codemods/popover-v12/transform.mjs 1.09 kB
tools/codemods/dist/esm/codemods/tabs-v17/transform.mjs 366 B
tools/codemods/dist/esm/constants.mjs 148 B
tools/codemods/dist/esm/index.js 3.4 kB
tools/codemods/dist/esm/types.mjs 765 B
tools/codemods/dist/esm/utils/imports/getImportSpecifiersForDeclaration.mjs 280 B
tools/codemods/dist/esm/utils/jsx/getJSXAttributes.mjs 160 B
tools/codemods/dist/esm/utils/jsx/insertJSXComment/insertJSXComment.mjs 369 B
tools/codemods/dist/esm/utils/transformations/addJSXAttributes/addJSXAttributes.mjs 412 B
tools/codemods/dist/esm/utils/transformations/consolidateJSXAttributes/consolidateJSXAttributes.mjs 665 B
tools/codemods/dist/esm/utils/transformations/removeJSXAttributes/removeJSXAttributes.mjs 360 B
tools/codemods/dist/esm/utils/transformations/replaceJSXAttributes/replaceJSXAttributes.mjs 278 B
tools/codemods/dist/types.js 765 B
tools/codemods/dist/umd/index.js 3.64 kB
tools/codemods/dist/utils/imports/getImportSpecifiersForDeclaration.js 283 B
tools/codemods/dist/utils/jsx/getJSXAttributes.js 164 B
tools/codemods/dist/utils/jsx/insertJSXComment/insertJSXComment.js 371 B
tools/codemods/dist/utils/transformations/addJSXAttributes/addJSXAttributes.js 410 B
tools/codemods/dist/utils/transformations/consolidateJSXAttributes/consolidateJSXAttributes.js 664 B
tools/codemods/dist/utils/transformations/removeJSXAttributes/removeJSXAttributes.js 364 B
tools/codemods/dist/utils/transformations/replaceJSXAttributes/replaceJSXAttributes.js 282 B
tools/create/dist/esm/index.js 4.01 kB
tools/create/dist/umd/index.js 4.18 kB
tools/install/dist/esm/index.js 2.18 kB
tools/install/dist/umd/index.js 2.33 kB
tools/link/dist/esm/index.js 3.79 kB
tools/link/dist/umd/index.js 3.9 kB
tools/lint/dist/esm/index.js 4.11 kB
tools/lint/dist/umd/index.js 4.25 kB
tools/meta/dist/esm/index.js 1.71 kB
tools/meta/dist/umd/index.js 1.85 kB
tools/prompt-kit/dist/esm/index.js 2.27 kB
tools/prompt-kit/dist/umd/index.js 2.41 kB
tools/slackbot/dist/esm/index.js 4.8 kB
tools/slackbot/dist/umd/index.js 4.96 kB
tools/storybook-addon/dist/esm/index.js 2.22 kB
tools/storybook-addon/dist/esm/main.js 2.22 kB
tools/storybook-addon/dist/esm/manager.js 554 B
tools/storybook-addon/dist/esm/preview.js 1.69 kB
tools/storybook-addon/dist/umd/index.js 2.33 kB
tools/storybook-addon/dist/umd/main.js 2.33 kB
tools/storybook-addon/dist/umd/manager.js 685 B
tools/storybook-addon/dist/umd/preview.js 1.8 kB
tools/storybook-decorators/dist/esm/index.js 3.28 kB
tools/storybook-decorators/dist/umd/index.js 3.56 kB
tools/storybook-utils/dist/esm/index.js 2.77 kB
tools/storybook-utils/dist/umd/index.js 2.9 kB
tools/test-harnesses/dist/esm/index.js 1.78 kB
tools/test-harnesses/dist/umd/index.js 1.91 kB
tools/test/dist/esm/index.js 1.68 kB
tools/test/dist/umd/index.js 1.81 kB
tools/update/dist/esm/index.js 725 B
tools/update/dist/umd/index.js 885 B
tools/validate/dist/esm/index.js 5.75 kB
tools/validate/dist/umd/index.js 5.98 kB

compressed-size-action

}

// Determine file extension based on language
const extension =
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can someone pass in a language that isn't included in LANGUAGE_EXTENSION_MAP?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

No, this is a great point. I'll also update the LANGUAGE_EXTENSION_MAP to enforce this.

// Downloads as 'code.py' (default filename with Python extension)
editorRef.current.downloadContent(); // No filename provided

// Downloads as 'document.txt' (fallback for unsupported/no language)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is this missing a code snippet?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Good catch. I removed this completely since I'm no longer defaulting to .txt at the moment

@@ -115,6 +116,13 @@ export function Panel({
onRedoClick?.();
};

const handleDownloadClick = () => {
if (downloadContent) {
downloadContent();
Copy link
Collaborator

Choose a reason for hiding this comment

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

If you're downloading from the panel, will the file name always be code?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Currently yes, but I think this is a good point. I'm going to add an optional prop on Panel that allows the setting of it.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I also decided I'm going to update handleDownloadContent in CodeEditor, to only add an extension if an acceptable extension is already added to the filename provided. This feels intuitive to me. So if I have js selected and pass in a filename of index.js it doesn't download as index.js.js but if my filename is just index it will download as index.js intelligently.

I also think I'm going to get rid of the default .txt because its probably not a fair assumption. When no language is selected, just no extension will be added.

Curious to hear your thoughts on this.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I'm backtracking on this lol. I'm now thinking that a filename provided should override the extension. It just gives the consumer more control over the download. Still curious what you think here though

Copy link
Collaborator

Choose a reason for hiding this comment

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

if no extension is specified, what will the format be?

Copy link
Collaborator

Choose a reason for hiding this comment

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

I was just testing out preview on mac, https://jmp.sh/EWQKXqlV. I'm not sure if these are relatable but if you don't add an extention, it adds one by default, and if you type in an extension, it treats it as part of the name.

@tsck tsck force-pushed the LG-5464/ce-cleanup branch from 08f40b0 to d1d676f Compare August 27, 2025 14:17
@tsck tsck force-pushed the LG-5455/ce-download branch from 520ebd1 to e68010b Compare August 27, 2025 14:22
@tsck
Copy link
Collaborator Author

tsck commented Aug 27, 2025

@shaneeza also had to rebase this one 🤦 sorry! This PR chain is killing me lol. The first commit since your last review was f79478b

@tsck tsck requested a review from shaneeza August 27, 2025 16:48
@tsck tsck force-pushed the LG-5464/ce-cleanup branch 2 times, most recently from 0568216 to 878344d Compare August 28, 2025 17:09
@tsck
Copy link
Collaborator Author

tsck commented Aug 28, 2025

@shaneeza The git history got all messed up on this one again when I merged the branch 2 ahead of this 😭. I'm going to wait to fix this until I can get the one in front of it merged. Sorry for the craziness.

Base automatically changed from LG-5464/ce-cleanup to integration/code-editor August 28, 2025 17:36
tsck added 7 commits August 28, 2025 15:36
- Introduced a new method to download the current editor content as a file, with the extension determined by the selected programming language.
- Updated the CodeEditorHandle and CodeEditorContext interfaces to include the new downloadContent method.
- Added a mapping of language names to their corresponding file extensions to facilitate the download process.
- Added a new handleDownloadClick method to the Panel component to trigger the downloadContent function from the CodeEditorContext.
- Updated the onClick handler for the Download menu item to use the new method, enhancing the user experience by allowing content downloads directly from the panel.
…and Panel

- Implemented comprehensive tests for the download feature in the CodeEditor, verifying correct filename generation based on language and handling of empty content.
- Enhanced Panel tests to ensure the downloadContent function is called when the download menu item is clicked, including handling cases where the function is not available.
- Improved test coverage for the download functionality, ensuring robustness and reliability in the editor's user experience.
… content

- Introduced a `downloadContent` method to the CodeEditor ref for programmatic file downloads, supporting various file extensions based on the editor's language.
- Integrated a download button in the Panel's secondary menu for direct content downloads, with proper filename handling.
- Enhanced context support for child components via `CodeEditorContext`, allowing custom UI implementations for downloads.
- Implemented content validation to prevent downloads of empty or whitespace-only content, providing user-friendly warnings.
- Updated TypeScript definitions and added extensive tests to ensure robust functionality and user experience.
…ctionality details

- Enhanced the description of the Panel component to include the new download button and its integration with the CodeEditor's functionality.
- Updated the properties table to reflect the addition of the download feature, including the `onDownloadClick` callback and its behavior.
- Added a new section detailing the `downloadContent` method, including examples and supported file extensions for improved documentation clarity.
- Updated Panel tests to utilize the new renderPanel utility, improving clarity and reducing redundancy.
- Simplified test cases for the downloadContent function, ensuring proper handling when the function is undefined.
- Enhanced test maintainability by integrating default context functions for download actions.
- Extracted the LANGUAGE_EXTENSION_MAP from CodeEditor.tsx to a new constants.ts file for better organization and maintainability.
- Simplified the extension determination logic in CodeEditor.tsx by directly referencing the imported LANGUAGE_EXTENSION_MAP.
tsck added 2 commits August 28, 2025 15:36
…filenames

- Introduced the `downloadFileName` property to the Panel component, allowing users to specify a custom filename for downloaded editor content.
- Updated the download handling logic to utilize the provided filename, enhancing the flexibility of the download functionality.
- Added tests to ensure correct behavior when the `downloadFileName` is specified or omitted.
@tsck tsck force-pushed the LG-5455/ce-download branch from 31e1961 to 249a6d5 Compare August 28, 2025 19:39
@tsck
Copy link
Collaborator Author

tsck commented Aug 28, 2025

@shaneeza Finally, we should be back again! 😅 Commit after your last review now I think is 974741c. Sorry one more time lol

// Downloads as 'code' (uses filename exactly as provided, even though it's "code")
editorRef.current.downloadContent('code');

// Downloads as 'code.py' (default behavior - no filename parameter provided)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is the extension in the comment correct?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants