From 5f6b738ec843ca04504df04a57a31faa6835d938 Mon Sep 17 00:00:00 2001 From: Aaron Nance Date: Tue, 4 Feb 2025 09:47:14 -0800 Subject: [PATCH] feat: Add skeleton loading component (#378) * 308: Add skeleton loading component * fix eslint * Add support for 'as' for components and 'color' - add changeset * Add readme content * Remove default aria-label --------- Co-authored-by: HenriqueLimas --- .changeset/lucky-shrimps-bathe.md | 5 + .../__tests__/index.stories.tsx | 1 + src/ebay-skeleton/README.md | 108 +++++++ .../__snapshots__/render.spec.tsx.snap | 272 ++++++++++++++++++ src/ebay-skeleton/__tests__/index.stories.tsx | 121 ++++++++ src/ebay-skeleton/__tests__/render.spec.tsx | 45 +++ src/ebay-skeleton/ebay-skeleton-avatar.tsx | 15 + src/ebay-skeleton/ebay-skeleton-button.tsx | 22 ++ src/ebay-skeleton/ebay-skeleton-image.tsx | 17 ++ src/ebay-skeleton/ebay-skeleton-text.tsx | 26 ++ src/ebay-skeleton/ebay-skeleton-textbox.tsx | 18 ++ src/ebay-skeleton/ebay-skeleton.tsx | 23 ++ src/ebay-skeleton/index.ts | 6 + src/ebay-skeleton/types.ts | 5 + 14 files changed, 684 insertions(+) create mode 100644 .changeset/lucky-shrimps-bathe.md create mode 100644 src/ebay-skeleton/README.md create mode 100644 src/ebay-skeleton/__tests__/__snapshots__/render.spec.tsx.snap create mode 100644 src/ebay-skeleton/__tests__/index.stories.tsx create mode 100644 src/ebay-skeleton/__tests__/render.spec.tsx create mode 100644 src/ebay-skeleton/ebay-skeleton-avatar.tsx create mode 100644 src/ebay-skeleton/ebay-skeleton-button.tsx create mode 100644 src/ebay-skeleton/ebay-skeleton-image.tsx create mode 100644 src/ebay-skeleton/ebay-skeleton-text.tsx create mode 100644 src/ebay-skeleton/ebay-skeleton-textbox.tsx create mode 100644 src/ebay-skeleton/ebay-skeleton.tsx create mode 100644 src/ebay-skeleton/index.ts create mode 100644 src/ebay-skeleton/types.ts diff --git a/.changeset/lucky-shrimps-bathe.md b/.changeset/lucky-shrimps-bathe.md new file mode 100644 index 00000000..8354e513 --- /dev/null +++ b/.changeset/lucky-shrimps-bathe.md @@ -0,0 +1,5 @@ +--- +"@ebay/ui-core-react": minor +--- + +feat(EbaySkeleton): add new skeleton component diff --git a/src/ebay-accordion/__tests__/index.stories.tsx b/src/ebay-accordion/__tests__/index.stories.tsx index 129b2b36..11adbe32 100644 --- a/src/ebay-accordion/__tests__/index.stories.tsx +++ b/src/ebay-accordion/__tests__/index.stories.tsx @@ -16,6 +16,7 @@ const meta: Meta = { }, }, options: ["regular", "large"], + control: { type: 'select'} }, autoCollapse: { type: "boolean", diff --git a/src/ebay-skeleton/README.md b/src/ebay-skeleton/README.md new file mode 100644 index 00000000..71aae93c --- /dev/null +++ b/src/ebay-skeleton/README.md @@ -0,0 +1,108 @@ +# EbaySkeleton + +## Demo + +[Storybook](https://opensource.ebay.com/ebayui-core-react/main/?path=/docs/building-blocks-ebay-skeleton--docs) + +## Import JS + +```jsx harmony +import { + EbaySkeleton, + EbaySkeletonAvatar, + EbaySkeletonButton, + EbaySkeletonImage, + EbaySkeletonText, + EbaySkeletonTextbox, +} from "@ebay/ui-core-react/ebay-skeleton"; +``` + +## Import following styles from SKIN + +```js +import "@ebay/skin/skeleton"; +``` + +## Import styles using SCSS/CSS + +```js +import "@ebay/skin/skeleton.css"; +``` + +## Usage + +```jsx + + + + +``` + +## Attributes + +### EbaySkeleton + +| Name | Type | Required | Description | +| ------- | ------ | -------- | -------------------------------------------------- | +| `color` | string | No | Color of the Skeleton, `purple`, `green` or `blue` | + +### EbaySkeletonAvatar + +| Name | Type | Required | Description | +| ---- | ------ | -------- | ------------------------------------------------------ | +| `as` | string | No | Attribute to define the element to use `div` or `span` | + +### EbaySkeletonButton + +| Name | Type | Required | Description | +| ------ | ------ | -------- | ------------------------------------------------------ | +| `as` | string | No | Attribute to define the element to use `div` or `span` | +| `size` | string | No | size of the button can be `small` or `large` | + +### EbaySkeletonImage + +| Name | Type | Required | Description | +| ---- | ------ | -------- | ------------------------------------------------------ | +| `as` | string | No | Attribute to define the element to use `div` or `span` | + +### EbaySkeletonText + +| Name | Type | Required | Description | +| ----------- | ------- | -------- | ------------------------------------------------------ | +| `as` | string | No | Attribute to define the element to use `div` or `span` | +| `multiline` | boolean | No | Attribute to define the text as multiline | +| `size` | string | No | size of the text can be `small` or `large` | + +### EbaySkeletonTextbox + +| Name | Type | Required | Description | +| ---- | ------ | -------- | ------------------------------------------------------ | +| `as` | string | No | Attribute to define the element to use `div` or `span` | + +## Examples + +### Composite + +```jsx + +
+ + +
+ +
+``` + +### Tile + +```jsx + + + + +``` diff --git a/src/ebay-skeleton/__tests__/__snapshots__/render.spec.tsx.snap b/src/ebay-skeleton/__tests__/__snapshots__/render.spec.tsx.snap new file mode 100644 index 00000000..87fcc52f --- /dev/null +++ b/src/ebay-skeleton/__tests__/__snapshots__/render.spec.tsx.snap @@ -0,0 +1,272 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Render component should render the EbaySkeleton color blue component 1`] = ` +