@ahnseungchan/webviewkit
v1.0.8
Published
Core WebView functionality for stack-based navigation
Maintainers
Readme
WebViewKit
A modern React library for building stack-based navigation in WebView applications, providing smooth transitions and native-like navigation experience.
Features
- 🚀 Stack-based Navigation: Native-like navigation with push/pop transitions
- 🎨 Smooth Animations: GSAP-powered animations for fluid page transitions
- 📱 Mobile-First: Designed specifically for WebView and mobile applications
- 🔧 TypeScript Support: Full TypeScript support with comprehensive type definitions
- 🎯 Flexible: Customizable animations, layouts, and navigation behavior
Installation
npm install @webviewkit
# or
yarn add @webviewkit
# or
pnpm add @webviewkitQuick Start
import React from "react";
import { StackRouterProvider } from "@webviewkit";
function App() {
return (
<StackRouterProvider
maxWidth="600px"
Activities={[
{
path: "/",
element: <HomePage />,
},
{
path: "/about",
element: <AboutPage />,
},
]}
initialActivity={{ path: "/", element: <HomePage /> }}
/>
);
}Usage
Basic Navigation
import { useStackRouter } from "@webviewkit/core";
function HomePage() {
const { push, back } = useStackRouter();
return (
<div>
<h1>Home</h1>
<button onClick={() => push("/about")}>Go to About</button>
<button onClick={back}>Back</button>
</div>
);
}History Management
import { history } from "@webviewkit";
// Navigate to a new page
await history.push("/new-page", { data: "some data" });
// Replace current page
await history.replace("/replacement-page", { data: "replacement data" });
// Go back
await history.back();
// Go forward
await history.forward();API Reference
StackRouterProvider Props
| Prop | Type | Default | Description |
| ----------------- | ------------------------------------------------- | --------- | ------------------------------------- |
| maxWidth | string | "600px" | Maximum width of the layout container |
| isShowHeader | boolean | true | Whether to show the header |
| Activities | Array<{path: string, element: React.ReactNode}> | [] | Array of available routes |
| initialActivity | {path: string, element: React.ReactNode} | - | Initial route to display |
useStackRouter Hook
Returns an object with navigation methods:
currentPath: Current active pathcurrentState: Current history statepush(path, data?): Navigate to a new pagereplace(path, data?): Replace current pageback(): Go back to previous pageforward(): Go forward to next page
History API
history.push(path, data?): Add new history entryhistory.replace(path, data?): Replace current history entryhistory.back(): Go back to previous entryhistory.forward(): Go forward to next entryhistory.go(delta): Go to specific history entryhistory.getCurrentState(): Get current history statehistory.addListener(listener): Add history change listener
Examples
See the packages/browser directory for complete examples.
Development
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Run tests
pnpm test
# Run linting
pnpm lintContributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
