Skip to content

Commit

Permalink
feat(ai-skeleton): new cwc experminetal (carbon-design-system#11544)
Browse files Browse the repository at this point in the history
### Related Ticket(s)

Closes carbon-design-system#11505 

### Description

new AI skeleton for text, popover, and icon

### Changelog

**New**

- added `optionalClasses` property so I could use the regular skeleton classes and add the AI ones as well
- create new stories, readme, and examples
- skeleton-text with paragraph option wasn't working in main, so reworked the code to get it working again

**Changed**

- updated carbon to 1.51

**Removed**

- {{removed thing}}

<!-- React and Web Component deploy previews are enabled by default. -->
<!-- To enable additional available deploy previews, apply the following -->
<!-- labels for the corresponding package: -->
<!-- *** "test: e2e": Codesandbox examples and e2e integration tests -->
<!-- *** "package: services": Services -->
<!-- *** "package: utilities": Utilities -->
<!-- *** "RTL": React / Web Components (RTL) -->
<!-- *** "feature flag": React / Web Components (experimental) -->
  • Loading branch information
ariellalgilmore authored Feb 16, 2024
1 parent aaa9bd7 commit 876a087
Show file tree
Hide file tree
Showing 24 changed files with 546 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"presets": [
[
"@babel/preset-env",
{
"modules": false,
"targets": [
"last 1 version",
"Firefox ESR",
"not opera > 0",
"not op_mini > 0",
"not op_mob > 0",
"not android > 0",
"not edge > 0",
"not ie > 0",
"not ie_mob > 0"
]
}
]
],
"plugins": [["@babel/plugin-transform-runtime", { "version": "7.3.0" }]]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# See https://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
/node_modules

# testing
/coverage

# production
/build

# misc
.DS_Store
.cache
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"includePaths": [
"node_modules",
"../../node_modules"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!--
@license
Copyright IBM Corp. 2020
This source code is licensed under the Apache-2.0 license found in the
LICENSE file in the root directory of this source tree.
-->

<html>
<head>
<title>@carbon/ibmdotcom-web-components example</title>
<meta charset="UTF-8"/>
<link rel="stylesheet"
href="https://1.www.s81c.com/common/carbon-for-ibm-dotcom/tag/v1/latest/plex.css"/>
<link rel="stylesheet" href="https://1.www.s81c.com/common/carbon/web-components/tag/v2/latest/grid.css" />
<link rel="stylesheet" href="https://1.www.s81c.com/common/carbon/web-components/tag/v2/latest/themes.css" />
<style>
/* Suppress custom element until styles are loaded */
cdsai--skeleton-icon:not(:defined) {
display: none;
}
</style>
<script type="module" src="https://1.www.s81c.com/common/carbon/web-components/tag/v2/latest/ai-skeleton.min.js"></script>
</head>
<body class="cds-theme-zone-white">
<cds-ai-skeleton-placeholder></cds-ai-skeleton-placeholder>
<cds-ai-skeleton-icon></cds-ai-skeleton-icon>
<cds-ai-skeleton-text></cds-ai-skeleton-text>

</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<!--
@license
Copyright IBM Corp. 2020
This source code is licensed under the Apache-2.0 license found in the
LICENSE file in the root directory of this source tree.
-->

<html>
<head>
<title>carbon-web-components example</title>
<meta charset="UTF-8" />
<link rel="stylesheet"
href="https://1.www.s81c.com/common/carbon-for-ibm-dotcom/tag/v1/latest/plex.css"/>
<link rel="stylesheet" href="src/styles.scss" />
<style>
/* Suppress custom element until styles are loaded */
cds-ai-skeleton-icon:not(:defined) {
display: none;
}
</style>
<script type="module" src="src/index.js"></script>
</head>
<body>
<cds-ai-skeleton-placeholder></cds-ai-skeleton-placeholder>
<cds-ai-skeleton-icon></cds-ai-skeleton-icon>
<cds-ai-skeleton-text></cds-ai-skeleton-text>

</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "carbon-web-components-ai-skeleton-example",
"version": "0.1.0",
"private": true,
"description": "Sample project for getting started with the Web Components from Carbon.",
"license": "Apache-2",
"main": "index.html",
"scripts": {
"build": "parcel build *.html --no-minify --public-url ./",
"clean": "rimraf node_modules dist .cache",
"start": "parcel index.html --port=9000 --no-hmr"
},
"dependencies": {
"@carbon/styles": "^1.34.0",
"@carbon/web-components": "latest",
"sass": "^1.64.1"
},
"devDependencies": {
"@babel/core": "^7.0.0-0",
"parcel-bundler": "1.12.3",
"rimraf": "^3.0.2"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"template": "node"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* @license
*
* Copyright IBM Corp. 2020, 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

import '@carbon/web-components/es/components/ai-skeleton/index.js';
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* @license
*
* Copyright IBM Corp. 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

@use '@carbon/styles/scss/reset';
@use '@carbon/styles/scss/theme';
@use '@carbon/styles/scss/themes';

:root {
@include theme.theme(themes.$white);
background-color: var(--cds-background);
color: var(--cds-text-primary);
}
2 changes: 1 addition & 1 deletion packages/carbon-web-components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
"dependencies": {
"@babel/runtime": "^7.16.3",
"@carbon/ibm-products-styles": "^2.24.0",
"@carbon/styles": "1.50.0",
"@carbon/styles": "1.51.0",
"flatpickr": "4.6.1",
"lit": "^2.7.6",
"lodash-es": "^4.17.21"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/**
* @license
*
* Copyright IBM Corp. 2019, 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

import { html } from 'lit';
import './ai-skeleton-icon';
import storyDocs from './ai-skeleton-story.mdx';

export const Default = () =>
html`<cds-ai-skeleton-icon
custom-styles="margin: 50px"></cds-ai-skeleton-icon>
<cds-ai-skeleton-icon
custom-styles="margin: 50px; width: 24px; height: 24px"></cds-ai-skeleton-icon>`;

Default.parameters = {
percy: {
skip: true,
},
};

export default {
title: 'Experimental/AISkeleton/AISkeletonIcon',
parameters: {
...storyDocs.parameters,
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/**
* @license
*
* Copyright IBM Corp. 2019, 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

import { LitElement, html } from 'lit';
import { prefix } from '../../globals/settings';
import { property } from 'lit/decorators.js';
import styles from './ai-skeleton.scss';
import '../skeleton-icon/skeleton-icon';
import { carbonElement as customElement } from '../../globals/decorators/carbon-element';

/**
* AI skeleton icon.
*
* @element cds-ai-skeleton-icon
*/
@customElement(`${prefix}-ai-skeleton-icon`)
class CDSAISkeletonIcon extends LitElement {
/**
* Custom styles to apply to skeleton icon
*/
@property({ attribute: 'custom-styles' })
customStyles = '';

render() {
return html`<cds-skeleton-icon
class="${prefix}--skeleton__icon--ai"
style="${this.customStyles}"></cds-skeleton-icon>`;
}

static styles = styles;
}

export default CDSAISkeletonIcon;
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/**
* @license
*
* Copyright IBM Corp. 2019, 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

import { html } from 'lit';
import './ai-skeleton-placeholder';
import storyDocs from './ai-skeleton-story.mdx';

export const Default = () =>
html`<cds-ai-skeleton-placeholder
class="test"></cds-ai-skeleton-placeholder>`;

Default.parameters = {
percy: {
skip: true,
},
};

export default {
title: 'Experimental/AISkeleton/AISkeletonPlaceholder',
parameters: {
...storyDocs.parameters,
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/**
* @license
*
* Copyright IBM Corp. 2019, 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

import { LitElement, html } from 'lit';
import { prefix } from '../../globals/settings';
import styles from './ai-skeleton.scss';
import '../skeleton-placeholder/skeleton-placeholder';
import { carbonElement as customElement } from '../../globals/decorators/carbon-element';

/**
* AI skeleton placeholder.
*
* @element cds-ai-skeleton-placeholder
*/
@customElement(`${prefix}-ai-skeleton-placeholder`)
class CDSAISkeletonPlaceholder extends LitElement {
render() {
return html`<cds-skeleton-placeholder
optional-classes="${prefix}--skeleton__placeholder--ai"></cds-skeleton-placeholder>`;
}

static styles = styles;
}

export default CDSAISkeletonPlaceholder;
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { Props, Description } from '@storybook/addon-docs/blocks';
import { cdnJs, cdnCss } from '../../globals/internal/storybook-cdn';

# AI Skeleton placeholder

> 💡 Check our
> [CodeSandbox](https://codesandbox.io/s/github/carbon-design-system/carbon-for-ibm-dotcom/tree/main/packages/carbon-web-components/examples/codesandbox/basic/components/ai-skeleton)
> example implementation.
[![Edit carbon-web-components](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/carbon-design-system/carbon-for-ibm-dotcom/tree/main/packages/carbon-web-components/examples/codesandbox/basic/components/ai-skeleton)

## Getting started

Here's a quick example to get you started.

### JS (via import)

```javascript
import '@carbon/web-components/es/components/ai-skeleton/index.js';
```

<Description markdown={`${cdnJs({ components: ['ai-skeleton'] })}`} />
<Description markdown={`${cdnCss()}`} />

### HTML

```html
<cds-ai-skeleton-placeholder></cds-ai-skeleton-placeholder>
<cds-ai-skeleton-icon></cds-ai-skeleton-icon>
<cds-ai-skeleton-text></cds-ai-skeleton-text>

```

## `<cds-skeleton-placeholder>` attributes, properties and events

<Props of="cds-skeleton-placeholder" />

## `<cds-skeleton-icon>` attributes, properties and events

<Props of="cds-skeleton-icon" />

## `<cds-skeleton-text>` attributes, properties and events

<Props of="cds-skeleton-text" />
Loading

0 comments on commit 876a087

Please sign in to comment.