Skip to content

Conversation

@Sveb
Copy link

@Sveb Sveb commented Jul 8, 2025

Component Created: BentoPod.vue

Stories: ~/stories/BentoPod.stories.js

** Screenshots**
Screenshot 2025-07-15 at 16 31 20
Screenshot 2025-07-15 at 16 31 33

Checklist:

  • I checked that it is working locally in the dev server
  • I checked that it is working locally in the storybook
  • I checked that it is working locally in the
    library-website-nuxt dev server
  • I added a screenshot of it working
  • UX has reviewed and approved this
  • I assigned this PR to someone on the dev team to review
  • I used a conventional commit message
  • I assigned myself to this PR

@Sveb Sveb changed the title BentoPod UCLA - BentoPod Jul 8, 2025
@Sveb Sveb requested a review from Copilot July 15, 2025 14:32
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR introduces the new BentoPod Vue component along with Storybook stories showcasing its configurable states and content.

  • Added a fully styled, collapsible BentoPod.vue component with expand/collapse logic and customizable labels.
  • Created BentoPod.stories.js to demonstrate the component with various item counts and real content.

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
packages/vue-component-library/src/lib-components/BentoPod.vue New Vue component providing a collapsible list (“Bento Pod”) layout
packages/vue-component-library/src/stories/BentoPod.stories.js Storybook stories illustrating default, edge, and real-data cases
Comments suppressed due to low confidence (2)

packages/vue-component-library/src/lib-components/BentoPod.vue:15

  • [nitpick] The prop names 'labelOpen' and 'labelClose' are ambiguous; consider renaming them to 'collapseLabel' and 'expandLabel' (or similar) to more clearly convey when each label is shown.
    labelOpen?: string

packages/vue-component-library/src/lib-components/BentoPod.vue:1

  • There are no unit tests covering the expand/collapse behavior or edge cases (e.g., fewer than three items). Consider adding Jest/Vitest tests to validate dynamic height measurement and state toggling.
<script setup lang="ts">

description: string
buttonLabel?: string
buttonLink?: string
items?: Array<{
Copy link

Copilot AI Jul 15, 2025

Choose a reason for hiding this comment

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

Items in props require a 'to' property, but story args do not include it, leading to undefined links. Consider making 'to' optional or updating the stories to include a valid to value for each item.

Copilot uses AI. Check for mistakes.

<template>
<div :class="classes">
<h4 class="title" v-html="title" v-if="title" />
Copy link

Copilot AI Jul 15, 2025

Choose a reason for hiding this comment

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

Rendering title and description with v-html can introduce XSS vulnerabilities if the content isn't sanitized. Consider using v-text or sanitizing input before binding.

Copilot uses AI. Check for mistakes.
// Lifecycle Hooks
onMounted(() => {
measureHeights()
window.addEventListener("resize", measureHeights)
Copy link

Copilot AI Jul 15, 2025

Choose a reason for hiding this comment

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

[nitpick] Listening to resize without throttling can trigger expensive layout recalculations rapidly. Consider debouncing measureHeights to reduce performance impact on window resize.

Copilot uses AI. Check for mistakes.
<transition name="fade-label" mode="out-in">
<span :key="dynamicLabel" class="label" v-html="dynamicLabel" />
</transition>
<SvgArrowDown class="caret-icon" />
Copy link

Copilot AI Jul 15, 2025

Choose a reason for hiding this comment

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

SVG icons inside interactive elements should include aria-hidden="true" or appropriate role/title attributes to ensure they are announced correctly (or hidden) for screen readers.

Suggested change
<SvgArrowDown class="caret-icon" />
<SvgArrowDown class="caret-icon" aria-hidden="true" />

Copilot uses AI. Check for mistakes.
Sveb and others added 6 commits November 17, 2025 09:50
* adds components list

* Update COMPONENTS.md

* Update COMPONENTS.md

* Update COMPONENTS.md

* Update COMPONENTS.md

* adds notes

* Update COMPONENTS.md

* claimed component

* Update COMPONENTS.md

* claim a component

* claim a component

* Update COMPONENTS.md

* Update COMPONENTS.md

* Update COMPONENTS.md

* take a component

* take a component

* take a component

* Update COMPONENTS.md

* Update COMPONENTS.md

* Adjust the component name - already exists

* take a component

* take a component

* Update COMPONENTS.md

- marks footer as already existing

* Update COMPONENTS.md

* Update COMPONENTS.md

* Update COMPONENTS.md

* Update COMPONENTS.md - marking BentoPod

* add component

* add component

* Update COMPONENTS.md

* Update COMPONENTS.md

* take a component

* take a component

* fix component description

* Update COMPONENTS.md

Component exists

* Update COMPONENTS.md

* change component's name

* Update COMPONENTS.md

Clean up the list somewhat - added a new component for the bento-box-result, as bento-bod is allready.a different component.
- removed a footer component as it doesn't really exist.
- added some checkboxes to taken/completed compoents

* take a component

* take a component

* take a component

* remove AssetFeaturedImage definition

* take a component

* take a components

* take a components

* take a component

* take a component

* add a new line

* add detailed component description

* add detailed component description

* take a component

* update component description

* Adds a button component

* Update COMPONENTS.md

* Update COMPONENTS.md

* Update COMPONENTS.md

* Clean up components.md

* Taking the block-collection component

* Taking the grid-collections component as well.

* Update COMPONENTS.md

* Clean up component list

* add spacing

* add spacing

* update component name

* Update Button definition

* Update COMPONENTS.md

* Update COMPONENTS.md

* Remove duplicates

* remove duplicates

* remove duplicates

* Remove already existing components

* take a component

* add a component

* Take a component

* adjust prop for block anchor nav

* take a component

* Update COMPONENTS.md

* Taking the DropdownSingleSelect

* Take the ButtonDropdownSearch component

* adding the correct packageMenager version for netlify to see.

pnpm
Netlify supports pnpm for Node.js 16.9.0 and later.

If your site’s base directory includes a pnpm-lock.yaml file, we will run pnpm install to install the dependencies listed in your package.json.

To specify a pnpm version, you can edit your package.json file:

"packageManager": "pnpm@6.3.2"

This tells Corepack to use and download your preferred pnpm version instead of the default version that Netlify sets.

* Update COMPONENTS.md

* Marking a component as taken

* Remove packageManager field from package.json

* Update component statuses and remove completed items

Updated the status of various components to reflect their existence and removed existing components from the list.

* Update COMPONENTS.md

* Taking the FiltersDropdown

* Update COMPONENTS.md

* Add note regarding existing header component tweaks

Added a note about existing similar functionality that requires tweaks.

* Update RefineSearchPanel ownership in COMPONENTS.md

* Update DetailMedia component owner to Svebor

* Update component list

* Clarify CTAHexButton entry in COMPONENTS.md

* Update COMPONENTS.md to remove and modify components

Removed BlockMediaViewer and updated BlockRichText entry. Adjusted completion status for DetailMedia.

* Update component status and ownership in COMPONENTS.md

* Update component ownership in COMPONENTS.md

* Styles the component to fit the designs better, adds optional extra buttons for better design fit.

* fix: lint error

* prepare for PR

* fix: the CI errors

Error: HttpError: Resource not accessible by integration
Error: Resource not accessible by integration

* fix: removes the empty theme privders

---------

Co-authored-by: dchiamp <derek.chiampas@gmail.com>
Co-authored-by: Austin Blanchard <austinpdx@gmail.com>
Co-authored-by: Luka Vuk <61590027+lux-v@users.noreply.github.com>
Co-authored-by: Jess <jessica.divers@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants