@alfadocs/ui-kit-debug 0.82.0 → 0.84.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 (156) hide show
  1. package/dist/_chunks/{actions-cell-renderer-DLrcSTK_.js → actions-cell-renderer-DaL80uqL.js} +2 -2
  2. package/dist/_chunks/{actions-cell-renderer-DLrcSTK_.js.map → actions-cell-renderer-DaL80uqL.js.map} +1 -1
  3. package/dist/_chunks/chart-GFLv4cXm.js +609 -0
  4. package/dist/_chunks/chart-GFLv4cXm.js.map +1 -0
  5. package/dist/_chunks/dashboard-grid-D2dm0IRN.js +691 -0
  6. package/dist/_chunks/dashboard-grid-D2dm0IRN.js.map +1 -0
  7. package/dist/_chunks/{editable-currency-cell-renderer-GwfA9tTR.js → editable-currency-cell-renderer-Dus_sBvX.js} +2 -2
  8. package/dist/_chunks/{editable-currency-cell-renderer-GwfA9tTR.js.map → editable-currency-cell-renderer-Dus_sBvX.js.map} +1 -1
  9. package/dist/_chunks/{face-scheme-C0rk21gg.js → face-scheme-CjQAHvSP.js} +2 -2
  10. package/dist/_chunks/{face-scheme-C0rk21gg.js.map → face-scheme-CjQAHvSP.js.map} +1 -1
  11. package/dist/_chunks/{file-manager-DfTG7bxx.js → file-manager-DLJlinIO.js} +3 -3
  12. package/dist/_chunks/{file-manager-DfTG7bxx.js.map → file-manager-DLJlinIO.js.map} +1 -1
  13. package/dist/_chunks/{header-settings-DMfdx0Vq.js → header-settings-CLwFqMHI.js} +2 -2
  14. package/dist/_chunks/{header-settings-DMfdx0Vq.js.map → header-settings-CLwFqMHI.js.map} +1 -1
  15. package/dist/_chunks/{icon-button-group-C_lqXTAj.js → icon-button-group-BLHPN6jg.js} +178 -163
  16. package/dist/_chunks/icon-button-group-BLHPN6jg.js.map +1 -0
  17. package/dist/_chunks/{marketplace-app-shell-Bxq1PYAj.js → marketplace-app-shell-Br2yebEK.js} +2 -2
  18. package/dist/_chunks/{marketplace-app-shell-Bxq1PYAj.js.map → marketplace-app-shell-Br2yebEK.js.map} +1 -1
  19. package/dist/_chunks/{patient-table-DweKjiXg.js → patient-table-BHzmUbzu.js} +2 -2
  20. package/dist/_chunks/{patient-table-DweKjiXg.js.map → patient-table-BHzmUbzu.js.map} +1 -1
  21. package/dist/_chunks/{theme-toggle-BJCz_UOi.js → theme-toggle-B4mOrQX1.js} +2 -2
  22. package/dist/_chunks/{theme-toggle-BJCz_UOi.js.map → theme-toggle-B4mOrQX1.js.map} +1 -1
  23. package/dist/_chunks/widget-picker-DEmTVuFL.js +193 -0
  24. package/dist/_chunks/widget-picker-DEmTVuFL.js.map +1 -0
  25. package/dist/agent-catalog.json +238 -4
  26. package/dist/agent-i18n/en.json +27 -1
  27. package/dist/components/chart/chart.agent.d.ts.map +1 -1
  28. package/dist/components/chart/chart.d.ts +36 -1
  29. package/dist/components/chart/chart.d.ts.map +1 -1
  30. package/dist/components/chart/index.js +1 -1
  31. package/dist/components/dashboard-grid/dashboard-grid-engine.d.ts +37 -0
  32. package/dist/components/dashboard-grid/dashboard-grid-engine.d.ts.map +1 -0
  33. package/dist/components/dashboard-grid/dashboard-grid.agent.d.ts +4 -0
  34. package/dist/components/dashboard-grid/dashboard-grid.agent.d.ts.map +1 -0
  35. package/dist/components/dashboard-grid/dashboard-grid.d.ts +74 -0
  36. package/dist/components/dashboard-grid/dashboard-grid.d.ts.map +1 -0
  37. package/dist/components/dashboard-grid/index.d.ts +3 -0
  38. package/dist/components/dashboard-grid/index.d.ts.map +1 -0
  39. package/dist/components/dashboard-grid/index.js +6 -0
  40. package/dist/components/dashboard-grid/index.js.map +1 -0
  41. package/dist/components/data-table/index.js +2 -2
  42. package/dist/components/face-scheme/index.js +1 -1
  43. package/dist/components/file-manager/index.js +1 -1
  44. package/dist/components/header-settings/index.js +1 -1
  45. package/dist/components/icon-button-group/icon-button-group.d.ts.map +1 -1
  46. package/dist/components/icon-button-group/index.js +1 -1
  47. package/dist/components/index.d.ts +2 -0
  48. package/dist/components/index.d.ts.map +1 -1
  49. package/dist/components/patient-table/index.js +1 -1
  50. package/dist/components/theme-toggle/index.js +1 -1
  51. package/dist/components/widget-picker/index.d.ts +3 -0
  52. package/dist/components/widget-picker/index.d.ts.map +1 -0
  53. package/dist/components/widget-picker/index.js +6 -0
  54. package/dist/components/widget-picker/index.js.map +1 -0
  55. package/dist/components/widget-picker/widget-picker.agent.d.ts +4 -0
  56. package/dist/components/widget-picker/widget-picker.agent.d.ts.map +1 -0
  57. package/dist/components/widget-picker/widget-picker.d.ts +49 -0
  58. package/dist/components/widget-picker/widget-picker.d.ts.map +1 -0
  59. package/dist/i18n/locales/ar.d.ts +29 -0
  60. package/dist/i18n/locales/ar.d.ts.map +1 -1
  61. package/dist/i18n/locales/ar.js +29 -0
  62. package/dist/i18n/locales/ar.js.map +1 -1
  63. package/dist/i18n/locales/de.d.ts +29 -0
  64. package/dist/i18n/locales/de.d.ts.map +1 -1
  65. package/dist/i18n/locales/de.js +29 -0
  66. package/dist/i18n/locales/de.js.map +1 -1
  67. package/dist/i18n/locales/el.d.ts +29 -0
  68. package/dist/i18n/locales/el.d.ts.map +1 -1
  69. package/dist/i18n/locales/el.js +29 -0
  70. package/dist/i18n/locales/el.js.map +1 -1
  71. package/dist/i18n/locales/en.d.ts +29 -0
  72. package/dist/i18n/locales/en.d.ts.map +1 -1
  73. package/dist/i18n/locales/en.js +29 -0
  74. package/dist/i18n/locales/en.js.map +1 -1
  75. package/dist/i18n/locales/es.d.ts +29 -0
  76. package/dist/i18n/locales/es.d.ts.map +1 -1
  77. package/dist/i18n/locales/es.js +29 -0
  78. package/dist/i18n/locales/es.js.map +1 -1
  79. package/dist/i18n/locales/fr.d.ts +29 -0
  80. package/dist/i18n/locales/fr.d.ts.map +1 -1
  81. package/dist/i18n/locales/fr.js +29 -0
  82. package/dist/i18n/locales/fr.js.map +1 -1
  83. package/dist/i18n/locales/hi.d.ts +29 -0
  84. package/dist/i18n/locales/hi.d.ts.map +1 -1
  85. package/dist/i18n/locales/hi.js +29 -0
  86. package/dist/i18n/locales/hi.js.map +1 -1
  87. package/dist/i18n/locales/it.d.ts +29 -0
  88. package/dist/i18n/locales/it.d.ts.map +1 -1
  89. package/dist/i18n/locales/it.js +29 -0
  90. package/dist/i18n/locales/it.js.map +1 -1
  91. package/dist/i18n/locales/ja.d.ts +29 -0
  92. package/dist/i18n/locales/ja.d.ts.map +1 -1
  93. package/dist/i18n/locales/ja.js +29 -0
  94. package/dist/i18n/locales/ja.js.map +1 -1
  95. package/dist/i18n/locales/nl.d.ts +29 -0
  96. package/dist/i18n/locales/nl.d.ts.map +1 -1
  97. package/dist/i18n/locales/nl.js +29 -0
  98. package/dist/i18n/locales/nl.js.map +1 -1
  99. package/dist/i18n/locales/pl.d.ts +29 -0
  100. package/dist/i18n/locales/pl.d.ts.map +1 -1
  101. package/dist/i18n/locales/pl.js +29 -0
  102. package/dist/i18n/locales/pl.js.map +1 -1
  103. package/dist/i18n/locales/pt.d.ts +29 -0
  104. package/dist/i18n/locales/pt.d.ts.map +1 -1
  105. package/dist/i18n/locales/pt.js +29 -0
  106. package/dist/i18n/locales/pt.js.map +1 -1
  107. package/dist/i18n/locales/ro.d.ts +29 -0
  108. package/dist/i18n/locales/ro.d.ts.map +1 -1
  109. package/dist/i18n/locales/ro.js +29 -0
  110. package/dist/i18n/locales/ro.js.map +1 -1
  111. package/dist/i18n/locales/ru.d.ts +29 -0
  112. package/dist/i18n/locales/ru.d.ts.map +1 -1
  113. package/dist/i18n/locales/ru.js +29 -0
  114. package/dist/i18n/locales/ru.js.map +1 -1
  115. package/dist/i18n/locales/sq.d.ts +29 -0
  116. package/dist/i18n/locales/sq.d.ts.map +1 -1
  117. package/dist/i18n/locales/sq.js +29 -0
  118. package/dist/i18n/locales/sq.js.map +1 -1
  119. package/dist/i18n/locales/sv.d.ts +29 -0
  120. package/dist/i18n/locales/sv.d.ts.map +1 -1
  121. package/dist/i18n/locales/sv.js +29 -0
  122. package/dist/i18n/locales/sv.js.map +1 -1
  123. package/dist/i18n/locales/tr.d.ts +29 -0
  124. package/dist/i18n/locales/tr.d.ts.map +1 -1
  125. package/dist/i18n/locales/tr.js +29 -0
  126. package/dist/i18n/locales/tr.js.map +1 -1
  127. package/dist/i18n/locales/zh.d.ts +29 -0
  128. package/dist/i18n/locales/zh.d.ts.map +1 -1
  129. package/dist/i18n/locales/zh.js +29 -0
  130. package/dist/i18n/locales/zh.js.map +1 -1
  131. package/dist/index.js +82 -76
  132. package/dist/index.js.map +1 -1
  133. package/dist/locales/ar.json +29 -0
  134. package/dist/locales/de.json +29 -0
  135. package/dist/locales/el.json +29 -0
  136. package/dist/locales/en.json +29 -0
  137. package/dist/locales/es.json +29 -0
  138. package/dist/locales/fr.json +29 -0
  139. package/dist/locales/hi.json +29 -0
  140. package/dist/locales/it.json +29 -0
  141. package/dist/locales/ja.json +29 -0
  142. package/dist/locales/nl.json +29 -0
  143. package/dist/locales/pl.json +29 -0
  144. package/dist/locales/pt.json +29 -0
  145. package/dist/locales/ro.json +29 -0
  146. package/dist/locales/ru.json +29 -0
  147. package/dist/locales/sq.json +29 -0
  148. package/dist/locales/sv.json +29 -0
  149. package/dist/locales/tr.json +29 -0
  150. package/dist/locales/zh.json +29 -0
  151. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  152. package/dist/tokens.css +1 -1
  153. package/package.json +9 -1
  154. package/dist/_chunks/chart-CpkpA74k.js +0 -374
  155. package/dist/_chunks/chart-CpkpA74k.js.map +0 -1
  156. package/dist/_chunks/icon-button-group-C_lqXTAj.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/lucide-react/dist/esm/icons/arrow-right.mjs","../node_modules/lucide-react/dist/esm/icons/refresh-ccw.mjs","../node_modules/lucide-react/dist/esm/icons/repeat.mjs","../src/patterns/payment-automation-upsell/payment-automation-upsell.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n];\nconst ArrowRight = createLucideIcon(\"arrow-right\", __iconNode);\n\nexport { __iconNode, ArrowRight as default };\n//# sourceMappingURL=arrow-right.mjs.map\n","/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"14sxne\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }],\n [\"path\", { d: \"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16\", key: \"1hlbsb\" }],\n [\"path\", { d: \"M16 16h5v5\", key: \"ccwih5\" }]\n];\nconst RefreshCcw = createLucideIcon(\"refresh-ccw\", __iconNode);\n\nexport { __iconNode, RefreshCcw as default };\n//# sourceMappingURL=refresh-ccw.mjs.map\n","/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m17 2 4 4-4 4\", key: \"nntrym\" }],\n [\"path\", { d: \"M3 11v-1a4 4 0 0 1 4-4h14\", key: \"84bu3i\" }],\n [\"path\", { d: \"m7 22-4-4 4-4\", key: \"1wqhfi\" }],\n [\"path\", { d: \"M21 13v1a4 4 0 0 1-4 4H3\", key: \"1rx37r\" }]\n];\nconst Repeat = createLucideIcon(\"repeat\", __iconNode);\n\nexport { __iconNode, Repeat as default };\n//# sourceMappingURL=repeat.mjs.map\n","/* -------------------------------------------------------------------- */\n/* Payment Automation Upsell — PLG surface for the payment-request index */\n/* when the Payment Automation (PAU) module is NOT enabled. */\n/* */\n/* Replaces the old dead-end \"module disabled\" page with a value preview */\n/* + role-aware call to action. Ships as a RUNTIME pattern (an importable */\n/* component) so the platform mounts it directly instead of hand-rolling */\n/* markup — see src/patterns/README.md § \"Exception — runtime patterns\". */\n/* */\n/* Copy is consumer-owned: every user-visible string arrives pre- */\n/* translated via props (the host app localises through its own i18n), */\n/* mirroring MarketplaceAppShell. The kit owns the design, not the words. */\n/* Marketing-serif display heading is the DS-owner-sanctioned PAU */\n/* exception (CLAUDE.md constraint 10 / 06-i18n § Font Requirements). */\n/* -------------------------------------------------------------------- */\n\nimport { forwardRef, useId, type HTMLAttributes, type ReactNode } from 'react';\nimport {\n ArrowRight,\n CalendarClock,\n CircleCheck,\n Clock,\n CreditCard,\n Lock,\n ReceiptText,\n RefreshCcw,\n Repeat,\n Send,\n ShieldCheck,\n TriangleAlert,\n} from 'lucide-react';\n\nimport { Alert } from '../../components/alert';\nimport { Badge } from '../../components/badge';\nimport { BenefitCard } from '../../components/benefit-card';\nimport { Button } from '../../components/button';\nimport { Card } from '../../components/card';\nimport { List } from '../../components/list';\nimport { Stat } from '../../components/stat';\n\n/** Who is viewing the surface — drives which CTA is shown. */\nexport type PaymentAutomationUpsellRole = 'owner' | 'member';\n\n/** Status of a mock payment request in the preview. */\nexport type PaymentAutomationUpsellRequestStatus =\n | 'paid'\n | 'authorized'\n | 'pending'\n | 'overdue';\n\nexport interface PaymentAutomationUpsellStep {\n id: string;\n /** Pre-translated step title. */\n title: string;\n /** Pre-translated step body. */\n description: string;\n /** Optional icon override; a sensible default is chosen per position. */\n icon?: ReactNode;\n}\n\nexport interface PaymentAutomationUpsellFeature {\n id: string;\n /** Pre-translated single line of the \"what's included\" checklist. */\n label: string;\n}\n\nexport interface PaymentAutomationUpsellMetric {\n id: string;\n /** Headline value, already formatted/localised, e.g. \"3×\" or \"−75%\". */\n value: string;\n /** Pre-translated caption under the value. */\n label: string;\n}\n\nexport interface PaymentAutomationUpsellPreviewRow {\n id: string;\n /** Pre-translated row title, e.g. \"Richiesta RDP-2026-0042\". */\n title: string;\n /** Optional pre-translated secondary line (plan / date). Never real PHI. */\n meta?: string;\n /** Amount in minor units (cents); formatted with `locale` + `currency`. */\n amountCents: number;\n /** Drives the status badge colour + icon. */\n status: PaymentAutomationUpsellRequestStatus;\n /** Pre-translated status label shown in the badge. */\n statusLabel: string;\n}\n\nexport interface PaymentAutomationUpsellLabels {\n /** Small eyebrow above the headline — usually the module name. */\n eyebrow?: string;\n /** Serif display headline. */\n title: string;\n /** One- or two-sentence supporting subtitle. */\n subtitle: string;\n /** Heading for the \"how it works\" step column. */\n howItWorksHeading: string;\n /** Heading for the mock preview. */\n previewHeading: string;\n /** Optional small caption flagging the preview as illustrative. */\n previewCaption?: string;\n /** Title of the right-hand call-to-action card. */\n ctaCardTitle: string;\n /** Optional pitch line under the CTA card title. */\n ctaCardSubtitle?: string;\n /** Optional heading above the feature checklist. */\n featuresHeading?: string;\n /** Optional price / plan note, e.g. \"Incluso nel piano Premium\". */\n priceNote?: string;\n /** Owner primary CTA label. */\n activateLabel: string;\n /** Member: notice title explaining they cannot self-activate. */\n memberNoticeTitle?: string;\n /** Member: notice body. */\n memberNoticeDescription?: string;\n /** Member CTA label. */\n notifyAdminLabel?: string;\n}\n\nexport interface PaymentAutomationUpsellProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'title'\n> {\n /** Who is viewing. Owners can self-activate; members ask an admin. Default `owner`. */\n role?: PaymentAutomationUpsellRole;\n /** All user-visible copy — pre-translated by the host app. */\n labels: PaymentAutomationUpsellLabels;\n /** \"How it works\" steps, rendered as numbered BenefitCards. */\n steps: PaymentAutomationUpsellStep[];\n /** \"What's included\" checklist. */\n features: PaymentAutomationUpsellFeature[];\n /** Optional proof metrics shown in the CTA card. */\n metrics?: PaymentAutomationUpsellMetric[];\n /** Mock payment-request rows for the preview. */\n previewRows: PaymentAutomationUpsellPreviewRow[];\n /** BCP-47 locale used for currency formatting. Default `it-IT`. */\n locale?: string;\n /** ISO-4217 currency for the preview amounts. Default `EUR`. */\n currency?: string;\n /** Owner CTA handler — host navigates to the activation / upgrade flow. */\n onActivate?: () => void;\n /** Member CTA handler — host notifies the practice owner / admin. */\n onNotifyAdmin?: () => void;\n}\n\n/* Marketing serif is the DS-owner-sanctioned PAU exception; body/UI stays sans. */\nconst HEADLINE_CLASS = [\n // eslint-disable-next-line no-restricted-syntax -- sanctioned PAU marketing serif display heading (constraint 10)\n 'ds:[font-family:var(--font-serif)] ds:italic ds:font-semibold ds:leading-tight',\n 'ds:text-[color:var(--primary)]',\n].join(' ');\n\nconst DEFAULT_STEP_ICONS: ReactNode[] = [\n <CalendarClock aria-hidden=\"true\" className=\"ds:size-5\" key=\"0\" />,\n <CreditCard aria-hidden=\"true\" className=\"ds:size-5\" key=\"1\" />,\n <RefreshCcw aria-hidden=\"true\" className=\"ds:size-5\" key=\"2\" />,\n <Repeat aria-hidden=\"true\" className=\"ds:size-5\" key=\"3\" />,\n];\n\n/* Brand-only accent rotation. The BenefitCard `auto`/`blue`+ wheel pairs each\n hue with the next (blue→green, green→red), so anything past `magenta` bleeds\n into semantic colours. Cap to the three brand hues and wrap. */\nconst STEP_ACCENTS = ['violet', 'purple', 'magenta'] as const;\n\nconst STATUS_META: Record<\n PaymentAutomationUpsellRequestStatus,\n { variant: 'success' | 'info' | 'warning' | 'error'; icon: ReactNode }\n> = {\n paid: {\n variant: 'success',\n icon: <CircleCheck aria-hidden=\"true\" className=\"ds:size-3.5\" />,\n },\n authorized: {\n variant: 'info',\n icon: <ShieldCheck aria-hidden=\"true\" className=\"ds:size-3.5\" />,\n },\n pending: {\n variant: 'warning',\n icon: <Clock aria-hidden=\"true\" className=\"ds:size-3.5\" />,\n },\n overdue: {\n variant: 'error',\n icon: <TriangleAlert aria-hidden=\"true\" className=\"ds:size-3.5\" />,\n },\n};\n\nexport const PaymentAutomationUpsell = forwardRef<\n HTMLElement,\n PaymentAutomationUpsellProps\n>(\n (\n {\n role = 'owner',\n labels,\n steps,\n features,\n metrics,\n previewRows,\n locale = 'it-IT',\n currency = 'EUR',\n onActivate,\n onNotifyAdmin,\n className,\n ...rest\n },\n ref,\n ) => {\n const headingId = useId();\n const howHeadingId = useId();\n const previewHeadingId = useId();\n const ctaTitleId = useId();\n const featuresHeadingId = useId();\n\n const money = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n });\n\n const stepColumns = Math.min(Math.max(steps.length, 1), 4) as 1 | 2 | 3 | 4;\n\n // Split the \"what's included\" checklist into two balanced columns so the\n // full-width card reads as a filled panel rather than a left-hugging strip.\n const featureMid = Math.ceil(features.length / 2);\n const featureColumns = [\n features.slice(0, featureMid),\n features.slice(featureMid),\n ].filter((column) => column.length > 0);\n\n return (\n <section\n ref={ref}\n data-component=\"payment-automation-upsell\"\n aria-labelledby={headingId}\n className={[\n 'ds:mx-auto ds:flex ds:w-full ds:max-w-[80rem] ds:flex-col ds:gap-[var(--spacing-lg)]',\n 'ds:text-[color:var(--foreground)]',\n className ?? '',\n ]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n {/* Hero — pure value proposition, no action. */}\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:relative ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:overflow-hidden ds:sm:flex-row ds:sm:items-center ds:sm:justify-between ds:sm:gap-[var(--spacing-lg)]\">\n <div className=\"ds:flex ds:max-w-prose ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {labels.eyebrow ? (\n <span className=\"type-eyebrow ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)] ds:text-[color:var(--accent)]\">\n <CreditCard aria-hidden=\"true\" className=\"ds:size-4\" />\n {labels.eyebrow}\n </span>\n ) : null}\n <h1\n id={headingId}\n className={`${HEADLINE_CLASS} ds:text-[length:var(--font-size-4xl)]`}\n >\n {labels.title}\n </h1>\n <p className=\"type-body ds:text-[color:var(--muted-foreground)]\">\n {labels.subtitle}\n </p>\n </div>\n <CreditCard\n aria-hidden=\"true\"\n className=\"ds:pointer-events-none ds:hidden ds:size-28 ds:shrink-0 ds:text-[color:var(--accent)] ds:opacity-15 ds:lg:block\"\n />\n </Card.Body>\n </Card>\n\n {/* How it works — the flow, as numbered steps. */}\n <section\n aria-labelledby={howHeadingId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n >\n <h2 id={howHeadingId} className=\"type-title-section\">\n {labels.howItWorksHeading}\n </h2>\n <BenefitCard.Row columns={stepColumns}>\n {steps.map((step, index) => (\n <BenefitCard\n key={step.id}\n step={index + 1}\n accent={STEP_ACCENTS[index % STEP_ACCENTS.length]}\n icon={\n step.icon ??\n DEFAULT_STEP_ICONS[index % DEFAULT_STEP_ICONS.length]\n }\n title={step.title}\n >\n {step.description}\n </BenefitCard>\n ))}\n </BenefitCard.Row>\n </section>\n\n {/* Preview — an illustrative peek at the generated requests. */}\n <section\n aria-labelledby={previewHeadingId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n <div className=\"ds:flex ds:items-baseline ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <h2 id={previewHeadingId} className=\"type-title-section\">\n {labels.previewHeading}\n </h2>\n {labels.previewCaption ? (\n <span className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {labels.previewCaption}\n </span>\n ) : null}\n </div>\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:p-[var(--spacing-lg)]\">\n <List\n divider=\"spaced\"\n density=\"relaxed\"\n aria-labelledby={previewHeadingId}\n >\n {previewRows.map((row) => {\n const status = STATUS_META[row.status];\n return (\n <List.Item\n key={row.id}\n title={row.title}\n description={row.meta}\n leading={\n <span className=\"ds:flex ds:size-10 ds:items-center ds:justify-center ds:rounded-full ds:bg-[color:var(--muted)] ds:text-[color:var(--accent)]\">\n <ReceiptText\n aria-hidden=\"true\"\n className=\"ds:size-5\"\n />\n </span>\n }\n trailing={\n <span className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-2xs)]\">\n <span className=\"type-metric ds:text-[color:var(--foreground)] ds:[--type-metric-size:var(--font-size-xl)]\">\n {money.format(row.amountCents / 100)}\n </span>\n <Badge\n variant={status.variant}\n size=\"sm\"\n leading={status.icon}\n >\n {row.statusLabel}\n </Badge>\n </span>\n }\n />\n );\n })}\n </List>\n </Card.Body>\n </Card>\n </section>\n\n {/* Conversion — proof metrics + what's included + the CTA. */}\n <section\n aria-labelledby={ctaTitleId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]\"\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <h2 id={ctaTitleId} className=\"type-title-section\">\n {labels.ctaCardTitle}\n </h2>\n {labels.ctaCardSubtitle ? (\n <p className=\"type-body ds:text-[color:var(--muted-foreground)]\">\n {labels.ctaCardSubtitle}\n </p>\n ) : null}\n </div>\n\n {metrics && metrics.length > 0 ? (\n <div className=\"ds:grid ds:gap-[var(--spacing-md)] ds:[grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))]\">\n {metrics.map((metric) => (\n <Stat\n key={metric.id}\n label={metric.label}\n value={metric.value}\n variant=\"elevated\"\n size=\"lg\"\n intent=\"primary\"\n // eslint-disable-next-line no-restricted-syntax -- sanctioned PAU marketing serif KPI numerals (constraint 10)\n className=\"ds:[--type-metric-family:var(--font-serif)]\"\n />\n ))}\n </div>\n ) : null}\n\n {/* What's included — full-width card, two balanced columns. */}\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:p-[var(--spacing-lg)]\">\n {labels.featuresHeading ? (\n <span\n id={featuresHeadingId}\n className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\"\n >\n {labels.featuresHeading}\n </span>\n ) : null}\n <div className=\"ds:grid ds:gap-x-[var(--spacing-2xl)] ds:gap-y-[var(--spacing-sm)] ds:sm:grid-cols-2\">\n {featureColumns.map((column, columnIndex) => (\n <List\n key={columnIndex}\n divider=\"spaced\"\n density=\"default\"\n aria-labelledby={\n labels.featuresHeading ? featuresHeadingId : ctaTitleId\n }\n >\n {column.map((feature) => (\n <List.Item\n key={feature.id}\n title={feature.label}\n leading={\n <CircleCheck\n aria-hidden=\"true\"\n className=\"ds:size-5 ds:text-[color:var(--success)]\"\n />\n }\n />\n ))}\n </List>\n ))}\n </div>\n </Card.Body>\n </Card>\n\n {/* CTA — centred + width-capped so the button never stretches full-bleed. */}\n <div className=\"ds:mx-auto ds:flex ds:w-full ds:max-w-[28rem] ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {role === 'member' ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {labels.memberNoticeTitle || labels.memberNoticeDescription ? (\n <Alert\n variant=\"info\"\n live=\"off\"\n icon={<Lock aria-hidden=\"true\" className=\"ds:size-4\" />}\n >\n {labels.memberNoticeTitle ? (\n <Alert.Title as=\"p\">\n {labels.memberNoticeTitle}\n </Alert.Title>\n ) : null}\n {labels.memberNoticeDescription ? (\n <Alert.Description>\n {labels.memberNoticeDescription}\n </Alert.Description>\n ) : null}\n </Alert>\n ) : null}\n <Button\n intent=\"secondary\"\n size=\"lg\"\n startIcon={<Send />}\n flipIconInRtl\n onClick={onNotifyAdmin}\n className=\"ds:w-full\"\n >\n {labels.notifyAdminLabel ?? labels.activateLabel}\n </Button>\n </div>\n ) : (\n <Button\n intent=\"primary\"\n size=\"lg\"\n endIcon={<ArrowRight />}\n flipIconInRtl\n onClick={onActivate}\n className=\"ds:w-full\"\n >\n {labels.activateLabel}\n </Button>\n )}\n\n {labels.priceNote ? (\n <p className=\"type-meta ds:text-center ds:text-[color:var(--muted-foreground)]\">\n {labels.priceNote}\n </p>\n ) : null}\n </div>\n </section>\n </section>\n );\n },\n);\n\nPaymentAutomationUpsell.displayName = 'PaymentAutomationUpsell';\n"],"names":["__iconNode","ArrowRight","createLucideIcon","RefreshCcw","Repeat","HEADLINE_CLASS","DEFAULT_STEP_ICONS","CalendarClock","CreditCard","STEP_ACCENTS","STATUS_META","jsx","CircleCheck","ShieldCheck","Clock","TriangleAlert","PaymentAutomationUpsell","forwardRef","role","labels","steps","features","metrics","previewRows","locale","currency","onActivate","onNotifyAdmin","className","rest","ref","headingId","useId","howHeadingId","previewHeadingId","ctaTitleId","featuresHeadingId","money","stepColumns","featureMid","featureColumns","column","jsxs","Card","BenefitCard","step","index","List","row","status","ReceiptText","Badge","metric","Stat","columnIndex","feature","Alert","Lock","Button","Send"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,SAAQ,CAAE;AAAA,EACzC,CAAC,QAAQ,EAAE,GAAG,iBAAiB,KAAK,SAAQ,CAAE;AAChD,GACMC,IAAaC,EAAiB,eAAeF,CAAU;ACb7D;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,sDAAsD,KAAK,SAAQ,CAAE;AAAA,EACnF,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,SAAQ,CAAE;AAAA,EACzC,CAAC,QAAQ,EAAE,GAAG,uDAAuD,KAAK,SAAQ,CAAE;AAAA,EACpF,CAAC,QAAQ,EAAE,GAAG,cAAc,KAAK,SAAQ,CAAE;AAC7C,GACMG,IAAaD,EAAiB,eAAeF,CAAU;ACf7D;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,iBAAiB,KAAK,SAAQ,CAAE;AAAA,EAC9C,CAAC,QAAQ,EAAE,GAAG,6BAA6B,KAAK,SAAQ,CAAE;AAAA,EAC1D,CAAC,QAAQ,EAAE,GAAG,iBAAiB,KAAK,SAAQ,CAAE;AAAA,EAC9C,CAAC,QAAQ,EAAE,GAAG,4BAA4B,KAAK,SAAQ,CAAE;AAC3D,GACMI,IAASF,EAAiB,UAAUF,CAAU,GCmI9CK,KAAiB;AAAA;AAAA,EAErB;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,IAAkC;AAAA,oBACrCC,GAAA,EAAc,eAAY,QAAO,WAAU,eAAgB,GAAI;AAAA,oBAC/DC,GAAA,EAAW,eAAY,QAAO,WAAU,eAAgB,GAAI;AAAA,oBAC5DL,GAAA,EAAW,eAAY,QAAO,WAAU,eAAgB,GAAI;AAAA,oBAC5DC,GAAA,EAAO,eAAY,QAAO,WAAU,eAAgB,GAAI;AAC3D,GAKMK,IAAe,CAAC,UAAU,UAAU,SAAS,GAE7CC,KAGF;AAAA,EACF,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,MAAM,gBAAAC,EAACC,GAAA,EAAY,eAAY,QAAO,WAAU,cAAA,CAAc;AAAA,EAAA;AAAA,EAEhE,YAAY;AAAA,IACV,SAAS;AAAA,IACT,MAAM,gBAAAD,EAACE,GAAA,EAAY,eAAY,QAAO,WAAU,cAAA,CAAc;AAAA,EAAA;AAAA,EAEhE,SAAS;AAAA,IACP,SAAS;AAAA,IACT,MAAM,gBAAAF,EAACG,GAAA,EAAM,eAAY,QAAO,WAAU,cAAA,CAAc;AAAA,EAAA;AAAA,EAE1D,SAAS;AAAA,IACP,SAAS;AAAA,IACT,MAAM,gBAAAH,EAACI,GAAA,EAAc,eAAY,QAAO,WAAU,cAAA,CAAc;AAAA,EAAA;AAEpE,GAEaC,KAA0BC;AAAA,EAIrC,CACE;AAAA,IACE,MAAAC,IAAO;AAAA,IACP,QAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAYC,EAAA,GACZC,IAAeD,EAAA,GACfE,IAAmBF,EAAA,GACnBG,IAAaH,EAAA,GACbI,IAAoBJ,EAAA,GAEpBK,IAAQ,IAAI,KAAK,aAAab,GAAQ;AAAA,MAC1C,OAAO;AAAA,MACP,UAAAC;AAAA,IAAA,CACD,GAEKa,IAAc,KAAK,IAAI,KAAK,IAAIlB,EAAM,QAAQ,CAAC,GAAG,CAAC,GAInDmB,IAAa,KAAK,KAAKlB,EAAS,SAAS,CAAC,GAC1CmB,IAAiB;AAAA,MACrBnB,EAAS,MAAM,GAAGkB,CAAU;AAAA,MAC5BlB,EAAS,MAAMkB,CAAU;AAAA,IAAA,EACzB,OAAO,CAACE,MAAWA,EAAO,SAAS,CAAC;AAEtC,WACE,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,kBAAe;AAAA,QACf,mBAAiBC;AAAA,QACjB,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACAH,KAAa;AAAA,QAAA,EAEZ,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QACV,GAAGC;AAAA,QAGJ,UAAA;AAAA,UAAA,gBAAAlB,EAACgC,GAAA,EAAK,SAAQ,YACZ,UAAA,gBAAAD,EAACC,EAAK,MAAL,EAAU,WAAU,uKACnB,UAAA;AAAA,YAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,iEACZ,UAAA;AAAA,cAAAvB,EAAO,UACN,gBAAAuB,EAAC,QAAA,EAAK,WAAU,yGACd,UAAA;AAAA,gBAAA,gBAAA/B,EAACH,GAAA,EAAW,eAAY,QAAO,WAAU,aAAY;AAAA,gBACpDW,EAAO;AAAA,cAAA,EAAA,CACV,IACE;AAAA,cACJ,gBAAAR;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,IAAIoB;AAAA,kBACJ,WAAW,GAAG1B,EAAc;AAAA,kBAE3B,UAAAc,EAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEV,gBAAAR,EAAC,KAAA,EAAE,WAAU,qDACV,YAAO,SAAA,CACV;AAAA,YAAA,GACF;AAAA,YACA,gBAAAA;AAAA,cAACH;AAAA,cAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ,EAAA,CACF,EAAA,CACF;AAAA,UAGA,gBAAAkC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,mBAAiBT;AAAA,cACjB,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,gBAAAtB,EAAC,QAAG,IAAIsB,GAAc,WAAU,sBAC7B,YAAO,mBACV;AAAA,gBACA,gBAAAtB,EAACiC,EAAY,KAAZ,EAAgB,SAASN,GACvB,UAAAlB,EAAM,IAAI,CAACyB,GAAMC,MAChB,gBAAAnC;AAAA,kBAACiC;AAAA,kBAAA;AAAA,oBAEC,MAAME,IAAQ;AAAA,oBACd,QAAQrC,EAAaqC,IAAQrC,EAAa,MAAM;AAAA,oBAChD,MACEoC,EAAK,QACLvC,EAAmBwC,IAAQxC,EAAmB,MAAM;AAAA,oBAEtD,OAAOuC,EAAK;AAAA,oBAEX,UAAAA,EAAK;AAAA,kBAAA;AAAA,kBATDA,EAAK;AAAA,gBAAA,CAWb,EAAA,CACH;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIF,gBAAAH;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,mBAAiBR;AAAA,cACjB,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,2EACb,UAAA;AAAA,kBAAA,gBAAA/B,EAAC,QAAG,IAAIuB,GAAkB,WAAU,sBACjC,YAAO,gBACV;AAAA,kBACCf,EAAO,iBACN,gBAAAR,EAAC,QAAA,EAAK,WAAU,wDACb,UAAAQ,EAAO,gBACV,IACE;AAAA,gBAAA,GACN;AAAA,gBACA,gBAAAR,EAACgC,KAAK,SAAQ,YACZ,4BAACA,EAAK,MAAL,EAAU,WAAU,4BACnB,UAAA,gBAAAhC;AAAA,kBAACoC;AAAA,kBAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,SAAQ;AAAA,oBACR,mBAAiBb;AAAA,oBAEhB,UAAAX,EAAY,IAAI,CAACyB,MAAQ;AACxB,4BAAMC,IAASvC,GAAYsC,EAAI,MAAM;AACrC,6BACE,gBAAArC;AAAA,wBAACoC,EAAK;AAAA,wBAAL;AAAA,0BAEC,OAAOC,EAAI;AAAA,0BACX,aAAaA,EAAI;AAAA,0BACjB,SACE,gBAAArC,EAAC,QAAA,EAAK,WAAU,iIACd,UAAA,gBAAAA;AAAA,4BAACuC;AAAA,4BAAA;AAAA,8BACC,eAAY;AAAA,8BACZ,WAAU;AAAA,4BAAA;AAAA,0BAAA,GAEd;AAAA,0BAEF,UACE,gBAAAR,EAAC,QAAA,EAAK,WAAU,gEACd,UAAA;AAAA,4BAAA,gBAAA/B,EAAC,QAAA,EAAK,WAAU,6FACb,UAAA0B,EAAM,OAAOW,EAAI,cAAc,GAAG,EAAA,CACrC;AAAA,4BACA,gBAAArC;AAAA,8BAACwC;AAAA,8BAAA;AAAA,gCACC,SAASF,EAAO;AAAA,gCAChB,MAAK;AAAA,gCACL,SAASA,EAAO;AAAA,gCAEf,UAAAD,EAAI;AAAA,8BAAA;AAAA,4BAAA;AAAA,0BACP,EAAA,CACF;AAAA,wBAAA;AAAA,wBAvBGA,EAAI;AAAA,sBAAA;AAAA,oBA2Bf,CAAC;AAAA,kBAAA;AAAA,gBAAA,GAEL,EAAA,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIF,gBAAAN;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,mBAAiBP;AAAA,cACjB,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,gBAAAO,EAAC,OAAA,EAAI,WAAU,mDACb,UAAA;AAAA,kBAAA,gBAAA/B,EAAC,QAAG,IAAIwB,GAAY,WAAU,sBAC3B,YAAO,cACV;AAAA,kBACChB,EAAO,kBACN,gBAAAR,EAAC,KAAA,EAAE,WAAU,qDACV,UAAAQ,EAAO,iBACV,IACE;AAAA,gBAAA,GACN;AAAA,gBAECG,KAAWA,EAAQ,SAAS,IAC3B,gBAAAX,EAAC,OAAA,EAAI,WAAU,oGACZ,UAAAW,EAAQ,IAAI,CAAC8B,MACZ,gBAAAzC;AAAA,kBAAC0C;AAAA,kBAAA;AAAA,oBAEC,OAAOD,EAAO;AAAA,oBACd,OAAOA,EAAO;AAAA,oBACd,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,QAAO;AAAA,oBAEP,WAAU;AAAA,kBAAA;AAAA,kBAPLA,EAAO;AAAA,gBAAA,CASf,GACH,IACE;AAAA,gBAGJ,gBAAAzC,EAACgC,KAAK,SAAQ,YACZ,4BAACA,EAAK,MAAL,EAAU,WAAU,2EAClB,UAAA;AAAA,kBAAAxB,EAAO,kBACN,gBAAAR;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,IAAIyB;AAAA,sBACJ,WAAU;AAAA,sBAET,UAAAjB,EAAO;AAAA,oBAAA;AAAA,kBAAA,IAER;AAAA,kBACJ,gBAAAR,EAAC,SAAI,WAAU,wFACZ,YAAe,IAAI,CAAC8B,GAAQa,MAC3B,gBAAA3C;AAAA,oBAACoC;AAAA,oBAAA;AAAA,sBAEC,SAAQ;AAAA,sBACR,SAAQ;AAAA,sBACR,mBACE5B,EAAO,kBAAkBiB,IAAoBD;AAAA,sBAG9C,UAAAM,EAAO,IAAI,CAACc,MACX,gBAAA5C;AAAA,wBAACoC,EAAK;AAAA,wBAAL;AAAA,0BAEC,OAAOQ,EAAQ;AAAA,0BACf,SACE,gBAAA5C;AAAA,4BAACC;AAAA,4BAAA;AAAA,8BACC,eAAY;AAAA,8BACZ,WAAU;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBACZ;AAAA,wBANG2C,EAAQ;AAAA,sBAAA,CAShB;AAAA,oBAAA;AAAA,oBAlBID;AAAA,kBAAA,CAoBR,EAAA,CACH;AAAA,gBAAA,EAAA,CACF,EAAA,CACF;AAAA,gBAGA,gBAAAZ,EAAC,OAAA,EAAI,WAAU,wFACZ,UAAA;AAAA,kBAAAxB,MAAS,WACR,gBAAAwB,EAAC,OAAA,EAAI,WAAU,kDACZ,UAAA;AAAA,oBAAAvB,EAAO,qBAAqBA,EAAO,0BAClC,gBAAAuB;AAAA,sBAACc;AAAA,sBAAA;AAAA,wBACC,SAAQ;AAAA,wBACR,MAAK;AAAA,wBACL,MAAM,gBAAA7C,EAAC8C,GAAA,EAAK,eAAY,QAAO,WAAU,aAAY;AAAA,wBAEpD,UAAA;AAAA,0BAAAtC,EAAO,sCACLqC,EAAM,OAAN,EAAY,IAAG,KACb,UAAArC,EAAO,kBAAA,CACV,IACE;AAAA,0BACHA,EAAO,0BACN,gBAAAR,EAAC6C,EAAM,aAAN,EACE,UAAArC,EAAO,yBACV,IACE;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAAA,IAEJ;AAAA,oBACJ,gBAAAR;AAAA,sBAAC+C;AAAA,sBAAA;AAAA,wBACC,QAAO;AAAA,wBACP,MAAK;AAAA,wBACL,6BAAYC,GAAA,EAAK;AAAA,wBACjB,eAAa;AAAA,wBACb,SAAShC;AAAA,wBACT,WAAU;AAAA,wBAET,UAAAR,EAAO,oBAAoBA,EAAO;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACrC,EAAA,CACF,IAEA,gBAAAR;AAAA,oBAAC+C;AAAA,oBAAA;AAAA,sBACC,QAAO;AAAA,sBACP,MAAK;AAAA,sBACL,2BAAUzD,GAAA,EAAW;AAAA,sBACrB,eAAa;AAAA,sBACb,SAASyB;AAAA,sBACT,WAAU;AAAA,sBAET,UAAAP,EAAO;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAIXA,EAAO,YACN,gBAAAR,EAAC,KAAA,EAAE,WAAU,oEACV,UAAAQ,EAAO,WACV,IACE;AAAA,gBAAA,EAAA,CACN;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEAH,GAAwB,cAAc;","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/lucide-react/dist/esm/icons/arrow-right.mjs","../node_modules/lucide-react/dist/esm/icons/refresh-ccw.mjs","../node_modules/lucide-react/dist/esm/icons/repeat.mjs","../src/patterns/payment-automation-upsell/payment-automation-upsell.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n];\nconst ArrowRight = createLucideIcon(\"arrow-right\", __iconNode);\n\nexport { __iconNode, ArrowRight as default };\n//# sourceMappingURL=arrow-right.mjs.map\n","/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"14sxne\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }],\n [\"path\", { d: \"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16\", key: \"1hlbsb\" }],\n [\"path\", { d: \"M16 16h5v5\", key: \"ccwih5\" }]\n];\nconst RefreshCcw = createLucideIcon(\"refresh-ccw\", __iconNode);\n\nexport { __iconNode, RefreshCcw as default };\n//# sourceMappingURL=refresh-ccw.mjs.map\n","/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m17 2 4 4-4 4\", key: \"nntrym\" }],\n [\"path\", { d: \"M3 11v-1a4 4 0 0 1 4-4h14\", key: \"84bu3i\" }],\n [\"path\", { d: \"m7 22-4-4 4-4\", key: \"1wqhfi\" }],\n [\"path\", { d: \"M21 13v1a4 4 0 0 1-4 4H3\", key: \"1rx37r\" }]\n];\nconst Repeat = createLucideIcon(\"repeat\", __iconNode);\n\nexport { __iconNode, Repeat as default };\n//# sourceMappingURL=repeat.mjs.map\n","/* -------------------------------------------------------------------- */\n/* Payment Automation Upsell — PLG surface for the payment-request index */\n/* when the Payment Automation (PAU) module is NOT enabled. */\n/* */\n/* Replaces the old dead-end \"module disabled\" page with a value preview */\n/* + role-aware call to action. Ships as a RUNTIME pattern (an importable */\n/* component) so the platform mounts it directly instead of hand-rolling */\n/* markup — see src/patterns/README.md § \"Exception — runtime patterns\". */\n/* */\n/* Copy is consumer-owned: every user-visible string arrives pre- */\n/* translated via props (the host app localises through its own i18n), */\n/* mirroring MarketplaceAppShell. The kit owns the design, not the words. */\n/* Marketing-serif display heading is the DS-owner-sanctioned PAU */\n/* exception (CLAUDE.md constraint 10 / 06-i18n § Font Requirements). */\n/* -------------------------------------------------------------------- */\n\nimport { forwardRef, useId, type HTMLAttributes, type ReactNode } from 'react';\nimport {\n ArrowRight,\n CalendarClock,\n CircleCheck,\n Clock,\n CreditCard,\n Lock,\n ReceiptText,\n RefreshCcw,\n Repeat,\n Send,\n ShieldCheck,\n TriangleAlert,\n} from 'lucide-react';\n\nimport { Alert } from '../../components/alert';\nimport { Badge } from '../../components/badge';\nimport { BenefitCard } from '../../components/benefit-card';\nimport { Button } from '../../components/button';\nimport { Card } from '../../components/card';\nimport { List } from '../../components/list';\nimport { Stat } from '../../components/stat';\n\n/** Who is viewing the surface — drives which CTA is shown. */\nexport type PaymentAutomationUpsellRole = 'owner' | 'member';\n\n/** Status of a mock payment request in the preview. */\nexport type PaymentAutomationUpsellRequestStatus =\n | 'paid'\n | 'authorized'\n | 'pending'\n | 'overdue';\n\nexport interface PaymentAutomationUpsellStep {\n id: string;\n /** Pre-translated step title. */\n title: string;\n /** Pre-translated step body. */\n description: string;\n /** Optional icon override; a sensible default is chosen per position. */\n icon?: ReactNode;\n}\n\nexport interface PaymentAutomationUpsellFeature {\n id: string;\n /** Pre-translated single line of the \"what's included\" checklist. */\n label: string;\n}\n\nexport interface PaymentAutomationUpsellMetric {\n id: string;\n /** Headline value, already formatted/localised, e.g. \"3×\" or \"−75%\". */\n value: string;\n /** Pre-translated caption under the value. */\n label: string;\n}\n\nexport interface PaymentAutomationUpsellPreviewRow {\n id: string;\n /** Pre-translated row title, e.g. \"Richiesta RDP-2026-0042\". */\n title: string;\n /** Optional pre-translated secondary line (plan / date). Never real PHI. */\n meta?: string;\n /** Amount in minor units (cents); formatted with `locale` + `currency`. */\n amountCents: number;\n /** Drives the status badge colour + icon. */\n status: PaymentAutomationUpsellRequestStatus;\n /** Pre-translated status label shown in the badge. */\n statusLabel: string;\n}\n\nexport interface PaymentAutomationUpsellLabels {\n /** Small eyebrow above the headline — usually the module name. */\n eyebrow?: string;\n /** Serif display headline. */\n title: string;\n /** One- or two-sentence supporting subtitle. */\n subtitle: string;\n /** Heading for the \"how it works\" step column. */\n howItWorksHeading: string;\n /** Heading for the mock preview. */\n previewHeading: string;\n /** Optional small caption flagging the preview as illustrative. */\n previewCaption?: string;\n /** Title of the right-hand call-to-action card. */\n ctaCardTitle: string;\n /** Optional pitch line under the CTA card title. */\n ctaCardSubtitle?: string;\n /** Optional heading above the feature checklist. */\n featuresHeading?: string;\n /** Optional price / plan note, e.g. \"Incluso nel piano Premium\". */\n priceNote?: string;\n /** Owner primary CTA label. */\n activateLabel: string;\n /** Member: notice title explaining they cannot self-activate. */\n memberNoticeTitle?: string;\n /** Member: notice body. */\n memberNoticeDescription?: string;\n /** Member CTA label. */\n notifyAdminLabel?: string;\n}\n\nexport interface PaymentAutomationUpsellProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'title'\n> {\n /** Who is viewing. Owners can self-activate; members ask an admin. Default `owner`. */\n role?: PaymentAutomationUpsellRole;\n /** All user-visible copy — pre-translated by the host app. */\n labels: PaymentAutomationUpsellLabels;\n /** \"How it works\" steps, rendered as numbered BenefitCards. */\n steps: PaymentAutomationUpsellStep[];\n /** \"What's included\" checklist. */\n features: PaymentAutomationUpsellFeature[];\n /** Optional proof metrics shown in the CTA card. */\n metrics?: PaymentAutomationUpsellMetric[];\n /** Mock payment-request rows for the preview. */\n previewRows: PaymentAutomationUpsellPreviewRow[];\n /** BCP-47 locale used for currency formatting. Default `it-IT`. */\n locale?: string;\n /** ISO-4217 currency for the preview amounts. Default `EUR`. */\n currency?: string;\n /** Owner CTA handler — host navigates to the activation / upgrade flow. */\n onActivate?: () => void;\n /** Member CTA handler — host notifies the practice owner / admin. */\n onNotifyAdmin?: () => void;\n}\n\n/* Marketing serif is the DS-owner-sanctioned PAU exception; body/UI stays sans. */\nconst HEADLINE_CLASS = [\n // eslint-disable-next-line no-restricted-syntax -- sanctioned PAU marketing serif display heading (constraint 10)\n 'ds:[font-family:var(--font-serif)] ds:italic ds:font-semibold ds:leading-tight',\n 'ds:text-[color:var(--primary)]',\n].join(' ');\n\nconst DEFAULT_STEP_ICONS: ReactNode[] = [\n <CalendarClock aria-hidden=\"true\" className=\"ds:size-5\" key=\"0\" />,\n <CreditCard aria-hidden=\"true\" className=\"ds:size-5\" key=\"1\" />,\n <RefreshCcw aria-hidden=\"true\" className=\"ds:size-5\" key=\"2\" />,\n <Repeat aria-hidden=\"true\" className=\"ds:size-5\" key=\"3\" />,\n];\n\n/* Brand-only accent rotation. The BenefitCard `auto`/`blue`+ wheel pairs each\n hue with the next (blue→green, green→red), so anything past `magenta` bleeds\n into semantic colours. Cap to the three brand hues and wrap. */\nconst STEP_ACCENTS = ['violet', 'purple', 'magenta'] as const;\n\nconst STATUS_META: Record<\n PaymentAutomationUpsellRequestStatus,\n { variant: 'success' | 'info' | 'warning' | 'error'; icon: ReactNode }\n> = {\n paid: {\n variant: 'success',\n icon: <CircleCheck aria-hidden=\"true\" className=\"ds:size-3.5\" />,\n },\n authorized: {\n variant: 'info',\n icon: <ShieldCheck aria-hidden=\"true\" className=\"ds:size-3.5\" />,\n },\n pending: {\n variant: 'warning',\n icon: <Clock aria-hidden=\"true\" className=\"ds:size-3.5\" />,\n },\n overdue: {\n variant: 'error',\n icon: <TriangleAlert aria-hidden=\"true\" className=\"ds:size-3.5\" />,\n },\n};\n\nexport const PaymentAutomationUpsell = forwardRef<\n HTMLElement,\n PaymentAutomationUpsellProps\n>(\n (\n {\n role = 'owner',\n labels,\n steps,\n features,\n metrics,\n previewRows,\n locale = 'it-IT',\n currency = 'EUR',\n onActivate,\n onNotifyAdmin,\n className,\n ...rest\n },\n ref,\n ) => {\n const headingId = useId();\n const howHeadingId = useId();\n const previewHeadingId = useId();\n const ctaTitleId = useId();\n const featuresHeadingId = useId();\n\n const money = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n });\n\n const stepColumns = Math.min(Math.max(steps.length, 1), 4) as 1 | 2 | 3 | 4;\n\n // Split the \"what's included\" checklist into two balanced columns so the\n // full-width card reads as a filled panel rather than a left-hugging strip.\n const featureMid = Math.ceil(features.length / 2);\n const featureColumns = [\n features.slice(0, featureMid),\n features.slice(featureMid),\n ].filter((column) => column.length > 0);\n\n return (\n <section\n ref={ref}\n data-component=\"payment-automation-upsell\"\n aria-labelledby={headingId}\n className={[\n 'ds:mx-auto ds:flex ds:w-full ds:max-w-[80rem] ds:flex-col ds:gap-[var(--spacing-lg)]',\n 'ds:text-[color:var(--foreground)]',\n className ?? '',\n ]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n {/* Hero — pure value proposition, no action. */}\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:relative ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:overflow-hidden ds:sm:flex-row ds:sm:items-center ds:sm:justify-between ds:sm:gap-[var(--spacing-lg)]\">\n <div className=\"ds:flex ds:max-w-prose ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {labels.eyebrow ? (\n <span className=\"type-eyebrow ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)] ds:text-[color:var(--accent)]\">\n <CreditCard aria-hidden=\"true\" className=\"ds:size-4\" />\n {labels.eyebrow}\n </span>\n ) : null}\n <h1\n id={headingId}\n className={`${HEADLINE_CLASS} ds:text-[length:var(--font-size-4xl)]`}\n >\n {labels.title}\n </h1>\n <p className=\"type-body ds:text-[color:var(--muted-foreground)]\">\n {labels.subtitle}\n </p>\n </div>\n <CreditCard\n aria-hidden=\"true\"\n className=\"ds:pointer-events-none ds:hidden ds:size-28 ds:shrink-0 ds:text-[color:var(--accent)] ds:opacity-15 ds:lg:block\"\n />\n </Card.Body>\n </Card>\n\n {/* How it works — the flow, as numbered steps. */}\n <section\n aria-labelledby={howHeadingId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n >\n <h2 id={howHeadingId} className=\"type-title-section\">\n {labels.howItWorksHeading}\n </h2>\n <BenefitCard.Row columns={stepColumns}>\n {steps.map((step, index) => (\n <BenefitCard\n key={step.id}\n step={index + 1}\n accent={STEP_ACCENTS[index % STEP_ACCENTS.length]}\n icon={\n step.icon ??\n DEFAULT_STEP_ICONS[index % DEFAULT_STEP_ICONS.length]\n }\n title={step.title}\n >\n {step.description}\n </BenefitCard>\n ))}\n </BenefitCard.Row>\n </section>\n\n {/* Preview — an illustrative peek at the generated requests. */}\n <section\n aria-labelledby={previewHeadingId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n <div className=\"ds:flex ds:items-baseline ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <h2 id={previewHeadingId} className=\"type-title-section\">\n {labels.previewHeading}\n </h2>\n {labels.previewCaption ? (\n <span className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {labels.previewCaption}\n </span>\n ) : null}\n </div>\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:p-[var(--spacing-lg)]\">\n <List\n divider=\"spaced\"\n density=\"relaxed\"\n aria-labelledby={previewHeadingId}\n >\n {previewRows.map((row) => {\n const status = STATUS_META[row.status];\n return (\n <List.Item\n key={row.id}\n title={row.title}\n description={row.meta}\n leading={\n <span className=\"ds:flex ds:size-10 ds:items-center ds:justify-center ds:rounded-full ds:bg-[color:var(--muted)] ds:text-[color:var(--accent)]\">\n <ReceiptText\n aria-hidden=\"true\"\n className=\"ds:size-5\"\n />\n </span>\n }\n trailing={\n <span className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-2xs)]\">\n <span className=\"type-metric ds:text-[color:var(--foreground)] ds:[--type-metric-size:var(--font-size-xl)]\">\n {money.format(row.amountCents / 100)}\n </span>\n <Badge\n variant={status.variant}\n size=\"sm\"\n leading={status.icon}\n >\n {row.statusLabel}\n </Badge>\n </span>\n }\n />\n );\n })}\n </List>\n </Card.Body>\n </Card>\n </section>\n\n {/* Conversion — proof metrics + what's included + the CTA. */}\n <section\n aria-labelledby={ctaTitleId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]\"\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <h2 id={ctaTitleId} className=\"type-title-section\">\n {labels.ctaCardTitle}\n </h2>\n {labels.ctaCardSubtitle ? (\n <p className=\"type-body ds:text-[color:var(--muted-foreground)]\">\n {labels.ctaCardSubtitle}\n </p>\n ) : null}\n </div>\n\n {metrics && metrics.length > 0 ? (\n <div className=\"ds:grid ds:gap-[var(--spacing-md)] ds:[grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))]\">\n {metrics.map((metric) => (\n <Stat\n key={metric.id}\n label={metric.label}\n value={metric.value}\n variant=\"elevated\"\n size=\"lg\"\n intent=\"primary\"\n // eslint-disable-next-line no-restricted-syntax -- sanctioned PAU marketing serif KPI numerals (constraint 10)\n className=\"ds:[--type-metric-family:var(--font-serif)]\"\n />\n ))}\n </div>\n ) : null}\n\n {/* What's included — full-width card, two balanced columns. */}\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:p-[var(--spacing-lg)]\">\n {labels.featuresHeading ? (\n <span\n id={featuresHeadingId}\n className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\"\n >\n {labels.featuresHeading}\n </span>\n ) : null}\n <div className=\"ds:grid ds:gap-x-[var(--spacing-2xl)] ds:gap-y-[var(--spacing-sm)] ds:sm:grid-cols-2\">\n {featureColumns.map((column, columnIndex) => (\n <List\n key={columnIndex}\n divider=\"spaced\"\n density=\"default\"\n aria-labelledby={\n labels.featuresHeading ? featuresHeadingId : ctaTitleId\n }\n >\n {column.map((feature) => (\n <List.Item\n key={feature.id}\n title={feature.label}\n leading={\n <CircleCheck\n aria-hidden=\"true\"\n className=\"ds:size-5 ds:text-[color:var(--success)]\"\n />\n }\n />\n ))}\n </List>\n ))}\n </div>\n </Card.Body>\n </Card>\n\n {/* CTA — centred + width-capped so the button never stretches full-bleed. */}\n <div className=\"ds:mx-auto ds:flex ds:w-full ds:max-w-[28rem] ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {role === 'member' ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {labels.memberNoticeTitle || labels.memberNoticeDescription ? (\n <Alert\n variant=\"info\"\n live=\"off\"\n icon={<Lock aria-hidden=\"true\" className=\"ds:size-4\" />}\n >\n {labels.memberNoticeTitle ? (\n <Alert.Title as=\"p\">\n {labels.memberNoticeTitle}\n </Alert.Title>\n ) : null}\n {labels.memberNoticeDescription ? (\n <Alert.Description>\n {labels.memberNoticeDescription}\n </Alert.Description>\n ) : null}\n </Alert>\n ) : null}\n <Button\n intent=\"secondary\"\n size=\"lg\"\n startIcon={<Send />}\n flipIconInRtl\n onClick={onNotifyAdmin}\n className=\"ds:w-full\"\n >\n {labels.notifyAdminLabel ?? labels.activateLabel}\n </Button>\n </div>\n ) : (\n <Button\n intent=\"primary\"\n size=\"lg\"\n endIcon={<ArrowRight />}\n flipIconInRtl\n onClick={onActivate}\n className=\"ds:w-full\"\n >\n {labels.activateLabel}\n </Button>\n )}\n\n {labels.priceNote ? (\n <p className=\"type-meta ds:text-center ds:text-[color:var(--muted-foreground)]\">\n {labels.priceNote}\n </p>\n ) : null}\n </div>\n </section>\n </section>\n );\n },\n);\n\nPaymentAutomationUpsell.displayName = 'PaymentAutomationUpsell';\n"],"names":["__iconNode","ArrowRight","createLucideIcon","RefreshCcw","Repeat","HEADLINE_CLASS","DEFAULT_STEP_ICONS","CalendarClock","CreditCard","STEP_ACCENTS","STATUS_META","jsx","CircleCheck","ShieldCheck","Clock","TriangleAlert","PaymentAutomationUpsell","forwardRef","role","labels","steps","features","metrics","previewRows","locale","currency","onActivate","onNotifyAdmin","className","rest","ref","headingId","useId","howHeadingId","previewHeadingId","ctaTitleId","featuresHeadingId","money","stepColumns","featureMid","featureColumns","column","jsxs","Card","BenefitCard","step","index","List","row","status","ReceiptText","Badge","metric","Stat","columnIndex","feature","Alert","Lock","Button","Send"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "سلسلة",
2620
2620
  "value": "قيمة"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "نوع المخطط",
2624
+ "line": "خطي",
2625
+ "bar": "أعمدة",
2626
+ "area": "مساحي",
2627
+ "pie": "دائري",
2628
+ "donut": "حلقي"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "نقل {{title}}",
2633
+ "resize": "تغيير حجم {{title}}",
2634
+ "remove": "إزالة {{title}}",
2635
+ "add": "إضافة عنصر",
2636
+ "grabbed": "تم الالتقاط. استخدم الأسهم للنقل، وEnter للإفلات، وEscape للإلغاء.",
2637
+ "resizeGrabbed": "جارٍ تغيير الحجم. استخدم الأسهم للتغيير، وEnter للتأكيد، وEscape للإلغاء.",
2638
+ "movedTo": "العمود {{col}}، الصف {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "تم وضع العنصر في العمود {{col}}، الصف {{row}}.",
2641
+ "removed": "تمت إزالة العنصر.",
2642
+ "cancelled": "تم إلغاء التغيير."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "إضافة عنصر",
2646
+ "description": "اختر عنصرًا لإضافته إلى لوحتك.",
2647
+ "searchLabel": "البحث في العناصر",
2648
+ "searchPlaceholder": "البحث في العناصر…",
2649
+ "empty": "لا توجد عناصر مطابقة للبحث.",
2650
+ "none": "لا توجد عناصر واجهة متاحة."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "تنسيق النص",
2625
2654
  "regionLabel": "محرر النص المنسق",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Serie",
2620
2620
  "value": "Wert"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Diagrammtyp",
2624
+ "line": "Linie",
2625
+ "bar": "Balken",
2626
+ "area": "Fläche",
2627
+ "pie": "Kreis",
2628
+ "donut": "Ring"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "{{title}} verschieben",
2633
+ "resize": "{{title}} skalieren",
2634
+ "remove": "{{title}} entfernen",
2635
+ "add": "Widget hinzufügen",
2636
+ "grabbed": "Aufgenommen. Mit den Pfeiltasten verschieben, Eingabe zum Ablegen, Escape zum Abbrechen.",
2637
+ "resizeGrabbed": "Größe ändern. Mit den Pfeiltasten anpassen, Eingabe zum Bestätigen, Escape zum Abbrechen.",
2638
+ "movedTo": "Spalte {{col}}, Zeile {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Widget platziert in Spalte {{col}}, Zeile {{row}}.",
2641
+ "removed": "Widget entfernt.",
2642
+ "cancelled": "Änderung abgebrochen."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Widget hinzufügen",
2646
+ "description": "Wählen Sie ein Widget für Ihr Dashboard.",
2647
+ "searchLabel": "Widgets durchsuchen",
2648
+ "searchPlaceholder": "Widgets durchsuchen…",
2649
+ "empty": "Keine Widgets entsprechen der Suche.",
2650
+ "none": "Keine Widgets verfügbar."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Textformatierung",
2625
2654
  "regionLabel": "Rich-Text-Editor",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Σειρά",
2620
2620
  "value": "Τιμή"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Τύπος γραφήματος",
2624
+ "line": "Γραμμή",
2625
+ "bar": "Ράβδοι",
2626
+ "area": "Περιοχή",
2627
+ "pie": "Πίτα",
2628
+ "donut": "Δακτύλιος"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "Μετακίνηση {{title}}",
2633
+ "resize": "Αλλαγή μεγέθους {{title}}",
2634
+ "remove": "Αφαίρεση {{title}}",
2635
+ "add": "Προσθήκη widget",
2636
+ "grabbed": "Επιλέχθηκε. Χρησιμοποιήστε τα βέλη για μετακίνηση, Enter για τοποθέτηση, Escape για ακύρωση.",
2637
+ "resizeGrabbed": "Αλλαγή μεγέθους. Χρησιμοποιήστε τα βέλη, Enter για επιβεβαίωση, Escape για ακύρωση.",
2638
+ "movedTo": "Στήλη {{col}}, γραμμή {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Το widget τοποθετήθηκε στη στήλη {{col}}, γραμμή {{row}}.",
2641
+ "removed": "Το widget αφαιρέθηκε.",
2642
+ "cancelled": "Η αλλαγή ακυρώθηκε."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Προσθήκη widget",
2646
+ "description": "Επιλέξτε ένα widget για τον πίνακα.",
2647
+ "searchLabel": "Αναζήτηση widget",
2648
+ "searchPlaceholder": "Αναζήτηση widget…",
2649
+ "empty": "Κανένα widget δεν ταιριάζει με την αναζήτηση.",
2650
+ "none": "Δεν υπάρχουν διαθέσιμα widget."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Μορφοποίηση κειμένου",
2625
2654
  "regionLabel": "Επεξεργαστής εμπλουτισμένου κειμένου",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Series",
2620
2620
  "value": "Value"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Chart type",
2624
+ "line": "Line",
2625
+ "bar": "Bar",
2626
+ "area": "Area",
2627
+ "pie": "Pie",
2628
+ "donut": "Donut"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "Move {{title}}",
2633
+ "resize": "Resize {{title}}",
2634
+ "remove": "Remove {{title}}",
2635
+ "add": "Add widget",
2636
+ "grabbed": "Picked up. Use the arrow keys to move, Enter to drop, Escape to cancel.",
2637
+ "resizeGrabbed": "Resizing. Use the arrow keys to change the size, Enter to confirm, Escape to cancel.",
2638
+ "movedTo": "Column {{col}}, row {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Widget placed at column {{col}}, row {{row}}.",
2641
+ "removed": "Widget removed.",
2642
+ "cancelled": "Change cancelled."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Add a widget",
2646
+ "description": "Choose a widget to add to your dashboard.",
2647
+ "searchLabel": "Search widgets",
2648
+ "searchPlaceholder": "Search widgets…",
2649
+ "empty": "No widgets match your search.",
2650
+ "none": "No widgets available."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Text formatting",
2625
2654
  "regionLabel": "Rich text editor",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Serie",
2620
2620
  "value": "Valor"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Tipo de gráfico",
2624
+ "line": "Línea",
2625
+ "bar": "Barras",
2626
+ "area": "Área",
2627
+ "pie": "Circular",
2628
+ "donut": "Anillo"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "Mover {{title}}",
2633
+ "resize": "Redimensionar {{title}}",
2634
+ "remove": "Quitar {{title}}",
2635
+ "add": "Añadir widget",
2636
+ "grabbed": "Seleccionado. Usa las flechas para mover, Intro para soltar, Esc para cancelar.",
2637
+ "resizeGrabbed": "Redimensionando. Usa las flechas para cambiar el tamaño, Intro para confirmar, Esc para cancelar.",
2638
+ "movedTo": "Columna {{col}}, fila {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Widget colocado en la columna {{col}}, fila {{row}}.",
2641
+ "removed": "Widget eliminado.",
2642
+ "cancelled": "Cambio cancelado."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Añadir un widget",
2646
+ "description": "Elige un widget para añadir al panel.",
2647
+ "searchLabel": "Buscar widgets",
2648
+ "searchPlaceholder": "Buscar widgets…",
2649
+ "empty": "Ningún widget coincide con la búsqueda.",
2650
+ "none": "No hay widgets disponibles."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Formato de texto",
2625
2654
  "regionLabel": "Editor de texto enriquecido",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Série",
2620
2620
  "value": "Valeur"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Type de graphique",
2624
+ "line": "Ligne",
2625
+ "bar": "Barres",
2626
+ "area": "Aires",
2627
+ "pie": "Secteurs",
2628
+ "donut": "Anneau"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "Déplacer {{title}}",
2633
+ "resize": "Redimensionner {{title}}",
2634
+ "remove": "Supprimer {{title}}",
2635
+ "add": "Ajouter un widget",
2636
+ "grabbed": "Saisi. Utilisez les flèches pour déplacer, Entrée pour déposer, Échap pour annuler.",
2637
+ "resizeGrabbed": "Redimensionnement. Utilisez les flèches pour changer la taille, Entrée pour confirmer, Échap pour annuler.",
2638
+ "movedTo": "Colonne {{col}}, ligne {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Widget placé en colonne {{col}}, ligne {{row}}.",
2641
+ "removed": "Widget supprimé.",
2642
+ "cancelled": "Modification annulée."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Ajouter un widget",
2646
+ "description": "Choisissez un widget à ajouter au tableau de bord.",
2647
+ "searchLabel": "Rechercher des widgets",
2648
+ "searchPlaceholder": "Rechercher des widgets…",
2649
+ "empty": "Aucun widget ne correspond à la recherche.",
2650
+ "none": "Aucun widget disponible."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Mise en forme du texte",
2625
2654
  "regionLabel": "Éditeur de texte enrichi",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "श्रृंखला",
2620
2620
  "value": "मान"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "चार्ट प्रकार",
2624
+ "line": "रेखा",
2625
+ "bar": "बार",
2626
+ "area": "क्षेत्र",
2627
+ "pie": "पाई",
2628
+ "donut": "डोनट"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "{{title}} ले जाएँ",
2633
+ "resize": "{{title}} का आकार बदलें",
2634
+ "remove": "{{title}} हटाएँ",
2635
+ "add": "विजेट जोड़ें",
2636
+ "grabbed": "उठाया गया। ले जाने के लिए तीर कुंजियाँ, रखने के लिए Enter, रद्द करने के लिए Escape।",
2637
+ "resizeGrabbed": "आकार बदला जा रहा है। तीर कुंजियाँ, पुष्टि के लिए Enter, रद्द करने के लिए Escape।",
2638
+ "movedTo": "कॉलम {{col}}, पंक्ति {{row}}।",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "विजेट कॉलम {{col}}, पंक्ति {{row}} पर रखा गया।",
2641
+ "removed": "विजेट हटाया गया।",
2642
+ "cancelled": "बदलाव रद्द।"
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "विजेट जोड़ें",
2646
+ "description": "डैशबोर्ड में जोड़ने के लिए एक विजेट चुनें।",
2647
+ "searchLabel": "विजेट खोजें",
2648
+ "searchPlaceholder": "विजेट खोजें…",
2649
+ "empty": "खोज से कोई विजेट मेल नहीं खाता।",
2650
+ "none": "कोई विजेट उपलब्ध नहीं है।"
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "टेक्स्ट फ़ॉर्मेटिंग",
2625
2654
  "regionLabel": "रिच टेक्स्ट एडिटर",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Serie",
2620
2620
  "value": "Valore"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Tipo di grafico",
2624
+ "line": "Linea",
2625
+ "bar": "Barre",
2626
+ "area": "Area",
2627
+ "pie": "Torta",
2628
+ "donut": "Ciambella"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "Sposta {{title}}",
2633
+ "resize": "Ridimensiona {{title}}",
2634
+ "remove": "Rimuovi {{title}}",
2635
+ "add": "Aggiungi widget",
2636
+ "grabbed": "Selezionato. Usa le frecce per spostare, Invio per rilasciare, Esc per annullare.",
2637
+ "resizeGrabbed": "Ridimensionamento. Usa le frecce per cambiare dimensione, Invio per confermare, Esc per annullare.",
2638
+ "movedTo": "Colonna {{col}}, riga {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Widget posizionato in colonna {{col}}, riga {{row}}.",
2641
+ "removed": "Widget rimosso.",
2642
+ "cancelled": "Modifica annullata."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Aggiungi un widget",
2646
+ "description": "Scegli un widget da aggiungere alla dashboard.",
2647
+ "searchLabel": "Cerca widget",
2648
+ "searchPlaceholder": "Cerca widget…",
2649
+ "empty": "Nessun widget corrisponde alla ricerca.",
2650
+ "none": "Nessun widget disponibile."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Formattazione testo",
2625
2654
  "regionLabel": "Editor di testo formattato",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "シリーズ",
2620
2620
  "value": "値"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "グラフの種類",
2624
+ "line": "折れ線",
2625
+ "bar": "棒",
2626
+ "area": "面",
2627
+ "pie": "円",
2628
+ "donut": "ドーナツ"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "{{title}}を移動",
2633
+ "resize": "{{title}}のサイズ変更",
2634
+ "remove": "{{title}}を削除",
2635
+ "add": "ウィジェットを追加",
2636
+ "grabbed": "選択しました。矢印キーで移動、Enterで配置、Escapeでキャンセル。",
2637
+ "resizeGrabbed": "サイズ変更中。矢印キーで変更、Enterで確定、Escapeでキャンセル。",
2638
+ "movedTo": "{{col}}列目、{{row}}行目。",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "ウィジェットを{{col}}列目、{{row}}行目に配置しました。",
2641
+ "removed": "ウィジェットを削除しました。",
2642
+ "cancelled": "変更をキャンセルしました。"
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "ウィジェットを追加",
2646
+ "description": "ダッシュボードに追加するウィジェットを選択します。",
2647
+ "searchLabel": "ウィジェットを検索",
2648
+ "searchPlaceholder": "ウィジェットを検索…",
2649
+ "empty": "検索に一致するウィジェットはありません。",
2650
+ "none": "利用できるウィジェットがありません。"
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "テキスト書式設定",
2625
2654
  "regionLabel": "リッチテキストエディター",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Reeks",
2620
2620
  "value": "Waarde"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Grafiektype",
2624
+ "line": "Lijn",
2625
+ "bar": "Staaf",
2626
+ "area": "Vlak",
2627
+ "pie": "Cirkel",
2628
+ "donut": "Ring"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "{{title}} verplaatsen",
2633
+ "resize": "{{title}} vergroten/verkleinen",
2634
+ "remove": "{{title}} verwijderen",
2635
+ "add": "Widget toevoegen",
2636
+ "grabbed": "Opgepakt. Gebruik de pijltjestoetsen om te verplaatsen, Enter om neer te zetten, Escape om te annuleren.",
2637
+ "resizeGrabbed": "Formaat wijzigen. Gebruik de pijltjestoetsen, Enter om te bevestigen, Escape om te annuleren.",
2638
+ "movedTo": "Kolom {{col}}, rij {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Widget geplaatst in kolom {{col}}, rij {{row}}.",
2641
+ "removed": "Widget verwijderd.",
2642
+ "cancelled": "Wijziging geannuleerd."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Widget toevoegen",
2646
+ "description": "Kies een widget om aan je dashboard toe te voegen.",
2647
+ "searchLabel": "Widgets zoeken",
2648
+ "searchPlaceholder": "Widgets zoeken…",
2649
+ "empty": "Geen widgets komen overeen met de zoekopdracht.",
2650
+ "none": "Geen widgets beschikbaar."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Tekstopmaak",
2625
2654
  "regionLabel": "Tekstverwerker",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Seria",
2620
2620
  "value": "Wartość"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Typ wykresu",
2624
+ "line": "Liniowy",
2625
+ "bar": "Słupkowy",
2626
+ "area": "Warstwowy",
2627
+ "pie": "Kołowy",
2628
+ "donut": "Pierścieniowy"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "Przenieś {{title}}",
2633
+ "resize": "Zmień rozmiar {{title}}",
2634
+ "remove": "Usuń {{title}}",
2635
+ "add": "Dodaj widżet",
2636
+ "grabbed": "Podniesiono. Użyj strzałek, aby przenieść, Enter aby upuścić, Escape aby anulować.",
2637
+ "resizeGrabbed": "Zmiana rozmiaru. Użyj strzałek, Enter aby potwierdzić, Escape aby anulować.",
2638
+ "movedTo": "Kolumna {{col}}, wiersz {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Widżet umieszczony w kolumnie {{col}}, wierszu {{row}}.",
2641
+ "removed": "Widżet usunięty.",
2642
+ "cancelled": "Zmiana anulowana."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Dodaj widżet",
2646
+ "description": "Wybierz widżet do dodania do pulpitu.",
2647
+ "searchLabel": "Szukaj widżetów",
2648
+ "searchPlaceholder": "Szukaj widżetów…",
2649
+ "empty": "Żaden widżet nie pasuje do wyszukiwania.",
2650
+ "none": "Brak dostępnych widżetów."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Formatowanie tekstu",
2625
2654
  "regionLabel": "Edytor tekstu sformatowanego",
@@ -2618,8 +2618,37 @@
2618
2618
  "table": {
2619
2619
  "series": "Série",
2620
2620
  "value": "Valor"
2621
+ },
2622
+ "typeSwitcher": {
2623
+ "label": "Tipo de gráfico",
2624
+ "line": "Linha",
2625
+ "bar": "Barras",
2626
+ "area": "Área",
2627
+ "pie": "Circular",
2628
+ "donut": "Anel"
2621
2629
  }
2622
2630
  },
2631
+ "dashboardGrid": {
2632
+ "move": "Mover {{title}}",
2633
+ "resize": "Redimensionar {{title}}",
2634
+ "remove": "Remover {{title}}",
2635
+ "add": "Adicionar widget",
2636
+ "grabbed": "Selecionado. Use as setas para mover, Enter para soltar, Esc para cancelar.",
2637
+ "resizeGrabbed": "A redimensionar. Use as setas para alterar o tamanho, Enter para confirmar, Esc para cancelar.",
2638
+ "movedTo": "Coluna {{col}}, linha {{row}}.",
2639
+ "resizedTo": "{{cols}} × {{rows}}.",
2640
+ "droppedAt": "Widget colocado na coluna {{col}}, linha {{row}}.",
2641
+ "removed": "Widget removido.",
2642
+ "cancelled": "Alteração cancelada."
2643
+ },
2644
+ "widgetPicker": {
2645
+ "title": "Adicionar um widget",
2646
+ "description": "Escolha um widget para adicionar ao painel.",
2647
+ "searchLabel": "Pesquisar widgets",
2648
+ "searchPlaceholder": "Pesquisar widgets…",
2649
+ "empty": "Nenhum widget corresponde à pesquisa.",
2650
+ "none": "Nenhum widget disponível."
2651
+ },
2623
2652
  "editor": {
2624
2653
  "toolbarLabel": "Formatação de texto",
2625
2654
  "regionLabel": "Editor de texto formatado",