Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(chat-button): experimental wc #11510

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
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,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/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 */
cds-chat-button:not(:defined) {
display: none;
}
</style>
<script type="module" src="https://1.www.s81c.com/common/carbon/web-components/tag/v2/latest/chat-button.min.js"></script>
</head>
<body class="cds-theme-zone-white">
<cds-chat-button>
Chat button
</cds-chat-button>
</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-chat-button:not(:defined) {
display: none;
}
</style>
<script type="module" src="src/index.js"></script>
</head>
<body>
<cds-chat-button>
Chat button
</cds-chat-button>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "carbon-web-components-chat-button-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/chat-button/index.js';
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/**
* @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.
*/

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

@use '@carbon/styles/scss/components/button/tokens' as button-tokens;
@include theme.add-component-tokens(button-tokens.$button-tokens);


: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.20.1",
"@carbon/styles": "1.49.0",
"@carbon/styles": "1.50.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
Expand Up @@ -15,6 +15,7 @@ $css--plex: true !default;
@use '@carbon/styles/scss/components/popover/index';
@use '@carbon/styles/scss/components/code-snippet/code-snippet' as *;
@use '@carbon/styles/scss/components/tooltip';
@use '@carbon/styles/scss/components/chat-button' as *;
@use '@carbon/styles/scss/layout' as *;

@include code-snippet;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/**
* @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 { classMap } from 'lit/directives/class-map.js';
import { LitElement, html } from 'lit';
import { property } from 'lit/decorators.js';
import { prefix } from '../../globals/settings';
import { CHAT_BUTTON_SIZE } from './defs';
import styles from './chat-button.scss';
import { carbonElement as customElement } from '../../globals/decorators/carbon-element';

export { CHAT_BUTTON_SIZE };
/**
* Chat button skeleton.
*
* @element cds-chat-button-skeleton
*/
@customElement(`${prefix}-chat-button-skeleton`)
class CDSChatButtonSkeleton extends LitElement {
/**
* Specify the size of the `ChatButtonSkeleton`, from the following list of sizes: 'sm', 'md', 'lg'
*/
@property({ reflect: true })
size = CHAT_BUTTON_SIZE.LARGE;

render() {
const skeletonClasses = classMap({
[`${prefix}--skeleton`]: true,
[`${prefix}--btn`]: true,
[`${prefix}--chat-btn`]: true,
[`${prefix}--layout--size-${this.size}`]: this.size,
});

return html` <div class="${skeletonClasses}"></div> `;
}

static styles = styles;
}

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

# Chat Button

> 💡 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/chat-button)
> 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/chat-button)

## Getting started

Here's a quick example to get you started.

### JS (via import)

```javascript
import '@carbon/web-components/es/components/chat-button/index.js';
```

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

```javascript
import '@carbon/web-components/es/components/chat-button/index.js';
import Add16 from '@carbon/web-components/es/icons/add/16';

function App() {
return html`<cds-chat-button>
Primary ${Add16({ slot: 'icon' })}
</cds-chat-button>`;
}
```

## `<cds-chat-button>` attributes and properties

<Props of="cds-chat-button" />
````
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//
// 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.
//
div[class*='test-button-'] {
margin-block-end: 4rem;

/* stylelint-disable */
& > * {
margin-inline-end: 2rem;
}
/* stylelint-enable */
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/**
* @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 './index';
import storyDocs from './chat-button-story.mdx';
import Add16 from '@carbon/icons/lib/add/16';
import styles from './chat-button-story.scss';

export const Default = () => {
return html`
<style>
${styles}
</style>
<div class="test-button">
<div class="test-button-sizes">
<h3>Sizes</h3>
<br />
<cds-chat-button size="sm">
Primary ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button size="md">
Primary ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button size="lg">
Primary ${Add16({ slot: 'icon' })}
</cds-chat-button>
</div>
<div class="test-button-kinds">
<h3>Kinds</h3>
<br />
<cds-chat-button kind="primary">
Primary ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button kind="secondary">
Secondary ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button kind="tertiary">
Tertiary ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button kind="ghost">
Ghost ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button kind="danger">
Danger ${Add16({ slot: 'icon' })}
</cds-chat-button>
</div>
<div class="test-button-quick-action">
<h3>Quick action</h3>
<br />
<cds-chat-button is-quick-action>
Quick action ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button is-quick-action is-selected>
Selected and Enabled ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button is-quick-action is-selected disabled>
Selected and disabled ${Add16({ slot: 'icon' })}
</cds-chat-button>
<cds-chat-button is-quick-action disabled>
Disabled ${Add16({ slot: 'icon' })}
</cds-chat-button>
</div>
<div class="test-button-skeleton">
<h3>Skeleton</h3>
<br />
<cds-chat-button-skeleton size="sm"></cds-chat-button-skeleton>
<cds-chat-button-skeleton size="md"></cds-chat-button-skeleton>
<cds-chat-button-skeleton size="lg"></cds-chat-button-skeleton>
</div>
</div>
`;
};

export default {
parameters: {
...storyDocs.parameters,
},
title: 'Experimental/Chat button',
decorators: [(story) => html` ${story()} `],
};
Loading
Loading