@dilipod/ui 0.4.3 → 0.4.4

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.
@@ -0,0 +1,26 @@
1
+ export interface ImpactMetrics {
2
+ time_saved_minutes_per_run: number;
3
+ hourly_rate_euros: number;
4
+ fte_equivalent: number;
5
+ estimated_annual_savings_euros: number;
6
+ }
7
+ export interface ImpactMetricsFormProps {
8
+ /** The worker/agent ID */
9
+ workerId: string;
10
+ /** Initial metrics values */
11
+ initialMetrics: ImpactMetrics;
12
+ /** Total executions for this worker */
13
+ totalExecutions?: number;
14
+ /** Customer's pricing plan */
15
+ customerPlan?: string;
16
+ /** API endpoint to save metrics (e.g., "/api/workers" or "/api/agents") */
17
+ apiBasePath?: string;
18
+ /** Optional custom save handler - if provided, will be called instead of default API */
19
+ onSave?: (workerId: string, metrics: ImpactMetrics) => Promise<boolean>;
20
+ /** Whether to show toast notifications */
21
+ showToasts?: boolean;
22
+ /** Custom class name */
23
+ className?: string;
24
+ }
25
+ export declare function ImpactMetricsForm({ workerId, initialMetrics, totalExecutions, customerPlan, apiBasePath, onSave, showToasts, className, }: ImpactMetricsFormProps): import("react/jsx-runtime").JSX.Element;
26
+ //# sourceMappingURL=impact-metrics-form.d.ts.map
@@ -0,0 +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,2CAiQxB"}
package/dist/index.d.ts CHANGED
@@ -84,6 +84,8 @@ export { SettingsNav, SettingsNavLink } from './components/settings-nav';
84
84
  export type { SettingsNavItem, SettingsNavGroup, SettingsNavProps, SettingsNavLinkProps } from './components/settings-nav';
85
85
  export { ScenariosManager } from './components/scenarios-manager';
86
86
  export type { Scenario, ScenarioType, ScenarioSuggestion, ScenariosManagerProps } from './components/scenarios-manager';
87
+ export { ImpactMetricsForm } from './components/impact-metrics-form';
88
+ export type { ImpactMetrics, ImpactMetricsFormProps } from './components/impact-metrics-form';
87
89
  export { cn } from './lib/utils';
88
90
  export * from './icons';
89
91
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -141,6 +141,7 @@ __export(index_exports, {
141
141
  FilePreview: () => FilePreview,
142
142
  FormField: () => FormField,
143
143
  IconBox: () => IconBox,
144
+ ImpactMetricsForm: () => ImpactMetricsForm,
144
145
  Input: () => Input,
145
146
  Label: () => Label2,
146
147
  LabeledSwitch: () => LabeledSwitch,
@@ -4192,6 +4193,233 @@ function ScenariosManager({
4192
4193
  )
4193
4194
  ] });
4194
4195
  }
4196
+ var HOURS_PER_FTE_YEAR = 1880;
4197
+ var TIER_PRICING = {
4198
+ starter: 29,
4199
+ growth: 25,
4200
+ scale: 21,
4201
+ enterprise: 21
4202
+ };
4203
+ function ImpactMetricsForm({
4204
+ workerId,
4205
+ initialMetrics,
4206
+ totalExecutions = 0,
4207
+ customerPlan = "starter",
4208
+ apiBasePath = "/api/workers",
4209
+ onSave,
4210
+ showToasts = true,
4211
+ className
4212
+ }) {
4213
+ const [metrics, setMetrics] = React50.useState(initialMetrics);
4214
+ const [savedMetrics, setSavedMetrics] = React50.useState(initialMetrics);
4215
+ const [isSaving, setIsSaving] = React50.useState(false);
4216
+ const isInitiallySaved = initialMetrics.time_saved_minutes_per_run !== 30 || initialMetrics.hourly_rate_euros !== 20 || initialMetrics.fte_equivalent !== 0.1;
4217
+ const [isEditing, setIsEditing] = React50.useState(!isInitiallySaved);
4218
+ const workerCostPerMonth = TIER_PRICING[customerPlan] || TIER_PRICING.starter;
4219
+ const workerCostPerYear = workerCostPerMonth * 12;
4220
+ const calculateAnnualSavings = (fteEquivalent, hourlyRate) => {
4221
+ const laborSavings = fteEquivalent * HOURS_PER_FTE_YEAR * hourlyRate;
4222
+ return laborSavings - workerCostPerYear;
4223
+ };
4224
+ const handleSave = async () => {
4225
+ setIsSaving(true);
4226
+ try {
4227
+ const annualSavings = calculateAnnualSavings(
4228
+ metrics.fte_equivalent,
4229
+ metrics.hourly_rate_euros
4230
+ );
4231
+ const updatedMetrics = { ...metrics, estimated_annual_savings_euros: annualSavings };
4232
+ let success = false;
4233
+ if (onSave) {
4234
+ success = await onSave(workerId, updatedMetrics);
4235
+ } else {
4236
+ const response = await fetch(`${apiBasePath}/${workerId}/impact-metrics`, {
4237
+ method: "PATCH",
4238
+ headers: { "Content-Type": "application/json" },
4239
+ body: JSON.stringify(updatedMetrics)
4240
+ });
4241
+ success = response.ok;
4242
+ }
4243
+ if (success) {
4244
+ setMetrics(updatedMetrics);
4245
+ setSavedMetrics(updatedMetrics);
4246
+ setIsEditing(false);
4247
+ if (showToasts) {
4248
+ toast({
4249
+ title: "Metrics saved",
4250
+ description: "Impact metrics have been updated.",
4251
+ variant: "success"
4252
+ });
4253
+ }
4254
+ } else {
4255
+ throw new Error("Failed to save");
4256
+ }
4257
+ } catch (error) {
4258
+ console.error("Failed to save metrics:", error);
4259
+ if (showToasts) {
4260
+ toast({
4261
+ title: "Failed to save",
4262
+ description: "Could not save metrics. Please try again.",
4263
+ variant: "error"
4264
+ });
4265
+ }
4266
+ } finally {
4267
+ setIsSaving(false);
4268
+ }
4269
+ };
4270
+ const handleCancel = () => {
4271
+ setMetrics(savedMetrics);
4272
+ setIsEditing(false);
4273
+ };
4274
+ const hoursSavedPerYear = Math.round(metrics.fte_equivalent * HOURS_PER_FTE_YEAR);
4275
+ const laborSavingsPerYear = metrics.fte_equivalent * HOURS_PER_FTE_YEAR * metrics.hourly_rate_euros;
4276
+ const netAnnualSavings = laborSavingsPerYear - workerCostPerYear;
4277
+ return /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: cn("border-[var(--cyan)]/20 bg-gradient-to-br from-white to-[var(--cyan)]/5", className), children: [
4278
+ /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
4279
+ /* @__PURE__ */ jsxRuntime.jsxs(CardTitle, { className: "flex items-center gap-2", children: [
4280
+ /* @__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: "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,216Zm16-88a16,16,0,1,1-16-16A16,16,0,0,1,144,128Zm-56,0a16,16,0,1,1-16-16A16,16,0,0,1,88,128Zm112,0a16,16,0,1,1-16-16A16,16,0,0,1,200,128Z" }) }) }),
4281
+ "Impact Metrics (ROI)"
4282
+ ] }),
4283
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: isEditing ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4284
+ isInitiallySaved && /* @__PURE__ */ jsxRuntime.jsx(
4285
+ Button,
4286
+ {
4287
+ onClick: handleCancel,
4288
+ size: "sm",
4289
+ variant: "ghost",
4290
+ children: "Cancel"
4291
+ }
4292
+ ),
4293
+ /* @__PURE__ */ jsxRuntime.jsx(
4294
+ Button,
4295
+ {
4296
+ onClick: handleSave,
4297
+ disabled: isSaving,
4298
+ size: "sm",
4299
+ children: isSaving ? "Saving..." : "Save"
4300
+ }
4301
+ )
4302
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
4303
+ Button,
4304
+ {
4305
+ onClick: () => setIsEditing(true),
4306
+ size: "sm",
4307
+ variant: "outline",
4308
+ children: "Edit"
4309
+ }
4310
+ ) })
4311
+ ] }) }),
4312
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-6 md:grid-cols-2 lg:grid-cols-4", children: [
4313
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
4314
+ /* @__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" }) }) }),
4315
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
4316
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground block mb-1", children: "Time per Task" }),
4317
+ isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
4318
+ /* @__PURE__ */ jsxRuntime.jsx(
4319
+ "input",
4320
+ {
4321
+ type: "number",
4322
+ value: metrics.time_saved_minutes_per_run,
4323
+ onChange: (e) => setMetrics((prev) => ({
4324
+ ...prev,
4325
+ time_saved_minutes_per_run: parseInt(e.target.value) || 0
4326
+ })),
4327
+ 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",
4328
+ min: "0"
4329
+ }
4330
+ ),
4331
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "min" })
4332
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
4333
+ metrics.time_saved_minutes_per_run,
4334
+ " ",
4335
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-normal text-muted-foreground", children: "min" })
4336
+ ] }),
4337
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "How long manually" })
4338
+ ] })
4339
+ ] }),
4340
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
4341
+ /* @__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" }) }) }),
4342
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
4343
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground block mb-1", children: "Manual Cost" }),
4344
+ isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
4345
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u20AC" }),
4346
+ /* @__PURE__ */ jsxRuntime.jsx(
4347
+ "input",
4348
+ {
4349
+ type: "number",
4350
+ value: metrics.hourly_rate_euros,
4351
+ onChange: (e) => setMetrics((prev) => ({
4352
+ ...prev,
4353
+ hourly_rate_euros: parseFloat(e.target.value) || 0
4354
+ })),
4355
+ 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",
4356
+ min: "0",
4357
+ step: "0.5"
4358
+ }
4359
+ ),
4360
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "/hr" })
4361
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
4362
+ "\u20AC",
4363
+ metrics.hourly_rate_euros,
4364
+ " ",
4365
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-normal text-muted-foreground", children: "/hr" })
4366
+ ] }),
4367
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "Employee hourly cost" })
4368
+ ] })
4369
+ ] }),
4370
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
4371
+ /* @__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" }) }) }),
4372
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
4373
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground block mb-1", children: "Job Portion" }),
4374
+ isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
4375
+ /* @__PURE__ */ jsxRuntime.jsx(
4376
+ "input",
4377
+ {
4378
+ type: "number",
4379
+ value: Math.round(metrics.fte_equivalent * 100),
4380
+ onChange: (e) => setMetrics((prev) => ({
4381
+ ...prev,
4382
+ fte_equivalent: (parseFloat(e.target.value) || 0) / 100
4383
+ })),
4384
+ 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",
4385
+ min: "0",
4386
+ max: "1000",
4387
+ step: "5"
4388
+ }
4389
+ ),
4390
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "%" })
4391
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-2xl font-bold", children: [
4392
+ Math.round(metrics.fte_equivalent * 100),
4393
+ " ",
4394
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-normal text-muted-foreground", children: "%" })
4395
+ ] }),
4396
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
4397
+ "% of FTE (",
4398
+ hoursSavedPerYear,
4399
+ "h/year)"
4400
+ ] })
4401
+ ] })
4402
+ ] }),
4403
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
4404
+ /* @__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" }) }) }),
4405
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
4406
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground block mb-1", children: "Net Annual Savings" }),
4407
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-2xl font-bold", netAnnualSavings >= 0 ? "text-[var(--cyan)]" : "text-red-500"), children: [
4408
+ "\u20AC",
4409
+ netAnnualSavings.toLocaleString(void 0, { maximumFractionDigits: 0 })
4410
+ ] }),
4411
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
4412
+ "\u20AC",
4413
+ laborSavingsPerYear.toLocaleString(void 0, { maximumFractionDigits: 0 }),
4414
+ " labor \u2212 \u20AC",
4415
+ workerCostPerYear,
4416
+ " worker"
4417
+ ] })
4418
+ ] })
4419
+ ] })
4420
+ ] }) })
4421
+ ] });
4422
+ }
4195
4423
 
4196
4424
  // src/index.ts
4197
4425
  __reExport(index_exports, icons_exports);
@@ -4261,6 +4489,7 @@ exports.ErrorState = ErrorState;
4261
4489
  exports.FilePreview = FilePreview;
4262
4490
  exports.FormField = FormField;
4263
4491
  exports.IconBox = IconBox;
4492
+ exports.ImpactMetricsForm = ImpactMetricsForm;
4264
4493
  exports.Input = Input;
4265
4494
  exports.Label = Label2;
4266
4495
  exports.LabeledSwitch = LabeledSwitch;