React wrapper for sellnov/ksef-js. Provides context, hooks and state management for KSeF API integration.
npm install sellnov/ksef-react-js sellnov/ksef-jsWrap your application (or a part of it) with KSeFProvider.
import { KSeFProvider } from 'sellnov/ksef-react-js';
const config = {
test: true, // Use test environment
nip: '1111111111'
};
function App() {
return (
<KSeFProvider config={config}>
<MyComponent />
</KSeFProvider>
);
}Use the useKSeF hook to manage authentication state and perform login.
import { useKSeF } from 'sellnov/ksef-react-js';
function LoginButton() {
const { login, isAuthenticated, isLoading, error } = useKSeF();
const handleLogin = async () => {
try {
await login('1111111111', 'YOUR_KSEF_TOKEN');
} catch (err) {
console.error('Login failed', err);
}
};
if (isAuthenticated) return <p>Logged in!</p>;
return (
<button onClick={handleLogin} disabled={isLoading}>
{isLoading ? 'Logging in...' : 'Login to KSeF'}
</button>
);
}Use useKSeFInvoices for reactive invoice listing.
import { useKSeFInvoices } from 'sellnov/ksef-react-js';
function InvoiceList() {
const { invoices, isLoading, error, fetchInvoices } = useKSeFInvoices({
// Initial filters
queryCriteria: {
subjectType: 'subject1',
type: 'incremental'
}
});
if (isLoading) return <div>Loading invoices...</div>;
if (error) return <div>Error: {error.message}</div>;
return (
<div>
<button onClick={() => fetchInvoices()}>Refresh</button>
<ul>
{invoices.map(inv => (
<li key={inv.ksefNumber}>
{inv.ksefNumber} - {inv.issuedDate}
</li>
))}
</ul>
</div>
);
}config: Configuration object passed toKSeFClient.children: React nodes.
Returns:
client: The rawKSeFClientinstance.isAuthenticated: boolean.session: Current session metadata.isLoading: boolean.error: Last error object.login(nip, token): Login function.logout(): Terminate current session.refreshSession(): Force refresh session status.
Returns:
invoices: Array of invoice headers.isLoading: boolean.error: Error object.fetchInvoices(filters, params): Trigger manual fetch.filters/setFilters: State for query filters.params/setParams: State for query params (e.g. pagination).
MIT