diff --git a/.changeset/brown-rivers-work.md b/.changeset/brown-rivers-work.md new file mode 100644 index 0000000000..717f9a775a --- /dev/null +++ b/.changeset/brown-rivers-work.md @@ -0,0 +1,6 @@ +--- +"@justeattakeaway/pie-chip": minor +"pie-docs": minor +--- + +[Added] - the code page for the chip component diff --git a/.changeset/gorgeous-olives-admire.md b/.changeset/gorgeous-olives-admire.md new file mode 100644 index 0000000000..45bee91223 --- /dev/null +++ b/.changeset/gorgeous-olives-admire.md @@ -0,0 +1,5 @@ +--- +"pie-docs": minor +--- + +[Added] - the chip overview page diff --git a/.changeset/pink-spies-smash.md b/.changeset/pink-spies-smash.md new file mode 100644 index 0000000000..ac263a0d96 --- /dev/null +++ b/.changeset/pink-spies-smash.md @@ -0,0 +1,21 @@ +--- +"@justeattakeaway/pie-assistive-text": minor +"@justeattakeaway/pie-button": minor +"@justeattakeaway/pie-card": minor +"@justeattakeaway/pie-chip": minor +"@justeattakeaway/pie-cookie-banner": minor +"@justeattakeaway/pie-divider": minor +"@justeattakeaway/pie-form-label": minor +"@justeattakeaway/pie-icon-button": minor +"@justeattakeaway/pie-input": minor +"@justeattakeaway/pie-link": minor +"@justeattakeaway/pie-modal": minor +"@justeattakeaway/pie-notification": minor +"@justeattakeaway/pie-spinner": minor +"@justeattakeaway/pie-switch": minor +"@justeattakeaway/pie-tag": minor +"@justeattakeaway/pie-webc-core": minor +"@justeattakeaway/pie-icons-webc": minor +--- + +[Changed] - Update tsconfig target to es2021 diff --git a/.changeset/selfish-cooks-travel.md b/.changeset/selfish-cooks-travel.md new file mode 100644 index 0000000000..855e30b84b --- /dev/null +++ b/.changeset/selfish-cooks-travel.md @@ -0,0 +1,5 @@ +--- +"@justeattakeaway/pie-components-config": minor +--- + +[Changed] - Updated TSConfig file with es2021 target diff --git a/apps/pie-docs/src/assets/img/components/chip/anatomy.svg b/apps/pie-docs/src/assets/img/components/chip/anatomy.svg new file mode 100644 index 0000000000..de0d2ccfe0 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/anatomy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/example-ltr-menu.svg b/apps/pie-docs/src/assets/img/components/chip/example-ltr-menu.svg new file mode 100644 index 0000000000..4c20b48274 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/example-ltr-menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/example-ltr-offer.svg b/apps/pie-docs/src/assets/img/components/chip/example-ltr-offer.svg new file mode 100644 index 0000000000..1f83463c42 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/example-ltr-offer.svg @@ -0,0 +1,43 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/example-rtl-menu.svg b/apps/pie-docs/src/assets/img/components/chip/example-rtl-menu.svg new file mode 100644 index 0000000000..6819615ae2 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/example-rtl-menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/example-rtl-offer.svg b/apps/pie-docs/src/assets/img/components/chip/example-rtl-offer.svg new file mode 100644 index 0000000000..b97e453519 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/example-rtl-offer.svg @@ -0,0 +1,43 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/interactive-state-active.svg b/apps/pie-docs/src/assets/img/components/chip/interactive-state-active.svg new file mode 100644 index 0000000000..87965d973c --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/interactive-state-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/interactive-state-default.svg b/apps/pie-docs/src/assets/img/components/chip/interactive-state-default.svg new file mode 100644 index 0000000000..7d94928725 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/interactive-state-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/interactive-state-disabled.svg b/apps/pie-docs/src/assets/img/components/chip/interactive-state-disabled.svg new file mode 100644 index 0000000000..6c0a6dc3a3 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/interactive-state-disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/interactive-state-focus.svg b/apps/pie-docs/src/assets/img/components/chip/interactive-state-focus.svg new file mode 100644 index 0000000000..deddc738f9 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/interactive-state-focus.svg @@ -0,0 +1,64 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/interactive-state-hover.svg b/apps/pie-docs/src/assets/img/components/chip/interactive-state-hover.svg new file mode 100644 index 0000000000..07a45ea609 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/interactive-state-hover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/interactive-state-loading.svg b/apps/pie-docs/src/assets/img/components/chip/interactive-state-loading.svg new file mode 100644 index 0000000000..2f10259b80 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/interactive-state-loading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/layout-double-row.svg b/apps/pie-docs/src/assets/img/components/chip/layout-double-row.svg new file mode 100644 index 0000000000..581585ea2a --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/layout-double-row.svg @@ -0,0 +1,76 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/layout-single-row.svg b/apps/pie-docs/src/assets/img/components/chip/layout-single-row.svg new file mode 100644 index 0000000000..9b0886c7a4 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/layout-single-row.svg @@ -0,0 +1,40 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/modifier-close-icon.svg b/apps/pie-docs/src/assets/img/components/chip/modifier-close-icon.svg new file mode 100644 index 0000000000..baeab319c5 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/modifier-close-icon.svg @@ -0,0 +1,22 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/modifier-icon.svg b/apps/pie-docs/src/assets/img/components/chip/modifier-icon.svg new file mode 100644 index 0000000000..65103d0b6a --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/modifier-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/modifier-tick-icon.svg b/apps/pie-docs/src/assets/img/components/chip/modifier-tick-icon.svg new file mode 100644 index 0000000000..7ecec2d888 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/modifier-tick-icon.svg @@ -0,0 +1,13 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/size.svg b/apps/pie-docs/src/assets/img/components/chip/size.svg new file mode 100644 index 0000000000..5f9744ebf0 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/structure.svg b/apps/pie-docs/src/assets/img/components/chip/structure.svg new file mode 100644 index 0000000000..56175c7c6d --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/structure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/usage-action.svg b/apps/pie-docs/src/assets/img/components/chip/usage-action.svg new file mode 100644 index 0000000000..79b229e218 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/usage-action.svg @@ -0,0 +1,33 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/usage-choice.svg b/apps/pie-docs/src/assets/img/components/chip/usage-choice.svg new file mode 100644 index 0000000000..28b37e063f --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/usage-choice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/usage-filter.svg b/apps/pie-docs/src/assets/img/components/chip/usage-filter.svg new file mode 100644 index 0000000000..c87e1c10fc --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/usage-filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/usage-input.svg b/apps/pie-docs/src/assets/img/components/chip/usage-input.svg new file mode 100644 index 0000000000..1a5cb2d178 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/usage-input.svg @@ -0,0 +1,43 @@ + diff --git a/apps/pie-docs/src/assets/img/components/chip/variation-default.svg b/apps/pie-docs/src/assets/img/components/chip/variation-default.svg new file mode 100644 index 0000000000..d3ab09c666 --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/variation-default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/variation-ghost.svg b/apps/pie-docs/src/assets/img/components/chip/variation-ghost.svg new file mode 100644 index 0000000000..5fc943055d --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/variation-ghost.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/assets/img/components/chip/variation-outline.svg b/apps/pie-docs/src/assets/img/components/chip/variation-outline.svg new file mode 100644 index 0000000000..c5f416402a --- /dev/null +++ b/apps/pie-docs/src/assets/img/components/chip/variation-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/pie-docs/src/componentStatusData.js b/apps/pie-docs/src/componentStatusData.js index c5251cf713..2883e4e5c8 100644 --- a/apps/pie-docs/src/componentStatusData.js +++ b/apps/pie-docs/src/componentStatusData.js @@ -515,7 +515,8 @@ const rows = [ }, { resource: resourceTypes.WEB_COMPONENTS, - status: statusTypes.PLANNED, + link: 'https://webc.pie.design/?path=/story/chip--default', + status: statusTypes.ALPHA, }, { resource: resourceTypes.VUE, diff --git a/apps/pie-docs/src/components/chip/chip.md b/apps/pie-docs/src/components/chip/chip.md index 3ae775dfe1..e021314ffb 100644 --- a/apps/pie-docs/src/components/chip/chip.md +++ b/apps/pie-docs/src/components/chip/chip.md @@ -1,31 +1,8 @@ --- eleventyNavigation: - key: 'Chip' + key: Chip parent: Components order: 13 + url: /components/chip/overview/ --- -## Overview - -The purpose of chips is to provide a visual representation of a specific entity or attribute, such as a selected option or a labelled category. Chips can also be interactive, allowing users to remove or modify the selected choices. - -Chips are commonly used in various contexts, including filtering options, search results or any situation where concise and visually distinct information needs to be displayed. - - -{% contentPageImage { - src:"../../assets/img/components/chip/overview.svg", - alt: "A group of chips that are horizontally stacked together." -} %} - ---- - -## Resources - -{% notification { - type: "warning", - message: "We’re currently working on updating our Chip documentation, please see the resources below." -} %} - -{% resourceTable { - componentName: 'Chip' -} %} diff --git a/apps/pie-docs/src/components/chip/code/code.md b/apps/pie-docs/src/components/chip/code/code.md new file mode 100644 index 0000000000..f00bb2d3c6 --- /dev/null +++ b/apps/pie-docs/src/components/chip/code/code.md @@ -0,0 +1,135 @@ +--- +eleventyNavigation: + key: Code + parent: Chip + order: 3 +shouldShowContents: true +eleventyComputed: + props: "{% include './props.json' %}" + slots: "{% include './slots.json' %}" +--- + +## Overview + +
+ + + +
+ +`pie-chip` is a Web Component built using the Lit library. It offers a simple and accessible chip component for web applications. + +This component can be easily integrated into various frontend frameworks and customized through a set of properties. + +## Installation + +To install `pie-chip` in your application, run the following on your command line: + +```shell +# npm +$ npm i @justeattakeaway/pie-chip +``` + +```shell +# yarn +$ yarn add @justeattakeaway/pie-chip +``` + +{% notification { + type: "neutral", + iconName: "link", + message: "For more information on using PIE components as part of an application, check out the [Getting Started Guide.](https://github.com/justeattakeaway/pie/wiki/Getting-started-with-PIE-Web-Components)." +} %} + +## Playground + + + +## Variants + + + +## Props + +{% componentDetailsTable { + tableData: props +} %} + +## Slots + +{% componentDetailsTable { + tableData: slots +} %} + +### Using `pie-icons-webc` with the `pie-chip` icon slot + +We recommend using `pie-icons-webc` when using the `icon` slot. Here is an example of how you would do this: + +```html + +true
, disables the chip.",
+ {
+ "type": "code",
+ "item": ["false"]
+ }
+ ],
+ [
+ "isSelected",
+ {
+ "type": "code",
+ "item": ["true", "false"]
+ },
+ "If `true`, the chip component will apply the selected styles.",
+ {
+ "type": "code",
+ "item": ["false"]
+ }
+ ],
+ [
+ "isLoading",
+ {
+ "type": "code",
+ "item": ["true", "false"]
+ },
+ "if true
, displays a loading indicator inside the chip.",
+ {
+ "type": "code",
+ "item": ["false"]
+ }
+ ],
+ [
+ "aria",
+ {
+ "type": "code",
+ "item": ["{ label?: string, close?: string }"]
+ },
+ "Aria properties for the chip to help with making it accessible.",
+ {
+ "type": "code",
+ "item": ["undefined"]
+ }
+ ]
+ ]
+}
diff --git a/apps/pie-docs/src/components/chip/code/slots.json b/apps/pie-docs/src/components/chip/code/slots.json
new file mode 100644
index 0000000000..8fa1fde1e0
--- /dev/null
+++ b/apps/pie-docs/src/components/chip/code/slots.json
@@ -0,0 +1,19 @@
+{
+ "headings": ["Slot", "Description"],
+ "rows": [
+ [
+ {
+ "type": "code",
+ "item": ["default"]
+ },
+ "The default slot is used to pass text into the chip component."
+ ],
+ [
+ {
+ "type": "code",
+ "item": ["icon"]
+ },
+ "Used to pass an icon into the chip component."
+ ]
+ ]
+}
diff --git a/apps/pie-docs/src/components/chip/overview/overview.md b/apps/pie-docs/src/components/chip/overview/overview.md
new file mode 100644
index 0000000000..87b86858e9
--- /dev/null
+++ b/apps/pie-docs/src/components/chip/overview/overview.md
@@ -0,0 +1,326 @@
+---
+eleventyNavigation:
+ key: Overview
+ parent: Chip
+ order: 1
+shouldShowContents: true
+---
+
+## Overview
+
+The purpose of chips is to provide a visual representation of a specific entity or attribute, such as a selected option or a labelled category. Chips can also be interactive, allowing users to remove or modify the selected choices.
+
+Chips are commonly used in various contexts, including filtering options, search results or any situation where concise and visually distinct information needs to be displayed.
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/overview.svg",
+ alt: "A group of chips that are horizontally stacked together."
+} %}
+
+---
+
+## Dos and Don’ts
+
+{% usage {
+ do: {
+ type: usageTypes.list,
+ items: [
+ "Chips should appear dynamically as a group of multiple interactive elements."
+ ]
+ },
+ dont: {
+ type: usageTypes.list,
+ items: [
+ "Don’t use when an interaction is not required, use a [tag](/components/tag/) if needed."
+ ]
+ }
+} %}
+
+___
+
+## Anatomy
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/anatomy.svg",
+ alt: "Anatomy of the chip component.",
+ width: 210
+} %}
+
+{% list {
+ type: listTypes.ordered,
+ items: [
+ "**Icon (Optional):** Non-interactive icon that can be used to visually support the string.",
+ "**String:** Text label informing the user of the option/selection.",
+ "**Close (optional)**: Allows the Chip to be dismissible, but the application should provide a way for them to easily add it back."
+ ]
+} %}
+
+---
+
+## Variations
+
+### Default
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/variation-default.svg",
+ alt: "The default variant of the chip component.",
+ width: 63,
+ variant: "secondary"
+} %}
+
+### Outline
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/variation-outline.svg",
+ alt: "The outline variant of the chip component.",
+ width: 63
+} %}
+
+### Ghost
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/variation-ghost.svg",
+ alt: "The ghost variant of the chip component.",
+ width: 63
+} %}
+
+---
+
+## Modifiers
+
+### Icon
+
+Icons are always placed in a leading position.
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/modifier-icon.svg",
+ alt: "A chip component with a placeholder icon on the left.",
+ width: 87
+} %}
+
+### Tick icon
+
+Tick icon can be added for clarity and decision support when using chips to filter or multi-select to the selected state.
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/modifier-tick-icon.svg",
+ alt: "A chip component with a tick icon on the left.",
+ width: 63
+} %}
+
+### Close icon
+
+Close icon can be added to the selected state to allow users to remove the selection or filter.
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/modifier-close-icon.svg",
+ alt: "A chip component with a close icon on the right.",
+ width: 63
+} %}
+
+---
+
+## Size
+
+Chips have a minimum width of 48px.
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/size.svg",
+ alt: "A chip component with the value of 1.",
+ width: 48
+} %}
+
+---
+
+## Content
+
+- Keep the strings short so they are easy to read and scan.
+- Use sentence case.
+
+---
+
+## Layout
+
+If there is a Chip grouping, by default they are laid out horizontally and stack if required. A spacing of 8px is used horizontally, and 12px for vertical stacking.
+
+{% contentLayout %}
+ {% contentItem %}
+ {% contentPageImage {
+ src: "../../../assets/img/components/chip/layout-single-row.svg",
+ width: 237,
+ alt: "A group of chip components flowing into multiple rows because the container isn’t wide enough.",
+ variant: "secondary"
+ } %}
+ {% endcontentItem %}
+ {% contentItem %}
+ {% contentPageImage {
+ src: "../../../assets/img/components/chip/layout-double-row.svg",
+ width: 237,
+ alt: "A group of chip components laid out horizontally and stacked",
+ variant: "secondary"
+ } %}
+ {% endcontentItem %}
+{% endcontentLayout %}
+
+---
+
+## Usage
+
+### Input
+
+Input chips usually represent an entity or different attributes. They can be added or removed within input fields.
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/usage-input.svg",
+ alt: "Chip components used in an input field",
+ width: 256
+} %}
+
+### Choice
+
+Choice chips allow users to select one or more chips from a set of options (minimum of 2).
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/usage-choice.svg",
+ alt: "Chip components corresponding to a different weekday",
+ width: 274,
+ variant: "secondary"
+} %}
+
+### Filter
+
+Filter chips allow users to refine content by selecting one or more chips from a set.
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/usage-filter.svg",
+ alt: "Chip components representing various cuisines",
+ width: 297
+} %}
+
+### Action
+
+Action chips trigger actions related to primary content.
+
+{% contentPageImage {
+ src:"../../../assets/img/components/chip/usage-action.svg",
+ alt: "A chip component with a heart icon, allowing users to save an entity.",
+ width: 266,
+ variant: "secondary"
+} %}
+
+___
+
+## Interactive states
+
+Outlines the atomic level interactive elements for the component.
+
+{% contentLayout %}
+ {% contentItem %}
+