@dilipod/ui 0.4.5 → 0.4.6
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/components/impact-metrics-form.d.ts.map +1 -1
- package/dist/index.js +97 -130
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +97 -130
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/impact-metrics-form.tsx +88 -133
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact-metrics-form.d.ts","sourceRoot":"","sources":["../../src/components/impact-metrics-form.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"impact-metrics-form.d.ts","sourceRoot":"","sources":["../../src/components/impact-metrics-form.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAC5B,0BAA0B,EAAE,MAAM,CAAA;IAClC,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,8BAA8B,EAAE,MAAM,CAAA;CACvC;AAED,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,6BAA6B;IAC7B,cAAc,EAAE,aAAa,CAAA;IAC7B,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACvE,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,cAAc,EACd,eAAmB,EACnB,YAAwB,EACxB,WAA4B,EAC5B,MAAM,EACN,UAAiB,EACjB,SAAS,GACV,EAAE,sBAAsB,2CA2OxB"}
|
package/dist/index.js
CHANGED
|
@@ -4277,12 +4277,9 @@ function ImpactMetricsForm({
|
|
|
4277
4277
|
const impliedFrequencyPerMonth = Math.round(impliedFrequencyPerYear / 12);
|
|
4278
4278
|
const laborSavingsPerYear = metrics.fte_equivalent * HOURS_PER_FTE_YEAR * metrics.hourly_rate_euros;
|
|
4279
4279
|
const netAnnualSavings = laborSavingsPerYear - workerCostPerYear;
|
|
4280
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
4281
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4282
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4283
|
-
/* @__PURE__ */ jsxRuntime.jsx(IconBox, { size: "sm", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", fill: "currentColor", viewBox: "0 0 256 256", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M232,208a8,8,0,0,1-8,8H32a8,8,0,0,1-8-8V48a8,8,0,0,1,16,0V156.69l50.34-50.35a8,8,0,0,1,11.32,0L128,132.69l58.34-58.35a8,8,0,0,1,11.32,11.32l-64,64a8,8,0,0,1-11.32,0L96,123.31,40,179.31V200H224A8,8,0,0,1,232,208Z" }) }) }),
|
|
4284
|
-
"Impact Metrics (ROI)"
|
|
4285
|
-
] }),
|
|
4280
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("", className), children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "p-5", children: [
|
|
4281
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-4", children: [
|
|
4282
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide", children: "Impact Metrics (ROI)" }),
|
|
4286
4283
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: isEditing ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4287
4284
|
isInitiallySaved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4288
4285
|
Button,
|
|
@@ -4311,135 +4308,105 @@ function ImpactMetricsForm({
|
|
|
4311
4308
|
children: "Edit"
|
|
4312
4309
|
}
|
|
4313
4310
|
) })
|
|
4314
|
-
] })
|
|
4315
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4316
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
4317
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4318
|
-
|
|
4319
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4320
|
-
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
|
|
4337
|
-
metrics.time_saved_minutes_per_run,
|
|
4338
|
-
" ",
|
|
4339
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-normal text-muted-foreground", children: "min" })
|
|
4340
|
-
] }),
|
|
4341
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "How long manually" })
|
|
4342
|
-
] })
|
|
4343
|
-
] }),
|
|
4344
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
4345
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 rounded-sm bg-[var(--cyan)]/10 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", fill: "currentColor", viewBox: "0 0 256 256", className: "text-[var(--cyan)]", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm0-144a8,8,0,0,1,8,8v4.4c14.25,3.14,24,14.43,24,30.6,0,4.42-3.58,8-8,8s-8-3.58-8-8c0-8.64-7.18-13-16-13s-16,4.36-16,13,7.18,13,16,13c17.64,0,32,11.35,32,29,0,16.17-9.75,27.46-24,30.6V192a8,8,0,0,1-16,0v-4.4c-14.25-3.14-24-14.43-24-30.6a8,8,0,0,1,16,0c0,8.64,7.18,13,16,13s16-4.36,16-13-7.18-13-16-13c-17.64,0-32-11.35-32-29,0-16.17,9.75-27.46,24-30.6V80A8,8,0,0,1,128,72Z" }) }) }),
|
|
4346
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
4347
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground block mb-1", children: "Manual Cost" }),
|
|
4348
|
-
isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4349
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u20AC" }),
|
|
4350
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4351
|
-
"input",
|
|
4352
|
-
{
|
|
4353
|
-
type: "number",
|
|
4354
|
-
value: metrics.hourly_rate_euros,
|
|
4355
|
-
onChange: (e) => setMetrics((prev) => ({
|
|
4356
|
-
...prev,
|
|
4357
|
-
hourly_rate_euros: parseFloat(e.target.value) || 0
|
|
4358
|
-
})),
|
|
4359
|
-
className: "w-16 px-2 py-1 text-lg font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background",
|
|
4360
|
-
min: "0",
|
|
4361
|
-
step: "0.5"
|
|
4362
|
-
}
|
|
4363
|
-
),
|
|
4364
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "/hr" })
|
|
4365
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
|
|
4366
|
-
"\u20AC",
|
|
4367
|
-
metrics.hourly_rate_euros,
|
|
4368
|
-
" ",
|
|
4369
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-normal text-muted-foreground", children: "/hr" })
|
|
4370
|
-
] }),
|
|
4371
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "Employee hourly cost" })
|
|
4372
|
-
] })
|
|
4373
|
-
] }),
|
|
4374
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
4375
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 rounded-sm bg-[var(--cyan)]/10 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", fill: "currentColor", viewBox: "0 0 256 256", className: "text-[var(--cyan)]", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z" }) }) }),
|
|
4376
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
4377
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground block mb-1", children: "Job Portion" }),
|
|
4378
|
-
isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4379
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4380
|
-
"input",
|
|
4381
|
-
{
|
|
4382
|
-
type: "number",
|
|
4383
|
-
value: Math.round(metrics.fte_equivalent * 100),
|
|
4384
|
-
onChange: (e) => setMetrics((prev) => ({
|
|
4385
|
-
...prev,
|
|
4386
|
-
fte_equivalent: (parseFloat(e.target.value) || 0) / 100
|
|
4387
|
-
})),
|
|
4388
|
-
className: "w-16 px-2 py-1 text-lg font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background",
|
|
4389
|
-
min: "0",
|
|
4390
|
-
max: "1000",
|
|
4391
|
-
step: "5"
|
|
4392
|
-
}
|
|
4393
|
-
),
|
|
4394
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "%" })
|
|
4395
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
|
|
4396
|
-
Math.round(metrics.fte_equivalent * 100),
|
|
4397
|
-
" ",
|
|
4398
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-normal text-muted-foreground", children: "%" })
|
|
4399
|
-
] }),
|
|
4400
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
4401
|
-
"% of FTE (",
|
|
4402
|
-
hoursSavedPerYear,
|
|
4403
|
-
"h/year)"
|
|
4404
|
-
] })
|
|
4405
|
-
] })
|
|
4406
|
-
] }),
|
|
4407
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
4408
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 rounded-sm bg-[var(--cyan)]/10 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", fill: "currentColor", viewBox: "0 0 256 256", className: "text-[var(--cyan)]", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M240,56v64a8,8,0,0,1-16,0V75.31l-82.34,82.35a8,8,0,0,1-11.32,0L96,123.31,29.66,189.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0L136,140.69,212.69,64H168a8,8,0,0,1,0-16h64A8,8,0,0,1,240,56Z" }) }) }),
|
|
4409
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
4410
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground block mb-1", children: "Net Annual Savings" }),
|
|
4411
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-2xl font-bold", netAnnualSavings >= 0 ? "text-[var(--cyan)]" : "text-red-500"), children: [
|
|
4412
|
-
"\u20AC",
|
|
4413
|
-
netAnnualSavings.toLocaleString(void 0, { maximumFractionDigits: 0 })
|
|
4414
|
-
] }),
|
|
4415
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
4416
|
-
"\u20AC",
|
|
4417
|
-
laborSavingsPerYear.toLocaleString(void 0, { maximumFractionDigits: 0 }),
|
|
4418
|
-
" labor \u2212 \u20AC",
|
|
4419
|
-
workerCostPerYear,
|
|
4420
|
-
" worker"
|
|
4421
|
-
] })
|
|
4422
|
-
] })
|
|
4311
|
+
] }),
|
|
4312
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-6", children: [
|
|
4313
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4314
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground uppercase tracking-wide mb-1", children: "Time per Task" }),
|
|
4315
|
+
isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-baseline gap-1", children: [
|
|
4316
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4317
|
+
"input",
|
|
4318
|
+
{
|
|
4319
|
+
type: "number",
|
|
4320
|
+
value: metrics.time_saved_minutes_per_run,
|
|
4321
|
+
onChange: (e) => setMetrics((prev) => ({
|
|
4322
|
+
...prev,
|
|
4323
|
+
time_saved_minutes_per_run: parseInt(e.target.value) || 0
|
|
4324
|
+
})),
|
|
4325
|
+
className: "w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background",
|
|
4326
|
+
min: "0"
|
|
4327
|
+
}
|
|
4328
|
+
),
|
|
4329
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "min" })
|
|
4330
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
|
|
4331
|
+
metrics.time_saved_minutes_per_run,
|
|
4332
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-normal text-muted-foreground ml-1", children: "min" })
|
|
4423
4333
|
] })
|
|
4424
4334
|
] }),
|
|
4425
|
-
|
|
4426
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
4427
|
-
" ",
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4335
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4336
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground uppercase tracking-wide mb-1", children: "Manual Cost" }),
|
|
4337
|
+
isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-baseline gap-1", children: [
|
|
4338
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "\u20AC" }),
|
|
4339
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4340
|
+
"input",
|
|
4341
|
+
{
|
|
4342
|
+
type: "number",
|
|
4343
|
+
value: metrics.hourly_rate_euros,
|
|
4344
|
+
onChange: (e) => setMetrics((prev) => ({
|
|
4345
|
+
...prev,
|
|
4346
|
+
hourly_rate_euros: parseFloat(e.target.value) || 0
|
|
4347
|
+
})),
|
|
4348
|
+
className: "w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background",
|
|
4349
|
+
min: "0",
|
|
4350
|
+
step: "0.5"
|
|
4351
|
+
}
|
|
4352
|
+
),
|
|
4353
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "/hr" })
|
|
4354
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
|
|
4355
|
+
"\u20AC",
|
|
4356
|
+
metrics.hourly_rate_euros,
|
|
4357
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-normal text-muted-foreground ml-1", children: "/hr" })
|
|
4358
|
+
] })
|
|
4359
|
+
] }),
|
|
4360
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4361
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground uppercase tracking-wide mb-1", children: "Job Portion" }),
|
|
4362
|
+
isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-baseline gap-1", children: [
|
|
4363
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4364
|
+
"input",
|
|
4365
|
+
{
|
|
4366
|
+
type: "number",
|
|
4367
|
+
value: Math.round(metrics.fte_equivalent * 100),
|
|
4368
|
+
onChange: (e) => setMetrics((prev) => ({
|
|
4369
|
+
...prev,
|
|
4370
|
+
fte_equivalent: (parseFloat(e.target.value) || 0) / 100
|
|
4371
|
+
})),
|
|
4372
|
+
className: "w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background",
|
|
4373
|
+
min: "0",
|
|
4374
|
+
max: "1000",
|
|
4375
|
+
step: "5"
|
|
4376
|
+
}
|
|
4377
|
+
),
|
|
4378
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "%" })
|
|
4379
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
|
|
4437
4380
|
Math.round(metrics.fte_equivalent * 100),
|
|
4438
|
-
"%
|
|
4381
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-normal text-muted-foreground ml-1", children: "%" })
|
|
4382
|
+
] }),
|
|
4383
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mt-0.5", children: [
|
|
4384
|
+
hoursSavedPerYear,
|
|
4385
|
+
"h/year"
|
|
4386
|
+
] })
|
|
4387
|
+
] }),
|
|
4388
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4389
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground uppercase tracking-wide mb-1", children: "Net Annual Savings" }),
|
|
4390
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-2xl font-bold", netAnnualSavings >= 0 ? "text-[var(--cyan)]" : "text-red-500"), children: [
|
|
4391
|
+
"\u20AC",
|
|
4392
|
+
netAnnualSavings.toLocaleString(void 0, { maximumFractionDigits: 0 })
|
|
4393
|
+
] }),
|
|
4394
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mt-0.5", children: [
|
|
4395
|
+
"\u20AC",
|
|
4396
|
+
laborSavingsPerYear.toLocaleString(void 0, { maximumFractionDigits: 0 }),
|
|
4397
|
+
" \u2212 \u20AC",
|
|
4398
|
+
workerCostPerYear
|
|
4439
4399
|
] })
|
|
4440
|
-
] })
|
|
4400
|
+
] })
|
|
4401
|
+
] }),
|
|
4402
|
+
impliedFrequencyPerYear > 0 && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mt-4 pt-3 border-t border-border/50", children: [
|
|
4403
|
+
"Implied: ~",
|
|
4404
|
+
impliedFrequencyPerMonth,
|
|
4405
|
+
"\xD7/month (",
|
|
4406
|
+
impliedFrequencyPerYear,
|
|
4407
|
+
"\xD7/year)"
|
|
4441
4408
|
] })
|
|
4442
|
-
] });
|
|
4409
|
+
] }) });
|
|
4443
4410
|
}
|
|
4444
4411
|
|
|
4445
4412
|
// src/index.ts
|