@remoteoss/remote-flows 0.0.0

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.
Files changed (87) hide show
  1. package/README.md +93 -0
  2. package/dist/chunk-2AGPO366.js +2 -0
  3. package/dist/chunk-2AGPO366.js.map +1 -0
  4. package/dist/chunk-7EZH5DCX.js +20 -0
  5. package/dist/chunk-7EZH5DCX.js.map +1 -0
  6. package/dist/chunk-7ZBXCVHC.js +2 -0
  7. package/dist/chunk-7ZBXCVHC.js.map +1 -0
  8. package/dist/chunk-ATKR5HCM.js +2 -0
  9. package/dist/chunk-ATKR5HCM.js.map +1 -0
  10. package/dist/chunk-AYDF3IFZ.js +2 -0
  11. package/dist/chunk-AYDF3IFZ.js.map +1 -0
  12. package/dist/chunk-BIWKEH5R.js +2 -0
  13. package/dist/chunk-BIWKEH5R.js.map +1 -0
  14. package/dist/chunk-BRK6MUQS.js +2 -0
  15. package/dist/chunk-BRK6MUQS.js.map +1 -0
  16. package/dist/chunk-DE6ICD4X.js +2 -0
  17. package/dist/chunk-DE6ICD4X.js.map +1 -0
  18. package/dist/chunk-FX6BYIQS.js +1 -0
  19. package/dist/chunk-FX6BYIQS.js.map +1 -0
  20. package/dist/chunk-HMDVBCX2.js +1 -0
  21. package/dist/chunk-HMDVBCX2.js.map +1 -0
  22. package/dist/chunk-J2GLSJLO.js +2 -0
  23. package/dist/chunk-J2GLSJLO.js.map +1 -0
  24. package/dist/chunk-JEULWBZA.js +2 -0
  25. package/dist/chunk-JEULWBZA.js.map +1 -0
  26. package/dist/chunk-Q2ZB5MOF.js +2 -0
  27. package/dist/chunk-Q2ZB5MOF.js.map +1 -0
  28. package/dist/chunk-V7QTPQZS.js +2 -0
  29. package/dist/chunk-V7QTPQZS.js.map +1 -0
  30. package/dist/chunk-XSTVWDTD.js +2 -0
  31. package/dist/chunk-XSTVWDTD.js.map +1 -0
  32. package/dist/chunk-Z5SEXEAZ.js +2 -0
  33. package/dist/chunk-Z5SEXEAZ.js.map +1 -0
  34. package/dist/chunk-ZII4VJ3N.js +2 -0
  35. package/dist/chunk-ZII4VJ3N.js.map +1 -0
  36. package/dist/flows/CostCalculator/CostCalculator.d.ts +60 -0
  37. package/dist/flows/CostCalculator/CostCalculator.js +2 -0
  38. package/dist/flows/CostCalculator/CostCalculator.js.map +1 -0
  39. package/dist/flows/CostCalculator/Disclaimer/Disclaimer.d.ts +8 -0
  40. package/dist/flows/CostCalculator/Disclaimer/Disclaimer.js +2 -0
  41. package/dist/flows/CostCalculator/Disclaimer/Disclaimer.js.map +1 -0
  42. package/dist/flows/CostCalculator/Disclaimer/index.d.ts +2 -0
  43. package/dist/flows/CostCalculator/Disclaimer/index.js +2 -0
  44. package/dist/flows/CostCalculator/Disclaimer/index.js.map +1 -0
  45. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.d.ts +14 -0
  46. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.js +2 -0
  47. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.js.map +1 -0
  48. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.d.ts +15 -0
  49. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.js +2 -0
  50. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.js.map +1 -0
  51. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.d.ts +9 -0
  52. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.js +2 -0
  53. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.js.map +1 -0
  54. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +19 -0
  55. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js +2 -0
  56. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js.map +1 -0
  57. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.d.ts +13 -0
  58. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.js +2 -0
  59. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.js.map +1 -0
  60. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.d.ts +9 -0
  61. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.js +2 -0
  62. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.js.map +1 -0
  63. package/dist/flows/CostCalculator/fields.d.ts +6 -0
  64. package/dist/flows/CostCalculator/fields.js +2 -0
  65. package/dist/flows/CostCalculator/fields.js.map +1 -0
  66. package/dist/flows/CostCalculator/hooks.d.ts +66 -0
  67. package/dist/flows/CostCalculator/hooks.js +2 -0
  68. package/dist/flows/CostCalculator/hooks.js.map +1 -0
  69. package/dist/flows/CostCalculator/index.d.ts +11 -0
  70. package/dist/flows/CostCalculator/index.js +2 -0
  71. package/dist/flows/CostCalculator/index.js.map +1 -0
  72. package/dist/flows/CostCalculator/types.d.ts +50 -0
  73. package/dist/flows/CostCalculator/types.js +1 -0
  74. package/dist/flows/CostCalculator/types.js.map +1 -0
  75. package/dist/flows/CostCalculator/utils.d.ts +18 -0
  76. package/dist/flows/CostCalculator/utils.js +2 -0
  77. package/dist/flows/CostCalculator/utils.js.map +1 -0
  78. package/dist/flows/types.d.ts +11 -0
  79. package/dist/flows/types.js +1 -0
  80. package/dist/flows/types.js.map +1 -0
  81. package/dist/index.css +3 -0
  82. package/dist/index.css.map +1 -0
  83. package/dist/index.d.ts +61 -0
  84. package/dist/index.js +2 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/types.gen-_BwuB2Vq.d.ts +10242 -0
  87. package/package.json +103 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/Results/CostCalculatorTotalCost.tsx"],"sourcesContent":["import React from 'react';\n\nimport { formatCurrency } from '@/src/lib/utils';\n\ntype CostCalculatorTotalCostProps = {\n totalCost: number;\n currency: string;\n};\n\nexport function CostCalculatorTotalCost({\n totalCost,\n currency,\n}: CostCalculatorTotalCostProps) {\n return (\n <div className=\"pt-2 mt-4 border-t-2 border-gray-200\">\n <div className=\"flex justify-between items-center\">\n <h3 className=\"font-bold text-primary-foreground-800\">Total Cost</h3>\n <span className=\"font-bold text-xl\">\n {formatCurrency(totalCost, currency)}\n </span>\n </div>\n </div>\n );\n}\n"],"mappings":"gFAAA,OAAOA,MAAW,QASX,SAASC,EAAwB,CACtC,UAAAC,EACA,SAAAC,CACF,EAAiC,CAC/B,OACEC,EAAA,cAAC,OAAI,UAAU,wCACbA,EAAA,cAAC,OAAI,UAAU,qCACbA,EAAA,cAAC,MAAG,UAAU,yCAAwC,YAAU,EAChEA,EAAA,cAAC,QAAK,UAAU,qBACbC,EAAeH,EAAWC,CAAQ,CACrC,CACF,CACF,CAEJ,CAdgBG,EAAAL,EAAA","names":["React","CostCalculatorTotalCost","totalCost","currency","React","formatCurrency","__name"]}
@@ -0,0 +1,2 @@
1
+ import{a as x}from"./chunk-ZII4VJ3N.js";import{a as T}from"./chunk-XSTVWDTD.js";import{a as P}from"./chunk-Q2ZB5MOF.js";import{a as y,b as v,c as h,d as _,e as w}from"./chunk-JEULWBZA.js";import{a as k}from"./chunk-BIWKEH5R.js";import{a as n}from"./chunk-ATKR5HCM.js";import{a as s}from"./chunk-AYDF3IFZ.js";import{Euro as H}from"lucide-react";import t,{lazy as G,useState as A}from"react";import*as N from"react";import{Slot as z}from"@radix-ui/react-slot";import{cva as F}from"class-variance-authority";var E=F("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-badge text-badge-foreground rounded-full [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground rounded-full [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white rounded-full [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",outline:"text-foreground rounded-full [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function B({className:a,variant:o,asChild:r=!1,...u}){return N.createElement(r?z:"span",{"data-slot":"badge",className:n(E({variant:o}),a),...u})}s(B,"Badge");import*as m from"react";import*as i from"@radix-ui/react-tabs";function S({className:a,...o}){return m.createElement(i.Root,{"data-slot":"tabs",className:n("flex flex-col gap-2",a),...o})}s(S,"Tabs");function V({className:a,...o}){return m.createElement(i.List,{"data-slot":"tabs-list",className:n("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-1",a),...o})}s(V,"TabsList");function b({className:a,...o}){return m.createElement(i.Trigger,{"data-slot":"tabs-trigger",className:n("data-[state=active]:bg-background data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",a),...o})}s(b,"TabsTrigger");var M=G(()=>import("./flows/CostCalculator/Results/CostCalculatorResultsChart.js"));function st({employmentData:a,options:o}){let[r,u]=A("monthly"),l=a.employments?.[0];if(!l)return null;let e=l.employer_currency_costs,c=e.currency.symbol,f=r==="monthly"?e.monthly_gross_salary:e.annual_gross_salary,p=r==="monthly"?e.monthly_benefits_total:e.annual_benefits_total,g=r==="monthly"?e.monthly_contributions_total:e.annual_contributions_total,D=r==="monthly"?e.monthly_total:e.annual_total,d=r==="monthly"?e.monthly_benefits_breakdown:e.annual_benefits_breakdown,L=r==="monthly"?e.monthly_contributions_breakdown:e.annual_contributions_breakdown,C=[{name:"Gross Salary",value:f,color:o?.chartColors?.grossSalary??"#3b82f6"},{name:"Contributions",value:g,color:o?.chartColors?.contributions??"#f59e0b"}];return d&&C.push({name:"Benefits",value:p??0,color:o?.chartColors?.benefits??"#10b981"}),t.createElement(t.Fragment,null,t.createElement("div",{className:"flex flex-col md:flex-row gap-4 md:items-center justify-between mb-6 RemoteFlows__CostCalculatorResults"},t.createElement("div",{className:"RemoteFlows__CostCalculatorResults__Header"},t.createElement("h2",{className:"text-xl font-semibold flex items-center gap-2"},t.createElement("span",{className:"flex items-center gap-1"},t.createElement(H,{className:"h-5 w-5 text-gray-600"}),o?.title??"Cost Calculator"),t.createElement(B,{className:"ml-2"},l.country.name)),t.createElement("p",{className:"text-primary-foreground font-medium mt-1"},o?.description??`Total cost of employment in ${l.country.name}`)),t.createElement(S,{value:r,onValueChange:j=>u(j),className:"w-full md:w-auto RemoteFlows__CostCalculatorResults__Tabs"},t.createElement(V,{className:"grid w-full md:w-[200px] grid-cols-2"},t.createElement(b,{value:"monthly"},"Monthly"),t.createElement(b,{value:"annual"},"Annual")))),t.createElement("div",{className:n("grid grid-cols-1 gap-6",o?.showChart?"md:grid-cols-3":"","RemoteFlows__CostCalculatorResults_CostBreakdown")},t.createElement(y,{className:"md:col-span-2 rounded-lg"},t.createElement(v,{className:"pb-2"},t.createElement(h,null,"Cost Breakdown"),t.createElement(_,null,"Detailed breakdown of all employer costs")),t.createElement(w,null,t.createElement("div",{className:"space-y-6"},t.createElement(P,{grossSalary:f,currency:c}),d?t.createElement(x,{benefitsBreakdown:d,benefitsTotal:p,currency:c}):null,t.createElement(T,{contributionsBreakdown:L,contributionsTotal:g,currency:c}),t.createElement(k,{totalCost:D,currency:c})))),o?.showChart&&t.createElement(M,{chartData:C,currency:c})))}s(st,"CostCalculatorResults");export{st as a};
2
+ //# sourceMappingURL=chunk-BRK6MUQS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/Results/CostCalculatorResults.tsx","../src/components/ui/badge.tsx","../src/components/ui/tabs.tsx"],"sourcesContent":["import { Euro } from 'lucide-react';\nimport React, { lazy, useState } from 'react';\n\nimport { CostCalculatorEstimateResponse } from '@/src/client';\nimport { Badge } from '@/src/components/ui/badge';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@/src/components/ui/card';\nimport { Tabs, TabsList, TabsTrigger } from '@/src/components/ui/tabs';\nimport { cn } from '@/src/lib/utils';\nimport { CostCalculatorBenefitsBreakdown } from './CostCalculatorBenefitsBreakdown';\nimport { CostCalculatorContributionsBreakdown } from './CostCalculatorContributionsBreakdown';\nimport { CostCalculatorGrossSalary } from './CostCalculatorGrossSalary';\nimport { CostCalculatorTotalCost } from './CostCalculatorTotalCost';\n\nconst CostCalculatorResultsChart = lazy(\n () => import('./CostCalculatorResultsChart'),\n);\n\ninterface CostCalculatorResultProps {\n employmentData: CostCalculatorEstimateResponse['data'];\n options?: Partial<{\n title: string;\n description: string;\n showChart: boolean;\n chartColors: {\n grossSalary: string;\n contributions: string;\n benefits: string;\n };\n }>;\n}\n\nexport function CostCalculatorResults({\n employmentData,\n options,\n}: CostCalculatorResultProps) {\n const [view, setView] = useState<'monthly' | 'annual'>('monthly');\n const employment = employmentData.employments?.[0];\n\n if (!employment) {\n return null;\n }\n\n const costs =\n view === 'monthly'\n ? employment.employer_currency_costs\n : employment.employer_currency_costs;\n\n const currency = costs.currency.symbol;\n const grossSalary =\n view === 'monthly' ? costs.monthly_gross_salary : costs.annual_gross_salary;\n const benefitsTotal =\n view === 'monthly'\n ? costs.monthly_benefits_total\n : costs.annual_benefits_total;\n const contributionsTotal =\n view === 'monthly'\n ? costs.monthly_contributions_total\n : costs.annual_contributions_total;\n const totalCost =\n view === 'monthly' ? costs.monthly_total : costs.annual_total;\n\n const benefitsBreakdown =\n view === 'monthly'\n ? costs.monthly_benefits_breakdown\n : costs.annual_benefits_breakdown;\n const contributionsBreakdown =\n view === 'monthly'\n ? costs.monthly_contributions_breakdown\n : costs.annual_contributions_breakdown;\n\n const chartData = [\n {\n name: 'Gross Salary',\n value: grossSalary,\n color: options?.chartColors?.grossSalary ?? '#3b82f6',\n },\n {\n name: 'Contributions',\n value: contributionsTotal,\n color: options?.chartColors?.contributions ?? '#f59e0b',\n },\n ];\n\n if (benefitsBreakdown) {\n chartData.push({\n name: 'Benefits',\n value: benefitsTotal ?? 0,\n color: options?.chartColors?.benefits ?? '#10b981',\n });\n }\n\n return (\n <>\n <div className=\"flex flex-col md:flex-row gap-4 md:items-center justify-between mb-6 RemoteFlows__CostCalculatorResults\">\n <div className=\"RemoteFlows__CostCalculatorResults__Header\">\n <h2 className=\"text-xl font-semibold flex items-center gap-2\">\n <span className=\"flex items-center gap-1\">\n <Euro className=\"h-5 w-5 text-gray-600\" />\n {options?.title ?? 'Cost Calculator'}\n </span>\n <Badge className=\"ml-2\">{employment.country.name}</Badge>\n </h2>\n <p className=\"text-primary-foreground font-medium mt-1\">\n {options?.description ??\n `Total cost of employment in ${employment.country.name}`}\n </p>\n </div>\n\n <Tabs\n value={view}\n onValueChange={(v) => setView(v as 'monthly' | 'annual')}\n className=\"w-full md:w-auto RemoteFlows__CostCalculatorResults__Tabs\"\n >\n <TabsList className=\"grid w-full md:w-[200px] grid-cols-2\">\n <TabsTrigger value=\"monthly\">Monthly</TabsTrigger>\n <TabsTrigger value=\"annual\">Annual</TabsTrigger>\n </TabsList>\n </Tabs>\n </div>\n\n <div\n className={cn(\n 'grid grid-cols-1 gap-6',\n options?.showChart ? 'md:grid-cols-3' : '',\n 'RemoteFlows__CostCalculatorResults_CostBreakdown',\n )}\n >\n <Card className=\"md:col-span-2 rounded-lg\">\n <CardHeader className=\"pb-2\">\n <CardTitle>Cost Breakdown</CardTitle>\n <CardDescription>\n Detailed breakdown of all employer costs\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-6\">\n {/* Salary Section */}\n <CostCalculatorGrossSalary\n grossSalary={grossSalary}\n currency={currency}\n />\n {/* Benefits Section */}\n {benefitsBreakdown ? (\n <CostCalculatorBenefitsBreakdown\n benefitsBreakdown={benefitsBreakdown}\n benefitsTotal={benefitsTotal}\n currency={currency}\n />\n ) : null}\n {/* Contributions Section */}\n <CostCalculatorContributionsBreakdown\n contributionsBreakdown={contributionsBreakdown}\n contributionsTotal={contributionsTotal}\n currency={currency}\n />\n {/* Total */}\n <CostCalculatorTotalCost\n totalCost={totalCost}\n currency={currency}\n />\n </div>\n </CardContent>\n </Card>\n\n {options?.showChart && (\n <CostCalculatorResultsChart\n chartData={chartData}\n currency={currency}\n />\n )}\n </div>\n </>\n );\n}\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/src/lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-badge text-badge-foreground rounded-full [a&]:hover:bg-primary/90',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground rounded-full [a&]:hover:bg-secondary/90',\n destructive:\n 'border-transparent bg-destructive text-white rounded-full [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40',\n outline:\n 'text-foreground rounded-full [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'span';\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn('flex flex-col gap-2', className)}\n {...props}\n />\n );\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n 'bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-1',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn('flex-1 outline-none', className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"mappings":"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","names":["Euro","React","lazy","useState","React","Slot","cva","badgeVariants","cva","Badge","className","variant","asChild","props","Slot","cn","__name","React","TabsPrimitive","Tabs","className","props","cn","__name","TabsList","TabsTrigger","CostCalculatorResultsChart","lazy","CostCalculatorResults","employmentData","options","view","setView","useState","employment","costs","currency","grossSalary","benefitsTotal","contributionsTotal","totalCost","benefitsBreakdown","contributionsBreakdown","chartData","React","Euro","Badge","Tabs","v","TabsList","TabsTrigger","cn","Card","CardHeader","CardTitle","CardDescription","CardContent","CostCalculatorGrossSalary","CostCalculatorBenefitsBreakdown","CostCalculatorContributionsBreakdown","CostCalculatorTotalCost","__name"]}
@@ -0,0 +1,2 @@
1
+ import{a as o}from"./chunk-ATKR5HCM.js";import{a as t}from"./chunk-AYDF3IFZ.js";import*as r from"react";import*as a from"@radix-ui/react-separator";function m({className:i,orientation:e="horizontal",decorative:n=!0,...p}){return r.createElement(a.Root,{"data-slot":"separator-root",decorative:n,orientation:e,className:o("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",i),...p})}t(m,"Separator");export{m as a};
2
+ //# sourceMappingURL=chunk-DE6ICD4X.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/separator.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator-root\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"mappings":"gFAAA,UAAYA,MAAW,QACvB,UAAYC,MAAwB,4BAIpC,SAASC,EAAU,CACjB,UAAAC,EACA,YAAAC,EAAc,aACd,WAAAC,EAAa,GACb,GAAGC,CACL,EAAyD,CACvD,OACE,gBAAoB,OAAnB,CACC,YAAU,iBACV,WAAYD,EACZ,YAAaD,EACb,UAAWG,EACT,iKACAJ,CACF,EACC,GAAGG,EACN,CAEJ,CAlBSE,EAAAN,EAAA","names":["React","SeparatorPrimitive","Separator","className","orientation","decorative","props","cn","__name"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-FX6BYIQS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-HMDVBCX2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ import{a as e}from"./chunk-ATKR5HCM.js";import{a as t}from"./chunk-AYDF3IFZ.js";import*as o from"react";import{Slot as d}from"@radix-ui/react-slot";import{cva as u}from"class-variance-authority";var p=u("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none aria-invalid:ring-destructive/20 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90",outline:"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-link-button-primary underline-offset-4 hover:underline button-link"},size:{default:"h-9 px-4 py-7 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9",link:"px-0"}},defaultVariants:{variant:"default",size:"default"}});function h({className:r,variant:n,size:a,asChild:s=!1,...i}){return o.createElement(s?d:"button",{"data-slot":"button",className:e(p({variant:n,size:a,className:r}),"Button__Wrapper"),...i})}t(h,"Button");export{h as a};
2
+ //# sourceMappingURL=chunk-J2GLSJLO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/button.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/src/lib/utils';\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none aria-invalid:ring-destructive/20 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90',\n outline:\n 'border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-link-button-primary underline-offset-4 hover:underline button-link',\n },\n size: {\n default: 'h-9 px-4 py-7 has-[>svg]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',\n icon: 'size-9',\n link: 'px-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(\n buttonVariants({ variant, size, className }),\n 'Button__Wrapper',\n )}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n"],"mappings":"gFAAA,UAAYA,MAAW,QACvB,OAAS,QAAAC,MAAY,uBACrB,OAAS,OAAAC,MAA8B,2BAIvC,IAAMC,EAAiBC,EACrB,yVACA,CACE,SAAU,CACR,QAAS,CACP,QACE,mEACF,YACE,8DACF,QACE,2FACF,UACE,yEACF,MAAO,+CACP,KAAM,yEACR,EACA,KAAM,CACJ,QAAS,gCACT,GAAI,gDACJ,GAAI,uCACJ,KAAM,SACN,KAAM,MACR,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,SACR,CACF,CACF,EAEA,SAASC,EAAO,CACd,UAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACV,GAAGC,CACL,EAGK,CAGH,OACE,gBAHWD,EAAUE,EAAO,SAG3B,CACC,YAAU,SACV,UAAWC,EACTT,EAAe,CAAE,QAAAI,EAAS,KAAAC,EAAM,UAAAF,CAAU,CAAC,EAC3C,iBACF,EACC,GAAGI,EACN,CAEJ,CAtBSG,EAAAR,EAAA","names":["React","Slot","cva","buttonVariants","cva","Button","className","variant","size","asChild","props","Slot","cn","__name"]}
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-ATKR5HCM.js";import{a as o}from"./chunk-AYDF3IFZ.js";import*as r from"react";function d({className:t,...e}){return r.createElement("div",{"data-slot":"card",className:a("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...e})}o(d,"Card");function c({className:t,...e}){return r.createElement("div",{"data-slot":"card-header",className:a("flex flex-col gap-1.5 px-6",t),...e})}o(c,"CardHeader");function s({className:t,...e}){return r.createElement("div",{"data-slot":"card-title",className:a("leading-none font-semibold",t),...e})}o(s,"CardTitle");function i({className:t,...e}){return r.createElement("div",{"data-slot":"card-description",className:a("text-sm",t),...e})}o(i,"CardDescription");function l({className:t,...e}){return r.createElement("div",{"data-slot":"card-content",className:a("px-6",t),...e})}o(l,"CardContent");export{d as a,c as b,s as c,i as d,l as e};
2
+ //# sourceMappingURL=chunk-JEULWBZA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/card.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Card({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n 'bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn('flex flex-col gap-1.5 px-6', className)}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn('leading-none font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn('px-6', className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn('flex items-center px-6', className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n"],"mappings":"2EAAA,UAAYA,MAAW,QAIvB,SAASC,EAAK,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAgC,CAClE,OACE,gBAAC,OACC,YAAU,OACV,UAAWC,EACT,oFACAF,CACF,EACC,GAAGC,EACN,CAEJ,CAXSE,EAAAJ,EAAA,QAaT,SAASK,EAAW,CAAE,UAAAJ,EAAW,GAAGC,CAAM,EAAgC,CACxE,OACE,gBAAC,OACC,YAAU,cACV,UAAWC,EAAG,6BAA8BF,CAAS,EACpD,GAAGC,EACN,CAEJ,CARSE,EAAAC,EAAA,cAUT,SAASC,EAAU,CAAE,UAAAL,EAAW,GAAGC,CAAM,EAAgC,CACvE,OACE,gBAAC,OACC,YAAU,aACV,UAAWC,EAAG,6BAA8BF,CAAS,EACpD,GAAGC,EACN,CAEJ,CARSE,EAAAE,EAAA,aAUT,SAASC,EAAgB,CAAE,UAAAN,EAAW,GAAGC,CAAM,EAAgC,CAC7E,OACE,gBAAC,OACC,YAAU,mBACV,UAAWC,EAAG,UAAWF,CAAS,EACjC,GAAGC,EACN,CAEJ,CARSE,EAAAG,EAAA,mBAUT,SAASC,EAAY,CAAE,UAAAP,EAAW,GAAGC,CAAM,EAAgC,CACzE,OACE,gBAAC,OACC,YAAU,eACV,UAAWC,EAAG,OAAQF,CAAS,EAC9B,GAAGC,EACN,CAEJ,CARSE,EAAAI,EAAA","names":["React","Card","className","props","cn","__name","CardHeader","CardTitle","CardDescription","CardContent"]}
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-DE6ICD4X.js";import{b as s}from"./chunk-ATKR5HCM.js";import{a as o}from"./chunk-AYDF3IFZ.js";import r from"react";function n({grossSalary:t,currency:e}){return r.createElement("div",null,r.createElement("div",{className:"flex justify-between items-center mb-2"},r.createElement("h3",{className:"font-medium text-primary-foreground"},"Gross Salary"),r.createElement("span",{className:"font-semibold text-lg"},s(t,e))),r.createElement(a,null))}o(n,"CostCalculatorGrossSalary");export{n as a};
2
+ //# sourceMappingURL=chunk-Q2ZB5MOF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/Results/CostCalculatorGrossSalary.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Separator } from '@/src/components/ui/separator';\nimport { formatCurrency } from '@/src/lib/utils';\n\ntype CostCalculatorGrossSalaryProps = {\n grossSalary: number;\n currency: string;\n};\n\nexport function CostCalculatorGrossSalary({\n grossSalary,\n currency,\n}: CostCalculatorGrossSalaryProps) {\n return (\n <div>\n <div className=\"flex justify-between items-center mb-2\">\n <h3 className=\"font-medium text-primary-foreground\">Gross Salary</h3>\n <span className=\"font-semibold text-lg\">\n {formatCurrency(grossSalary, currency)}\n </span>\n </div>\n <Separator />\n </div>\n );\n}\n"],"mappings":"mHAAA,OAAOA,MAAW,QAUX,SAASC,EAA0B,CACxC,YAAAC,EACA,SAAAC,CACF,EAAmC,CACjC,OACEC,EAAA,cAAC,WACCA,EAAA,cAAC,OAAI,UAAU,0CACbA,EAAA,cAAC,MAAG,UAAU,uCAAsC,cAAY,EAChEA,EAAA,cAAC,QAAK,UAAU,yBACbC,EAAeH,EAAaC,CAAQ,CACvC,CACF,EACAC,EAAA,cAACE,EAAA,IAAU,CACb,CAEJ,CAfgBC,EAAAN,EAAA","names":["React","CostCalculatorGrossSalary","grossSalary","currency","React","formatCurrency","Separator","__name"]}
@@ -0,0 +1,2 @@
1
+ import{a as B}from"./chunk-7ZBXCVHC.js";import{a as D}from"./chunk-J2GLSJLO.js";import{e as M,f as O}from"./chunk-7EZH5DCX.js";import{a as n}from"./chunk-ATKR5HCM.js";import{a as o}from"./chunk-AYDF3IFZ.js";import v from"react";import{useForm as he}from"react-hook-form";import*as m from"react";import{Slot as me}from"@radix-ui/react-slot";import{Controller as ce,FormProvider as de,useFormContext as pe,useFormState as ue}from"react-hook-form";import*as k from"react";import*as z from"@radix-ui/react-label";function j({className:e,...t}){return k.createElement(z.Root,{"data-slot":"label",className:n("flex items-center gap-2 text-sm leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50",e),...t})}o(j,"Label");var A=de,$=m.createContext({}),C=o(({...e})=>m.createElement($.Provider,{value:{name:e.name}},m.createElement(ce,{...e})),"FormField"),w=o(()=>{let e=m.useContext($),t=m.useContext(U),{getFieldState:r}=pe(),i=ue({name:e.name}),s=r(e.name,i);if(!e)throw new Error("useFormField should be used within <FormField>");let{id:d}=t;return{id:d,name:e.name,formItemId:`${d}-form-item`,formDescriptionId:`${d}-form-item-description`,formMessageId:`${d}-form-item-message`,...s}},"useFormField"),U=m.createContext({});function S({className:e,...t}){let r=m.useId();return m.createElement(U.Provider,{value:{id:r}},m.createElement("div",{"data-slot":"form-item",className:n("grid gap-2",e),...t}))}o(S,"FormItem");function b({className:e,...t}){let{error:r,formItemId:i}=w();return m.createElement(j,{"data-slot":"form-label","data-error":!!r,className:n("text-base-color mb-1 data-[error=true]:text-destructive",e),htmlFor:i,...t})}o(b,"FormLabel");function x({...e}){let{error:t,formItemId:r,formDescriptionId:i,formMessageId:s}=w();return m.createElement(me,{"data-slot":"form-control",id:r,"aria-describedby":t?`${i} ${s}`:`${i}`,"aria-invalid":!!t,...e})}o(x,"FormControl");function P({className:e,...t}){let{formDescriptionId:r}=w();return m.createElement("p",{"data-slot":"form-description",id:r,className:n("text-base-color text-sm",e),...t})}o(P,"FormDescription");function R({className:e,...t}){let{error:r,formMessageId:i}=w(),s=r?String(r?.message??""):t.children;return s?m.createElement("p",{"data-slot":"form-message",id:i,className:n("text-destructive text-sm",e),...t},s):null}o(R,"FormMessage");import V from"react";import*as I from"react";function J({legend:e,name:t,fields:r}){return I.createElement("fieldset",{className:"border-1 border-input p-4 rounded-xl RemoteFlows__FieldSetField"},I.createElement("legend",{className:"text-sm font-semibold px-2"},e),I.createElement("div",{className:"grid gap-4"},r.map(i=>{let s=T[i.type];return I.createElement(s,{...i,key:i.name,name:`${t}.${i.name}`})})))}o(J,"FieldSetField");import*as _ from"@radix-ui/react-radio-group";import{CircleIcon as fe}from"lucide-react";import*as N from"react";function W({className:e,...t}){return N.createElement(_.Root,{"data-slot":"radio-group",className:n("grid gap-3",e),...t})}o(W,"RadioGroup");function H({className:e,...t}){return N.createElement(_.Item,{"data-slot":"radio-group-item",className:n("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t},N.createElement(_.Indicator,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center"},N.createElement(fe,{className:"fill-radio absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})))}o(H,"RadioGroupItem");import*as p from"react";import{useFormContext as Fe}from"react-hook-form";function q({name:e,defaultValue:t,description:r,label:i,options:s}){let{control:d}=Fe();return p.createElement(C,{control:d,name:e,defaultValue:t,render:({field:y,fieldState:F})=>p.createElement(S,{className:"space-y-3 RemoteFlows__RadioGroupField__Item"},p.createElement(b,null,i),p.createElement(x,null,p.createElement(W,{onValueChange:y.onChange,defaultValue:y.value,className:"flex flex-col space-y-1"},s.map(u=>p.createElement(S,{key:u.value,className:"flex items-center space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item"},p.createElement(x,null,p.createElement(H,{value:u.value,className:"RemoteFlows__RadioField__Input"})),p.createElement(b,{className:"font-normal mb-0 RemoteFlows__RadioField__Label"},u.label))))),r&&p.createElement(P,null,r),F.error&&p.createElement(R,null))})}o(q,"RadioGroupField");import*as c from"react";import*as l from"react";import*as a from"@radix-ui/react-select";import{CheckIcon as ge,ChevronDownIcon as Y,ChevronUpIcon as ve}from"lucide-react";function K({...e}){return l.createElement(a.Root,{"data-slot":"select",...e})}o(K,"Select");function Q({...e}){return l.createElement(a.Group,{"data-slot":"select-group",...e})}o(Q,"SelectGroup");function X({...e}){return l.createElement(a.Value,{"data-slot":"select-value",...e})}o(X,"SelectValue");function Z({className:e,children:t,...r}){return l.createElement(a.Trigger,{"data-slot":"select-trigger",className:n("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","focus-visible:border-focused",e),...r},t,l.createElement(a.Icon,{asChild:!0,className:"absolute right-4"},l.createElement(Y,{className:"size-4"})))}o(Z,"SelectTrigger");function ee({className:e,children:t,position:r="popper",...i}){return l.createElement(a.Portal,null,l.createElement(a.Content,{"data-slot":"select-content",className:n("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...i},l.createElement(ye,null),l.createElement(a.Viewport,{className:n(r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1")},t),l.createElement(Se,null)))}o(ee,"SelectContent");function te({className:e,children:t,...r}){return l.createElement(a.Item,{"data-slot":"select-item",className:n("focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r},l.createElement(a.ItemText,null,t),l.createElement("span",{className:"flex size-3.5 items-center justify-center"},l.createElement(a.ItemIndicator,null,l.createElement(ge,{className:"size-4"}))))}o(te,"SelectItem");function ye({className:e,...t}){return l.createElement(a.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:n("flex cursor-default items-center justify-center py-1",e),...t},l.createElement(ve,{className:"size-4"}))}o(ye,"SelectScrollUpButton");function Se({className:e,...t}){return l.createElement(a.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:n("flex cursor-default items-center justify-center py-1",e),...t},l.createElement(Y,{className:"size-4"}))}o(Se,"SelectScrollDownButton");import{useFormContext as be}from"react-hook-form";function oe({label:e,name:t,options:r,defaultValue:i,description:s,onChange:d}){let{control:y}=be();return c.createElement(C,{defaultValue:i,control:y,name:t,render:({field:F,fieldState:u})=>c.createElement(S,{className:"RemoteFlows__SelectField__Item"},c.createElement(b,{className:"RemoteFlows__SelectField__Label"},e),c.createElement(x,null,c.createElement("div",{className:"relative"},c.createElement(K,{value:F.value,onValueChange:f=>{F.onChange(f),d?.(f)}},c.createElement(Z,{className:"RemoteFlows__SelectField__Trigger","aria-invalid":!!u.error},c.createElement("span",{className:"absolute"},c.createElement(X,null))),c.createElement(ee,{className:"RemoteFlows__SelectField__Content"},c.createElement(Q,{className:"RemoteFlows__SelectField__Group"},r.map(f=>c.createElement(te,{key:f.value,value:f.value,className:"RemoteFlows__SelectField__SelectItem"},f.label))))))),s&&c.createElement(P,null,s),u.error&&c.createElement(R,null))})}o(oe,"SelectField");import*as g from"react";import{useFormContext as xe}from"react-hook-form";import*as re from"react";function ie({className:e,type:t,...r}){return re.createElement("input",{type:t,"data-slot":"input",className:n("shadow-xs border-input file:text-foreground placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-xl border bg-transparent px-4 py-7 text-sm transition-[color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-focused","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}o(ie,"Input");var Ce={type:"text",inputMode:"decimal",pattern:"^[0-9.]*$"};function E({name:e,description:t,label:r,type:i,onChange:s}){let{control:d}=xe(),F=i==="number"?Ce:{type:i};return g.createElement(C,{control:d,name:e,render:({field:u,fieldState:f})=>g.createElement(S,{className:"RemoteFlows__TextField__Item"},g.createElement(b,{className:"RemoteFlows__TextField__Label"},r),g.createElement(x,null,g.createElement(ie,{...u,onChange:h=>{u.onChange(h),s?.(h)},...F,className:"TextField__Input"})),t&&g.createElement(P,{className:"RemoteFlows__TextField__Description"},t),f.error&&g.createElement(R,{className:"RemoteFlows__TextField__Error"}))})}o(E,"TextField");import Pe from"react";var T={text:E,select:oe,radio:q,number:o(e=>Pe.createElement(E,{...e,type:"text"}),"number"),fieldset:J};var ae=o(({fields:e})=>!e||e.length===0?null:V.createElement(V.Fragment,null,e.map(t=>{if(t.isVisible===!1||t.deprecated)return null;let r=T[t.inputType];return r?V.createElement(r,{key:t.name,...t}):V.createElement("p",{className:"error"},"Field type ",t.inputType," not supported")})),"JSONSchemaFormFields");import{useCallback as se}from"react";var Re=o(e=>se(async t=>await e.validate(t,{abortEarly:!1}),[e]),"useValidationYupResolver");function _e(e){return e.inner.reduce((r,i)=>({...r,[i.path]:{type:i.type??"validation",message:i.message}}),{})}o(_e,"iterateErrors");var le=o(e=>{let t=Re(e);return se(async r=>{let i,s={};try{i=await t(r)}catch(d){s=_e(d)}return Object.keys(s).length>0?{values:{},errors:s}:{values:i,errors:{}}},[e])},"useValidationFormResolver");function Mt({estimationOptions:e=M,defaultValues:t={countryRegionSlug:"",currencySlug:"",salary:""},options:r,onSubmit:i,onError:s,onSuccess:d}){let{onSubmit:y,fields:F,validationSchema:u}=O({defaultRegion:t.countryRegionSlug,estimationOptions:e}),f=le(u),h=he({resolver:f,defaultValues:{country:t?.countryRegionSlug,currency:t?.currencySlug,region:"",salary:t?.salary},mode:"onBlur"}),ne=o(async L=>{await i?.(L);let G=await y(L);G.error?s?.(G.error):d?.(G.data)},"handleSubmit");return v.createElement(v.Fragment,null,v.createElement(A,{...h},v.createElement("form",{onSubmit:h.handleSubmit(ne),className:"space-y-4 RemoteFlows__CostCalculatorForm"},v.createElement(ae,{fields:F}),v.createElement(D,{type:"submit",className:"w-full bg-gray-900 hover:bg-gray-800 text-white"},"Save"))),v.createElement("div",{className:"RemoteFlows__CostCalculator__Disclaimer"},v.createElement(B,{label:r?.disclaimer?.label})))}o(Mt,"CostCalculator");export{Mt as a};
2
+ //# sourceMappingURL=chunk-V7QTPQZS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/CostCalculator.tsx","../src/components/ui/form.tsx","../src/components/ui/label.tsx","../src/components/form/JSONSchemaForm.tsx","../src/components/form/fields/FieldSetField.tsx","../src/components/ui/radio-group.tsx","../src/components/form/fields/RadioGroupField.tsx","../src/components/form/fields/SelectField.tsx","../src/components/ui/select.tsx","../src/components/form/fields/TextField.tsx","../src/components/ui/input.tsx","../src/components/form/fields/fieldsMapping.tsx","../src/components/form/yupValidationResolver.ts"],"sourcesContent":["import React from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport type { CostCalculatorEstimateResponse } from '@/src/client';\nimport { Form } from '@/src/components/ui/form';\n\nimport { JSONSchemaFormFields } from '@/src/components/form/JSONSchemaForm';\nimport { useValidationFormResolver } from '@/src/components/form/yupValidationResolver';\nimport { Button } from '@/src/components/ui/button';\nimport { Disclaimer } from '@/src/flows/CostCalculator/Disclaimer';\nimport {\n defaultEstimationOptions,\n useCostCalculator,\n} from '@/src/flows/CostCalculator/hooks';\n\nimport type {\n CostCalculatorEstimationFormValues,\n CostCalculatorEstimationOptions,\n} from './types';\n\ntype CostCalculatorProps = Partial<{\n /**\n * Estimation params allows you to customize the parameters sent to the /cost-calculator/estimation endpoint.\n */\n estimationOptions?: CostCalculatorEstimationOptions;\n /**\n * Default values for the form fields.\n */\n defaultValues: Partial<{\n /**\n * Default value for the country field.\n */\n countryRegionSlug: string;\n /**\n * Default value for the currency field.\n */\n currencySlug: string;\n /**\n * Default value for the salary field.\n */\n salary: string;\n }>;\n /**\n * Options for the CostCalculator component.\n */\n options: Partial<{\n /**\n * Disclaimer options.\n */\n disclaimer: {\n /**\n * Label for the disclaimer\n * @default 'Disclaimer'\n * */\n label: string;\n };\n }>;\n /**\n * Callback function that handles form submission. When form is submit, the form values are sent to the consumer app before behind submitted to Remote.\n * @param data - The payload sent to the /cost-calculator/estimation endpoint.\n */\n onSubmit: (data: CostCalculatorEstimationFormValues) => Promise<void> | void;\n /**\n * Callback function to handle the success when the estimation succeeds. The CostCalculatorEstimateResponse is sent back to you.\n * @param data - The response data from the /cost-calculator/estimation endpoint.\n */\n onSuccess: (data: CostCalculatorEstimateResponse) => Promise<void> | void;\n /**\n * Callback function to handle the error when the estimation fails.\n * @param error - The error object.\n */\n onError: (error: Error) => void;\n}>;\n\nexport function CostCalculator({\n estimationOptions = defaultEstimationOptions,\n defaultValues = {\n countryRegionSlug: '',\n currencySlug: '',\n salary: '',\n },\n options,\n onSubmit,\n onError,\n onSuccess,\n}: CostCalculatorProps) {\n const {\n onSubmit: submitCostCalculator,\n fields,\n validationSchema,\n } = useCostCalculator({\n defaultRegion: defaultValues.countryRegionSlug,\n estimationOptions,\n });\n\n const resolver = useValidationFormResolver(validationSchema);\n const form = useForm<CostCalculatorEstimationFormValues>({\n resolver: resolver,\n defaultValues: {\n country: defaultValues?.countryRegionSlug,\n currency: defaultValues?.currencySlug,\n region: '',\n salary: defaultValues?.salary,\n },\n mode: 'onBlur',\n });\n\n const handleSubmit = async (values: CostCalculatorEstimationFormValues) => {\n await onSubmit?.(values);\n\n const estimation = await submitCostCalculator(values);\n\n if (estimation.error) {\n onError?.(estimation.error);\n } else {\n onSuccess?.(estimation.data);\n }\n };\n\n return (\n <>\n <Form {...form}>\n <form\n onSubmit={form.handleSubmit(handleSubmit)}\n className=\"space-y-4 RemoteFlows__CostCalculatorForm\"\n >\n <JSONSchemaFormFields fields={fields} />\n <Button\n type=\"submit\"\n className=\"w-full bg-gray-900 hover:bg-gray-800 text-white\"\n >\n Save\n </Button>\n </form>\n </Form>\n <div className=\"RemoteFlows__CostCalculator__Disclaimer\">\n <Disclaimer label={options?.disclaimer?.label} />\n </div>\n </>\n );\n}\n","import * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from 'react-hook-form';\n\nimport { cn } from '@/src/lib/utils';\nimport { Label } from '@/src/components/ui/label';\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn('grid gap-2', className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\n 'text-base-color mb-1 data-[error=true]:text-destructive',\n className,\n )}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn('text-base-color text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn('text-destructive text-sm', className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n 'flex items-center gap-2 text-sm leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import React from 'react';\nimport { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport { Fields } from '@remoteoss/json-schema-form';\nimport { SupportedTypes } from '@/src/components/form/fields/types';\n\ntype JSONSchemaFormFieldsProps = {\n fields: Fields;\n};\n\nexport const JSONSchemaFormFields = ({ fields }: JSONSchemaFormFieldsProps) => {\n if (!fields || fields.length === 0) return null;\n\n return (\n <>\n {fields.map((field) => {\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n const FieldComponent = fieldsMap[field.inputType as SupportedTypes];\n\n return FieldComponent ? (\n <FieldComponent key={field.name} {...field} />\n ) : (\n <p className=\"error\">\n Field type {field.inputType as string} not supported\n </p>\n );\n })}\n </>\n );\n};\n","import { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport * as React from 'react';\nimport { SupportedTypes } from './types';\n\ntype FieldBase = {\n label: string;\n name: string;\n description: string;\n};\n\ntype FieldWithOptions = FieldBase & {\n type: 'select' | 'radio';\n options: Array<{ value: string; label: string }>;\n};\n\ntype FieldWithoutOptions = FieldBase & {\n type: Exclude<SupportedTypes, 'select' | 'radio'>;\n options?: never;\n};\n\ntype Field = FieldWithOptions | FieldWithoutOptions;\n\ntype FieldSetProps = {\n legend: string;\n name: string;\n fields: Field[];\n};\n\nexport function FieldSetField({ legend, name, fields }: FieldSetProps) {\n return (\n <fieldset className=\"border-1 border-input p-4 rounded-xl RemoteFlows__FieldSetField\">\n <legend className=\"text-sm font-semibold px-2\">{legend}</legend>\n <div className=\"grid gap-4\">\n {fields.map((field) => {\n const FieldComponent = fieldsMap[field.type];\n return (\n <FieldComponent\n {...field}\n key={field.name}\n name={`${name}.${field.name}`}\n />\n );\n })}\n </div>\n </fieldset>\n );\n}\n","import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { CircleIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-radio absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","import {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { RadioGroup, RadioGroupItem } from '@/src/components/ui/radio-group';\nimport * as React from 'react';\nimport { useFormContext } from 'react-hook-form';\n\ntype RadioGroupFieldProps = {\n name: string;\n label: string;\n description?: string;\n defaultValue?: string;\n options: Array<{ value: string; label: string }>;\n};\n\nexport function RadioGroupField({\n name,\n defaultValue,\n description,\n label,\n options,\n}: RadioGroupFieldProps) {\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormItem className=\"space-y-3 RemoteFlows__RadioGroupField__Item\">\n <FormLabel>{label}</FormLabel>\n <FormControl>\n <RadioGroup\n onValueChange={field.onChange}\n defaultValue={field.value}\n className=\"flex flex-col space-y-1\"\n >\n {options.map((option) => (\n <FormItem\n key={option.value}\n className=\"flex items-center space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item\"\n >\n <FormControl>\n <RadioGroupItem\n value={option.value}\n className=\"RemoteFlows__RadioField__Input\"\n />\n </FormControl>\n <FormLabel className=\"font-normal mb-0 RemoteFlows__RadioField__Label\">\n {option.label}\n </FormLabel>\n </FormItem>\n ))}\n </RadioGroup>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n )}\n />\n );\n}\n","import * as React from 'react';\n\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/src/components/ui/select';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\n\ntype SelectFieldProps = {\n label: string;\n name: string;\n placeholder?: string;\n description?: string;\n options: Array<{ value: string; label: string }>;\n defaultValue?: string;\n className?: string;\n onChange?: (value: string) => void;\n};\n\nexport function SelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n}: SelectFieldProps) {\n const { control } = useFormContext();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <FormItem className=\"RemoteFlows__SelectField__Item\">\n <FormLabel className=\"RemoteFlows__SelectField__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <div className=\"relative\">\n <Select\n value={field.value}\n onValueChange={(value: string) => {\n field.onChange(value);\n onChange?.(value);\n }}\n >\n <SelectTrigger\n className=\"RemoteFlows__SelectField__Trigger\"\n aria-invalid={Boolean(fieldState.error)}\n >\n <span className=\"absolute\">\n <SelectValue />\n </span>\n </SelectTrigger>\n <SelectContent className=\"RemoteFlows__SelectField__Content\">\n <SelectGroup className=\"RemoteFlows__SelectField__Group\">\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n className=\"RemoteFlows__SelectField__SelectItem\"\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n )}\n />\n );\n}\n","import * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger>) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n 'focus-visible:border-focused',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild className=\"absolute right-4\">\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'popper',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn('px-2 py-1.5 text-sm font-medium', className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import * as React from 'react';\n\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { Input } from '../../ui/input';\n\ntype TextFieldProps = React.ComponentProps<'input'> & {\n label: string;\n description?: string;\n name: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n};\n\ntype InputModeAttrsProps = Pick<\n React.ComponentProps<'input'>,\n 'type' | 'inputMode' | 'pattern'\n>;\n\nconst inputModeAttrs: InputModeAttrsProps = {\n type: 'text',\n inputMode: 'decimal',\n pattern: '^[0-9.]*$',\n};\n\nexport function TextField({\n name,\n description,\n label,\n type,\n onChange,\n}: TextFieldProps) {\n const { control } = useFormContext();\n const isTypeNumber = type === 'number';\n const typeAttrs = isTypeNumber ? inputModeAttrs : { type };\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <FormItem className=\"RemoteFlows__TextField__Item\">\n <FormLabel className=\"RemoteFlows__TextField__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <Input\n {...field}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => {\n field.onChange(event);\n onChange?.(event);\n }}\n {...typeAttrs}\n className=\"TextField__Input\"\n />\n </FormControl>\n {description && (\n <FormDescription className=\"RemoteFlows__TextField__Description\">\n {description}\n </FormDescription>\n )}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__TextField__Error\" />\n )}\n </FormItem>\n )}\n />\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n 'shadow-xs border-input file:text-foreground placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-xl border bg-transparent px-4 py-7 text-sm transition-[color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-focused',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import { FieldSetField } from '@/src/components/form/fields/FieldSetField';\nimport { RadioGroupField } from '@/src/components/form/fields/RadioGroupField';\nimport { SelectField } from '@/src/components/form/fields/SelectField';\nimport { TextField } from '@/src/components/form/fields/TextField';\nimport { SupportedTypes } from '@/src/components/form/fields/types';\nimport React from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const fieldsMap: Record<SupportedTypes, React.ComponentType<any>> = {\n text: TextField,\n select: SelectField,\n radio: RadioGroupField,\n number: (props) => <TextField {...props} type=\"text\" />,\n fieldset: FieldSetField,\n};\n","import { useCallback } from 'react';\nimport { FieldValues, Resolver } from 'react-hook-form';\nimport type { AnyObjectSchema, InferType, ValidationError } from 'yup';\n\nconst useValidationYupResolver = <T extends AnyObjectSchema>(\n validationSchema: T,\n) => {\n return useCallback(\n async (data: FieldValues) => {\n return await validationSchema.validate(data, {\n abortEarly: false,\n });\n },\n [validationSchema],\n );\n};\n\nfunction iterateErrors(error: ValidationError) {\n const errors = (error as ValidationError).inner.reduce(\n (\n allErrors: Record<string, { type: string; message: string }>,\n currentError: ValidationError,\n ) => {\n return {\n ...allErrors,\n [currentError.path as string]: {\n type: currentError.type ?? 'validation',\n message: currentError.message,\n },\n };\n },\n {} as Record<string, { type: string; message: string }>,\n );\n\n return errors;\n}\n\nexport const useValidationFormResolver = <T extends AnyObjectSchema>(\n validationSchema: T,\n): Resolver<InferType<T>> => {\n const yupValidation = useValidationYupResolver(validationSchema);\n return useCallback(\n async (data: FieldValues) => {\n let values;\n let errors = {};\n\n try {\n values = await yupValidation(data);\n } catch (error) {\n errors = iterateErrors(error as ValidationError);\n }\n\n if (Object.keys(errors).length > 0) {\n return {\n values: {},\n errors: errors,\n };\n }\n\n return {\n values,\n errors: {},\n };\n },\n [validationSchema],\n );\n};\n"],"mappings":"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","names":["React","useForm","React","Slot","Controller","FormProvider","useFormContext","useFormState","React","LabelPrimitive","Label","className","props","cn","__name","Form","FormProvider","FormFieldContext","FormField","__name","props","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","id","FormItem","className","cn","FormLabel","error","formItemId","Label","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","body","React","React","FieldSetField","legend","name","fields","field","FieldComponent","fieldsMap","__name","RadioGroupPrimitive","CircleIcon","React","RadioGroup","className","props","cn","__name","RadioGroupItem","CircleIcon","React","useFormContext","RadioGroupField","name","defaultValue","description","label","options","control","useFormContext","FormField","field","fieldState","FormItem","FormLabel","FormControl","RadioGroup","option","RadioGroupItem","FormDescription","FormMessage","__name","React","React","SelectPrimitive","CheckIcon","ChevronDownIcon","ChevronUpIcon","Select","props","__name","SelectGroup","SelectValue","SelectTrigger","className","children","cn","ChevronDownIcon","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectItem","className","children","props","cn","CheckIcon","__name","SelectScrollUpButton","className","props","cn","ChevronUpIcon","__name","SelectScrollDownButton","ChevronDownIcon","useFormContext","SelectField","label","name","options","defaultValue","description","onChange","control","useFormContext","FormField","field","fieldState","FormItem","FormLabel","FormControl","Select","value","SelectTrigger","SelectValue","SelectContent","SelectGroup","option","SelectItem","FormDescription","FormMessage","__name","React","useFormContext","React","Input","className","type","props","cn","__name","inputModeAttrs","TextField","name","description","label","type","onChange","control","useFormContext","typeAttrs","FormField","field","fieldState","FormItem","FormLabel","FormControl","Input","event","FormDescription","FormMessage","__name","React","fieldsMap","TextField","SelectField","RadioGroupField","__name","props","React","FieldSetField","JSONSchemaFormFields","__name","fields","React","field","FieldComponent","fieldsMap","useCallback","useValidationYupResolver","__name","validationSchema","useCallback","data","iterateErrors","error","allErrors","currentError","useValidationFormResolver","yupValidation","values","errors","CostCalculator","estimationOptions","defaultEstimationOptions","defaultValues","options","onSubmit","onError","onSuccess","submitCostCalculator","fields","validationSchema","useCostCalculator","resolver","useValidationFormResolver","form","useForm","handleSubmit","__name","values","estimation","React","Form","JSONSchemaFormFields","Button","Disclaimer"]}
@@ -0,0 +1,2 @@
1
+ import{a,b as m,c as p,d}from"./chunk-Z5SEXEAZ.js";import{a as l}from"./chunk-DE6ICD4X.js";import{a as i}from"./chunk-J2GLSJLO.js";import{b as s}from"./chunk-ATKR5HCM.js";import{a as t}from"./chunk-AYDF3IFZ.js";import{Info as g}from"lucide-react";import o from"react";function y({contributionsTotal:u,currency:e,contributionsBreakdown:n}){return o.createElement("div",null,o.createElement("div",{className:"flex justify-between items-center mb-2"},o.createElement("h3",{className:"font-medium text-primary-foreground"},"Employer Contributions"),o.createElement("span",{className:"font-semibold text-lg"},s(u,e))),n?o.createElement(o.Fragment,null,o.createElement(l,{className:"mb-3"}),o.createElement("div",{className:"space-y-3 pl-2"},n.map((r,f)=>o.createElement("div",{key:f,className:"flex justify-between items-start text-sm"},o.createElement("div",{className:"flex items-start gap-2"},o.createElement("span",null,r.name),o.createElement(a,null,o.createElement(m,null,o.createElement(p,{asChild:!0},o.createElement(i,{variant:"ghost",size:"icon",className:"h-4 w-4 p-0"},o.createElement(g,{className:"h-3 w-3 text-gray-400"}),o.createElement("span",{className:"sr-only"},"Info"))),o.createElement(d,null,o.createElement("p",{className:"max-w-xs"},r.description),r.zendesk_article_url&&o.createElement("a",{href:r.zendesk_article_url,target:"_blank",rel:"noopener noreferrer",className:"text-blue-500 hover:underline block mt-1 text-xs"},"Learn more"))))),o.createElement("span",null,s(r.amount,e)))))):null)}t(y,"CostCalculatorContributionsBreakdown");export{y as a};
2
+ //# sourceMappingURL=chunk-XSTVWDTD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.tsx"],"sourcesContent":["import { Info } from 'lucide-react';\nimport React from 'react';\n\nimport {\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n Tooltip as UITooltip,\n} from '@/src/components/ui/tooltip';\n\nimport { Button } from '@/src/components/ui/button';\nimport { Separator } from '@/src/components/ui/separator';\nimport { formatCurrency } from '@/src/lib/utils';\n\ntype CostCalculatorContributionsBreakdownProps = {\n contributionsTotal: number;\n currency: string;\n contributionsBreakdown:\n | {\n name: string;\n description: string | null;\n amount: number;\n zendesk_article_url: string | null;\n }[]\n | undefined;\n};\n\nexport function CostCalculatorContributionsBreakdown({\n contributionsTotal,\n currency,\n contributionsBreakdown,\n}: CostCalculatorContributionsBreakdownProps) {\n return (\n <div>\n <div className=\"flex justify-between items-center mb-2\">\n <h3 className=\"font-medium text-primary-foreground\">\n Employer Contributions\n </h3>\n <span className=\"font-semibold text-lg\">\n {formatCurrency(contributionsTotal, currency)}\n </span>\n </div>\n {contributionsBreakdown ? (\n <>\n <Separator className=\"mb-3\" />\n <div className=\"space-y-3 pl-2\">\n {contributionsBreakdown.map((contribution, index) => (\n <div\n key={index}\n className=\"flex justify-between items-start text-sm\"\n >\n <div className=\"flex items-start gap-2\">\n <span>{contribution.name}</span>\n <TooltipProvider>\n <UITooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-4 w-4 p-0\"\n >\n <Info className=\"h-3 w-3 text-gray-400\" />\n <span className=\"sr-only\">Info</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{contribution.description}</p>\n {contribution.zendesk_article_url && (\n <a\n href={contribution.zendesk_article_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-blue-500 hover:underline block mt-1 text-xs\"\n >\n Learn more\n </a>\n )}\n </TooltipContent>\n </UITooltip>\n </TooltipProvider>\n </div>\n <span>{formatCurrency(contribution.amount, currency)}</span>\n </div>\n ))}\n </div>\n </>\n ) : null}\n </div>\n );\n}\n"],"mappings":"mNAAA,OAAS,QAAAA,MAAY,eACrB,OAAOC,MAAW,QA0BX,SAASC,EAAqC,CACnD,mBAAAC,EACA,SAAAC,EACA,uBAAAC,CACF,EAA8C,CAC5C,OACEC,EAAA,cAAC,WACCA,EAAA,cAAC,OAAI,UAAU,0CACbA,EAAA,cAAC,MAAG,UAAU,uCAAsC,wBAEpD,EACAA,EAAA,cAAC,QAAK,UAAU,yBACbC,EAAeJ,EAAoBC,CAAQ,CAC9C,CACF,EACCC,EACCC,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACE,EAAA,CAAU,UAAU,OAAO,EAC5BF,EAAA,cAAC,OAAI,UAAU,kBACZD,EAAuB,IAAI,CAACI,EAAcC,IACzCJ,EAAA,cAAC,OACC,IAAKI,EACL,UAAU,4CAEVJ,EAAA,cAAC,OAAI,UAAU,0BACbA,EAAA,cAAC,YAAMG,EAAa,IAAK,EACzBH,EAAA,cAACK,EAAA,KACCL,EAAA,cAACM,EAAA,KACCN,EAAA,cAACO,EAAA,CAAe,QAAO,IACrBP,EAAA,cAACQ,EAAA,CACC,QAAQ,QACR,KAAK,OACL,UAAU,eAEVR,EAAA,cAACS,EAAA,CAAK,UAAU,wBAAwB,EACxCT,EAAA,cAAC,QAAK,UAAU,WAAU,MAAI,CAChC,CACF,EACAA,EAAA,cAACU,EAAA,KACCV,EAAA,cAAC,KAAE,UAAU,YAAYG,EAAa,WAAY,EACjDA,EAAa,qBACZH,EAAA,cAAC,KACC,KAAMG,EAAa,oBACnB,OAAO,SACP,IAAI,sBACJ,UAAU,oDACX,YAED,CAEJ,CACF,CACF,CACF,EACAH,EAAA,cAAC,YAAMC,EAAeE,EAAa,OAAQL,CAAQ,CAAE,CACvD,CACD,CACH,CACF,EACE,IACN,CAEJ,CA9DgBa,EAAAf,EAAA","names":["Info","React","CostCalculatorContributionsBreakdown","contributionsTotal","currency","contributionsBreakdown","React","formatCurrency","Separator","contribution","index","TooltipProvider","Tooltip","TooltipTrigger","Button","Info","TooltipContent","__name"]}
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-ATKR5HCM.js";import{a as e}from"./chunk-AYDF3IFZ.js";import*as o from"react";import*as t from"@radix-ui/react-tooltip";function l({delayDuration:i=0,...r}){return o.createElement(t.Provider,{"data-slot":"tooltip-provider",delayDuration:i,...r})}e(l,"TooltipProvider");function d({...i}){return o.createElement(l,null,o.createElement(t.Root,{"data-slot":"tooltip",...i}))}e(d,"Tooltip");function s({...i}){return o.createElement(t.Trigger,{"data-slot":"tooltip-trigger",...i})}e(s,"TooltipTrigger");function f({className:i,sideOffset:r=0,children:p,...n}){return o.createElement(t.Portal,null,o.createElement(t.Content,{"data-slot":"tooltip-content",sideOffset:r,className:a("bg-primary text-primary-foreground shadow-md border animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance",i),...n},p,o.createElement(t.Arrow,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})))}e(f,"TooltipContent");export{l as a,d as b,s as c,f as d};
2
+ //# sourceMappingURL=chunk-Z5SEXEAZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/tooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-primary text-primary-foreground shadow-md border animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"mappings":"2EAAA,UAAYA,MAAW,QACvB,UAAYC,MAAsB,0BAIlC,SAASC,EAAgB,CACvB,cAAAC,EAAgB,EAChB,GAAGC,CACL,EAA2D,CACzD,OACE,gBAAkB,WAAjB,CACC,YAAU,mBACV,cAAeD,EACd,GAAGC,EACN,CAEJ,CAXSC,EAAAH,EAAA,mBAaT,SAASI,EAAQ,CACf,GAAGF,CACL,EAAuD,CACrD,OACE,gBAACF,EAAA,KACC,gBAAkB,OAAjB,CAAsB,YAAU,UAAW,GAAGE,EAAO,CACxD,CAEJ,CARSC,EAAAC,EAAA,WAUT,SAASC,EAAe,CACtB,GAAGH,CACL,EAA0D,CACxD,OAAO,gBAAkB,UAAjB,CAAyB,YAAU,kBAAmB,GAAGA,EAAO,CAC1E,CAJSC,EAAAE,EAAA,kBAMT,SAASC,EAAe,CACtB,UAAAC,EACA,WAAAC,EAAa,EACb,SAAAC,EACA,GAAGP,CACL,EAA0D,CACxD,OACE,gBAAkB,SAAjB,KACC,gBAAkB,UAAjB,CACC,YAAU,kBACV,WAAYM,EACZ,UAAWE,EACT,wYACAH,CACF,EACC,GAAGL,GAEHO,EACD,gBAAkB,QAAjB,CAAuB,UAAU,+FAA+F,CACnI,CACF,CAEJ,CAtBSN,EAAAG,EAAA","names":["React","TooltipPrimitive","TooltipProvider","delayDuration","props","__name","Tooltip","TooltipTrigger","TooltipContent","className","sideOffset","children","cn"]}
@@ -0,0 +1,2 @@
1
+ import{a,b as m,c as p,d as l}from"./chunk-Z5SEXEAZ.js";import{a as e}from"./chunk-DE6ICD4X.js";import{a as n}from"./chunk-J2GLSJLO.js";import{b as i}from"./chunk-ATKR5HCM.js";import{a as t}from"./chunk-AYDF3IFZ.js";import{Info as v}from"lucide-react";import o from"react";function w({benefitsTotal:d,benefitsBreakdown:f,currency:r}){return o.createElement("div",null,o.createElement("div",{className:"flex justify-between items-center mb-2"},o.createElement("h3",{className:"font-medium text-primary-foreground-800"},"Benefits"),o.createElement("span",{className:"font-semibold text-lg"},i(d,r))),o.createElement(e,{className:"mb-3"}),o.createElement("div",{className:"space-y-3 pl-2"},f.map((s,u)=>o.createElement("div",{key:u,className:"flex justify-between items-start text-sm"},o.createElement("div",{className:"flex items-start gap-2"},o.createElement("span",null,s.name),o.createElement(a,null,o.createElement(m,null,o.createElement(p,{asChild:!0},o.createElement(n,{variant:"ghost",size:"icon",className:"h-4 w-4 p-0"},o.createElement(v,{className:"h-3 w-3 text-gray-400"}),o.createElement("span",{className:"sr-only"},"Info"))),o.createElement(l,null,o.createElement("p",{className:"max-w-xs"},s.description))))),o.createElement("span",null,i(s.amount,r))))))}t(w,"CostCalculatorBenefitsBreakdown");export{w as a};
2
+ //# sourceMappingURL=chunk-ZII4VJ3N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.tsx"],"sourcesContent":["import { Info } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@/src/components/ui/button';\nimport { Separator } from '@/src/components/ui/separator';\nimport {\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n Tooltip as UITooltip,\n} from '@/src/components/ui/tooltip';\nimport { formatCurrency } from '@/src/lib/utils';\n\ntype CostCalculatorBenefitsBreakdownProps = {\n benefitsTotal: number | undefined;\n benefitsBreakdown: {\n name: string;\n description: string | null;\n amount: number;\n }[];\n currency: string;\n};\n\nexport function CostCalculatorBenefitsBreakdown({\n benefitsTotal,\n benefitsBreakdown,\n currency,\n}: CostCalculatorBenefitsBreakdownProps) {\n return (\n <div>\n <div className=\"flex justify-between items-center mb-2\">\n <h3 className=\"font-medium text-primary-foreground-800\">Benefits</h3>\n <span className=\"font-semibold text-lg\">\n {formatCurrency(benefitsTotal, currency)}\n </span>\n </div>\n <Separator className=\"mb-3\" />\n\n <div className=\"space-y-3 pl-2\">\n {benefitsBreakdown.map((benefit, index) => (\n <div key={index} className=\"flex justify-between items-start text-sm\">\n <div className=\"flex items-start gap-2\">\n <span>{benefit.name}</span>\n <TooltipProvider>\n <UITooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-4 w-4 p-0\">\n <Info className=\"h-3 w-3 text-gray-400\" />\n <span className=\"sr-only\">Info</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{benefit.description}</p>\n </TooltipContent>\n </UITooltip>\n </TooltipProvider>\n </div>\n <span>{formatCurrency(benefit.amount, currency)}</span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"wNAAA,OAAS,QAAAA,MAAY,eACrB,OAAOC,MAAW,QAsBX,SAASC,EAAgC,CAC9C,cAAAC,EACA,kBAAAC,EACA,SAAAC,CACF,EAAyC,CACvC,OACEC,EAAA,cAAC,WACCA,EAAA,cAAC,OAAI,UAAU,0CACbA,EAAA,cAAC,MAAG,UAAU,2CAA0C,UAAQ,EAChEA,EAAA,cAAC,QAAK,UAAU,yBACbC,EAAeJ,EAAeE,CAAQ,CACzC,CACF,EACAC,EAAA,cAACE,EAAA,CAAU,UAAU,OAAO,EAE5BF,EAAA,cAAC,OAAI,UAAU,kBACZF,EAAkB,IAAI,CAACK,EAASC,IAC/BJ,EAAA,cAAC,OAAI,IAAKI,EAAO,UAAU,4CACzBJ,EAAA,cAAC,OAAI,UAAU,0BACbA,EAAA,cAAC,YAAMG,EAAQ,IAAK,EACpBH,EAAA,cAACK,EAAA,KACCL,EAAA,cAACM,EAAA,KACCN,EAAA,cAACO,EAAA,CAAe,QAAO,IACrBP,EAAA,cAACQ,EAAA,CAAO,QAAQ,QAAQ,KAAK,OAAO,UAAU,eAC5CR,EAAA,cAACS,EAAA,CAAK,UAAU,wBAAwB,EACxCT,EAAA,cAAC,QAAK,UAAU,WAAU,MAAI,CAChC,CACF,EACAA,EAAA,cAACU,EAAA,KACCV,EAAA,cAAC,KAAE,UAAU,YAAYG,EAAQ,WAAY,CAC/C,CACF,CACF,CACF,EACAH,EAAA,cAAC,YAAMC,EAAeE,EAAQ,OAAQJ,CAAQ,CAAE,CAClD,CACD,CACH,CACF,CAEJ,CAxCgBY,EAAAf,EAAA","names":["Info","React","CostCalculatorBenefitsBreakdown","benefitsTotal","benefitsBreakdown","currency","React","formatCurrency","Separator","benefit","index","TooltipProvider","Tooltip","TooltipTrigger","Button","Info","TooltipContent","__name"]}
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { C as CostCalculatorEstimateResponse } from '../../types.gen-_BwuB2Vq.js';
3
+ import { CostCalculatorEstimationOptions, CostCalculatorEstimationFormValues } from './types.js';
4
+
5
+ type CostCalculatorProps = Partial<{
6
+ /**
7
+ * Estimation params allows you to customize the parameters sent to the /cost-calculator/estimation endpoint.
8
+ */
9
+ estimationOptions?: CostCalculatorEstimationOptions;
10
+ /**
11
+ * Default values for the form fields.
12
+ */
13
+ defaultValues: Partial<{
14
+ /**
15
+ * Default value for the country field.
16
+ */
17
+ countryRegionSlug: string;
18
+ /**
19
+ * Default value for the currency field.
20
+ */
21
+ currencySlug: string;
22
+ /**
23
+ * Default value for the salary field.
24
+ */
25
+ salary: string;
26
+ }>;
27
+ /**
28
+ * Options for the CostCalculator component.
29
+ */
30
+ options: Partial<{
31
+ /**
32
+ * Disclaimer options.
33
+ */
34
+ disclaimer: {
35
+ /**
36
+ * Label for the disclaimer
37
+ * @default 'Disclaimer'
38
+ * */
39
+ label: string;
40
+ };
41
+ }>;
42
+ /**
43
+ * Callback function that handles form submission. When form is submit, the form values are sent to the consumer app before behind submitted to Remote.
44
+ * @param data - The payload sent to the /cost-calculator/estimation endpoint.
45
+ */
46
+ onSubmit: (data: CostCalculatorEstimationFormValues) => Promise<void> | void;
47
+ /**
48
+ * Callback function to handle the success when the estimation succeeds. The CostCalculatorEstimateResponse is sent back to you.
49
+ * @param data - The response data from the /cost-calculator/estimation endpoint.
50
+ */
51
+ onSuccess: (data: CostCalculatorEstimateResponse) => Promise<void> | void;
52
+ /**
53
+ * Callback function to handle the error when the estimation fails.
54
+ * @param error - The error object.
55
+ */
56
+ onError: (error: Error) => void;
57
+ }>;
58
+ declare function CostCalculator({ estimationOptions, defaultValues, options, onSubmit, onError, onSuccess, }: CostCalculatorProps): React.JSX.Element;
59
+
60
+ export { CostCalculator };
@@ -0,0 +1,2 @@
1
+ import{a}from"../../chunk-V7QTPQZS.js";import"../../chunk-FX6BYIQS.js";import"../../chunk-7ZBXCVHC.js";import"../../chunk-J2GLSJLO.js";import"../../chunk-7EZH5DCX.js";import"../../chunk-ATKR5HCM.js";import"../../chunk-2AGPO366.js";import"../../chunk-AYDF3IFZ.js";export{a as CostCalculator};
2
+ //# sourceMappingURL=CostCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+
3
+ type DisclaimerProps = {
4
+ label?: string;
5
+ };
6
+ declare const Disclaimer: ({ label }: DisclaimerProps) => React.JSX.Element;
7
+
8
+ export { Disclaimer };
@@ -0,0 +1,2 @@
1
+ import{a}from"../../../chunk-7ZBXCVHC.js";import"../../../chunk-J2GLSJLO.js";import"../../../chunk-7EZH5DCX.js";import"../../../chunk-ATKR5HCM.js";import"../../../chunk-2AGPO366.js";import"../../../chunk-AYDF3IFZ.js";export{a as Disclaimer};
2
+ //# sourceMappingURL=Disclaimer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ export { Disclaimer } from './Disclaimer.js';
2
+ import 'react';
@@ -0,0 +1,2 @@
1
+ import"../../../chunk-FX6BYIQS.js";import{a}from"../../../chunk-7ZBXCVHC.js";import"../../../chunk-J2GLSJLO.js";import"../../../chunk-7EZH5DCX.js";import"../../../chunk-ATKR5HCM.js";import"../../../chunk-2AGPO366.js";import"../../../chunk-AYDF3IFZ.js";export{a as Disclaimer};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+
3
+ type CostCalculatorBenefitsBreakdownProps = {
4
+ benefitsTotal: number | undefined;
5
+ benefitsBreakdown: {
6
+ name: string;
7
+ description: string | null;
8
+ amount: number;
9
+ }[];
10
+ currency: string;
11
+ };
12
+ declare function CostCalculatorBenefitsBreakdown({ benefitsTotal, benefitsBreakdown, currency, }: CostCalculatorBenefitsBreakdownProps): React.JSX.Element;
13
+
14
+ export { CostCalculatorBenefitsBreakdown };
@@ -0,0 +1,2 @@
1
+ import{a}from"../../../chunk-ZII4VJ3N.js";import"../../../chunk-Z5SEXEAZ.js";import"../../../chunk-DE6ICD4X.js";import"../../../chunk-J2GLSJLO.js";import"../../../chunk-ATKR5HCM.js";import"../../../chunk-AYDF3IFZ.js";export{a as CostCalculatorBenefitsBreakdown};
2
+ //# sourceMappingURL=CostCalculatorBenefitsBreakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+
3
+ type CostCalculatorContributionsBreakdownProps = {
4
+ contributionsTotal: number;
5
+ currency: string;
6
+ contributionsBreakdown: {
7
+ name: string;
8
+ description: string | null;
9
+ amount: number;
10
+ zendesk_article_url: string | null;
11
+ }[] | undefined;
12
+ };
13
+ declare function CostCalculatorContributionsBreakdown({ contributionsTotal, currency, contributionsBreakdown, }: CostCalculatorContributionsBreakdownProps): React.JSX.Element;
14
+
15
+ export { CostCalculatorContributionsBreakdown };
@@ -0,0 +1,2 @@
1
+ import{a}from"../../../chunk-XSTVWDTD.js";import"../../../chunk-Z5SEXEAZ.js";import"../../../chunk-DE6ICD4X.js";import"../../../chunk-J2GLSJLO.js";import"../../../chunk-ATKR5HCM.js";import"../../../chunk-AYDF3IFZ.js";export{a as CostCalculatorContributionsBreakdown};
2
+ //# sourceMappingURL=CostCalculatorContributionsBreakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+
3
+ type CostCalculatorGrossSalaryProps = {
4
+ grossSalary: number;
5
+ currency: string;
6
+ };
7
+ declare function CostCalculatorGrossSalary({ grossSalary, currency, }: CostCalculatorGrossSalaryProps): React.JSX.Element;
8
+
9
+ export { CostCalculatorGrossSalary };
@@ -0,0 +1,2 @@
1
+ import{a}from"../../../chunk-Q2ZB5MOF.js";import"../../../chunk-DE6ICD4X.js";import"../../../chunk-ATKR5HCM.js";import"../../../chunk-AYDF3IFZ.js";export{a as CostCalculatorGrossSalary};
2
+ //# sourceMappingURL=CostCalculatorGrossSalary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { C as CostCalculatorEstimateResponse } from '../../../types.gen-_BwuB2Vq.js';
3
+
4
+ interface CostCalculatorResultProps {
5
+ employmentData: CostCalculatorEstimateResponse['data'];
6
+ options?: Partial<{
7
+ title: string;
8
+ description: string;
9
+ showChart: boolean;
10
+ chartColors: {
11
+ grossSalary: string;
12
+ contributions: string;
13
+ benefits: string;
14
+ };
15
+ }>;
16
+ }
17
+ declare function CostCalculatorResults({ employmentData, options, }: CostCalculatorResultProps): React.JSX.Element | null;
18
+
19
+ export { CostCalculatorResults };
@@ -0,0 +1,2 @@
1
+ import{a}from"../../../chunk-BRK6MUQS.js";import"../../../chunk-ZII4VJ3N.js";import"../../../chunk-XSTVWDTD.js";import"../../../chunk-Z5SEXEAZ.js";import"../../../chunk-Q2ZB5MOF.js";import"../../../chunk-DE6ICD4X.js";import"../../../chunk-JEULWBZA.js";import"../../../chunk-BIWKEH5R.js";import"../../../chunk-J2GLSJLO.js";import"../../../chunk-ATKR5HCM.js";import"../../../chunk-AYDF3IFZ.js";export{a as CostCalculatorResults};
2
+ //# sourceMappingURL=CostCalculatorResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+
3
+ type VisualBreakDownProps = {
4
+ chartData: {
5
+ name: string;
6
+ value: number | undefined;
7
+ color: string;
8
+ }[];
9
+ currency: string;
10
+ };
11
+ declare function CostCalculatorResultsChart({ chartData, currency, }: VisualBreakDownProps): React.JSX.Element;
12
+
13
+ export { CostCalculatorResultsChart as default };
@@ -0,0 +1,2 @@
1
+ import{a as l,b as n,c as t,e as d}from"../../../chunk-JEULWBZA.js";import{b as i}from"../../../chunk-ATKR5HCM.js";import{a as s}from"../../../chunk-AYDF3IFZ.js";import r from"react";import{Cell as u,Pie as C,PieChart as p,ResponsiveContainer as f,Tooltip as v}from"recharts";function c({chartData:o,currency:m}){return r.createElement(l,{className:"rounded-lg RemoteFlows__CostCalculatorResults_CostDistribution"},r.createElement(n,{className:"pb-2"},r.createElement(t,null,"Cost Distribution")),r.createElement(d,null,r.createElement("div",{className:"h-[300px] flex items-center justify-center"},r.createElement(f,{width:"100%",height:"100%"},r.createElement(p,null,r.createElement(C,{data:o,cx:"50%",cy:"50%",innerRadius:60,outerRadius:90,paddingAngle:2,dataKey:"value",labelLine:!1},o.map((e,a)=>r.createElement(u,{key:`cell-${a}`,fill:e.color}))),r.createElement(v,{formatter:e=>i(Number(e),m),contentStyle:{borderRadius:"var(--radius-md)",border:"1px solid var(--color-border)",fontSize:"var(--text-xs)"}})))),r.createElement("div",{className:"mt-4 space-y-2"},o.map((e,a)=>r.createElement("div",{key:a,className:"flex items-center gap-2"},r.createElement("div",{className:"w-3 h-3 rounded-full",style:{backgroundColor:e.color}}),r.createElement("span",{className:"text-sm"},e.name))))))}s(c,"CostCalculatorResultsChart");export{c as default};
2
+ //# sourceMappingURL=CostCalculatorResultsChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/flows/CostCalculator/Results/CostCalculatorResultsChart.tsx"],"sourcesContent":["import React from 'react';\nimport { Cell, Pie, PieChart, ResponsiveContainer, Tooltip } from 'recharts';\n\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n} from '@/src/components/ui/card';\nimport { formatCurrency } from '@/src/lib/utils';\n\ntype VisualBreakDownProps = {\n chartData: { name: string; value: number | undefined; color: string }[];\n currency: string;\n};\n\nexport default function CostCalculatorResultsChart({\n chartData,\n currency,\n}: VisualBreakDownProps) {\n return (\n <Card className=\"rounded-lg RemoteFlows__CostCalculatorResults_CostDistribution\">\n <CardHeader className=\"pb-2\">\n <CardTitle>Cost Distribution</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"h-[300px] flex items-center justify-center\">\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <PieChart>\n <Pie\n data={chartData}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={60}\n outerRadius={90}\n paddingAngle={2}\n dataKey=\"value\"\n labelLine={false}\n >\n {chartData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={entry.color} />\n ))}\n </Pie>\n <Tooltip\n formatter={(value: 'monthly' | 'annual') =>\n formatCurrency(Number(value), currency)\n }\n contentStyle={{\n borderRadius: 'var(--radius-md)',\n border: '1px solid var(--color-border)',\n fontSize: 'var(--text-xs)',\n }}\n />\n </PieChart>\n </ResponsiveContainer>\n </div>\n\n <div className=\"mt-4 space-y-2\">\n {chartData.map((item, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full\"\n style={{ backgroundColor: item.color }}\n ></div>\n <span className=\"text-sm\">{item.name}</span>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"kKAAA,OAAOA,MAAW,QAClB,OAAS,QAAAC,EAAM,OAAAC,EAAK,YAAAC,EAAU,uBAAAC,EAAqB,WAAAC,MAAe,WAenD,SAARC,EAA4C,CACjD,UAAAC,EACA,SAAAC,CACF,EAAyB,CACvB,OACEC,EAAA,cAACC,EAAA,CAAK,UAAU,kEACdD,EAAA,cAACE,EAAA,CAAW,UAAU,QACpBF,EAAA,cAACG,EAAA,KAAU,mBAAiB,CAC9B,EACAH,EAAA,cAACI,EAAA,KACCJ,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAACK,EAAA,CAAoB,MAAM,OAAO,OAAO,QACvCL,EAAA,cAACM,EAAA,KACCN,EAAA,cAACO,EAAA,CACC,KAAMT,EACN,GAAG,MACH,GAAG,MACH,YAAa,GACb,YAAa,GACb,aAAc,EACd,QAAQ,QACR,UAAW,IAEVA,EAAU,IAAI,CAACU,EAAOC,IACrBT,EAAA,cAACU,EAAA,CAAK,IAAK,QAAQD,CAAK,GAAI,KAAMD,EAAM,MAAO,CAChD,CACH,EACAR,EAAA,cAACW,EAAA,CACC,UAAYC,GACVC,EAAe,OAAOD,CAAK,EAAGb,CAAQ,EAExC,aAAc,CACZ,aAAc,mBACd,OAAQ,gCACR,SAAU,gBACZ,EACF,CACF,CACF,CACF,EAEAC,EAAA,cAAC,OAAI,UAAU,kBACZF,EAAU,IAAI,CAACgB,EAAML,IACpBT,EAAA,cAAC,OAAI,IAAKS,EAAO,UAAU,2BACzBT,EAAA,cAAC,OACC,UAAU,uBACV,MAAO,CAAE,gBAAiBc,EAAK,KAAM,EACtC,EACDd,EAAA,cAAC,QAAK,UAAU,WAAWc,EAAK,IAAK,CACvC,CACD,CACH,CACF,CACF,CAEJ,CAvDwBC,EAAAlB,EAAA","names":["React","Cell","Pie","PieChart","ResponsiveContainer","Tooltip","CostCalculatorResultsChart","chartData","currency","React","Card","CardHeader","CardTitle","CardContent","ResponsiveContainer","PieChart","Pie","entry","index","Cell","Tooltip","value","formatCurrency","item","__name"]}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+
3
+ type CostCalculatorTotalCostProps = {
4
+ totalCost: number;
5
+ currency: string;
6
+ };
7
+ declare function CostCalculatorTotalCost({ totalCost, currency, }: CostCalculatorTotalCostProps): React.JSX.Element;
8
+
9
+ export { CostCalculatorTotalCost };
@@ -0,0 +1,2 @@
1
+ import{a}from"../../../chunk-BIWKEH5R.js";import"../../../chunk-ATKR5HCM.js";import"../../../chunk-AYDF3IFZ.js";export{a as CostCalculatorTotalCost};
2
+ //# sourceMappingURL=CostCalculatorTotalCost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}