@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.
@@ -1 +1 @@
1
- {"version":3,"file":"impact-metrics-form.d.ts","sourceRoot":"","sources":["../../src/components/impact-metrics-form.tsx"],"names":[],"mappings":"AAqBA,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,2CAuRxB"}
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.jsxs(Card, { className: cn("border-[var(--cyan)]/20 bg-gradient-to-br from-white to-[var(--cyan)]/5", className), children: [
4281
- /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
4282
- /* @__PURE__ */ jsxRuntime.jsxs(CardTitle, { className: "flex items-center gap-2", children: [
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(CardContent, { children: [
4316
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-6 md:grid-cols-2 lg:grid-cols-4", children: [
4317
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
4318
- /* @__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,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm0,176a80,80,0,1,1,80-80A80.09,80.09,0,0,1,128,216ZM173.66,90.34a8,8,0,0,1,0,11.32l-40,40a8,8,0,0,1-11.32-11.32l40-40A8,8,0,0,1,173.66,90.34ZM96,16a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,16Z" }) }) }),
4319
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
4320
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground block mb-1", children: "Time per Task" }),
4321
- isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
4322
- /* @__PURE__ */ jsxRuntime.jsx(
4323
- "input",
4324
- {
4325
- type: "number",
4326
- value: metrics.time_saved_minutes_per_run,
4327
- onChange: (e) => setMetrics((prev) => ({
4328
- ...prev,
4329
- time_saved_minutes_per_run: parseInt(e.target.value) || 0
4330
- })),
4331
- 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",
4332
- min: "0"
4333
- }
4334
- ),
4335
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "min" })
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
- impliedFrequencyPerYear > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 pt-4 border-t border-border/50", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", children: [
4426
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: "Implied frequency:" }),
4427
- " ",
4428
- "~",
4429
- impliedFrequencyPerMonth,
4430
- "/month (",
4431
- impliedFrequencyPerYear,
4432
- "/year)",
4433
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs ml-2", children: [
4434
- "based on ",
4435
- metrics.time_saved_minutes_per_run,
4436
- " min/task \xD7 ",
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
- "% FTE"
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