├── .nvmrc ├── apps ├── .gitkeep └── geometricpanda │ ├── src │ ├── assets │ │ └── .gitkeep │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── polyfills.ts │ ├── main.tsx │ ├── index.html │ ├── app │ │ ├── star.svg │ │ ├── app.spec.tsx │ │ ├── logo.svg │ │ └── app.tsx │ └── stories │ │ ├── iframe.stories.mdx │ │ └── badges.stories.mdx │ ├── .babelrc │ ├── babel-jest.config.json │ ├── .storybook │ ├── preview-head.html │ ├── main.js │ ├── tsconfig.json │ ├── preview.ts │ └── webpack.config.js │ ├── jest.config.js │ ├── tsconfig.json │ ├── tsconfig.spec.json │ ├── .eslintrc.json │ ├── .browserslistrc │ └── tsconfig.app.json ├── libs ├── .gitkeep ├── storybook-addon-badges │ ├── .npmignore │ ├── src │ │ ├── register.js │ │ ├── index.ts │ │ ├── preset.js │ │ └── lib │ │ │ ├── blocks │ │ │ ├── __snapshots__ │ │ │ │ └── badge.spec.tsx.snap │ │ │ ├── withBadgeTooltip.tsx │ │ │ ├── badge.tsx │ │ │ └── badges.tsx │ │ │ ├── register.tsx │ │ │ ├── manager.tsx │ │ │ ├── types.ts │ │ │ ├── helpers │ │ │ ├── helpers.ts │ │ │ └── helpers.spec.ts │ │ │ └── shared.ts │ ├── media │ │ ├── icon.png │ │ └── screenshot.png │ ├── .babelrc │ ├── babel-jest.config.json │ ├── tsconfig.spec.json │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── .eslintrc.json │ ├── jest.config.js │ ├── LICENCE.md │ ├── package.json │ └── README.md └── storybook-addon-iframe │ ├── src │ ├── register.js │ ├── index.ts │ ├── lib │ │ ├── blocks │ │ │ ├── index.ts │ │ │ ├── iframe.tsx │ │ │ ├── __snapshots__ │ │ │ │ └── iframe.spec.tsx.snap │ │ │ └── iframe-container.tsx │ │ ├── layouts │ │ │ ├── index.ts │ │ │ ├── __snapshots__ │ │ │ │ ├── generic-layout.spec.tsx.snap │ │ │ │ └── embedded-iframe-layout.spec.tsx.snap │ │ │ ├── generic-layout.tsx │ │ │ └── embedded-iframe-layout.tsx │ │ ├── icons │ │ │ ├── index.ts │ │ │ ├── not-found.tsx │ │ │ ├── error.tsx │ │ │ └── speed.tsx │ │ ├── shared.ts │ │ ├── register.tsx │ │ └── manager.tsx │ └── preset.js │ ├── media │ ├── icon.png │ └── screenshot.png │ ├── .babelrc │ ├── babel-jest.config.json │ ├── tsconfig.spec.json │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── .eslintrc.json │ ├── jest.config.js │ ├── package.json │ └── README.md ├── tools ├── generators │ └── .gitkeep └── tsconfig.tools.json ├── .prettierrc ├── babel.config.json ├── .netlify └── state.json ├── media └── header.png ├── .prettierignore ├── jest.preset.js ├── jest.config.js ├── .storybook ├── tsconfig.json ├── main.js └── webpack.config.js ├── .editorconfig ├── .github ├── workflows │ ├── inclusive-language.yml │ └── codeql-analysis.yml └── ISSUE_TEMPLATE │ ├── 4-security-issue-disclosure.md │ ├── 2-feature-request.md │ ├── 3-docs-bug.md │ └── 1-bug-report.md ├── SECURITY.md ├── .gitignore ├── tsconfig.base.json ├── .eslintrc.json ├── nx.json ├── README.md ├── package.json ├── CHANGELOG.md ├── .circleci └── config.yml ├── workspace.json └── PROJECT_ATTRIBUTION.md /.nvmrc: -------------------------------------------------------------------------------- 1 | 14 2 | -------------------------------------------------------------------------------- /apps/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /libs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tools/generators/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/geometricpanda/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /libs/storybook-addon-badges/.npmignore: -------------------------------------------------------------------------------- 1 | media 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } 4 | -------------------------------------------------------------------------------- /babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [], 3 | "babelrcRoots": ["*"] 4 | } 5 | -------------------------------------------------------------------------------- /.netlify/state.json: -------------------------------------------------------------------------------- 1 | { 2 | "siteId": "f67daf6a-79f7-49b2-a6f4-f5aa096a7bb2" 3 | } -------------------------------------------------------------------------------- /libs/storybook-addon-badges/src/register.js: -------------------------------------------------------------------------------- 1 | require('./storybook-addon-badges.umd.js'); 2 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/src/register.js: -------------------------------------------------------------------------------- 1 | require('./storybook-addon-iframe.umd.js'); 2 | -------------------------------------------------------------------------------- /media/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimdrury/geometricpanda/HEAD/media/header.png -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | 3 | /dist 4 | /coverage 5 | -------------------------------------------------------------------------------- /jest.preset.js: -------------------------------------------------------------------------------- 1 | const nxPreset = require('@nrwl/jest/preset'); 2 | 3 | module.exports = { ...nxPreset }; 4 | -------------------------------------------------------------------------------- /apps/geometricpanda/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | }; 4 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/register'; 2 | export { ADDON_ID } from './lib/shared'; 3 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/src/lib/blocks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './iframe'; 2 | export * from './iframe-container'; 3 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | const { getJestProjects } = require('@nrwl/jest'); 2 | 3 | module.exports = { projects: getJestProjects() }; 4 | -------------------------------------------------------------------------------- /apps/geometricpanda/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimdrury/geometricpanda/HEAD/apps/geometricpanda/src/favicon.ico -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/src/lib/layouts/index.ts: -------------------------------------------------------------------------------- 1 | export * from './embedded-iframe-layout'; 2 | export * from './generic-layout'; 3 | -------------------------------------------------------------------------------- /libs/storybook-addon-badges/media/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimdrury/geometricpanda/HEAD/libs/storybook-addon-badges/media/icon.png -------------------------------------------------------------------------------- /libs/storybook-addon-badges/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/types'; 2 | export * from './lib/shared'; 3 | export * from './lib/register'; 4 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/media/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimdrury/geometricpanda/HEAD/libs/storybook-addon-iframe/media/icon.png -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/src/lib/icons/index.ts: -------------------------------------------------------------------------------- 1 | export * from './error'; 2 | export * from './not-found'; 3 | export * from './speed'; 4 | -------------------------------------------------------------------------------- /libs/storybook-addon-badges/media/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimdrury/geometricpanda/HEAD/libs/storybook-addon-badges/media/screenshot.png -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/media/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimdrury/geometricpanda/HEAD/libs/storybook-addon-iframe/media/screenshot.png -------------------------------------------------------------------------------- /libs/storybook-addon-badges/src/preset.js: -------------------------------------------------------------------------------- 1 | function managerEntries(entry = []) { 2 | return [...entry, require.resolve('./storybook-addon-badges.esm.js')]; 3 | } 4 | 5 | module.exports = { managerEntries }; 6 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/src/preset.js: -------------------------------------------------------------------------------- 1 | function managerEntries(entry = []) { 2 | return [...entry, require.resolve('./storybook-addon-iframe.esm.js')]; 3 | } 4 | 5 | module.exports = { managerEntries }; 6 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/src/lib/blocks/iframe.tsx: -------------------------------------------------------------------------------- 1 | import { styled } from '@storybook/theming' 2 | 3 | export const IFrame = styled.iframe` 4 | background-color: white; 5 | border: 0; 6 | height: 100%; 7 | width: 100%; 8 | `; 9 | -------------------------------------------------------------------------------- /apps/geometricpanda/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@nrwl/react/babel"], 3 | "plugins": [ 4 | [ 5 | "styled-components", 6 | { 7 | "pure": true, 8 | "ssr": true 9 | } 10 | ] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /.storybook/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "exclude": [ 4 | "../**/*.spec.js", 5 | "../**/*.spec.ts", 6 | "../**/*.spec.tsx", 7 | "../**/*.spec.jsx" 8 | ], 9 | "include": ["../**/*"] 10 | } 11 | -------------------------------------------------------------------------------- /.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | stories: [], 3 | addons: [ 4 | '@storybook/addon-essentials', 5 | '@storybook/addon-docs', 6 | '@geometricpanda/storybook-addon-badges', 7 | '@geometricpanda/storybook-addon-iframe', 8 | ], 9 | }; 10 | -------------------------------------------------------------------------------- /apps/geometricpanda/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Polyfill stable language features. These imports will be optimized by `@babel/preset-env`. 3 | * 4 | * See: https://github.com/zloirock/core-js#babel 5 | */ 6 | import 'core-js/stable'; 7 | import 'regenerator-runtime/runtime'; 8 | -------------------------------------------------------------------------------- /libs/storybook-addon-badges/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@nrwl/react/babel"], 3 | "plugins": [ 4 | [ 5 | "styled-components", 6 | { 7 | "pure": true, 8 | "ssr": true, 9 | "displayName": false 10 | } 11 | ] 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@nrwl/react/babel"], 3 | "plugins": [ 4 | [ 5 | "styled-components", 6 | { 7 | "pure": true, 8 | "ssr": true, 9 | "displayName": false 10 | } 11 | ] 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /apps/geometricpanda/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // When building for production, this file is replaced with `environment.prod.ts`. 3 | 4 | export const environment = { 5 | production: false, 6 | }; 7 | -------------------------------------------------------------------------------- /apps/geometricpanda/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import App from './app/app'; 5 | 6 | ReactDOM.render( 7 | 8 | 9 | , 10 | document.getElementById('root') 11 | ); 12 | -------------------------------------------------------------------------------- /tools/tsconfig.tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "compilerOptions": { 4 | "outDir": "../dist/out-tsc/tools", 5 | "rootDir": ".", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": ["node"] 9 | }, 10 | "include": ["**/*.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /apps/geometricpanda/babel-jest.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/preset-env", 5 | { 6 | "targets": { 7 | "node": "current" 8 | } 9 | } 10 | ], 11 | "@babel/preset-typescript", 12 | "@babel/preset-react" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /libs/storybook-addon-badges/babel-jest.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/preset-env", 5 | { 6 | "targets": { 7 | "node": "current" 8 | } 9 | } 10 | ], 11 | "@babel/preset-typescript", 12 | "@babel/preset-react" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/babel-jest.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/preset-env", 5 | { 6 | "targets": { 7 | "node": "current" 8 | } 9 | } 10 | ], 11 | "@babel/preset-typescript", 12 | "@babel/preset-react" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /apps/geometricpanda/.storybook/preview-head.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /libs/storybook-addon-badges/src/lib/blocks/__snapshots__/badge.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Badge should render a styled badge from config 1`] = ` 4 | 7 | 10 | badge 11 | 12 | 13 | `; 14 | -------------------------------------------------------------------------------- /.github/workflows/inclusive-language.yml: -------------------------------------------------------------------------------- 1 | name: Check Inclusive Language 2 | on: [issues, pull_request] 3 | jobs: 4 | check-language: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - name: check-language 8 | uses: benhayehudi/inclusive-language-github-action@master 9 | env: 10 | GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 11 | -------------------------------------------------------------------------------- /apps/geometricpanda/.storybook/main.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-var-requires 2 | const rootMain = require('../../../.storybook/main'); 3 | 4 | // Use the following syntax to add addons! 5 | // rootMain.addons.push(''); 6 | rootMain.stories.push(...['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)']) 7 | 8 | module.exports = rootMain; 9 | -------------------------------------------------------------------------------- /libs/storybook-addon-iframe/src/lib/blocks/__snapshots__/iframe.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`iFrame should snapshot 1`] = ` 4 | .c0 { 5 | background-color: white; 6 | border: 0; 7 | height: 100%; 8 | width: 100%; 9 | } 10 | 11 |