@alfadocs/ui-kit-debug 1.108.0 → 1.110.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 (115) hide show
  1. package/dist/_chunks/{public-footer-3Jy1zHSs.js → public-footer-DGjLTtNK.js} +30 -30
  2. package/dist/_chunks/public-footer-DGjLTtNK.js.map +1 -0
  3. package/dist/_chunks/{reviews-panel-CtrwZOUS.js → reviews-panel-B03auSpQ.js} +210 -207
  4. package/dist/_chunks/reviews-panel-B03auSpQ.js.map +1 -0
  5. package/dist/_chunks/{signature-request-DtLph5Z4.js → signature-request-opW0fQ5P.js} +1032 -1016
  6. package/dist/_chunks/signature-request-opW0fQ5P.js.map +1 -0
  7. package/dist/_chunks/{signed-out-frame-Bs_LSPWe.js → signed-out-frame-CPow3aCZ.js} +2 -2
  8. package/dist/_chunks/{signed-out-frame-Bs_LSPWe.js.map → signed-out-frame-CPow3aCZ.js.map} +1 -1
  9. package/dist/agent-catalog.json +2 -2
  10. package/dist/agent-i18n/en.json +1 -1
  11. package/dist/components/public-footer/index.js +1 -1
  12. package/dist/components/reviews-panel/index.js +1 -1
  13. package/dist/components/reviews-panel/reviews-panel.d.ts +7 -0
  14. package/dist/components/reviews-panel/reviews-panel.d.ts.map +1 -1
  15. package/dist/i18n/locales/ar.d.ts +3 -0
  16. package/dist/i18n/locales/ar.d.ts.map +1 -1
  17. package/dist/i18n/locales/ar.js +3 -0
  18. package/dist/i18n/locales/ar.js.map +1 -1
  19. package/dist/i18n/locales/de.d.ts +3 -0
  20. package/dist/i18n/locales/de.d.ts.map +1 -1
  21. package/dist/i18n/locales/de.js +3 -0
  22. package/dist/i18n/locales/de.js.map +1 -1
  23. package/dist/i18n/locales/el.d.ts +3 -0
  24. package/dist/i18n/locales/el.d.ts.map +1 -1
  25. package/dist/i18n/locales/el.js +3 -0
  26. package/dist/i18n/locales/el.js.map +1 -1
  27. package/dist/i18n/locales/en.d.ts +3 -0
  28. package/dist/i18n/locales/en.d.ts.map +1 -1
  29. package/dist/i18n/locales/en.js +3 -0
  30. package/dist/i18n/locales/en.js.map +1 -1
  31. package/dist/i18n/locales/es.d.ts +3 -0
  32. package/dist/i18n/locales/es.d.ts.map +1 -1
  33. package/dist/i18n/locales/es.js +3 -0
  34. package/dist/i18n/locales/es.js.map +1 -1
  35. package/dist/i18n/locales/fr.d.ts +3 -0
  36. package/dist/i18n/locales/fr.d.ts.map +1 -1
  37. package/dist/i18n/locales/fr.js +3 -0
  38. package/dist/i18n/locales/fr.js.map +1 -1
  39. package/dist/i18n/locales/hi.d.ts +3 -0
  40. package/dist/i18n/locales/hi.d.ts.map +1 -1
  41. package/dist/i18n/locales/hi.js +3 -0
  42. package/dist/i18n/locales/hi.js.map +1 -1
  43. package/dist/i18n/locales/it.d.ts +3 -0
  44. package/dist/i18n/locales/it.d.ts.map +1 -1
  45. package/dist/i18n/locales/it.js +3 -0
  46. package/dist/i18n/locales/it.js.map +1 -1
  47. package/dist/i18n/locales/ja.d.ts +3 -0
  48. package/dist/i18n/locales/ja.d.ts.map +1 -1
  49. package/dist/i18n/locales/ja.js +3 -0
  50. package/dist/i18n/locales/ja.js.map +1 -1
  51. package/dist/i18n/locales/nl.d.ts +3 -0
  52. package/dist/i18n/locales/nl.d.ts.map +1 -1
  53. package/dist/i18n/locales/nl.js +3 -0
  54. package/dist/i18n/locales/nl.js.map +1 -1
  55. package/dist/i18n/locales/pl.d.ts +3 -0
  56. package/dist/i18n/locales/pl.d.ts.map +1 -1
  57. package/dist/i18n/locales/pl.js +3 -0
  58. package/dist/i18n/locales/pl.js.map +1 -1
  59. package/dist/i18n/locales/pt.d.ts +3 -0
  60. package/dist/i18n/locales/pt.d.ts.map +1 -1
  61. package/dist/i18n/locales/pt.js +3 -0
  62. package/dist/i18n/locales/pt.js.map +1 -1
  63. package/dist/i18n/locales/ro.d.ts +3 -0
  64. package/dist/i18n/locales/ro.d.ts.map +1 -1
  65. package/dist/i18n/locales/ro.js +3 -0
  66. package/dist/i18n/locales/ro.js.map +1 -1
  67. package/dist/i18n/locales/ru.d.ts +3 -0
  68. package/dist/i18n/locales/ru.d.ts.map +1 -1
  69. package/dist/i18n/locales/ru.js +3 -0
  70. package/dist/i18n/locales/ru.js.map +1 -1
  71. package/dist/i18n/locales/sq.d.ts +3 -0
  72. package/dist/i18n/locales/sq.d.ts.map +1 -1
  73. package/dist/i18n/locales/sq.js +3 -0
  74. package/dist/i18n/locales/sq.js.map +1 -1
  75. package/dist/i18n/locales/sv.d.ts +3 -0
  76. package/dist/i18n/locales/sv.d.ts.map +1 -1
  77. package/dist/i18n/locales/sv.js +3 -0
  78. package/dist/i18n/locales/sv.js.map +1 -1
  79. package/dist/i18n/locales/tr.d.ts +3 -0
  80. package/dist/i18n/locales/tr.d.ts.map +1 -1
  81. package/dist/i18n/locales/tr.js +3 -0
  82. package/dist/i18n/locales/tr.js.map +1 -1
  83. package/dist/i18n/locales/zh.d.ts +3 -0
  84. package/dist/i18n/locales/zh.d.ts.map +1 -1
  85. package/dist/i18n/locales/zh.js +3 -0
  86. package/dist/i18n/locales/zh.js.map +1 -1
  87. package/dist/index.js +4 -4
  88. package/dist/locales/ar.json +3 -0
  89. package/dist/locales/de.json +3 -0
  90. package/dist/locales/el.json +3 -0
  91. package/dist/locales/en.json +3 -0
  92. package/dist/locales/es.json +3 -0
  93. package/dist/locales/fr.json +3 -0
  94. package/dist/locales/hi.json +3 -0
  95. package/dist/locales/it.json +3 -0
  96. package/dist/locales/ja.json +3 -0
  97. package/dist/locales/nl.json +3 -0
  98. package/dist/locales/pl.json +3 -0
  99. package/dist/locales/pt.json +3 -0
  100. package/dist/locales/ro.json +3 -0
  101. package/dist/locales/ru.json +3 -0
  102. package/dist/locales/sq.json +3 -0
  103. package/dist/locales/sv.json +3 -0
  104. package/dist/locales/tr.json +3 -0
  105. package/dist/locales/zh.json +3 -0
  106. package/dist/patterns/signature-request/index.js +1 -1
  107. package/dist/patterns/signature-request/required-documents.d.ts +7 -3
  108. package/dist/patterns/signature-request/required-documents.d.ts.map +1 -1
  109. package/dist/patterns/signature-request/signature-request.d.ts +27 -21
  110. package/dist/patterns/signature-request/signature-request.d.ts.map +1 -1
  111. package/dist/patterns/signed-out-frame/index.js +1 -1
  112. package/package.json +1 -1
  113. package/dist/_chunks/public-footer-3Jy1zHSs.js.map +0 -1
  114. package/dist/_chunks/reviews-panel-CtrwZOUS.js.map +0 -1
  115. package/dist/_chunks/signature-request-DtLph5Z4.js.map +0 -1
@@ -2,7 +2,7 @@ import { jsxs as d, jsx as e, Fragment as v } from "react/jsx-runtime";
2
2
  import { forwardRef as y } from "react";
3
3
  import { c as H } from "./index-D2ZczOXr.js";
4
4
  import { A as S } from "./app-frame-DUPEwu4E.js";
5
- import { P as x } from "./public-footer-3Jy1zHSs.js";
5
+ import { P as x } from "./public-footer-DGjLTtNK.js";
6
6
  import { useTranslation as b } from "react-i18next";
7
7
  import { B as u } from "./button-DohK_Ak_.js";
8
8
  import { H as N, g as O, f as F, a as z, d as B } from "./header-l_B8MV0g.js";
@@ -168,4 +168,4 @@ export {
168
168
  V as S,
169
169
  w as a
170
170
  };
171
- //# sourceMappingURL=signed-out-frame-Bs_LSPWe.js.map
171
+ //# sourceMappingURL=signed-out-frame-CPow3aCZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signed-out-frame-Bs_LSPWe.js","sources":["../../src/patterns/signed-out-frame/signed-out-header.tsx","../../src/patterns/signed-out-frame/signed-out-frame.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* SignedOutHeader — the app's Header as a visitor sees it before */\n/* sign-in: the brand, the skip link and the way to the other */\n/* signed-out pages. No search, inbox or account menu. */\n/* */\n/* A link shows only when the host gives its address. On the login page */\n/* that is the two ways to register; on a registration page it is the */\n/* way back to the login. */\n/* -------------------------------------------------------------------- */\n\nimport { forwardRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { LogIn, Stethoscope, User } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '../../components/button';\nimport {\n Header,\n HeaderBrand,\n HeaderEnd,\n HeaderSkipLink,\n HeaderStart,\n} from '../../components/header';\nimport { Logo } from '../../components/logo';\nimport { isSafeHref } from '../../components/_shared/safe-href';\n\nexport interface SignedOutHeaderProps {\n /** Where the brand leads. Default `/`. */\n homeHref?: string;\n /** The id of the `<main>` the skip link lands on. Default\n * `main-content`, `AppFrame`'s own default. */\n mainId?: string;\n /**\n * Adds \"Sign in\". For a registration page. A path on the same site, or\n * an address written in full (`https://…`); anything else shows no\n * link. The same rule holds for the two addresses below.\n */\n loginHref?: string;\n /** Adds \"Register as a doctor\". For the login page. */\n registerDoctorHref?: string;\n /** Adds \"Register as a patient\". For the login page. */\n registerPatientHref?: string;\n}\n\n// The header's buttons are the header turned inside out: the bar's ink as\n// the fill, the bar's own colour (`--header-brand-surface`) as the text.\n// Light: white with violet text (4.75:1). Dark: the bar is the page's navy,\n// so the text is navy too; fuchsia on the cream fill would be 2.75:1.\n//\n// Hover tints the fill with the bar. In the light theme that alone would\n// drop the violet text to 4.07:1, so the text deepens with it (4.76:1):\n// `--header-brand-surface-hover` is --primary-hover in light and stays the\n// navy in dark. The buttons carry no `--secondary-border` edge: the fill is\n// already the bar's ink.\n//\n// A small button is 32px tall from `sm` up and drops its wider hit box\n// there. These keep the hit box at every width: the bar is 64px tall, and\n// a tablet is touched as much as a phone.\nconst linksVariants = cva(\n 'ds:items-center ds:gap-[var(--spacing-sm)] ds:[--secondary:var(--header-foreground)] ds:[--secondary-hover:color-mix(in_srgb,var(--header-foreground)_88%,transparent)] ds:[--secondary-border:transparent] ds:[--secondary-foreground:var(--header-brand-surface,var(--primary))] ds:[&_a:hover]:[--secondary-foreground:var(--header-brand-surface-hover,var(--primary-hover))] ds:[&_a]:sm:before:block',\n {\n variants: {\n /** Labelled buttons from `md` up; icons only below it. */\n show: {\n wide: 'ds:hidden ds:md:inline-flex',\n narrow: 'ds:inline-flex ds:md:hidden',\n always: 'ds:inline-flex',\n },\n },\n defaultVariants: { show: 'always' },\n },\n);\n\n/** An address a link may use, or nothing. */\nconst linkTo = (href: string | undefined): string | undefined =>\n href && isSafeHref(href) ? href : undefined;\n\ninterface RegisterLinksProps {\n doctorHref: string | undefined;\n patientHref: string | undefined;\n hideLabel?: boolean;\n}\n\n/** The ways to open an account. Links, not buttons: each goes to its own\n * registration page. */\nfunction RegisterLinks({\n doctorHref,\n patientHref,\n hideLabel = false,\n}: RegisterLinksProps) {\n const { t } = useTranslation('ui');\n return (\n <>\n {doctorHref && (\n <Button\n asChild\n intent=\"secondary\"\n size=\"sm\"\n startIcon={<Stethoscope />}\n hideLabel={hideLabel}\n >\n <a href={doctorHref} data-action=\"register-doctor\">\n {t('signedOutHeader.registerDoctor')}\n </a>\n </Button>\n )}\n {patientHref && (\n <Button\n asChild\n intent=\"secondary\"\n size=\"sm\"\n startIcon={<User />}\n hideLabel={hideLabel}\n >\n <a href={patientHref} data-action=\"register-patient\">\n {t('signedOutHeader.registerPatient')}\n </a>\n </Button>\n )}\n </>\n );\n}\n\n/**\n * The signed-out header. `SignedOutFrame` renders it; use it on its own\n * only with a frame of your own.\n */\nexport const SignedOutHeader = forwardRef<HTMLElement, SignedOutHeaderProps>(\n (\n {\n homeHref = '/',\n mainId = 'main-content',\n loginHref,\n registerDoctorHref,\n registerPatientHref,\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n const loginLink = linkTo(loginHref);\n const doctorLink = linkTo(registerDoctorHref);\n const patientLink = linkTo(registerPatientHref);\n const hasRegister = Boolean(doctorLink || patientLink);\n\n return (\n <Header ref={ref}>\n <HeaderStart>\n <HeaderSkipLink href={`#${mainId}`} />\n <HeaderBrand\n href={linkTo(homeHref) ?? '/'}\n logo={<Logo variant=\"monochrome\" size=\"md\" decorative />}\n aria-label={t('publicHeader.homeLabel')}\n />\n </HeaderStart>\n {(loginLink || hasRegister) && (\n <HeaderEnd>\n {/* One short label: it keeps its text on a phone. */}\n {loginLink && (\n <div className={linksVariants()}>\n <Button\n asChild\n intent=\"secondary\"\n size=\"sm\"\n startIcon={<LogIn />}\n >\n <a href={loginLink} data-action=\"login\">\n {t('signedOutHeader.login')}\n </a>\n </Button>\n </div>\n )}\n {/* Two labelled buttons and the brand do not fit a phone, so\n below `md` each folds to its icon and keeps its name for a\n screen reader. */}\n {hasRegister && (\n <>\n <div className={linksVariants({ show: 'wide' })}>\n <RegisterLinks\n doctorHref={doctorLink}\n patientHref={patientLink}\n />\n </div>\n <div className={linksVariants({ show: 'narrow' })}>\n <RegisterLinks\n doctorHref={doctorLink}\n patientHref={patientLink}\n hideLabel\n />\n </div>\n </>\n )}\n </HeaderEnd>\n )}\n </Header>\n );\n },\n);\nSignedOutHeader.displayName = 'SignedOutHeader';\n","/* -------------------------------------------------------------------- */\n/* SignedOutFrame — the app frame as a visitor sees it before sign-in. */\n/* */\n/* The signed-out header on top, no sidebar, the page's content centred */\n/* on the app's canvas, and the minimal footer with the privacy policy */\n/* and the terms. The login, forgot-password and registration pages */\n/* wear it, so they read as one family. */\n/* -------------------------------------------------------------------- */\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { AppFrame } from '../../components/app-frame';\nimport {\n PublicFooter,\n type LegalUrlOverrides,\n} from '../../components/public-footer';\nimport {\n SignedOutHeader,\n type SignedOutHeaderProps,\n} from './signed-out-header';\n\nexport interface SignedOutFrameProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>,\n SignedOutHeaderProps {\n /** The page: a card such as `LoginForm`, centred in `<main>`. */\n children: ReactNode;\n /** Shows the footer with the privacy policy and the terms. Default\n * true. */\n showFooter?: boolean;\n /**\n * Adds the footer's copyright line: the year, the company's registered\n * name and its VAT number. Default false.\n */\n showCopyright?: boolean;\n /** The site the footer's legal links lead to. Default: the footer's\n * own, `https://www.alfadocs.com`. */\n marketingBaseUrl?: string;\n /** The footer's legal links, per language, where they differ from its\n * defaults. */\n legalUrlOverrides?: LegalUrlOverrides;\n}\n\n// The wrapper is only a marker: the frame inside it is the box. It has\n// no box of its own (`display: contents`), so a `className` that sizes or\n// spaces it does nothing, and a ref to it measures nothing.\nconst signedOutFrameVariants = cva('ds:contents');\n\n/**\n * The signed-out app frame. It is one viewport tall: the header and the\n * footer stay put and the content scrolls between them.\n */\nexport const SignedOutFrame = forwardRef<HTMLDivElement, SignedOutFrameProps>(\n (\n {\n children,\n homeHref,\n mainId = 'main-content',\n loginHref,\n registerDoctorHref,\n registerPatientHref,\n showFooter = true,\n showCopyright = false,\n marketingBaseUrl,\n legalUrlOverrides,\n className,\n ...rest\n },\n ref,\n ) => (\n <div\n ref={ref}\n {...rest}\n data-component=\"signed-out-frame\"\n className={signedOutFrameVariants({ className })}\n >\n {/* `<main>` is a size container, so the content can be exactly as\n tall as the space between the header and the footer (`100cqh`)\n and centre in it, whatever height the footer wraps to on a\n phone. */}\n <AppFrame\n header={\n <SignedOutHeader\n homeHref={homeHref}\n mainId={mainId}\n loginHref={loginHref}\n registerDoctorHref={registerDoctorHref}\n registerPatientHref={registerPatientHref}\n />\n }\n sidebar={null}\n footer={\n showFooter ? (\n <PublicFooter\n variant=\"minimal\"\n showCopyright={showCopyright}\n marketingBaseUrl={marketingBaseUrl}\n legalUrlOverrides={legalUrlOverrides}\n />\n ) : undefined\n }\n mainId={mainId}\n padded={false}\n mainClassName=\"ds:bg-[color:var(--app-shell-background)] ds:[container-type:size]\"\n >\n <div className=\"ds:flex ds:min-h-[100cqh] ds:w-full ds:items-center ds:justify-center ds:p-0 ds:sm:p-[var(--spacing-lg)]\">\n {children}\n </div>\n </AppFrame>\n </div>\n ),\n);\nSignedOutFrame.displayName = 'SignedOutFrame';\n"],"names":["linksVariants","cva","linkTo","href","isSafeHref","RegisterLinks","doctorHref","patientHref","hideLabel","t","useTranslation","jsxs","Fragment","jsx","Button","Stethoscope","User","SignedOutHeader","forwardRef","homeHref","mainId","loginHref","registerDoctorHref","registerPatientHref","ref","loginLink","doctorLink","patientLink","hasRegister","Header","HeaderStart","HeaderSkipLink","HeaderBrand","Logo","HeaderEnd","LogIn","signedOutFrameVariants","SignedOutFrame","children","showFooter","showCopyright","marketingBaseUrl","legalUrlOverrides","className","rest","AppFrame","PublicFooter"],"mappings":"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"}
1
+ {"version":3,"file":"signed-out-frame-CPow3aCZ.js","sources":["../../src/patterns/signed-out-frame/signed-out-header.tsx","../../src/patterns/signed-out-frame/signed-out-frame.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* SignedOutHeader — the app's Header as a visitor sees it before */\n/* sign-in: the brand, the skip link and the way to the other */\n/* signed-out pages. No search, inbox or account menu. */\n/* */\n/* A link shows only when the host gives its address. On the login page */\n/* that is the two ways to register; on a registration page it is the */\n/* way back to the login. */\n/* -------------------------------------------------------------------- */\n\nimport { forwardRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { LogIn, Stethoscope, User } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '../../components/button';\nimport {\n Header,\n HeaderBrand,\n HeaderEnd,\n HeaderSkipLink,\n HeaderStart,\n} from '../../components/header';\nimport { Logo } from '../../components/logo';\nimport { isSafeHref } from '../../components/_shared/safe-href';\n\nexport interface SignedOutHeaderProps {\n /** Where the brand leads. Default `/`. */\n homeHref?: string;\n /** The id of the `<main>` the skip link lands on. Default\n * `main-content`, `AppFrame`'s own default. */\n mainId?: string;\n /**\n * Adds \"Sign in\". For a registration page. A path on the same site, or\n * an address written in full (`https://…`); anything else shows no\n * link. The same rule holds for the two addresses below.\n */\n loginHref?: string;\n /** Adds \"Register as a doctor\". For the login page. */\n registerDoctorHref?: string;\n /** Adds \"Register as a patient\". For the login page. */\n registerPatientHref?: string;\n}\n\n// The header's buttons are the header turned inside out: the bar's ink as\n// the fill, the bar's own colour (`--header-brand-surface`) as the text.\n// Light: white with violet text (4.75:1). Dark: the bar is the page's navy,\n// so the text is navy too; fuchsia on the cream fill would be 2.75:1.\n//\n// Hover tints the fill with the bar. In the light theme that alone would\n// drop the violet text to 4.07:1, so the text deepens with it (4.76:1):\n// `--header-brand-surface-hover` is --primary-hover in light and stays the\n// navy in dark. The buttons carry no `--secondary-border` edge: the fill is\n// already the bar's ink.\n//\n// A small button is 32px tall from `sm` up and drops its wider hit box\n// there. These keep the hit box at every width: the bar is 64px tall, and\n// a tablet is touched as much as a phone.\nconst linksVariants = cva(\n 'ds:items-center ds:gap-[var(--spacing-sm)] ds:[--secondary:var(--header-foreground)] ds:[--secondary-hover:color-mix(in_srgb,var(--header-foreground)_88%,transparent)] ds:[--secondary-border:transparent] ds:[--secondary-foreground:var(--header-brand-surface,var(--primary))] ds:[&_a:hover]:[--secondary-foreground:var(--header-brand-surface-hover,var(--primary-hover))] ds:[&_a]:sm:before:block',\n {\n variants: {\n /** Labelled buttons from `md` up; icons only below it. */\n show: {\n wide: 'ds:hidden ds:md:inline-flex',\n narrow: 'ds:inline-flex ds:md:hidden',\n always: 'ds:inline-flex',\n },\n },\n defaultVariants: { show: 'always' },\n },\n);\n\n/** An address a link may use, or nothing. */\nconst linkTo = (href: string | undefined): string | undefined =>\n href && isSafeHref(href) ? href : undefined;\n\ninterface RegisterLinksProps {\n doctorHref: string | undefined;\n patientHref: string | undefined;\n hideLabel?: boolean;\n}\n\n/** The ways to open an account. Links, not buttons: each goes to its own\n * registration page. */\nfunction RegisterLinks({\n doctorHref,\n patientHref,\n hideLabel = false,\n}: RegisterLinksProps) {\n const { t } = useTranslation('ui');\n return (\n <>\n {doctorHref && (\n <Button\n asChild\n intent=\"secondary\"\n size=\"sm\"\n startIcon={<Stethoscope />}\n hideLabel={hideLabel}\n >\n <a href={doctorHref} data-action=\"register-doctor\">\n {t('signedOutHeader.registerDoctor')}\n </a>\n </Button>\n )}\n {patientHref && (\n <Button\n asChild\n intent=\"secondary\"\n size=\"sm\"\n startIcon={<User />}\n hideLabel={hideLabel}\n >\n <a href={patientHref} data-action=\"register-patient\">\n {t('signedOutHeader.registerPatient')}\n </a>\n </Button>\n )}\n </>\n );\n}\n\n/**\n * The signed-out header. `SignedOutFrame` renders it; use it on its own\n * only with a frame of your own.\n */\nexport const SignedOutHeader = forwardRef<HTMLElement, SignedOutHeaderProps>(\n (\n {\n homeHref = '/',\n mainId = 'main-content',\n loginHref,\n registerDoctorHref,\n registerPatientHref,\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n const loginLink = linkTo(loginHref);\n const doctorLink = linkTo(registerDoctorHref);\n const patientLink = linkTo(registerPatientHref);\n const hasRegister = Boolean(doctorLink || patientLink);\n\n return (\n <Header ref={ref}>\n <HeaderStart>\n <HeaderSkipLink href={`#${mainId}`} />\n <HeaderBrand\n href={linkTo(homeHref) ?? '/'}\n logo={<Logo variant=\"monochrome\" size=\"md\" decorative />}\n aria-label={t('publicHeader.homeLabel')}\n />\n </HeaderStart>\n {(loginLink || hasRegister) && (\n <HeaderEnd>\n {/* One short label: it keeps its text on a phone. */}\n {loginLink && (\n <div className={linksVariants()}>\n <Button\n asChild\n intent=\"secondary\"\n size=\"sm\"\n startIcon={<LogIn />}\n >\n <a href={loginLink} data-action=\"login\">\n {t('signedOutHeader.login')}\n </a>\n </Button>\n </div>\n )}\n {/* Two labelled buttons and the brand do not fit a phone, so\n below `md` each folds to its icon and keeps its name for a\n screen reader. */}\n {hasRegister && (\n <>\n <div className={linksVariants({ show: 'wide' })}>\n <RegisterLinks\n doctorHref={doctorLink}\n patientHref={patientLink}\n />\n </div>\n <div className={linksVariants({ show: 'narrow' })}>\n <RegisterLinks\n doctorHref={doctorLink}\n patientHref={patientLink}\n hideLabel\n />\n </div>\n </>\n )}\n </HeaderEnd>\n )}\n </Header>\n );\n },\n);\nSignedOutHeader.displayName = 'SignedOutHeader';\n","/* -------------------------------------------------------------------- */\n/* SignedOutFrame — the app frame as a visitor sees it before sign-in. */\n/* */\n/* The signed-out header on top, no sidebar, the page's content centred */\n/* on the app's canvas, and the minimal footer with the privacy policy */\n/* and the terms. The login, forgot-password and registration pages */\n/* wear it, so they read as one family. */\n/* -------------------------------------------------------------------- */\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { AppFrame } from '../../components/app-frame';\nimport {\n PublicFooter,\n type LegalUrlOverrides,\n} from '../../components/public-footer';\nimport {\n SignedOutHeader,\n type SignedOutHeaderProps,\n} from './signed-out-header';\n\nexport interface SignedOutFrameProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>,\n SignedOutHeaderProps {\n /** The page: a card such as `LoginForm`, centred in `<main>`. */\n children: ReactNode;\n /** Shows the footer with the privacy policy and the terms. Default\n * true. */\n showFooter?: boolean;\n /**\n * Adds the footer's copyright line: the year, the company's registered\n * name and its VAT number. Default false.\n */\n showCopyright?: boolean;\n /** The site the footer's legal links lead to. Default: the footer's\n * own, `https://www.alfadocs.com`. */\n marketingBaseUrl?: string;\n /** The footer's legal links, per language, where they differ from its\n * defaults. */\n legalUrlOverrides?: LegalUrlOverrides;\n}\n\n// The wrapper is only a marker: the frame inside it is the box. It has\n// no box of its own (`display: contents`), so a `className` that sizes or\n// spaces it does nothing, and a ref to it measures nothing.\nconst signedOutFrameVariants = cva('ds:contents');\n\n/**\n * The signed-out app frame. It is one viewport tall: the header and the\n * footer stay put and the content scrolls between them.\n */\nexport const SignedOutFrame = forwardRef<HTMLDivElement, SignedOutFrameProps>(\n (\n {\n children,\n homeHref,\n mainId = 'main-content',\n loginHref,\n registerDoctorHref,\n registerPatientHref,\n showFooter = true,\n showCopyright = false,\n marketingBaseUrl,\n legalUrlOverrides,\n className,\n ...rest\n },\n ref,\n ) => (\n <div\n ref={ref}\n {...rest}\n data-component=\"signed-out-frame\"\n className={signedOutFrameVariants({ className })}\n >\n {/* `<main>` is a size container, so the content can be exactly as\n tall as the space between the header and the footer (`100cqh`)\n and centre in it, whatever height the footer wraps to on a\n phone. */}\n <AppFrame\n header={\n <SignedOutHeader\n homeHref={homeHref}\n mainId={mainId}\n loginHref={loginHref}\n registerDoctorHref={registerDoctorHref}\n registerPatientHref={registerPatientHref}\n />\n }\n sidebar={null}\n footer={\n showFooter ? (\n <PublicFooter\n variant=\"minimal\"\n showCopyright={showCopyright}\n marketingBaseUrl={marketingBaseUrl}\n legalUrlOverrides={legalUrlOverrides}\n />\n ) : undefined\n }\n mainId={mainId}\n padded={false}\n mainClassName=\"ds:bg-[color:var(--app-shell-background)] ds:[container-type:size]\"\n >\n <div className=\"ds:flex ds:min-h-[100cqh] ds:w-full ds:items-center ds:justify-center ds:p-0 ds:sm:p-[var(--spacing-lg)]\">\n {children}\n </div>\n </AppFrame>\n </div>\n ),\n);\nSignedOutFrame.displayName = 'SignedOutFrame';\n"],"names":["linksVariants","cva","linkTo","href","isSafeHref","RegisterLinks","doctorHref","patientHref","hideLabel","t","useTranslation","jsxs","Fragment","jsx","Button","Stethoscope","User","SignedOutHeader","forwardRef","homeHref","mainId","loginHref","registerDoctorHref","registerPatientHref","ref","loginLink","doctorLink","patientLink","hasRegister","Header","HeaderStart","HeaderSkipLink","HeaderBrand","Logo","HeaderEnd","LogIn","signedOutFrameVariants","SignedOutFrame","children","showFooter","showCopyright","marketingBaseUrl","legalUrlOverrides","className","rest","AppFrame","PublicFooter"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "1.108.0",
3
+ "packageVersion": "1.110.0",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -23503,7 +23503,7 @@
23503
23503
  {
23504
23504
  "name": "manage_signer_roster",
23505
23505
  "safety": "write",
23506
- "description": "Build the patient-side signer roster: pick who signs in each row (the patient or their configured signee, e.g. a legal guardian), add a second signer up to the cap, or remove a row. People already on the roster are excluded from the other rows; set_value with one of them, or anyone not offered in that row, leaves the row unchanged. In required documents mode the roster signs the whole batch: the main signer (row data-signer-role=\"main\"), then at most one second signee (data-signer-role=\"second\", a group named Second signee). The second signee is offered only when every listed item is a document that can carry a second signature (anamnesis interviews never can), the main signer's channel is on this device (the batch channel with channelMode batch, else the main signer's own row), and the main signer is a registered signee, not the patient (isPatient); otherwise Add signer is disabled and a visible line says why. The patient is never offered as the second signee. Changing the main signer removes the second signee, announced via a live region. Moving the main signer's channel off this device only hides them (they are not submitted) and announces why; back on this device they return. Per signer, the second signee has their own channel beside their name. A second signee who is the main signer again, is no longer on offer, or cannot receive their own channel (the batch channel in batch mode) shows a message under their row (data-note=\"second-signee-issue\") and keeps Request signature disabled. When the host marks the patient (the isPatient option) as under 18 (isMinor), a warning under the Patient signers heading (data-note=\"minor-patient\", data-warning addSignee, selectSignee, selectSecondSignee or addSecondSignee) gives platform's advice from the roster: with no registered signee on the roster, add a parent or guardian (none registered) or choose one (one registered); with one signee and a free second seat, have the other parent or guardian sign too (another registered) or add them (none). With two signees, or no second seat, it says nothing. Any other person marked isMinor gets a general reminder in their own row (data-note=\"minor-signer\"). Neither blocks the request, and the kit does not compute age. A link-style Add signatory button calls the host's onAddSignee: inside the minor patient warning when it asks to add someone, and in required documents mode under the Patient signers heading while the patient has no registered signee (no signer option without isPatient), only once. Add signatory is user-driven with no adapter action, and the host adds the new person to signerOptions. With signerAddAction createSignee, the button beside the Patient signers heading is Add signatory (data-action=\"create-signee\") and calls onAddSignee instead of adding a row; the minor patient warning then has no button. With secondSigneeSlot (request form, maxSigners 2 or more), an Add signer button beside the heading (data-action=\"add-second-signee\") opens a line (data-second-signee-slot) with a select named Second signee; it shows only while one can be seated (a registered signee is the main signer and another is registered). With secondSigneeSlot or signerAddAction createSignee, every signer dropdown ends with a New signatory option that calls onAddSignee (the host's create-signee page) and leaves the row unchanged. New signatory is user-driven; set_value refuses it. The line offers registered signees only and has a Remove signer button that takes it away again; picking one seats the second signee (data-signer-role=\"second\"), whose Remove signer also takes the line away. While the patient is the main signer a visible line under the heading says why there is no second signee (data-note=\"second-signee-hint\"). A new main signer clears the second signee, announced via a live region.",
23506
+ "description": "Build the patient-side signer roster: pick who signs in each row (the patient or their configured signee, e.g. a legal guardian), add a second signer up to the cap, or remove a row. People already on the roster are excluded from the other rows; set_value with one of them, or anyone not offered in that row, leaves the row unchanged. In required documents mode the roster signs the whole batch: the main signer (row data-signer-role=\"main\"), then at most one second signee (data-signer-role=\"second\", a group named Second signee). The second signee is offered only when every listed item is a document that can carry a second signature (anamnesis interviews never can), the main signer's channel is on this device (the batch channel with channelMode batch, else the main signer's own row), and the main signer is a registered signee, not the patient (isPatient); otherwise a visible line says why (data-note=\"second-signee-hint\") and Add signer is disabled, or absent with secondSigneeSlot. With maxSigners 1 nothing about a second signee shows. The patient is never offered as the second signee. Changing the main signer removes the second signee, announced via a live region. Moving the main signer's channel off this device only hides them (they are not submitted) and announces why; back on this device they return, announced via a live region. Per signer, the second signee has their own channel beside their name. A second signee who is the main signer again, is no longer on offer, or cannot receive their own channel (the batch channel in batch mode) shows a message under their row (data-note=\"second-signee-issue\") and keeps Request signature disabled. When the host marks the patient (the isPatient option) as under 18 (isMinor), a warning under the Patient signers heading (data-note=\"minor-patient\", data-warning addSignee, selectSignee, selectSecondSignee or addSecondSignee) gives platform's advice from the roster: with no registered signee on the roster, add a parent or guardian (none registered) or choose one (one registered); with one signee and a free second seat, have the other parent or guardian sign too (another registered) or add them (none). With two signees, or no second seat, it says nothing. Any other person marked isMinor gets a general reminder in their own row (data-note=\"minor-signer\"). Neither blocks the request, and the kit does not compute age. A link-style Add signatory button calls the host's onAddSignee: inside the minor patient warning when it asks to add someone, and in required documents mode under the Patient signers heading while the patient has no registered signee (no signer option without isPatient), only once, unless secondSigneeSlot is on. Add signatory is user-driven with no adapter action, and the host adds the new person to signerOptions. With signerAddAction createSignee, the button beside the Patient signers heading is Add signatory (data-action=\"create-signee\") and calls onAddSignee instead of adding a row; the minor patient warning then has no button. With secondSigneeSlot (maxSigners 2 or more), an Add signer button beside the heading (data-action=\"add-second-signee\") opens a line (data-second-signee-slot) with a select named Second signee; it shows only while one can be seated (a registered signee is the main signer and another is registered, and in required documents mode the second signee rules allow one). With secondSigneeSlot, or signerAddAction createSignee outside required documents mode, every signer dropdown ends with a New signatory option that calls onAddSignee (the host's create-signee page) and leaves the row unchanged. New signatory is user-driven; set_value refuses it. The line offers registered signees only and has a Remove signer button that takes it away again; picking one seats the second signee (data-signer-role=\"second\"), whose Remove signer also takes the line away. While the patient is the main signer a visible line under the heading says why there is no second signee (data-note=\"second-signee-hint\"). A new main signer clears the second signee, announced via a live region.",
23507
23507
  "descriptionKey": "ui.agent.signatureRequest.workflows.manageSignerRoster",
23508
23508
  "uiActions": [
23509
23509
  "select.set_value"
@@ -2103,7 +2103,7 @@
2103
2103
  "shareSignature": "Share one signed document from its row's Share menu (menu id signature-share-<record id>): link, e-mail or WhatsApp, in that order. The host receives onShareSignature(id, 'link' | 'email' | 'whatsapp') and does the sharing. The host decides which targets a row offers: the record's shareTargets, else the modal's signatureShareTargets, else all three. The button shows only when the host passes that callback and the row has at least one target.",
2104
2104
  "deleteSignature": "Delete one signed document from its row's Delete button. It opens a confirmation, an alert dialog (dialog id signature-delete-<record id>) asking whether to delete this signed document, with the row's date under the question and Cancel and Delete. Only Delete calls onDeleteSignature(id); the host deletes and drops the record. Cancel, Esc or dialog.close / dialog.dismiss close it without deleting, and focus returns to the row's Delete button. Once the host drops the record, focus moves to the next row's first action (else the previous row's, else the line saying there are no signed versions) and a polite status says the signature was deleted. The button shows only when the host passes that callback.",
2105
2105
  "assignOperator": "Pick the operator who must counter-sign (or \"Assign later\" to leave the request unassigned). The operators are listed in host order, then \"Assign later\". An operator the host marks disabled shows greyed out with the host's reason under the name (the trigger is described by every greyed-out operator and reason) and cannot be picked; set_value refuses them. An operator the host marks deleted is listed only while they are the current value, and is never seeded. \"Assign to me\" claims it for the signed-in operator.",
2106
- "manageSignerRoster": "Build the patient-side signer roster: pick who signs in each row (the patient or their configured signee, e.g. a legal guardian), add a second signer up to the cap, or remove a row. People already on the roster are excluded from the other rows; set_value with one of them, or anyone not offered in that row, leaves the row unchanged. In required documents mode the roster signs the whole batch: the main signer (row data-signer-role=\"main\"), then at most one second signee (data-signer-role=\"second\", a group named Second signee). The second signee is offered only when every listed item is a document that can carry a second signature (anamnesis interviews never can), the main signer's channel is on this device (the batch channel with channelMode batch, else the main signer's own row), and the main signer is a registered signee, not the patient (isPatient); otherwise Add signer is disabled and a visible line says why. The patient is never offered as the second signee. Changing the main signer removes the second signee, announced via a live region. Moving the main signer's channel off this device only hides them (they are not submitted) and announces why; back on this device they return. Per signer, the second signee has their own channel beside their name. A second signee who is the main signer again, is no longer on offer, or cannot receive their own channel (the batch channel in batch mode) shows a message under their row (data-note=\"second-signee-issue\") and keeps Request signature disabled. When the host marks the patient (the isPatient option) as under 18 (isMinor), a warning under the Patient signers heading (data-note=\"minor-patient\", data-warning addSignee, selectSignee, selectSecondSignee or addSecondSignee) gives platform's advice from the roster: with no registered signee on the roster, add a parent or guardian (none registered) or choose one (one registered); with one signee and a free second seat, have the other parent or guardian sign too (another registered) or add them (none). With two signees, or no second seat, it says nothing. Any other person marked isMinor gets a general reminder in their own row (data-note=\"minor-signer\"). Neither blocks the request, and the kit does not compute age. A link-style Add signatory button calls the host's onAddSignee: inside the minor patient warning when it asks to add someone, and in required documents mode under the Patient signers heading while the patient has no registered signee (no signer option without isPatient), only once. Add signatory is user-driven with no adapter action, and the host adds the new person to signerOptions. With signerAddAction createSignee, the button beside the Patient signers heading is Add signatory (data-action=\"create-signee\") and calls onAddSignee instead of adding a row; the minor patient warning then has no button. With secondSigneeSlot (request form, maxSigners 2 or more), an Add signer button beside the heading (data-action=\"add-second-signee\") opens a line (data-second-signee-slot) with a select named Second signee; it shows only while one can be seated (a registered signee is the main signer and another is registered). With secondSigneeSlot or signerAddAction createSignee, every signer dropdown ends with a New signatory option that calls onAddSignee (the host's create-signee page) and leaves the row unchanged. New signatory is user-driven; set_value refuses it. The line offers registered signees only and has a Remove signer button that takes it away again; picking one seats the second signee (data-signer-role=\"second\"), whose Remove signer also takes the line away. While the patient is the main signer a visible line under the heading says why there is no second signee (data-note=\"second-signee-hint\"). A new main signer clears the second signee, announced via a live region.",
2106
+ "manageSignerRoster": "Build the patient-side signer roster: pick who signs in each row (the patient or their configured signee, e.g. a legal guardian), add a second signer up to the cap, or remove a row. People already on the roster are excluded from the other rows; set_value with one of them, or anyone not offered in that row, leaves the row unchanged. In required documents mode the roster signs the whole batch: the main signer (row data-signer-role=\"main\"), then at most one second signee (data-signer-role=\"second\", a group named Second signee). The second signee is offered only when every listed item is a document that can carry a second signature (anamnesis interviews never can), the main signer's channel is on this device (the batch channel with channelMode batch, else the main signer's own row), and the main signer is a registered signee, not the patient (isPatient); otherwise a visible line says why (data-note=\"second-signee-hint\") and Add signer is disabled, or absent with secondSigneeSlot. With maxSigners 1 nothing about a second signee shows. The patient is never offered as the second signee. Changing the main signer removes the second signee, announced via a live region. Moving the main signer's channel off this device only hides them (they are not submitted) and announces why; back on this device they return, announced via a live region. Per signer, the second signee has their own channel beside their name. A second signee who is the main signer again, is no longer on offer, or cannot receive their own channel (the batch channel in batch mode) shows a message under their row (data-note=\"second-signee-issue\") and keeps Request signature disabled. When the host marks the patient (the isPatient option) as under 18 (isMinor), a warning under the Patient signers heading (data-note=\"minor-patient\", data-warning addSignee, selectSignee, selectSecondSignee or addSecondSignee) gives platform's advice from the roster: with no registered signee on the roster, add a parent or guardian (none registered) or choose one (one registered); with one signee and a free second seat, have the other parent or guardian sign too (another registered) or add them (none). With two signees, or no second seat, it says nothing. Any other person marked isMinor gets a general reminder in their own row (data-note=\"minor-signer\"). Neither blocks the request, and the kit does not compute age. A link-style Add signatory button calls the host's onAddSignee: inside the minor patient warning when it asks to add someone, and in required documents mode under the Patient signers heading while the patient has no registered signee (no signer option without isPatient), only once, unless secondSigneeSlot is on. Add signatory is user-driven with no adapter action, and the host adds the new person to signerOptions. With signerAddAction createSignee, the button beside the Patient signers heading is Add signatory (data-action=\"create-signee\") and calls onAddSignee instead of adding a row; the minor patient warning then has no button. With secondSigneeSlot (maxSigners 2 or more), an Add signer button beside the heading (data-action=\"add-second-signee\") opens a line (data-second-signee-slot) with a select named Second signee; it shows only while one can be seated (a registered signee is the main signer and another is registered, and in required documents mode the second signee rules allow one). With secondSigneeSlot, or signerAddAction createSignee outside required documents mode, every signer dropdown ends with a New signatory option that calls onAddSignee (the host's create-signee page) and leaves the row unchanged. New signatory is user-driven; set_value refuses it. The line offers registered signees only and has a Remove signer button that takes it away again; picking one seats the second signee (data-signer-role=\"second\"), whose Remove signer also takes the line away. While the patient is the main signer a visible line under the heading says why there is no second signee (data-note=\"second-signee-hint\"). A new main signer clears the second signee, announced via a live region.",
2107
2107
  "chooseDeliveryChannel": "Choose how each signer's request is delivered in the channel dropdown beside their name, a select named Signature channel (one choice): SMS, e-mail, WhatsApp, signing on this device, or via QR (the signer scans a QR code the dialog shows in its QR step after the request; offered to every patient-side signer by default). Each signer row (data-signer-id) holds its dropdown, with the id signature-request-signer-channel-<row number>; the operator dropdown's id is signature-request-operator-channel. Each option carries data-option-id with the channel; set_value with a channel the dropdown does not offer or has disabled leaves the choice unchanged. A signer's available channels can hide any of these, Via QR included. A signer's unavailableChannels instead show a channel greyed out with the host's reason under it (e.g. SMS and WhatsApp with No mobile number): set_value refuses it, the row never falls back to it, and a signer with no channel left shows the reasons under the row and keeps Request signature disabled. When the host gives a greyed-out channel an actionHref, a link under the person (data-note=\"contact-actions\"), such as Add mobile number or Add e-mail address, leads to the host's page to fix it; in batch mode the main signer's links show under the batch channel select. They are plain links with no adapter action. On-device signers sign sequentially in roster order. The assigned operator has the same dropdown, named Operator signature channel, with SMS, e-mail, or on this device, WhatsApp only when the host rule lists it in operatorAvailableChannels (as platform does for operator-only documents), and never Via QR: the operator's own system-defined channel (defaultChannel, from their settings) arrives preselected and follows a newly picked operator, while a channel changed by hand is kept until the operator changes; the on-device option is enabled only while a patient signer also signs on this device (while disabled, its reason shows under the option and describes the trigger; an automatic fallback to the operator's default is announced via a live region when the last on-device patient row leaves). A host can replace that rule with resolveChannels: it receives the choices after every channel change (and on open) and returns the channels to use and to offer, e.g. the operator and the patient on this device together; set_value may then move another person's channel too (the operator or another signer), announced via the same live region. Channels are per signer by default, in the request form and in required documents mode. With channelMode batch there is no channel beside each name: one labelled Signature channel select (id signature-request-batch-channel) under the signers heading sets the channel for the whole roster, with SMS, e-mail, WhatsApp and Via QR offered when the main signer or the patient (isPatient) can receive them, greyed out only when neither can, and on this device always offered. It starts on e-mail, or SMS when the main signer is the patient and can receive it, unless the host passes initialBatchChannel; in required documents mode changing the main signer returns it to that default (initialBatchChannel is read only on open), announced via the live region. resolveChannels receives the batch channel as every signer's channel and moves the batch through the main signer's returned channel. In required documents mode with showOperatorChannels, each item with an assigned operator also has that operator's channel select (SMS, e-mail or on this device), named Operator signature channel for <item name> with the id signature-request-item-operator-channel-<item id>; it starts on the operator's defaultChannel and follows a newly picked operator (Assign to me included), keeping a channel changed by hand until then. Items on Assign later have none. With batchChannelPlacement inline, the batch select (same id) sits in the main signer's row instead of under the heading, and any other signer shows the batch channel as read-only text (data-note=\"batch-channel\"). With linkOnDevice, the operator signs on this device exactly when the patient side does: set_value On this device on the operator's channel also moves the main signer (or the batch) there, while the patient side is on this device the operator's other channels are disabled with the reason, and when it leaves the operator returns to their default, each announced via the live region.",
2108
2108
  "waiveOtp": "Toggle a signer's on-device OTP waiver. Waiving OTP lowers the evidentiary value of that signature; the pattern surfaces a warning alert while waived. With channelMode batch there is one switch for the whole roster (Do not require OTP from the patient), shown only while the batch channel is on this device: it starts on when the patient cannot receive SMS, whoever the main signer is, and is on and disabled when the main signer is the patient and cannot receive SMS. The choice resets when the batch channel changes. Its warning (batchOtpWarning) is one batch-level alert outside every signer row; as on platform it shows while the waiver is on, and on every channel while it is forced. Per signer in required documents mode, the main signer's own switch follows the same rules (starts on, or on and disabled, described by the warning) and resets when that row's channel changes; other rows are the user's choice.",
2109
2109
  "requestSignature": "Send the signature request. Notifies every roster signer over their selected channel and hands the submission to the host. With confirmRecipients, when anyone is reached by SMS, e-mail or WhatsApp, Request signature first shows the recipient check (see confirm_recipients) and nothing is handed over until Send. When any signer chose Via QR the dialog stays open and moves to its QR step. With channelMode batch the submission carries signMode (the batch channel, also on every signer). In required documents mode it also carries operatorAssignments (item id to operator id, null for assign later), requiredItemIds and, with showOperatorChannels, operatorChannels (item id to the operator's channel, for assigned items), with operatorChannel null; the main signer OTP waiver is skipOtp on the main signer, set only on this device. While the host passes loading, the dialog shows skeleton rows (data-note=\"loading\", aria-busy) and Request signature is disabled; the form seeds when loading ends.",
@@ -1,4 +1,4 @@
1
- import { D as s, a as e, P as r, S as A, c as L } from "../../_chunks/public-footer-3Jy1zHSs.js";
1
+ import { D as s, a as e, P as r, S as A, c as L } from "../../_chunks/public-footer-DGjLTtNK.js";
2
2
  import { p as _ } from "../../_chunks/public-footer.agent-CRZCrq3_.js";
3
3
  export {
4
4
  s as DEFAULT_MARKETING_BASE_URL,
@@ -1,4 +1,4 @@
1
- import { R as r, r as s } from "../../_chunks/reviews-panel-CtrwZOUS.js";
1
+ import { R as r, r as s } from "../../_chunks/reviews-panel-B03auSpQ.js";
2
2
  export {
3
3
  r as ReviewsPanel,
4
4
  s as reviewsPanelAgent
@@ -82,6 +82,13 @@ export interface ReviewsPanelProps extends Omit<ComponentPropsWithoutRef<'sectio
82
82
  * width or inside a narrow column. Defaults to false.
83
83
  */
84
84
  hideFilter?: boolean;
85
+ /**
86
+ * @default true
87
+ * Show the review count on each star filter chip. Pass `false` when the
88
+ * per-star counts are not known (no server histogram): the chips stay
89
+ * usable but show no number, and their accessible names drop the count.
90
+ */
91
+ showStarCounts?: boolean;
85
92
  /**
86
93
  * @default 'flat'
87
94
  * `'elevated'` wraps the panel in the equivalent of `Card variant="elevated"`
@@ -1 +1 @@
1
- {"version":3,"file":"reviews-panel.d.ts","sourceRoot":"","sources":["../../../src/components/reviews-panel/reviews-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAiCf,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;uEACmE;IACnE,SAAS,CAAC,EAAE;QACV,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,sEAAsE;IACtE,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;IACtC,cAAc,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,YAAY,CAAC;IAC9B,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,6CAA6C;IAC7C,eAAe,EAAE,MAAM,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,wBAAwB,CAAC,SAAS,CAAC,EACnC,YAAY,GAAG,UAAU,CAC1B;IACC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,gBAAgB,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAE9C;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAE7B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAE9B,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAihBD,eAAO,MAAM,YAAY,2GA2OxB,CAAC"}
1
+ {"version":3,"file":"reviews-panel.d.ts","sourceRoot":"","sources":["../../../src/components/reviews-panel/reviews-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAiCf,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;uEACmE;IACnE,SAAS,CAAC,EAAE;QACV,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,sEAAsE;IACtE,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;IACtC,cAAc,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,YAAY,CAAC;IAC9B,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,6CAA6C;IAC7C,eAAe,EAAE,MAAM,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,wBAAwB,CAAC,SAAS,CAAC,EACnC,YAAY,GAAG,UAAU,CAC1B;IACC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,gBAAgB,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAE9C;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAE7B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAE9B,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyhBD,eAAO,MAAM,YAAY,2GA6OxB,CAAC"}
@@ -3942,6 +3942,7 @@ export declare const arUi: {
3942
3942
  readonly signerChannelChanged: "تغيّرت قناة إرسال الطلب إلى {{name}} إلى {{channel}}.";
3943
3943
  readonly requiredTitle: "مستندات للتوقيع";
3944
3944
  readonly requiredDescription: "اطلب من المريض توقيع جميع المستندات واستبيانات التاريخ المرضي المعلّقة في طلب واحد.";
3945
+ readonly requiredConfirmDescription: "أنت على وشك إرسال تعليمات التوقيع الإلكتروني إلى:";
3945
3946
  readonly requiredLoading: "جارٍ تحميل المستندات المطلوب توقيعها…";
3946
3947
  readonly requiredLoaded: "تم تحميل المستندات المطلوب توقيعها.";
3947
3948
  readonly requiredDocumentsHeading: "المستندات المطلوب توقيعها ({{count}})";
@@ -3973,6 +3974,7 @@ export declare const arUi: {
3973
3974
  readonly operatorOnDeviceLinked: "يوقّع المريض على هذا الجهاز، لذلك يوقّع المعالج هنا أيضاً، بعد المريض مباشرةً.";
3974
3975
  readonly loading: "جارٍ تحميل طلب التوقيع…";
3975
3976
  readonly secondSigneeCleared: "تمت إزالة الموقّع الثاني.";
3977
+ readonly secondSigneeReturned: "{{name}} هو الموقّع الثاني مرة أخرى.";
3976
3978
  readonly secondSigneeSameAsPrimary: "يجب أن يكون الموقّع الثاني مختلفًا عن الموقّع الرئيسي.";
3977
3979
  readonly secondSigneeUnknown: "لم يعد الموقّع الثاني المحدد متاحًا.";
3978
3980
  readonly secondSigneeMissingPhone: "ليس للموقّع الثاني رقم هاتف: حدّث بيانات الاتصال به أو اختر قناة توقيع أخرى.";
@@ -4139,6 +4141,7 @@ export declare const arUi: {
4139
4141
  readonly contacts: "اتصل بنا";
4140
4142
  };
4141
4143
  readonly copyright: "© {{year}} {{entity}} · {{vat}}";
4144
+ readonly vatLabel: "رقم ضريبة القيمة المضافة";
4142
4145
  readonly tagline: "تقنية ألمانية، تصميم إيطالي";
4143
4146
  readonly group: {
4144
4147
  readonly product: "الحلول";
@@ -1 +1 @@
1
- {"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/ar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAigMP,CAAC"}
1
+ {"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/ar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqgMP,CAAC"}
@@ -3909,6 +3909,7 @@ const e = {
3909
3909
  signerChannelChanged: "تغيّرت قناة إرسال الطلب إلى {{name}} إلى {{channel}}.",
3910
3910
  requiredTitle: "مستندات للتوقيع",
3911
3911
  requiredDescription: "اطلب من المريض توقيع جميع المستندات واستبيانات التاريخ المرضي المعلّقة في طلب واحد.",
3912
+ requiredConfirmDescription: "أنت على وشك إرسال تعليمات التوقيع الإلكتروني إلى:",
3912
3913
  requiredLoading: "جارٍ تحميل المستندات المطلوب توقيعها…",
3913
3914
  requiredLoaded: "تم تحميل المستندات المطلوب توقيعها.",
3914
3915
  requiredDocumentsHeading: "المستندات المطلوب توقيعها ({{count}})",
@@ -3940,6 +3941,7 @@ const e = {
3940
3941
  operatorOnDeviceLinked: "يوقّع المريض على هذا الجهاز، لذلك يوقّع المعالج هنا أيضاً، بعد المريض مباشرةً.",
3941
3942
  loading: "جارٍ تحميل طلب التوقيع…",
3942
3943
  secondSigneeCleared: "تمت إزالة الموقّع الثاني.",
3944
+ secondSigneeReturned: "{{name}} هو الموقّع الثاني مرة أخرى.",
3943
3945
  secondSigneeSameAsPrimary: "يجب أن يكون الموقّع الثاني مختلفًا عن الموقّع الرئيسي.",
3944
3946
  secondSigneeUnknown: "لم يعد الموقّع الثاني المحدد متاحًا.",
3945
3947
  secondSigneeMissingPhone: "ليس للموقّع الثاني رقم هاتف: حدّث بيانات الاتصال به أو اختر قناة توقيع أخرى.",
@@ -4106,6 +4108,7 @@ const e = {
4106
4108
  contacts: "اتصل بنا"
4107
4109
  },
4108
4110
  copyright: "© {{year}} {{entity}} · {{vat}}",
4111
+ vatLabel: "رقم ضريبة القيمة المضافة",
4109
4112
  tagline: "تقنية ألمانية، تصميم إيطالي",
4110
4113
  group: {
4111
4114
  product: "الحلول",