UNPKG

@lonelyplanet/dotcom-core

Version:

This package is meant to house some of our more common UI and shared libs across dotcom applications.

72 lines (52 loc) 2.22 kB
# Dotcom Core This package is meant to house some of our more common UI and shared libs across dotcom applications. ### Install ``` npm i ``` ### Build ``` npm run build ``` Building this application generates 3 things, a `dist` folder with commonjs modules, a `dist-es` folder with ES Next modules, and `lib` which contains webpack bundles for including core JS and CSS assets in other applications. You can use dotcom-core in multiple ways. #### Regular imports ```tsx import { Toast } from "@lonelyplanet/dotcom-core"; export () => <Toast />; ``` ### Global Components There are 2 parts to using global components. #### Server Side Rendering Rendering components on the server side in an external application is simple. ```tsx // app/layout.tsx import { ssr } from "@lonelyplanet/dotcom-core/dist/classes/runtime"; {ssr({ component: "globalautocomplete", props: { foo: "bar" } })} ``` There is a registry of components to choose from in `src/registry`. What the `ssr` method does is render your component with `renderToString`, and then calls `renderToStaticMarkup` to generate something like... ```html <div data-lpui-component="globalautocomplete" data-lpui-component-props="{&quot;foo&quot;:&quot;bar&quot;}" > <div data-reactroot=""><!-- your component --></div> </div> ``` #### Client Side In order to mount the components on the client side, you can simply include the latest version of dotcom-core from s3. ```html <script async src="https://assets.staticlp.com/dotcom-core/1.0.0/core.min.js" /> <link rel="stylesheet" href="https://assets.staticlp.com/dotcom-core/1.0.0/core.css" /> ``` We will also be regularly updating a `https://assets.staticlp.com/dotcom-core/version.json` file on s3 so that a middleware can determine the latest version of the header and footer, and automatically inject the latest scripts. ### Local Development ``` npm run dev ``` This will run `webpack` with hot mode enabled on `localhost:8080` by default. You can then add the assets to `dotcom-web` or any other application you're wanting to test simply with... ```html <script async src="http://localhost:8080/assets/core.js" /> <link rel="stylesheet" href="http://localhost:8080/assets/core.css" /> ```