Skip to content

Kongponents Logo

Kongponents is a Vue component library of frequently needed UI elements. They were developed to solve Kong's application needs, but are generic enough to use in any web application.

Install ​

To begin using Kongponents, start by installing the package into your project.

sh
yarn add @kong/kongponents

If you choose to utilize any of the CSS custom properties (variables) included in the @kong/kongponents package and your project uses PostCSS, you will likely need use the postcss-custom-properties PostCSS plugin so that the variables are preserved in their original form.

sh
yarn add postcss-custom-properties --dev

Next, add a postcss.config.js file to your project with the following content

js
// postcss.config.js

module.exports = () => ({
  plugins: {
    'postcss-custom-properties': {
      preserve: true
    }
  }
})

Define global constant replacements ​

If your app utilizes Vite, you may need to define global constant replacements in your vite.config.ts file as shown here:

ts
export default defineConfig({
  // Define global constant replacements
  define: {
    'process.env.development': JSON.stringify('development'),
    'process.env.production': JSON.stringify('production'),
  },
})

Optimize or Transpile Dependencies ​

Depending on your project setup, you may need to optimize or transpile the @kong/kongponents package in your project.

If your project uses Vite, just add the following to your `vite.config.ts

ts
export default defineConfig({
  build: {
    commonjsOptions: {
      include: [
        /@kong\/kongponents/,
        /node_modules/
      ]
    },
  }
})

If your project already has a vue.config.ts file, just add the following transpileDependencies entry

ts
// vue.config.ts

module.exports = {
  transpileDependencies: [
    /@kong\/kongponents/
  ]
}

If your project does not have a vue.config.ts file and instead uses webpack config files, you can add a loader rule (for example, for babel-loader) similar to the following (only showing the relevant entries)

js
// webpack.config.js

module.exports = (env) => {
  return {
    module: {
      loaders: [
        // transpile Kongponents packages
        {
          test: /\.js$/,
          include: /(node_modules)\/(@kong\/kongponents)/,
          loader: 'babel-loader',
        },
        // process all .js files, but ignore all other node_modules not listed above
        {
          test: /\.js$/,
          exclude: /(node_modules)/,
          loader: 'babel-loader'
        },
      ]
    }
  }
}

Using Kongponents from CDN ​

You can also use Kongponents in a project where there is no build system as long as Vue is included on the page.

NOTE

You must import the CSS from the @kong/kongponents package along with Vue.

Example ​

html
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script src="https://unpkg.com/@kong/kongponents@8/dist/kongponents.umd.js"></script>
<link href="https://unpkg.com/@kong/kongponents@8/dist/style.css" rel="stylesheet" />

<div id="app">
  <k-button appearance="primary" v-on:click="count += 1" icon="plus">Add</k-button>
  <p>Click count: {{ count }}</p>
</div>

<script>
  const {
    createApp
  } = Vue
  const components = Kongponents
  createApp({
    components: {
      KButton: components.KButton
    },
    data() {
      return {
        count: 1
      }
    }
  }).mount('#app')
</script>

Released under the Apache-2.0 License.