@govnepal/ui 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ApplicationStatusTracker.d.ts +19 -0
- package/dist/ApplicationStatusTracker.d.ts.map +1 -0
- package/dist/ApplicationStatusTracker.js +16 -0
- package/dist/ApplicationStatusTracker.js.map +1 -0
- package/dist/ApprovalDecisionPanel.d.ts +8 -0
- package/dist/ApprovalDecisionPanel.d.ts.map +1 -0
- package/dist/ApprovalDecisionPanel.js +24 -0
- package/dist/ApprovalDecisionPanel.js.map +1 -0
- package/dist/AuditLogItem.d.ts +18 -0
- package/dist/AuditLogItem.d.ts.map +1 -0
- package/dist/AuditLogItem.js +6 -0
- package/dist/AuditLogItem.js.map +1 -0
- package/dist/BottomNavigation.d.ts +18 -0
- package/dist/BottomNavigation.d.ts.map +1 -0
- package/dist/BottomNavigation.js +6 -0
- package/dist/BottomNavigation.js.map +1 -0
- package/dist/CameraCapture.d.ts +21 -0
- package/dist/CameraCapture.d.ts.map +1 -0
- package/dist/CameraCapture.js +8 -0
- package/dist/CameraCapture.js.map +1 -0
- package/dist/CaptureStatus.d.ts +24 -0
- package/dist/CaptureStatus.d.ts.map +1 -0
- package/dist/CaptureStatus.js +12 -0
- package/dist/CaptureStatus.js.map +1 -0
- package/dist/CitizenProfileCard.d.ts +19 -0
- package/dist/CitizenProfileCard.d.ts.map +1 -0
- package/dist/CitizenProfileCard.js +7 -0
- package/dist/CitizenProfileCard.js.map +1 -0
- package/dist/DataGrid.d.ts +25 -0
- package/dist/DataGrid.d.ts.map +1 -0
- package/dist/DataGrid.js +27 -0
- package/dist/DataGrid.js.map +1 -0
- package/dist/DatePicker.d.ts +23 -0
- package/dist/DatePicker.d.ts.map +1 -0
- package/dist/DatePicker.js +15 -0
- package/dist/DatePicker.js.map +1 -0
- package/dist/DocumentPreview.d.ts +18 -0
- package/dist/DocumentPreview.d.ts.map +1 -0
- package/dist/DocumentPreview.js +6 -0
- package/dist/DocumentPreview.js.map +1 -0
- package/dist/DuplicateMatchWarning.d.ts +16 -0
- package/dist/DuplicateMatchWarning.d.ts.map +1 -0
- package/dist/DuplicateMatchWarning.js +6 -0
- package/dist/DuplicateMatchWarning.js.map +1 -0
- package/dist/ExportAction.d.ts +15 -0
- package/dist/ExportAction.d.ts.map +1 -0
- package/dist/ExportAction.js +11 -0
- package/dist/ExportAction.js.map +1 -0
- package/dist/FeedbackWidget.d.ts +13 -0
- package/dist/FeedbackWidget.d.ts.map +1 -0
- package/dist/FeedbackWidget.js +17 -0
- package/dist/FeedbackWidget.js.map +1 -0
- package/dist/FilterBar.d.ts +26 -0
- package/dist/FilterBar.d.ts.map +1 -0
- package/dist/FilterBar.js +11 -0
- package/dist/FilterBar.js.map +1 -0
- package/dist/OfficerReviewPanel.d.ts +18 -0
- package/dist/OfficerReviewPanel.d.ts.map +1 -0
- package/dist/OfficerReviewPanel.js +7 -0
- package/dist/OfficerReviewPanel.js.map +1 -0
- package/dist/Sidebar.d.ts +16 -0
- package/dist/Sidebar.d.ts.map +1 -0
- package/dist/Sidebar.js +6 -0
- package/dist/Sidebar.js.map +1 -0
- package/dist/generated/statusTaxonomy.js +1 -1
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type StatusId } from "./generated/statusTaxonomy.js";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Application status tracker (components/application-status-tracker.md) — where a citizen's
|
|
5
|
+
* application is in the official status sequence (§7.4), rendered from the taxonomy. The current
|
|
6
|
+
* status is aria-current and stated in words; a status that requires action shows a next-step link
|
|
7
|
+
* beside it — a warning without a way to act is a dead end (§7.3.2).
|
|
8
|
+
*/
|
|
9
|
+
interface TrackerProps {
|
|
10
|
+
/** The taxonomy statuses this service moves through, in order. */
|
|
11
|
+
sequence: StatusId[];
|
|
12
|
+
current: StatusId;
|
|
13
|
+
/** A next-step action, shown beside the current status when it requires action. */
|
|
14
|
+
action?: ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function ApplicationStatusTracker({ sequence, current, action, className }: TrackerProps): import("react").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=ApplicationStatusTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationStatusTracker.d.ts","sourceRoot":"","sources":["../src/ApplicationStatusTracker.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;GAKG;AACH,UAAU,YAAY;IACpB,kEAAkE;IAClE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,OAAO,EAAE,QAAQ,CAAC;IAClB,mFAAmF;IACnF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,wBAAwB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,YAAY,+BA4B9F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cx } from "./cx.js";
|
|
4
|
+
import { useTheme } from "./ThemeProvider.js";
|
|
5
|
+
import { STATUS_TAXONOMY } from "./generated/statusTaxonomy.js";
|
|
6
|
+
export function ApplicationStatusTracker({ sequence, current, action, className }) {
|
|
7
|
+
const { language } = useTheme();
|
|
8
|
+
const currentIndex = sequence.indexOf(current);
|
|
9
|
+
return (_jsx("ol", { className: cx("gov-status-tracker", className), children: sequence.map((id, i) => {
|
|
10
|
+
const entry = STATUS_TAXONOMY[id];
|
|
11
|
+
const label = language === "ne" ? entry.label_ne : entry.label;
|
|
12
|
+
const state = i < currentIndex ? "complete" : i === currentIndex ? "current" : "upcoming";
|
|
13
|
+
return (_jsxs("li", { className: cx("gov-status-tracker__step", state !== "upcoming" && `gov-status-tracker__step--${state}`), "aria-current": state === "current" ? "step" : undefined, children: [_jsx("span", { className: "gov-status-tracker__marker", "aria-hidden": "true", children: state === "complete" ? "✓" : "" }), _jsxs("span", { children: [label, state === "current" && entry.requiresAction && action && (_jsx("span", { style: { display: "block", marginBlockStart: "var(--gov-space-2)" }, children: action }))] })] }, id));
|
|
14
|
+
}) }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=ApplicationStatusTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationStatusTracker.js","sourceRoot":"","sources":["../src/ApplicationStatusTracker.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAiB,MAAM,+BAA+B,CAAC;AAkB/E,MAAM,UAAU,wBAAwB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAgB;IAC7F,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/C,OAAO,CACL,aAAI,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,YAC/C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/D,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YAC1F,OAAO,CACL,cAEE,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,KAAK,KAAK,UAAU,IAAI,6BAA6B,KAAK,EAAE,CAAC,kBACzF,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,aAEtD,eAAM,SAAS,EAAC,4BAA4B,iBAAa,MAAM,YAAE,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAQ,EACxG,2BACG,KAAK,EACL,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,IAAI,MAAM,IAAI,CACxD,eAAM,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,YAAG,MAAM,GAAQ,CAC3F,IACI,KAVF,EAAE,CAWJ,CACN,CAAC;QACJ,CAAC,CAAC,GACC,CACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface ApprovalDecisionPanelProps {
|
|
2
|
+
onApprove: () => void;
|
|
3
|
+
onRequestCorrection: (reason: string) => void;
|
|
4
|
+
onReject: (reason: string) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function ApprovalDecisionPanel({ onApprove, onRequestCorrection, onReject }: ApprovalDecisionPanelProps): import("react").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ApprovalDecisionPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApprovalDecisionPanel.d.ts","sourceRoot":"","sources":["../src/ApprovalDecisionPanel.tsx"],"names":[],"mappings":"AAiBA,UAAU,0BAA0B;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,0BAA0B,+BAoC7G"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Button } from "./Button.js";
|
|
5
|
+
import { ConfirmationDialog } from "./ConfirmationDialog.js";
|
|
6
|
+
import { Textarea } from "./Textarea.js";
|
|
7
|
+
import { useTheme } from "./ThemeProvider.js";
|
|
8
|
+
export function ApprovalDecisionPanel({ onApprove, onRequestCorrection, onReject }) {
|
|
9
|
+
const { language } = useTheme();
|
|
10
|
+
const [pending, setPending] = useState(null);
|
|
11
|
+
const [reason, setReason] = useState("");
|
|
12
|
+
const t = (ne, en) => (language === "ne" ? ne : en);
|
|
13
|
+
const close = () => { setPending(null); setReason(""); };
|
|
14
|
+
return (_jsxs("div", { className: "gov-cluster", children: [_jsx(Button, { type: "button", onClick: onApprove, children: t("निवेदन स्वीकृत गर्नुहोस्", "Approve application") }), _jsx(Button, { variant: "secondary", type: "button", onClick: () => setPending("correction"), children: t("सुधार अनुरोध गर्नुहोस्", "Request correction") }), _jsx(Button, { variant: "destructive", type: "button", onClick: () => setPending("reject"), children: t("निवेदन अस्वीकृत गर्नुहोस्", "Reject application") }), _jsx(ConfirmationDialog, { open: pending !== null, destructive: pending === "reject", title: pending === "reject" ? t("निवेदन अस्वीकृत गर्ने?", "Reject this application?") : t("सुधार अनुरोध गर्ने?", "Request a correction?"), confirmLabel: pending === "reject" ? t("अस्वीकृत गर्नुहोस्", "Reject application") : t("सुधार अनुरोध गर्नुहोस्", "Request correction"), onCancel: close, onConfirm: () => {
|
|
15
|
+
if (!reason.trim())
|
|
16
|
+
return; // A reason is required (§9.1).
|
|
17
|
+
if (pending === "reject")
|
|
18
|
+
onReject(reason);
|
|
19
|
+
else
|
|
20
|
+
onRequestCorrection(reason);
|
|
21
|
+
close();
|
|
22
|
+
}, children: _jsx(Textarea, { label: t("कारण (नागरिकलाई देखाइनेछ)", "Reason (shown to the citizen)"), value: reason, onChange: (e) => setReason(e.target.value), error: !reason.trim() ? t("कारण लेख्नुहोस्", "Enter a reason") : undefined }) })] }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ApprovalDecisionPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApprovalDecisionPanel.js","sourceRoot":"","sources":["../src/ApprovalDecisionPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Audit log item (components/audit-log-item.md) — one immutable audit-trail entry: who did what,
|
|
4
|
+
* when (NPT, labelled), from where, and why (§9.1). Reads as a coherent sentence to a screen reader;
|
|
5
|
+
* no interactive edit controls (audit entries are records, never edited).
|
|
6
|
+
*/
|
|
7
|
+
interface AuditLogItemProps {
|
|
8
|
+
actor: ReactNode;
|
|
9
|
+
action: ReactNode;
|
|
10
|
+
/** Already formatted in NPT with the timezone label. */
|
|
11
|
+
timestamp: ReactNode;
|
|
12
|
+
reason?: ReactNode;
|
|
13
|
+
reference?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function AuditLogItem({ actor, action, timestamp, reason, reference, className }: AuditLogItemProps): import("react").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=AuditLogItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuditLogItem.d.ts","sourceRoot":"","sources":["../src/AuditLogItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;GAIG;AACH,UAAU,iBAAiB;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,wDAAwD;IACxD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,iBAAiB,+BAazG"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from "./cx.js";
|
|
3
|
+
export function AuditLogItem({ actor, action, timestamp, reason, reference, className }) {
|
|
4
|
+
return (_jsxs("li", { className: cx("gov-audit-item", className), children: [_jsxs("div", { children: [_jsx("strong", { children: actor }), " ", action, reference && _jsxs(_Fragment, { children: [" \u00B7 ", _jsx("span", { className: "gov-audit-item__ref", children: reference })] })] }), _jsxs("div", { className: "gov-audit-item__meta", children: [timestamp, reason && _jsxs(_Fragment, { children: [" \u2014 ", reason] })] })] }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=AuditLogItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuditLogItem.js","sourceRoot":"","sources":["../src/AuditLogItem.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAiB7B,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAqB;IACxG,OAAO,CACL,cAAI,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,aAC5C,0BACE,2BAAS,KAAK,GAAU,OAAE,MAAM,EAC/B,SAAS,IAAI,0CAAK,eAAM,SAAS,EAAC,qBAAqB,YAAE,SAAS,GAAQ,IAAG,IAC1E,EACN,eAAK,SAAS,EAAC,sBAAsB,aAClC,SAAS,EACT,MAAM,IAAI,0CAAM,MAAM,IAAI,IACvB,IACH,CACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Bottom navigation (components/bottom-navigation.md) — the citizen mobile app's primary nav, fixed
|
|
4
|
+
* at the bottom. 3–5 destinations, each an icon PLUS a label (never icon-only, §5.4); the current
|
|
5
|
+
* one marked aria-current and by more than colour.
|
|
6
|
+
*/
|
|
7
|
+
export interface BottomNavItem {
|
|
8
|
+
label: ReactNode;
|
|
9
|
+
href: string;
|
|
10
|
+
icon: ReactNode;
|
|
11
|
+
current?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function BottomNavigation({ items, label, className }: {
|
|
14
|
+
items: BottomNavItem[];
|
|
15
|
+
label?: string;
|
|
16
|
+
className?: string;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=BottomNavigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BottomNavigation.d.ts","sourceRoot":"","sources":["../src/BottomNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAiB,EAAE,SAAS,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAWvI"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from "./cx.js";
|
|
3
|
+
export function BottomNavigation({ items, label = "Primary", className }) {
|
|
4
|
+
return (_jsx("nav", { "aria-label": label, className: cx("gov-bottom-nav", className), children: items.map((item, i) => (_jsxs("a", { href: item.href, className: "gov-bottom-nav__item", "aria-current": item.current ? "page" : undefined, children: [_jsx("span", { "aria-hidden": "true", children: item.icon }), item.label] }, i))) }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=BottomNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BottomNavigation.js","sourceRoot":"","sources":["../src/BottomNavigation.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAc7B,MAAM,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,SAAS,EAAkE;IACtI,OAAO,CACL,4BAAiB,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,YAC/D,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,aAAW,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,sBAAsB,kBAAe,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,aAC1G,8BAAkB,MAAM,YAAE,IAAI,CAAC,IAAI,GAAQ,EAC1C,IAAI,CAAC,KAAK,KAFL,CAAC,CAGL,CACL,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Camera capture (components/camera-capture.md) — capture a document/portrait photo on a device, with
|
|
4
|
+
* quality guidance and a preview before accepting (§8.1.2). This component frames the capture flow
|
|
5
|
+
* and ALWAYS offers a file-upload fallback (no dead ends, §4.1); the actual getUserMedia handling is
|
|
6
|
+
* wired by the app (device/permission specifics vary), which passes the live view and controls in.
|
|
7
|
+
*/
|
|
8
|
+
interface CameraCaptureProps {
|
|
9
|
+
/** Plain framing guidance, e.g. "Fit the whole certificate in the frame". */
|
|
10
|
+
guidance: ReactNode;
|
|
11
|
+
/** The live viewfinder node from the app (a <video>), or a captured preview. */
|
|
12
|
+
view: ReactNode;
|
|
13
|
+
onCapture: () => void;
|
|
14
|
+
/** The file-upload fallback, always present. */
|
|
15
|
+
fallback: ReactNode;
|
|
16
|
+
captureLabel?: ReactNode;
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function CameraCapture({ guidance, view, onCapture, fallback, captureLabel, className }: CameraCaptureProps): import("react").JSX.Element;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=CameraCapture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraCapture.d.ts","sourceRoot":"","sources":["../src/CameraCapture.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD;;;;;GAKG;AACH,UAAU,kBAAkB;IAC1B,6EAA6E;IAC7E,QAAQ,EAAE,SAAS,CAAC;IACpB,gFAAgF;IAChF,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,gDAAgD;IAChD,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAA2B,EAAE,SAAS,EAAE,EAAE,kBAAkB,+BAYhI"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { cx } from "./cx.js";
|
|
5
|
+
export function CameraCapture({ guidance, view, onCapture, fallback, captureLabel = "Take photo", className }) {
|
|
6
|
+
return (_jsxs("div", { className: cx("gov-camera-capture", className), children: [_jsx("p", { className: "gov-text-secondary", children: guidance }), _jsx("div", { className: "gov-capture-frame", children: view }), _jsx("div", { className: "gov-cluster", style: { marginBlockStart: "var(--gov-space-3)" }, children: _jsx("button", { type: "button", className: "gov-button gov-button--primary", onClick: onCapture, children: captureLabel }) }), _jsx("div", { style: { marginBlockStart: "var(--gov-space-4)" }, children: fallback })] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=CameraCapture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraCapture.js","sourceRoot":"","sources":["../src/CameraCapture.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAoB7B,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE,SAAS,EAAsB;IAC/H,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,aACjD,YAAG,SAAS,EAAC,oBAAoB,YAAE,QAAQ,GAAK,EAChD,cAAK,SAAS,EAAC,mBAAmB,YAAE,IAAI,GAAO,EAC/C,cAAK,SAAS,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,YAC5E,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,gCAAgC,EAAC,OAAO,EAAE,SAAS,YAAG,YAAY,GAAU,GACxG,EAEN,cAAK,KAAK,EAAE,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,YAAG,QAAQ,GAAO,IACpE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Biometric capture status (components/biometric-capture-status.md and the fingerprint/face/iris
|
|
4
|
+
* variants) — the live state of an officer-operated capture step. State is shown by icon + text +
|
|
5
|
+
* colour, never colour alone (§4.1), announced politely as it changes. The raw biometric sample is
|
|
6
|
+
* NEVER rendered here (§9.1) — only capture status and quality.
|
|
7
|
+
*
|
|
8
|
+
* One component covers the fingerprint / face / iris cases; the `kind` only affects the label.
|
|
9
|
+
*/
|
|
10
|
+
type CaptureState = "idle" | "capturing" | "pass" | "retry" | "error";
|
|
11
|
+
interface CaptureStatusProps {
|
|
12
|
+
state: CaptureState;
|
|
13
|
+
/** Plain message, e.g. "Captured — good quality" or "Move slightly and try again". */
|
|
14
|
+
message: ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function CaptureStatus({ state, message, className }: CaptureStatusProps): import("react").JSX.Element;
|
|
18
|
+
/** Face capture frame — the viewfinder guide (never renders the sample; §9.1). */
|
|
19
|
+
export declare function FaceCaptureFrame({ children, className }: {
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
className?: string;
|
|
22
|
+
}): import("react").JSX.Element;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=CaptureStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CaptureStatus.d.ts","sourceRoot":"","sources":["../src/CaptureStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;;GAOG;AACH,KAAK,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAItE,UAAU,kBAAkB;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,sFAAsF;IACtF,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,kBAAkB,+BAQ9E;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAMrG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from "./cx.js";
|
|
3
|
+
const ICON = { idle: "○", capturing: "…", pass: "✓", retry: "↻", error: "✕" };
|
|
4
|
+
export function CaptureStatus({ state, message, className }) {
|
|
5
|
+
const tone = state === "pass" ? "pass" : state === "retry" ? "retry" : state === "error" ? "error" : "";
|
|
6
|
+
return (_jsxs("div", { className: cx("gov-capture-status", tone && `gov-capture-status--${tone}`, className), role: "status", "aria-live": "polite", children: [_jsx("span", { className: "gov-capture-status__icon", "aria-hidden": "true", children: ICON[state] }), _jsx("span", { children: message })] }));
|
|
7
|
+
}
|
|
8
|
+
/** Face capture frame — the viewfinder guide (never renders the sample; §9.1). */
|
|
9
|
+
export function FaceCaptureFrame({ children, className }) {
|
|
10
|
+
return (_jsx("div", { className: cx("gov-capture-frame", className), role: "img", "aria-label": "Face capture guide", children: children ?? "Align the face within the frame" }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=CaptureStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CaptureStatus.js","sourceRoot":"","sources":["../src/CaptureStatus.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAY7B,MAAM,IAAI,GAAiC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAS5G,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAsB;IAC7E,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,IAAI,IAAI,uBAAuB,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,EAAC,QAAQ,eAAW,QAAQ,aAC1H,eAAM,SAAS,EAAC,0BAA0B,iBAAa,MAAM,YAAE,IAAI,CAAC,KAAK,CAAC,GAAQ,EAClF,yBAAO,OAAO,GAAQ,IAClB,CACP,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAgD;IACpG,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAAE,IAAI,EAAC,KAAK,gBAAY,oBAAoB,YAC3F,QAAQ,IAAI,iCAAiC,GAC1C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type SummaryRow } from "./SummaryList.js";
|
|
3
|
+
/**
|
|
4
|
+
* Citizen profile card (components/citizen-profile-card.md) — an officer's view of a citizen's key
|
|
5
|
+
* details, name Nepali-first, sensitive identifiers masked by default (§9.1). Shows only the fields
|
|
6
|
+
* the officer's task needs (data minimisation); caste/ethnicity never in default views (§7.1). The
|
|
7
|
+
* app supplies rows whose sensitive values are already MaskedValue components.
|
|
8
|
+
*/
|
|
9
|
+
interface CitizenProfileCardProps {
|
|
10
|
+
nameNe: string;
|
|
11
|
+
nameEn?: string;
|
|
12
|
+
/** Detail rows; sensitive values should be MaskedValue instances (§9.1). */
|
|
13
|
+
rows: SummaryRow[];
|
|
14
|
+
photo?: ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function CitizenProfileCard({ nameNe, nameEn, rows, photo, className }: CitizenProfileCardProps): import("react").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=CitizenProfileCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CitizenProfileCard.d.ts","sourceRoot":"","sources":["../src/CitizenProfileCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE;;;;;GAKG;AACH,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,uBAAuB,+BAarG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Card } from "./Card.js";
|
|
3
|
+
import { SummaryList } from "./SummaryList.js";
|
|
4
|
+
export function CitizenProfileCard({ nameNe, nameEn, rows, photo, className }) {
|
|
5
|
+
return (_jsxs(Card, { className: className, children: [_jsxs("div", { style: { display: "flex", gap: "var(--gov-space-4)", alignItems: "center" }, children: [photo && _jsx("div", { style: { flexShrink: 0 }, children: photo }), _jsxs("div", { children: [_jsx("h3", { style: { margin: 0 }, lang: "ne", children: nameNe }), nameEn && _jsx("p", { className: "gov-text-secondary", style: { margin: 0 }, lang: "en", children: nameEn })] })] }), _jsx(SummaryList, { rows: rows })] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=CitizenProfileCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CitizenProfileCard.js","sourceRoot":"","sources":["../src/CitizenProfileCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AAiBhE,MAAM,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAA2B;IACpG,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,SAAS,aACxB,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC7E,KAAK,IAAI,cAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAG,KAAK,GAAO,EACtD,0BACE,aAAI,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAC,IAAI,YAAE,MAAM,GAAM,EAChD,MAAM,IAAI,YAAG,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAC,IAAI,YAAE,MAAM,GAAK,IACrF,IACF,EACN,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,GAAI,IACtB,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Data grid (components/data-grid.md) — a dense, sortable officer table built on real table
|
|
4
|
+
* semantics. Sortable headers are buttons exposing aria-sort; never a div grid. Nepali text columns
|
|
5
|
+
* sort by Devanagari collation via a comparator the app can supply (§7.3). This adds sort to the
|
|
6
|
+
* table's semantics; row selection and sticky headers are opt-in via props/CSS.
|
|
7
|
+
*/
|
|
8
|
+
export interface GridColumn<T> {
|
|
9
|
+
key: string;
|
|
10
|
+
header: ReactNode;
|
|
11
|
+
render: (row: T) => ReactNode;
|
|
12
|
+
numeric?: boolean;
|
|
13
|
+
/** Return a comparable value for sorting; omit to make the column unsortable. */
|
|
14
|
+
sortValue?: (row: T) => string | number;
|
|
15
|
+
}
|
|
16
|
+
export declare function DataGrid<T>({ caption, columns, rows, getRowKey, locale, className }: {
|
|
17
|
+
caption?: ReactNode;
|
|
18
|
+
columns: GridColumn<T>[];
|
|
19
|
+
rows: T[];
|
|
20
|
+
getRowKey: (row: T, index: number) => string | number;
|
|
21
|
+
/** "ne" sorts Nepali columns with Devanagari collation (§7.3). */
|
|
22
|
+
locale?: string;
|
|
23
|
+
className?: string;
|
|
24
|
+
}): import("react").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=DataGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../src/DataGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;CACzC;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAa,EAAE,SAAS,EAAE,EAAE;IAC3F,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACzB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IACtD,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAiDA"}
|
package/dist/DataGrid.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { cx } from "./cx.js";
|
|
5
|
+
export function DataGrid({ caption, columns, rows, getRowKey, locale = "en", className }) {
|
|
6
|
+
const [sort, setSort] = useState(null);
|
|
7
|
+
const sorted = (() => {
|
|
8
|
+
if (!sort)
|
|
9
|
+
return rows;
|
|
10
|
+
const col = columns.find((c) => c.key === sort.key);
|
|
11
|
+
if (!col?.sortValue)
|
|
12
|
+
return rows;
|
|
13
|
+
const collator = new Intl.Collator(locale === "ne" ? "ne-NP" : "en");
|
|
14
|
+
return [...rows].sort((a, b) => {
|
|
15
|
+
const av = col.sortValue(a);
|
|
16
|
+
const bv = col.sortValue(b);
|
|
17
|
+
const cmp = typeof av === "number" && typeof bv === "number" ? av - bv : collator.compare(String(av), String(bv));
|
|
18
|
+
return sort.dir === "asc" ? cmp : -cmp;
|
|
19
|
+
});
|
|
20
|
+
})();
|
|
21
|
+
const toggleSort = (key) => setSort((prev) => (prev?.key === key ? { key, dir: prev.dir === "asc" ? "desc" : "asc" } : { key, dir: "asc" }));
|
|
22
|
+
return (_jsxs("table", { className: cx("gov-table", className), children: [caption && _jsx("caption", { children: caption }), _jsx("thead", { children: _jsx("tr", { children: columns.map((col) => {
|
|
23
|
+
const ariaSort = sort?.key === col.key ? (sort.dir === "asc" ? "ascending" : "descending") : col.sortValue ? "none" : undefined;
|
|
24
|
+
return (_jsx("th", { scope: "col", "aria-sort": ariaSort, className: col.numeric ? "gov-table__num" : undefined, children: col.sortValue ? (_jsxs("button", { type: "button", className: "gov-icon-button", style: { minBlockSize: "auto", padding: 0, background: "none", font: "inherit", fontWeight: "inherit" }, onClick: () => toggleSort(col.key), children: [col.header, " ", sort?.key === col.key ? (sort.dir === "asc" ? "▲" : "▼") : "⇅"] })) : col.header }, col.key));
|
|
25
|
+
}) }) }), _jsx("tbody", { children: sorted.map((row, i) => (_jsx("tr", { children: columns.map((col) => (_jsx("td", { className: col.numeric ? "gov-table__num" : undefined, children: col.render(row) }, col.key))) }, getRowKey(row, i)))) })] }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=DataGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataGrid.js","sourceRoot":"","sources":["../src/DataGrid.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Date picker (components/date-picker.md) — accessible day/month/year fields, preferred over a custom
|
|
4
|
+
* calendar grid on citizen forms (more robust with assistive tech and low-end devices). BS leads in
|
|
5
|
+
* the Nepali UI, AD in English; conversion is never silent (§3.1). The `calendar` label is stated,
|
|
6
|
+
* not assumed. The machine value stays ISO/AD; this is the entry surface.
|
|
7
|
+
*/
|
|
8
|
+
export interface DateParts {
|
|
9
|
+
day?: string;
|
|
10
|
+
month?: string;
|
|
11
|
+
year?: string;
|
|
12
|
+
}
|
|
13
|
+
interface DatePickerProps {
|
|
14
|
+
legend: ReactNode;
|
|
15
|
+
/** Which calendar these fields are entered in — shown to the citizen, never assumed. */
|
|
16
|
+
calendar?: "BS" | "AD";
|
|
17
|
+
value: DateParts;
|
|
18
|
+
onChange: (parts: DateParts) => void;
|
|
19
|
+
error?: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
export declare function DatePicker({ legend, calendar, value, onChange, error }: DatePickerProps): import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=DatePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../src/DatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI9C;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,+BAmBvF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useId } from "react";
|
|
4
|
+
import { cx } from "./cx.js";
|
|
5
|
+
import { useTheme } from "./ThemeProvider.js";
|
|
6
|
+
export function DatePicker({ legend, calendar, value, onChange, error }) {
|
|
7
|
+
const { language } = useTheme();
|
|
8
|
+
const base = useId();
|
|
9
|
+
const cal = calendar ?? (language === "ne" ? "BS" : "AD");
|
|
10
|
+
const errorId = error ? `${base}-error` : undefined;
|
|
11
|
+
const set = (patch) => onChange({ ...value, ...patch });
|
|
12
|
+
const L = { day: language === "ne" ? "दिन" : "Day", month: language === "ne" ? "महिना" : "Month", year: language === "ne" ? "वर्ष" : "Year" };
|
|
13
|
+
return (_jsxs("fieldset", { style: { border: 0, padding: 0, margin: 0 }, "aria-describedby": errorId, children: [_jsxs("legend", { className: "gov-field__label", children: [legend, " (", cal, ")"] }), _jsxs("div", { className: "gov-cluster", style: { marginBlockStart: "var(--gov-space-2)" }, children: [_jsxs("label", { children: [L.day, _jsx("input", { className: "gov-input gov-input--width-2", inputMode: "numeric", maxLength: 2, value: value.day ?? "", onChange: (e) => set({ day: e.target.value.replace(/\D/g, "") }), "aria-invalid": error ? true : undefined })] }), _jsxs("label", { children: [L.month, _jsx("input", { className: "gov-input gov-input--width-2", inputMode: "numeric", maxLength: 2, value: value.month ?? "", onChange: (e) => set({ month: e.target.value.replace(/\D/g, "") }), "aria-invalid": error ? true : undefined })] }), _jsxs("label", { children: [L.year, _jsx("input", { className: "gov-input gov-input--width-4", inputMode: "numeric", maxLength: 4, value: value.year ?? "", onChange: (e) => set({ year: e.target.value.replace(/\D/g, "") }), "aria-invalid": error ? true : undefined })] })] }), error && _jsx("span", { className: "gov-field__error", id: errorId, children: error })] }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../src/DatePicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Document preview (components/document-preview.md) — a bounded preview of an uploaded/generated
|
|
4
|
+
* document so the user can confirm it before proceeding (§8.1.2). The image alt describes what it is
|
|
5
|
+
* ("Preview of uploaded citizenship certificate"), never "image"; controls are labelled buttons.
|
|
6
|
+
*/
|
|
7
|
+
interface DocumentPreviewProps {
|
|
8
|
+
src: string;
|
|
9
|
+
/** Describes the document, used as the alt text — never "image". */
|
|
10
|
+
alt: string;
|
|
11
|
+
fileName?: string;
|
|
12
|
+
fileSize?: string;
|
|
13
|
+
actions?: ReactNode;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function DocumentPreview({ src, alt, fileName, fileSize, actions, className }: DocumentPreviewProps): import("react").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=DocumentPreview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentPreview.d.ts","sourceRoot":"","sources":["../src/DocumentPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;GAIG;AACH,UAAU,oBAAoB;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAYzG"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from "./cx.js";
|
|
3
|
+
export function DocumentPreview({ src, alt, fileName, fileSize, actions, className }) {
|
|
4
|
+
return (_jsxs("div", { className: cx("gov-doc-preview", className), children: [_jsx("img", { src: src, alt: alt, style: { maxInlineSize: "100%", maxBlockSize: "16rem", border: "var(--gov-border-width-sm) solid var(--gov-color-border-default)", borderRadius: "var(--gov-radius-md)" } }), (fileName || fileSize) && (_jsxs("p", { className: "gov-text-secondary gov-text-small", children: [fileName, fileName && fileSize ? " · " : "", fileSize] })), actions && _jsx("div", { className: "gov-cluster", children: actions })] }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=DocumentPreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentPreview.js","sourceRoot":"","sources":["../src/DocumentPreview.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAiB7B,MAAM,UAAU,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAwB;IACxG,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,aAC9C,cAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,kEAAkE,EAAE,YAAY,EAAE,sBAAsB,EAAE,GAAI,EACrM,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CACzB,aAAG,SAAS,EAAC,mCAAmC,aAC7C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,IACpD,CACL,EACA,OAAO,IAAI,cAAK,SAAS,EAAC,aAAa,YAAE,OAAO,GAAO,IACpD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Duplicate match warning (components/duplicate-match-warning.md) — during NID enrolment, a possible
|
|
4
|
+
* duplicate was found. It routes to HUMAN adjudication, never an auto-reject (a false match must not
|
|
5
|
+
* silently deny a citizen their identity). Announced assertively; compared identifiers are masked
|
|
6
|
+
* (§9.1). Non-accusatory language — a possible match is not proof.
|
|
7
|
+
*/
|
|
8
|
+
interface DuplicateMatchWarningProps {
|
|
9
|
+
title?: ReactNode;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** The adjudication actions (confirm same / not a match / escalate). */
|
|
12
|
+
actions?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export declare function DuplicateMatchWarning({ title, children, actions }: DuplicateMatchWarningProps): import("react").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=DuplicateMatchWarning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DuplicateMatchWarning.d.ts","sourceRoot":"","sources":["../src/DuplicateMatchWarning.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;GAKG;AACH,UAAU,0BAA0B;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,wEAAwE;IACxE,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,0BAA0B,+BAS7F"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Alert } from "./Alert.js";
|
|
3
|
+
export function DuplicateMatchWarning({ title, children, actions }) {
|
|
4
|
+
return (_jsxs("div", { children: [_jsx(Alert, { variant: "warning", title: title ?? "A possible duplicate record was found", live: true, children: children }), actions && _jsx("div", { className: "gov-cluster", style: { marginBlockStart: "var(--gov-space-3)" }, children: actions })] }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=DuplicateMatchWarning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DuplicateMatchWarning.js","sourceRoot":"","sources":["../src/DuplicateMatchWarning.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAenC,MAAM,UAAU,qBAAqB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAA8B;IAC5F,OAAO,CACL,0BACE,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAE,KAAK,IAAI,uCAAuC,EAAE,IAAI,kBACnF,QAAQ,GACH,EACP,OAAO,IAAI,cAAK,SAAS,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,YAAG,OAAO,GAAO,IACvG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Export action (components/export-action.md) — export the current data view to a file, stating the
|
|
4
|
+
* format (and, in copy, the scope). Sensitive fields follow the same masking/authorization rules on
|
|
5
|
+
* export (§9.1). Large exports should show progress (the app wires that).
|
|
6
|
+
*/
|
|
7
|
+
interface ExportActionProps {
|
|
8
|
+
format: "CSV" | "PDF";
|
|
9
|
+
onExport: () => void;
|
|
10
|
+
exporting?: boolean;
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export declare function ExportAction({ format, onExport, exporting, children }: ExportActionProps): import("react").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=ExportAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExportAction.d.ts","sourceRoot":"","sources":["../src/ExportAction.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;GAIG;AACH,UAAU,iBAAiB;IACzB,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAiB,EAAE,QAAQ,EAAE,EAAE,iBAAiB,+BAShG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Button } from "./Button.js";
|
|
4
|
+
import { useTheme } from "./ThemeProvider.js";
|
|
5
|
+
export function ExportAction({ format, onExport, exporting = false, children }) {
|
|
6
|
+
const { language } = useTheme();
|
|
7
|
+
const label = children ?? (language === "ne" ? `${format} मा निर्यात गर्नुहोस्` : `Export to ${format}`);
|
|
8
|
+
const busy = language === "ne" ? "निर्यात हुँदै…" : "Exporting…";
|
|
9
|
+
return (_jsx(Button, { variant: "secondary", type: "button", loading: exporting, loadingLabel: busy, onClick: onExport, children: label }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ExportAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExportAction.js","sourceRoot":"","sources":["../src/ExportAction.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAc9C,MAAM,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,EAAqB;IAC/F,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,uBAAuB,CAAC,CAAC,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;IACzG,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;IACjE,OAAO,CACL,KAAC,MAAM,IAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,YAChG,KAAK,GACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feedback widget (components/feedback-widget.md) — the lightweight "was this page useful?" prompt
|
|
3
|
+
* plus a route to report a problem (guidelines/10-governance/03-governance.md). One-tap, never
|
|
4
|
+
* inserted mid-task, never a blocking modal, never bundled with analytics consent (§2.1, §9.1.2).
|
|
5
|
+
*/
|
|
6
|
+
interface FeedbackWidgetProps {
|
|
7
|
+
onRespond: (useful: boolean) => void;
|
|
8
|
+
reportHref: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function FeedbackWidget({ onRespond, reportHref, className }: FeedbackWidgetProps): import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=FeedbackWidget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackWidget.d.ts","sourceRoot":"","sources":["../src/FeedbackWidget.tsx"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,UAAU,mBAAmB;IAC3B,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,mBAAmB,+BAuBvF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { cx } from "./cx.js";
|
|
5
|
+
import { useTheme } from "./ThemeProvider.js";
|
|
6
|
+
import { Button } from "./Button.js";
|
|
7
|
+
export function FeedbackWidget({ onRespond, reportHref, className }) {
|
|
8
|
+
const { language } = useTheme();
|
|
9
|
+
const [done, setDone] = useState(false);
|
|
10
|
+
const q = language === "ne" ? "के यो पृष्ठ उपयोगी थियो?" : "Was this page useful?";
|
|
11
|
+
const yes = language === "ne" ? "उपयोगी" : "Yes";
|
|
12
|
+
const no = language === "ne" ? "उपयोगी छैन" : "No";
|
|
13
|
+
const thanks = language === "ne" ? "धन्यवाद।" : "Thank you for your feedback.";
|
|
14
|
+
const report = language === "ne" ? "यस पृष्ठको समस्या रिपोर्ट गर्नुहोस्" : "Report a problem with this page";
|
|
15
|
+
return (_jsxs("div", { className: cx("gov-feedback", className), children: [done ? (_jsx("span", { children: thanks })) : (_jsxs(_Fragment, { children: [_jsx("span", { children: q }), _jsx(Button, { variant: "secondary", size: "sm", type: "button", onClick: () => { onRespond(true); setDone(true); }, children: yes }), _jsx(Button, { variant: "secondary", size: "sm", type: "button", onClick: () => { onRespond(false); setDone(true); }, children: no })] })), _jsx("a", { className: "gov-link", href: reportHref, children: report })] }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=FeedbackWidget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackWidget.js","sourceRoot":"","sources":["../src/FeedbackWidget.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAarC,MAAM,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAuB;IACtF,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,uBAAuB,CAAC;IACnF,MAAM,GAAG,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,MAAM,EAAE,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC;IAC/E,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,iCAAiC,CAAC;IAE7G,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,aAC1C,IAAI,CAAC,CAAC,CAAC,CACN,yBAAO,MAAM,GAAQ,CACtB,CAAC,CAAC,CAAC,CACF,8BACE,yBAAO,CAAC,GAAQ,EAChB,KAAC,MAAM,IAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAG,GAAG,GAAU,EACtH,KAAC,MAAM,IAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAG,EAAE,GAAU,IACrH,CACJ,EACD,YAAG,SAAS,EAAC,UAAU,EAAC,IAAI,EAAE,UAAU,YAAG,MAAM,GAAK,IAClD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Filter bar (components/filter-bar.md) — narrow a list/table by facets, with applied filters shown
|
|
4
|
+
* as removable tags so the current view is always clear. Each applied tag's remove control is a
|
|
5
|
+
* labelled icon-button ("Remove filter: …"); the updated result count is announced politely; the
|
|
6
|
+
* empty case uses empty-state's no-results with a "Clear filters" action. The app supplies the
|
|
7
|
+
* filter controls; this frames them plus the applied-tags row and count.
|
|
8
|
+
*/
|
|
9
|
+
export interface AppliedFilter {
|
|
10
|
+
id: string;
|
|
11
|
+
label: ReactNode;
|
|
12
|
+
/** For the remove control's accessible name, e.g. "Under review". */
|
|
13
|
+
value: string;
|
|
14
|
+
}
|
|
15
|
+
interface FilterBarProps {
|
|
16
|
+
/** The filter controls (selects, date pickers). */
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
applied: AppliedFilter[];
|
|
19
|
+
onRemove: (id: string) => void;
|
|
20
|
+
onClear: () => void;
|
|
21
|
+
resultCount?: number;
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function FilterBar({ children, applied, onRemove, onClear, resultCount, className }: FilterBarProps): import("react").JSX.Element;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=FilterBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../src/FilterBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,mDAAmD;IACnD,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,cAAc,+BA4BzG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cx } from "./cx.js";
|
|
4
|
+
import { useTheme } from "./ThemeProvider.js";
|
|
5
|
+
export function FilterBar({ children, applied, onRemove, onClear, resultCount, className }) {
|
|
6
|
+
const { language } = useTheme();
|
|
7
|
+
const clear = language === "ne" ? "फिल्टर हटाउनुहोस्" : "Clear filters";
|
|
8
|
+
const removeLabel = (v) => (language === "ne" ? `फिल्टर हटाउनुहोस्: ${v}` : `Remove filter: ${v}`);
|
|
9
|
+
return (_jsxs("div", { className: cx("gov-filter-bar", className), style: { display: "flex", flexDirection: "column", gap: "var(--gov-space-3)", padding: "var(--gov-space-4)", background: "var(--gov-color-background-secondary)", borderRadius: "var(--gov-radius-md)" }, children: [_jsx("div", { className: "gov-cluster", children: children }), applied.length > 0 && (_jsxs("div", { className: "gov-cluster", children: [applied.map((f) => (_jsxs("span", { className: "gov-tag", children: [f.label, _jsx("button", { type: "button", className: "gov-icon-button", style: { minInlineSize: "auto", minBlockSize: "auto", padding: 0 }, "aria-label": removeLabel(f.value), onClick: () => onRemove(f.id), children: _jsx("span", { "aria-hidden": "true", children: "\u2715" }) })] }, f.id))), _jsx("button", { type: "button", className: "gov-link", style: { background: "none", border: 0, cursor: "pointer" }, onClick: onClear, children: clear })] })), resultCount !== undefined && (_jsx("p", { className: "gov-text-secondary gov-text-small", "aria-live": "polite", children: language === "ne" ? `${resultCount} नतिजा` : `${resultCount} results` }))] }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=FilterBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterBar.js","sourceRoot":"","sources":["../src/FilterBar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA0B9C,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAkB;IACxG,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC;IACxE,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE3G,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,uCAAuC,EAAE,YAAY,EAAE,sBAAsB,EAAE,aACvP,cAAK,SAAS,EAAC,aAAa,YAAE,QAAQ,GAAO,EAC5C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,eAAK,SAAS,EAAC,aAAa,aACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,gBAAiB,SAAS,EAAC,SAAS,aACjC,CAAC,CAAC,KAAK,EACR,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,iBAAiB,EAAC,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAc,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,YACnL,8BAAkB,MAAM,uBAAS,GAC1B,KAJA,CAAC,CAAC,EAAE,CAKR,CACR,CAAC,EACF,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,YAAG,KAAK,GAAU,IACtI,CACP,EACA,WAAW,KAAK,SAAS,IAAI,CAC5B,YAAG,SAAS,EAAC,mCAAmC,eAAW,QAAQ,YAChE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,UAAU,GACpE,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Officer review panel (components/officer-review-panel.md) — the officer's working surface for a
|
|
4
|
+
* review (§7.4): the application's details, its documents, its history, and the decision actions,
|
|
5
|
+
* with clear landmark/heading structure so a screen-reader user can move between them. A composition
|
|
6
|
+
* shell; the sections are the profile card, document previews, status/audit, and the decision panel
|
|
7
|
+
* supplied by the app.
|
|
8
|
+
*/
|
|
9
|
+
interface OfficerReviewPanelProps {
|
|
10
|
+
details: ReactNode;
|
|
11
|
+
documents?: ReactNode;
|
|
12
|
+
history?: ReactNode;
|
|
13
|
+
decision: ReactNode;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function OfficerReviewPanel({ details, documents, history, decision, className }: OfficerReviewPanelProps): import("react").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=OfficerReviewPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OfficerReviewPanel.d.ts","sourceRoot":"","sources":["../src/OfficerReviewPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;;GAMG;AACH,UAAU,uBAAuB;IAC/B,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,uBAAuB,+BAW/G"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from "./cx.js";
|
|
3
|
+
import { Stack } from "./layout.js";
|
|
4
|
+
export function OfficerReviewPanel({ details, documents, history, decision, className }) {
|
|
5
|
+
return (_jsx("div", { className: cx("gov-review-panel", className), children: _jsxs(Stack, { gap: 8, children: [_jsx("section", { "aria-label": "Applicant details", children: details }), documents && _jsx("section", { "aria-label": "Documents", children: documents }), history && _jsx("section", { "aria-label": "History", children: history }), _jsx("section", { "aria-label": "Decision", children: decision })] }) }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=OfficerReviewPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OfficerReviewPanel.js","sourceRoot":"","sources":["../src/OfficerReviewPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAiBpC,MAAM,UAAU,kBAAkB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAA2B;IAC9G,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,YAC/C,MAAC,KAAK,IAAC,GAAG,EAAE,CAAC,aACX,gCAAoB,mBAAmB,YAAE,OAAO,GAAW,EAC1D,SAAS,IAAI,gCAAoB,WAAW,YAAE,SAAS,GAAW,EAClE,OAAO,IAAI,gCAAoB,SAAS,YAAE,OAAO,GAAW,EAC7D,gCAAoB,UAAU,YAAE,QAAQ,GAAW,IAC7C,GACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Sidebar (components/sidebar.md) — an officer desktop's persistent left navigation rail. The
|
|
4
|
+
* current view is aria-current and marked by more than colour; part of the three-panel layout.
|
|
5
|
+
*/
|
|
6
|
+
export interface SidebarLink {
|
|
7
|
+
label: ReactNode;
|
|
8
|
+
href: string;
|
|
9
|
+
current?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function Sidebar({ links, label, className }: {
|
|
12
|
+
links: SidebarLink[];
|
|
13
|
+
label?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
}): import("react").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=Sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../src/Sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,KAAkB,EAAE,SAAS,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAU7H"}
|
package/dist/Sidebar.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from "./cx.js";
|
|
3
|
+
export function Sidebar({ links, label = "Sections", className }) {
|
|
4
|
+
return (_jsx("nav", { "aria-label": label, className: cx("gov-sidebar", className), children: links.map((link, i) => (_jsx("a", { href: link.href, className: "gov-sidebar__link", "aria-current": link.current ? "page" : undefined, children: link.label }, i))) }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../src/Sidebar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAY7B,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,EAAE,SAAS,EAAgE;IAC5H,OAAO,CACL,4BAAiB,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,YAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,YAAW,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,mBAAmB,kBAAe,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YACtG,IAAI,CAAC,KAAK,IADL,CAAC,CAEL,CACL,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// GENERATED from design-guidelines 0.2.0-dev (
|
|
1
|
+
// GENERATED from design-guidelines 0.2.0-dev (8c2cd94f) — do not edit.
|
|
2
2
|
// Source: data/status-taxonomy.yaml (§7.3.2). Regenerate with build/generate.mjs.
|
|
3
3
|
export const STATUS_TAXONOMY = {
|
|
4
4
|
"draft": { label: "Draft", label_ne: "मस्यौदा", badge: "neutral", requiresAction: false },
|
package/dist/index.d.ts
CHANGED
|
@@ -59,5 +59,21 @@ export { QrCode } from "./QrCode.js";
|
|
|
59
59
|
export { CookieBanner } from "./CookieBanner.js";
|
|
60
60
|
export { OfflineBanner } from "./OfflineBanner.js";
|
|
61
61
|
export { SessionTimeoutWarning } from "./SessionTimeoutWarning.js";
|
|
62
|
+
export { BottomNavigation, type BottomNavItem } from "./BottomNavigation.js";
|
|
63
|
+
export { Sidebar, type SidebarLink } from "./Sidebar.js";
|
|
64
|
+
export { ApplicationStatusTracker } from "./ApplicationStatusTracker.js";
|
|
65
|
+
export { CitizenProfileCard } from "./CitizenProfileCard.js";
|
|
66
|
+
export { AuditLogItem } from "./AuditLogItem.js";
|
|
67
|
+
export { DocumentPreview } from "./DocumentPreview.js";
|
|
68
|
+
export { OfficerReviewPanel } from "./OfficerReviewPanel.js";
|
|
69
|
+
export { ApprovalDecisionPanel } from "./ApprovalDecisionPanel.js";
|
|
70
|
+
export { FeedbackWidget } from "./FeedbackWidget.js";
|
|
71
|
+
export { DataGrid, type GridColumn } from "./DataGrid.js";
|
|
72
|
+
export { FilterBar, type AppliedFilter } from "./FilterBar.js";
|
|
73
|
+
export { ExportAction } from "./ExportAction.js";
|
|
74
|
+
export { DatePicker, type DateParts } from "./DatePicker.js";
|
|
75
|
+
export { CameraCapture } from "./CameraCapture.js";
|
|
76
|
+
export { CaptureStatus, FaceCaptureFrame } from "./CaptureStatus.js";
|
|
77
|
+
export { DuplicateMatchWarning } from "./DuplicateMatchWarning.js";
|
|
62
78
|
export { STATUS_TAXONOMY, type StatusId, type StatusEntry, type BadgeVariant } from "./generated/statusTaxonomy.js";
|
|
63
79
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -66,5 +66,26 @@ export { QrCode } from "./QrCode.js";
|
|
|
66
66
|
export { CookieBanner } from "./CookieBanner.js";
|
|
67
67
|
export { OfflineBanner } from "./OfflineBanner.js";
|
|
68
68
|
export { SessionTimeoutWarning } from "./SessionTimeoutWarning.js";
|
|
69
|
+
// Navigation (officer/citizen)
|
|
70
|
+
export { BottomNavigation } from "./BottomNavigation.js";
|
|
71
|
+
export { Sidebar } from "./Sidebar.js";
|
|
72
|
+
// Government / officer
|
|
73
|
+
export { ApplicationStatusTracker } from "./ApplicationStatusTracker.js";
|
|
74
|
+
export { CitizenProfileCard } from "./CitizenProfileCard.js";
|
|
75
|
+
export { AuditLogItem } from "./AuditLogItem.js";
|
|
76
|
+
export { DocumentPreview } from "./DocumentPreview.js";
|
|
77
|
+
export { OfficerReviewPanel } from "./OfficerReviewPanel.js";
|
|
78
|
+
export { ApprovalDecisionPanel } from "./ApprovalDecisionPanel.js";
|
|
79
|
+
export { FeedbackWidget } from "./FeedbackWidget.js";
|
|
80
|
+
// Data (officer)
|
|
81
|
+
export { DataGrid } from "./DataGrid.js";
|
|
82
|
+
export { FilterBar } from "./FilterBar.js";
|
|
83
|
+
export { ExportAction } from "./ExportAction.js";
|
|
84
|
+
// Forms (batch C)
|
|
85
|
+
export { DatePicker } from "./DatePicker.js";
|
|
86
|
+
export { CameraCapture } from "./CameraCapture.js";
|
|
87
|
+
// NID / biometric
|
|
88
|
+
export { CaptureStatus, FaceCaptureFrame } from "./CaptureStatus.js";
|
|
89
|
+
export { DuplicateMatchWarning } from "./DuplicateMatchWarning.js";
|
|
69
90
|
export { STATUS_TAXONOMY } from "./generated/statusTaxonomy.js";
|
|
70
91
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@govnepal/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Civic Calm React components — the behavior layer (ARIA, keyboard, focus) over @govnepal/css.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"react-dom": ">=18"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@govnepal/css": "^0.
|
|
40
|
+
"@govnepal/css": "^0.5.0",
|
|
41
41
|
"@govnepal/tokens": "^0.2.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|