@issonujha/sdui-web 0.0.0-stage → 0.1.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.
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export type ComponentRegistry = Record<string, React.ComponentType<Record<string, unknown>>>;
3
+ /**
4
+ * Resolves a FULL_FRONTEND_IMPLEMENTATION archetype (canvas editors, live tracking)
5
+ * against an explicit host registry.
6
+ */
7
+ export declare function DynamicComponentLoader({ registry, config, }: {
8
+ registry: ComponentRegistry;
9
+ config: {
10
+ componentKey: string;
11
+ props?: Record<string, unknown>;
12
+ };
13
+ }): React.JSX.Element;
14
+ //# sourceMappingURL=DynamicComponentLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicComponentLoader.d.ts","sourceRoot":"","sources":["../src/DynamicComponentLoader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7F;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACnE,qBAUA"}
@@ -0,0 +1,14 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Suspense } from 'react';
3
+ /**
4
+ * Resolves a FULL_FRONTEND_IMPLEMENTATION archetype (canvas editors, live tracking)
5
+ * against an explicit host registry.
6
+ */
7
+ export function DynamicComponentLoader({ registry, config, }) {
8
+ const Component = registry[config.componentKey];
9
+ if (!Component) {
10
+ return _jsxs("div", { role: "alert", children: ["Unknown component: ", config.componentKey] });
11
+ }
12
+ return (_jsx(Suspense, { fallback: _jsx("div", { children: "Loading\u2026" }), children: _jsx(Component, { ...(config.props ?? {}) }) }));
13
+ }
14
+ //# sourceMappingURL=DynamicComponentLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicComponentLoader.js","sourceRoot":"","sources":["../src/DynamicComponentLoader.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIxC;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,QAAQ,EACR,MAAM,GAIP;IACC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,eAAK,IAAI,EAAC,OAAO,oCAAqB,MAAM,CAAC,YAAY,IAAO,CAAC;IAC1E,CAAC;IACD,OAAO,CACL,KAAC,QAAQ,IAAC,QAAQ,EAAE,0CAAmB,YACrC,KAAC,SAAS,OAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,GAAI,GAC9B,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export interface SduiTab {
3
+ key: string;
4
+ label: string;
5
+ requiredRoles?: string[];
6
+ }
7
+ export interface DynamicTabRendererProps {
8
+ tabs: SduiTab[];
9
+ activeKey?: string;
10
+ userRoles?: string[];
11
+ onChange?: (key: string) => void;
12
+ children?: (activeKey: string) => React.ReactNode;
13
+ }
14
+ /** Renders a tab strip; tabs the user's roles cannot see are omitted. */
15
+ export declare function DynamicTabRenderer({ tabs, activeKey, userRoles, onChange, children, }: DynamicTabRendererProps): React.JSX.Element;
16
+ //# sourceMappingURL=DynamicTabRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicTabRenderer.d.ts","sourceRoot":"","sources":["../src/DynamicTabRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CACnD;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,SAAS,EACT,SAAc,EACd,QAAQ,EACR,QAAQ,GACT,EAAE,uBAAuB,qBAuBzB"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** Renders a tab strip; tabs the user's roles cannot see are omitted. */
3
+ export function DynamicTabRenderer({ tabs, activeKey, userRoles = [], onChange, children, }) {
4
+ const visible = tabs.filter((tab) => !tab.requiredRoles || tab.requiredRoles.length === 0 || tab.requiredRoles.some((r) => userRoles.includes(r)));
5
+ const current = activeKey ?? visible[0]?.key;
6
+ return (_jsxs("div", { className: "sdui-tabs", children: [_jsx("div", { role: "tablist", style: { display: 'flex', gap: 8 }, children: visible.map((tab) => (_jsx("button", { role: "tab", "aria-selected": tab.key === current, onClick: () => onChange?.(tab.key), children: tab.label }, tab.key))) }), _jsx("div", { className: "sdui-tab-panel", children: current ? children?.(current) : null })] }));
7
+ }
8
+ //# sourceMappingURL=DynamicTabRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicTabRenderer.js","sourceRoot":"","sources":["../src/DynamicTabRenderer.tsx"],"names":[],"mappings":";AAgBA,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CAAC,EACjC,IAAI,EACJ,SAAS,EACT,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,QAAQ,GACgB;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CACzB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACtH,CAAC;IACF,MAAM,OAAO,GAAG,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAE7C,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,IAAI,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,YACnD,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,iBAEE,IAAI,EAAC,KAAK,mBACK,GAAG,CAAC,GAAG,KAAK,OAAO,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,YAEjC,GAAG,CAAC,KAAK,IALL,GAAG,CAAC,GAAG,CAML,CACV,CAAC,GACE,EACN,cAAK,SAAS,EAAC,gBAAgB,YAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAO,IACxE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { DataTableResponse } from '@issonujha/sdui-core';
3
+ export interface DynamicTableProps<T> {
4
+ data: DataTableResponse<T>;
5
+ loading?: boolean;
6
+ userRoles?: string[];
7
+ onPageChange?: (newPage: number) => void;
8
+ onSortChange?: (columnKey: string, direction: 'asc' | 'desc') => void;
9
+ onFilterChange?: (activeFilters: Record<string, unknown>) => void;
10
+ onRowClick?: (row: T) => void;
11
+ onExportCsv?: () => void;
12
+ }
13
+ /** Pure rendering component: receives a fully-formed DataTableResponse via props. */
14
+ export declare function DynamicTable<T>({ data, loading, userRoles, onPageChange, onSortChange, onFilterChange, onRowClick, onExportCsv, }: DynamicTableProps<T>): React.JSX.Element;
15
+ //# sourceMappingURL=DynamicTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicTable.d.ts","sourceRoot":"","sources":["../src/DynamicTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAa,iBAAiB,EAAa,MAAM,sBAAsB,CAAC;AAEpF,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IACtE,cAAc,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAClE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAqDD,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,IAAI,EACJ,OAAO,EACP,SAAc,EACd,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,GACZ,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBA8EtB"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ function visibleColumns(columns, userRoles) {
3
+ return columns.filter((c) => !c.rolesAllowed || c.rolesAllowed.length === 0 || c.rolesAllowed.some((r) => userRoles.includes(r)));
4
+ }
5
+ function renderCell(row, column) {
6
+ const value = row[column.key];
7
+ if (column.type === 'money') {
8
+ const numeric = typeof value === 'number' ? value : Number(value);
9
+ return Number.isFinite(numeric)
10
+ ? new Intl.NumberFormat(undefined, { style: 'currency', currency: column.currency ?? 'INR' }).format(numeric)
11
+ : String(value ?? '');
12
+ }
13
+ if (column.type === 'date' && value) {
14
+ const date = new Date(value);
15
+ return Number.isNaN(date.getTime()) ? String(value) : date.toLocaleDateString();
16
+ }
17
+ return value === null || value === undefined ? '' : String(value);
18
+ }
19
+ function SimpleFilter({ filter, onChange, }) {
20
+ if (filter.type === 'SEARCH' || filter.type === 'LOOKUP') {
21
+ return (_jsx("input", { placeholder: filter.placeholder ?? filter.label, onChange: (e) => onChange(filter.key, e.target.value) }));
22
+ }
23
+ if (filter.type === 'SELECT' || filter.type === 'MULTI_SELECT') {
24
+ return (_jsxs("select", { onChange: (e) => onChange(filter.key, e.target.value), children: [_jsx("option", { value: "", children: filter.placeholder ?? filter.label }), (filter.options ?? []).map((option) => (_jsx("option", { value: String(option.value), children: option.label }, String(option.value))))] }));
25
+ }
26
+ return null;
27
+ }
28
+ /** Pure rendering component: receives a fully-formed DataTableResponse via props. */
29
+ export function DynamicTable({ data, loading, userRoles = [], onPageChange, onSortChange, onFilterChange, onRowClick, onExportCsv, }) {
30
+ const columns = visibleColumns(data.columns ?? [], userRoles);
31
+ const filters = (data.filters ?? []).filter((f) => !f.rolesAllowed || f.rolesAllowed.length === 0 || f.rolesAllowed.some((r) => userRoles.includes(r)));
32
+ const updateFilter = (key, value) => onFilterChange?.({ [key]: value });
33
+ return (_jsxs("div", { className: "sdui-table-wrapper", children: [filters.length > 0 && (_jsx("div", { className: "sdui-table-filters", style: { display: 'flex', gap: 8, marginBottom: 8 }, children: filters.map((filter) => (_jsx(SimpleFilter, { filter: filter, onChange: updateFilter }, filter.key))) })), _jsxs("table", { className: "sdui-table", style: { width: '100%', borderCollapse: 'collapse' }, children: [_jsx("thead", { children: _jsx("tr", { children: columns.map((column) => (_jsx("th", { style: { textAlign: column.align ?? 'left', cursor: column.sortable ? 'pointer' : 'default' }, onClick: () => column.sortable && onSortChange?.(column.key, 'asc'), children: column.label }, column.key))) }) }), _jsxs("tbody", { children: [loading && (_jsx("tr", { children: _jsx("td", { colSpan: columns.length, style: { textAlign: 'center' }, children: "Loading\u2026" }) })), !loading && data.content.length === 0 && (_jsx("tr", { children: _jsx("td", { colSpan: columns.length, style: { textAlign: 'center' }, children: "No records" }) })), !loading &&
34
+ data.content.map((row, index) => (_jsx("tr", { onClick: () => onRowClick?.(row), children: columns.map((column) => (_jsx("td", { style: { textAlign: column.align ?? 'left' }, children: renderCell(row, column) }, column.key))) }, index)))] })] }), _jsxs("div", { className: "sdui-table-footer", style: { display: 'flex', gap: 8, marginTop: 8, alignItems: 'center' }, children: [_jsx("button", { disabled: data.pageNumber <= 0, onClick: () => onPageChange?.(data.pageNumber - 1), children: "Prev" }), _jsxs("span", { children: ["Page ", data.pageNumber + 1, " / ", Math.max(1, data.totalPages)] }), _jsx("button", { disabled: data.last, onClick: () => onPageChange?.(data.pageNumber + 1), children: "Next" }), data.enableExport && onExportCsv && (_jsx("button", { style: { marginLeft: 'auto' }, onClick: onExportCsv, children: "Export CSV" }))] })] }));
35
+ }
36
+ //# sourceMappingURL=DynamicTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicTable.js","sourceRoot":"","sources":["../src/DynamicTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ /**
3
+ * Convenience wrapper: owns pagination/sort/filter state but delegates the actual
4
+ * request to the host fetcher. The package itself performs no fetch.
5
+ */
6
+ export declare function EndpointTable<T>({ endpoint }: {
7
+ endpoint: string;
8
+ }): React.JSX.Element;
9
+ //# sourceMappingURL=EndpointTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EndpointTable.d.ts","sourceRoot":"","sources":["../src/EndpointTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,qBAkDlE"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { DynamicTable } from './DynamicTable';
4
+ import { useSdui } from './SduiWebProvider';
5
+ /**
6
+ * Convenience wrapper: owns pagination/sort/filter state but delegates the actual
7
+ * request to the host fetcher. The package itself performs no fetch.
8
+ */
9
+ export function EndpointTable({ endpoint }) {
10
+ const { apiBase = '', fetcher, userRoles } = useSdui();
11
+ const [data, setData] = React.useState(null);
12
+ const [loading, setLoading] = React.useState(false);
13
+ const [error, setError] = React.useState(null);
14
+ const [page, setPage] = React.useState(0);
15
+ const [sort, setSort] = React.useState({ dir: 'desc' });
16
+ const [filters, setFilters] = React.useState({});
17
+ const load = React.useCallback(async () => {
18
+ setLoading(true);
19
+ setError(null);
20
+ try {
21
+ const params = new URLSearchParams({ page: String(page) });
22
+ if (sort.key) {
23
+ params.set('sortBy', sort.key);
24
+ params.set('sortDir', sort.dir.toUpperCase());
25
+ }
26
+ Object.entries(filters).forEach(([key, value]) => {
27
+ if (value !== undefined && value !== null && value !== '')
28
+ params.set(key, String(value));
29
+ });
30
+ const result = (await fetcher(`${apiBase}${endpoint}?${params.toString()}`));
31
+ setData(result);
32
+ }
33
+ catch {
34
+ setError('Could not load data');
35
+ }
36
+ finally {
37
+ setLoading(false);
38
+ }
39
+ }, [apiBase, endpoint, fetcher, page, sort, filters]);
40
+ React.useEffect(() => {
41
+ void load();
42
+ }, [load]);
43
+ if (error)
44
+ return _jsx("div", { role: "alert", children: error });
45
+ if (!data)
46
+ return _jsx("div", { children: "Loading\u2026" });
47
+ return (_jsx(DynamicTable, { data: data, loading: loading, userRoles: userRoles, onPageChange: setPage, onSortChange: (key, dir) => setSort({ key, dir }), onFilterChange: (next) => {
48
+ setFilters((prev) => ({ ...prev, ...next }));
49
+ setPage(0);
50
+ } }));
51
+ }
52
+ //# sourceMappingURL=EndpointTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EndpointTable.js","sourceRoot":"","sources":["../src/EndpointTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface NavBarProps {
3
+ items: import('@issonujha/sdui-core').NavigationItem[];
4
+ onNavigate?: (item: {
5
+ route: string;
6
+ }) => void;
7
+ activeRoute?: string;
8
+ title?: string;
9
+ }
10
+ /** Renders a navigation tree filtered by the current user's project roles. */
11
+ export declare function NavBar({ items, onNavigate, activeRoute, title }: NavBarProps): React.JSX.Element;
12
+ //# sourceMappingURL=NavBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavBar.d.ts","sourceRoot":"","sources":["../src/NavBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,sBAAsB,EAAE,cAAc,EAAE,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,WAAW,qBA4B5E"}
package/dist/NavBar.js ADDED
@@ -0,0 +1,12 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { filterNavByRoles } from '@issonujha/sdui-core';
3
+ import { useSdui } from './SduiWebProvider';
4
+ /** Renders a navigation tree filtered by the current user's project roles. */
5
+ export function NavBar({ items, onNavigate, activeRoute, title }) {
6
+ const { hasRole, userRoles = [] } = useSdui();
7
+ const _hasRole = hasRole; // kept for callers that pass a custom resolver
8
+ const visible = userRoles.length > 0 ? filterNavByRoles(items, userRoles) : items;
9
+ const render = (nodes) => nodes.map((node) => (_jsxs("li", { style: { listStyle: 'none' }, children: [_jsxs("button", { type: "button", onClick: () => node.route && onNavigate?.({ route: node.route }), "aria-current": node.route === activeRoute ? 'page' : undefined, children: [node.icon ? `${node.icon} ` : '', node.label] }), node.children && node.children.length > 0 && (_jsx("ul", { style: { marginLeft: 12 }, children: render(node.children) }))] }, node.id)));
10
+ return (_jsxs("nav", { className: "sdui-nav", children: [title && _jsx("strong", { children: title }), _jsx("ul", { children: render(visible) })] }));
11
+ }
12
+ //# sourceMappingURL=NavBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavBar.js","sourceRoot":"","sources":["../src/NavBar.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAS5C,8EAA8E;AAC9E,MAAM,UAAU,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAe;IAC3E,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,+CAA+C;IACzE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAElF,MAAM,MAAM,GAAG,CAAC,KAAqB,EAAmB,EAAE,CACxD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClB,cAAkB,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,aAC5C,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,kBAClD,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,aAE5D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAChC,IAAI,CAAC,KAAK,IACJ,EACR,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5C,aAAI,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAM,CAC5D,KAXM,IAAI,CAAC,EAAE,CAYX,CACN,CAAC,CAAC;IAEL,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACtB,KAAK,IAAI,2BAAS,KAAK,GAAU,EAClC,uBAAK,MAAM,CAAC,OAAyB,CAAC,GAAM,IACxC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ export interface SduiWebConfig {
3
+ /** Project key (matches auth-service project code), e.g. DUKAANDAAR. */
4
+ projectKey: string;
5
+ /** Base URL prepended to logical endpoints. */
6
+ apiBase?: string;
7
+ /** The host-injected network function. The only place I/O can happen. */
8
+ fetcher: (path: string, init?: RequestInit) => Promise<unknown>;
9
+ /** Current user's project roles/permissions (from the token claims). */
10
+ userRoles?: string[];
11
+ userPermissions?: string[];
12
+ }
13
+ interface SduiWebContextValue extends SduiWebConfig {
14
+ hasRole: (role: string) => boolean;
15
+ hasPermission: (permission: string) => boolean;
16
+ }
17
+ export declare function SduiWebProvider({ config, children, }: {
18
+ config: SduiWebConfig;
19
+ children: React.ReactNode;
20
+ }): React.JSX.Element;
21
+ export declare function useSdui(): SduiWebContextValue;
22
+ export {};
23
+ //# sourceMappingURL=SduiWebProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SduiWebProvider.d.ts","sourceRoot":"","sources":["../src/SduiWebProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,UAAU,mBAAoB,SAAQ,aAAa;IACjD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CAChD;AAID,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qBAWA;AAED,wBAAgB,OAAO,IAAI,mBAAmB,CAI7C"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext } from 'react';
3
+ const SduiWebContext = createContext(null);
4
+ export function SduiWebProvider({ config, children, }) {
5
+ const roles = config.userRoles ?? [];
6
+ const permissions = config.userPermissions ?? [];
7
+ const value = {
8
+ ...config,
9
+ userRoles: roles,
10
+ userPermissions: permissions,
11
+ hasRole: (role) => roles.includes(role),
12
+ hasPermission: (permission) => permissions.includes(permission),
13
+ };
14
+ return _jsx(SduiWebContext.Provider, { value: value, children: children });
15
+ }
16
+ export function useSdui() {
17
+ const ctx = useContext(SduiWebContext);
18
+ if (!ctx)
19
+ throw new Error('useSdui must be used within a <SduiWebProvider>');
20
+ return ctx;
21
+ }
22
+ //# sourceMappingURL=SduiWebProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SduiWebProvider.js","sourceRoot":"","sources":["../src/SduiWebProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAmBzD,MAAM,cAAc,GAAG,aAAa,CAA6B,IAAI,CAAC,CAAC;AAEvE,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,GAIT;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAwB;QACjC,GAAG,MAAM;QACT,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,WAAW;QAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvC,aAAa,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;KAChE,CAAC;IACF,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA2B,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC7E,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './SduiWebProvider';
2
+ export * from './DynamicTable';
3
+ export * from './EndpointTable';
4
+ export * from './DynamicComponentLoader';
5
+ export * from './NavBar';
6
+ export * from './DynamicTabRenderer';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from './SduiWebProvider';
2
+ export * from './DynamicTable';
3
+ export * from './EndpointTable';
4
+ export * from './DynamicComponentLoader';
5
+ export * from './NavBar';
6
+ export * from './DynamicTabRenderer';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,36 @@
1
1
  {
2
2
  "name": "@issonujha/sdui-web",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0",
4
+ "description": "React web SDUI components (data-in/callback-out; network only via host fetcher).",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "sideEffects": false,
18
+ "dependencies": {
19
+ "@issonujha/sdui-core": "0.1.0"
20
+ },
21
+ "peerDependencies": {
22
+ "react": ">=17"
23
+ },
24
+ "devDependencies": {
25
+ "@types/react": "^18.2.0",
26
+ "typescript": "^5.5.4"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
31
+ "scripts": {
32
+ "build": "tsc -p tsconfig.json",
33
+ "typecheck": "tsc -p tsconfig.json --noEmit",
34
+ "test": "echo \"no tests yet\" && exit 0"
35
+ }
6
36
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.