MCPcopy
hub / github.com/nilbuild/driver.js

github.com/nilbuild/driver.js @1.6.0 sqlite

repository ↗ · DeepWiki ↗ · release 1.6.0 ↗
117 symbols 416 edges 51 files 0 documented · 0%
README

Driver.js

jsdelivr hits downloads

Powerful, highly customizable library for Product Tours and Feature Introductions

No external dependencies, light-weight, supports all major browsers and highly customizable

  • Simple: is simple to use and has no external dependency at all
  • Light-weight: is just 5kb gzipped as compared to other libraries which are +12kb gzipped
  • Highly customizable: has a powerful API and can be used however you want
  • Highlight anything: highlight any (literally any) element on page
  • Feature introductions: create powerful feature introductions for your web applications
  • Focus shifters: add focus shifters for users
  • User friendly: Everything is controllable by keyboard
  • TypeScript: Written in TypeScript
  • Consistent behavior: usable across all browsers
  • MIT Licensed: free for personal and commercial use

Documentation

For demos and documentation, visit driverjs.com

So, yet another tour library?

No, it's more than a tour library. Tours are just one of the many use-cases. Driver.js can be used wherever you need some sort of overlay for the page; some common usecases could be: highlighting a page component when user is interacting with it to keep them focused, providing contextual help e.g. popover with dimmed background when user is filling a form, using it as a focus shifter to bring user's attention to some component on page, using it to simulate those "Turn off the Lights" widgets that you might have seen on video players online, usage as a simple modal, and of-course product tours etc.

Driver.js is written in Vanilla TypeScript, has zero dependencies and is highly customizable. It has several options allowing you to change how it behaves and also provides you the hooks to manipulate the elements as they are highlighted, about to be highlighted, or deselected.

Also, comparing the size of Driver.js with other libraries, it's the most light-weight, it is just ~5kb gzipped while others are 12kb+.

Developing locally

The library lives in src/. To try your changes against a set of live examples, run the playground — an Astro app in playground/ that imports the library straight from source, so edits hot-reload instantly:

pnpm install                 # install the library's dev dependencies
pnpm run playground:install  # one-time install of the playground's dependencies
pnpm dev                     # start the playground

Each example lives in its own file under playground/src/examples/ and shows up as a page in the sidebar. To add one, drop an entry into the relevant group (highlight.ts, popover.ts, tour.ts, api.ts).

Other useful scripts:

pnpm build   # type-check and build the distributable library into dist/
pnpm test    # run the unit tests (Vitest)

Contributions

Feel free to submit pull requests, create issues or spread the word.

License

MIT © Kamran Ahmed

Extension points exported contracts — how you extend this code

Driver (Interface)
(no doc)
src/driver.ts
Window (Interface)
(no doc)
docs/src/env.d.ts
Window (Interface)
(no doc)
docs/src/components/Analytics/analytics.ts

Core symbols most depended-on inside this repo

createDriver
called by 118
tests/utils.ts
getConfig
called by 79
src/config.ts
driver
called by 74
src/driver.ts
getState
called by 66
src/state.ts
navButton
called by 44
tests/utils.ts
nextFrame
called by 30
tests/utils.ts
popoverTitle
called by 20
tests/utils.ts
setState
called by 18
src/state.ts

Shape

Function 114
Interface 3

Languages

TypeScript100%

Modules by API surface

src/driver.ts12 symbols
tests/utils.ts9 symbols
src/position.ts8 symbols
src/overlay.ts8 symbols
src/events.ts8 symbols
tests/events.test.ts7 symbols
src/utils.ts7 symbols
src/highlight.ts6 symbols
tests/popover.test.ts5 symbols
src/popover.ts4 symbols
src/config.ts4 symbols
tests/scroll.test.ts3 symbols

Dependencies from manifests, versioned

@arethetypeswrong/cli0.18.3 · 1×
@astrojs/check0.9.9 · 1×
@astrojs/markdown-remark7.2.0 · 1×
@astrojs/mdx7.0.0 · 1×
@astrojs/react6.0.0 · 1×
@astrojs/sitemap3.7.3 · 1×
@microsoft/api-extractor7.58.9 · 1×
@tailwindcss/typography0.5.20 · 1×
@tailwindcss/vite4.3.1 · 1×
@types/jsdom28.0.3 · 1×
@types/node26.0.0 · 1×
@types/react19.2.17 · 1×

For agents

$ claude mcp add driver.js \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact