UNPKG

google-chat-cards

Version:

Unofficial helper package to quickly build Google Chat v2 Cards for Google Chat API and webhooks.

60 lines (50 loc) 2.9 kB
# Google Chat Cards This package provides a simple interface to create [Google Chat Card](https://developers.google.com/chat/api/reference/rest/v1/cards) objects using a simple chained syntax. For example, the following creates a robust card with a header, and a section containing rich-text with an icon, and a group of buttons that link the user to some URLs: ```js import GoogleChatCard, { GoogleChatBuiltInIcon, GoogleChatImageType } from 'google-chat-cards'; ... let card = new GoogleChatCard() .header('My Cool Chat Card', 'Subtitles, yes!', GoogleChatImageType.circle, 'https://placekitten.com/128/128') .section('Information') .decoratedText( 'Lorem <b>ipsum</b> <i>dolor<i> sit amet, <a href="https://google.com">consectetur</a> adipiscing elit.' true, //wrap 'Fancy Text!', //top label null, //bottom label GoogleChatImageType.square, //icon crop GoogleChatBuiltInIcon.airplane //built-in icon ) .button('Search', 'https://google.com') .button('Build', 'https://appku.com'); ... ``` It's even easy to send your card to a Google Chat webhook! ```js await card.send('https://chat.googleapis.com/v1/spaces/XXXX/messages?key=XXXXXX'); ``` To keep your card organized, split widgets with a new `.section()`. You can also add a `.divider()` between sections. ## Supported Features Currently this utility supports creating cards with the following widgets: - [x] Headers ([`header`](https://developers.google.com/chat/api/reference/rest/v1/cards#cardheader)) - [x] Sections ([`sections`](https://developers.google.com/chat/api/reference/rest/v1/cards#section)) - [x] Text Paragraphs ([`textParagraph`](https://developers.google.com/chat/api/reference/rest/v1/cards#TextParagraph_1)) - [x] Rich-Text Paragraphs w/ Labels and Icons ([`decoratedText`](https://developers.google.com/chat/api/reference/rest/v1/cards#DecoratedText)) - [x] Images ([`image`](https://developers.google.com/chat/api/reference/rest/v1/cards#Image_1)) - [x] Buttons/ButtonList Linked ([`button`](https://developers.google.com/chat/api/reference/rest/v1/cards#button) automatically grouped in a [`buttonList`](https://developers.google.com/chat/api/reference/rest/v1/cards#ButtonList) when added consecutively) ### Future Features The following don't currently have an interface. *Pull requests are welcome.* - [ ] Grid ([`grid`](https://developers.google.com/chat/api/reference/rest/v1/cards#Grid)) - [ ] Column Support [`columnItems`](https://developers.google.com/chat/api/reference/rest/v1/cards#Columns)) ## Install ```sh npm i google-chat-cards #or yarn install google-chat-cards ``` ### Building & Testing This project has no dependencies for runtime, but does for linting `npm run lint` and unit testing `npm test`. To start developing loclaly, you'll need to install the dev-dependencies (`npm i`). Public contributions are welcome.