@12-apps/ui 6.15.1 → 6.16.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.
@@ -5,8 +5,9 @@ import {
5
5
  EN_US_PASSWORD_STRENGTH_COPY,
6
6
  EN_US_PHONE_INPUT_COPY,
7
7
  EN_US_RICH_EDITOR_TOOLBAR_COPY,
8
+ EN_US_SOCIAL_LOGIN_COPY,
8
9
  EN_US_UPLOAD_BUTTON_COPY
9
- } from "../chunk-6B5VS2ER.js";
10
+ } from "../chunk-INGPH3YQ.js";
10
11
  import "../chunk-PZ5AY32C.js";
11
12
  export {
12
13
  EN_US_ADDRESS_AUTOCOMPLETE_COPY,
@@ -15,6 +16,7 @@ export {
15
16
  EN_US_PASSWORD_STRENGTH_COPY,
16
17
  EN_US_PHONE_INPUT_COPY,
17
18
  EN_US_RICH_EDITOR_TOOLBAR_COPY,
19
+ EN_US_SOCIAL_LOGIN_COPY,
18
20
  EN_US_UPLOAD_BUTTON_COPY
19
21
  };
20
22
  //# sourceMappingURL=en-US.form.js.map
@@ -5,8 +5,9 @@ import {
5
5
  PT_BR_PASSWORD_STRENGTH_COPY,
6
6
  PT_BR_PHONE_INPUT_COPY,
7
7
  PT_BR_RICH_EDITOR_TOOLBAR_COPY,
8
+ PT_BR_SOCIAL_LOGIN_COPY,
8
9
  PT_BR_UPLOAD_BUTTON_COPY
9
- } from "../chunk-H54E2ZGJ.js";
10
+ } from "../chunk-YLSDFW5O.js";
10
11
  import "../chunk-PZ5AY32C.js";
11
12
  export {
12
13
  PT_BR_ADDRESS_AUTOCOMPLETE_COPY,
@@ -15,6 +16,7 @@ export {
15
16
  PT_BR_PASSWORD_STRENGTH_COPY,
16
17
  PT_BR_PHONE_INPUT_COPY,
17
18
  PT_BR_RICH_EDITOR_TOOLBAR_COPY,
19
+ PT_BR_SOCIAL_LOGIN_COPY,
18
20
  PT_BR_UPLOAD_BUTTON_COPY
19
21
  };
20
22
  //# sourceMappingURL=pt-BR.form.js.map
@@ -5,7 +5,8 @@ import {
5
5
  GoogleIcon,
6
6
  SocialLoginButton,
7
7
  SocialLoginContainer
8
- } from "../../chunk-IXZ44HJF.js";
8
+ } from "../../chunk-P2U7C2S7.js";
9
+ import "../../chunk-INGPH3YQ.js";
9
10
  import "../../chunk-6GP2DOOO.js";
10
11
  import "../../chunk-HQJ75HHI.js";
11
12
  import "../../chunk-QCIWROKG.js";
@@ -81,6 +81,11 @@ var EN_US_UPLOAD_BUTTON_COPY = {
81
81
  uploadInProgress: (percent) => `Upload in progress: ${percent}%`,
82
82
  errorAnnouncement: (message) => `Error: ${message}`
83
83
  };
84
+ var EN_US_SOCIAL_LOGIN_COPY = {
85
+ google: "Continue with Google",
86
+ facebook: "Continue with Facebook",
87
+ apple: "Continue with Apple"
88
+ };
84
89
 
85
90
  export {
86
91
  EN_US_ADDRESS_AUTOCOMPLETE_COPY,
@@ -89,6 +94,7 @@ export {
89
94
  EN_US_PASSWORD_STRENGTH_COPY,
90
95
  EN_US_RICH_EDITOR_TOOLBAR_COPY,
91
96
  EN_US_PHONE_INPUT_COPY,
92
- EN_US_UPLOAD_BUTTON_COPY
97
+ EN_US_UPLOAD_BUTTON_COPY,
98
+ EN_US_SOCIAL_LOGIN_COPY
93
99
  };
94
- //# sourceMappingURL=chunk-6B5VS2ER.js.map
100
+ //# sourceMappingURL=chunk-INGPH3YQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/en-US.form.ts"],"sourcesContent":["/**\n * The en-US pack for the form family. Split the same way `pt-BR.form.ts` is —\n * see `en-US.ts` for why.\n */\nimport type {\n AddressAutocompleteCopy,\n AutocompleteCopy,\n CodeEditorCopy,\n PasswordStrengthCopy,\n PhoneInputCopy,\n RichEditorToolbarCopy,\n SocialLoginCopy,\n UploadButtonCopy,\n} from './copy';\n\nexport const EN_US_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy = {\n loadingMaps: \"Loading Google Maps…\",\n mapsLoadFailed:\n \"Could not load the Google Maps API. Check the API key and the internet connection.\",\n useCurrentLocation: \"Use my current location\",\n};\n\nexport const EN_US_AUTOCOMPLETE_COPY: AutocompleteCopy = {\n loading: \"Loading…\",\n noResults: \"No results found\",\n placeholder: \"Type to search…\",\n};\n\nexport const EN_US_CODE_EDITOR_COPY: CodeEditorCopy = {\n loading: \"Loading the editor…\",\n readOnly: \"Read only\",\n // The shortcut is the editor's own binding and is not translated — it is what\n // the reader must press, not something they read.\n formatCode: \"Format code (Ctrl+Shift+F)\",\n enableWrap: \"Wrap lines\",\n disableWrap: \"Do not wrap lines\",\n copyToClipboard: \"Copy to clipboard\",\n copied: \"Copied!\",\n enterFullscreen: \"Full screen\",\n exitFullscreen: \"Leave full screen\",\n};\n\nexport const EN_US_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy = {\n strengthHeading: \"Password strength\",\n requirementsHeading: \"Requirements:\",\n suggestionsHeading: \"Suggestions:\",\n bands: {\n veryWeak: \"Very weak\",\n weak: \"Weak\",\n fair: \"Fair\",\n good: \"Good\",\n strong: \"Strong\",\n },\n requirements: {\n // The count is the HOST's configured minimum, interpolated rather than\n // written out: a host raising it must not end up with a requirement naming\n // the old number.\n minLength: (count) => `At least ${count} characters`,\n uppercase: \"One uppercase letter\",\n lowercase: \"One lowercase letter\",\n numbers: \"One number\",\n special: \"One special character\",\n },\n suggestions: {\n minLength: (count) => `Use at least ${count} characters`,\n uppercase: \"Add uppercase letters\",\n lowercase: \"Add lowercase letters\",\n numbers: \"Include numbers\",\n special: \"Add special characters\",\n },\n};\n\nexport const EN_US_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy = {\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n bulletList: \"Bulleted list\",\n numberedList: \"Numbered list\",\n quote: \"Quote\",\n code: \"Code\",\n insertLink: \"Insert link\",\n textColor: \"Text colour\",\n backgroundColor: \"Background colour\",\n linkPrompt: \"Enter the URL:\",\n};\n\nexport const EN_US_PHONE_INPUT_COPY: PhoneInputCopy = {\n selectCountry: \"Select country\",\n invalidNumber: (countryName) => `Not a valid phone number for ${countryName}`,\n // Substituted into the sentence above when no country is chosen, so it has to\n // read as a noun phrase inside it rather than as a sentence of its own.\n unknownCountry: \"the selected country\",\n};\n\nexport const EN_US_UPLOAD_BUTTON_COPY: UploadButtonCopy = {\n buttonLabel: \"Upload a file\",\n dropzoneHint: \"Drop the file here, or click to choose one\",\n dropzoneRole: (label) => `File upload area. ${label}`,\n uploading: \"Uploading…\",\n dropReady: \"File ready to drop\",\n percentUploaded: (percent) => `${percent}% uploaded`,\n uploadInProgress: (percent) => `Upload in progress: ${percent}%`,\n errorAnnouncement: (message) => `Error: ${message}`,\n};\n\nexport const EN_US_SOCIAL_LOGIN_COPY: SocialLoginCopy = {\n google: \"Continue with Google\",\n facebook: \"Continue with Facebook\",\n apple: \"Continue with Apple\",\n};\n"],"mappings":";AAeO,IAAM,kCAA2D;AAAA,EACtE,aAAa;AAAA,EACb,gBACE;AAAA,EACF,oBAAoB;AACtB;AAEO,IAAM,0BAA4C;AAAA,EACvD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AACf;AAEO,IAAM,yBAAyC;AAAA,EACpD,SAAS;AAAA,EACT,UAAU;AAAA;AAAA;AAAA,EAGV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAClB;AAEO,IAAM,+BAAqD;AAAA,EAChE,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,OAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA;AAAA;AAAA;AAAA,IAIZ,WAAW,CAAC,UAAU,YAAY,KAAK;AAAA,IACvC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,WAAW,CAAC,UAAU,gBAAgB,KAAK;AAAA,IAC3C,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAEO,IAAM,iCAAwD;AAAA,EACnE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,YAAY;AACd;AAEO,IAAM,yBAAyC;AAAA,EACpD,eAAe;AAAA,EACf,eAAe,CAAC,gBAAgB,gCAAgC,WAAW;AAAA;AAAA;AAAA,EAG3E,gBAAgB;AAClB;AAEO,IAAM,2BAA6C;AAAA,EACxD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc,CAAC,UAAU,qBAAqB,KAAK;AAAA,EACnD,WAAW;AAAA,EACX,WAAW;AAAA,EACX,iBAAiB,CAAC,YAAY,GAAG,OAAO;AAAA,EACxC,kBAAkB,CAAC,YAAY,uBAAuB,OAAO;AAAA,EAC7D,mBAAmB,CAAC,YAAY,UAAU,OAAO;AACnD;AAEO,IAAM,0BAA2C;AAAA,EACtD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;","names":[]}
@@ -1,3 +1,6 @@
1
+ import {
2
+ EN_US_SOCIAL_LOGIN_COPY
3
+ } from "./chunk-INGPH3YQ.js";
1
4
  import {
2
5
  Heading
3
6
  } from "./chunk-HQJ75HHI.js";
@@ -60,7 +63,6 @@ var FacebookIcon = () => /* @__PURE__ */ jsx("svg", { width: "20", height: "20",
60
63
  var AppleIcon = () => /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" }) });
61
64
  var providerConfig = {
62
65
  google: {
63
- label: "Continue with Google",
64
66
  Icon: GoogleIcon,
65
67
  variant: "outline",
66
68
  color: "neutral",
@@ -75,7 +77,6 @@ var providerConfig = {
75
77
  }
76
78
  },
77
79
  facebook: {
78
- label: "Continue with Facebook",
79
80
  Icon: FacebookIcon,
80
81
  variant: "solid",
81
82
  color: "primary",
@@ -88,7 +89,6 @@ var providerConfig = {
88
89
  }
89
90
  },
90
91
  apple: {
91
- label: "Continue with Apple",
92
92
  Icon: AppleIcon,
93
93
  variant: "solid",
94
94
  color: "neutral",
@@ -102,7 +102,15 @@ var providerConfig = {
102
102
  }
103
103
  };
104
104
  var SocialLoginButton = React.forwardRef(
105
- ({ provider, onClick, loading = false, disabled = false, fullWidth = true }, ref) => {
105
+ ({
106
+ provider,
107
+ onClick,
108
+ loading = false,
109
+ disabled = false,
110
+ fullWidth = true,
111
+ copy = EN_US_SOCIAL_LOGIN_COPY,
112
+ dataTestId
113
+ }, ref) => {
106
114
  const config = providerConfig[provider];
107
115
  return /* @__PURE__ */ jsx(
108
116
  Button,
@@ -115,6 +123,7 @@ var SocialLoginButton = React.forwardRef(
115
123
  disabled,
116
124
  onClick,
117
125
  icon: /* @__PURE__ */ jsx(config.Icon, {}),
126
+ dataTestId,
118
127
  fullWidth,
119
128
  sx: {
120
129
  minHeight: 48,
@@ -122,7 +131,7 @@ var SocialLoginButton = React.forwardRef(
122
131
  gap: 2,
123
132
  ...config.sx
124
133
  },
125
- children: config.label
134
+ children: copy[provider]
126
135
  }
127
136
  );
128
137
  }
@@ -165,4 +174,4 @@ export {
165
174
  SocialLoginButton,
166
175
  SocialLoginContainer
167
176
  };
168
- //# sourceMappingURL=chunk-IXZ44HJF.js.map
177
+ //# sourceMappingURL=chunk-P2U7C2S7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/social-login-button/social-login-button.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport Box from '@mui/material/Box/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport { Button } from '../components/form/Button';\nimport { Card, CardContent } from '../components/layout/Card';\nimport { Heading } from '../components/typography/Heading';\nimport { Text } from '../components/typography/Text';\nimport { Separator } from '../components/layout/Separator';\nimport type { SocialLoginCopy } from '../copy/form';\nimport { EN_US_SOCIAL_LOGIN_COPY } from '../en-US.form';\n\nexport type SocialProvider = 'google' | 'facebook' | 'apple';\n\n/**\n * SVG Icons for social providers\n */\nconst GoogleIcon = (): React.ReactElement => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n fill=\"#EA4335\"\n />\n </svg>\n);\n\nconst FacebookIcon = (): React.ReactElement => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24 12c0-6.627-5.373-12-12-12S0 5.373 0 12c0 5.99 4.388 10.954 10.125 11.854V15.47H7.078V12h3.047V9.356c0-3.007 1.792-4.668 4.533-4.668 1.312 0 2.686.234 2.686.234v2.953H15.83c-1.491 0-1.956.925-1.956 1.874V12h3.328l-.532 3.469h-2.796v8.385C19.612 22.954 24 17.99 24 12z\"\n fill=\"#1877F2\"\n />\n </svg>\n);\n\nconst AppleIcon = (): React.ReactElement => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\" />\n </svg>\n);\n\ninterface ProviderConfig {\n Icon: () => React.ReactElement;\n variant: 'solid' | 'outline' | 'ghost';\n color: 'primary' | 'secondary' | 'neutral';\n sx?: object;\n}\n\nconst providerConfig: Record<SocialProvider, ProviderConfig> = {\n google: {\n Icon: GoogleIcon,\n variant: 'outline',\n color: 'neutral',\n sx: {\n backgroundColor: '#ffffff',\n color: '#1f1f1f',\n borderColor: '#dadce0',\n '&:hover': {\n backgroundColor: '#f5f5f5',\n borderColor: '#dadce0',\n },\n },\n },\n facebook: {\n Icon: FacebookIcon,\n variant: 'solid',\n color: 'primary',\n sx: {\n backgroundColor: '#1877F2',\n color: '#ffffff',\n '&:hover': {\n backgroundColor: '#166fe5',\n },\n },\n },\n apple: {\n Icon: AppleIcon,\n variant: 'solid',\n color: 'neutral',\n sx: {\n backgroundColor: '#000000',\n color: '#ffffff',\n '&:hover': {\n backgroundColor: '#1a1a1a',\n },\n },\n },\n};\n\nexport interface SocialLoginButtonProps {\n provider: SocialProvider;\n onClick?: () => void;\n loading?: boolean;\n disabled?: boolean;\n fullWidth?: boolean;\n /**\n * The three provider labels (FUT-1263). `SOCIAL_LOGIN_COPY` ships both\n * languages, so a host passes `SOCIAL_LOGIN_COPY[\"pt-BR\"]` rather than\n * authoring a word.\n *\n * These used to be English string literals inside `providerConfig`, reachable\n * by nothing: a pt-BR storefront rendered \"Continue with Google\" on an\n * otherwise Portuguese sign-in screen and had no way to change it.\n *\n * OPTIONAL, unlike every other `copy` in this package, and defaulted to the\n * en-US pack. That is a deliberate exception so this ships as a MINOR: making\n * it required would break every existing caller on a routine update. The cost\n * is the one this package's convention exists to avoid — a host that says\n * nothing still renders English — so a consumer wanting Portuguese must pass\n * the pack, and FUT-1263 is not closed until it does.\n */\n copy?: SocialLoginCopy;\n /**\n * Per-provider test hook. Without one all three buttons render the same\n * `data-testid`, leaving their visible text as the only selector — which is\n * exactly the text a host is now expected to translate.\n */\n dataTestId?: string;\n}\n\n/**\n * Social login button using UI package Button component\n */\nexport const SocialLoginButton = React.forwardRef<HTMLButtonElement, SocialLoginButtonProps>(\n (\n {\n provider,\n onClick,\n loading = false,\n disabled = false,\n fullWidth = true,\n copy = EN_US_SOCIAL_LOGIN_COPY,\n dataTestId,\n },\n ref,\n ) => {\n const config = providerConfig[provider];\n\n return (\n <Button\n ref={ref}\n variant={config.variant}\n color={config.color}\n size=\"lg\"\n loading={loading}\n disabled={disabled}\n onClick={onClick}\n icon={<config.Icon />}\n dataTestId={dataTestId}\n fullWidth={fullWidth}\n sx={{\n minHeight: 48,\n justifyContent: 'flex-start',\n gap: 2,\n ...config.sx,\n }}\n >\n {copy[provider]}\n </Button>\n );\n }\n);\n\nSocialLoginButton.displayName = 'SocialLoginButton';\n\n/**\n * Container for social login buttons with optional divider\n */\nexport interface SocialLoginContainerProps {\n children: React.ReactNode;\n title?: string;\n subtitle?: string;\n showDivider?: boolean;\n dividerText?: string;\n /**\n * How wide the card is allowed to get. Defaults to the 400 it has always\n * intended, so nothing that does not ask for a width moves.\n *\n * Worth passing for a card holding a FORM rather than a row of provider\n * buttons: 400 was chosen for the latter, and an e-mail + password pair reads\n * cramped in it.\n */\n maxWidth?: number | string;\n}\n\nexport function SocialLoginContainer({\n children,\n title = \"Sign in to continue\",\n subtitle,\n showDivider = false,\n dividerText = \"or\",\n maxWidth = 400,\n}: SocialLoginContainerProps): React.ReactElement {\n return (\n // `width: 100%` is what makes the cap below mean anything. Every caller\n // centres this card in a flex column (`Container variant=\"centered\"` does),\n // and a flex item under `align-items: center` sizes to its CONTENT — so the\n // card sat at whatever the longest label happened to need, ~267px, at every\n // viewport from 390 to 1280. The 400 was never reached, which is why raising\n // it would have changed nothing; the card had no width to cap.\n <Card variant=\"elevated\" borderRadius=\"lg\" sx={{ width: '100%', maxWidth }}>\n <CardContent>\n <Stack spacing={3} sx={{ width: '100%' }}>\n {title && (\n <Box sx={{ textAlign: 'center' }}>\n <Heading level=\"h2\">\n {title}\n </Heading>\n {subtitle && (\n <Text color=\"secondary\" size=\"sm\">\n {subtitle}\n </Text>\n )}\n </Box>\n )}\n\n <Stack spacing={2}>\n {children}\n </Stack>\n\n {showDivider && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n <Separator />\n <Text color=\"secondary\" size=\"sm\">\n {dividerText}\n </Text>\n <Separator />\n </Box>\n )}\n </Stack>\n </CardContent>\n </Card>\n );\n}\n\nexport { GoogleIcon, FacebookIcon, AppleIcon };\n"],"mappings":"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","names":[]}
@@ -74,6 +74,11 @@ var PT_BR_UPLOAD_BUTTON_COPY = {
74
74
  uploadInProgress: (percent) => `Envio em andamento: ${percent}%`,
75
75
  errorAnnouncement: (message) => `Erro: ${message}`
76
76
  };
77
+ var PT_BR_SOCIAL_LOGIN_COPY = {
78
+ google: "Continuar com o Google",
79
+ facebook: "Continuar com o Facebook",
80
+ apple: "Continuar com a Apple"
81
+ };
77
82
 
78
83
  export {
79
84
  PT_BR_ADDRESS_AUTOCOMPLETE_COPY,
@@ -82,6 +87,7 @@ export {
82
87
  PT_BR_PASSWORD_STRENGTH_COPY,
83
88
  PT_BR_RICH_EDITOR_TOOLBAR_COPY,
84
89
  PT_BR_PHONE_INPUT_COPY,
85
- PT_BR_UPLOAD_BUTTON_COPY
90
+ PT_BR_UPLOAD_BUTTON_COPY,
91
+ PT_BR_SOCIAL_LOGIN_COPY
86
92
  };
87
- //# sourceMappingURL=chunk-H54E2ZGJ.js.map
93
+ //# sourceMappingURL=chunk-YLSDFW5O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pt-BR.form.ts"],"sourcesContent":["/**\n * The pt-BR pack for the form family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type {\n AddressAutocompleteCopy,\n AutocompleteCopy,\n CodeEditorCopy,\n PasswordStrengthCopy,\n PhoneInputCopy,\n RichEditorToolbarCopy,\n SocialLoginCopy,\n UploadButtonCopy,\n} from './copy';\n\nexport const PT_BR_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy = {\n loadingMaps: \"Carregando o Google Maps…\",\n mapsLoadFailed:\n \"Não foi possível carregar a API do Google Maps. Verifique a chave da API e a conexão com a internet.\",\n useCurrentLocation: \"Usar a localização atual\",\n};\n\nexport const PT_BR_AUTOCOMPLETE_COPY: AutocompleteCopy = {\n loading: \"Carregando…\",\n noResults: \"Nenhum resultado encontrado\",\n placeholder: \"Digite para buscar…\",\n};\n\nexport const PT_BR_CODE_EDITOR_COPY: CodeEditorCopy = {\n loading: \"Carregando o editor…\",\n readOnly: \"Somente leitura\",\n formatCode: \"Formatar o código (Ctrl+Shift+F)\",\n enableWrap: \"Quebrar as linhas\",\n disableWrap: \"Não quebrar as linhas\",\n copyToClipboard: \"Copiar para a área de transferência\",\n copied: \"Copiado!\",\n enterFullscreen: \"Tela cheia\",\n exitFullscreen: \"Sair da tela cheia\",\n};\n\nexport const PT_BR_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy = {\n strengthHeading: \"Força da senha\",\n requirementsHeading: \"Requisitos:\",\n suggestionsHeading: \"Sugestões:\",\n bands: {\n veryWeak: \"Muito fraca\",\n weak: \"Fraca\",\n fair: \"Razoável\",\n good: \"Boa\",\n strong: \"Forte\",\n },\n requirements: {\n minLength: (count) => `Pelo menos ${count} caracteres`,\n uppercase: \"Uma letra maiúscula\",\n lowercase: \"Uma letra minúscula\",\n numbers: \"Um número\",\n special: \"Um caractere especial\",\n },\n suggestions: {\n minLength: (count) => `Use pelo menos ${count} caracteres`,\n uppercase: \"Adicione letras maiúsculas\",\n lowercase: \"Adicione letras minúsculas\",\n numbers: \"Inclua números\",\n special: \"Adicione caracteres especiais\",\n },\n};\n\nexport const PT_BR_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy = {\n bold: \"Negrito\",\n italic: \"Itálico\",\n underline: \"Sublinhado\",\n bulletList: \"Lista com marcadores\",\n numberedList: \"Lista numerada\",\n quote: \"Citação\",\n code: \"Código\",\n insertLink: \"Inserir link\",\n textColor: \"Cor do texto\",\n backgroundColor: \"Cor de fundo\",\n linkPrompt: \"Informe a URL:\",\n};\n\nexport const PT_BR_PHONE_INPUT_COPY: PhoneInputCopy = {\n selectCountry: \"Selecionar o país\",\n invalidNumber: (countryName) => `Telefone inválido para ${countryName}`,\n unknownCountry: \"o país selecionado\",\n};\n\nexport const PT_BR_UPLOAD_BUTTON_COPY: UploadButtonCopy = {\n buttonLabel: \"Enviar arquivo\",\n dropzoneHint: \"Solte o arquivo aqui ou clique para escolher\",\n dropzoneRole: (label) => `Área de upload de arquivo. ${label}`,\n uploading: \"Enviando…\",\n dropReady: \"Arquivo pronto para soltar\",\n percentUploaded: (percent) => `${percent}% enviado`,\n uploadInProgress: (percent) => `Envio em andamento: ${percent}%`,\n errorAnnouncement: (message) => `Erro: ${message}`,\n};\n\nexport const PT_BR_SOCIAL_LOGIN_COPY: SocialLoginCopy = {\n google: \"Continuar com o Google\",\n facebook: \"Continuar com o Facebook\",\n apple: \"Continuar com a Apple\",\n};\n"],"mappings":";AAeO,IAAM,kCAA2D;AAAA,EACtE,aAAa;AAAA,EACb,gBACE;AAAA,EACF,oBAAoB;AACtB;AAEO,IAAM,0BAA4C;AAAA,EACvD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AACf;AAEO,IAAM,yBAAyC;AAAA,EACpD,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAClB;AAEO,IAAM,+BAAqD;AAAA,EAChE,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,OAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA,IACZ,WAAW,CAAC,UAAU,cAAc,KAAK;AAAA,IACzC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,WAAW,CAAC,UAAU,kBAAkB,KAAK;AAAA,IAC7C,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAEO,IAAM,iCAAwD;AAAA,EACnE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,YAAY;AACd;AAEO,IAAM,yBAAyC;AAAA,EACpD,eAAe;AAAA,EACf,eAAe,CAAC,gBAAgB,6BAA0B,WAAW;AAAA,EACrE,gBAAgB;AAClB;AAEO,IAAM,2BAA6C;AAAA,EACxD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc,CAAC,UAAU,iCAA8B,KAAK;AAAA,EAC5D,WAAW;AAAA,EACX,WAAW;AAAA,EACX,iBAAiB,CAAC,YAAY,GAAG,OAAO;AAAA,EACxC,kBAAkB,CAAC,YAAY,uBAAuB,OAAO;AAAA,EAC7D,mBAAmB,CAAC,YAAY,SAAS,OAAO;AAClD;AAEO,IAAM,0BAA2C;AAAA,EACtD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;","names":[]}
package/dist/en-US.js CHANGED
@@ -3,15 +3,6 @@ import {
3
3
  EN_US_BREADCRUMB_COPY,
4
4
  EN_US_COMMAND_PALETTE_COPY
5
5
  } from "./chunk-AUQRGZE7.js";
6
- import {
7
- EN_US_ADDRESS_AUTOCOMPLETE_COPY,
8
- EN_US_AUTOCOMPLETE_COPY,
9
- EN_US_CODE_EDITOR_COPY,
10
- EN_US_PASSWORD_STRENGTH_COPY,
11
- EN_US_PHONE_INPUT_COPY,
12
- EN_US_RICH_EDITOR_TOOLBAR_COPY,
13
- EN_US_UPLOAD_BUTTON_COPY
14
- } from "./chunk-6B5VS2ER.js";
15
6
  import {
16
7
  EN_US_CHROME_COPY,
17
8
  EN_US_TUTORIAL_COPY
@@ -38,6 +29,16 @@ import {
38
29
  EN_US_INSTALL_PROMPT_COPY,
39
30
  EN_US_USER_AVATAR_COPY
40
31
  } from "./chunk-3HLKTBEO.js";
32
+ import {
33
+ EN_US_ADDRESS_AUTOCOMPLETE_COPY,
34
+ EN_US_AUTOCOMPLETE_COPY,
35
+ EN_US_CODE_EDITOR_COPY,
36
+ EN_US_PASSWORD_STRENGTH_COPY,
37
+ EN_US_PHONE_INPUT_COPY,
38
+ EN_US_RICH_EDITOR_TOOLBAR_COPY,
39
+ EN_US_SOCIAL_LOGIN_COPY,
40
+ EN_US_UPLOAD_BUTTON_COPY
41
+ } from "./chunk-INGPH3YQ.js";
41
42
  import "./chunk-PZ5AY32C.js";
42
43
  export {
43
44
  EN_US_ADDRESS_AUTOCOMPLETE_COPY,
@@ -60,6 +61,7 @@ export {
60
61
  EN_US_RICH_EDITOR_TOOLBAR_COPY,
61
62
  EN_US_SAVED_VIEWS_LABELS,
62
63
  EN_US_SECTION_ONBOARDING_COPY,
64
+ EN_US_SOCIAL_LOGIN_COPY,
63
65
  EN_US_TABLE_FILTER_COPY,
64
66
  EN_US_TIMING_DIAGRAM_COPY,
65
67
  EN_US_TUTORIAL_COPY,
package/dist/locales.js CHANGED
@@ -14,8 +14,9 @@ import {
14
14
  PT_BR_PASSWORD_STRENGTH_COPY,
15
15
  PT_BR_PHONE_INPUT_COPY,
16
16
  PT_BR_RICH_EDITOR_TOOLBAR_COPY,
17
+ PT_BR_SOCIAL_LOGIN_COPY,
17
18
  PT_BR_UPLOAD_BUTTON_COPY
18
- } from "./chunk-H54E2ZGJ.js";
19
+ } from "./chunk-YLSDFW5O.js";
19
20
  import {
20
21
  PT_BR_CHROME_COPY,
21
22
  PT_BR_TUTORIAL_COPY
@@ -43,15 +44,6 @@ import {
43
44
  EN_US_BREADCRUMB_COPY,
44
45
  EN_US_COMMAND_PALETTE_COPY
45
46
  } from "./chunk-AUQRGZE7.js";
46
- import {
47
- EN_US_ADDRESS_AUTOCOMPLETE_COPY,
48
- EN_US_AUTOCOMPLETE_COPY,
49
- EN_US_CODE_EDITOR_COPY,
50
- EN_US_PASSWORD_STRENGTH_COPY,
51
- EN_US_PHONE_INPUT_COPY,
52
- EN_US_RICH_EDITOR_TOOLBAR_COPY,
53
- EN_US_UPLOAD_BUTTON_COPY
54
- } from "./chunk-6B5VS2ER.js";
55
47
  import {
56
48
  EN_US_CHROME_COPY,
57
49
  EN_US_TUTORIAL_COPY
@@ -78,6 +70,16 @@ import {
78
70
  EN_US_INSTALL_PROMPT_COPY,
79
71
  EN_US_USER_AVATAR_COPY
80
72
  } from "./chunk-3HLKTBEO.js";
73
+ import {
74
+ EN_US_ADDRESS_AUTOCOMPLETE_COPY,
75
+ EN_US_AUTOCOMPLETE_COPY,
76
+ EN_US_CODE_EDITOR_COPY,
77
+ EN_US_PASSWORD_STRENGTH_COPY,
78
+ EN_US_PHONE_INPUT_COPY,
79
+ EN_US_RICH_EDITOR_TOOLBAR_COPY,
80
+ EN_US_SOCIAL_LOGIN_COPY,
81
+ EN_US_UPLOAD_BUTTON_COPY
82
+ } from "./chunk-INGPH3YQ.js";
81
83
  import "./chunk-PZ5AY32C.js";
82
84
 
83
85
  // src/locales.ts
@@ -102,6 +104,10 @@ var DATA_VIEWS_COPY = pack(
102
104
  );
103
105
  var TUTORIAL_COPY = pack(PT_BR_TUTORIAL_COPY, EN_US_TUTORIAL_COPY);
104
106
  var CHROME_COPY = pack(PT_BR_CHROME_COPY, EN_US_CHROME_COPY);
107
+ var SOCIAL_LOGIN_COPY = pack(
108
+ PT_BR_SOCIAL_LOGIN_COPY,
109
+ EN_US_SOCIAL_LOGIN_COPY
110
+ );
105
111
  var ADDRESS_AUTOCOMPLETE_COPY = pack(
106
112
  PT_BR_ADDRESS_AUTOCOMPLETE_COPY,
107
113
  EN_US_ADDRESS_AUTOCOMPLETE_COPY
@@ -188,6 +194,7 @@ export {
188
194
  RICH_EDITOR_TOOLBAR_COPY,
189
195
  SAVED_VIEWS_LABELS,
190
196
  SECTION_ONBOARDING_COPY,
197
+ SOCIAL_LOGIN_COPY,
191
198
  TABLE_FILTER_COPY,
192
199
  TIMING_DIAGRAM_COPY,
193
200
  TUTORIAL_COPY,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/locales.ts"],"sourcesContent":["/**\n * Every component family's copy, in both languages, keyed by tag.\n *\n * One pack per family rather than one giant pack, because that is how the\n * components take it: six of these are mounted independently and each takes\n * what it renders, while the DataViews family threads one object through a\n * context. A single blob would force a host mounting one component to state\n * copy for ninety.\n *\n * ```ts\n * import { useLocaleCopy } from '@12-apps/i18n/react';\n * const copy = useLocaleCopy(LIGHTBOX_COPY);\n * ```\n *\n * `LocalePack` is mirrored here rather than imported from `@12-apps/i18n`: this\n * package is the one EVERY host renders, and giving it a dependency to carry a\n * type would push that dependency onto every adopter of every other package.\n * The mirror buys the same key-checking for one line.\n */\nimport type { DataViewsCopy } from './components/data-display/DataViews/data-views-copy';\nimport type { SavedViewsLabels } from './components/layout/ContentToolbar/ContentToolbar.types';\nimport type {\n AddressAutocompleteCopy,\n AutocompleteCopy,\n BreadcrumbCopy,\n CarouselCopy,\n CategorySelectCopy,\n CepFieldCopy,\n ChromeCopy,\n CodeEditorCopy,\n CommandPaletteCopy,\n ConfirmActionCopy,\n DataStateCopy,\n InstallPromptCopy,\n LightboxCopy,\n MapPreviewCopy,\n PasswordStrengthCopy,\n PhoneInputCopy,\n RichEditorToolbarCopy,\n SectionOnboardingCopy,\n TableFilterCopy,\n TimingDiagramCopy,\n TutorialCopy,\n UploadButtonCopy,\n UserAvatarCopy,\n} from './copy';\nimport * as en from './en-US';\nimport * as pt from './pt-BR';\n\ntype LocalePack<T> = { readonly 'pt-BR': T; readonly 'en-US': T };\n\nconst pack = <T,>(ptBR: T, enUS: T): LocalePack<T> => ({ 'pt-BR': ptBR, 'en-US': enUS });\n\n// data-display\nexport const LIGHTBOX_COPY = pack<LightboxCopy>(pt.PT_BR_LIGHTBOX_COPY, en.EN_US_LIGHTBOX_COPY);\nexport const MAP_PREVIEW_COPY = pack<MapPreviewCopy>(\n pt.PT_BR_MAP_PREVIEW_COPY,\n en.EN_US_MAP_PREVIEW_COPY,\n);\nexport const CAROUSEL_COPY = pack<CarouselCopy>(pt.PT_BR_CAROUSEL_COPY, en.EN_US_CAROUSEL_COPY);\nexport const TIMING_DIAGRAM_COPY = pack<TimingDiagramCopy>(\n pt.PT_BR_TIMING_DIAGRAM_COPY,\n en.EN_US_TIMING_DIAGRAM_COPY,\n);\nexport const DATA_STATE_COPY = pack<DataStateCopy>(\n pt.PT_BR_DATA_STATE_COPY,\n en.EN_US_DATA_STATE_COPY,\n);\nexport const DATA_VIEWS_COPY = pack<DataViewsCopy>(\n pt.PT_BR_DATA_VIEWS_COPY,\n en.EN_US_DATA_VIEWS_COPY,\n);\n\n// feedback\nexport const TUTORIAL_COPY = pack<TutorialCopy>(pt.PT_BR_TUTORIAL_COPY, en.EN_US_TUTORIAL_COPY);\nexport const CHROME_COPY = pack<ChromeCopy>(pt.PT_BR_CHROME_COPY, en.EN_US_CHROME_COPY);\n\n// form\nexport const ADDRESS_AUTOCOMPLETE_COPY = pack<AddressAutocompleteCopy>(\n pt.PT_BR_ADDRESS_AUTOCOMPLETE_COPY,\n en.EN_US_ADDRESS_AUTOCOMPLETE_COPY,\n);\nexport const AUTOCOMPLETE_COPY = pack<AutocompleteCopy>(\n pt.PT_BR_AUTOCOMPLETE_COPY,\n en.EN_US_AUTOCOMPLETE_COPY,\n);\nexport const CODE_EDITOR_COPY = pack<CodeEditorCopy>(\n pt.PT_BR_CODE_EDITOR_COPY,\n en.EN_US_CODE_EDITOR_COPY,\n);\nexport const PASSWORD_STRENGTH_COPY = pack<PasswordStrengthCopy>(\n pt.PT_BR_PASSWORD_STRENGTH_COPY,\n en.EN_US_PASSWORD_STRENGTH_COPY,\n);\nexport const RICH_EDITOR_TOOLBAR_COPY = pack<RichEditorToolbarCopy>(\n pt.PT_BR_RICH_EDITOR_TOOLBAR_COPY,\n en.EN_US_RICH_EDITOR_TOOLBAR_COPY,\n);\nexport const PHONE_INPUT_COPY = pack<PhoneInputCopy>(\n pt.PT_BR_PHONE_INPUT_COPY,\n en.EN_US_PHONE_INPUT_COPY,\n);\nexport const UPLOAD_BUTTON_COPY = pack<UploadButtonCopy>(\n pt.PT_BR_UPLOAD_BUTTON_COPY,\n en.EN_US_UPLOAD_BUTTON_COPY,\n);\n\n// layout\nexport const TABLE_FILTER_COPY = pack<TableFilterCopy>(\n pt.PT_BR_TABLE_FILTER_COPY,\n en.EN_US_TABLE_FILTER_COPY,\n);\n\n// navigation\nexport const COMMAND_PALETTE_COPY = pack<CommandPaletteCopy>(\n pt.PT_BR_COMMAND_PALETTE_COPY,\n en.EN_US_COMMAND_PALETTE_COPY,\n);\nexport const BREADCRUMB_COPY = pack<BreadcrumbCopy>(\n pt.PT_BR_BREADCRUMB_COPY,\n en.EN_US_BREADCRUMB_COPY,\n);\n\n// shared\nexport const SECTION_ONBOARDING_COPY = pack<SectionOnboardingCopy>(\n pt.PT_BR_SECTION_ONBOARDING_COPY,\n en.EN_US_SECTION_ONBOARDING_COPY,\n);\nexport const CONFIRM_ACTION_COPY = pack<ConfirmActionCopy>(\n pt.PT_BR_CONFIRM_ACTION_COPY,\n en.EN_US_CONFIRM_ACTION_COPY,\n);\nexport const CATEGORY_SELECT_COPY = pack<CategorySelectCopy>(\n pt.PT_BR_CATEGORY_SELECT_COPY,\n en.EN_US_CATEGORY_SELECT_COPY,\n);\nexport const CEP_FIELD_COPY = pack<CepFieldCopy>(pt.PT_BR_CEP_FIELD_COPY, en.EN_US_CEP_FIELD_COPY);\nexport const SAVED_VIEWS_LABELS = pack<SavedViewsLabels>(\n pt.PT_BR_SAVED_VIEWS_LABELS,\n en.EN_US_SAVED_VIEWS_LABELS,\n);\n\n// utility\nexport const INSTALL_PROMPT_COPY = pack<InstallPromptCopy>(\n pt.PT_BR_INSTALL_PROMPT_COPY,\n en.EN_US_INSTALL_PROMPT_COPY,\n);\nexport const USER_AVATAR_COPY = pack<UserAvatarCopy>(\n pt.PT_BR_USER_AVATAR_COPY,\n en.EN_US_USER_AVATAR_COPY,\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,IAAM,OAAO,CAAK,MAAS,UAA4B,EAAE,SAAS,MAAM,SAAS,KAAK;AAG/E,IAAM,gBAAgB,KAAsB,qBAAwB,mBAAmB;AACvF,IAAM,mBAAmB;AAAA,EAC3B;AAAA,EACA;AACL;AACO,IAAM,gBAAgB,KAAsB,qBAAwB,mBAAmB;AACvF,IAAM,sBAAsB;AAAA,EAC9B;AAAA,EACA;AACL;AACO,IAAM,kBAAkB;AAAA,EAC1B;AAAA,EACA;AACL;AACO,IAAM,kBAAkB;AAAA,EAC1B;AAAA,EACA;AACL;AAGO,IAAM,gBAAgB,KAAsB,qBAAwB,mBAAmB;AACvF,IAAM,cAAc,KAAoB,mBAAsB,iBAAiB;AAG/E,IAAM,4BAA4B;AAAA,EACpC;AAAA,EACA;AACL;AACO,IAAM,oBAAoB;AAAA,EAC5B;AAAA,EACA;AACL;AACO,IAAM,mBAAmB;AAAA,EAC3B;AAAA,EACA;AACL;AACO,IAAM,yBAAyB;AAAA,EACjC;AAAA,EACA;AACL;AACO,IAAM,2BAA2B;AAAA,EACnC;AAAA,EACA;AACL;AACO,IAAM,mBAAmB;AAAA,EAC3B;AAAA,EACA;AACL;AACO,IAAM,qBAAqB;AAAA,EAC7B;AAAA,EACA;AACL;AAGO,IAAM,oBAAoB;AAAA,EAC5B;AAAA,EACA;AACL;AAGO,IAAM,uBAAuB;AAAA,EAC/B;AAAA,EACA;AACL;AACO,IAAM,kBAAkB;AAAA,EAC1B;AAAA,EACA;AACL;AAGO,IAAM,0BAA0B;AAAA,EAClC;AAAA,EACA;AACL;AACO,IAAM,sBAAsB;AAAA,EAC9B;AAAA,EACA;AACL;AACO,IAAM,uBAAuB;AAAA,EAC/B;AAAA,EACA;AACL;AACO,IAAM,iBAAiB,KAAsB,sBAAyB,oBAAoB;AAC1F,IAAM,qBAAqB;AAAA,EAC7B;AAAA,EACA;AACL;AAGO,IAAM,sBAAsB;AAAA,EAC9B;AAAA,EACA;AACL;AACO,IAAM,mBAAmB;AAAA,EAC3B;AAAA,EACA;AACL;","names":[]}
1
+ {"version":3,"sources":["../src/locales.ts"],"sourcesContent":["/**\n * Every component family's copy, in both languages, keyed by tag.\n *\n * One pack per family rather than one giant pack, because that is how the\n * components take it: six of these are mounted independently and each takes\n * what it renders, while the DataViews family threads one object through a\n * context. A single blob would force a host mounting one component to state\n * copy for ninety.\n *\n * ```ts\n * import { useLocaleCopy } from '@12-apps/i18n/react';\n * const copy = useLocaleCopy(LIGHTBOX_COPY);\n * ```\n *\n * `LocalePack` is mirrored here rather than imported from `@12-apps/i18n`: this\n * package is the one EVERY host renders, and giving it a dependency to carry a\n * type would push that dependency onto every adopter of every other package.\n * The mirror buys the same key-checking for one line.\n */\nimport type { DataViewsCopy } from './components/data-display/DataViews/data-views-copy';\nimport type { SavedViewsLabels } from './components/layout/ContentToolbar/ContentToolbar.types';\nimport type {\n AddressAutocompleteCopy,\n AutocompleteCopy,\n BreadcrumbCopy,\n CarouselCopy,\n CategorySelectCopy,\n CepFieldCopy,\n ChromeCopy,\n CodeEditorCopy,\n CommandPaletteCopy,\n ConfirmActionCopy,\n DataStateCopy,\n InstallPromptCopy,\n LightboxCopy,\n MapPreviewCopy,\n PasswordStrengthCopy,\n PhoneInputCopy,\n RichEditorToolbarCopy,\n SectionOnboardingCopy,\n SocialLoginCopy,\n TableFilterCopy,\n TimingDiagramCopy,\n TutorialCopy,\n UploadButtonCopy,\n UserAvatarCopy,\n} from \"./copy\";\nimport * as en from './en-US';\nimport * as pt from './pt-BR';\n\ntype LocalePack<T> = { readonly 'pt-BR': T; readonly 'en-US': T };\n\nconst pack = <T,>(ptBR: T, enUS: T): LocalePack<T> => ({ 'pt-BR': ptBR, 'en-US': enUS });\n\n// data-display\nexport const LIGHTBOX_COPY = pack<LightboxCopy>(pt.PT_BR_LIGHTBOX_COPY, en.EN_US_LIGHTBOX_COPY);\nexport const MAP_PREVIEW_COPY = pack<MapPreviewCopy>(\n pt.PT_BR_MAP_PREVIEW_COPY,\n en.EN_US_MAP_PREVIEW_COPY,\n);\nexport const CAROUSEL_COPY = pack<CarouselCopy>(pt.PT_BR_CAROUSEL_COPY, en.EN_US_CAROUSEL_COPY);\nexport const TIMING_DIAGRAM_COPY = pack<TimingDiagramCopy>(\n pt.PT_BR_TIMING_DIAGRAM_COPY,\n en.EN_US_TIMING_DIAGRAM_COPY,\n);\nexport const DATA_STATE_COPY = pack<DataStateCopy>(\n pt.PT_BR_DATA_STATE_COPY,\n en.EN_US_DATA_STATE_COPY,\n);\nexport const DATA_VIEWS_COPY = pack<DataViewsCopy>(\n pt.PT_BR_DATA_VIEWS_COPY,\n en.EN_US_DATA_VIEWS_COPY,\n);\n\n// feedback\nexport const TUTORIAL_COPY = pack<TutorialCopy>(pt.PT_BR_TUTORIAL_COPY, en.EN_US_TUTORIAL_COPY);\nexport const CHROME_COPY = pack<ChromeCopy>(pt.PT_BR_CHROME_COPY, en.EN_US_CHROME_COPY);\n\n// form\nexport const SOCIAL_LOGIN_COPY = pack<SocialLoginCopy>(\n pt.PT_BR_SOCIAL_LOGIN_COPY,\n en.EN_US_SOCIAL_LOGIN_COPY,\n);\nexport const ADDRESS_AUTOCOMPLETE_COPY = pack<AddressAutocompleteCopy>(\n pt.PT_BR_ADDRESS_AUTOCOMPLETE_COPY,\n en.EN_US_ADDRESS_AUTOCOMPLETE_COPY,\n);\nexport const AUTOCOMPLETE_COPY = pack<AutocompleteCopy>(\n pt.PT_BR_AUTOCOMPLETE_COPY,\n en.EN_US_AUTOCOMPLETE_COPY,\n);\nexport const CODE_EDITOR_COPY = pack<CodeEditorCopy>(\n pt.PT_BR_CODE_EDITOR_COPY,\n en.EN_US_CODE_EDITOR_COPY,\n);\nexport const PASSWORD_STRENGTH_COPY = pack<PasswordStrengthCopy>(\n pt.PT_BR_PASSWORD_STRENGTH_COPY,\n en.EN_US_PASSWORD_STRENGTH_COPY,\n);\nexport const RICH_EDITOR_TOOLBAR_COPY = pack<RichEditorToolbarCopy>(\n pt.PT_BR_RICH_EDITOR_TOOLBAR_COPY,\n en.EN_US_RICH_EDITOR_TOOLBAR_COPY,\n);\nexport const PHONE_INPUT_COPY = pack<PhoneInputCopy>(\n pt.PT_BR_PHONE_INPUT_COPY,\n en.EN_US_PHONE_INPUT_COPY,\n);\nexport const UPLOAD_BUTTON_COPY = pack<UploadButtonCopy>(\n pt.PT_BR_UPLOAD_BUTTON_COPY,\n en.EN_US_UPLOAD_BUTTON_COPY,\n);\n\n// layout\nexport const TABLE_FILTER_COPY = pack<TableFilterCopy>(\n pt.PT_BR_TABLE_FILTER_COPY,\n en.EN_US_TABLE_FILTER_COPY,\n);\n\n// navigation\nexport const COMMAND_PALETTE_COPY = pack<CommandPaletteCopy>(\n pt.PT_BR_COMMAND_PALETTE_COPY,\n en.EN_US_COMMAND_PALETTE_COPY,\n);\nexport const BREADCRUMB_COPY = pack<BreadcrumbCopy>(\n pt.PT_BR_BREADCRUMB_COPY,\n en.EN_US_BREADCRUMB_COPY,\n);\n\n// shared\nexport const SECTION_ONBOARDING_COPY = pack<SectionOnboardingCopy>(\n pt.PT_BR_SECTION_ONBOARDING_COPY,\n en.EN_US_SECTION_ONBOARDING_COPY,\n);\nexport const CONFIRM_ACTION_COPY = pack<ConfirmActionCopy>(\n pt.PT_BR_CONFIRM_ACTION_COPY,\n en.EN_US_CONFIRM_ACTION_COPY,\n);\nexport const CATEGORY_SELECT_COPY = pack<CategorySelectCopy>(\n pt.PT_BR_CATEGORY_SELECT_COPY,\n en.EN_US_CATEGORY_SELECT_COPY,\n);\nexport const CEP_FIELD_COPY = pack<CepFieldCopy>(pt.PT_BR_CEP_FIELD_COPY, en.EN_US_CEP_FIELD_COPY);\nexport const SAVED_VIEWS_LABELS = pack<SavedViewsLabels>(\n pt.PT_BR_SAVED_VIEWS_LABELS,\n en.EN_US_SAVED_VIEWS_LABELS,\n);\n\n// utility\nexport const INSTALL_PROMPT_COPY = pack<InstallPromptCopy>(\n pt.PT_BR_INSTALL_PROMPT_COPY,\n en.EN_US_INSTALL_PROMPT_COPY,\n);\nexport const USER_AVATAR_COPY = pack<UserAvatarCopy>(\n pt.PT_BR_USER_AVATAR_COPY,\n en.EN_US_USER_AVATAR_COPY,\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,IAAM,OAAO,CAAK,MAAS,UAA4B,EAAE,SAAS,MAAM,SAAS,KAAK;AAG/E,IAAM,gBAAgB,KAAsB,qBAAwB,mBAAmB;AACvF,IAAM,mBAAmB;AAAA,EAC3B;AAAA,EACA;AACL;AACO,IAAM,gBAAgB,KAAsB,qBAAwB,mBAAmB;AACvF,IAAM,sBAAsB;AAAA,EAC9B;AAAA,EACA;AACL;AACO,IAAM,kBAAkB;AAAA,EAC1B;AAAA,EACA;AACL;AACO,IAAM,kBAAkB;AAAA,EAC1B;AAAA,EACA;AACL;AAGO,IAAM,gBAAgB,KAAsB,qBAAwB,mBAAmB;AACvF,IAAM,cAAc,KAAoB,mBAAsB,iBAAiB;AAG/E,IAAM,oBAAoB;AAAA,EAC5B;AAAA,EACA;AACL;AACO,IAAM,4BAA4B;AAAA,EACpC;AAAA,EACA;AACL;AACO,IAAM,oBAAoB;AAAA,EAC5B;AAAA,EACA;AACL;AACO,IAAM,mBAAmB;AAAA,EAC3B;AAAA,EACA;AACL;AACO,IAAM,yBAAyB;AAAA,EACjC;AAAA,EACA;AACL;AACO,IAAM,2BAA2B;AAAA,EACnC;AAAA,EACA;AACL;AACO,IAAM,mBAAmB;AAAA,EAC3B;AAAA,EACA;AACL;AACO,IAAM,qBAAqB;AAAA,EAC7B;AAAA,EACA;AACL;AAGO,IAAM,oBAAoB;AAAA,EAC5B;AAAA,EACA;AACL;AAGO,IAAM,uBAAuB;AAAA,EAC/B;AAAA,EACA;AACL;AACO,IAAM,kBAAkB;AAAA,EAC1B;AAAA,EACA;AACL;AAGO,IAAM,0BAA0B;AAAA,EAClC;AAAA,EACA;AACL;AACO,IAAM,sBAAsB;AAAA,EAC9B;AAAA,EACA;AACL;AACO,IAAM,uBAAuB;AAAA,EAC/B;AAAA,EACA;AACL;AACO,IAAM,iBAAiB,KAAsB,sBAAyB,oBAAoB;AAC1F,IAAM,qBAAqB;AAAA,EAC7B;AAAA,EACA;AACL;AAGO,IAAM,sBAAsB;AAAA,EAC9B;AAAA,EACA;AACL;AACO,IAAM,mBAAmB;AAAA,EAC3B;AAAA,EACA;AACL;","names":[]}
package/dist/pt-BR.js CHANGED
@@ -14,8 +14,9 @@ import {
14
14
  PT_BR_PASSWORD_STRENGTH_COPY,
15
15
  PT_BR_PHONE_INPUT_COPY,
16
16
  PT_BR_RICH_EDITOR_TOOLBAR_COPY,
17
+ PT_BR_SOCIAL_LOGIN_COPY,
17
18
  PT_BR_UPLOAD_BUTTON_COPY
18
- } from "./chunk-H54E2ZGJ.js";
19
+ } from "./chunk-YLSDFW5O.js";
19
20
  import {
20
21
  PT_BR_CHROME_COPY,
21
22
  PT_BR_TUTORIAL_COPY
@@ -60,6 +61,7 @@ export {
60
61
  PT_BR_RICH_EDITOR_TOOLBAR_COPY,
61
62
  PT_BR_SAVED_VIEWS_LABELS,
62
63
  PT_BR_SECTION_ONBOARDING_COPY,
64
+ PT_BR_SOCIAL_LOGIN_COPY,
63
65
  PT_BR_TABLE_FILTER_COPY,
64
66
  PT_BR_TIMING_DIAGRAM_COPY,
65
67
  PT_BR_TUTORIAL_COPY,
@@ -4,7 +4,8 @@ import {
4
4
  GoogleIcon,
5
5
  SocialLoginButton,
6
6
  SocialLoginContainer
7
- } from "./chunk-IXZ44HJF.js";
7
+ } from "./chunk-P2U7C2S7.js";
8
+ import "./chunk-INGPH3YQ.js";
8
9
  import "./chunk-6GP2DOOO.js";
9
10
  import "./chunk-HQJ75HHI.js";
10
11
  import "./chunk-QCIWROKG.js";
@@ -143,4 +143,16 @@ export interface UploadButtonCopy {
143
143
  /** The component's own error, announced. Takes the message it wraps. */
144
144
  errorAnnouncement(message: string): string;
145
145
  }
146
+ /**
147
+ * The social sign-in buttons' three labels (FUT-1263).
148
+ *
149
+ * One key per provider rather than a single string, because the buttons are
150
+ * rendered from a dynamic provider list — a host mapping over `['google',
151
+ * 'facebook']` indexes this, instead of growing a switch at the call site.
152
+ */
153
+ export interface SocialLoginCopy {
154
+ google: string;
155
+ facebook: string;
156
+ apple: string;
157
+ }
146
158
  //# sourceMappingURL=form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/copy/form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/copy/form.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * The en-US pack for the form family. Split the same way `pt-BR.form.ts` is —
3
3
  * see `en-US.ts` for why.
4
4
  */
5
- import type { AddressAutocompleteCopy, AutocompleteCopy, CodeEditorCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, UploadButtonCopy } from './copy';
5
+ import type { AddressAutocompleteCopy, AutocompleteCopy, CodeEditorCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, SocialLoginCopy, UploadButtonCopy } from './copy';
6
6
  export declare const EN_US_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy;
7
7
  export declare const EN_US_AUTOCOMPLETE_COPY: AutocompleteCopy;
8
8
  export declare const EN_US_CODE_EDITOR_COPY: CodeEditorCopy;
@@ -10,4 +10,5 @@ export declare const EN_US_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy;
10
10
  export declare const EN_US_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy;
11
11
  export declare const EN_US_PHONE_INPUT_COPY: PhoneInputCopy;
12
12
  export declare const EN_US_UPLOAD_BUTTON_COPY: UploadButtonCopy;
13
+ export declare const EN_US_SOCIAL_LOGIN_COPY: SocialLoginCopy;
13
14
  //# sourceMappingURL=en-US.form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"en-US.form.d.ts","sourceRoot":"","sources":["../../src/en-US.form.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,+BAA+B,EAAE,uBAK7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAIrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAYpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,oBA4B1C,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAY5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAMpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,gBAStC,CAAC"}
1
+ {"version":3,"file":"en-US.form.d.ts","sourceRoot":"","sources":["../../src/en-US.form.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EACjB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,+BAA+B,EAAE,uBAK7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAIrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAYpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,oBA4B1C,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAY5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAMpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,gBAStC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAIrC,CAAC"}
@@ -19,7 +19,7 @@
19
19
  */
20
20
  import type { DataViewsCopy } from './components/data-display/DataViews/data-views-copy';
21
21
  import type { SavedViewsLabels } from './components/layout/ContentToolbar/ContentToolbar.types';
22
- import type { AddressAutocompleteCopy, AutocompleteCopy, BreadcrumbCopy, CarouselCopy, CategorySelectCopy, CepFieldCopy, ChromeCopy, CodeEditorCopy, CommandPaletteCopy, ConfirmActionCopy, DataStateCopy, InstallPromptCopy, LightboxCopy, MapPreviewCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, SectionOnboardingCopy, TableFilterCopy, TimingDiagramCopy, TutorialCopy, UploadButtonCopy, UserAvatarCopy } from './copy';
22
+ import type { AddressAutocompleteCopy, AutocompleteCopy, BreadcrumbCopy, CarouselCopy, CategorySelectCopy, CepFieldCopy, ChromeCopy, CodeEditorCopy, CommandPaletteCopy, ConfirmActionCopy, DataStateCopy, InstallPromptCopy, LightboxCopy, MapPreviewCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, SectionOnboardingCopy, SocialLoginCopy, TableFilterCopy, TimingDiagramCopy, TutorialCopy, UploadButtonCopy, UserAvatarCopy } from "./copy";
23
23
  type LocalePack<T> = {
24
24
  readonly 'pt-BR': T;
25
25
  readonly 'en-US': T;
@@ -32,6 +32,7 @@ export declare const DATA_STATE_COPY: LocalePack<DataStateCopy>;
32
32
  export declare const DATA_VIEWS_COPY: LocalePack<DataViewsCopy>;
33
33
  export declare const TUTORIAL_COPY: LocalePack<TutorialCopy>;
34
34
  export declare const CHROME_COPY: LocalePack<ChromeCopy>;
35
+ export declare const SOCIAL_LOGIN_COPY: LocalePack<SocialLoginCopy>;
35
36
  export declare const ADDRESS_AUTOCOMPLETE_COPY: LocalePack<AddressAutocompleteCopy>;
36
37
  export declare const AUTOCOMPLETE_COPY: LocalePack<AutocompleteCopy>;
37
38
  export declare const CODE_EDITOR_COPY: LocalePack<CodeEditorCopy>;
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../src/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,QAAQ,CAAC;AAIhB,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAKlE,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,eAAe,2BAG3B,CAAC;AACF,eAAO,MAAM,eAAe,2BAG3B,CAAC;AAGF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,WAAW,wBAA+D,CAAC;AAGxF,eAAO,MAAM,yBAAyB,qCAGrC,CAAC;AACF,eAAO,MAAM,iBAAiB,8BAG7B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,sBAAsB,kCAGlC,CAAC;AACF,eAAO,MAAM,wBAAwB,mCAGpC,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AAGF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,eAAe,4BAG3B,CAAC;AAGF,eAAO,MAAM,uBAAuB,mCAGnC,CAAC;AACF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,cAAc,0BAAuE,CAAC;AACnG,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../src/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,QAAQ,CAAC;AAIhB,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAKlE,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,eAAe,2BAG3B,CAAC;AACF,eAAO,MAAM,eAAe,2BAG3B,CAAC;AAGF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,WAAW,wBAA+D,CAAC;AAGxF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AACF,eAAO,MAAM,yBAAyB,qCAGrC,CAAC;AACF,eAAO,MAAM,iBAAiB,8BAG7B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,sBAAsB,kCAGlC,CAAC;AACF,eAAO,MAAM,wBAAwB,mCAGpC,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AAGF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,eAAe,4BAG3B,CAAC;AAGF,eAAO,MAAM,uBAAuB,mCAGnC,CAAC;AACF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,cAAc,0BAAuE,CAAC;AACnG,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * The pt-BR pack for the form family. Split out of `pt-BR.ts`, which is a
3
3
  * barrel over this folder — see that file for why.
4
4
  */
5
- import type { AddressAutocompleteCopy, AutocompleteCopy, CodeEditorCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, UploadButtonCopy } from './copy';
5
+ import type { AddressAutocompleteCopy, AutocompleteCopy, CodeEditorCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, SocialLoginCopy, UploadButtonCopy } from './copy';
6
6
  export declare const PT_BR_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy;
7
7
  export declare const PT_BR_AUTOCOMPLETE_COPY: AutocompleteCopy;
8
8
  export declare const PT_BR_CODE_EDITOR_COPY: CodeEditorCopy;
@@ -10,4 +10,5 @@ export declare const PT_BR_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy;
10
10
  export declare const PT_BR_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy;
11
11
  export declare const PT_BR_PHONE_INPUT_COPY: PhoneInputCopy;
12
12
  export declare const PT_BR_UPLOAD_BUTTON_COPY: UploadButtonCopy;
13
+ export declare const PT_BR_SOCIAL_LOGIN_COPY: SocialLoginCopy;
13
14
  //# sourceMappingURL=pt-BR.form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pt-BR.form.d.ts","sourceRoot":"","sources":["../../src/pt-BR.form.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,+BAA+B,EAAE,uBAK7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAIrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAUpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,oBAyB1C,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAY5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAIpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,gBAStC,CAAC"}
1
+ {"version":3,"file":"pt-BR.form.d.ts","sourceRoot":"","sources":["../../src/pt-BR.form.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EACjB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,+BAA+B,EAAE,uBAK7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAIrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAUpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,oBAyB1C,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAY5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAIpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,gBAStC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAIrC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import type { SocialLoginCopy } from '../copy/form';
2
3
  export type SocialProvider = 'google' | 'facebook' | 'apple';
3
4
  /**
4
5
  * SVG Icons for social providers
@@ -12,6 +13,29 @@ export interface SocialLoginButtonProps {
12
13
  loading?: boolean;
13
14
  disabled?: boolean;
14
15
  fullWidth?: boolean;
16
+ /**
17
+ * The three provider labels (FUT-1263). `SOCIAL_LOGIN_COPY` ships both
18
+ * languages, so a host passes `SOCIAL_LOGIN_COPY["pt-BR"]` rather than
19
+ * authoring a word.
20
+ *
21
+ * These used to be English string literals inside `providerConfig`, reachable
22
+ * by nothing: a pt-BR storefront rendered "Continue with Google" on an
23
+ * otherwise Portuguese sign-in screen and had no way to change it.
24
+ *
25
+ * OPTIONAL, unlike every other `copy` in this package, and defaulted to the
26
+ * en-US pack. That is a deliberate exception so this ships as a MINOR: making
27
+ * it required would break every existing caller on a routine update. The cost
28
+ * is the one this package's convention exists to avoid — a host that says
29
+ * nothing still renders English — so a consumer wanting Portuguese must pass
30
+ * the pack, and FUT-1263 is not closed until it does.
31
+ */
32
+ copy?: SocialLoginCopy;
33
+ /**
34
+ * Per-provider test hook. Without one all three buttons render the same
35
+ * `data-testid`, leaving their visible text as the only selector — which is
36
+ * exactly the text a host is now expected to translate.
37
+ */
38
+ dataTestId?: string;
15
39
  }
16
40
  /**
17
41
  * Social login button using UI package Button component
@@ -1 +1 @@
1
- {"version":3,"file":"social-login-button.d.ts","sourceRoot":"","sources":["../../../src/social-login-button/social-login-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,QAAA,MAAM,UAAU,QAAO,KAAK,CAAC,YAmB5B,CAAC;AAEF,QAAA,MAAM,YAAY,QAAO,KAAK,CAAC,YAO9B,CAAC;AAEF,QAAA,MAAM,SAAS,QAAO,KAAK,CAAC,YAI3B,CAAC;AAsDF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,kGA0B7B,CAAC;AAIF;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,KAA6B,EAC7B,QAAQ,EACR,WAAmB,EACnB,WAAkB,EAClB,QAAc,GACf,EAAE,yBAAyB,GAAG,KAAK,CAAC,YAAY,CAyChD;AAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"social-login-button.d.ts","sourceRoot":"","sources":["../../../src/social-login-button/social-login-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,QAAA,MAAM,UAAU,QAAO,KAAK,CAAC,YAmB5B,CAAC;AAEF,QAAA,MAAM,YAAY,QAAO,KAAK,CAAC,YAO9B,CAAC;AAEF,QAAA,MAAM,SAAS,QAAO,KAAK,CAAC,YAI3B,CAAC;AAkDF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,kGAsC7B,CAAC;AAIF;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,KAA6B,EAC7B,QAAQ,EACR,WAAmB,EACnB,WAAkB,EAClB,QAAc,GACf,EAAE,yBAAyB,GAAG,KAAK,CAAC,YAAY,CAyChD;AAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.15.1",
3
+ "version": "6.16.0",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
package/src/copy/form.ts CHANGED
@@ -152,3 +152,16 @@ export interface UploadButtonCopy {
152
152
  /** The component's own error, announced. Takes the message it wraps. */
153
153
  errorAnnouncement(message: string): string;
154
154
  }
155
+
156
+ /**
157
+ * The social sign-in buttons' three labels (FUT-1263).
158
+ *
159
+ * One key per provider rather than a single string, because the buttons are
160
+ * rendered from a dynamic provider list — a host mapping over `['google',
161
+ * 'facebook']` indexes this, instead of growing a switch at the call site.
162
+ */
163
+ export interface SocialLoginCopy {
164
+ google: string;
165
+ facebook: string;
166
+ apple: string;
167
+ }
package/src/en-US.form.ts CHANGED
@@ -9,6 +9,7 @@ import type {
9
9
  PasswordStrengthCopy,
10
10
  PhoneInputCopy,
11
11
  RichEditorToolbarCopy,
12
+ SocialLoginCopy,
12
13
  UploadButtonCopy,
13
14
  } from './copy';
14
15
 
@@ -101,3 +102,9 @@ export const EN_US_UPLOAD_BUTTON_COPY: UploadButtonCopy = {
101
102
  uploadInProgress: (percent) => `Upload in progress: ${percent}%`,
102
103
  errorAnnouncement: (message) => `Error: ${message}`,
103
104
  };
105
+
106
+ export const EN_US_SOCIAL_LOGIN_COPY: SocialLoginCopy = {
107
+ google: "Continue with Google",
108
+ facebook: "Continue with Facebook",
109
+ apple: "Continue with Apple",
110
+ };
package/src/locales.ts CHANGED
@@ -38,12 +38,13 @@ import type {
38
38
  PhoneInputCopy,
39
39
  RichEditorToolbarCopy,
40
40
  SectionOnboardingCopy,
41
+ SocialLoginCopy,
41
42
  TableFilterCopy,
42
43
  TimingDiagramCopy,
43
44
  TutorialCopy,
44
45
  UploadButtonCopy,
45
46
  UserAvatarCopy,
46
- } from './copy';
47
+ } from "./copy";
47
48
  import * as en from './en-US';
48
49
  import * as pt from './pt-BR';
49
50
 
@@ -76,6 +77,10 @@ export const TUTORIAL_COPY = pack<TutorialCopy>(pt.PT_BR_TUTORIAL_COPY, en.EN_US
76
77
  export const CHROME_COPY = pack<ChromeCopy>(pt.PT_BR_CHROME_COPY, en.EN_US_CHROME_COPY);
77
78
 
78
79
  // form
80
+ export const SOCIAL_LOGIN_COPY = pack<SocialLoginCopy>(
81
+ pt.PT_BR_SOCIAL_LOGIN_COPY,
82
+ en.EN_US_SOCIAL_LOGIN_COPY,
83
+ );
79
84
  export const ADDRESS_AUTOCOMPLETE_COPY = pack<AddressAutocompleteCopy>(
80
85
  pt.PT_BR_ADDRESS_AUTOCOMPLETE_COPY,
81
86
  en.EN_US_ADDRESS_AUTOCOMPLETE_COPY,
package/src/pt-BR.form.ts CHANGED
@@ -9,6 +9,7 @@ import type {
9
9
  PasswordStrengthCopy,
10
10
  PhoneInputCopy,
11
11
  RichEditorToolbarCopy,
12
+ SocialLoginCopy,
12
13
  UploadButtonCopy,
13
14
  } from './copy';
14
15
 
@@ -94,3 +95,9 @@ export const PT_BR_UPLOAD_BUTTON_COPY: UploadButtonCopy = {
94
95
  uploadInProgress: (percent) => `Envio em andamento: ${percent}%`,
95
96
  errorAnnouncement: (message) => `Erro: ${message}`,
96
97
  };
98
+
99
+ export const PT_BR_SOCIAL_LOGIN_COPY: SocialLoginCopy = {
100
+ google: "Continuar com o Google",
101
+ facebook: "Continuar com o Facebook",
102
+ apple: "Continuar com a Apple",
103
+ };
@@ -8,6 +8,8 @@ import { Card, CardContent } from '../components/layout/Card';
8
8
  import { Heading } from '../components/typography/Heading';
9
9
  import { Text } from '../components/typography/Text';
10
10
  import { Separator } from '../components/layout/Separator';
11
+ import type { SocialLoginCopy } from '../copy/form';
12
+ import { EN_US_SOCIAL_LOGIN_COPY } from '../en-US.form';
11
13
 
12
14
  export type SocialProvider = 'google' | 'facebook' | 'apple';
13
15
 
@@ -51,7 +53,6 @@ const AppleIcon = (): React.ReactElement => (
51
53
  );
52
54
 
53
55
  interface ProviderConfig {
54
- label: string;
55
56
  Icon: () => React.ReactElement;
56
57
  variant: 'solid' | 'outline' | 'ghost';
57
58
  color: 'primary' | 'secondary' | 'neutral';
@@ -60,7 +61,6 @@ interface ProviderConfig {
60
61
 
61
62
  const providerConfig: Record<SocialProvider, ProviderConfig> = {
62
63
  google: {
63
- label: "Continue with Google",
64
64
  Icon: GoogleIcon,
65
65
  variant: 'outline',
66
66
  color: 'neutral',
@@ -75,7 +75,6 @@ const providerConfig: Record<SocialProvider, ProviderConfig> = {
75
75
  },
76
76
  },
77
77
  facebook: {
78
- label: "Continue with Facebook",
79
78
  Icon: FacebookIcon,
80
79
  variant: 'solid',
81
80
  color: 'primary',
@@ -88,7 +87,6 @@ const providerConfig: Record<SocialProvider, ProviderConfig> = {
88
87
  },
89
88
  },
90
89
  apple: {
91
- label: "Continue with Apple",
92
90
  Icon: AppleIcon,
93
91
  variant: 'solid',
94
92
  color: 'neutral',
@@ -108,13 +106,47 @@ export interface SocialLoginButtonProps {
108
106
  loading?: boolean;
109
107
  disabled?: boolean;
110
108
  fullWidth?: boolean;
109
+ /**
110
+ * The three provider labels (FUT-1263). `SOCIAL_LOGIN_COPY` ships both
111
+ * languages, so a host passes `SOCIAL_LOGIN_COPY["pt-BR"]` rather than
112
+ * authoring a word.
113
+ *
114
+ * These used to be English string literals inside `providerConfig`, reachable
115
+ * by nothing: a pt-BR storefront rendered "Continue with Google" on an
116
+ * otherwise Portuguese sign-in screen and had no way to change it.
117
+ *
118
+ * OPTIONAL, unlike every other `copy` in this package, and defaulted to the
119
+ * en-US pack. That is a deliberate exception so this ships as a MINOR: making
120
+ * it required would break every existing caller on a routine update. The cost
121
+ * is the one this package's convention exists to avoid — a host that says
122
+ * nothing still renders English — so a consumer wanting Portuguese must pass
123
+ * the pack, and FUT-1263 is not closed until it does.
124
+ */
125
+ copy?: SocialLoginCopy;
126
+ /**
127
+ * Per-provider test hook. Without one all three buttons render the same
128
+ * `data-testid`, leaving their visible text as the only selector — which is
129
+ * exactly the text a host is now expected to translate.
130
+ */
131
+ dataTestId?: string;
111
132
  }
112
133
 
113
134
  /**
114
135
  * Social login button using UI package Button component
115
136
  */
116
137
  export const SocialLoginButton = React.forwardRef<HTMLButtonElement, SocialLoginButtonProps>(
117
- ({ provider, onClick, loading = false, disabled = false, fullWidth = true }, ref) => {
138
+ (
139
+ {
140
+ provider,
141
+ onClick,
142
+ loading = false,
143
+ disabled = false,
144
+ fullWidth = true,
145
+ copy = EN_US_SOCIAL_LOGIN_COPY,
146
+ dataTestId,
147
+ },
148
+ ref,
149
+ ) => {
118
150
  const config = providerConfig[provider];
119
151
 
120
152
  return (
@@ -127,6 +159,7 @@ export const SocialLoginButton = React.forwardRef<HTMLButtonElement, SocialLogin
127
159
  disabled={disabled}
128
160
  onClick={onClick}
129
161
  icon={<config.Icon />}
162
+ dataTestId={dataTestId}
130
163
  fullWidth={fullWidth}
131
164
  sx={{
132
165
  minHeight: 48,
@@ -135,7 +168,7 @@ export const SocialLoginButton = React.forwardRef<HTMLButtonElement, SocialLogin
135
168
  ...config.sx,
136
169
  }}
137
170
  >
138
- {config.label}
171
+ {copy[provider]}
139
172
  </Button>
140
173
  );
141
174
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/en-US.form.ts"],"sourcesContent":["/**\n * The en-US pack for the form family. Split the same way `pt-BR.form.ts` is —\n * see `en-US.ts` for why.\n */\nimport type {\n AddressAutocompleteCopy,\n AutocompleteCopy,\n CodeEditorCopy,\n PasswordStrengthCopy,\n PhoneInputCopy,\n RichEditorToolbarCopy,\n UploadButtonCopy,\n} from './copy';\n\nexport const EN_US_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy = {\n loadingMaps: \"Loading Google Maps…\",\n mapsLoadFailed:\n \"Could not load the Google Maps API. Check the API key and the internet connection.\",\n useCurrentLocation: \"Use my current location\",\n};\n\nexport const EN_US_AUTOCOMPLETE_COPY: AutocompleteCopy = {\n loading: \"Loading…\",\n noResults: \"No results found\",\n placeholder: \"Type to search…\",\n};\n\nexport const EN_US_CODE_EDITOR_COPY: CodeEditorCopy = {\n loading: \"Loading the editor…\",\n readOnly: \"Read only\",\n // The shortcut is the editor's own binding and is not translated — it is what\n // the reader must press, not something they read.\n formatCode: \"Format code (Ctrl+Shift+F)\",\n enableWrap: \"Wrap lines\",\n disableWrap: \"Do not wrap lines\",\n copyToClipboard: \"Copy to clipboard\",\n copied: \"Copied!\",\n enterFullscreen: \"Full screen\",\n exitFullscreen: \"Leave full screen\",\n};\n\nexport const EN_US_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy = {\n strengthHeading: \"Password strength\",\n requirementsHeading: \"Requirements:\",\n suggestionsHeading: \"Suggestions:\",\n bands: {\n veryWeak: \"Very weak\",\n weak: \"Weak\",\n fair: \"Fair\",\n good: \"Good\",\n strong: \"Strong\",\n },\n requirements: {\n // The count is the HOST's configured minimum, interpolated rather than\n // written out: a host raising it must not end up with a requirement naming\n // the old number.\n minLength: (count) => `At least ${count} characters`,\n uppercase: \"One uppercase letter\",\n lowercase: \"One lowercase letter\",\n numbers: \"One number\",\n special: \"One special character\",\n },\n suggestions: {\n minLength: (count) => `Use at least ${count} characters`,\n uppercase: \"Add uppercase letters\",\n lowercase: \"Add lowercase letters\",\n numbers: \"Include numbers\",\n special: \"Add special characters\",\n },\n};\n\nexport const EN_US_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy = {\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n bulletList: \"Bulleted list\",\n numberedList: \"Numbered list\",\n quote: \"Quote\",\n code: \"Code\",\n insertLink: \"Insert link\",\n textColor: \"Text colour\",\n backgroundColor: \"Background colour\",\n linkPrompt: \"Enter the URL:\",\n};\n\nexport const EN_US_PHONE_INPUT_COPY: PhoneInputCopy = {\n selectCountry: \"Select country\",\n invalidNumber: (countryName) => `Not a valid phone number for ${countryName}`,\n // Substituted into the sentence above when no country is chosen, so it has to\n // read as a noun phrase inside it rather than as a sentence of its own.\n unknownCountry: \"the selected country\",\n};\n\nexport const EN_US_UPLOAD_BUTTON_COPY: UploadButtonCopy = {\n buttonLabel: \"Upload a file\",\n dropzoneHint: \"Drop the file here, or click to choose one\",\n dropzoneRole: (label) => `File upload area. ${label}`,\n uploading: \"Uploading…\",\n dropReady: \"File ready to drop\",\n percentUploaded: (percent) => `${percent}% uploaded`,\n uploadInProgress: (percent) => `Upload in progress: ${percent}%`,\n errorAnnouncement: (message) => `Error: ${message}`,\n};\n"],"mappings":";AAcO,IAAM,kCAA2D;AAAA,EACtE,aAAa;AAAA,EACb,gBACE;AAAA,EACF,oBAAoB;AACtB;AAEO,IAAM,0BAA4C;AAAA,EACvD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AACf;AAEO,IAAM,yBAAyC;AAAA,EACpD,SAAS;AAAA,EACT,UAAU;AAAA;AAAA;AAAA,EAGV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAClB;AAEO,IAAM,+BAAqD;AAAA,EAChE,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,OAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA;AAAA;AAAA;AAAA,IAIZ,WAAW,CAAC,UAAU,YAAY,KAAK;AAAA,IACvC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,WAAW,CAAC,UAAU,gBAAgB,KAAK;AAAA,IAC3C,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAEO,IAAM,iCAAwD;AAAA,EACnE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,YAAY;AACd;AAEO,IAAM,yBAAyC;AAAA,EACpD,eAAe;AAAA,EACf,eAAe,CAAC,gBAAgB,gCAAgC,WAAW;AAAA;AAAA;AAAA,EAG3E,gBAAgB;AAClB;AAEO,IAAM,2BAA6C;AAAA,EACxD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc,CAAC,UAAU,qBAAqB,KAAK;AAAA,EACnD,WAAW;AAAA,EACX,WAAW;AAAA,EACX,iBAAiB,CAAC,YAAY,GAAG,OAAO;AAAA,EACxC,kBAAkB,CAAC,YAAY,uBAAuB,OAAO;AAAA,EAC7D,mBAAmB,CAAC,YAAY,UAAU,OAAO;AACnD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pt-BR.form.ts"],"sourcesContent":["/**\n * The pt-BR pack for the form family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type {\n AddressAutocompleteCopy,\n AutocompleteCopy,\n CodeEditorCopy,\n PasswordStrengthCopy,\n PhoneInputCopy,\n RichEditorToolbarCopy,\n UploadButtonCopy,\n} from './copy';\n\nexport const PT_BR_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy = {\n loadingMaps: \"Carregando o Google Maps…\",\n mapsLoadFailed:\n \"Não foi possível carregar a API do Google Maps. Verifique a chave da API e a conexão com a internet.\",\n useCurrentLocation: \"Usar a localização atual\",\n};\n\nexport const PT_BR_AUTOCOMPLETE_COPY: AutocompleteCopy = {\n loading: \"Carregando…\",\n noResults: \"Nenhum resultado encontrado\",\n placeholder: \"Digite para buscar…\",\n};\n\nexport const PT_BR_CODE_EDITOR_COPY: CodeEditorCopy = {\n loading: \"Carregando o editor…\",\n readOnly: \"Somente leitura\",\n formatCode: \"Formatar o código (Ctrl+Shift+F)\",\n enableWrap: \"Quebrar as linhas\",\n disableWrap: \"Não quebrar as linhas\",\n copyToClipboard: \"Copiar para a área de transferência\",\n copied: \"Copiado!\",\n enterFullscreen: \"Tela cheia\",\n exitFullscreen: \"Sair da tela cheia\",\n};\n\nexport const PT_BR_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy = {\n strengthHeading: \"Força da senha\",\n requirementsHeading: \"Requisitos:\",\n suggestionsHeading: \"Sugestões:\",\n bands: {\n veryWeak: \"Muito fraca\",\n weak: \"Fraca\",\n fair: \"Razoável\",\n good: \"Boa\",\n strong: \"Forte\",\n },\n requirements: {\n minLength: (count) => `Pelo menos ${count} caracteres`,\n uppercase: \"Uma letra maiúscula\",\n lowercase: \"Uma letra minúscula\",\n numbers: \"Um número\",\n special: \"Um caractere especial\",\n },\n suggestions: {\n minLength: (count) => `Use pelo menos ${count} caracteres`,\n uppercase: \"Adicione letras maiúsculas\",\n lowercase: \"Adicione letras minúsculas\",\n numbers: \"Inclua números\",\n special: \"Adicione caracteres especiais\",\n },\n};\n\nexport const PT_BR_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy = {\n bold: \"Negrito\",\n italic: \"Itálico\",\n underline: \"Sublinhado\",\n bulletList: \"Lista com marcadores\",\n numberedList: \"Lista numerada\",\n quote: \"Citação\",\n code: \"Código\",\n insertLink: \"Inserir link\",\n textColor: \"Cor do texto\",\n backgroundColor: \"Cor de fundo\",\n linkPrompt: \"Informe a URL:\",\n};\n\nexport const PT_BR_PHONE_INPUT_COPY: PhoneInputCopy = {\n selectCountry: \"Selecionar o país\",\n invalidNumber: (countryName) => `Telefone inválido para ${countryName}`,\n unknownCountry: \"o país selecionado\",\n};\n\nexport const PT_BR_UPLOAD_BUTTON_COPY: UploadButtonCopy = {\n buttonLabel: \"Enviar arquivo\",\n dropzoneHint: \"Solte o arquivo aqui ou clique para escolher\",\n dropzoneRole: (label) => `Área de upload de arquivo. ${label}`,\n uploading: \"Enviando…\",\n dropReady: \"Arquivo pronto para soltar\",\n percentUploaded: (percent) => `${percent}% enviado`,\n uploadInProgress: (percent) => `Envio em andamento: ${percent}%`,\n errorAnnouncement: (message) => `Erro: ${message}`,\n};\n"],"mappings":";AAcO,IAAM,kCAA2D;AAAA,EACtE,aAAa;AAAA,EACb,gBACE;AAAA,EACF,oBAAoB;AACtB;AAEO,IAAM,0BAA4C;AAAA,EACvD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AACf;AAEO,IAAM,yBAAyC;AAAA,EACpD,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAClB;AAEO,IAAM,+BAAqD;AAAA,EAChE,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,OAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA,IACZ,WAAW,CAAC,UAAU,cAAc,KAAK;AAAA,IACzC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,WAAW,CAAC,UAAU,kBAAkB,KAAK;AAAA,IAC7C,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAEO,IAAM,iCAAwD;AAAA,EACnE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,YAAY;AACd;AAEO,IAAM,yBAAyC;AAAA,EACpD,eAAe;AAAA,EACf,eAAe,CAAC,gBAAgB,6BAA0B,WAAW;AAAA,EACrE,gBAAgB;AAClB;AAEO,IAAM,2BAA6C;AAAA,EACxD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc,CAAC,UAAU,iCAA8B,KAAK;AAAA,EAC5D,WAAW;AAAA,EACX,WAAW;AAAA,EACX,iBAAiB,CAAC,YAAY,GAAG,OAAO;AAAA,EACxC,kBAAkB,CAAC,YAAY,uBAAuB,OAAO;AAAA,EAC7D,mBAAmB,CAAC,YAAY,SAAS,OAAO;AAClD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/social-login-button/social-login-button.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport Box from '@mui/material/Box/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport { Button } from '../components/form/Button';\nimport { Card, CardContent } from '../components/layout/Card';\nimport { Heading } from '../components/typography/Heading';\nimport { Text } from '../components/typography/Text';\nimport { Separator } from '../components/layout/Separator';\n\nexport type SocialProvider = 'google' | 'facebook' | 'apple';\n\n/**\n * SVG Icons for social providers\n */\nconst GoogleIcon = (): React.ReactElement => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n fill=\"#EA4335\"\n />\n </svg>\n);\n\nconst FacebookIcon = (): React.ReactElement => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24 12c0-6.627-5.373-12-12-12S0 5.373 0 12c0 5.99 4.388 10.954 10.125 11.854V15.47H7.078V12h3.047V9.356c0-3.007 1.792-4.668 4.533-4.668 1.312 0 2.686.234 2.686.234v2.953H15.83c-1.491 0-1.956.925-1.956 1.874V12h3.328l-.532 3.469h-2.796v8.385C19.612 22.954 24 17.99 24 12z\"\n fill=\"#1877F2\"\n />\n </svg>\n);\n\nconst AppleIcon = (): React.ReactElement => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\" />\n </svg>\n);\n\ninterface ProviderConfig {\n label: string;\n Icon: () => React.ReactElement;\n variant: 'solid' | 'outline' | 'ghost';\n color: 'primary' | 'secondary' | 'neutral';\n sx?: object;\n}\n\nconst providerConfig: Record<SocialProvider, ProviderConfig> = {\n google: {\n label: \"Continue with Google\",\n Icon: GoogleIcon,\n variant: 'outline',\n color: 'neutral',\n sx: {\n backgroundColor: '#ffffff',\n color: '#1f1f1f',\n borderColor: '#dadce0',\n '&:hover': {\n backgroundColor: '#f5f5f5',\n borderColor: '#dadce0',\n },\n },\n },\n facebook: {\n label: \"Continue with Facebook\",\n Icon: FacebookIcon,\n variant: 'solid',\n color: 'primary',\n sx: {\n backgroundColor: '#1877F2',\n color: '#ffffff',\n '&:hover': {\n backgroundColor: '#166fe5',\n },\n },\n },\n apple: {\n label: \"Continue with Apple\",\n Icon: AppleIcon,\n variant: 'solid',\n color: 'neutral',\n sx: {\n backgroundColor: '#000000',\n color: '#ffffff',\n '&:hover': {\n backgroundColor: '#1a1a1a',\n },\n },\n },\n};\n\nexport interface SocialLoginButtonProps {\n provider: SocialProvider;\n onClick?: () => void;\n loading?: boolean;\n disabled?: boolean;\n fullWidth?: boolean;\n}\n\n/**\n * Social login button using UI package Button component\n */\nexport const SocialLoginButton = React.forwardRef<HTMLButtonElement, SocialLoginButtonProps>(\n ({ provider, onClick, loading = false, disabled = false, fullWidth = true }, ref) => {\n const config = providerConfig[provider];\n\n return (\n <Button\n ref={ref}\n variant={config.variant}\n color={config.color}\n size=\"lg\"\n loading={loading}\n disabled={disabled}\n onClick={onClick}\n icon={<config.Icon />}\n fullWidth={fullWidth}\n sx={{\n minHeight: 48,\n justifyContent: 'flex-start',\n gap: 2,\n ...config.sx,\n }}\n >\n {config.label}\n </Button>\n );\n }\n);\n\nSocialLoginButton.displayName = 'SocialLoginButton';\n\n/**\n * Container for social login buttons with optional divider\n */\nexport interface SocialLoginContainerProps {\n children: React.ReactNode;\n title?: string;\n subtitle?: string;\n showDivider?: boolean;\n dividerText?: string;\n /**\n * How wide the card is allowed to get. Defaults to the 400 it has always\n * intended, so nothing that does not ask for a width moves.\n *\n * Worth passing for a card holding a FORM rather than a row of provider\n * buttons: 400 was chosen for the latter, and an e-mail + password pair reads\n * cramped in it.\n */\n maxWidth?: number | string;\n}\n\nexport function SocialLoginContainer({\n children,\n title = \"Sign in to continue\",\n subtitle,\n showDivider = false,\n dividerText = \"or\",\n maxWidth = 400,\n}: SocialLoginContainerProps): React.ReactElement {\n return (\n // `width: 100%` is what makes the cap below mean anything. Every caller\n // centres this card in a flex column (`Container variant=\"centered\"` does),\n // and a flex item under `align-items: center` sizes to its CONTENT — so the\n // card sat at whatever the longest label happened to need, ~267px, at every\n // viewport from 390 to 1280. The 400 was never reached, which is why raising\n // it would have changed nothing; the card had no width to cap.\n <Card variant=\"elevated\" borderRadius=\"lg\" sx={{ width: '100%', maxWidth }}>\n <CardContent>\n <Stack spacing={3} sx={{ width: '100%' }}>\n {title && (\n <Box sx={{ textAlign: 'center' }}>\n <Heading level=\"h2\">\n {title}\n </Heading>\n {subtitle && (\n <Text color=\"secondary\" size=\"sm\">\n {subtitle}\n </Text>\n )}\n </Box>\n )}\n\n <Stack spacing={2}>\n {children}\n </Stack>\n\n {showDivider && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n <Separator />\n <Text color=\"secondary\" size=\"sm\">\n {dividerText}\n </Text>\n <Separator />\n </Box>\n )}\n </Stack>\n </CardContent>\n </Card>\n );\n}\n\nexport { GoogleIcon, FacebookIcon, AppleIcon };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAEA,YAAY,WAAW;AACvB,OAAO,SAAS;AAChB,OAAO,WAAW;AAahB,SACE,KADF;AADF,IAAM,aAAa,MACjB,qBAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAChE;AAAA;AAAA,IAAC;AAAA;AAAA,MACC,GAAE;AAAA,MACF,MAAK;AAAA;AAAA,EACP;AAAA,EACA;AAAA,IAAC;AAAA;AAAA,MACC,GAAE;AAAA,MACF,MAAK;AAAA;AAAA,EACP;AAAA,EACA;AAAA,IAAC;AAAA;AAAA,MACC,GAAE;AAAA,MACF,MAAK;AAAA;AAAA,EACP;AAAA,EACA;AAAA,IAAC;AAAA;AAAA,MACC,GAAE;AAAA,MACF,MAAK;AAAA;AAAA,EACP;AAAA,GACF;AAGF,IAAM,eAAe,MACnB,oBAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAChE;AAAA,EAAC;AAAA;AAAA,IACC,GAAE;AAAA,IACF,MAAK;AAAA;AACP,GACF;AAGF,IAAM,YAAY,MAChB,oBAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,gBAAe,OAAM,8BACxE,8BAAC,UAAK,GAAE,uUAAsU,GAChV;AAWF,IAAM,iBAAyD;AAAA,EAC7D,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,MACF,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,QACT,iBAAiB;AAAA,QACjB,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,MACF,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,WAAW;AAAA,QACT,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,MACF,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,WAAW;AAAA,QACT,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACF;AAaO,IAAM,oBAA0B;AAAA,EACrC,CAAC,EAAE,UAAU,SAAS,UAAU,OAAO,WAAW,OAAO,YAAY,KAAK,GAAG,QAAQ;AACnF,UAAM,SAAS,eAAe,QAAQ;AAEtC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,SAAS,OAAO;AAAA,QAChB,OAAO,OAAO;AAAA,QACd,MAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM,oBAAC,OAAO,MAAP,EAAY;AAAA,QACnB;AAAA,QACA,IAAI;AAAA,UACF,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,KAAK;AAAA,UACL,GAAG,OAAO;AAAA,QACZ;AAAA,QAEC,iBAAO;AAAA;AAAA,IACV;AAAA,EAEJ;AACF;AAEA,kBAAkB,cAAc;AAsBzB,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,cAAc;AAAA,EACd,cAAc;AAAA,EACd,WAAW;AACb,GAAkD;AAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOE,oBAAC,QAAK,SAAQ,YAAW,cAAa,MAAK,IAAI,EAAE,OAAO,QAAQ,SAAS,GACvE,8BAAC,eACC,+BAAC,SAAM,SAAS,GAAG,IAAI,EAAE,OAAO,OAAO,GACpC;AAAA,eACC,qBAAC,OAAI,IAAI,EAAE,WAAW,SAAS,GAC7B;AAAA,4BAAC,WAAQ,OAAM,MACZ,iBACH;AAAA,QACC,YACC,oBAAC,QAAK,OAAM,aAAY,MAAK,MAC1B,oBACH;AAAA,SAEJ;AAAA,MAGF,oBAAC,SAAM,SAAS,GACb,UACH;AAAA,MAEC,eACC,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAE,GACvD;AAAA,4BAAC,aAAU;AAAA,QACX,oBAAC,QAAK,OAAM,aAAY,MAAK,MAC1B,uBACH;AAAA,QACA,oBAAC,aAAU;AAAA,SACb;AAAA,OAEJ,GACF,GACF;AAAA;AAEJ;","names":[]}