Repository navigation
Description
🙂 Looking for an issue? Welcome! This issue is open for contribution. If this is the first time you’re requesting an issue, please:
- Read Contributing guidelines carefully. Pay extra attention to Using generative AI. Pull requests and comments that don’t follow the guidelines won’t be answered.
- Confirm that you’ve read the guidelines in your comment.
Overview
ContentNodeIcon is implemented with several Vuetify components. Remove Vuetify dependencies by creating a new component StudioContentNodeIcon as a parallel to ContentNodeIcon with no Vuetify dependencies, a supporting utility getContentKindColor, and finally use StudioContentNodeIcon on channel details page.
Complexity: Medium
Context
Channel details modal
| Browser | |
|---|---|
![]() |
![]() |
The Change
(1) Create StudioContentNodeIcon and getContentKindColor
Icon
- Uses
KIconto render the icon - Uses
getContentKindIcon(shared/utils/icons.js) to determine the icon based on content node kind
Background color
- Create a new utility
getContentKindColorinshared/utils/colors.js- Based on content node kind, determines background color (see how kinds map to KDS colors in this shared/vuetify/theme.js)
- (will be useful for another future tasks too)
Do not modify ContentNodeIcon. Do not modify or use shared/vuetify/theme.js.
(2) Use StudioContentNodeIcon in channel details modal
Use StudioContentNodeIcon for icons in the Total resources section of the channel details modal. Ensure no regressions in the generated PDF (test whether if capture-as-image needs to be added to KIcon or not).
Do not refactor any other areas of the codebase.
How to Get There
- Login as
a@a.comwith passworda - Go to Channels > My Channels
- Click the info icon on the Published Channel card
- To generate PDF, click Download channel summary > Download PDF
Guidance
- Find detailed guidance with many code examples in KDS documentation
- Read the project for more useful references
Out of Scope
- Do not modify or use
shared/vuetify/theme.js - Do not modify
ContentNodeIcon - Do not refactor any other areas of the codebase
Expected UI/UX changes
- Minor visual differences naturally stemming from the use of KDS
Acceptance Criteria
These are general acceptance criteria for the project. For each sub-issue, consider which are relevant.
General
- The specification above is followed.
- Except for "Expected UI/UX changes," there are no functional or visual differences in user experience.
- There are no regressions in the printing preview
- There are no
::v-deepor/deep/selectors. - All user interactions are manually tested with no regressions.
- Pull request includes screenshots.
a11y and i18n
See the project's "Guidance" for useful references.
- Implementation meets a11y standards
- All components are LTR and RTL compliant (preview with
pnpm run devserversince:hotdoesn't render RTL properly) - All user-facing strings are translated properly
- The
notranslateclass been added to elements that shouldn't be translated by Google Chrome's automatic translation feature (e.g. user-generated text) - Mobile experience is reasonable
Unit tests
- If there is a unit test suite already, it is meaningfully updated (even if tests don't fail)
- If there is no unit test suite, a new one is created. Do not use obsolete
@vue/test-utilsapproach. Instead, use@testing-library/vue(Vue Testing Library).
References
Sub-issue of #5060



Activity
[-]Create StudioContentNodeIcon and use it channel details modal[/-][+][Remove Vuetify from Studio] Create StudioContentNodeIcon and use it channel details modal[/+]akolson commentedon Oct 23, 2026
@vtushar06 comment if you would like to take this on. Thanks for your patience!
vtushar06 commentedon Oct 23, 2026
yes @akolson I would love to work on this.
akolson commentedon Oct 23, 2026
Assigned. Happy coding!