medusa-stats 1.0.9 → 1.0.11

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.
@@ -15,7 +15,7 @@ const Medusa__default = /* @__PURE__ */ _interopDefault(Medusa);
15
15
  const React__default = /* @__PURE__ */ _interopDefault(React);
16
16
  const STATISTICS_QUERY = "statistics";
17
17
  const sdk = new Medusa__default.default({
18
- baseUrl: "/",
18
+ baseUrl: __BACKEND_URL__,
19
19
  debug: false,
20
20
  auth: {
21
21
  type: "session"
@@ -7209,103 +7209,6 @@ const AlertsPage = () => {
7209
7209
  const config$4 = adminSdk.defineRouteConfig({
7210
7210
  label: "Alerts"
7211
7211
  });
7212
- const ProviderRow = ({ provider, isExpanded, onToggle }) => {
7213
- const statistics = (provider == null ? void 0 : provider.statistics) || [];
7214
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7215
- /* @__PURE__ */ jsxRuntime.jsxs(
7216
- ui.Table.Row,
7217
- {
7218
- className: "cursor-pointer",
7219
- onClick: onToggle,
7220
- children: [
7221
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 py-2", children: [
7222
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-ui-bg-subtle border rounded-lg p-2", children: /* @__PURE__ */ jsxRuntime.jsx(icons.Adjustments, { className: "text-ui-fg-muted" }) }),
7223
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
7224
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: provider.display_name || provider.id }),
7225
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-fg-muted text-xs", children: provider.id })
7226
- ] })
7227
- ] }) }),
7228
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-ui-fg-subtle", children: [
7229
- statistics.length || 0,
7230
- " available"
7231
- ] }) }),
7232
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.StatusBadge, { color: provider.is_enabled ? "green" : "grey", children: provider.is_enabled ? "Active" : "Disabled" }) }),
7233
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { className: "text-right", children: isExpanded ? /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronUpMini, { className: "inline-block text-ui-fg-muted" }) : /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDownMini, { className: "inline-block text-ui-fg-muted" }) })
7234
- ]
7235
- }
7236
- ),
7237
- isExpanded && /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Row, { className: "bg-ui-bg-subtle hover:bg-ui-bg-subtle", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { ...{ colSpan: 4 }, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 py-4", children: [
7238
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium mb-3", children: "Available Statistics" }),
7239
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-2", children: statistics.map((stat) => /* @__PURE__ */ jsxRuntime.jsx(
7240
- "div",
7241
- {
7242
- className: "bg-ui-bg-base rounded-lg p-3 border border-ui-border-base",
7243
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-start justify-between", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
7244
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-sm", children: stat.name || stat.id }),
7245
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-ui-fg-muted mt-1", children: stat.id }),
7246
- stat.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-ui-fg-subtle mt-2", children: stat.description })
7247
- ] }) })
7248
- },
7249
- stat.id
7250
- )) })
7251
- ] }) }) })
7252
- ] });
7253
- };
7254
- const LoadingRow = () => /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
7255
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
7256
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-5 w-48 mb-1" }),
7257
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-4 w-32" })
7258
- ] }) }),
7259
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-5 w-24" }) }),
7260
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-5 w-20" }) }),
7261
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-5 w-24" }) })
7262
- ] });
7263
- const ProvidersPage = () => {
7264
- const [expandedRows, setExpandedRows] = React.useState(/* @__PURE__ */ new Set());
7265
- const { data, isLoading } = reactQuery.useQuery({
7266
- queryFn: () => listProviders(),
7267
- queryKey: [STATISTICS_QUERY, "providers"]
7268
- });
7269
- const providers = (data == null ? void 0 : data.providers) || [];
7270
- const toggleRow = (providerId) => {
7271
- setExpandedRows((prev) => {
7272
- const newSet = new Set(prev);
7273
- if (newSet.has(providerId)) {
7274
- newSet.delete(providerId);
7275
- } else {
7276
- newSet.add(providerId);
7277
- }
7278
- return newSet;
7279
- });
7280
- };
7281
- return /* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "divide-y p-0 overflow-hidden", children: [
7282
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-between px-6 py-4", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: "Providers" }) }),
7283
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Table, { children: [
7284
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Header, { className: "!border-none", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
7285
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Provider" }),
7286
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Statistics" }),
7287
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Status" }),
7288
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, {})
7289
- ] }) }),
7290
- /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Body, { className: "!border-none", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7291
- /* @__PURE__ */ jsxRuntime.jsx(LoadingRow, {}),
7292
- /* @__PURE__ */ jsxRuntime.jsx(LoadingRow, {}),
7293
- /* @__PURE__ */ jsxRuntime.jsx(LoadingRow, {})
7294
- ] }) : providers.length > 0 ? providers.map((provider) => /* @__PURE__ */ jsxRuntime.jsx(
7295
- ProviderRow,
7296
- {
7297
- provider,
7298
- isExpanded: expandedRows.has(provider.id),
7299
- onToggle: () => toggleRow(provider.id)
7300
- },
7301
- provider.id
7302
- )) : /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Row, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { ...{ colSpan: 4 }, className: "text-center text-ui-fg-muted ", children: "No providers found" }) }) })
7303
- ] }) })
7304
- ] });
7305
- };
7306
- const config$3 = adminSdk.defineRouteConfig({
7307
- label: "Providers"
7308
- });
7309
7212
  const OptionSelector = ({
7310
7213
  onSelect,
7311
7214
  title,
@@ -8216,7 +8119,7 @@ const OptionEditDrawer = ({
8216
8119
  ] })
8217
8120
  ] }) });
8218
8121
  };
8219
- const config$2 = adminSdk.defineRouteConfig({
8122
+ const config$3 = adminSdk.defineRouteConfig({
8220
8123
  label: "Option Presets",
8221
8124
  icon: icons.ArrowDownTray
8222
8125
  });
@@ -8545,6 +8448,103 @@ const PresetsPage = () => {
8545
8448
  )
8546
8449
  ] });
8547
8450
  };
8451
+ const ProviderRow = ({ provider, isExpanded, onToggle }) => {
8452
+ const statistics = (provider == null ? void 0 : provider.statistics) || [];
8453
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8454
+ /* @__PURE__ */ jsxRuntime.jsxs(
8455
+ ui.Table.Row,
8456
+ {
8457
+ className: "cursor-pointer",
8458
+ onClick: onToggle,
8459
+ children: [
8460
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 py-2", children: [
8461
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-ui-bg-subtle border rounded-lg p-2", children: /* @__PURE__ */ jsxRuntime.jsx(icons.Adjustments, { className: "text-ui-fg-muted" }) }),
8462
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
8463
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: provider.display_name || provider.id }),
8464
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-fg-muted text-xs", children: provider.id })
8465
+ ] })
8466
+ ] }) }),
8467
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-ui-fg-subtle", children: [
8468
+ statistics.length || 0,
8469
+ " available"
8470
+ ] }) }),
8471
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.StatusBadge, { color: provider.is_enabled ? "green" : "grey", children: provider.is_enabled ? "Active" : "Disabled" }) }),
8472
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { className: "text-right", children: isExpanded ? /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronUpMini, { className: "inline-block text-ui-fg-muted" }) : /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDownMini, { className: "inline-block text-ui-fg-muted" }) })
8473
+ ]
8474
+ }
8475
+ ),
8476
+ isExpanded && /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Row, { className: "bg-ui-bg-subtle hover:bg-ui-bg-subtle", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { ...{ colSpan: 4 }, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 py-4", children: [
8477
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium mb-3", children: "Available Statistics" }),
8478
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-2", children: statistics.map((stat) => /* @__PURE__ */ jsxRuntime.jsx(
8479
+ "div",
8480
+ {
8481
+ className: "bg-ui-bg-base rounded-lg p-3 border border-ui-border-base",
8482
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-start justify-between", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
8483
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-sm", children: stat.name || stat.id }),
8484
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-ui-fg-muted mt-1", children: stat.id }),
8485
+ stat.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-ui-fg-subtle mt-2", children: stat.description })
8486
+ ] }) })
8487
+ },
8488
+ stat.id
8489
+ )) })
8490
+ ] }) }) })
8491
+ ] });
8492
+ };
8493
+ const LoadingRow = () => /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
8494
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
8495
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-5 w-48 mb-1" }),
8496
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-4 w-32" })
8497
+ ] }) }),
8498
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-5 w-24" }) }),
8499
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-5 w-20" }) }),
8500
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton$1, { className: "h-5 w-24" }) })
8501
+ ] });
8502
+ const ProvidersPage = () => {
8503
+ const [expandedRows, setExpandedRows] = React.useState(/* @__PURE__ */ new Set());
8504
+ const { data, isLoading } = reactQuery.useQuery({
8505
+ queryFn: () => listProviders(),
8506
+ queryKey: [STATISTICS_QUERY, "providers"]
8507
+ });
8508
+ const providers = (data == null ? void 0 : data.providers) || [];
8509
+ const toggleRow = (providerId) => {
8510
+ setExpandedRows((prev) => {
8511
+ const newSet = new Set(prev);
8512
+ if (newSet.has(providerId)) {
8513
+ newSet.delete(providerId);
8514
+ } else {
8515
+ newSet.add(providerId);
8516
+ }
8517
+ return newSet;
8518
+ });
8519
+ };
8520
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "divide-y p-0 overflow-hidden", children: [
8521
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-between px-6 py-4", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: "Providers" }) }),
8522
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Table, { children: [
8523
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Header, { className: "!border-none", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
8524
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Provider" }),
8525
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Statistics" }),
8526
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Status" }),
8527
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, {})
8528
+ ] }) }),
8529
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Body, { className: "!border-none", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8530
+ /* @__PURE__ */ jsxRuntime.jsx(LoadingRow, {}),
8531
+ /* @__PURE__ */ jsxRuntime.jsx(LoadingRow, {}),
8532
+ /* @__PURE__ */ jsxRuntime.jsx(LoadingRow, {})
8533
+ ] }) : providers.length > 0 ? providers.map((provider) => /* @__PURE__ */ jsxRuntime.jsx(
8534
+ ProviderRow,
8535
+ {
8536
+ provider,
8537
+ isExpanded: expandedRows.has(provider.id),
8538
+ onToggle: () => toggleRow(provider.id)
8539
+ },
8540
+ provider.id
8541
+ )) : /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Row, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { ...{ colSpan: 4 }, className: "text-center text-ui-fg-muted ", children: "No providers found" }) }) })
8542
+ ] }) })
8543
+ ] });
8544
+ };
8545
+ const config$2 = adminSdk.defineRouteConfig({
8546
+ label: "Providers"
8547
+ });
8548
8548
  const columnHelper = ui.createDataTableColumnHelper();
8549
8549
  const getColumns = () => [
8550
8550
  columnHelper.accessor("alert.name", {
@@ -10426,14 +10426,14 @@ const routeModule = {
10426
10426
  Component: AlertsPage,
10427
10427
  path: "/statistics/alerts"
10428
10428
  },
10429
- {
10430
- Component: ProvidersPage,
10431
- path: "/statistics/providers"
10432
- },
10433
10429
  {
10434
10430
  Component: PresetsPage,
10435
10431
  path: "/statistics/presets"
10436
10432
  },
10433
+ {
10434
+ Component: ProvidersPage,
10435
+ path: "/statistics/providers"
10436
+ },
10437
10437
  {
10438
10438
  Component: AlertLogsPage,
10439
10439
  path: "/statistics/alerts/logs"
@@ -10464,16 +10464,16 @@ const menuItemModule = {
10464
10464
  },
10465
10465
  {
10466
10466
  label: config$2.label,
10467
- icon: config$2.icon,
10468
- path: "/statistics/presets",
10467
+ icon: void 0,
10468
+ path: "/statistics/providers",
10469
10469
  nested: void 0,
10470
10470
  rank: void 0,
10471
10471
  translationNs: void 0
10472
10472
  },
10473
10473
  {
10474
10474
  label: config$3.label,
10475
- icon: void 0,
10476
- path: "/statistics/providers",
10475
+ icon: config$3.icon,
10476
+ path: "/statistics/presets",
10477
10477
  nested: void 0,
10478
10478
  rank: void 0,
10479
10479
  translationNs: void 0
@@ -11,7 +11,7 @@ import { HexColorPicker } from "react-colorful";
11
11
  import { ResponsiveContainer, ComposedChart, CartesianGrid, XAxis, YAxis, Tooltip, Legend, Line, Bar, Area } from "recharts";
12
12
  const STATISTICS_QUERY = "statistics";
13
13
  const sdk = new Medusa({
14
- baseUrl: "/",
14
+ baseUrl: __BACKEND_URL__,
15
15
  debug: false,
16
16
  auth: {
17
17
  type: "session"
@@ -7205,103 +7205,6 @@ const AlertsPage = () => {
7205
7205
  const config$4 = defineRouteConfig({
7206
7206
  label: "Alerts"
7207
7207
  });
7208
- const ProviderRow = ({ provider, isExpanded, onToggle }) => {
7209
- const statistics = (provider == null ? void 0 : provider.statistics) || [];
7210
- return /* @__PURE__ */ jsxs(Fragment, { children: [
7211
- /* @__PURE__ */ jsxs(
7212
- Table.Row,
7213
- {
7214
- className: "cursor-pointer",
7215
- onClick: onToggle,
7216
- children: [
7217
- /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 py-2", children: [
7218
- /* @__PURE__ */ jsx("div", { className: "bg-ui-bg-subtle border rounded-lg p-2", children: /* @__PURE__ */ jsx(Adjustments, { className: "text-ui-fg-muted" }) }),
7219
- /* @__PURE__ */ jsxs("div", { children: [
7220
- /* @__PURE__ */ jsx("p", { className: "font-medium", children: provider.display_name || provider.id }),
7221
- /* @__PURE__ */ jsx("p", { className: "text-ui-fg-muted text-xs", children: provider.id })
7222
- ] })
7223
- ] }) }),
7224
- /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsxs("span", { className: "text-xs text-ui-fg-subtle", children: [
7225
- statistics.length || 0,
7226
- " available"
7227
- ] }) }),
7228
- /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(StatusBadge, { color: provider.is_enabled ? "green" : "grey", children: provider.is_enabled ? "Active" : "Disabled" }) }),
7229
- /* @__PURE__ */ jsx(Table.Cell, { className: "text-right", children: isExpanded ? /* @__PURE__ */ jsx(ChevronUpMini, { className: "inline-block text-ui-fg-muted" }) : /* @__PURE__ */ jsx(ChevronDownMini, { className: "inline-block text-ui-fg-muted" }) })
7230
- ]
7231
- }
7232
- ),
7233
- isExpanded && /* @__PURE__ */ jsx(Table.Row, { className: "bg-ui-bg-subtle hover:bg-ui-bg-subtle", children: /* @__PURE__ */ jsx(Table.Cell, { ...{ colSpan: 4 }, children: /* @__PURE__ */ jsxs("div", { className: "space-y-2 py-4", children: [
7234
- /* @__PURE__ */ jsx("h4", { className: "text-sm font-medium mb-3", children: "Available Statistics" }),
7235
- /* @__PURE__ */ jsx("div", { className: "grid gap-2", children: statistics.map((stat) => /* @__PURE__ */ jsx(
7236
- "div",
7237
- {
7238
- className: "bg-ui-bg-base rounded-lg p-3 border border-ui-border-base",
7239
- children: /* @__PURE__ */ jsx("div", { className: "flex items-start justify-between", children: /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
7240
- /* @__PURE__ */ jsx("p", { className: "font-medium text-sm", children: stat.name || stat.id }),
7241
- /* @__PURE__ */ jsx("p", { className: "text-xs text-ui-fg-muted mt-1", children: stat.id }),
7242
- stat.description && /* @__PURE__ */ jsx("p", { className: "text-xs text-ui-fg-subtle mt-2", children: stat.description })
7243
- ] }) })
7244
- },
7245
- stat.id
7246
- )) })
7247
- ] }) }) })
7248
- ] });
7249
- };
7250
- const LoadingRow = () => /* @__PURE__ */ jsxs(Table.Row, { children: [
7251
- /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsxs("div", { children: [
7252
- /* @__PURE__ */ jsx(Skeleton$1, { className: "h-5 w-48 mb-1" }),
7253
- /* @__PURE__ */ jsx(Skeleton$1, { className: "h-4 w-32" })
7254
- ] }) }),
7255
- /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Skeleton$1, { className: "h-5 w-24" }) }),
7256
- /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Skeleton$1, { className: "h-5 w-20" }) }),
7257
- /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Skeleton$1, { className: "h-5 w-24" }) })
7258
- ] });
7259
- const ProvidersPage = () => {
7260
- const [expandedRows, setExpandedRows] = useState(/* @__PURE__ */ new Set());
7261
- const { data, isLoading } = useQuery({
7262
- queryFn: () => listProviders(),
7263
- queryKey: [STATISTICS_QUERY, "providers"]
7264
- });
7265
- const providers = (data == null ? void 0 : data.providers) || [];
7266
- const toggleRow = (providerId) => {
7267
- setExpandedRows((prev) => {
7268
- const newSet = new Set(prev);
7269
- if (newSet.has(providerId)) {
7270
- newSet.delete(providerId);
7271
- } else {
7272
- newSet.add(providerId);
7273
- }
7274
- return newSet;
7275
- });
7276
- };
7277
- return /* @__PURE__ */ jsxs(Container, { className: "divide-y p-0 overflow-hidden", children: [
7278
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between px-6 py-4", children: /* @__PURE__ */ jsx(Heading, { level: "h2", children: "Providers" }) }),
7279
- /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs(Table, { children: [
7280
- /* @__PURE__ */ jsx(Table.Header, { className: "!border-none", children: /* @__PURE__ */ jsxs(Table.Row, { children: [
7281
- /* @__PURE__ */ jsx(Table.HeaderCell, { children: "Provider" }),
7282
- /* @__PURE__ */ jsx(Table.HeaderCell, { children: "Statistics" }),
7283
- /* @__PURE__ */ jsx(Table.HeaderCell, { children: "Status" }),
7284
- /* @__PURE__ */ jsx(Table.HeaderCell, {})
7285
- ] }) }),
7286
- /* @__PURE__ */ jsx(Table.Body, { className: "!border-none", children: isLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
7287
- /* @__PURE__ */ jsx(LoadingRow, {}),
7288
- /* @__PURE__ */ jsx(LoadingRow, {}),
7289
- /* @__PURE__ */ jsx(LoadingRow, {})
7290
- ] }) : providers.length > 0 ? providers.map((provider) => /* @__PURE__ */ jsx(
7291
- ProviderRow,
7292
- {
7293
- provider,
7294
- isExpanded: expandedRows.has(provider.id),
7295
- onToggle: () => toggleRow(provider.id)
7296
- },
7297
- provider.id
7298
- )) : /* @__PURE__ */ jsx(Table.Row, { children: /* @__PURE__ */ jsx(Table.Cell, { ...{ colSpan: 4 }, className: "text-center text-ui-fg-muted ", children: "No providers found" }) }) })
7299
- ] }) })
7300
- ] });
7301
- };
7302
- const config$3 = defineRouteConfig({
7303
- label: "Providers"
7304
- });
7305
7208
  const OptionSelector = ({
7306
7209
  onSelect,
7307
7210
  title,
@@ -8212,7 +8115,7 @@ const OptionEditDrawer = ({
8212
8115
  ] })
8213
8116
  ] }) });
8214
8117
  };
8215
- const config$2 = defineRouteConfig({
8118
+ const config$3 = defineRouteConfig({
8216
8119
  label: "Option Presets",
8217
8120
  icon: ArrowDownTray
8218
8121
  });
@@ -8541,6 +8444,103 @@ const PresetsPage = () => {
8541
8444
  )
8542
8445
  ] });
8543
8446
  };
8447
+ const ProviderRow = ({ provider, isExpanded, onToggle }) => {
8448
+ const statistics = (provider == null ? void 0 : provider.statistics) || [];
8449
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
8450
+ /* @__PURE__ */ jsxs(
8451
+ Table.Row,
8452
+ {
8453
+ className: "cursor-pointer",
8454
+ onClick: onToggle,
8455
+ children: [
8456
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 py-2", children: [
8457
+ /* @__PURE__ */ jsx("div", { className: "bg-ui-bg-subtle border rounded-lg p-2", children: /* @__PURE__ */ jsx(Adjustments, { className: "text-ui-fg-muted" }) }),
8458
+ /* @__PURE__ */ jsxs("div", { children: [
8459
+ /* @__PURE__ */ jsx("p", { className: "font-medium", children: provider.display_name || provider.id }),
8460
+ /* @__PURE__ */ jsx("p", { className: "text-ui-fg-muted text-xs", children: provider.id })
8461
+ ] })
8462
+ ] }) }),
8463
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsxs("span", { className: "text-xs text-ui-fg-subtle", children: [
8464
+ statistics.length || 0,
8465
+ " available"
8466
+ ] }) }),
8467
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(StatusBadge, { color: provider.is_enabled ? "green" : "grey", children: provider.is_enabled ? "Active" : "Disabled" }) }),
8468
+ /* @__PURE__ */ jsx(Table.Cell, { className: "text-right", children: isExpanded ? /* @__PURE__ */ jsx(ChevronUpMini, { className: "inline-block text-ui-fg-muted" }) : /* @__PURE__ */ jsx(ChevronDownMini, { className: "inline-block text-ui-fg-muted" }) })
8469
+ ]
8470
+ }
8471
+ ),
8472
+ isExpanded && /* @__PURE__ */ jsx(Table.Row, { className: "bg-ui-bg-subtle hover:bg-ui-bg-subtle", children: /* @__PURE__ */ jsx(Table.Cell, { ...{ colSpan: 4 }, children: /* @__PURE__ */ jsxs("div", { className: "space-y-2 py-4", children: [
8473
+ /* @__PURE__ */ jsx("h4", { className: "text-sm font-medium mb-3", children: "Available Statistics" }),
8474
+ /* @__PURE__ */ jsx("div", { className: "grid gap-2", children: statistics.map((stat) => /* @__PURE__ */ jsx(
8475
+ "div",
8476
+ {
8477
+ className: "bg-ui-bg-base rounded-lg p-3 border border-ui-border-base",
8478
+ children: /* @__PURE__ */ jsx("div", { className: "flex items-start justify-between", children: /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
8479
+ /* @__PURE__ */ jsx("p", { className: "font-medium text-sm", children: stat.name || stat.id }),
8480
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-ui-fg-muted mt-1", children: stat.id }),
8481
+ stat.description && /* @__PURE__ */ jsx("p", { className: "text-xs text-ui-fg-subtle mt-2", children: stat.description })
8482
+ ] }) })
8483
+ },
8484
+ stat.id
8485
+ )) })
8486
+ ] }) }) })
8487
+ ] });
8488
+ };
8489
+ const LoadingRow = () => /* @__PURE__ */ jsxs(Table.Row, { children: [
8490
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsxs("div", { children: [
8491
+ /* @__PURE__ */ jsx(Skeleton$1, { className: "h-5 w-48 mb-1" }),
8492
+ /* @__PURE__ */ jsx(Skeleton$1, { className: "h-4 w-32" })
8493
+ ] }) }),
8494
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Skeleton$1, { className: "h-5 w-24" }) }),
8495
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Skeleton$1, { className: "h-5 w-20" }) }),
8496
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Skeleton$1, { className: "h-5 w-24" }) })
8497
+ ] });
8498
+ const ProvidersPage = () => {
8499
+ const [expandedRows, setExpandedRows] = useState(/* @__PURE__ */ new Set());
8500
+ const { data, isLoading } = useQuery({
8501
+ queryFn: () => listProviders(),
8502
+ queryKey: [STATISTICS_QUERY, "providers"]
8503
+ });
8504
+ const providers = (data == null ? void 0 : data.providers) || [];
8505
+ const toggleRow = (providerId) => {
8506
+ setExpandedRows((prev) => {
8507
+ const newSet = new Set(prev);
8508
+ if (newSet.has(providerId)) {
8509
+ newSet.delete(providerId);
8510
+ } else {
8511
+ newSet.add(providerId);
8512
+ }
8513
+ return newSet;
8514
+ });
8515
+ };
8516
+ return /* @__PURE__ */ jsxs(Container, { className: "divide-y p-0 overflow-hidden", children: [
8517
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between px-6 py-4", children: /* @__PURE__ */ jsx(Heading, { level: "h2", children: "Providers" }) }),
8518
+ /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs(Table, { children: [
8519
+ /* @__PURE__ */ jsx(Table.Header, { className: "!border-none", children: /* @__PURE__ */ jsxs(Table.Row, { children: [
8520
+ /* @__PURE__ */ jsx(Table.HeaderCell, { children: "Provider" }),
8521
+ /* @__PURE__ */ jsx(Table.HeaderCell, { children: "Statistics" }),
8522
+ /* @__PURE__ */ jsx(Table.HeaderCell, { children: "Status" }),
8523
+ /* @__PURE__ */ jsx(Table.HeaderCell, {})
8524
+ ] }) }),
8525
+ /* @__PURE__ */ jsx(Table.Body, { className: "!border-none", children: isLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
8526
+ /* @__PURE__ */ jsx(LoadingRow, {}),
8527
+ /* @__PURE__ */ jsx(LoadingRow, {}),
8528
+ /* @__PURE__ */ jsx(LoadingRow, {})
8529
+ ] }) : providers.length > 0 ? providers.map((provider) => /* @__PURE__ */ jsx(
8530
+ ProviderRow,
8531
+ {
8532
+ provider,
8533
+ isExpanded: expandedRows.has(provider.id),
8534
+ onToggle: () => toggleRow(provider.id)
8535
+ },
8536
+ provider.id
8537
+ )) : /* @__PURE__ */ jsx(Table.Row, { children: /* @__PURE__ */ jsx(Table.Cell, { ...{ colSpan: 4 }, className: "text-center text-ui-fg-muted ", children: "No providers found" }) }) })
8538
+ ] }) })
8539
+ ] });
8540
+ };
8541
+ const config$2 = defineRouteConfig({
8542
+ label: "Providers"
8543
+ });
8544
8544
  const columnHelper = createDataTableColumnHelper();
8545
8545
  const getColumns = () => [
8546
8546
  columnHelper.accessor("alert.name", {
@@ -10422,14 +10422,14 @@ const routeModule = {
10422
10422
  Component: AlertsPage,
10423
10423
  path: "/statistics/alerts"
10424
10424
  },
10425
- {
10426
- Component: ProvidersPage,
10427
- path: "/statistics/providers"
10428
- },
10429
10425
  {
10430
10426
  Component: PresetsPage,
10431
10427
  path: "/statistics/presets"
10432
10428
  },
10429
+ {
10430
+ Component: ProvidersPage,
10431
+ path: "/statistics/providers"
10432
+ },
10433
10433
  {
10434
10434
  Component: AlertLogsPage,
10435
10435
  path: "/statistics/alerts/logs"
@@ -10460,16 +10460,16 @@ const menuItemModule = {
10460
10460
  },
10461
10461
  {
10462
10462
  label: config$2.label,
10463
- icon: config$2.icon,
10464
- path: "/statistics/presets",
10463
+ icon: void 0,
10464
+ path: "/statistics/providers",
10465
10465
  nested: void 0,
10466
10466
  rank: void 0,
10467
10467
  translationNs: void 0
10468
10468
  },
10469
10469
  {
10470
10470
  label: config$3.label,
10471
- icon: void 0,
10472
- path: "/statistics/providers",
10471
+ icon: config$3.icon,
10472
+ path: "/statistics/presets",
10473
10473
  nested: void 0,
10474
10474
  rank: void 0,
10475
10475
  translationNs: void 0
@@ -44,4 +44,4 @@ const registerProvidersInDb = async ({ container, }) => {
44
44
  }
45
45
  await financialSummaryService.upsert(upsertData);
46
46
  };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbG9hZGVycy9zdGF0aXN0aWNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQW1GO0FBQ25GLGlFQUFzRTtBQVF0RSxxREFBa0Y7QUFLbEYsbURBQTZEO0FBRTdELE1BQU0seUJBQXlCLEdBQUcsZ0JBQWdCLENBQUE7QUFFbEQsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLEtBQVUsRUFBRSxTQUEwQixFQUFFLGFBQWtCLEVBQUUsRUFBRTtJQUN4RixJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMseUVBQXlFLENBQzVFLENBQUE7SUFDTCxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUM3RSxFQUFFLENBQUE7SUFLTixTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ2YsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFBLGdCQUFPLEVBQUMsS0FBSyxDQUFDO0tBQ3hCLENBQUMsQ0FBQztJQUlILGtCQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxLQUFLLENBQUMsVUFBVSxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEYsU0FBUyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFBLGdCQUFPLEVBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDL0gsQ0FBQyxDQUFBO0FBRUQsa0JBQWUsS0FBSyxFQUFFLEVBQ2xCLFNBQVMsRUFDVCxPQUFPLEdBUVYsRUFBaUIsRUFBRTtJQUNoQixNQUFNLElBQUEsa0NBQW9CLEVBQUM7UUFDdkIsU0FBUztRQUNULFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLEVBQUU7UUFDbkMsaUJBQWlCLEVBQUUsY0FBYztLQUNwQyxDQUFDLENBQUE7SUFFRixNQUFNLHFCQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtBQUM5QyxDQUFDLENBQUE7QUFFRCxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxFQUNqQyxTQUFTLEdBQ0csRUFBaUIsRUFBRTtJQUMvQixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUF5Qyx5QkFBeUIsRUFBRTtRQUN6RyxpQkFBaUIsRUFBRSxJQUFJO0tBQzFCLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDM0IsT0FBTTtJQUNWLENBQUM7SUFFRCxNQUFNLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzdDLDJCQUEyQixDQUM5QixDQUFDO0lBRUYsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHVCQUF1QixDQUFDLElBQUksQ0FDeEQsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUN0QyxFQUFFLENBQ0wsQ0FBQTtJQUVELE1BQU0sVUFBVSxHQUFnRSxFQUFFLENBQUE7SUFFbEYsS0FBSyxNQUFNLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDNUQsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLE1BQU0sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksZUFBZSxFQUFFLENBQUM7UUFDakQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELE1BQU0sdUJBQXVCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3BELENBQUMsQ0FBQSJ9
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbG9hZGVycy9zdGF0aXN0aWNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQW1GO0FBQ25GLGlFQUFzRTtBQVF0RSxxREFBa0Y7QUFLbEYsbURBQTZEO0FBRTdELE1BQU0seUJBQXlCLEdBQUcsZ0JBQWdCLENBQUE7QUFFbEQsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLEtBQVUsRUFBRSxTQUEwQixFQUFFLGFBQWtCLEVBQUUsRUFBRTtJQUN4RixJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMseUVBQXlFLENBQzVFLENBQUE7SUFDTCxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUV0RixTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ2YsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFBLGdCQUFPLEVBQUMsS0FBSyxDQUFDO0tBQ3hCLENBQUMsQ0FBQztJQUlILGtCQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxLQUFLLENBQUMsVUFBVSxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEYsU0FBUyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFBLGdCQUFPLEVBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDL0gsQ0FBQyxDQUFBO0FBRUQsa0JBQWUsS0FBSyxFQUFFLEVBQ2xCLFNBQVMsRUFDVCxPQUFPLEdBUVYsRUFBaUIsRUFBRTtJQUNoQixNQUFNLElBQUEsa0NBQW9CLEVBQUM7UUFDdkIsU0FBUztRQUNULFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLEVBQUU7UUFDbkMsaUJBQWlCLEVBQUUsY0FBYztLQUNwQyxDQUFDLENBQUE7SUFFRixNQUFNLHFCQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtBQUM5QyxDQUFDLENBQUE7QUFFRCxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxFQUNqQyxTQUFTLEdBQ0csRUFBaUIsRUFBRTtJQUMvQixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUF5Qyx5QkFBeUIsRUFBRTtRQUN6RyxpQkFBaUIsRUFBRSxJQUFJO0tBQzFCLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDM0IsT0FBTTtJQUNWLENBQUM7SUFFRCxNQUFNLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzdDLDJCQUEyQixDQUM5QixDQUFDO0lBRUYsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHVCQUF1QixDQUFDLElBQUksQ0FDeEQsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUN0QyxFQUFFLENBQ0wsQ0FBQTtJQUVELE1BQU0sVUFBVSxHQUFnRSxFQUFFLENBQUE7SUFFbEYsS0FBSyxNQUFNLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDNUQsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLE1BQU0sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksZUFBZSxFQUFFLENBQUM7UUFDakQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELE1BQU0sdUJBQXVCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3BELENBQUMsQ0FBQSJ9
package/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Copyright 2026 Maciej Gerhards (https://github.com/tax1driver)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.