my-k-widget
v1.0.0
Published
React widget published as an npm package and also buildable as an embeddable script for non-React hosts.
Readme
konsuld-widget
React widget published as an npm package and also buildable as an embeddable script for non-React hosts.
Install (as npm package)
npm install konsuld-widgetUse in a React app
import { KonsuldWidget } from 'konsuld-widget';
export default function Example() {
return (
<KonsuldWidget
height={600}
width="100%"
embedUrl="http://localhost:3000/embed/widget"
className="my-widget"
/>
);
}Props:
height(number | string) default:600width(number | string) default:"100%"- The widget iframe URL is hardcoded to
https://dev.konsuld.app/embed/widget. className(string)style(React.CSSProperties)
Use as an embeddable script (non-React host)
- Build the script bundle:
npm run build:widgetThis outputs widget/index.js.
- Include the script and a mount element in your page:
<div class="konsuld-widget"></div>
<script src="/path/to/widget/index.js"></script>The script finds all elements with class konsuld-widget and mounts the default widget into each.
The embed URL is not configurable at runtime and always points to the production endpoint.
Local development
- Start CRA demo app:
npm start - Build npm package (CJS/ESM/types to
dist/):npm run lib:build - Watch library during development:
npm run lib:watch - Build embeddable script (to
widget/):npm run build:widget
Link locally into another app (for rapid iteration):
# in konsuld-widget
npm run lib:build
npm link
# in another React app
npm link konsuld-widgetRestart the other app’s dev server if the linker doesn’t pick up metadata changes.
Alternatively, install via a tarball for a more realistic test:
npm run lib:build
npm pack
# then in the other app
npm install /absolute/path/to/konsuld-widget-<version>.tgzBuild & publish
- Library build (npm package output):
npm run lib:build→ outputsdist/index.js(ESM),dist/index.cjs(CJS), anddist/index.d.ts(types)
- Embeddable script build:
npm run build:widget→ outputs towidget/
Publish to npm:
npm version patch # or minor/major
npm publish # ensure you’re logged in: npm loginProject details
- Source entry for library:
src/index.ts(re-exports fromsrc/lib/KonsuldWidget.tsx) - Script entry:
src/index.tsx(auto-mounts widget into.konsuld-widgetelements) - Package entry points (
package.json):exports.import:dist/index.jsexports.require:dist/index.cjstypes:dist/index.d.ts
- Peer deps:
react >= 17,react-dom >= 17
Note: Avoid duplicate React installs when linking locally. If you see hook/renderer mismatch errors, ensure your host app resolves a single version of react and react-dom.
