@openrails/billing-ui 0.242.0 → 0.243.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/CHANGELOG.md +27 -11
- package/README.md +41 -8
- package/dist/admin/billing-admin.d.ts +3 -0
- package/dist/admin/components/app-sidebar.d.ts +1 -0
- package/dist/admin/components/confirm.d.ts +4 -0
- package/dist/admin/components/cursor-pager.d.ts +8 -0
- package/dist/admin/components/data-table.d.ts +14 -0
- package/dist/admin/components/fact-card.d.ts +5 -0
- package/dist/admin/components/form-field-errors.d.ts +3 -0
- package/dist/admin/components/linked-table-row.d.ts +5 -0
- package/dist/admin/components/logo.d.ts +3 -0
- package/dist/admin/components/no-access.d.ts +3 -0
- package/dist/admin/components/no-merchants.d.ts +1 -0
- package/dist/admin/components/notification-bell.d.ts +2 -0
- package/dist/admin/components/route-error.d.ts +3 -0
- package/dist/admin/components/site-header.d.ts +9 -0
- package/dist/admin/components/status-badge.d.ts +3 -0
- package/dist/admin/components/typed-confirm-dialog.d.ts +11 -0
- package/dist/admin/components/ui/alert-dialog.d.ts +18 -0
- package/dist/admin/components/ui/avatar.d.ts +11 -0
- package/dist/admin/components/ui/badge.d.ts +7 -0
- package/dist/admin/components/ui/breadcrumb.d.ts +10 -0
- package/dist/admin/components/ui/button.d.ts +8 -0
- package/dist/admin/components/ui/card.d.ts +11 -0
- package/dist/admin/components/ui/chart.d.ts +44 -0
- package/dist/admin/components/ui/dialog.d.ts +17 -0
- package/dist/admin/components/ui/dropdown-menu.d.ts +29 -0
- package/dist/admin/components/ui/input.d.ts +3 -0
- package/dist/admin/components/ui/label.d.ts +3 -0
- package/dist/admin/components/ui/select.d.ts +15 -0
- package/dist/admin/components/ui/separator.d.ts +3 -0
- package/dist/admin/components/ui/sheet.d.ts +14 -0
- package/dist/admin/components/ui/sidebar.d.ts +63 -0
- package/dist/admin/components/ui/skeleton.d.ts +2 -0
- package/dist/admin/components/ui/sonner.d.ts +3 -0
- package/dist/admin/components/ui/switch.d.ts +5 -0
- package/dist/admin/components/ui/table.d.ts +10 -0
- package/dist/admin/components/ui/tabs.d.ts +10 -0
- package/dist/admin/components/ui/textarea.d.ts +3 -0
- package/dist/admin/components/ui/tooltip.d.ts +6 -0
- package/dist/admin/context.d.ts +1193 -0
- package/dist/admin/hooks/use-mobile.d.ts +1 -0
- package/dist/admin/index.d.ts +5 -0
- package/dist/admin/layouts/app-layout.d.ts +4 -0
- package/dist/admin/lib/api/client.d.ts +64 -0
- package/dist/admin/lib/api/copilot.d.ts +6 -0
- package/dist/admin/lib/api/credit-endpoints.d.ts +8 -0
- package/dist/admin/lib/api/credit-types.d.ts +9 -0
- package/dist/admin/lib/api/endpoints.d.ts +133 -0
- package/dist/admin/lib/api/index.d.ts +89 -0
- package/dist/admin/lib/api/invoice-profile-endpoints.d.ts +6 -0
- package/dist/admin/lib/api/metrics.d.ts +68 -0
- package/dist/admin/lib/api/order-endpoints.d.ts +21 -0
- package/dist/admin/lib/api/types.d.ts +122 -0
- package/dist/admin/lib/auth.d.ts +6 -0
- package/dist/admin/lib/capabilities.d.ts +13 -0
- package/dist/admin/lib/chunk-error.d.ts +1 -0
- package/dist/admin/lib/confirm.d.ts +11 -0
- package/dist/admin/lib/credit-queries.d.ts +23 -0
- package/dist/admin/lib/csv.d.ts +3 -0
- package/dist/admin/lib/cursor-pages.d.ts +13 -0
- package/dist/admin/lib/dialog-width.d.ts +6 -0
- package/dist/admin/lib/dom.d.ts +1 -0
- package/dist/admin/lib/duration.d.ts +3 -0
- package/dist/admin/lib/format.d.ts +23 -0
- package/dist/admin/lib/mount.d.ts +6 -0
- package/dist/admin/lib/mutations.d.ts +125 -0
- package/dist/admin/lib/order-queries.d.ts +29 -0
- package/dist/admin/lib/queries.d.ts +369 -0
- package/dist/admin/lib/query-client.d.ts +3 -0
- package/dist/admin/lib/toast.d.ts +10 -0
- package/dist/admin/lib/utils.d.ts +2 -0
- package/dist/admin/messages.d.ts +670 -0
- package/dist/admin/navigation.d.ts +14 -0
- package/dist/admin/pages/catalog/application-dialog.d.ts +2 -0
- package/dist/admin/pages/catalog/copilot-panel.d.ts +4 -0
- package/dist/admin/pages/catalog/index.d.ts +4 -0
- package/dist/admin/pages/catalog/meter-form.d.ts +6 -0
- package/dist/admin/pages/catalog/metering-model.d.ts +67 -0
- package/dist/admin/pages/catalog/metering.d.ts +3 -0
- package/dist/admin/pages/catalog/price-detail.d.ts +2 -0
- package/dist/admin/pages/catalog/price-format.d.ts +3 -0
- package/dist/admin/pages/catalog/price-wizard-logic.d.ts +20 -0
- package/dist/admin/pages/catalog/price-wizard.d.ts +10 -0
- package/dist/admin/pages/catalog/psp-links.d.ts +10 -0
- package/dist/admin/pages/catalog/rate-card-editor.d.ts +10 -0
- package/dist/admin/pages/customers/credit-form.d.ts +14 -0
- package/dist/admin/pages/customers/credits.d.ts +5 -0
- package/dist/admin/pages/customers/default-card-badges.d.ts +3 -0
- package/dist/admin/pages/customers/detail.d.ts +5 -0
- package/dist/admin/pages/customers/grant-duration.d.ts +32 -0
- package/dist/admin/pages/customers/index.d.ts +2 -0
- package/dist/admin/pages/customers/invoice-profile-model.d.ts +18 -0
- package/dist/admin/pages/customers/invoice-profile.d.ts +9 -0
- package/dist/admin/pages/dashboard/index.d.ts +2 -0
- package/dist/admin/pages/dashboard/lib.d.ts +48 -0
- package/dist/admin/pages/dashboard/range-picker.d.ts +1 -0
- package/dist/admin/pages/dashboard/range.d.ts +34 -0
- package/dist/admin/pages/dashboard/reports-model.d.ts +29 -0
- package/dist/admin/pages/dashboard/reports.d.ts +2 -0
- package/dist/admin/pages/dashboard/use-range.d.ts +5 -0
- package/dist/admin/pages/dashboard/widget-editor.d.ts +8 -0
- package/dist/admin/pages/dashboard/widget-tile.d.ts +9 -0
- package/dist/admin/pages/dashboard/widget-viz.d.ts +12 -0
- package/dist/admin/pages/ops/index.d.ts +2 -0
- package/dist/admin/pages/orders/detail.d.ts +5 -0
- package/dist/admin/pages/orders/index.d.ts +1 -0
- package/dist/admin/pages/orders/model.d.ts +7 -0
- package/dist/admin/pages/payments/attempts.d.ts +7 -0
- package/dist/admin/pages/payments/detail.d.ts +2 -0
- package/dist/admin/pages/payments/health-model.d.ts +149 -0
- package/dist/admin/pages/payments/health.d.ts +2 -0
- package/dist/admin/pages/payments/index.d.ts +2 -0
- package/dist/admin/pages/settings/configuration-edit.d.ts +9 -0
- package/dist/admin/pages/settings/index.d.ts +9 -0
- package/dist/admin/pages/settings/notifications.d.ts +2 -0
- package/dist/admin/pages/settings/setting-fields.d.ts +20 -0
- package/dist/admin/pages/subscriptions/change-subscription-dialog.d.ts +16 -0
- package/dist/admin/pages/subscriptions/detail.d.ts +2 -0
- package/dist/admin/pages/subscriptions/dunning.d.ts +2 -0
- package/dist/admin/pages/subscriptions/index.d.ts +2 -0
- package/dist/admin/pages/subscriptions/subscription-change-options.d.ts +23 -0
- package/dist/admin/pages/subscriptions/views.d.ts +15 -0
- package/dist/admin/router.d.ts +32 -0
- package/dist/admin/routes.d.ts +5 -0
- package/dist/admin/summary.d.ts +27 -0
- package/dist/admin/theme.d.ts +2 -0
- package/dist/admin/types.d.ts +56 -0
- package/dist/admin/ui-context.d.ts +14 -0
- package/dist/admin-attempts-lAoW-Urd.js +419 -0
- package/dist/admin-attempts-lAoW-Urd.js.map +1 -0
- package/dist/admin-auth-DQGHtt0j.js +14 -0
- package/dist/admin-auth-DQGHtt0j.js.map +1 -0
- package/dist/admin-badge-DR5-1qd8.js +31 -0
- package/dist/admin-badge-DR5-1qd8.js.map +1 -0
- package/dist/admin-button-CTL3DgOt.js +46 -0
- package/dist/admin-button-CTL3DgOt.js.map +1 -0
- package/dist/admin-capabilities-BuigAgtm.js +59 -0
- package/dist/admin-capabilities-BuigAgtm.js.map +1 -0
- package/dist/admin-card-bzAks3-3.js +51 -0
- package/dist/admin-card-bzAks3-3.js.map +1 -0
- package/dist/admin-catalog-CC7I4n0_.js +1189 -0
- package/dist/admin-catalog-CC7I4n0_.js.map +1 -0
- package/dist/admin-confirm-katGq0Qo.js +12 -0
- package/dist/admin-confirm-katGq0Qo.js.map +1 -0
- package/dist/admin-csv-CPoNZj2D.js +16 -0
- package/dist/admin-csv-CPoNZj2D.js.map +1 -0
- package/dist/admin-customers-D8u5gq3M.js +160 -0
- package/dist/admin-customers-D8u5gq3M.js.map +1 -0
- package/dist/admin-dashboard-DqqFjOzq.js +420 -0
- package/dist/admin-dashboard-DqqFjOzq.js.map +1 -0
- package/dist/admin-data-table-qfXLOFmN.js +96 -0
- package/dist/admin-data-table-qfXLOFmN.js.map +1 -0
- package/dist/admin-detail-5aNNvrc0.js +324 -0
- package/dist/admin-detail-5aNNvrc0.js.map +1 -0
- package/dist/admin-detail-7p684Uyc.js +342 -0
- package/dist/admin-detail-7p684Uyc.js.map +1 -0
- package/dist/admin-detail-CGOyqs7s.js +1312 -0
- package/dist/admin-detail-CGOyqs7s.js.map +1 -0
- package/dist/admin-detail-DUAJQg8G.js +710 -0
- package/dist/admin-detail-DUAJQg8G.js.map +1 -0
- package/dist/admin-dialog-BjuKI5Hp.js +88 -0
- package/dist/admin-dialog-BjuKI5Hp.js.map +1 -0
- package/dist/admin-dialog-width-BPrgdYlj.js +6 -0
- package/dist/admin-dialog-width-BPrgdYlj.js.map +1 -0
- package/dist/admin-dom-uMmZzRvU.js +149 -0
- package/dist/admin-dom-uMmZzRvU.js.map +1 -0
- package/dist/admin-dropdown-menu-BW1D_h6s.js +69 -0
- package/dist/admin-dropdown-menu-BW1D_h6s.js.map +1 -0
- package/dist/admin-dunning-B2zgtrOo.js +10 -0
- package/dist/admin-dunning-B2zgtrOo.js.map +1 -0
- package/dist/admin-fact-card-DO_fHosg.js +20 -0
- package/dist/admin-fact-card-DO_fHosg.js.map +1 -0
- package/dist/admin-form-field-errors-hbUMIriS.js +14 -0
- package/dist/admin-form-field-errors-hbUMIriS.js.map +1 -0
- package/dist/admin-format-DoohJ7Fg.js +136 -0
- package/dist/admin-format-DoohJ7Fg.js.map +1 -0
- package/dist/admin-health-B4jN2LwR.js +983 -0
- package/dist/admin-health-B4jN2LwR.js.map +1 -0
- package/dist/admin-input-CcfQfJFN.js +17 -0
- package/dist/admin-input-CcfQfJFN.js.map +1 -0
- package/dist/admin-invoice-profile-model-Cgjy3zV8.js +53 -0
- package/dist/admin-invoice-profile-model-Cgjy3zV8.js.map +1 -0
- package/dist/admin-label-BiEN5cjb.js +15 -0
- package/dist/admin-label-BiEN5cjb.js.map +1 -0
- package/dist/admin-linked-table-row-BsaUruCN.js +26 -0
- package/dist/admin-linked-table-row-BsaUruCN.js.map +1 -0
- package/dist/admin-metering-BGAXbT23.js +1702 -0
- package/dist/admin-metering-BGAXbT23.js.map +1 -0
- package/dist/admin-ops-B3mcr76u.js +217 -0
- package/dist/admin-ops-B3mcr76u.js.map +1 -0
- package/dist/admin-orders-dxC99Idl.js +192 -0
- package/dist/admin-orders-dxC99Idl.js.map +1 -0
- package/dist/admin-payments-Bs7HSfP0.js +246 -0
- package/dist/admin-payments-Bs7HSfP0.js.map +1 -0
- package/dist/admin-price-detail-DRquxpA9.js +482 -0
- package/dist/admin-price-detail-DRquxpA9.js.map +1 -0
- package/dist/admin-price-format-DM1qORWI.js +44 -0
- package/dist/admin-price-format-DM1qORWI.js.map +1 -0
- package/dist/admin-price-wizard-CI7K-2Nz.js +357 -0
- package/dist/admin-price-wizard-CI7K-2Nz.js.map +1 -0
- package/dist/admin-range-picker-Dr2M1EZr.js +192 -0
- package/dist/admin-range-picker-Dr2M1EZr.js.map +1 -0
- package/dist/admin-reports-CywKLiSA.js +320 -0
- package/dist/admin-reports-CywKLiSA.js.map +1 -0
- package/dist/admin-select-DBgprVW6.js +81 -0
- package/dist/admin-select-DBgprVW6.js.map +1 -0
- package/dist/admin-settings-Bmoy95uO.js +1434 -0
- package/dist/admin-settings-Bmoy95uO.js.map +1 -0
- package/dist/admin-skeleton-DsM7crYi.js +14 -0
- package/dist/admin-skeleton-DsM7crYi.js.map +1 -0
- package/dist/admin-status-badge-BFPgo71d.js +38 -0
- package/dist/admin-status-badge-BFPgo71d.js.map +1 -0
- package/dist/admin-subscriptions-CLYc_HEV.js +301 -0
- package/dist/admin-subscriptions-CLYc_HEV.js.map +1 -0
- package/dist/admin-switch-BJUxLCsa.js +20 -0
- package/dist/admin-switch-BJUxLCsa.js.map +1 -0
- package/dist/admin-table-CH9TrXJf.js +61 -0
- package/dist/admin-table-CH9TrXJf.js.map +1 -0
- package/dist/admin-tabs-528FJMjt.js +46 -0
- package/dist/admin-tabs-528FJMjt.js.map +1 -0
- package/dist/admin-textarea-DEz38RaI.js +15 -0
- package/dist/admin-textarea-DEz38RaI.js.map +1 -0
- package/dist/admin-typed-confirm-dialog-DU7m9-O7.js +66 -0
- package/dist/admin-typed-confirm-dialog-DU7m9-O7.js.map +1 -0
- package/dist/admin-utils-BK4Vh1o_.js +1809 -0
- package/dist/admin-utils-BK4Vh1o_.js.map +1 -0
- package/dist/admin-widget-viz-Da48c-Zf.js +581 -0
- package/dist/admin-widget-viz-Da48c-Zf.js.map +1 -0
- package/dist/admin.css +3 -0
- package/dist/admin.js +2164 -0
- package/dist/admin.js.map +1 -0
- package/dist/appearance.d.ts +1 -1
- package/dist/client/generated/error-codes.d.ts +1 -1
- package/dist/client/generated/routes.d.ts +2171 -176
- package/dist/client/generated/wire.d.ts +1273 -0
- package/dist/{hooks-Uiw-zW3H.js → hooks-Ckd8F2JF.js} +7 -7
- package/dist/hooks-Ckd8F2JF.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +11 -11
- package/dist/index.js.map +1 -1
- package/dist/lib/{offer-label.d.ts → price-label.d.ts} +1 -1
- package/dist/locales/de.js +1 -1
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/en.d.ts +1 -1
- package/dist/locales/en.js +1 -1
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es.js +1 -1
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/ja.js +1 -1
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.js +1 -1
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/zh.js +1 -1
- package/dist/locales/zh.js.map +1 -1
- package/dist/{offers.d.ts → product-list.d.ts} +5 -5
- package/dist/react.js +1 -1
- package/dist/styles.css +1 -1
- package/package.json +28 -6
- package/dist/hooks-Uiw-zW3H.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IconSvgElement } from '@hugeicons/react';
|
|
2
|
+
export interface AdminNavItem {
|
|
3
|
+
title: string;
|
|
4
|
+
path: string;
|
|
5
|
+
icon?: IconSvgElement;
|
|
6
|
+
useVisible?: () => boolean;
|
|
7
|
+
order?: number;
|
|
8
|
+
items?: {
|
|
9
|
+
title: string;
|
|
10
|
+
path: string;
|
|
11
|
+
useVisible?: () => boolean;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
export declare const coreNav: AdminNavItem[];
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Meter, MeterRateCard } from '../../../client/generated/wire';
|
|
2
|
+
import { DefaultUsageRateCardRequest, UsageMeterRequest } from '../../lib/api/endpoints';
|
|
3
|
+
export interface KeyValueRow {
|
|
4
|
+
key: string;
|
|
5
|
+
value: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MatrixCellRow {
|
|
8
|
+
key: string;
|
|
9
|
+
unitAmount: string;
|
|
10
|
+
maximumAmount: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TierRow {
|
|
13
|
+
upTo: string;
|
|
14
|
+
unitAmount: string;
|
|
15
|
+
flatAmount: string;
|
|
16
|
+
}
|
|
17
|
+
export interface MeterFormValues {
|
|
18
|
+
key: string;
|
|
19
|
+
eventType: string;
|
|
20
|
+
aggregation: "sum" | "count";
|
|
21
|
+
valueProperty: string;
|
|
22
|
+
unit: string;
|
|
23
|
+
groupBy: KeyValueRow[];
|
|
24
|
+
}
|
|
25
|
+
export type AllowanceMode = "none" | "included";
|
|
26
|
+
export interface RateCardFormValues {
|
|
27
|
+
productId: string;
|
|
28
|
+
model: "per_unit" | "tiered" | "package";
|
|
29
|
+
currency: string;
|
|
30
|
+
unitAmount: string;
|
|
31
|
+
divideBy: string;
|
|
32
|
+
round: "half_up" | "up" | "down";
|
|
33
|
+
maximumAmount: string;
|
|
34
|
+
matrixEnabled: boolean;
|
|
35
|
+
matrixDimension: string;
|
|
36
|
+
matrixCells: MatrixCellRow[];
|
|
37
|
+
tierMode: "graduated";
|
|
38
|
+
tiers: TierRow[];
|
|
39
|
+
packageAmount: string;
|
|
40
|
+
packageSize: string;
|
|
41
|
+
freeUnits: string;
|
|
42
|
+
filters: KeyValueRow[];
|
|
43
|
+
allowanceMode: AllowanceMode;
|
|
44
|
+
allowanceIncluded: string;
|
|
45
|
+
}
|
|
46
|
+
export declare class RateCardFormError extends Error {
|
|
47
|
+
readonly fieldId: string;
|
|
48
|
+
constructor(fieldId: string, message: string);
|
|
49
|
+
}
|
|
50
|
+
export type MeterCollectionState = "loading" | "permission" | "error" | "empty" | "ready";
|
|
51
|
+
export declare function meterCollectionState(params: {
|
|
52
|
+
pending: boolean;
|
|
53
|
+
error?: {
|
|
54
|
+
status?: number;
|
|
55
|
+
} | null;
|
|
56
|
+
count: number;
|
|
57
|
+
}): MeterCollectionState;
|
|
58
|
+
export declare function normalizeMeterKey(value: string): string;
|
|
59
|
+
export declare function meterFormValues(meter?: Meter): MeterFormValues;
|
|
60
|
+
export declare function buildMeterRequest(values: MeterFormValues): {
|
|
61
|
+
key: string;
|
|
62
|
+
meter: UsageMeterRequest;
|
|
63
|
+
};
|
|
64
|
+
export declare function rateCardFormValues(card?: Pick<MeterRateCard, "product_id" | "filter" | "price" | "allowance"> | null): RateCardFormValues;
|
|
65
|
+
export declare function buildRateCardRequest(values: RateCardFormValues): DefaultUsageRateCardRequest;
|
|
66
|
+
export declare function summarizeRateCard(card?: MeterRateCard | null): string;
|
|
67
|
+
export declare function meterDefinitionLocked(meter: Meter, writesAllowed: boolean): string | null;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Price } from '../../../client/generated/wire';
|
|
2
|
+
export declare function priceIntervalLabel(price: Pick<Price, "billing_interval_hours" | "access_duration_hours">): string;
|
|
3
|
+
export declare function priceAmountLabel(price: Pick<Price, "unit_amount" | "currency" | "customer_amount">): string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type PriceDirection = "increase" | "decrease" | "unchanged";
|
|
2
|
+
export declare function detectDirection(newAmount: string, currentAmount: string): PriceDirection;
|
|
3
|
+
export type MigrationMode = "grandfather" | "migrate";
|
|
4
|
+
export declare const DEFAULT_NOTICE_WINDOW_DAYS = 30;
|
|
5
|
+
export declare function defaultMigrationMode(direction: PriceDirection): MigrationMode;
|
|
6
|
+
export declare function minEffectiveDate(direction: PriceDirection, now: Date, noticeWindowDays: number): Date | null;
|
|
7
|
+
export declare function defaultEffectiveDate(direction: PriceDirection, now: Date, noticeWindowDays: number): Date;
|
|
8
|
+
export declare function isEffectiveDateValid(direction: PriceDirection, effectiveAt: Date, now: Date, noticeWindowDays: number): boolean;
|
|
9
|
+
export interface MigrationPlan {
|
|
10
|
+
mode: MigrationMode;
|
|
11
|
+
effectiveAt: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function buildReviewText(params: {
|
|
14
|
+
newAmount: string;
|
|
15
|
+
currentAmount: string;
|
|
16
|
+
currency: string;
|
|
17
|
+
affectedCount: number;
|
|
18
|
+
plan: MigrationPlan;
|
|
19
|
+
now: Date;
|
|
20
|
+
}): string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PriceChangeDraft } from '../../lib/api/copilot';
|
|
2
|
+
import { Price } from '../../../client/generated/wire';
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
export declare function PriceChangeWizard({ price, productName, productKey, draft, onDone, }: {
|
|
5
|
+
price: Price;
|
|
6
|
+
productName: string;
|
|
7
|
+
productKey: string | undefined;
|
|
8
|
+
draft?: PriceChangeDraft;
|
|
9
|
+
onDone?: () => void;
|
|
10
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Price } from '../../../client/generated/wire';
|
|
2
|
+
export declare function PSPLinksCard({ price, verifying, verified, onVerify, }: {
|
|
3
|
+
price: Price;
|
|
4
|
+
verifying: boolean;
|
|
5
|
+
verified: boolean;
|
|
6
|
+
onVerify: () => void;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
export declare function CheckoutReadinessCard({ price }: {
|
|
9
|
+
price: Price;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Meter, Product } from '../../../client/generated/wire';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export declare function RateCardEditor({ meter, writesAllowed, products, productsPending, productsError, productsForbidden, }: {
|
|
4
|
+
meter: Meter;
|
|
5
|
+
writesAllowed?: boolean;
|
|
6
|
+
products: Product[];
|
|
7
|
+
productsPending?: boolean;
|
|
8
|
+
productsError?: boolean;
|
|
9
|
+
productsForbidden?: boolean;
|
|
10
|
+
}): React.JSX.Element | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CreditGrant, CreditGrantInput } from '../../lib/api/credit-types';
|
|
2
|
+
export declare function creditGrantInput(input: {
|
|
3
|
+
amount: string;
|
|
4
|
+
decimals: number;
|
|
5
|
+
currency: string;
|
|
6
|
+
expires: string;
|
|
7
|
+
description: string;
|
|
8
|
+
sourceID: string;
|
|
9
|
+
}, now?: number): CreditGrantInput;
|
|
10
|
+
export declare function canRevokeCredit(grant: CreditGrant): boolean;
|
|
11
|
+
export declare function creditRevokeInput(grant: CreditGrant, reason: string): {
|
|
12
|
+
grant: string;
|
|
13
|
+
reason: string;
|
|
14
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const MAX_GRANT_HOURS = 2562047;
|
|
2
|
+
export declare const GRANT_DURATIONS: readonly [{
|
|
3
|
+
readonly value: "1";
|
|
4
|
+
readonly label: "1 day";
|
|
5
|
+
readonly days: 1;
|
|
6
|
+
}, {
|
|
7
|
+
readonly value: "7";
|
|
8
|
+
readonly label: "7 days";
|
|
9
|
+
readonly days: 7;
|
|
10
|
+
}, {
|
|
11
|
+
readonly value: "30";
|
|
12
|
+
readonly label: "30 days";
|
|
13
|
+
readonly days: 30;
|
|
14
|
+
}, {
|
|
15
|
+
readonly value: "365";
|
|
16
|
+
readonly label: "365 days";
|
|
17
|
+
readonly days: 365;
|
|
18
|
+
}, {
|
|
19
|
+
readonly value: "until";
|
|
20
|
+
readonly label: "Until a date";
|
|
21
|
+
}, {
|
|
22
|
+
readonly value: "never";
|
|
23
|
+
readonly label: "Never expires";
|
|
24
|
+
}];
|
|
25
|
+
export type GrantDuration = (typeof GRANT_DURATIONS)[number]["value"];
|
|
26
|
+
export declare const DEFAULT_GRANT_DURATION: GrantDuration;
|
|
27
|
+
export type GrantTerm = {
|
|
28
|
+
hours: number;
|
|
29
|
+
} | {
|
|
30
|
+
endsAt: string;
|
|
31
|
+
} | object;
|
|
32
|
+
export declare function grantTerm(choice: GrantDuration, until: string, now?: Date): GrantTerm | null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { InvoiceProfile } from '../../../client/generated/wire';
|
|
2
|
+
export interface ProfileFormValues {
|
|
3
|
+
terms: string;
|
|
4
|
+
method: InvoiceProfile["collection_method"];
|
|
5
|
+
po: string;
|
|
6
|
+
memo: string;
|
|
7
|
+
contacts: {
|
|
8
|
+
name: string;
|
|
9
|
+
email: string;
|
|
10
|
+
}[];
|
|
11
|
+
tax: {
|
|
12
|
+
key: string;
|
|
13
|
+
value: string;
|
|
14
|
+
}[];
|
|
15
|
+
}
|
|
16
|
+
export declare const taxDisplay: (value: unknown) => string;
|
|
17
|
+
export declare function invoiceProfileValues(profile: InvoiceProfile | null): ProfileFormValues;
|
|
18
|
+
export declare function invoiceProfileRequest(values: ProfileFormValues, original: InvoiceProfile | null): InvoiceProfile;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InvoiceProfile } from '../../../client/generated/wire';
|
|
2
|
+
export declare function CustomerInvoiceProfileSection({ customerId, }: {
|
|
3
|
+
customerId: string;
|
|
4
|
+
}): import("react").JSX.Element;
|
|
5
|
+
export declare function InvoiceProfileEditor({ customerId, profile, readOnly, }: {
|
|
6
|
+
customerId: string;
|
|
7
|
+
profile: InvoiceProfile | null;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MetricsCell, MetricsColumn, MetricsQuery, MetricsRange, MetricsResult } from '../../lib/api/metrics';
|
|
2
|
+
export declare function formatMeasure(value: MetricsCell, unit: string | undefined, currency?: string): string;
|
|
3
|
+
export declare function formatBucket(iso: string, grain?: string): string;
|
|
4
|
+
export interface ColumnIndex {
|
|
5
|
+
time: number;
|
|
6
|
+
dims: {
|
|
7
|
+
name: string;
|
|
8
|
+
index: number;
|
|
9
|
+
}[];
|
|
10
|
+
measures: {
|
|
11
|
+
name: string;
|
|
12
|
+
unit?: string;
|
|
13
|
+
index: number;
|
|
14
|
+
}[];
|
|
15
|
+
currency: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function indexColumns(columns: MetricsColumn[]): ColumnIndex;
|
|
18
|
+
export interface PivotSeries {
|
|
19
|
+
key: string;
|
|
20
|
+
label: string;
|
|
21
|
+
measure: string;
|
|
22
|
+
dimensions: MetricsCell[];
|
|
23
|
+
unit?: string;
|
|
24
|
+
currency?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function filteredCurrency(query?: MetricsQuery): string | undefined;
|
|
27
|
+
export declare function rowCurrency(row: MetricsCell[], idx: ColumnIndex, fallback?: string): string | undefined;
|
|
28
|
+
export declare function statDelta(result: MetricsResult, row: MetricsCell[], measureIndex: number): number | null;
|
|
29
|
+
export declare function comparedWith(result: MetricsResult): string;
|
|
30
|
+
export declare function groupSeries<T extends PivotSeries>(series: T[]): {
|
|
31
|
+
key: string;
|
|
32
|
+
label: string;
|
|
33
|
+
series: T[];
|
|
34
|
+
}[];
|
|
35
|
+
export interface Pivoted {
|
|
36
|
+
data: Record<string, number | string | null>[];
|
|
37
|
+
series: PivotSeries[];
|
|
38
|
+
}
|
|
39
|
+
export declare function exactKey(seriesKey: string): string;
|
|
40
|
+
export declare function pivotTimeSeries(result: MetricsResult, currency?: string): Pivoted;
|
|
41
|
+
export type DonutSlice = PivotSeries & {
|
|
42
|
+
value: number;
|
|
43
|
+
[exact: string]: unknown;
|
|
44
|
+
};
|
|
45
|
+
export declare function donutSlices(result: MetricsResult, currency?: string): DonutSlice[];
|
|
46
|
+
export declare function chartColor(i: number): string;
|
|
47
|
+
export declare function deepLinkFor(query: MetricsQuery, viz?: string): string | null;
|
|
48
|
+
export declare function ownRange(range: MetricsRange | undefined): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function RangePicker(): import("react").JSX.Element;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { MetricsQuery, MetricsRange, Widget } from '../../lib/api/metrics';
|
|
2
|
+
export declare const RANGE_PRESETS: readonly [{
|
|
3
|
+
readonly value: "7d";
|
|
4
|
+
readonly label: "Last 7 days";
|
|
5
|
+
}, {
|
|
6
|
+
readonly value: "30d";
|
|
7
|
+
readonly label: "Last 30 days";
|
|
8
|
+
}, {
|
|
9
|
+
readonly value: "90d";
|
|
10
|
+
readonly label: "Last 3 months";
|
|
11
|
+
}, {
|
|
12
|
+
readonly value: "6m";
|
|
13
|
+
readonly label: "Last 6 months";
|
|
14
|
+
}, {
|
|
15
|
+
readonly value: "1y";
|
|
16
|
+
readonly label: "Last year";
|
|
17
|
+
}];
|
|
18
|
+
export declare const DEFAULT_PRESET = "30d";
|
|
19
|
+
export type DashboardRange = {
|
|
20
|
+
preset: string;
|
|
21
|
+
} | {
|
|
22
|
+
from: string;
|
|
23
|
+
to: string;
|
|
24
|
+
};
|
|
25
|
+
export declare function rangeFromParams(params: URLSearchParams): DashboardRange;
|
|
26
|
+
export declare function withRange(params: URLSearchParams, range: DashboardRange): URLSearchParams;
|
|
27
|
+
export declare function metricsRange(range: DashboardRange): MetricsRange;
|
|
28
|
+
export declare function rangeDates(range: DashboardRange, now?: Date): {
|
|
29
|
+
from: string;
|
|
30
|
+
to: string;
|
|
31
|
+
};
|
|
32
|
+
export declare function rangeLabel(range: DashboardRange, now?: Date): string;
|
|
33
|
+
export declare function fitGrain(grain: string, range: DashboardRange, now?: Date): string;
|
|
34
|
+
export declare function widgetQuery(widget: Widget, range: DashboardRange): MetricsQuery;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MetricsQuery, MetricsResult } from '../../lib/api/metrics';
|
|
2
|
+
import { DashboardRange } from './range';
|
|
3
|
+
export declare const MAX_DAYS = 400;
|
|
4
|
+
export declare function rangeDays(range: DashboardRange, now?: Date): number;
|
|
5
|
+
export declare function dailyQuery(range: DashboardRange): MetricsQuery;
|
|
6
|
+
export declare function renewalsQuery(range: DashboardRange): MetricsQuery;
|
|
7
|
+
export declare function churnQuery(range: DashboardRange): MetricsQuery;
|
|
8
|
+
export interface DailyRow {
|
|
9
|
+
date: string;
|
|
10
|
+
started: number;
|
|
11
|
+
canceled: number;
|
|
12
|
+
net: number;
|
|
13
|
+
}
|
|
14
|
+
export interface MonthlyRow {
|
|
15
|
+
month: string;
|
|
16
|
+
renewals: number;
|
|
17
|
+
canceled: number;
|
|
18
|
+
churn: number | null;
|
|
19
|
+
}
|
|
20
|
+
export declare function dailyRows(result: MetricsResult): DailyRow[];
|
|
21
|
+
export declare function monthlyRows(renewals: MetricsResult, churn: MetricsResult): MonthlyRow[];
|
|
22
|
+
export declare const dailyCsv: (rows: DailyRow[]) => {
|
|
23
|
+
header: string[];
|
|
24
|
+
rows: (string | number)[][];
|
|
25
|
+
};
|
|
26
|
+
export declare const monthlyCsv: (rows: MonthlyRow[]) => {
|
|
27
|
+
header: string[];
|
|
28
|
+
rows: (string | number)[][];
|
|
29
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Widget } from '../../lib/api/metrics';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export type WidgetDraft = Pick<Widget, "title" | "viz" | "fixed_range">;
|
|
4
|
+
export declare function WidgetEditor({ onOpenChange, initial, onSave, }: {
|
|
5
|
+
onOpenChange: (open: boolean) => void;
|
|
6
|
+
initial: Widget;
|
|
7
|
+
onSave: (data: WidgetDraft) => void;
|
|
8
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Widget } from '../../lib/api/metrics';
|
|
2
|
+
import { DashboardRange } from './range';
|
|
3
|
+
export declare function WidgetTile({ widget, range, editable, onEdit, onDelete, }: {
|
|
4
|
+
widget: Widget;
|
|
5
|
+
range: DashboardRange;
|
|
6
|
+
editable?: boolean;
|
|
7
|
+
onEdit: () => void;
|
|
8
|
+
onDelete: () => void;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
import { ChartTooltipContent } from '../../components/ui/chart';
|
|
3
|
+
import { MetricsResult, MetricsQuery, WidgetViz as VizType } from '../../lib/api/metrics';
|
|
4
|
+
import { PivotSeries } from './lib';
|
|
5
|
+
export declare function WidgetVizView({ viz, result, query, }: {
|
|
6
|
+
viz: VizType;
|
|
7
|
+
result: MetricsResult;
|
|
8
|
+
query?: MetricsQuery;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
|
+
export declare function MetricTooltip({ series, ...props }: ComponentProps<typeof ChartTooltipContent> & {
|
|
11
|
+
series: PivotSeries[];
|
|
12
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function OrdersPage(): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Order, Payment } from '../../../client/generated/wire';
|
|
2
|
+
import { UsageAction } from '../../lib/api/order-endpoints';
|
|
3
|
+
export declare const usageActionLabels: Record<UsageAction, string>;
|
|
4
|
+
export declare const usageActionDescriptions: Record<UsageAction, string>;
|
|
5
|
+
export declare function usageActions(order: Order): UsageAction[];
|
|
6
|
+
export declare function usageResultMessage(result: Order | Payment): "Payment recorded." | "Order paid." | "Collection is pending verification. No new collection should be started." | "Order updated.";
|
|
7
|
+
export declare function usagePaymentAmount(input: string, amountDue: string, decimals: number): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function Outcome({ category }: {
|
|
2
|
+
category: string;
|
|
3
|
+
}): import("react").JSX.Element;
|
|
4
|
+
export declare function AttemptsPage(): import("react").JSX.Element;
|
|
5
|
+
export declare function AttemptDetailPage(): import("react").JSX.Element;
|
|
6
|
+
export declare function CyclesPage(): import("react").JSX.Element;
|
|
7
|
+
export declare function CycleDetailPage(): import("react").JSX.Element;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { MetricsCell, MetricsQuery, MetricsResult } from '../../lib/api/metrics';
|
|
2
|
+
export declare const OWNERS: readonly [{
|
|
3
|
+
readonly value: "";
|
|
4
|
+
readonly label: "All owners";
|
|
5
|
+
}, {
|
|
6
|
+
readonly value: "nmi_schedule";
|
|
7
|
+
readonly label: "NMI-owned";
|
|
8
|
+
}, {
|
|
9
|
+
readonly value: "engine";
|
|
10
|
+
readonly label: "OpenRails-owned";
|
|
11
|
+
}, {
|
|
12
|
+
readonly value: "provider";
|
|
13
|
+
readonly label: "Provider-owned";
|
|
14
|
+
}];
|
|
15
|
+
export declare const RANGES: readonly [{
|
|
16
|
+
readonly value: "7d";
|
|
17
|
+
readonly label: "Last 7 days";
|
|
18
|
+
}, {
|
|
19
|
+
readonly value: "30d";
|
|
20
|
+
readonly label: "Last 30 days";
|
|
21
|
+
}, {
|
|
22
|
+
readonly value: "90d";
|
|
23
|
+
readonly label: "Last 90 days";
|
|
24
|
+
}];
|
|
25
|
+
export interface Scope {
|
|
26
|
+
owner: string;
|
|
27
|
+
psp?: {
|
|
28
|
+
id: string;
|
|
29
|
+
};
|
|
30
|
+
last: string;
|
|
31
|
+
}
|
|
32
|
+
type Filters = Record<string, string[]>;
|
|
33
|
+
export declare const NEW_CARD: Filters;
|
|
34
|
+
export declare const FAILED_CATEGORIES: string[];
|
|
35
|
+
export declare const FIRST_FAILED: string[];
|
|
36
|
+
export interface Tile {
|
|
37
|
+
id: string;
|
|
38
|
+
title: string;
|
|
39
|
+
measure: string;
|
|
40
|
+
better: "lower" | "higher";
|
|
41
|
+
query: (scope: Scope) => MetricsQuery;
|
|
42
|
+
list: "attempts" | "cycles";
|
|
43
|
+
listFilters: Filters;
|
|
44
|
+
}
|
|
45
|
+
export declare const TILES: Tile[];
|
|
46
|
+
export interface TileValue {
|
|
47
|
+
value: MetricsCell;
|
|
48
|
+
unit?: string;
|
|
49
|
+
change: number | null;
|
|
50
|
+
worse: boolean;
|
|
51
|
+
}
|
|
52
|
+
export declare function tileValue(result: MetricsResult | undefined, tile: Tile): TileValue | undefined;
|
|
53
|
+
export declare function formatChange(v: TileValue): string;
|
|
54
|
+
export declare const trendQueries: (scope: Scope) => {
|
|
55
|
+
newCard: MetricsQuery;
|
|
56
|
+
rebill: MetricsQuery;
|
|
57
|
+
};
|
|
58
|
+
export declare const reasonsQuery: (scope: Scope) => MetricsQuery;
|
|
59
|
+
export interface ReasonRow {
|
|
60
|
+
category: string;
|
|
61
|
+
reason: string;
|
|
62
|
+
code: string;
|
|
63
|
+
count: number;
|
|
64
|
+
share: number;
|
|
65
|
+
previous: number;
|
|
66
|
+
}
|
|
67
|
+
export interface ReasonGroup {
|
|
68
|
+
category: string;
|
|
69
|
+
count: number;
|
|
70
|
+
share: number;
|
|
71
|
+
rows: ReasonRow[];
|
|
72
|
+
}
|
|
73
|
+
export declare function reasonGroups(result: MetricsResult | undefined): ReasonGroup[];
|
|
74
|
+
export declare const checkQueries: (scope: Scope) => {
|
|
75
|
+
avs: MetricsQuery;
|
|
76
|
+
cvv: MetricsQuery;
|
|
77
|
+
};
|
|
78
|
+
export interface CheckRow {
|
|
79
|
+
result: string;
|
|
80
|
+
attempts: number;
|
|
81
|
+
failureRate: number | null;
|
|
82
|
+
}
|
|
83
|
+
export declare function checkRows(result: MetricsResult | undefined): CheckRow[];
|
|
84
|
+
export declare const RECOVERY_ATTEMPTS: string[];
|
|
85
|
+
export declare const RECOVERY_DAYS: number[];
|
|
86
|
+
export declare const recoveryQueries: (scope: Scope) => {
|
|
87
|
+
rate: MetricsQuery;
|
|
88
|
+
byAttempt: MetricsQuery;
|
|
89
|
+
byDays: MetricsQuery;
|
|
90
|
+
};
|
|
91
|
+
export interface RecoveryCurve {
|
|
92
|
+
owner: string;
|
|
93
|
+
points: number[];
|
|
94
|
+
}
|
|
95
|
+
export declare function recoveryCurves(rate: MetricsResult | undefined, steps: MetricsResult | undefined, dimension: "recovery_attempt" | "days_to_recover"): RecoveryCurve[];
|
|
96
|
+
export declare const missedQuery: (scope: Scope) => MetricsQuery;
|
|
97
|
+
export interface MissedRow {
|
|
98
|
+
reason: string;
|
|
99
|
+
psp: string;
|
|
100
|
+
count: number;
|
|
101
|
+
}
|
|
102
|
+
export declare function missedRows(result: MetricsResult | undefined): MissedRow[];
|
|
103
|
+
export declare const coverageQuery: (scope: Scope) => MetricsQuery;
|
|
104
|
+
export interface CoverageRow {
|
|
105
|
+
psp: string;
|
|
106
|
+
webhook: number;
|
|
107
|
+
pull: number;
|
|
108
|
+
coverage: number | null;
|
|
109
|
+
}
|
|
110
|
+
export declare function coverageRows(result: MetricsResult | undefined): CoverageRow[];
|
|
111
|
+
export declare function listURL(list: "attempts" | "cycles", filters: Filters, scope: Scope, range?: {
|
|
112
|
+
from: string;
|
|
113
|
+
to: string;
|
|
114
|
+
}, pspId?: string): string;
|
|
115
|
+
export declare const NMI_KINDS: readonly [{
|
|
116
|
+
readonly value: "verification";
|
|
117
|
+
readonly label: "Card verifications";
|
|
118
|
+
}, {
|
|
119
|
+
readonly value: "one_off_sale";
|
|
120
|
+
readonly label: "One-off sales";
|
|
121
|
+
}, {
|
|
122
|
+
readonly value: "scheduled_rebill";
|
|
123
|
+
readonly label: "NMI-scheduled rebills";
|
|
124
|
+
}];
|
|
125
|
+
export declare const nmiHistoryQueries: (scope: Scope) => {
|
|
126
|
+
months: MetricsQuery;
|
|
127
|
+
reasons: MetricsQuery;
|
|
128
|
+
recorded: MetricsQuery;
|
|
129
|
+
};
|
|
130
|
+
export declare function recordingSince(result: MetricsResult | undefined): string | null;
|
|
131
|
+
export interface NMIHistoryCell {
|
|
132
|
+
authorizations: number;
|
|
133
|
+
refusalRate: number | null;
|
|
134
|
+
}
|
|
135
|
+
export interface NMIHistoryMonth {
|
|
136
|
+
month: string;
|
|
137
|
+
kinds: Record<string, NMIHistoryCell>;
|
|
138
|
+
recorded: boolean;
|
|
139
|
+
}
|
|
140
|
+
export declare function nmiHistoryMonths(result: MetricsResult | undefined, since: string | null): NMIHistoryMonth[];
|
|
141
|
+
export interface NMIRefusal {
|
|
142
|
+
kind: string;
|
|
143
|
+
category: string;
|
|
144
|
+
reason: string;
|
|
145
|
+
count: number;
|
|
146
|
+
share: number;
|
|
147
|
+
}
|
|
148
|
+
export declare function nmiRefusals(result: MetricsResult | undefined): NMIRefusal[];
|
|
149
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MerchantConfigurationState, UpdateMerchantConfigurationParams } from '../../../client/generated/wire';
|
|
2
|
+
type Change = Omit<UpdateMerchantConfigurationParams, "expected_revision">;
|
|
3
|
+
export declare function useConfigurationEdit(configuration: MerchantConfigurationState | undefined): {
|
|
4
|
+
editing: boolean;
|
|
5
|
+
open: () => void;
|
|
6
|
+
close: () => void;
|
|
7
|
+
save: (change: Change, saved: string, action: string) => Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
export {};
|