@burdenoff/microfe-subscriberbot 2026.801.1 → 2026.829.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/subscriberbot/admin/AdminDashboardPage.d.ts.map +1 -1
- package/dist/subscriberbot/admin/AdminDashboardPage.js +80 -83
- package/dist/subscriberbot/admin/AdminDashboardPage.js.map +1 -1
- package/dist/subscriberbot/components/viz.js +51 -27
- package/dist/subscriberbot/components/viz.js.map +1 -1
- package/dist/subscriberbot/hooks/index.d.ts +2 -1
- package/dist/subscriberbot/hooks/index.d.ts.map +1 -1
- package/dist/subscriberbot/hooks/index.js +1 -0
- package/dist/subscriberbot/hooks/useSubscriberBotApi.d.ts +12 -1
- package/dist/subscriberbot/hooks/useSubscriberBotApi.d.ts.map +1 -1
- package/dist/subscriberbot/hooks/useSubscriberBotApi.js +82 -56
- package/dist/subscriberbot/hooks/useSubscriberBotApi.js.map +1 -1
- package/dist/subscriberbot/hooks/useTr.d.ts +17 -0
- package/dist/subscriberbot/hooks/useTr.d.ts.map +1 -0
- package/dist/subscriberbot/hooks/useTr.js +14 -0
- package/dist/subscriberbot/hooks/useTr.js.map +1 -0
- package/dist/subscriberbot/pages/AssetVaultPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/AssetVaultPage.js +155 -97
- package/dist/subscriberbot/pages/AssetVaultPage.js.map +1 -1
- package/dist/subscriberbot/pages/DashboardPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/DashboardPage.js +113 -105
- package/dist/subscriberbot/pages/DashboardPage.js.map +1 -1
- package/dist/subscriberbot/pages/InboxPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/InboxPage.js +404 -369
- package/dist/subscriberbot/pages/InboxPage.js.map +1 -1
- package/dist/subscriberbot/pages/InsightsPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/InsightsPage.js +94 -93
- package/dist/subscriberbot/pages/InsightsPage.js.map +1 -1
- package/dist/subscriberbot/pages/InvoicesPage.d.ts +3 -2
- package/dist/subscriberbot/pages/InvoicesPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/InvoicesPage.js +368 -362
- package/dist/subscriberbot/pages/InvoicesPage.js.map +1 -1
- package/dist/subscriberbot/pages/WorkflowsPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/WorkflowsPage.js +209 -193
- package/dist/subscriberbot/pages/WorkflowsPage.js.map +1 -1
- package/dist/subscriberbot/pages/agents/AgentDetailPage.d.ts +3 -1
- package/dist/subscriberbot/pages/agents/AgentDetailPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/agents/AgentDetailPage.js +296 -228
- package/dist/subscriberbot/pages/agents/AgentDetailPage.js.map +1 -1
- package/dist/subscriberbot/pages/agents/AgentNewPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/agents/AgentNewPage.js +96 -76
- package/dist/subscriberbot/pages/agents/AgentNewPage.js.map +1 -1
- package/dist/subscriberbot/pages/agents/AgentsListPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/agents/AgentsListPage.js +145 -161
- package/dist/subscriberbot/pages/agents/AgentsListPage.js.map +1 -1
- package/dist/subscriberbot/pages/providers/ProviderDetailPage.d.ts +4 -2
- package/dist/subscriberbot/pages/providers/ProviderDetailPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/providers/ProviderDetailPage.js +577 -402
- package/dist/subscriberbot/pages/providers/ProviderDetailPage.js.map +1 -1
- package/dist/subscriberbot/pages/providers/ProviderNewPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/providers/ProviderNewPage.js +167 -129
- package/dist/subscriberbot/pages/providers/ProviderNewPage.js.map +1 -1
- package/dist/subscriberbot/pages/providers/ProvidersListPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/providers/ProvidersListPage.js +171 -218
- package/dist/subscriberbot/pages/providers/ProvidersListPage.js.map +1 -1
- package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.js +340 -279
- package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.js.map +1 -1
- package/dist/subscriberbot/pages/relationships/RelationshipNewPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/relationships/RelationshipNewPage.js +185 -166
- package/dist/subscriberbot/pages/relationships/RelationshipNewPage.js.map +1 -1
- package/dist/subscriberbot/pages/relationships/RelationshipsListPage.d.ts.map +1 -1
- package/dist/subscriberbot/pages/relationships/RelationshipsListPage.js +153 -182
- package/dist/subscriberbot/pages/relationships/RelationshipsListPage.js.map +1 -1
- package/dist/subscriberbot/types/index.d.ts +37 -0
- package/dist/subscriberbot/types/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -8,120 +8,53 @@ import { ErrorView as o, LoadingView as s } from "../../components/StateViews.js
|
|
|
8
8
|
import { MiniProgress as c } from "../../components/viz.js";
|
|
9
9
|
import "../../components/index.js";
|
|
10
10
|
import { useProviders as l } from "../../hooks/useSubscriberBotApi.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
11
|
+
import { useTr as u } from "../../hooks/useTr.js";
|
|
12
|
+
import { useState as d } from "react";
|
|
13
|
+
import { Activity as f, BadgeCheck as p, Building2 as m, ChevronRight as h, Plus as g, Search as _, ShieldCheck as v, Store as y } from "lucide-react";
|
|
14
|
+
import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
15
|
+
import { EmphasisPanel as C, GlassCard as w, PagePurpose as T } from "@burdenoff/fe-libs/ui";
|
|
15
16
|
//#region src/subscriberbot/pages/providers/ProvidersListPage.tsx
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
value: "MEMBERSHIP",
|
|
43
|
-
label: "Membership"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
value: "COMMUNITY",
|
|
47
|
-
label: "Community"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
value: "EDUCATION",
|
|
51
|
-
label: "Education"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
value: "FINANCIAL",
|
|
55
|
-
label: "Financial"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
value: "INSURANCE",
|
|
59
|
-
label: "Insurance"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
value: "TELECOM",
|
|
63
|
-
label: "Telecom"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
value: "UTILITY",
|
|
67
|
-
label: "Utility"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
value: "ASSOCIATION",
|
|
71
|
-
label: "Association"
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
value: "LICENSE",
|
|
75
|
-
label: "License"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
value: "CONTRACT",
|
|
79
|
-
label: "Contract"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
value: "OTHER",
|
|
83
|
-
label: "Other"
|
|
84
|
-
}
|
|
85
|
-
], D = [
|
|
86
|
-
{
|
|
87
|
-
value: "",
|
|
88
|
-
label: "Any status"
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
value: "VERIFIED",
|
|
92
|
-
label: "Verified"
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
value: "CLAIMED",
|
|
96
|
-
label: "Claimed"
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
value: "UNVERIFIED",
|
|
100
|
-
label: "Unverified"
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
value: "DEPRECATED",
|
|
104
|
-
label: "Deprecated"
|
|
105
|
-
}
|
|
106
|
-
];
|
|
107
|
-
function O(e) {
|
|
17
|
+
var E = 24, D = {
|
|
18
|
+
SAAS: "providers.categories.saas",
|
|
19
|
+
AI_SERVICE: "providers.categories.aiService",
|
|
20
|
+
STREAMING: "providers.categories.streaming",
|
|
21
|
+
NEWSLETTER: "providers.categories.newsletter",
|
|
22
|
+
NEWS_DIGEST: "providers.categories.newsDigest",
|
|
23
|
+
MEMBERSHIP: "providers.categories.membership",
|
|
24
|
+
COMMUNITY: "providers.categories.community",
|
|
25
|
+
EDUCATION: "providers.categories.education",
|
|
26
|
+
FINANCIAL: "providers.categories.financial",
|
|
27
|
+
INSURANCE: "providers.categories.insurance",
|
|
28
|
+
TELECOM: "providers.categories.telecom",
|
|
29
|
+
UTILITY: "providers.categories.utility",
|
|
30
|
+
ASSOCIATION: "providers.categories.association",
|
|
31
|
+
LICENSE: "providers.categories.license",
|
|
32
|
+
CONTRACT: "providers.categories.contract",
|
|
33
|
+
OTHER: "providers.categories.other"
|
|
34
|
+
}, O = {
|
|
35
|
+
VERIFIED: "providers.filters.verified",
|
|
36
|
+
CLAIMED: "providers.filters.claimed",
|
|
37
|
+
UNVERIFIED: "providers.filters.unverified",
|
|
38
|
+
DEPRECATED: "providers.filters.deprecated"
|
|
39
|
+
};
|
|
40
|
+
function k(e) {
|
|
108
41
|
return e >= 70 ? "positive" : e >= 45 ? "accent" : e >= 25 ? "warning" : "negative";
|
|
109
42
|
}
|
|
110
|
-
function
|
|
43
|
+
function A(e, t) {
|
|
111
44
|
return e >= 67 ? {
|
|
112
|
-
label: "High churn risk",
|
|
45
|
+
label: t("providers.card.highChurn", "High churn risk"),
|
|
113
46
|
cls: "bg-status-error-bg-subtle text-status-error-text"
|
|
114
47
|
} : e >= 34 ? {
|
|
115
|
-
label: "Moderate churn risk",
|
|
48
|
+
label: t("providers.card.moderateChurn", "Moderate churn risk"),
|
|
116
49
|
cls: "bg-status-warning-bg-subtle text-status-warning-text"
|
|
117
50
|
} : {
|
|
118
|
-
label: "Low churn risk",
|
|
51
|
+
label: t("providers.card.lowChurn", "Low churn risk"),
|
|
119
52
|
cls: "bg-status-success-bg-subtle text-status-success-text"
|
|
120
53
|
};
|
|
121
54
|
}
|
|
122
|
-
function
|
|
123
|
-
let a = e.vendorHealthScore,
|
|
124
|
-
return /* @__PURE__ */
|
|
55
|
+
function j({ provider: e, onOpen: n }) {
|
|
56
|
+
let a = u(), o = e.vendorHealthScore, s = e.churnRiskScore, l = s == null ? null : A(s, a);
|
|
57
|
+
return /* @__PURE__ */ S(w, {
|
|
125
58
|
treatment: "glass",
|
|
126
59
|
role: "button",
|
|
127
60
|
tabIndex: 0,
|
|
@@ -129,224 +62,244 @@ function A({ provider: e, onOpen: n }) {
|
|
|
129
62
|
onKeyDown: (e) => {
|
|
130
63
|
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), n());
|
|
131
64
|
},
|
|
132
|
-
"aria-label":
|
|
65
|
+
"aria-label": a("providers.card.openAria", "Open {{name}}", { name: e.name }),
|
|
133
66
|
className: "group flex cursor-pointer flex-col p-5 outline-none transition-all hover:-translate-y-0.5 hover:shadow-lg focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
|
|
134
67
|
children: [
|
|
135
|
-
/* @__PURE__ */
|
|
68
|
+
/* @__PURE__ */ S("div", {
|
|
136
69
|
className: "flex items-start justify-between gap-2",
|
|
137
|
-
children: [/* @__PURE__ */
|
|
70
|
+
children: [/* @__PURE__ */ x("span", {
|
|
138
71
|
className: "flex size-10 items-center justify-center rounded-xl bg-[var(--color-accent-soft)] text-text-primary",
|
|
139
|
-
children: /* @__PURE__ */
|
|
140
|
-
}), /* @__PURE__ */
|
|
72
|
+
children: /* @__PURE__ */ x(m, { className: "h-5 w-5" })
|
|
73
|
+
}), /* @__PURE__ */ x(i, { status: e.status })]
|
|
141
74
|
}),
|
|
142
|
-
/* @__PURE__ */
|
|
75
|
+
/* @__PURE__ */ x("p", {
|
|
143
76
|
className: "mt-3 truncate text-base font-semibold text-text-primary",
|
|
144
77
|
children: e.name
|
|
145
78
|
}),
|
|
146
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ x("span", {
|
|
147
80
|
className: "mt-1 inline-flex w-fit rounded-full bg-bg-sunken px-2.5 py-0.5 text-xs font-medium text-text-secondary",
|
|
148
|
-
children: r(e.category)
|
|
81
|
+
children: a(D[e.category], r(e.category))
|
|
149
82
|
}),
|
|
150
|
-
e.description ? /* @__PURE__ */
|
|
83
|
+
e.description ? /* @__PURE__ */ x("p", {
|
|
151
84
|
className: "mt-3 line-clamp-2 min-h-[2.5rem] text-xs leading-relaxed text-text-secondary",
|
|
152
85
|
children: e.description
|
|
153
|
-
}) : /* @__PURE__ */
|
|
86
|
+
}) : /* @__PURE__ */ x("p", {
|
|
154
87
|
className: "mt-3 min-h-[2.5rem] text-xs italic text-text-secondary/70",
|
|
155
|
-
children: "No description yet."
|
|
88
|
+
children: a("providers.card.noDescription", "No description yet.")
|
|
156
89
|
}),
|
|
157
|
-
/* @__PURE__ */
|
|
90
|
+
/* @__PURE__ */ S("div", {
|
|
158
91
|
className: "mt-4 border-t border-border-subtle pt-3",
|
|
159
|
-
children: [/* @__PURE__ */
|
|
92
|
+
children: [/* @__PURE__ */ S("div", {
|
|
160
93
|
className: "flex items-center justify-between text-xs",
|
|
161
|
-
children: [/* @__PURE__ */
|
|
94
|
+
children: [/* @__PURE__ */ S("span", {
|
|
162
95
|
className: "inline-flex items-center gap-1 text-text-secondary",
|
|
163
|
-
children: [
|
|
164
|
-
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ x(v, { className: "h-3.5 w-3.5" }),
|
|
98
|
+
" ",
|
|
99
|
+
a("providers.card.vendorHealth", "Vendor health")
|
|
100
|
+
]
|
|
101
|
+
}), /* @__PURE__ */ x("span", {
|
|
165
102
|
className: "font-semibold tabular-nums text-text-primary",
|
|
166
|
-
children:
|
|
103
|
+
children: o == null ? "—" : `${o}/100`
|
|
167
104
|
})]
|
|
168
|
-
}), /* @__PURE__ */
|
|
169
|
-
value:
|
|
170
|
-
tone:
|
|
105
|
+
}), /* @__PURE__ */ x(c, {
|
|
106
|
+
value: o ?? 0,
|
|
107
|
+
tone: o == null ? "accent" : k(o),
|
|
171
108
|
className: "mt-1.5"
|
|
172
109
|
})]
|
|
173
110
|
}),
|
|
174
|
-
/* @__PURE__ */
|
|
111
|
+
/* @__PURE__ */ S("div", {
|
|
175
112
|
className: "mt-3 flex flex-wrap items-center justify-between gap-2",
|
|
176
|
-
children: [/* @__PURE__ */
|
|
113
|
+
children: [/* @__PURE__ */ S("div", {
|
|
177
114
|
className: "flex flex-wrap items-center gap-2",
|
|
178
|
-
children: [
|
|
179
|
-
className: t("inline-flex rounded-full px-2 py-0.5 text-[11px] font-medium",
|
|
180
|
-
children:
|
|
181
|
-
}), e.region && /* @__PURE__ */
|
|
115
|
+
children: [l && /* @__PURE__ */ x("span", {
|
|
116
|
+
className: t("inline-flex rounded-full px-2 py-0.5 text-[11px] font-medium", l.cls),
|
|
117
|
+
children: l.label
|
|
118
|
+
}), e.region && /* @__PURE__ */ x("span", {
|
|
182
119
|
className: "text-[11px] text-text-secondary",
|
|
183
120
|
children: e.region
|
|
184
121
|
})]
|
|
185
|
-
}), /* @__PURE__ */
|
|
122
|
+
}), /* @__PURE__ */ S("span", {
|
|
186
123
|
className: "inline-flex items-center gap-0.5 text-xs font-medium text-text-link opacity-0 transition-opacity group-hover:opacity-100",
|
|
187
|
-
children: [
|
|
124
|
+
children: [
|
|
125
|
+
a("providers.card.view", "View"),
|
|
126
|
+
" ",
|
|
127
|
+
/* @__PURE__ */ x(h, { className: "h-3.5 w-3.5" })
|
|
128
|
+
]
|
|
188
129
|
})]
|
|
189
130
|
})
|
|
190
131
|
]
|
|
191
132
|
});
|
|
192
133
|
}
|
|
193
|
-
function
|
|
194
|
-
let { navigateTo:
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
134
|
+
function M() {
|
|
135
|
+
let i = u(), { navigateTo: c } = e(), [h, v] = d(0), [k, A] = d(""), [M, N] = d(""), [P, F] = d(""), [I, L] = d(""), R = [{
|
|
136
|
+
value: "",
|
|
137
|
+
label: i("providers.categories.all", "All")
|
|
138
|
+
}, ...Object.entries(D).map(([e, t]) => ({
|
|
139
|
+
value: e,
|
|
140
|
+
label: i(t, r(e))
|
|
141
|
+
}))], z = [{
|
|
142
|
+
value: "",
|
|
143
|
+
label: i("providers.filters.anyStatus", "Any status")
|
|
144
|
+
}, ...Object.entries(O).map(([e, t]) => ({
|
|
145
|
+
value: e,
|
|
146
|
+
label: i(t, r(e))
|
|
147
|
+
}))], { data: B, isLoading: V, isError: H, refetch: U, isFetching: W } = l({
|
|
148
|
+
search: k || void 0,
|
|
149
|
+
category: P || void 0,
|
|
150
|
+
status: I || void 0,
|
|
198
151
|
pagination: {
|
|
199
|
-
limit:
|
|
200
|
-
offset:
|
|
152
|
+
limit: E,
|
|
153
|
+
offset: h * E
|
|
201
154
|
}
|
|
202
|
-
}),
|
|
203
|
-
e.preventDefault(),
|
|
204
|
-
},
|
|
155
|
+
}), G = B?.items ?? [], K = B?.pageInfo.hasMore ?? !1, q = G.filter((e) => e.status === "VERIFIED").length, J = G.map((e) => e.vendorHealthScore).filter((e) => e != null), Y = J.length ? Math.round(J.reduce((e, t) => e + t, 0) / J.length) : null, X = (e) => {
|
|
156
|
+
e.preventDefault(), A(M.trim()), v(0);
|
|
157
|
+
}, Z = [
|
|
205
158
|
{
|
|
206
|
-
icon:
|
|
207
|
-
label: "On this page",
|
|
208
|
-
value: String(
|
|
159
|
+
icon: y,
|
|
160
|
+
label: i("providers.summary.onThisPage", "On this page"),
|
|
161
|
+
value: String(G.length)
|
|
209
162
|
},
|
|
210
163
|
{
|
|
211
|
-
icon:
|
|
212
|
-
label: "Verified",
|
|
213
|
-
value: String(
|
|
164
|
+
icon: p,
|
|
165
|
+
label: i("providers.filters.verified", "Verified"),
|
|
166
|
+
value: String(q)
|
|
214
167
|
},
|
|
215
168
|
{
|
|
216
|
-
icon:
|
|
217
|
-
label: "Avg. vendor health",
|
|
218
|
-
value:
|
|
169
|
+
icon: f,
|
|
170
|
+
label: i("providers.summary.avgVendorHealth", "Avg. vendor health"),
|
|
171
|
+
value: Y == null ? "—" : `${Y}/100`
|
|
219
172
|
}
|
|
220
173
|
];
|
|
221
|
-
return /* @__PURE__ */
|
|
222
|
-
title: "Discover providers",
|
|
223
|
-
description: "Browse the global provider registry — the public face of the Subscription Knowledge Graph",
|
|
224
|
-
actions: /* @__PURE__ */
|
|
174
|
+
return /* @__PURE__ */ S(n, {
|
|
175
|
+
title: i("providers.title", "Discover providers"),
|
|
176
|
+
description: i("providers.description", "Browse the global provider registry — the public face of the Subscription Knowledge Graph"),
|
|
177
|
+
actions: /* @__PURE__ */ S("button", {
|
|
225
178
|
type: "button",
|
|
226
|
-
onClick: () =>
|
|
179
|
+
onClick: () => c("/providers/new"),
|
|
227
180
|
className: "inline-flex items-center gap-2 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90",
|
|
228
|
-
children: [
|
|
181
|
+
children: [
|
|
182
|
+
/* @__PURE__ */ x(g, { className: "h-4 w-4" }),
|
|
183
|
+
" ",
|
|
184
|
+
i("providers.addProvider", "Add provider")
|
|
185
|
+
]
|
|
229
186
|
}),
|
|
230
187
|
children: [
|
|
231
|
-
/* @__PURE__ */
|
|
188
|
+
/* @__PURE__ */ x(T, {
|
|
232
189
|
className: "mb-4",
|
|
233
|
-
children: "Every provider exists here whether or not it integrates. Search and filter to find the ones you have relationships with, compare their vendor health, or add a new one."
|
|
190
|
+
children: i("providers.purpose", "Every provider exists here whether or not it integrates. Search and filter to find the ones you have relationships with, compare their vendor health, or add a new one.")
|
|
234
191
|
}),
|
|
235
|
-
/* @__PURE__ */
|
|
236
|
-
onSubmit:
|
|
192
|
+
/* @__PURE__ */ x(C, { children: /* @__PURE__ */ S("form", {
|
|
193
|
+
onSubmit: X,
|
|
237
194
|
className: "relative",
|
|
238
195
|
children: [
|
|
239
|
-
/* @__PURE__ */
|
|
240
|
-
/* @__PURE__ */
|
|
196
|
+
/* @__PURE__ */ x(_, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }),
|
|
197
|
+
/* @__PURE__ */ x("input", {
|
|
241
198
|
type: "text",
|
|
242
|
-
placeholder: "Search providers by name…",
|
|
243
|
-
value:
|
|
244
|
-
onChange: (e) =>
|
|
199
|
+
placeholder: i("providers.searchPlaceholder", "Search providers by name…"),
|
|
200
|
+
value: M,
|
|
201
|
+
onChange: (e) => N(e.target.value),
|
|
245
202
|
className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2.5 pl-10 pr-24 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
|
|
246
203
|
}),
|
|
247
|
-
/* @__PURE__ */
|
|
204
|
+
/* @__PURE__ */ x("button", {
|
|
248
205
|
type: "submit",
|
|
249
206
|
className: "absolute right-1.5 top-1/2 -translate-y-1/2 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:opacity-90",
|
|
250
|
-
children: "Search"
|
|
207
|
+
children: i("providers.search", "Search")
|
|
251
208
|
})
|
|
252
209
|
]
|
|
253
210
|
}) }),
|
|
254
|
-
/* @__PURE__ */
|
|
211
|
+
/* @__PURE__ */ x("div", {
|
|
255
212
|
className: "mt-4 flex items-center gap-2 overflow-x-auto pb-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
|
|
256
|
-
children:
|
|
257
|
-
let n =
|
|
258
|
-
return /* @__PURE__ */
|
|
213
|
+
children: R.map((e) => {
|
|
214
|
+
let n = P === e.value;
|
|
215
|
+
return /* @__PURE__ */ x("button", {
|
|
259
216
|
type: "button",
|
|
260
217
|
"aria-pressed": n,
|
|
261
218
|
onClick: () => {
|
|
262
|
-
|
|
219
|
+
F(e.value), v(0);
|
|
263
220
|
},
|
|
264
221
|
className: t("shrink-0 rounded-full border px-3.5 py-1.5 text-xs font-medium transition-colors", n ? "border-transparent bg-action-primary-bg text-action-primary-text" : "border-border-subtle bg-bg-surface text-text-secondary hover:bg-bg-sunken hover:text-text-primary"),
|
|
265
222
|
children: e.label
|
|
266
223
|
}, e.value || "all");
|
|
267
224
|
})
|
|
268
225
|
}),
|
|
269
|
-
/* @__PURE__ */
|
|
226
|
+
/* @__PURE__ */ x("div", {
|
|
270
227
|
className: "mt-3 flex flex-wrap items-center gap-2",
|
|
271
|
-
children: /* @__PURE__ */
|
|
272
|
-
"aria-label": "Filter by status",
|
|
273
|
-
value:
|
|
228
|
+
children: /* @__PURE__ */ x("select", {
|
|
229
|
+
"aria-label": i("providers.filters.statusLabel", "Filter by status"),
|
|
230
|
+
value: I,
|
|
274
231
|
onChange: (e) => {
|
|
275
|
-
|
|
232
|
+
L(e.target.value), v(0);
|
|
276
233
|
},
|
|
277
234
|
className: "rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-xs text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
|
|
278
|
-
children:
|
|
235
|
+
children: z.map((e) => /* @__PURE__ */ x("option", {
|
|
279
236
|
value: e.value,
|
|
280
237
|
children: e.label
|
|
281
238
|
}, e.value))
|
|
282
239
|
})
|
|
283
240
|
}),
|
|
284
|
-
!
|
|
241
|
+
!V && !H && G.length > 0 && /* @__PURE__ */ x("div", {
|
|
285
242
|
className: "mt-4 grid grid-cols-1 gap-3 sm:grid-cols-3",
|
|
286
|
-
children:
|
|
243
|
+
children: Z.map((e) => /* @__PURE__ */ S(w, {
|
|
287
244
|
treatment: "metric",
|
|
288
245
|
className: "flex items-center gap-3 p-4",
|
|
289
|
-
children: [/* @__PURE__ */
|
|
246
|
+
children: [/* @__PURE__ */ x("span", {
|
|
290
247
|
className: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-[var(--color-accent-soft)] text-text-primary",
|
|
291
|
-
children: /* @__PURE__ */
|
|
292
|
-
}), /* @__PURE__ */
|
|
248
|
+
children: /* @__PURE__ */ x(e.icon, { className: "h-4 w-4" })
|
|
249
|
+
}), /* @__PURE__ */ S("div", {
|
|
293
250
|
className: "min-w-0",
|
|
294
|
-
children: [/* @__PURE__ */
|
|
251
|
+
children: [/* @__PURE__ */ x("p", {
|
|
295
252
|
className: "truncate text-xs text-text-secondary",
|
|
296
253
|
children: e.label
|
|
297
|
-
}), /* @__PURE__ */
|
|
254
|
+
}), /* @__PURE__ */ x("p", {
|
|
298
255
|
className: "text-lg font-semibold tabular-nums text-text-primary",
|
|
299
256
|
children: e.value
|
|
300
257
|
})]
|
|
301
258
|
})]
|
|
302
259
|
}, e.label))
|
|
303
260
|
}),
|
|
304
|
-
|
|
305
|
-
message: "Could not load the provider registry.",
|
|
306
|
-
onRetry: () => void
|
|
307
|
-
}) :
|
|
261
|
+
V ? /* @__PURE__ */ x(s, { label: i("providers.loading", "Loading providers…") }) : H ? /* @__PURE__ */ x(o, {
|
|
262
|
+
message: i("providers.error", "Could not load the provider registry."),
|
|
263
|
+
onRetry: () => void U()
|
|
264
|
+
}) : G.length === 0 ? /* @__PURE__ */ x("div", {
|
|
308
265
|
className: "mt-6",
|
|
309
|
-
children: /* @__PURE__ */
|
|
266
|
+
children: /* @__PURE__ */ x(a, {
|
|
310
267
|
illustration: "empty-search",
|
|
311
|
-
icon: /* @__PURE__ */
|
|
312
|
-
title: "No providers found",
|
|
313
|
-
description:
|
|
314
|
-
action: /* @__PURE__ */
|
|
268
|
+
icon: /* @__PURE__ */ x(m, { className: "h-12 w-12" }),
|
|
269
|
+
title: i("providers.emptyTitle", "No providers found"),
|
|
270
|
+
description: k ? i("providers.emptyDescriptionSearch", "No providers match \"{{search}}\".", { search: k }) : i("providers.emptyDescription", "No providers in the registry with these filters yet."),
|
|
271
|
+
action: /* @__PURE__ */ x("button", {
|
|
315
272
|
type: "button",
|
|
316
|
-
onClick: () =>
|
|
273
|
+
onClick: () => c("/providers/new"),
|
|
317
274
|
className: "rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90",
|
|
318
|
-
children: "Add provider"
|
|
275
|
+
children: i("providers.addProvider", "Add provider")
|
|
319
276
|
})
|
|
320
277
|
})
|
|
321
|
-
}) : /* @__PURE__ */
|
|
278
|
+
}) : /* @__PURE__ */ S(b, { children: [/* @__PURE__ */ x("div", {
|
|
322
279
|
className: "mt-6 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
323
|
-
children:
|
|
280
|
+
children: G.map((e) => /* @__PURE__ */ x(j, {
|
|
324
281
|
provider: e,
|
|
325
|
-
onOpen: () =>
|
|
282
|
+
onOpen: () => c(`/providers/${e.id}`)
|
|
326
283
|
}, e.id))
|
|
327
|
-
}), /* @__PURE__ */
|
|
284
|
+
}), /* @__PURE__ */ S("div", {
|
|
328
285
|
className: "mt-6 flex items-center justify-between",
|
|
329
|
-
children: [/* @__PURE__ */
|
|
286
|
+
children: [/* @__PURE__ */ S("p", {
|
|
330
287
|
className: "text-xs text-text-secondary",
|
|
331
|
-
children: [
|
|
332
|
-
|
|
333
|
-
i + 1,
|
|
334
|
-
z ? " · refreshing…" : ""
|
|
335
|
-
]
|
|
336
|
-
}), /* @__PURE__ */ x("div", {
|
|
288
|
+
children: [i("providers.pagination.page", "Page {{page}}", { page: h + 1 }), W ? ` · ${i("providers.pagination.refreshing", "refreshing…")}` : ""]
|
|
289
|
+
}), /* @__PURE__ */ S("div", {
|
|
337
290
|
className: "flex gap-2",
|
|
338
|
-
children: [/* @__PURE__ */
|
|
291
|
+
children: [/* @__PURE__ */ x("button", {
|
|
339
292
|
type: "button",
|
|
340
|
-
disabled:
|
|
341
|
-
onClick: () =>
|
|
342
|
-
className: t("rounded-lg border border-border-subtle px-3 py-1.5 text-xs font-medium",
|
|
343
|
-
children: "Previous"
|
|
344
|
-
}), /* @__PURE__ */
|
|
293
|
+
disabled: h === 0,
|
|
294
|
+
onClick: () => v((e) => Math.max(0, e - 1)),
|
|
295
|
+
className: t("rounded-lg border border-border-subtle px-3 py-1.5 text-xs font-medium", h === 0 ? "cursor-not-allowed text-text-secondary opacity-50" : "text-text-primary hover:bg-bg-sunken"),
|
|
296
|
+
children: i("providers.pagination.previous", "Previous")
|
|
297
|
+
}), /* @__PURE__ */ x("button", {
|
|
345
298
|
type: "button",
|
|
346
|
-
disabled: !
|
|
347
|
-
onClick: () =>
|
|
348
|
-
className: t("rounded-lg border border-border-subtle px-3 py-1.5 text-xs font-medium",
|
|
349
|
-
children: "Next"
|
|
299
|
+
disabled: !K,
|
|
300
|
+
onClick: () => v((e) => e + 1),
|
|
301
|
+
className: t("rounded-lg border border-border-subtle px-3 py-1.5 text-xs font-medium", K ? "text-text-primary hover:bg-bg-sunken" : "cursor-not-allowed text-text-secondary opacity-50"),
|
|
302
|
+
children: i("providers.pagination.next", "Next")
|
|
350
303
|
})]
|
|
351
304
|
})]
|
|
352
305
|
})] })
|
|
@@ -354,6 +307,6 @@ function j() {
|
|
|
354
307
|
});
|
|
355
308
|
}
|
|
356
309
|
//#endregion
|
|
357
|
-
export {
|
|
310
|
+
export { M as ProvidersListPage };
|
|
358
311
|
|
|
359
312
|
//# sourceMappingURL=ProvidersListPage.js.map
|