GithubHelp home page GithubHelp logo

kennethaasan / asyncapi-react Goto Github PK

View Code? Open in Web Editor NEW

This project forked from asyncapi/asyncapi-react

0.0 0.0 0.0 12.66 MB

React component for rendering documentation from your specification in real-time in the browser. It also provides a WebComponent and bundle for Angular and Vue

Home Page: https://asyncapi.github.io/asyncapi-react/

License: Apache License 2.0

Shell 0.39% JavaScript 3.42% TypeScript 94.50% CSS 0.41% HTML 1.29%

asyncapi-react's Introduction

AsyncAPI React Component

React component for AsyncAPI specification. Available also as a Web Component, but not only.

npm Gitpod ready-to-code

Overview

The official React component for AsyncAPI specification. It allows you to render the documentation of your asynchronous API provided in the AsyncAPI specification format and validate this specification. You can fully restyle the component using your own styles.

Prerequisites

  • react (version 16.8.0 or higher)

Installation

Run this command to install the component in your project:

npm install --save @asyncapi/react-component

Check out this sandbox application that uses the React component:

Edit asyncapi-react-component-in-action

Using in React

Check a simple example which shows passing the inline AsyncAPI specification with custom configurations:

import * as React from "react";
import { render } from "react-dom";
import AsyncApiComponent, { ConfigInterface } from "@asyncapi/react-component";

const schema = `
asyncapi: '2.0.0'
info:
  title: Example
  version: '0.1.0'
channels:
  example-channel:
    subscribe:
      message:
        payload:
          type: object
          properties:
            exampleField:
              type: string
            exampleNumber:
              type: number
            exampleDate:
              type: string
              format: date-time
`;

const config: ConfigInterface = {
  schemaID: 'custom-spec',
  show: {
    operations: false,
    errors: false,
  },
};

const App = () => <AsyncApiComponent schema={schema} config={config} />;

render(<App />, document.getElementById("root"));

Using in other technologies

To check how to use web-component or use a component in other technologies see:

Props

The list of props for the AsyncAPI React component includes:

  • schema: string | AsyncAPIDocument | object | FetchingSchemaInterface

    The schema property is required and contains AsyncAPI specification. Use the string type, the AsyncAPIDocument type, parsed specification as JS object from AsyncAPI Parser or the FetchingSchemaInterface object to fetch the schema from an external resource. For more information on what it contains and what it should look like, read AsyncAPI Specification.

  • config?: Partial<ConfigInterface>

    The config property is optional and contains configuration for the AsyncAPI component. For more information on the available configuration options, read the Configuration Modification document. This property is concatenated with the default configuration.

    NOTE: The Partial<T> type means that every field in the T type is optional.

Features

For a list and description of features offered by the AsyncAPI React component, see this directory.

Styles

Default styles

To use default styles import them as follows:

import "@asyncapi/react-component/styles/default.css";
// or minified version
import "@asyncapi/react-component/styles/default.min.css";

Custom styles

The AsyncAPI React component does not set any global fonts. This component allows the usage of your custom font-family and other styling.

This can be done by defining the styles in a file or inline using a <style> tag in the <head> section of the page where you are using AsyncAPI React component.

Example custom styles (defined in the styles/custom.css file):

html {
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  line-height: 1.15;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;
}

If you are using the component in a project that uses a bundler like Webpack, don't forget to import the custom styles.

import "styles/custom.css";
import "@asyncapi/react-component/styles/default.min.css";

If you are using the standalone bundle, you can put the custom styles as a style sheet link or as an inline style in the <head> section of the HTML code:

 <head>
   <!-- Custom style sheet -->
   <link rel="stylesheet" href="./styles/custom.css">

   <!-- OR as inline style -->
   <style>
     html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%};
     body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji};
   </style>
   
   <link rel="stylesheet" href="https://unpkg.com/@asyncapi/react-component@latest/styles/default.min.css">
   
   ...
 </head>

Custom logo

The AsyncAPI component supports the option to use a custom logo. By using the x-logo custom extension in the InfoObject, a logo will be shown in the top left corner.

NOTE: The logo will only appear if the sidebar option is enabled.

asyncapi: 2.2.0
info:
  title: Account Service
  version: 1.0.0
  description: This service is in charge of processing user signups.
  x-logo: 'https://raw.githubusercontent.com/asyncapi/spec/master/assets/logo.png'
channels:
  ...

Playground

This repository comes in with a Playground application. Test it to see the component in action and play with it before you use it in your application.

You can also run the Playground application locally by following this instruction from the development guide.

Modules

The @asyncapi/react-component package has 3 crafted JS modules to be used in various environments:

  • esm (ECMAScript Modules) is intended for use in a single-page applications with predefined environments like create-react-app that are capable of resolving dependencies (via Webpack, Browserify, etc). It can also be used on the server side (for tasks like Server Side Rendering) when the application is using esm.
  • cjs (CommonJS Modules) similar uses as for esm modules, but using CommonJS modules.
  • umd (Universal Module Definition) is a dependency-free module that includes everything you need to serve AsyncAPI documentation (however React and ReactDOM dependencies must be served separately) on a single-page application that can't resolve npm module dependencies or in normal HTML page. We have 2 types of minified umd bundles, with and without AsyncAPI Parser in paths:
    • @asyncapi/react-component/browser/index.js
    • @asyncapi/react-component/browser/without-parser.js

Development

For information on how to set up a development environment, write and run tests, follow the naming and architecture convention defined for the project in the Development Guide.

Contribution

If you have a feature request, add it as an issue or propose changes in a pull request (PR). If you create a feature request, use the dedicated Feature request issue template. When you create a PR, follow the contributing rules described in the CONTRIBUTING.md document.

If you have a bug to report, reproduce it in an online code editor. For example, use CodeSandbox. Attach the link to the reproduced bug to your issue. Log the bug using the Bug report template.

Credits

The project was originally developed under the Kyma project, in 2019 it was moved under AsyncAPI Initiative.

Contributors

Thanks goes to these wonderful people (emoji key):

Maciej UrbaΕ„czyk
Maciej UrbaΕ„czyk

πŸ’» πŸ“– πŸ€” 🚧 πŸ‘€ ⚠️ πŸš‡ πŸ› πŸ’‘
Karolina Zydek
Karolina Zydek

πŸ“– πŸ‘€ 🚧
Agata
Agata

πŸ’» 🚧
Lukasz Gornicki
Lukasz Gornicki

πŸ“– πŸ’‘ πŸ€” πŸ’» πŸš‡ πŸ› πŸ“ 🚧
Mateusz PuczyΕ„ski
Mateusz PuczyΕ„ski

πŸ’» πŸ“– πŸ€” 🚧 πŸ‘€ ⚠️
Hesyar Uzuner
Hesyar Uzuner

πŸ› πŸ’»
Marcus Ilgner
Marcus Ilgner

πŸ› πŸ’»
Dominik Henneke
Dominik Henneke

πŸ’»
Oliver Sand
Oliver Sand

πŸ’»
Jakub Iwanowski
Jakub Iwanowski

πŸ’»
depimomo
depimomo

⚠️
Sanskar Patro
Sanskar Patro

πŸ’»
danielchu
danielchu

πŸš‡
Fran MΓ©ndez
Fran MΓ©ndez

πŸ’» 🚧
Claude Gex
Claude Gex

πŸ’» πŸ“¦ πŸ€”
c-pius
c-pius

πŸ’» πŸ›
Viacheslav Turovskyi
Viacheslav Turovskyi

πŸ“– πŸ’»
195858
195858

πŸ’»
Aayush Kumar Sahu
Aayush Kumar Sahu

πŸ’»
Dale Lane
Dale Lane

πŸ’» πŸ€”
Michal Gornicki
Michal Gornicki

πŸ“–
Samriddhi
Samriddhi

πŸ’»
W0nderMuffin
W0nderMuffin

πŸ’»
Andrea Falzetti
Andrea Falzetti

πŸ’»
Dominik Schwank
Dominik Schwank

πŸ’»
Kai Szybiak
Kai Szybiak

πŸ’»
Ludovic Dussart
Ludovic Dussart

πŸ’»
Heiko Henning
Heiko Henning

πŸ’»
thim81
thim81

πŸ’»
Marcelo Avancini
Marcelo Avancini

πŸ’»
Sergey Shishkin
Sergey Shishkin

πŸ’»
Takakazu Fu
Takakazu Fu

πŸ’»
Jan
Jan

πŸ’»
Ace
Ace

πŸ’»
Jonas Lagoni
Jonas Lagoni

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

asyncapi-react's People

Contributors

asyncapi-bot avatar dependabot[bot] avatar magicmatatjahu avatar derberg avatar allcontributors[bot] avatar fmvilas avatar kennethaasan avatar parasss19 avatar akucharska avatar jonaslagoni avatar dhenneke avatar greenrover avatar hesyar avatar jakubiwanowski avatar hudymi avatar raphaelvrossi avatar syedzubeen avatar 195858 avatar aayushmau5 avatar acethecreator avatar akshatnema avatar robintail avatar gexclaude avatar hhogg avatar bizordec avatar milgner avatar ktorz avatar fox32 avatar pkosiec avatar wawrzyn321 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.