From ee110382c91946d3c4c53b6c610055066bce33a6 Mon Sep 17 00:00:00 2001 From: Jason Smith Date: Tue, 3 Oct 2023 12:03:32 +1100 Subject: [PATCH 1/5] docs: :memo: update badges, add tools and frameworks --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ddd3440d3c..5e43afdbc2 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,10 @@ ripple storybook - - ripple ui core npm + + UI Libraries build status - - ripple develop branch build status - # Ripple 2.0 @@ -42,11 +39,15 @@ Ripple is a system of reusable styles, components, patterns and tools for buildi Over 50 government websites use Ripple to date, including our main vic.gov.au platform. These sites attract the visitation of millions of views per month. - ### Ripple Framework -The Ripple design system consists of the design elements and components used to build websites using the Victorian government brand and Ripple _framework_, a collection of [Nuxt 3](https://www.ripple.sdp.vic.gov.au/framework/key-concepts/nuxt/) modules and [layers](https://www.ripple.sdp.vic.gov.au/framework/key-concepts/nuxt-layers) primarily used to create headless SDP websites using the [Tide Drupal CMS](https://github.com/dpc-sdp/tide). +The Ripple design system consists of the design elements and components used to build websites using the Victorian government brand and Ripple _framework_, a collection of [Nuxt](https://www.ripple.sdp.vic.gov.au/framework/key-concepts/nuxt/) modules and [layers](https://www.ripple.sdp.vic.gov.au/framework/key-concepts/nuxt-layers) primarily used to create headless SDP websites using the [Tide Drupal CMS](https://github.com/dpc-sdp/tide). + +Ripple components are built using Vue 3 and TypeScript. +The monorepo is managed with pnpm, using Node LTS/Hydrogen (v18). + +Tests use Jest, Axe-core and Cypress. ## Documentation @@ -54,7 +55,6 @@ See https://www.ripple.sdp.vic.gov.au/ for more information about the Ripple des For information about using Ripple in SDP websites see the [Ripple Framework](https://www.ripple.sdp.vic.gov.au/framework) section. - ## Contributing Please see [CONTRIBUTING.md](CONTRIBUTING.md) as well as https://www.ripple.sdp.vic.gov.au/design-system/develop/contributing/ for information about how to submit changes to Ripple. From 690c239b8cb0cfc1cae22b7d5298218629307149 Mon Sep 17 00:00:00 2001 From: Jason Smith Date: Wed, 4 Oct 2023 17:40:27 +1100 Subject: [PATCH 2/5] docs: :memo: add more detail to readme --- README.md | 20 +++++++++++++++++--- packages/ripple-ui-core/README.md | 8 +++++--- packages/ripple-ui-forms/README.md | 6 ++++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5e43afdbc2..f0dafaa971 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,8 @@ **Table of Contents** - [About the project](#about-the-project) - [Ripple Framework](#ripple-framework) + - [Usage](#usage) + - [Availability](#availability) - [Documentation](#documentation) - [Contributing](#contributing) - [License](#license) @@ -43,11 +45,23 @@ Over 50 government websites use Ripple to date, including our main vic.gov.au pl The Ripple design system consists of the design elements and components used to build websites using the Victorian government brand and Ripple _framework_, a collection of [Nuxt](https://www.ripple.sdp.vic.gov.au/framework/key-concepts/nuxt/) modules and [layers](https://www.ripple.sdp.vic.gov.au/framework/key-concepts/nuxt-layers) primarily used to create headless SDP websites using the [Tide Drupal CMS](https://github.com/dpc-sdp/tide). -Ripple components are built using Vue 3 and TypeScript. +Ripple components are built using Vue 3 and [TypeScript](https://github.com/dpc-sdp/ripple-framework/blob/develop/tsconfig.json). -The monorepo is managed with pnpm, using Node LTS/Hydrogen (v18). +The monorepo is managed with pnpm [workspaces](https://github.com/dpc-sdp/ripple-framework/blob/develop/pnpm-workspace.yaml), using [Node.js](.nvmrc). -Tests use Jest, Axe-core and Cypress. +Tests use [Jest](https://github.com/dpc-sdp/ripple-framework/blob/develop/jest.config.js), [Axe-core](https://github.com/dpc-sdp/ripple-framework/blob/develop/packages/ripple-ui-core/stories/interactions.js) and [Cypress](packages/ripple-test-utils). + +We use custom rules for [ESLint](https://github.com/dpc-sdp/ripple-framework/blob/develop/packages/eslint-config-ripple/index.js) and [Stylelint](https://github.com/dpc-sdp/ripple-framework/blob/develop/packages/stylelint-config-ripple/index.js). + +### Usage + +Ripple was built as a whole to implement front end sites for SDP using a framework of Vue 3 and Nuxt 3, but parts of the modular architecture can be used independently: `ripple-ui-core` and `ripple-ui-forms` can be used as UI component libraries for any Vue 3 project. + +There is also an experimental web components implementation, and a standalone export of all Ripple design system CSS. See the [relevant section](https://ripple.sdp.vic.gov.au/design-system/develop/usage/) on the Ripple documentation site for more details. + +### Availability + +Note: Ripple 2 will only be hosted on Github Packages, any packages still published to npm are either pre-release or deprecated, and should not be used. ## Documentation diff --git a/packages/ripple-ui-core/README.md b/packages/ripple-ui-core/README.md index 9466da509a..bf5faaa524 100644 --- a/packages/ripple-ui-core/README.md +++ b/packages/ripple-ui-core/README.md @@ -1,6 +1,6 @@ -# Ripple UI Core +# Ripple UI Core -> A UI component library built with Vue.js. [View the Ripple storybook](https://www.ripple.sdp.vic.gov.au/storybook) to start exploring available components. +> A Vue 3 UI component library. [View the Ripple storybook](https://www.ripple.sdp.vic.gov.au/storybook) to start exploring available components. ## SDP Platform (Tide) @@ -22,7 +22,7 @@ npm install @dpc-sdp/ripple-ui-core ## Usage (Nuxt) -Ripple UI Core exports a nuxt module that you can add to your nuxt config, note the addition of `/nuxt`. +Ripple UI Core exports a Nuxt 3 module that you can add to your nuxt config, note the addition of `/nuxt`. ```js export default defineNuxtConfig({ @@ -32,6 +32,8 @@ export default defineNuxtConfig({ }) ``` +Note: Nuxt 2 is not supported. + There is no need to import the components as they will be registered globally by the nuxt module. ```vue diff --git a/packages/ripple-ui-forms/README.md b/packages/ripple-ui-forms/README.md index 2826e0bc60..12ca9431b9 100644 --- a/packages/ripple-ui-forms/README.md +++ b/packages/ripple-ui-forms/README.md @@ -1,6 +1,6 @@ # Ripple UI Forms -> A form component library built with [Formkit](https://formkit.com/). [View the Ripple storybook](https://www.ripple.sdp.vic.gov.au/storybook/?path=/story/forms-form--default-story) to start exploring available components. +> A Vue 3 form component library built with [Formkit](https://formkit.com/). [View the Ripple storybook](https://www.ripple.sdp.vic.gov.au/storybook/?path=/story/forms-form--default-story) to start exploring available components. Form fields can be used individually `` to handcraft form experiences. However, using the `` component and providing a form schema provides a simpler way to define and generate forms. @@ -48,7 +48,7 @@ npm install @dpc-sdp/ripple-ui-forms ## Usage (Nuxt) -Ripple UI Forms exports a nuxt module that you can add to your nuxt config, note the addition of `/nuxt`. +Ripple UI Forms exports a Nuxt 3 module that you can add to your nuxt config, note the addition of `/nuxt`. ```js export default defineNuxtConfig({ @@ -58,6 +58,8 @@ export default defineNuxtConfig({ }) ``` +Note: Nuxt 2 is not supported. + There is no need to import the components as they will be registered globally by the nuxt module. ```vue From db3997f13dc7fe4f9a73bdbcf9f81b07ee8b3508 Mon Sep 17 00:00:00 2001 From: Jason Smith Date: Thu, 5 Oct 2023 12:55:10 +1100 Subject: [PATCH 3/5] docs(docs): :memo: add personal access token instructions --- README.md | 2 +- .../design-system/3.develop/3.usage.md | 51 ++++++++++++++++-- docs/public/img/generate.jpg | Bin 0 -> 38992 bytes docs/public/img/permissions.jpg | Bin 0 -> 43817 bytes docs/public/img/token.jpg | Bin 0 -> 37268 bytes 5 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 docs/public/img/generate.jpg create mode 100644 docs/public/img/permissions.jpg create mode 100644 docs/public/img/token.jpg diff --git a/README.md b/README.md index f0dafaa971..3d1c66d425 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ There is also an experimental web components implementation, and a standalone ex ### Availability -Note: Ripple 2 will only be hosted on Github Packages, any packages still published to npm are either pre-release or deprecated, and should not be used. +Note: Ripple 2 will only be hosted on Github Packages, any packages still published to npm are either pre-release or deprecated, and should not be used. Please see the section [Access to Github Packages repos](https://www.ripple.vic.gov.au/design-system/develop/usage#access-to-github-packages-repos) for instructions on how to set up a personal access token, and where to use it. ## Documentation diff --git a/docs/content/design-system/3.develop/3.usage.md b/docs/content/design-system/3.develop/3.usage.md index 70fd8ee599..b8fe6ec0a8 100644 --- a/docs/content/design-system/3.develop/3.usage.md +++ b/docs/content/design-system/3.develop/3.usage.md @@ -21,7 +21,7 @@ Ripple UI libraries are usable in the following contexts: -| Library | CSS styles | Vue Components | Ripple Framework (Nuxt) | Web components | +| Library | CSS styles | Vue Components | Ripple Framework (Nuxt) | Web components | | --------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | ------------------------- | | Ripple UI Core | supported | supported |supported | Partial support | | Ripple UI Forms | supported | supported |supported | not supported | @@ -35,6 +35,49 @@ Ripple UI libraries are usable in the following contexts: > > For documentation on using Ripple with Nuxt in SDP sites, visit the [Ripple Framework documentation](/framework) +### Access to Github Packages repos + +Ripple 2 is hosted publicly on Github Packages (ghcr), so a few steps need to be followed to co-exist with the npm ecosystem. + +First, create a Personal Access Token from Github: + +1. Visit https://github.com/settings/tokens and select **Generate new token** > **Generate new token (classic)** + +::DocsImageExample +--- +src: /img/generate.jpg +alt: "Screenshot of a clicked button (title Generate new token) that has opened a drop-down menu with two options: fine-grained and classic" +style: "width:360px" +--- +:: + +2. Fill in the **Note** and choose an **Expiration** - the 30 day default is generally fine, you'll receive a reminder to regenerate the token just before expiry + +::DocsImageExample +--- +src: /img/token.jpg +alt: "Screenshot of personal access token setup form, with 'Note' filled in as 'public ghcr access' and 'Expiration' set to default of 30 days" +style: "width:505px" +--- +:: + +3. Set the scope to only allow `read:packages`, and **Generate** token + +::DocsImageExample +--- +src: /img/permissions.jpg +alt: "Screenshot of scope, with only read:packages selected" +style: "width:827px" +--- +:: + +4. Store the resulting token somewhere secure, and add to either a user `.npmrc` (recommended) or the project-level `.npmrc` (the url on line 2 below is protocol-less, not a comment): + +``` +@dpc-sdp:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken= +``` + ### Using in a Vue app To install Ripple UI in your project, run: @@ -60,6 +103,8 @@ import { RplButton } from '@dpc-sdp/ripple-ui-core/vue'; ``` +Please see this [example app](https://github.com/dpc-sdp/ripple-vue-example) for a basic demonstration. + ### Using in a Nuxt app To install Ripple UI in your project, run: @@ -104,9 +149,9 @@ Support for this output target is currently experimental, if you think you have ### Using Ripple CSS styles only -Ripple UI core exports it's CSS stylesheets directly. If you have a use case where you can't use any of the other outputs, you can use our styles directly and provide your own markup based upon the rendered examples in Storybook. +Ripple UI core exports it's CSS stylesheets directly. If you have a use case where you can't use any of the other outputs, you can use our styles directly and provide your own markup based upon the rendered examples in Storybook. -To import CSS styles only you can import them from the ripple-ui-core package. +To import CSS styles only you can import them from the ripple-ui-core package. ```js import '@dpc-sdp/ripple-ui-core/style'; diff --git a/docs/public/img/generate.jpg b/docs/public/img/generate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..73efedb3f4c9e1d53f90d271e4405810a821c4ff GIT binary patch literal 38992 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 literal 0 HcmV?d00001 diff --git a/docs/public/img/token.jpg b/docs/public/img/token.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a8737f5b1c0971c8d1bf3b9db4af79a5c13831c GIT binary patch literal 37268 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 Date: Thu, 5 Oct 2023 16:45:34 +1100 Subject: [PATCH 4/5] docs: :memo: simplify badge labels --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3d1c66d425..eb427830b0 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ - UI Libraries build status + build status From 2e41717ee14f41a6f1ab8d541ee0d6e2cee10fd8 Mon Sep 17 00:00:00 2001 From: Jason Smith Date: Tue, 10 Oct 2023 10:46:05 +1100 Subject: [PATCH 5/5] docs(docs): :memo: split usage into separate docs, add nuxt load order fix --- .../design-system/3.develop/3.usage.md | 129 +----------------- .../4.usage/1.access-to-github-packages.md | 48 +++++++ .../design-system/3.develop/4.usage/2.vue.md | 32 +++++ .../design-system/3.develop/4.usage/3.nuxt.md | 38 ++++++ .../3.develop/4.usage/4.webcomponents.md | 23 ++++ .../3.develop/4.usage/5.css-only.md | 22 +++ docs/nuxt.config.ts | 3 + 7 files changed, 168 insertions(+), 127 deletions(-) create mode 100644 docs/content/design-system/3.develop/4.usage/1.access-to-github-packages.md create mode 100644 docs/content/design-system/3.develop/4.usage/2.vue.md create mode 100644 docs/content/design-system/3.develop/4.usage/3.nuxt.md create mode 100644 docs/content/design-system/3.develop/4.usage/4.webcomponents.md create mode 100644 docs/content/design-system/3.develop/4.usage/5.css-only.md diff --git a/docs/content/design-system/3.develop/3.usage.md b/docs/content/design-system/3.develop/3.usage.md index b8fe6ec0a8..d75fbb0fa0 100644 --- a/docs/content/design-system/3.develop/3.usage.md +++ b/docs/content/design-system/3.develop/3.usage.md @@ -16,7 +16,6 @@ Whilst Ripple is built to implement sites using a framework built on Vue JS and ![ripple is made up of Figma design, CSS styles, Vue JS components and Nuxt JS Sites](/assets/img/modules/rpl-modules.png) - Ripple UI libraries are usable in the following contexts: @@ -26,136 +25,12 @@ Ripple UI libraries are usable in the following contexts: | Ripple UI Core | supported | supported |supported | Partial support | | Ripple UI Forms | supported | supported |supported | not supported | - - - ### Using in an SDP website > If you are using Ripple 2 to build a site on the SDP platform, the UI libraries will be included automatically when scaffolding your project. > > For documentation on using Ripple with Nuxt in SDP sites, visit the [Ripple Framework documentation](/framework) -### Access to Github Packages repos - -Ripple 2 is hosted publicly on Github Packages (ghcr), so a few steps need to be followed to co-exist with the npm ecosystem. - -First, create a Personal Access Token from Github: - -1. Visit https://github.com/settings/tokens and select **Generate new token** > **Generate new token (classic)** - -::DocsImageExample ---- -src: /img/generate.jpg -alt: "Screenshot of a clicked button (title Generate new token) that has opened a drop-down menu with two options: fine-grained and classic" -style: "width:360px" ---- -:: - -2. Fill in the **Note** and choose an **Expiration** - the 30 day default is generally fine, you'll receive a reminder to regenerate the token just before expiry - -::DocsImageExample ---- -src: /img/token.jpg -alt: "Screenshot of personal access token setup form, with 'Note' filled in as 'public ghcr access' and 'Expiration' set to default of 30 days" -style: "width:505px" ---- -:: - -3. Set the scope to only allow `read:packages`, and **Generate** token - -::DocsImageExample ---- -src: /img/permissions.jpg -alt: "Screenshot of scope, with only read:packages selected" -style: "width:827px" ---- -:: - -4. Store the resulting token somewhere secure, and add to either a user `.npmrc` (recommended) or the project-level `.npmrc` (the url on line 2 below is protocol-less, not a comment): - -``` -@dpc-sdp:registry=https://npm.pkg.github.com -//npm.pkg.github.com/:_authToken= -``` - -### Using in a Vue app - -To install Ripple UI in your project, run: - -`npm install @dpc-sdp/ripple-ui-core --save` - -In order for the styles to appear correctly, you will need to import them. Do this at the root of your project (usually in your app.vue or index.js file): - -```js -import '@dpc-sdp/ripple-ui-core/style'; -import '@dpc-sdp/ripple-ui-core/style/components'; -``` - -To use a component, import it from `@dpc-sdp/ripple-ui-core/vue`, note the addition of `/vue`. - -```js - - - -``` - -Please see this [example app](https://github.com/dpc-sdp/ripple-vue-example) for a basic demonstration. - -### Using in a Nuxt app - -To install Ripple UI in your project, run: - -`npm install @dpc-sdp/ripple-ui-core --save` - -Ripple UI exports a nuxt module that you can add to your nuxt config, note the addition of `/nuxt`: - -```js -export default defineNuxtConfig({ - modules: [ - '@dpc-sdp/ripple-ui-core/nuxt' - ] -}) -``` - -In order for the styles to appear correctly, you will need to import them. Do this at the root of your project (usually in your app.vue file): - -```js -import '@dpc-sdp/ripple-ui-core/style'; -import '@dpc-sdp/ripple-ui-core/style/components'; -``` - -There is no need to import the components as they will be registered globally by the nuxt module - -```js - -``` - -### Webcomponents - -> Web components are a set of web platform APIs that allow you to create new custom, reusable, encapsulated HTML tags to use in web pages and web apps. Custom components and widgets build on the Web Component standards, will work across modern browsers, and can be used with any JavaScript library or framework that works with HTML. -> -> Web components are based on existing web standards. Features to support web components are currently being added to the HTML and DOM specs, letting web developers easily extend HTML with new elements with encapsulated styling and custom behavior. -> https://www.webcomponents.org/ - -Ripple exports a limited set of components as standard browser native webcomponents. The advantage of using Webcomponents is they can be dropped straight into traditional webpages and CMS's that do not have javascript build pipeline such as Squiz Matrix and Salesforce. - -Support for this output target is currently experimental, if you think you have a use case for using Webcomponents in your project please add a comment [here](https://github.com/dpc-sdp/ripple-framework/discussions/658). - -### Using Ripple CSS styles only - -Ripple UI core exports it's CSS stylesheets directly. If you have a use case where you can't use any of the other outputs, you can use our styles directly and provide your own markup based upon the rendered examples in Storybook. - -To import CSS styles only you can import them from the ripple-ui-core package. - -```js -import '@dpc-sdp/ripple-ui-core/style'; -import '@dpc-sdp/ripple-ui-core/style/components'; -``` +### Github Packages -We recommend that you lock the version of `@dpc-sdp/ripple-ui-core` so that any future changes of styles without changes to markup do not break your application. +Ripple 2 is hosted publicly on Github Packages (ghcr) under the **@dpc/sdp** namespace, please read these [setup instructions for accessing Github Packages](/design-system/develop/usage/access-to-github-packages). diff --git a/docs/content/design-system/3.develop/4.usage/1.access-to-github-packages.md b/docs/content/design-system/3.develop/4.usage/1.access-to-github-packages.md new file mode 100644 index 0000000000..d206afdf0b --- /dev/null +++ b/docs/content/design-system/3.develop/4.usage/1.access-to-github-packages.md @@ -0,0 +1,48 @@ +--- +title: Access to Github Packages +description: How to access and use repos hosted on Github Packages. +layout: page +--- + +NPM allows the use of multiple repo hosts, as long as they can be identified by namespace. + +Ripple 2 is hosted publicly on Github Packages (ghcr) under the **@dpc/sdp** namespace, so a few steps need to be followed access these packages, while also co-existing with the npm ecosystem. + +First, create a Personal Access Token on Github: + +1. Visit https://github.com/settings/tokens and select **Generate new token** > **Generate new token (classic)** + +::DocsImageExample +--- +src: /img/generate.jpg +alt: "Screenshot of a clicked button (title Generate new token) that has opened a drop-down menu with two options: fine-grained and classic" +style: "width:360px" +--- +:: + +2. Fill in the **Note** and choose an **Expiration** - the 30 day default is generally fine, you'll receive a reminder to regenerate the token just before expiry + +::DocsImageExample +--- +src: /img/token.jpg +alt: "Screenshot of personal access token setup form, with 'Note' filled in as 'public ghcr access' and 'Expiration' set to default of 30 days" +style: "width:505px" +--- +:: + +3. Set the scope to only allow `read:packages`, and **Generate** token + +::DocsImageExample +--- +src: /img/permissions.jpg +alt: "Screenshot of scope, with only read:packages selected" +style: "width:827px" +--- +:: + +4. Store the resulting token somewhere secure, and add it to either a user `.npmrc` (recommended) or the project-level `.npmrc` (the url on line 2 below is protocol-less, not a comment): + +``` +@dpc-sdp:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken= +``` diff --git a/docs/content/design-system/3.develop/4.usage/2.vue.md b/docs/content/design-system/3.develop/4.usage/2.vue.md new file mode 100644 index 0000000000..3a15c56986 --- /dev/null +++ b/docs/content/design-system/3.develop/4.usage/2.vue.md @@ -0,0 +1,32 @@ +--- +title: Vue +description: How to use Ripple components with Vue. +layout: page +--- + +First, set up [access to Github Packages](access-to-github-packages). + +Next, install Ripple UI in your project: + +`npm install @dpc-sdp/ripple-ui-core --save` + +In order for the styles to appear correctly, you will need to import them. Do this at the root of your project (usually in your app.vue or index.js file): + +```js +import '@dpc-sdp/ripple-ui-core/style'; +import '@dpc-sdp/ripple-ui-core/style/components'; +``` + +To use a component, import it from `@dpc-sdp/ripple-ui-core/vue`, note the addition of `/vue`. + +```js + + + +``` + +Please see this [example app](https://github.com/dpc-sdp/ripple-vue-example) for a basic demonstration of how to use Ripple components in a Vue app. diff --git a/docs/content/design-system/3.develop/4.usage/3.nuxt.md b/docs/content/design-system/3.develop/4.usage/3.nuxt.md new file mode 100644 index 0000000000..69b2335f65 --- /dev/null +++ b/docs/content/design-system/3.develop/4.usage/3.nuxt.md @@ -0,0 +1,38 @@ +--- +title: Nuxt +description: How to use Ripple components with Nuxt in a non-SDP context. +layout: page +--- + +First, set up [access to Github Packages](access-to-github-packages). + +Next, install Ripple UI in your project: + +`npm install @dpc-sdp/ripple-ui-core --save` + +Ripple UI exports a nuxt module that you can add to your nuxt config, note the addition of `/nuxt`: + +```js +export default defineNuxtConfig({ + modules: [ + '@dpc-sdp/ripple-ui-core/nuxt' + ] +}) +``` + +In order for the styles to appear correctly, you will need to import them. Do this at the root of your project (usually in your app.vue file): + +```js +import '@dpc-sdp/ripple-ui-core/style'; +import '@dpc-sdp/ripple-ui-core/style/components'; +``` + +There is no need to import the components as they will be registered globally by the nuxt module + +```js + +``` + +Even if you are not using SDP, the [Ripple Framework documentation](/framework) is a good starting point for any Nuxt development using Ripple. diff --git a/docs/content/design-system/3.develop/4.usage/4.webcomponents.md b/docs/content/design-system/3.develop/4.usage/4.webcomponents.md new file mode 100644 index 0000000000..4cdc5d8189 --- /dev/null +++ b/docs/content/design-system/3.develop/4.usage/4.webcomponents.md @@ -0,0 +1,23 @@ +--- +title: Web components +description: How to use the web component exports with other front-end systems. +layout: page +--- + +> Web components are a set of web platform APIs that allow you to create new custom, reusable, encapsulated HTML tags to use in web pages and web apps. Custom components and widgets build on the Web Component standards, will work across modern browsers, and can be used with any JavaScript library or framework that works with HTML. +> +> Web components are based on existing web standards. Features to support web components are currently being added to the HTML and DOM specs, letting web developers easily extend HTML with new elements with encapsulated styling and custom behavior. +> https://www.webcomponents.org/ + + + + +Ripple exports a limited set of components as standard browser native web components. The advantage of using Web components is they can be dropped straight into conventional webpages and any CMS without a javascript build pipeline, such as Squiz Matrix and Salesforce. + +Support for this output target is currently experimental, if you think you have a use case for using Web components in your project please add a comment [here](https://github.com/dpc-sdp/ripple-framework/discussions/658). + +As with the other methods, set up [access to Github Packages](access-to-github-packages) and then install Ripple UI in your project: + +`npm install @dpc-sdp/ripple-ui-core --save` + +A basic example of how to use the web component exports can be found under [examples/webcomponents](https://github.com/dpc-sdp/ripple-framework/tree/develop/examples/webcomponents) in the ripple-framework monorepo. diff --git a/docs/content/design-system/3.develop/4.usage/5.css-only.md b/docs/content/design-system/3.develop/4.usage/5.css-only.md new file mode 100644 index 0000000000..1a8a8c501f --- /dev/null +++ b/docs/content/design-system/3.develop/4.usage/5.css-only.md @@ -0,0 +1,22 @@ +--- +title: Styles only +description: Using the design system styles without a front-end framework. +layout: page +--- + +Ripple UI core exports it's CSS stylesheets directly. If you have a use case where you can't use any of the other outputs, you can use our styles directly and provide your own markup based upon the rendered examples in Storybook. + +First, set up [access to Github Packages](access-to-github-packages). + +Next, install Ripple UI in your project: + +`npm install @dpc-sdp/ripple-ui-core --save` + +You can import CSS styles from the ripple-ui-core package. + +```js +import '@dpc-sdp/ripple-ui-core/style'; +import '@dpc-sdp/ripple-ui-core/style/components'; +``` + +We recommend that you lock the version of `@dpc-sdp/ripple-ui-core` so that any future changes of styles without changes to markup do not break your application. diff --git a/docs/nuxt.config.ts b/docs/nuxt.config.ts index d4c1dc0506..79191706ae 100644 --- a/docs/nuxt.config.ts +++ b/docs/nuxt.config.ts @@ -30,6 +30,9 @@ export default defineNuxtConfig({ vite: { plugins: [ViteYaml()] }, + experimental: { + inlineSSRStyles: (id) => !id?.includes('entry') + }, nitro: { prerender: { ignore: ['/storybook']