@powerhousedao/contributor-billing 0.0.91 → 0.0.92

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.
@@ -1,4 +1,4 @@
1
1
  import type { EditorProps } from "document-model";
2
2
  export type IProps = EditorProps;
3
- export default function Editor(props: any): import("react/jsx-runtime").JSX.Element;
3
+ export default function Editor(props: any): import("react/jsx-runtime").JSX.Element | null;
4
4
  //# sourceMappingURL=editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/billing-statement/editor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAWlD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAEjC,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,GAAG,2CAmHxC"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/billing-statement/editor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAYlD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAEjC,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,GAAG,kDAoHxC"}
@@ -5,20 +5,16 @@ import { CurrencyForm } from "../invoice/components/currencyForm.js";
5
5
  import { Textarea } from "@powerhousedao/document-engineering";
6
6
  import LineItemsTable from "./components/lineItemsTable.js";
7
7
  import { formatNumber } from "../invoice/lineItems.js";
8
- import { useSelectedDocument } from "@powerhousedao/reactor-browser";
8
+ import { useDocumentById } from "@powerhousedao/reactor-browser";
9
9
  export default function Editor(props) {
10
- let dispatch;
11
- const { document } = props;
12
- if (props?.dispatch) {
13
- dispatch = props.dispatch;
10
+ const [doc, dispatch] = useDocumentById(props.documentId);
11
+ const state = doc?.state.global;
12
+ if (!state) {
13
+ console.log("Document state not found from document id", props.documentId);
14
+ return null;
14
15
  }
15
- else {
16
- const selectedDocument = useSelectedDocument();
17
- dispatch = selectedDocument[1];
18
- }
19
- const state = document.state.global;
20
16
  const [notes, setNotes] = useState(state.notes ?? "");
21
- return (_jsxs("div", { className: "editor-container", children: [_jsxs("div", { className: "grid grid-cols-2 gap-2 border border-gray-500 p-2 rounded-md bg-gray-1001", children: [_jsx("div", { className: "col-span-1 flex items-center", children: _jsx("h1", { className: "text-xl md:text-2xl font-bold", children: "Billing Statement" }) }), _jsxs("div", { className: "grid col-span-1 grid-rows-2 gap-2 justify-end ", children: [_jsxs("div", { className: "col-span-1 space-x-2", children: [_jsx("span", { children: "Submitter" }), _jsx("span", { children: state.contributor })] }), _jsxs("div", { className: "col-span-1 space-x-2", children: [_jsx("span", { children: "Status" }), _jsx("span", { children: state.status })] })] })] }), _jsx("div", { className: "mt-6 p-2", children: _jsxs("div", { className: "flex justify-end", children: [_jsx("span", { className: "mr-2 pt-2", children: "Currency: " }), _jsx(CurrencyForm, { currency: props.document.state.global.currency, handleInputChange: (e) => {
17
+ return (_jsxs("div", { className: "editor-container", children: [_jsxs("div", { className: "grid grid-cols-2 gap-2 border border-gray-500 p-2 rounded-md bg-gray-1001", children: [_jsx("div", { className: "col-span-1 flex items-center", children: _jsx("h1", { className: "text-xl md:text-2xl font-bold", children: "Billing Statement" }) }), _jsxs("div", { className: "grid col-span-1 grid-rows-2 gap-2 justify-end ", children: [_jsxs("div", { className: "col-span-1 space-x-2", children: [_jsx("span", { children: "Submitter" }), _jsx("span", { children: state.contributor })] }), _jsxs("div", { className: "col-span-1 space-x-2", children: [_jsx("span", { children: "Status" }), _jsx("span", { children: state.status })] })] })] }), _jsx("div", { className: "mt-6 p-2", children: _jsxs("div", { className: "flex justify-end", children: [_jsx("span", { className: "mr-2 pt-2", children: "Currency: " }), _jsx(CurrencyForm, { currency: state.currency, handleInputChange: (e) => {
22
18
  dispatch(actions.editBillingStatement({ currency: e.target.value }));
23
19
  } })] }) }), _jsx("div", { className: "", children: _jsx(LineItemsTable, { state: state, dispatch: dispatch }) }), _jsxs("div", { className: "grid sm:grid-cols-2", children: [_jsx("div", { className: "mt-6 p-2 two-column-grid:mt-2", children: _jsx(Textarea, { label: "Notes", placeholder: "Add notes", autoExpand: false, rows: 4, multiline: true, value: notes, onBlur: (e) => {
24
20
  const newValue = e.target.value;
@@ -1 +1 @@
1
- {"version":3,"file":"EditorContainer.d.ts","sourceRoot":"","sources":["../../../../editors/contributor-billing/components/EditorContainer.tsx"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO;IACrC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,4CAmGA,CAAC"}
1
+ {"version":3,"file":"EditorContainer.d.ts","sourceRoot":"","sources":["../../../../editors/contributor-billing/components/EditorContainer.tsx"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO;IACrC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,4CAgGA,CAAC"}
@@ -52,5 +52,5 @@ export const EditorContainer = (props) => {
52
52
  _jsxs(Suspense, { fallback: loadingContent, children: [_jsx(DocumentToolbar, { onClose: handleClose, onExport: onExport, onShowRevisionHistory: () => setShowRevisionHistory(true), onSwitchboardLinkClick: () => { }, title: selectedDocument.header.name, timelineButtonVisible: editorModule.config.timelineEnabled, timelineItems: timelineItems.data, onTimelineItemClick: setSelectedTimelineItem }), _jsx(EditorComponent, { context: {
53
53
  readMode: !!selectedTimelineItem,
54
54
  selectedTimelineRevision: getRevisionFromDate(selectedTimelineItem?.startDate, selectedTimelineItem?.endDate, selectedDocument.operations.global),
55
- }, dispatch: dispatch, document: selectedDocument, error: console.error })] }));
55
+ }, documentId: selectedDocument.header.id })] }));
56
56
  };
@@ -1 +1 @@
1
- {"version":3,"file":"InvoiceTable.d.ts","sourceRoot":"","sources":["../../../../../editors/contributor-billing/components/InvoiceTable/InvoiceTable.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AA2B1D,UAAU,iBAAiB;IACzB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACpC,WAAW,EAAE,CACX,QAAQ,EACJ;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GACzB,CAAC,CAAC,IAAI,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,KACjE,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,sBAAsB,EAAE,mBAAmB,EAAE,CAAC;IAC9C,qBAAqB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IACtC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7E,qBAAqB,EAAE,MAAM,OAAO,CAAC;CACtC;AAED,eAAO,MAAM,YAAY,GAAI,kPAgB1B,iBAAiB,4CA0nBnB,CAAC"}
1
+ {"version":3,"file":"InvoiceTable.d.ts","sourceRoot":"","sources":["../../../../../editors/contributor-billing/components/InvoiceTable/InvoiceTable.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AA2B1D,UAAU,iBAAiB;IACzB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACpC,WAAW,EAAE,CACX,QAAQ,EACJ;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GACzB,CAAC,CAAC,IAAI,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,KACjE,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,sBAAsB,EAAE,mBAAmB,EAAE,CAAC;IAC9C,qBAAqB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IACtC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7E,qBAAqB,EAAE,MAAM,OAAO,CAAC;CACtC;AAED,eAAO,MAAM,YAAY,GAAI,kPAgB1B,iBAAiB,4CAwoBnB,CAAC"}
@@ -202,10 +202,16 @@ export const InvoiceTable = ({ files, state, setActiveDocumentId, selected, setS
202
202
  };
203
203
  // check if integrations document exists
204
204
  const integrationsDoc = files.find((file) => file.documentType === "powerhouse/integrations");
205
- const createIntegrationsDocument = () => {
205
+ const createIntegrationsDocument = async () => {
206
206
  const integrationsDocument = filteredDocumentModels?.find((model) => model.documentModel.id === "powerhouse/integrations");
207
207
  if (integrationsDocument) {
208
- onSelectDocumentModel(integrationsDocument);
208
+ const createdNode = await addDocument(selectedDrive?.header.id || "", `integration-settings`, "powerhouse/integrations", undefined, undefined, undefined, "integrations-editor");
209
+ console.log("created integrations document", createdNode);
210
+ if (!createdNode?.id) {
211
+ console.error("Failed to create integrations document");
212
+ return null;
213
+ }
214
+ setActiveDocumentId(createdNode.id);
209
215
  }
210
216
  };
211
217
  return (_jsxs("div", { className: "w-full h-full bg-white rounded-lg p-4 border border-gray-200 shadow-md mt-4 overflow-x-auto", children: [_jsx(HeaderControls, { statusOptions: statusOptions, onStatusChange: onStatusChange, onBatchAction: onBatchAction, onExport: handleCSVExport, selectedStatuses: selectedStatuses, createIntegrationsDocument: createIntegrationsDocument, integrationsDoc: integrationsDoc, setActiveDocumentId: setActiveDocumentId, canExportSelectedRows: canExportSelectedRows }), shouldShowSection("DRAFT") && (_jsx(InvoiceTableSection, { title: "Draft", count: draft.length, onSelectDocumentModel: onSelectDocumentModel, filteredDocumentModels: filteredDocumentModels, children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: draft.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("ISSUED") && (_jsx(InvoiceTableSection, { title: "Issued", count: issued.length, children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: issued.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("ACCEPTED") && (_jsx(InvoiceTableSection, { title: "Accepted", count: accepted.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: accepted.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTSCHEDULED") && (_jsx(InvoiceTableSection, { title: "Payment Scheduled", count: paymentScheduled.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentScheduled.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTSENT") && (_jsx(InvoiceTableSection, { title: "Payment Sent", count: paymentSent.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentSent.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTISSUE") && (_jsx(InvoiceTableSection, { title: "Payment Issue", count: paymentIssue.length, color: "bg-yellow-100 text-yellow-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentIssue.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTCLOSED") && (_jsx(InvoiceTableSection, { title: "Payment Closed", count: paymentClosed.length, color: "bg-red-500 text-black-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentClosed.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("REJECTED") && (_jsx(InvoiceTableSection, { title: "Rejected", count: rejected.length, color: "bg-red-500 text-black-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: rejected.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("OTHER") && (_jsx(InvoiceTableSection, { title: "Other", count: otherInvoices.length, children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Exported" })] }) }), _jsx("tbody", { children: otherInvoices.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => onRowSelection(row.id, checked, row.status), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) }))] }, `${state.length}`));
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/contributor-billing/editor.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AAGxC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,2CAOjD;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,gBAAgB,2CAarD"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/contributor-billing/editor.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AAGxC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,2CAMjD;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,gBAAgB,2CAarD"}
@@ -7,8 +7,7 @@ import { DriveExplorer } from "./components/DriveExplorer.js";
7
7
  * Customize document opening behavior and drive-level actions here.
8
8
  */
9
9
  export function BaseEditor(props) {
10
- const { context, document } = props;
11
- return (_jsx("div", { className: "new-drive-explorer", style: { height: "100%" }, children: _jsx(DriveExplorer, { document: document, context: context }) }));
10
+ return (_jsx("div", { className: "new-drive-explorer", style: { height: "100%" }, children: _jsx(DriveExplorer, { ...props }) }));
12
11
  }
13
12
  /**
14
13
  * Main editor entry point with required providers.
@@ -1,2 +1,2 @@
1
- export default function Editor(props: any): import("react/jsx-runtime").JSX.Element;
1
+ export default function Editor(props: any): import("react/jsx-runtime").JSX.Element | null;
2
2
  //# sourceMappingURL=editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/integrations/editor.tsx"],"names":[],"mappings":"AAeA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,GAAG,2CA8TxC"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/integrations/editor.tsx"],"names":[],"mappings":"AAgBA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,GAAG,kDAyTxC"}
@@ -2,49 +2,45 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { actions, } from "../../document-models/integrations/index.js";
3
3
  import { Button } from "@powerhousedao/document-engineering";
4
4
  import { useState } from "react";
5
- import { useSelectedDocument } from "@powerhousedao/reactor-browser";
5
+ import { useDocumentById } from "@powerhousedao/reactor-browser";
6
6
  const TABS = [
7
7
  { key: "requestFinance", label: "Request Finance" },
8
8
  { key: "gnosisSafe", label: "Gnosis Safe" },
9
9
  { key: "googleCloud", label: "Google Cloud" },
10
10
  ];
11
11
  export default function Editor(props) {
12
- let dispatch;
13
- const { document } = props;
14
- if (props?.dispatch) {
15
- dispatch = props.dispatch;
16
- }
17
- else {
18
- const selectedDocument = useSelectedDocument();
19
- dispatch = selectedDocument[1];
12
+ const [doc, dispatch] = useDocumentById(props.documentId);
13
+ const state = doc?.state.global;
14
+ if (!state) {
15
+ console.log("Document state not found from document id", props.documentId);
16
+ return null;
20
17
  }
21
18
  const [activeTab, setActiveTab] = useState("requestFinance");
22
19
  // State for each form
23
20
  const [requestFinance, setRequestFinance] = useState(() => ({
24
- apiKey: document.state.global.requestFinance?.apiKey || "",
25
- email: document.state.global.requestFinance?.email || "",
21
+ apiKey: state.requestFinance?.apiKey || "",
22
+ email: state.requestFinance?.email || "",
26
23
  }));
27
24
  const [gnosisSafe, setGnosisSafe] = useState(() => ({
28
- safeAddress: document.state.global.gnosisSafe?.safeAddress || "",
29
- signerPrivateKey: document.state.global.gnosisSafe?.signerPrivateKey || "",
25
+ safeAddress: state.gnosisSafe?.safeAddress || "",
26
+ signerPrivateKey: state.gnosisSafe?.signerPrivateKey || "",
30
27
  }));
31
28
  const [googleCloud, setGoogleCloud] = useState(() => ({
32
- projectId: document.state.global.googleCloud?.projectId || "",
33
- location: document.state.global.googleCloud?.location || "",
34
- processorId: document.state.global.googleCloud?.processorId || "",
29
+ projectId: state.googleCloud?.projectId || "",
30
+ location: state.googleCloud?.location || "",
31
+ processorId: state.googleCloud?.processorId || "",
35
32
  keyFile: {
36
- type: document.state.global.googleCloud?.keyFile?.type || "",
37
- project_id: document.state.global.googleCloud?.keyFile?.project_id || "",
38
- private_key_id: document.state.global.googleCloud?.keyFile?.private_key_id || "",
39
- private_key: document.state.global.googleCloud?.keyFile?.private_key || "",
40
- client_email: document.state.global.googleCloud?.keyFile?.client_email || "",
41
- client_id: document.state.global.googleCloud?.keyFile?.client_id || "",
42
- auth_uri: document.state.global.googleCloud?.keyFile?.auth_uri || "",
43
- token_uri: document.state.global.googleCloud?.keyFile?.token_uri || "",
44
- auth_provider_x509_cert_url: document.state.global.googleCloud?.keyFile
45
- ?.auth_provider_x509_cert_url || "",
46
- client_x509_cert_url: document.state.global.googleCloud?.keyFile?.client_x509_cert_url || "",
47
- universe_domain: document.state.global.googleCloud?.keyFile?.universe_domain || "",
33
+ type: state.googleCloud?.keyFile?.type || "",
34
+ project_id: state.googleCloud?.keyFile?.project_id || "",
35
+ private_key_id: state.googleCloud?.keyFile?.private_key_id || "",
36
+ private_key: state.googleCloud?.keyFile?.private_key || "",
37
+ client_email: state.googleCloud?.keyFile?.client_email || "",
38
+ client_id: state.googleCloud?.keyFile?.client_id || "",
39
+ auth_uri: state.googleCloud?.keyFile?.auth_uri || "",
40
+ token_uri: state.googleCloud?.keyFile?.token_uri || "",
41
+ auth_provider_x509_cert_url: state.googleCloud?.keyFile?.auth_provider_x509_cert_url || "",
42
+ client_x509_cert_url: state.googleCloud?.keyFile?.client_x509_cert_url || "",
43
+ universe_domain: state.googleCloud?.keyFile?.universe_domain || "",
48
44
  },
49
45
  }));
50
46
  // Handlers
@@ -65,10 +61,9 @@ export default function Editor(props) {
65
61
  : "border-transparent text-gray-500 bg-gray-100 hover:text-blue-500"}`, onClick: () => setActiveTab(tab.key), type: "button", children: tab.label }, tab.key))) }), _jsxs("div", { className: "bg-white rounded-xl shadow p-4 sm:p-6", children: [activeTab === "requestFinance" && (_jsxs("form", { className: "flex flex-col gap-4", onSubmit: (e) => {
66
62
  e.preventDefault();
67
63
  handleRequestFinanceSave();
68
- }, children: [_jsx("h2", { className: "text-lg font-semibold mb-2", children: "Request Finance API" }), _jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-sm font-medium", children: "API Key" }), _jsx("input", { className: "input input-bordered rounded px-3 py-2 border border-gray-300 focus:border-blue-400 focus:ring focus:ring-blue-100 text-sm", type: "text", value: requestFinance.apiKey, onChange: (e) => setRequestFinance((v) => ({ ...v, apiKey: e.target.value })), placeholder: "Enter API Key" })] }), _jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-sm font-medium", children: "Email" }), _jsx("input", { className: "input input-bordered rounded px-3 py-2 border border-gray-300 focus:border-blue-400 focus:ring focus:ring-blue-100 text-sm", type: "email", value: requestFinance.email, onChange: (e) => setRequestFinance((v) => ({ ...v, email: e.target.value })), placeholder: "Enter Email" })] }), _jsx("div", { className: "flex justify-end mt-2", children: _jsx(Button, { size: "sm", variant: "outline", color: "black", type: "submit", className: "hover:bg-gray-200", disabled: document.state.global.requestFinance?.apiKey ===
64
+ }, children: [_jsx("h2", { className: "text-lg font-semibold mb-2", children: "Request Finance API" }), _jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-sm font-medium", children: "API Key" }), _jsx("input", { className: "input input-bordered rounded px-3 py-2 border border-gray-300 focus:border-blue-400 focus:ring focus:ring-blue-100 text-sm", type: "text", value: requestFinance.apiKey, onChange: (e) => setRequestFinance((v) => ({ ...v, apiKey: e.target.value })), placeholder: "Enter API Key" })] }), _jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-sm font-medium", children: "Email" }), _jsx("input", { className: "input input-bordered rounded px-3 py-2 border border-gray-300 focus:border-blue-400 focus:ring focus:ring-blue-100 text-sm", type: "email", value: requestFinance.email, onChange: (e) => setRequestFinance((v) => ({ ...v, email: e.target.value })), placeholder: "Enter Email" })] }), _jsx("div", { className: "flex justify-end mt-2", children: _jsx(Button, { size: "sm", variant: "outline", color: "black", type: "submit", className: "hover:bg-gray-200", disabled: state.requestFinance?.apiKey ===
69
65
  requestFinance.apiKey &&
70
- document.state.global.requestFinance?.email ===
71
- requestFinance.email, children: "Save" }) })] })), activeTab === "gnosisSafe" && (_jsxs("form", { className: "flex flex-col gap-4", onSubmit: (e) => {
66
+ state.requestFinance?.email === requestFinance.email, children: "Save" }) })] })), activeTab === "gnosisSafe" && (_jsxs("form", { className: "flex flex-col gap-4", onSubmit: (e) => {
72
67
  e.preventDefault();
73
68
  handleGnosisSafeSave();
74
69
  }, children: [_jsx("h2", { className: "text-lg font-semibold mb-2", children: "Gnosis Safe" }), _jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-sm font-medium", children: "Safe Address" }), _jsx("input", { className: "input input-bordered rounded px-3 py-2 border border-gray-300 focus:border-blue-400 focus:ring focus:ring-blue-100 text-sm", type: "text", value: gnosisSafe.safeAddress, onChange: (e) => setGnosisSafe((v) => ({
@@ -77,9 +72,9 @@ export default function Editor(props) {
77
72
  })), placeholder: "0x..." })] }), _jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-sm font-medium", children: "Signer Private Key" }), _jsx("input", { className: "input input-bordered rounded px-3 py-2 border border-gray-300 focus:border-blue-400 focus:ring focus:ring-blue-100 text-sm", type: "text", value: gnosisSafe.signerPrivateKey, onChange: (e) => setGnosisSafe((v) => ({
78
73
  ...v,
79
74
  signerPrivateKey: e.target.value,
80
- })), placeholder: "Private Key" })] }), _jsx("div", { className: "flex justify-end mt-2", children: _jsx(Button, { size: "sm", variant: "outline", color: "black", type: "submit", className: "hover:bg-gray-200", disabled: document.state.global.gnosisSafe?.safeAddress ===
75
+ })), placeholder: "Private Key" })] }), _jsx("div", { className: "flex justify-end mt-2", children: _jsx(Button, { size: "sm", variant: "outline", color: "black", type: "submit", className: "hover:bg-gray-200", disabled: state.gnosisSafe?.safeAddress ===
81
76
  gnosisSafe.safeAddress &&
82
- document.state.global.gnosisSafe?.signerPrivateKey ===
77
+ state.gnosisSafe?.signerPrivateKey ===
83
78
  gnosisSafe.signerPrivateKey, children: "Save" }) })] })), activeTab === "googleCloud" && (_jsxs("form", { className: "flex flex-col gap-4", onSubmit: (e) => {
84
79
  e.preventDefault();
85
80
  handleGoogleCloudSave();
@@ -89,34 +84,33 @@ export default function Editor(props) {
89
84
  })), placeholder: "Processor ID" })] }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: Object.entries(googleCloud.keyFile).map(([key, value]) => (_jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-sm font-medium", children: key.replace(/_/g, " ") }), _jsx("input", { className: "input input-bordered rounded px-3 py-2 border border-gray-300 focus:border-blue-400 focus:ring focus:ring-blue-100 text-sm", type: "text", value: value, onChange: (e) => setGoogleCloud((v) => ({
90
85
  ...v,
91
86
  keyFile: { ...v.keyFile, [key]: e.target.value },
92
- })), placeholder: key.replace(/_/g, " ") })] }, key))) }), _jsx("div", { className: "flex justify-end mt-2", children: _jsx(Button, { size: "sm", variant: "outline", color: "black", type: "submit", className: "hover:bg-gray-200", disabled: document.state.global.googleCloud?.projectId ===
87
+ })), placeholder: key.replace(/_/g, " ") })] }, key))) }), _jsx("div", { className: "flex justify-end mt-2", children: _jsx(Button, { size: "sm", variant: "outline", color: "black", type: "submit", className: "hover:bg-gray-200", disabled: state.googleCloud?.projectId ===
93
88
  googleCloud.projectId &&
94
- document.state.global.googleCloud?.location ===
89
+ state.googleCloud?.location ===
95
90
  googleCloud.location &&
96
- document.state.global.googleCloud?.processorId ===
91
+ state.googleCloud?.processorId ===
97
92
  googleCloud.processorId &&
98
- document.state.global.googleCloud?.keyFile?.type ===
93
+ state.googleCloud?.keyFile?.type ===
99
94
  googleCloud.keyFile.type &&
100
- document.state.global.googleCloud?.keyFile?.project_id ===
95
+ state.googleCloud?.keyFile?.project_id ===
101
96
  googleCloud.keyFile.project_id &&
102
- document.state.global.googleCloud?.keyFile
103
- ?.private_key_id === googleCloud.keyFile.private_key_id &&
104
- document.state.global.googleCloud?.keyFile?.private_key ===
97
+ state.googleCloud?.keyFile?.private_key_id ===
98
+ googleCloud.keyFile.private_key_id &&
99
+ state.googleCloud?.keyFile?.private_key ===
105
100
  googleCloud.keyFile.private_key &&
106
- document.state.global.googleCloud?.keyFile?.client_email ===
101
+ state.googleCloud?.keyFile?.client_email ===
107
102
  googleCloud.keyFile.client_email &&
108
- document.state.global.googleCloud?.keyFile?.client_id ===
103
+ state.googleCloud?.keyFile?.client_id ===
109
104
  googleCloud.keyFile.client_id &&
110
- document.state.global.googleCloud?.keyFile?.auth_uri ===
105
+ state.googleCloud?.keyFile?.auth_uri ===
111
106
  googleCloud.keyFile.auth_uri &&
112
- document.state.global.googleCloud?.keyFile?.token_uri ===
107
+ state.googleCloud?.keyFile?.token_uri ===
113
108
  googleCloud.keyFile.token_uri &&
114
- document.state.global.googleCloud?.keyFile
109
+ state.googleCloud?.keyFile
115
110
  ?.auth_provider_x509_cert_url ===
116
111
  googleCloud.keyFile.auth_provider_x509_cert_url &&
117
- document.state.global.googleCloud?.keyFile
118
- ?.client_x509_cert_url ===
112
+ state.googleCloud?.keyFile?.client_x509_cert_url ===
119
113
  googleCloud.keyFile.client_x509_cert_url &&
120
- document.state.global.googleCloud?.keyFile
121
- ?.universe_domain === googleCloud.keyFile.universe_domain, children: "Save" }) })] }))] })] }) }));
114
+ state.googleCloud?.keyFile?.universe_domain ===
115
+ googleCloud.keyFile.universe_domain, children: "Save" }) })] }))] })] }) }));
122
116
  }
@@ -1,2 +1,2 @@
1
- export default function Editor(props: any): import("react/jsx-runtime").JSX.Element;
1
+ export default function Editor(props: any): import("react/jsx-runtime").JSX.Element | null;
2
2
  //# sourceMappingURL=editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/invoice/editor.tsx"],"names":[],"mappings":"AA6CA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,GAAG,2CAg7BxC"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/invoice/editor.tsx"],"names":[],"mappings":"AA6CA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,GAAG,kDAi7BxC"}
@@ -23,21 +23,17 @@ import ConfirmationModal from "./components/confirmationModal.js";
23
23
  import { ClosePaymentModalContent, ConfirmPaymentModalContent, FinalRejectionModalContent, IssueInvoiceModalContent, RegisterPaymentTxModalContent, RejectInvoiceModalContent, ReportPaymentIssueModalContent, SchedulePaymentModalContent, } from "./components/statusModalComponents.js";
24
24
  import { InvoiceStateSchema } from "../../document-models/invoice/gen/schema/zod.js";
25
25
  import validateStatusBeforeContinue from "./validation/validationHandler.js";
26
- import { useSelectedDocument } from "@powerhousedao/reactor-browser";
26
+ import { useDocumentById } from "@powerhousedao/reactor-browser";
27
27
  function isFiatCurrency(currency) {
28
28
  return currencyList.find((c) => c.ticker === currency)?.crypto === false;
29
29
  }
30
30
  export default function Editor(props) {
31
- let dispatch;
32
- const { document: doc } = props;
33
- if (props?.dispatch) {
34
- dispatch = props.dispatch;
31
+ const [doc, dispatch] = useDocumentById(props.documentId);
32
+ const state = doc?.state.global;
33
+ if (!state) {
34
+ console.log("Document state not found from document id", props.documentId);
35
+ return null;
35
36
  }
36
- else {
37
- const selectedDocument = useSelectedDocument();
38
- dispatch = selectedDocument[1];
39
- }
40
- const state = doc.state.global;
41
37
  // Dynamic property check based on the actual schema
42
38
  try {
43
39
  const schema = InvoiceStateSchema();
package/dist/style.css CHANGED
@@ -5604,6 +5604,95 @@ input[type="number"] {
5604
5604
  cursor: pointer;
5605
5605
  }
5606
5606
  }
5607
+ .ph-default-styles h1 {
5608
+ font-family: "Inter", sans-serif;
5609
+ font-style: normal;
5610
+ font-weight: 600;
5611
+ font-size: 32px;
5612
+ line-height: 120%;
5613
+ color: #343839;
5614
+ }
5615
+ .ph-default-styles h2 {
5616
+ font-family: "Inter", sans-serif;
5617
+ font-style: normal;
5618
+ font-weight: 600;
5619
+ font-size: 24px;
5620
+ line-height: 120%;
5621
+ color: #343839;
5622
+ }
5623
+ .ph-default-styles h3 {
5624
+ font-family: "Inter", sans-serif;
5625
+ font-style: normal;
5626
+ font-weight: 600;
5627
+ font-size: 20px;
5628
+ line-height: 120%;
5629
+ color: #343839;
5630
+ }
5631
+ .ph-default-styles p {
5632
+ font-family: "Inter", sans-serif;
5633
+ font-style: normal;
5634
+ font-weight: 400;
5635
+ font-size: 16px;
5636
+ line-height: 120%;
5637
+ color: #343839;
5638
+ }
5639
+ .ph-default-styles small {
5640
+ font-family: "Inter", sans-serif;
5641
+ font-style: normal;
5642
+ font-weight: 400;
5643
+ font-size: 14px;
5644
+ line-height: 100%;
5645
+ color: #474d4e;
5646
+ }
5647
+ .ph-default-styles input[type="text"], .ph-default-styles input[type="email"], .ph-default-styles input[type="password"], .ph-default-styles input[type="search"], .ph-default-styles input[type="tel"], .ph-default-styles input[type="url"], .ph-default-styles input[type="number"], .ph-default-styles textarea {
5648
+ font-family: "Inter", sans-serif;
5649
+ font-size: 0.875rem;
5650
+ font-weight: 400;
5651
+ line-height: 1.25rem;
5652
+ color: #343839;
5653
+ background-color: #ffffff;
5654
+ border: 1px solid #ced4da;
5655
+ border-radius: 0.375rem;
5656
+ padding: 7px 0.75rem;
5657
+ width: 100%;
5658
+ box-sizing: border-box;
5659
+ margin-bottom: 10px;
5660
+ }
5661
+ .ph-default-styles textarea {
5662
+ min-height: 2.25rem;
5663
+ resize: vertical;
5664
+ }
5665
+ .ph-default-styles a {
5666
+ color: #007bff;
5667
+ text-decoration: none;
5668
+ }
5669
+ .ph-default-styles a:hover {
5670
+ text-decoration: underline;
5671
+ color: #0056b3;
5672
+ }
5673
+ .ph-default-styles a:focus {
5674
+ outline: 2px solid transparent;
5675
+ outline-offset: 2px;
5676
+ box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px rgba(0, 123, 255, 0.5);
5677
+ }
5678
+ .ph-default-styles ul, .ph-default-styles ol {
5679
+ padding-left: 0px;
5680
+ margin-top: 0;
5681
+ margin-bottom: 0;
5682
+ }
5683
+ .ph-default-styles label {
5684
+ display: block;
5685
+ font-family: "Inter", sans-serif;
5686
+ font-weight: 500;
5687
+ color: #343839;
5688
+ }
5689
+ .ph-default-styles hr {
5690
+ border: 0;
5691
+ height: 1px;
5692
+ background-color: #ced4da;
5693
+ margin-top: 1rem;
5694
+ margin-bottom: 1rem;
5695
+ }
5607
5696
  @layer base {
5608
5697
  * {
5609
5698
  scrollbar-color: initial;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@powerhousedao/contributor-billing",
3
3
  "description": "Document models that help contributors of open organisations get paid anonymously for their work on a monthly basis.",
4
- "version": "0.0.91",
4
+ "version": "0.0.92",
5
5
  "license": "AGPL-3.0-only",
6
6
  "type": "module",
7
7
  "files": [
@@ -57,9 +57,9 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@google-cloud/documentai": "^8.12.0",
60
- "@powerhousedao/builder-tools": "^5.0.0-staging.18",
61
- "@powerhousedao/common": "^5.0.0-staging.18",
62
- "@powerhousedao/design-system": "^5.0.0-staging.18",
60
+ "@powerhousedao/builder-tools": "^5.0.0-staging.19",
61
+ "@powerhousedao/common": "^5.0.0-staging.19",
62
+ "@powerhousedao/design-system": "^5.0.0-staging.19",
63
63
  "@powerhousedao/document-engineering": "^1.37.0",
64
64
  "@react-pdf/renderer": "^4.3.0",
65
65
  "@safe-global/api-kit": "^3.0.1",
@@ -69,7 +69,7 @@
69
69
  "@types/cors": "^2.8.17",
70
70
  "axios": "^1.9.0",
71
71
  "cors": "^2.8.5",
72
- "document-model": "^5.0.0-staging.18",
72
+ "document-model": "^5.0.0-staging.19",
73
73
  "dotenv": "^16.5.0",
74
74
  "error": "^10.4.0",
75
75
  "ethers": "^6.14.0",
@@ -85,19 +85,19 @@
85
85
  "@electric-sql/pglite": "^0.2.12",
86
86
  "@eslint/js": "^9.25.0",
87
87
  "@powerhousedao/analytics-engine-core": "^0.5.0",
88
- "@powerhousedao/codegen": "^5.0.0-staging.18",
89
- "@powerhousedao/ph-cli": "^5.0.0-staging.18",
90
- "@powerhousedao/reactor-api": "^5.0.0-staging.18",
91
- "@powerhousedao/reactor-browser": "^5.0.0-staging.18",
92
- "@powerhousedao/reactor-local": "^5.0.0-staging.18",
88
+ "@powerhousedao/codegen": "^5.0.0-staging.19",
89
+ "@powerhousedao/ph-cli": "^5.0.0-staging.19",
90
+ "@powerhousedao/reactor-api": "^5.0.0-staging.19",
91
+ "@powerhousedao/reactor-browser": "^5.0.0-staging.19",
92
+ "@powerhousedao/reactor-local": "^5.0.0-staging.19",
93
93
  "@powerhousedao/scalars": "^1.33.1-staging.5",
94
- "@powerhousedao/switchboard": "^5.0.0-staging.18",
94
+ "@powerhousedao/switchboard": "^5.0.0-staging.19",
95
95
  "@tailwindcss/cli": "^4.1.4",
96
96
  "@testing-library/react": "^16.3.0",
97
97
  "@types/node": "^22.14.1",
98
98
  "@types/react": "^18.3.20",
99
99
  "@vitejs/plugin-react": "^4.4.1",
100
- "document-drive": "^5.0.0-staging.18",
100
+ "document-drive": "^5.0.0-staging.19",
101
101
  "eslint": "^9.25.0",
102
102
  "eslint-plugin-react": "^7.37.5",
103
103
  "eslint-plugin-react-hooks": "^5.2.0",