@buildbase/sdk 0.0.89 → 0.0.90
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.
- package/AGENTS.md +7 -3
- package/CHANGELOG.md +505 -0
- package/README.md +120 -3
- package/dist/cli.mjs +1 -1
- package/dist/css/styles.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1350 -11
- package/dist/index.mjs +1 -1
- package/dist/mcp/index.cjs +1 -1
- package/dist/mcp/index.d.ts +120 -2
- package/dist/mcp/index.mjs +1 -1
- package/dist/react/chunks/SettingsDialog-BVyV5Zfm.mjs +2 -0
- package/dist/react/chunks/SettingsDialog-Ch8X6WXy.cjs +2 -0
- package/dist/react/chunks/{SubscriptionDialog-B8FTFRtp.cjs → SubscriptionDialog-CGIvMKpT.cjs} +1 -1
- package/dist/react/chunks/SubscriptionDialog-g0LwHhbe.mjs +2 -0
- package/dist/react/chunks/ar-3aqWucom.mjs +2 -0
- package/dist/react/chunks/ar-DQVB89r8.cjs +2 -0
- package/dist/react/chunks/de-DO10bhnU.cjs +2 -0
- package/dist/react/chunks/de-HXQk5D6k.mjs +2 -0
- package/dist/react/chunks/es-BZsmhBN3.mjs +2 -0
- package/dist/react/chunks/es-Cxg-qhUh.cjs +2 -0
- package/dist/react/chunks/fr-COCMy3vW.cjs +2 -0
- package/dist/react/chunks/fr-rdnNHzxy.mjs +2 -0
- package/dist/react/chunks/hi-BB0Z-Dgn.cjs +2 -0
- package/dist/react/chunks/hi-t3RH7ITu.mjs +2 -0
- package/dist/react/chunks/ja-CDyla2g0.mjs +2 -0
- package/dist/react/chunks/ja-D92JgUlk.cjs +2 -0
- package/dist/react/chunks/react-DTq7A_PT.mjs +2 -0
- package/dist/react/chunks/react-DeapSbq6.cjs +2 -0
- package/dist/react/chunks/zh-C5HABZZV.mjs +2 -0
- package/dist/react/chunks/zh-DK2yA5wB.cjs +2 -0
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.ts +1517 -14
- package/dist/react/index.mjs +1 -1
- package/docs/ERROR_CODES.md +218 -0
- package/docs/THEMING.md +89 -21
- package/docs/UI-CONFIG.md +23 -4
- package/docs/USER-IMPORT.md +320 -0
- package/package.json +2 -1
- package/dist/react/chunks/SettingsDialog-CKVE1PpH.mjs +0 -2
- package/dist/react/chunks/SettingsDialog-DrDmxFEj.cjs +0 -2
- package/dist/react/chunks/SubscriptionDialog-UN7o9Hqb.mjs +0 -2
- package/dist/react/chunks/ar-B2l90OZJ.cjs +0 -2
- package/dist/react/chunks/ar-DVVNZhXD.mjs +0 -2
- package/dist/react/chunks/de-BspJtvAC.mjs +0 -2
- package/dist/react/chunks/de-dURUqbl0.cjs +0 -2
- package/dist/react/chunks/es-DArjREi5.cjs +0 -2
- package/dist/react/chunks/es-vu4BmI3g.mjs +0 -2
- package/dist/react/chunks/fr-DVm5WCvZ.mjs +0 -2
- package/dist/react/chunks/fr-DhYDaYrX.cjs +0 -2
- package/dist/react/chunks/hi-C_nv_c1T.cjs +0 -2
- package/dist/react/chunks/hi-VW8xCj_K.mjs +0 -2
- package/dist/react/chunks/ja-C-b88dvw.mjs +0 -2
- package/dist/react/chunks/ja-CqtDkLHr.cjs +0 -2
- package/dist/react/chunks/react-CHivaJhA.mjs +0 -2
- package/dist/react/chunks/react-Ch_Suxxy.cjs +0 -2
- package/dist/react/chunks/zh-D1yfhUf0.mjs +0 -2
- package/dist/react/chunks/zh-D_tMpsNt.cjs +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),s=require("lucide-react"),t=require("react"),a=require("./react-DeapSbq6.cjs"),n=require("@radix-ui/react-switch"),i=require("@hookform/resolvers/zod"),r=require("react-hook-form"),o=require("zod"),c=require("@radix-ui/react-icons"),l=require("cmdk"),d=require("@radix-ui/react-select");function u(e){var s=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(s,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}}),s.default=e,Object.freeze(s)}var m=u(t),p=u(n),x=u(d);async function g(e,s){await e.cancelAccountDeletion(),s()}const h=e=>e.session?.user.deleteAfter;function f(){const e=a.useAuthSelector(h),s=a.useAuthStore(),n=t.useCallback(e=>{const t=s.getState().session;if(!t)return;const n=function(e,s){const t=s||void 0;if(e.deleteAfter===t)return e;const{deleteAfter:a,...n}=e;return t?{...n,deleteAfter:t}:n}(t.user,e);n!==t.user&&s.dispatch(a.authActions.setSession({...t,user:n}))},[s]);return[e,n]}const b=({date:s,status:t,onCancel:n,className:i})=>{const{t:r}=a.useTranslation();return"cancelled"===t.kind?e.jsx(a.StatusBanner,{variant:"success",title:r("settings.common.success"),message:r("security.deleteAccountCancelled"),className:i}):s?e.jsxs("div",{className:a.cn("space-y-2",i),children:[e.jsx(a.StatusBanner,{variant:"warning",message:r("security.deleteAccountNotice",{date:s}),actionLabel:r("security.deleteAccountCancel"),onAction:n,actionProgress:"cancelling"===t.kind}),"failed"===t.kind&&e.jsx(a.StatusBanner,{variant:"error",title:r("settings.common.error"),message:t.message})]}):null},S=({className:s})=>{const{t:n,formattingLocale:i}=a.useTranslation(),r=a.useUIConfig(),{api:o}=a.useWorkspaceApiWithOs(),[c,l]=f(),[d,u]=t.useState({kind:"idle"}),m=a.useTransientStatus();if(t.useEffect(()=>{c&&u(e=>"idle"===e.kind?e:{kind:"idle"})},[c]),!1===r.settings?.security?.deleteAccount)return null;const p=c?a.formatDate(c,i,r.formats?.date??{dateStyle:"long"}):void 0;return e.jsx(b,{date:p,status:d,onCancel:async function(){u({kind:"cancelling"});try{await g(o,()=>l(void 0)),u({kind:"cancelled"}),m(()=>u({kind:"idle"}))}catch(e){a.handleError(e,{component:"ScheduledDeletionNotice",action:"cancelAccountDeletion"}),u({kind:"failed",message:a.errorMessageFor(e,n)})}},className:s})},v=()=>e.jsx(a.ConnectedAgents,{title:null});const j={USD:"$",EUR:"€",JPY:"¥",GBP:"£",AUD:"A$",CAD:"C$",CHF:"CHF",CNY:"¥",SEK:"kr",NZD:"NZ$",INR:"₹",RUB:"₽",KRW:"₩",BRL:"R$",ZAR:"R",HKD:"HK$",SGD:"S$",MXN:"Mex$",NOK:"kr",TRY:"₺",IDR:"Rp",PLN:"zł",THB:"฿",ILS:"₪",PHP:"₱",MYR:"RM",CZK:"Kč",HUF:"Ft",DKK:"kr",PKR:"₨",EGP:"£",NGN:"₦",BDT:"৳",UAH:"₴",KZT:"₸",VND:"₫",ARS:"$",BGN:"лв",COP:"COL$",HRK:"kn",ISK:"kr",KES:"KSh",LKR:"Rs",MAD:"د.م.",MNT:"₮",NPR:"रू",RSD:"дин.",SAR:"ر.س",TWD:"NT$",UYU:"$U",YER:"﷼",FJD:"FJ$",JMD:"J$",HTG:"G",BHD:"ب.د",KWD:"د.ك",OMR:"ر.ع.",BND:"B$",KPW:"₩",GHS:"₵",SYP:"ل.س",SLL:"Le",SSP:"£",AFN:"؋",MGA:"Ar",MDL:"lei",FOK:"kr",GMD:"D",LTL:"Lt",LVL:"Ls",HNL:"L",GEL:"₾",BMD:"$",AWG:"Afl",BTN:"Nu",GTQ:"Q",TZS:"TSh",BBD:"Bds$",NAD:"N$",BZD:"$",JEP:"£",WST:"T",PGK:"K",KGS:"лв",AZN:"₼",QAR:"ر.ق",XOF:"CFA",XPF:"CFP"},y={AF:"AFN",AX:"EUR",AL:"ALL",DZ:"DZD",AS:"USD",AD:"EUR",AO:"AOA",AI:"XCD",AQ:"USD",AG:"XCD",AR:"ARS",AM:"AMD",AW:"AWG",AU:"AUD",AT:"EUR",AZ:"AZN",BS:"BSD",BH:"BHD",BD:"BDT",BB:"BBD",BY:"BYN",BE:"EUR",BZ:"BZD",BJ:"XOF",BM:"BMD",BT:"BTN",BO:"BOB",BA:"BAM",BW:"BWP",BV:"NOK",BR:"BRL",IO:"USD",BN:"BND",BG:"BGN",BF:"XOF",BI:"BIF",KH:"KHR",CM:"XAF",CA:"CAD",CV:"CVE",KY:"KYD",CF:"XAF",TD:"XAF",CL:"CLP",CN:"CNY",CX:"AUD",CC:"AUD",CO:"COP",KM:"KMF",CG:"XAF",CD:"CDF",CK:"NZD",CR:"CRC",CI:"XOF",HR:"HRK",CU:"CUP",CY:"EUR",CZ:"CZK",DK:"DKK",DJ:"DJF",DM:"XCD",DO:"DOP",EC:"USD",EG:"EGP",SV:"USD",GQ:"XAF",ER:"ERN",EE:"EUR",ET:"ETB",FK:"FKP",FO:"DKK",FJ:"FJD",FI:"EUR",FR:"EUR",GF:"EUR",PF:"XPF",TF:"EUR",GA:"XAF",GM:"GMD",GE:"GEL",DE:"EUR",GH:"GHS",GI:"GIP",GR:"EUR",GL:"DKK",GD:"XCD",GP:"EUR",GU:"USD",GT:"GTQ",GG:"GBP",GN:"GNF",GW:"XOF",GY:"GYD",HT:"HTG",HM:"AUD",VA:"EUR",HN:"HNL",HK:"HKD",HU:"HUF",IS:"ISK",IN:"INR",ID:"IDR",IR:"IRR",IQ:"IQD",IE:"EUR",IM:"GBP",IL:"ILS",IT:"EUR",JM:"JMD",JP:"JPY",JE:"GBP",JO:"JOD",KZ:"KZT",KE:"KES",KI:"AUD",KP:"KPW",KR:"KRW",KW:"KWD",KG:"KGS",LA:"LAK",LV:"EUR",LB:"LBP",LS:"LSL",LR:"LRD",LY:"LYD",LI:"CHF",LT:"EUR",LU:"EUR",MO:"MOP",MK:"MKD",MG:"MGA",MW:"MWK",MY:"MYR",MV:"MVR",ML:"XOF",MT:"EUR",MH:"USD",MQ:"EUR",MR:"MRU",MU:"MUR",YT:"EUR",MX:"MXN",FM:"USD",MD:"MDL",MC:"EUR",MN:"MNT",ME:"EUR",MS:"XCD",MA:"MAD",MZ:"MZN",MM:"MMK",NA:"NAD",NR:"AUD",NP:"NPR",NL:"EUR",AN:"ANG",NC:"XPF",NZ:"NZD",NI:"NIO",NE:"XOF",NG:"NGN",NU:"NZD",NF:"AUD",MP:"USD",NO:"NOK",OM:"OMR",PK:"PKR",PW:"USD",PS:"ILS",PA:"PAB",PG:"PGK",PY:"PYG",PE:"PEN",PH:"PHP",PN:"NZD",PL:"PLN",PT:"EUR",PR:"USD",QA:"QAR",RE:"EUR",RO:"RON",RU:"RUB",RW:"RWF",SH:"SHP",KN:"XCD",LC:"XCD",PM:"EUR",VC:"XCD",WS:"WST",SM:"EUR",ST:"STN",SA:"SAR",SN:"XOF",RS:"RSD",SC:"SCR",SL:"SLL",SG:"SGD",SK:"EUR",SI:"EUR",SB:"SBD",SO:"SOS",ZA:"ZAR",GS:"GBP",ES:"EUR",LK:"LKR",SD:"SDG",SR:"SRD",SJ:"NOK",SZ:"SZL",SE:"SEK",CH:"CHF",SY:"SYP",TW:"TWD",TJ:"TJS",TZ:"TZS",TH:"THB",TL:"USD",TG:"XOF",TK:"NZD",TO:"TOP",TT:"TTD",TN:"TND",TR:"TRY",TM:"TMT",TC:"USD",TV:"AUD",UG:"UGX",UA:"UAH",AE:"AED",GB:"GBP",US:"USD",UM:"USD",UY:"UYU",UZ:"UZS",VU:"VUV",VE:"VES",VN:"VND",VG:"USD",VI:"USD",WF:"XPF",EH:"MAD",YE:"YER",ZM:"ZMW",ZW:"ZWG"};function N(e){return y[e.toUpperCase()]??null}const A=[{name:"Afghanistan",code:"AF"},{name:"land Islands",code:"AX"},{name:"Albania",code:"AL"},{name:"Algeria",code:"DZ"},{name:"American Samoa",code:"AS"},{name:"AndorrA",code:"AD"},{name:"Angola",code:"AO"},{name:"Anguilla",code:"AI"},{name:"Antarctica",code:"AQ"},{name:"Antigua and Barbuda",code:"AG"},{name:"Argentina",code:"AR"},{name:"Armenia",code:"AM"},{name:"Aruba",code:"AW"},{name:"Australia",code:"AU"},{name:"Austria",code:"AT"},{name:"Azerbaijan",code:"AZ"},{name:"Bahamas",code:"BS"},{name:"Bahrain",code:"BH"},{name:"Bangladesh",code:"BD"},{name:"Barbados",code:"BB"},{name:"Belarus",code:"BY"},{name:"Belgium",code:"BE"},{name:"Belize",code:"BZ"},{name:"Benin",code:"BJ"},{name:"Bermuda",code:"BM"},{name:"Bhutan",code:"BT"},{name:"Bolivia",code:"BO"},{name:"Bosnia and Herzegovina",code:"BA"},{name:"Botswana",code:"BW"},{name:"Bouvet Island",code:"BV"},{name:"Brazil",code:"BR"},{name:"British Indian Ocean Territory",code:"IO"},{name:"Brunei Darussalam",code:"BN"},{name:"Bulgaria",code:"BG"},{name:"Burkina Faso",code:"BF"},{name:"Burundi",code:"BI"},{name:"Cambodia",code:"KH"},{name:"Cameroon",code:"CM"},{name:"Canada",code:"CA"},{name:"Cape Verde",code:"CV"},{name:"Cayman Islands",code:"KY"},{name:"Central African Republic",code:"CF"},{name:"Chad",code:"TD"},{name:"Chile",code:"CL"},{name:"China",code:"CN"},{name:"Christmas Island",code:"CX"},{name:"Cocos (Keeling) Islands",code:"CC"},{name:"Colombia",code:"CO"},{name:"Comoros",code:"KM"},{name:"Congo",code:"CG"},{name:"Congo, The Democratic Republic of the",code:"CD"},{name:"Cook Islands",code:"CK"},{name:"Costa Rica",code:"CR"},{name:"Cote D Ivoire",code:"CI"},{name:"Croatia",code:"HR"},{name:"Cuba",code:"CU"},{name:"Cyprus",code:"CY"},{name:"Czech Republic",code:"CZ"},{name:"Denmark",code:"DK"},{name:"Djibouti",code:"DJ"},{name:"Dominica",code:"DM"},{name:"Dominican Republic",code:"DO"},{name:"Ecuador",code:"EC"},{name:"Egypt",code:"EG"},{name:"El Salvador",code:"SV"},{name:"Equatorial Guinea",code:"GQ"},{name:"Eritrea",code:"ER"},{name:"Estonia",code:"EE"},{name:"Ethiopia",code:"ET"},{name:"Falkland Islands (Malvinas)",code:"FK"},{name:"Faroe Islands",code:"FO"},{name:"Fiji",code:"FJ"},{name:"Finland",code:"FI"},{name:"France",code:"FR"},{name:"French Guiana",code:"GF"},{name:"French Polynesia",code:"PF"},{name:"French Southern Territories",code:"TF"},{name:"Gabon",code:"GA"},{name:"Gambia",code:"GM"},{name:"Georgia",code:"GE"},{name:"Germany",code:"DE"},{name:"Ghana",code:"GH"},{name:"Gibraltar",code:"GI"},{name:"Greece",code:"GR"},{name:"Greenland",code:"GL"},{name:"Grenada",code:"GD"},{name:"Guadeloupe",code:"GP"},{name:"Guam",code:"GU"},{name:"Guatemala",code:"GT"},{name:"Guernsey",code:"GG"},{name:"Guinea",code:"GN"},{name:"Guinea-Bissau",code:"GW"},{name:"Guyana",code:"GY"},{name:"Haiti",code:"HT"},{name:"Heard Island and Mcdonald Islands",code:"HM"},{name:"Holy See (Vatican City State)",code:"VA"},{name:"Honduras",code:"HN"},{name:"Hong Kong",code:"HK"},{name:"Hungary",code:"HU"},{name:"Iceland",code:"IS"},{name:"India",code:"IN"},{name:"Indonesia",code:"ID"},{name:"Iran, Islamic Republic Of",code:"IR"},{name:"Iraq",code:"IQ"},{name:"Ireland",code:"IE"},{name:"Isle of Man",code:"IM"},{name:"Israel",code:"IL"},{name:"Italy",code:"IT"},{name:"Jamaica",code:"JM"},{name:"Japan",code:"JP"},{name:"Jersey",code:"JE"},{name:"Jordan",code:"JO"},{name:"Kazakhstan",code:"KZ"},{name:"Kenya",code:"KE"},{name:"Kiribati",code:"KI"},{name:'Korea, Democratic People"S Republic of',code:"KP"},{name:"Korea, Republic of",code:"KR"},{name:"Kuwait",code:"KW"},{name:"Kyrgyzstan",code:"KG"},{name:'Lao People"S Democratic Republic',code:"LA"},{name:"Latvia",code:"LV"},{name:"Lebanon",code:"LB"},{name:"Lesotho",code:"LS"},{name:"Liberia",code:"LR"},{name:"Libyan Arab Jamahiriya",code:"LY"},{name:"Liechtenstein",code:"LI"},{name:"Lithuania",code:"LT"},{name:"Luxembourg",code:"LU"},{name:"Macao",code:"MO"},{name:"Macedonia, The Former Yugoslav Republic of",code:"MK"},{name:"Madagascar",code:"MG"},{name:"Malawi",code:"MW"},{name:"Malaysia",code:"MY"},{name:"Maldives",code:"MV"},{name:"Mali",code:"ML"},{name:"Malta",code:"MT"},{name:"Marshall Islands",code:"MH"},{name:"Martinique",code:"MQ"},{name:"Mauritania",code:"MR"},{name:"Mauritius",code:"MU"},{name:"Mayotte",code:"YT"},{name:"Mexico",code:"MX"},{name:"Micronesia, Federated States of",code:"FM"},{name:"Moldova, Republic of",code:"MD"},{name:"Monaco",code:"MC"},{name:"Mongolia",code:"MN"},{name:"Montenegro",code:"ME"},{name:"Montserrat",code:"MS"},{name:"Morocco",code:"MA"},{name:"Mozambique",code:"MZ"},{name:"Myanmar",code:"MM"},{name:"Namibia",code:"NA"},{name:"Nauru",code:"NR"},{name:"Nepal",code:"NP"},{name:"Netherlands",code:"NL"},{name:"Netherlands Antilles",code:"AN"},{name:"New Caledonia",code:"NC"},{name:"New Zealand",code:"NZ"},{name:"Nicaragua",code:"NI"},{name:"Niger",code:"NE"},{name:"Nigeria",code:"NG"},{name:"Niue",code:"NU"},{name:"Norfolk Island",code:"NF"},{name:"Northern Mariana Islands",code:"MP"},{name:"Norway",code:"NO"},{name:"Oman",code:"OM"},{name:"Pakistan",code:"PK"},{name:"Palau",code:"PW"},{name:"Palestinian Territory, Occupied",code:"PS"},{name:"Panama",code:"PA"},{name:"Papua New Guinea",code:"PG"},{name:"Paraguay",code:"PY"},{name:"Peru",code:"PE"},{name:"Philippines",code:"PH"},{name:"Pitcairn",code:"PN"},{name:"Poland",code:"PL"},{name:"Portugal",code:"PT"},{name:"Puerto Rico",code:"PR"},{name:"Qatar",code:"QA"},{name:"Reunion",code:"RE"},{name:"Romania",code:"RO"},{name:"Russian Federation",code:"RU"},{name:"RWANDA",code:"RW"},{name:"Saint Helena",code:"SH"},{name:"Saint Kitts and Nevis",code:"KN"},{name:"Saint Lucia",code:"LC"},{name:"Saint Pierre and Miquelon",code:"PM"},{name:"Saint Vincent and the Grenadines",code:"VC"},{name:"Samoa",code:"WS"},{name:"San Marino",code:"SM"},{name:"Sao Tome and Principe",code:"ST"},{name:"Saudi Arabia",code:"SA"},{name:"Senegal",code:"SN"},{name:"Serbia",code:"RS"},{name:"Seychelles",code:"SC"},{name:"Sierra Leone",code:"SL"},{name:"Singapore",code:"SG"},{name:"Slovakia",code:"SK"},{name:"Slovenia",code:"SI"},{name:"Solomon Islands",code:"SB"},{name:"Somalia",code:"SO"},{name:"South Africa",code:"ZA"},{name:"South Georgia and the South Sandwich Islands",code:"GS"},{name:"Spain",code:"ES"},{name:"Sri Lanka",code:"LK"},{name:"Sudan",code:"SD"},{name:"Suriname",code:"SR"},{name:"Svalbard and Jan Mayen",code:"SJ"},{name:"Swaziland",code:"SZ"},{name:"Sweden",code:"SE"},{name:"Switzerland",code:"CH"},{name:"Syrian Arab Republic",code:"SY"},{name:"Taiwan, Province of China",code:"TW"},{name:"Tajikistan",code:"TJ"},{name:"Tanzania, United Republic of",code:"TZ"},{name:"Thailand",code:"TH"},{name:"Timor-Leste",code:"TL"},{name:"Togo",code:"TG"},{name:"Tokelau",code:"TK"},{name:"Tonga",code:"TO"},{name:"Trinidad and Tobago",code:"TT"},{name:"Tunisia",code:"TN"},{name:"Turkey",code:"TR"},{name:"Turkmenistan",code:"TM"},{name:"Turks and Caicos Islands",code:"TC"},{name:"Tuvalu",code:"TV"},{name:"Uganda",code:"UG"},{name:"Ukraine",code:"UA"},{name:"United Arab Emirates",code:"AE"},{name:"United Kingdom",code:"GB"},{name:"United States",code:"US"},{name:"United States Minor Outlying Islands",code:"UM"},{name:"Uruguay",code:"UY"},{name:"Uzbekistan",code:"UZ"},{name:"Vanuatu",code:"VU"},{name:"Venezuela",code:"VE"},{name:"Viet Nam",code:"VN"},{name:"Virgin Islands, British",code:"VG"},{name:"Virgin Islands, U.S.",code:"VI"},{name:"Wallis and Futuna",code:"WF"},{name:"Western Sahara",code:"EH"},{name:"Yemen",code:"YE"},{name:"Zambia",code:"ZM"},{name:"Zimbabwe",code:"ZW"}].map(e=>{const s=y[e.code]||"USD",t=j[s]||"";return{value:e.code,flag:(a=e.code,a.toUpperCase().replace(/./g,e=>String.fromCodePoint(127397+e.charCodeAt(0)))),text:e.name,currencyCode:s,currencyIcon:t};var a});function C(e){const s="undefined"==typeof navigator?[]:navigator.languages?.length?navigator.languages:navigator.language?[navigator.language]:[];for(const e of s){const s=w(e),t=s?N(s):null;if(t)return t.toLowerCase()}return null}function w(e){try{const s=new Intl.Locale(e);return s.region??s.maximize().region??null}catch{return null}}const T=({open:n,onOpenChange:i,packages:r,billingCurrency:o,workspaceName:c,onSelectPackage:l,purchasingPackageId:d,loading:u=!1})=>{const{t:m,dir:p,fmtNum:x,fmtCents:g,formattingLocale:h}=a.useTranslation(),f=t.useMemo(()=>{const e=new Set;return r.forEach(s=>{s.pricingVariants?.forEach(s=>{s.currency&&e.add(s.currency.toLowerCase())})}),Array.from(e)},[r]),b=t.useMemo(()=>{const e=o?.trim().toLowerCase();return e?f.includes(e)?[e]:[]:f},[o,f]),[S,v]=t.useState(()=>a.pickDefaultCurrency(b,[C()])),j=o?.trim().toLowerCase()||S,y=u||!!d;return e.jsx(a.Dialog,{open:n,onOpenChange:i,children:e.jsxs(a.DialogContent,{dir:p,className:"inset-0 w-screen h-screen max-w-none rounded-none translate-x-0 translate-y-0 p-0 flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 px-4 py-4 sm:px-6 sm:py-6 border-b space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx(a.DialogTitle,{className:"text-xl font-semibold",children:m("credits.dialogTitle")}),e.jsxs(a.DialogDescription,{className:"mt-1 text-sm",children:[m("credits.dialogDescription"),c&&e.jsx("span",{className:"ms-1 font-medium text-foreground",children:m("credits.dialogDescriptionWorkspace",{workspace:c})})]})]}),!o?.trim()&&b.length>1&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:m("pricing.currency")}),e.jsx("div",{className:"flex gap-1 rounded-lg border border-border bg-muted/30 p-1",children:b.map(s=>e.jsxs("button",{type:"button",onClick:()=>v(s),className:a.cn("rounded-md px-3 py-1.5 text-sm font-medium transition-colors",j===s?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:[a.getCurrencySymbol(s)," ",s.toUpperCase()]},s))})]})]}),e.jsx("div",{className:"flex-1 overflow-y-auto",children:0===r.length?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-muted-foreground/70",children:[e.jsx(s.Coins,{className:"h-12 w-12 mb-3"}),e.jsx("p",{className:"text-sm",children:m("credits.noPackages")})]}):e.jsx("div",{className:"max-w-2xl mx-auto px-4 py-6 sm:px-6 space-y-4",children:r.map(t=>{const n=t.pricingVariants?.find(e=>e.currency?.toLowerCase()===j)??t.pricingVariants?.[0],i=n?.amount,r=n?.currency??j,o=d===t._id,c=null!=i&&i>0&&t.creditAmount>0?function(e,s,t){const n=Math.round(e);if(n>=1)return a.formatMinorAmountIntl(n,s,t);const i=a.getCurrencyDecimals(s),r=e/10**i,o=Math.min(i+4,Math.max(i,Math.ceil(-Math.log10(r))+1));try{return new Intl.NumberFormat(t,{style:"currency",currency:s.trim().toUpperCase(),minimumFractionDigits:o,maximumFractionDigits:o}).format(r)}catch{return a.getCurrencySymbol(s)+r.toFixed(o)}}(i/t.creditAmount,r,h):null;return e.jsxs("div",{className:a.cn("rounded-xl border p-5 sm:p-6 flex flex-col sm:flex-row sm:items-center gap-4 transition-all",o?"border-primary bg-primary/5 shadow-md":"border-border hover:border-border hover:shadow-sm"),children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground",children:t.name}),e.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-info/10 px-2.5 py-0.5 text-xs font-medium text-info",children:[e.jsx(s.Coins,{className:"h-3.5 w-3.5"}),m("credits.creditsAmount",{count:x(t.creditAmount)})]})]}),t.description&&e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:t.description}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground/70",children:[e.jsx("span",{children:t.validityDays?m("credits.validityDays",{count:t.validityDays}):m("credits.validityUnlimited")}),null!=c&&e.jsx("span",{children:m("credits.perCredit",{price:c})})]})]}),e.jsxs("div",{className:"flex items-center gap-4 sm:flex-col sm:items-end sm:gap-2 shrink-0",children:[null!=i&&e.jsx("span",{className:"text-2xl sm:text-3xl font-bold text-foreground whitespace-nowrap",children:g(i,r)}),e.jsx(a.Button,{size:"sm",onClick:()=>l(t),disabled:y,progress:o,className:"whitespace-nowrap",children:o?m("credits.purchasing"):m("credits.buyAmount",{count:x(t.creditAmount)})})]})]},t._id)})})})]})})},k=({titleKey:t,descriptionKey:n})=>{const{t:i}=a.useTranslation();return e.jsx("div",{className:"border border-warning/20 bg-warning/10 rounded-lg p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(s.ShieldAlert,{className:"h-5 w-5 text-warning shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-warning",children:i(t??"settings.common.noPermissionTitle")}),e.jsx("p",{className:"text-xs text-warning/80 mt-1",children:i(n??"settings.common.noPermissionDescription")})]})]})})};function E(){return e.jsxs("div",{className:"space-y-3.5",children:[e.jsx(a.Skeleton,{className:"h-10 w-full"}),e.jsx(a.Skeleton,{className:"h-10 w-full"}),e.jsx(a.Skeleton,{className:"h-10 w-full"})]})}const P={[a.CreditTransactionType.PlanGrant]:"credits.type.plan_grant",[a.CreditTransactionType.PackPurchased]:"credits.type.pack_purchased",[a.CreditTransactionType.Consumed]:"credits.type.consumed",[a.CreditTransactionType.Expired]:"credits.type.expired",[a.CreditTransactionType.AdminGrant]:"credits.type.admin_grant",[a.CreditTransactionType.AdminRevoke]:"credits.type.admin_revoke",[a.CreditTransactionType.Refund]:"credits.type.refund"};const D=({workspace:n})=>{const i=n._id?.toString(),{t:r,fmtNum:o}=a.useTranslation(),{can:c}=a.usePermissions(),{visible:l}=a.useUIVisibility(),d=l(e=>e.settings?.credits?.transactions),u=c(a.Permission.WORKSPACE_BILLING_VIEW),m=l(e=>e.settings?.credits?.buyButton,a.Permission.WORKSPACE_BILLING_MANAGE),{balance:p,loading:x,error:g,refetch:h}=a.useCreditBalanceContext(),{packages:f,loading:b}=a.useCreditPackages(i),{expiringCredits:S,loading:v}=a.useExpiringCredits(i,7),[j,y]=t.useState(1),{transactions:N,hasNextPage:A,loading:C,refetch:w}=a.useCreditTransactions(i,{limit:10,page:j}),[P,D]=t.useState([]);t.useEffect(()=>{C||0===N.length||D(1===j?N:e=>{const s=new Set(e.map(e=>e._id)),t=N.filter(e=>!s.has(e._id));return t.length>0?[...e,...t]:e})},[N,j,C]);const I=t.useCallback(()=>{A&&!C&&y(e=>e+1)},[A,C]),U=P,{purchaseCredits:R,loading:B}=a.usePurchaseCredits(i),[F,L]=t.useState(!1),[_,G]=t.useState(null),[K,O]=t.useState(!1),[W,V]=t.useState(!1),[z,H]=t.useState(null),[q,$]=t.useState(!1),Z=t.useRef(!1),Y=x&&!p;t.useEffect(()=>{if(Z.current)return;const e=a.workspaceSettingsManager.getState();if(!e.params?.action)return;if(e.params.action===a.BBAction.OpenCreditStore)return Z.current=!0,a.workspaceSettingsManager.clearParams(),void $(!0);if(e.params.action!==a.BBAction.CreditPurchase)return;Z.current=!0;const s=e.params.status;if(a.workspaceSettingsManager.clearParams(),s===a.BBStatus.Success){O(!0),a.invalidateCreditBalance();const e=setTimeout(()=>O(!1),8e3);return()=>clearTimeout(e)}if(s===a.BBStatus.Cancel){V(!0);const e=setTimeout(()=>V(!1),5e3);return()=>clearTimeout(e)}s===a.BBStatus.Error&&G(r("credits.purchaseFailed"))},[]);if(Y)return e.jsx(E,{});if(!u)return e.jsx(k,{});if(!i)return e.jsx("div",{className:"border rounded-lg p-4 text-center text-muted-foreground",children:e.jsx("p",{children:r("subscription.invalidWorkspace")})});const J=!b&&f.length>0;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:r("credits.description")}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[J&&m&&e.jsxs(a.Button,{size:"sm",onClick:()=>$(!0),children:[e.jsx(s.ShoppingCart,{className:"h-3.5 w-3.5 me-1.5"}),r("credits.buyCredits")]}),e.jsxs(a.Button,{variant:"ghost",size:"sm",onClick:async()=>{L(!0);try{await h()}finally{L(!1)}},disabled:F,children:[e.jsx(s.RefreshCw,{className:a.cn("h-3.5 w-3.5 me-1.5",F&&"animate-spin")}),r("settings.common.refreshAction",{loading:String(F)})]})]})]}),g&&e.jsx(a.StatusBanner,{variant:"error",title:r("credits.errorLoading"),message:g}),K&&e.jsx(a.StatusBanner,{variant:"success",icon:e.jsx(s.CheckCircle2,{className:"h-4 w-4 flex-shrink-0"}),title:r("credits.purchaseSuccess"),actionLabel:r("settings.common.dismiss"),onAction:()=>O(!1)}),W&&e.jsx(a.StatusBanner,{variant:"warning",title:r("credits.purchaseCanceled"),actionLabel:r("settings.common.dismiss"),onAction:()=>V(!1)}),_&&e.jsx(a.StatusBanner,{variant:"error",message:_,actionLabel:r("settings.common.dismiss"),onAction:()=>G(null)}),e.jsxs("div",{className:"border border-border rounded-lg overflow-hidden",children:[e.jsxs("div",{className:"bg-muted/30 p-4 sm:p-5",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wider",children:r("credits.balance")}),e.jsx(s.Coins,{className:"h-5 w-5 text-muted-foreground/70"})]}),p?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-3xl font-bold text-foreground mb-4",children:o(p.available)}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:r("credits.totalGranted")}),e.jsx("p",{className:"text-sm font-medium text-foreground",children:o(p.totalGranted)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:r("credits.totalConsumed")}),e.jsx("p",{className:"text-sm font-medium text-foreground",children:o(p.totalConsumed)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:r("credits.totalExpired")}),e.jsx("p",{className:"text-sm font-medium text-foreground",children:o(p.totalExpired)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:r("credits.available")}),e.jsx("p",{className:"text-sm font-semibold text-success",children:o(p.available)})]})]})]}):e.jsxs("div",{className:"text-center py-4",children:[e.jsx(s.Coins,{className:"h-10 w-10 text-muted-foreground/50 mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r("credits.noCredits")}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:r("credits.noCreditsHint")}),J&&m&&e.jsxs(a.Button,{size:"sm",className:"mt-3",onClick:()=>$(!0),children:[e.jsx(s.ShoppingCart,{className:"h-3.5 w-3.5 me-1.5"}),r("credits.buyCredits")]})]})]}),!v&&S>0&&e.jsx("div",{className:"px-4 py-3 bg-warning/10 border-t border-warning/30 text-sm text-warning",children:r("credits.expiringInDays",{count:S,days:7})})]}),d&&e.jsxs("div",{children:[e.jsx(a.SectionHeader,{title:r("credits.transactions"),className:"mb-3"}),C&&0===U.length?e.jsx(a.LoadingState,{}):0===U.length?e.jsx(a.EmptyState,{icon:e.jsx(s.History,{className:"h-5 w-5 text-muted-foreground"}),description:r("credits.noTransactions"),action:e.jsx(a.Button,{variant:"outline",size:"sm",progress:C,onClick:w,children:r("settings.common.refreshAction",{loading:String(C)})})}):e.jsxs("div",{className:"border border-border rounded-lg overflow-hidden",children:[e.jsx("div",{className:"divide-y divide-border/60",children:U.map(s=>e.jsx(M,{tx:s},s._id))}),A&&e.jsx("div",{className:"border-t border-border px-4 py-3 text-center",children:e.jsx(a.Button,{variant:"ghost",size:"sm",onClick:I,disabled:C,progress:C&&j>1,children:r("credits.loadMore")})})]})]}),J&&m&&e.jsx(T,{open:q,onOpenChange:$,packages:f,billingCurrency:n.billingCurrency,workspaceName:n.name,onSelectPackage:async e=>{if(i){G(null),H(e._id);try{const{successUrl:s,cancelUrl:t}=a.createCreditPurchaseRedirectUrls(i),n=await R({creditPackageId:e._id,successUrl:s,cancelUrl:t});n.url&&a.safeRedirect(n.url)}catch(e){G(e instanceof Error?e.message:r("errors.purchaseCredits")),H(null)}}},purchasingPackageId:z,loading:B})]})};function M({tx:s}){const{t:t,formattingLocale:n,fmtNum:i}=a.useTranslation(),r=P[s.type]??"credits.type.consumed",o=function(e){switch(e){case"plan_grant":case"admin_grant":case"refund":return"bg-success/15 text-success";case"pack_purchased":return"bg-info/15 text-info";case"consumed":default:return"bg-muted text-foreground";case"expired":case"admin_revoke":return"bg-destructive/15 text-destructive"}}(s.type),c=s.amount>0;return e.jsx("div",{className:"px-3 py-3 sm:px-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mb-0.5",children:[e.jsx("span",{className:a.cn("inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium shrink-0",o),children:t(r)}),s.description&&e.jsx("p",{className:"text-sm text-foreground truncate",children:s.description})]}),e.jsx("p",{className:"text-xs text-muted-foreground/70",children:a.formatDateTime(s.createdAt,n)})]}),e.jsxs("div",{className:"text-end shrink-0",children:[e.jsxs("span",{className:a.cn("text-sm font-semibold",c?"text-success":"text-foreground"),children:[c?"+":"",i(s.amount)]}),e.jsx("p",{className:"text-xs text-muted-foreground/70",children:i(s.balanceAfter)})]})]})})}const I=({workspace:n})=>{const[i,r]=t.useState(!1),{deleteWorkspace:o}=a.useSaaSWorkspaces(),{can:c}=a.usePermissions(),{settings:l}=a.useSaaSSettings(),{t:d}=a.useTranslation();if(1===(l?.workspace?.maxWorkspacesPerUser??0))return null;if(!n)return e.jsx(E,{});return c(a.Permission.WORKSPACE_DELETE)?e.jsxs("div",{className:"space-y-4",children:[e.jsx(a.SectionHeader,{title:d("danger.title"),titleClassName:"text-destructive",description:d("danger.deleteDescription")}),e.jsxs(a.AlertDialog,{children:[e.jsx(a.AlertDialogTrigger,{asChild:!0,children:e.jsxs(a.Button,{variant:"destructive",disabled:i,progress:i,children:[e.jsx(s.Trash2,{className:"h-4 w-4 me-2"}),d("danger.deleteWorkspace")]})}),e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:d("danger.deleteConfirm")}),e.jsx(a.AlertDialogDescription,{children:d("danger.deleteConfirmDescription")})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{disabled:i,children:d("settings.common.cancel")}),e.jsx(a.AlertDialogAction,{onClick:async()=>{r(!0);try{await o(n._id)}catch(e){a.handleError(e,{component:"WorkspaceSettingsDanger",action:"handleDeleteWorkspace",metadata:{workspaceId:n._id}})}finally{r(!1)}},disabled:i,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:i?e.jsxs(e.Fragment,{children:[e.jsx(s.Loader2,{className:"me-2 h-4 w-4 animate-spin"}),d("danger.deleting")]}):d("danger.deleteWorkspace")})]})]})]})]}):e.jsx(k,{descriptionKey:"danger.adminOnly"})};function U({children:t,link:n}){const{t:i}=a.useTranslation();return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-2",children:t}),n&&e.jsxs("a",{href:n.href,target:"_blank",rel:"noopener noreferrer","aria-label":i("help.linkNewTab",{link:n.label}),className:"inline-flex items-center gap-1 font-medium text-primary underline-offset-4 hover:underline",children:[n.label,e.jsx(s.ExternalLink,{className:"h-3.5 w-3.5","aria-hidden":"true"})]})]})}function R({label:t,children:n,link:i,className:r,side:o="bottom",buttonLabel:c}){const{t:l,dir:d}=a.useTranslation(),[u,p]=m.useState(!1),x=m.useRef(null);return e.jsxs(a.Popover,{open:u,onOpenChange:p,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsx(a.Button,{ref:x,type:"button",variant:"ghost",size:"icon","aria-label":c??l("help.button",{label:t}),"data-field-help":"",className:a.cn("h-6 w-6 shrink-0 align-middle text-muted-foreground hover:text-foreground sm:h-6 sm:w-6",r),children:e.jsx(s.CircleHelp,{className:"h-4 w-4","aria-hidden":"true"})})}),e.jsx(a.PopoverContent,{side:o,align:"start",collisionPadding:16,dir:d,"aria-label":t,onKeyDown:e=>function(e,s){if("Tab"!==e.key)return;const t=Array.from(e.currentTarget.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select, textarea, [tabindex]:not([tabindex="-1"])')),a=e.currentTarget.ownerDocument.activeElement,n=t.indexOf(a);(e.shiftKey?n<=0:n===t.length-1)&&(e.shiftKey&&e.preventDefault(),s())}(e,()=>{p(!1),x.current?.focus()}),className:"w-80 max-w-[calc(100vw-2rem)] space-y-2 text-sm leading-relaxed",children:e.jsx(U,{link:i,children:n})})]})}const B=({keys:s})=>{const{t:t}=a.useTranslation();return e.jsx(e.Fragment,{children:s.map(s=>e.jsx("p",{children:t(s)},s))})},F=({items:s})=>e.jsx("ul",{className:"list-disc space-y-1.5 ps-4",children:s.map(s=>e.jsx("li",{children:s},s))}),L=()=>e.jsx(B,{keys:["help.password","help.passwordLeaks","help.passwordForgot"]}),_=()=>{const{t:s}=a.useTranslation();return e.jsx(R,{label:s("security.passwordTitle"),children:e.jsx(L,{})})};function G({app:e,sms:s}){return["help.twoStep",...e?["help.twoStepApp"]:[],...s?["help.twoStepSms"]:[],...e?["help.twoStepLostPhone"]:[]]}const K=s=>e.jsx(B,{keys:G(s)}),O=s=>{const{t:t}=a.useTranslation();return e.jsx(R,{label:t("security.twoStepTitle"),children:e.jsx(K,{...s})})},W=()=>e.jsx(B,{keys:["help.backupCodes","help.backupCodesKeep","help.backupCodesNew"]}),V=()=>{const{t:s}=a.useTranslation();return e.jsx(R,{label:s("help.backupCodesLabel"),children:e.jsx(W,{})})},z=()=>e.jsx(B,{keys:["help.passkeys","help.passkeysWhere","help.passkeysRemove"]}),H=()=>{const{t:s}=a.useTranslation();return e.jsx(R,{label:s("security.passkeysTitle"),children:e.jsx(z,{})})},q=()=>e.jsx(B,{keys:["help.connectedAccounts","help.connectedAccountsRemove","help.connectedAccountsLastWay"]}),$=()=>{const{t:s}=a.useTranslation();return e.jsx(R,{label:s("security.connectedAccountsTitle"),children:e.jsx(q,{})})},Z=()=>e.jsx(B,{keys:["help.phone","help.phoneCheck"]}),Y=()=>{const{t:s}=a.useTranslation();return e.jsx(R,{label:s("security.phoneTitle"),children:e.jsx(Z,{})})},J=()=>e.jsx(B,{keys:["help.reauth","help.reauthHow"]}),X=({className:s})=>{const{t:t}=a.useTranslation();return e.jsx(R,{label:t("security.reauthConfirm"),className:s,children:e.jsx(J,{})})},Q=({canChange:s})=>e.jsx(B,{keys:s?["help.email","help.emailChange"]:["help.email"]}),ee=({canChange:s})=>{const{t:t}=a.useTranslation();return e.jsx(R,{label:t("profile.email"),children:e.jsx(Q,{canChange:s})})},se=({graceDays:s})=>{const{t:t}=a.useTranslation(),n=t("security.deleteAccountCancel");return e.jsx("p",{children:null===s?t("help.deleteAccountRange",{cancel:n}):0===s?t("help.deleteAccountNow"):t("help.deleteAccountDays",{days:s,cancel:n})})},te=({graceDays:s})=>{const{t:t}=a.useTranslation();return e.jsx(R,{label:t("security.deleteAccountTitle"),children:e.jsx(se,{graceDays:s})})},ae=({signOut:s,remove:t})=>{const{t:n}=a.useTranslation();return e.jsx(F,{items:[n("help.devicesThis",{label:n("security.deviceCurrent")}),n("help.devicesTrusted",{label:n("security.deviceTrusted")}),...s?[n("help.devicesSignOut",{label:n("security.deviceSignOut")})]:[],...t?[n("help.devicesRemove",{label:n("security.deviceForget")})]:[]]})},ne=s=>{const{t:t}=a.useTranslation();return e.jsx(R,{label:t("security.devicesTitle"),children:e.jsx(ae,{...s})})},ie=({signOut:s})=>{const{t:t}=a.useTranslation();return e.jsxs(e.Fragment,{children:[e.jsx("p",{children:t("help.sessionsWhat")}),e.jsx(F,{items:[t("help.sessionsThis",{label:t("security.sessionCurrent")}),...s?[t("help.sessionsSignOut",{label:t("security.sessionSignOut")})]:[]]}),e.jsx("p",{children:t("help.sessionsEverywhere")})]})},re=({signOut:s})=>{const{t:t}=a.useTranslation();return e.jsx(R,{label:t("security.sessionsTitle"),children:e.jsx(ie,{signOut:s})})},oe=()=>{const{t:s}=a.useTranslation(),{visible:t}=a.useUIVisibility(),n=t(e=>e.settings?.devices?.sessions),i=t(e=>e.settings?.devices?.signOut),r=t(e=>e.settings?.devices?.forget),o=t(e=>e.settings?.devices?.sessionSignOut);return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx(a.SectionHeader,{description:s("security.devicesDescription"),help:e.jsx(ne,{signOut:i,remove:r})}),e.jsx(a.Devices,{title:null,description:null})]}),n&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(a.SectionHeader,{title:s("security.sessionsTitle"),description:s("security.sessionsDescription"),help:e.jsx(re,{signOut:o})}),e.jsx(a.Sessions,{title:null,description:null})]})]})},ce=m.forwardRef(({className:s,...t},n)=>e.jsx(p.Root,{className:a.cn("peer inline-flex h-[20px] w-[36px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",s),...t,ref:n,children:e.jsx(p.Thumb,{className:a.cn("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 rtl:data-[state=checked]:-translate-x-4 data-[state=unchecked]:translate-x-0")})}));function le(e=5e3){const[s,a]=t.useState(null),n=t.useRef(null);t.useEffect(()=>()=>{n.current&&clearTimeout(n.current)},[]);return{message:s,show:t.useCallback(s=>{a(s),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{a(null)},e)},[e]),clear:t.useCallback(()=>{a(null),n.current&&clearTimeout(n.current)},[])}}ce.displayName=p.Root.displayName;const de=({workspaceId:n})=>{const{t:i}=a.useTranslation(),{allFeatures:r,updateFeature:o,getWorkspace:c}=a.useSaaSWorkspaces(),{can:l}=a.usePermissions(),[d,u]=t.useState({}),m=le(),[p,x]=t.useState(null);if(t.useEffect(()=>{c(n).then(x).catch(e=>{a.handleError(e,{component:"WorkspaceSettingsFeatures",action:"getWorkspace"})})},[n]),!p)return e.jsx(E,{});const g=l(a.Permission.WORKSPACE_FEATURES_EDIT);return e.jsxs("div",{children:[m.message&&e.jsx(a.StatusBanner,{variant:"success",title:i("settings.common.success"),message:m.message,className:"mb-4"}),e.jsxs("div",{className:"flex flex-col gap-y-3.5 pe-4",children:[!g&&e.jsx(k,{descriptionKey:"features.ownerOnly"}),!r.length&&e.jsx(a.EmptyState,{icon:e.jsx(s.ToggleRight,{className:"h-5 w-5 text-muted-foreground"}),description:i("features.noFeatures")}),r.length>0&&e.jsx("div",{className:"flex flex-col gap-y-3.5",children:r.map(t=>{const n=p?.features?.[t.slug],c=null!==d[t.slug]&&void 0!==d[t.slug],l=d[t.slug],h=i("features.actionStatus",{action:!0===l?"enabling":!1===l?"disabling":"none"});return e.jsxs("div",{className:"flex items-center gap-x-2 justify-between w-full",children:[e.jsxs("div",{className:"flex gap-x-2 flex-col",children:[e.jsx("h3",{className:"font-medium text-ellipsis",children:t.name}),e.jsx("p",{className:"text-muted-foreground",children:t.description})]}),c?e.jsxs("div",{className:"flex items-center gap-x-1",children:[e.jsx(s.Loader2,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[h,"..."]})]}):e.jsx(ce,{disabled:!g,checked:n??t.defaultValue,onCheckedChange:e=>async function(e,s){if(p){u(t=>({...t,[e]:s})),m.clear();try{const t=await o(p._id,e,s);x(t);const a=r.find(s=>s.slug===e),n=a?.name||i("features.fallbackName");m.show(i("features.updateSuccess",{feature:n,enabled:String(s)}))}catch(s){a.handleError(s,{component:"WorkspaceSettingsFeatures",action:"updateFeature",metadata:{workspaceId:p._id,featureKey:e}})}finally{u(s=>({...s,[e]:null}))}}}(t.slug,e)})]},t._id)})})]})]})},ue=({workspace:n})=>{const{t:c}=a.useTranslation(),{visible:l}=a.useUIVisibility(),d=l(e=>e.settings?.general?.nameEdit),u=l(e=>e.settings?.general?.iconEditor),{updateWorkspace:m}=a.useSaaSWorkspaces(),{can:p}=a.usePermissions(),[x,g]=t.useState(!1),[h,f]=t.useState("emoji"),[b,S]=t.useState(),v=a.useUpload("workspace-image"),j=t.useRef(null),y=le(),N=o.z.object({name:o.z.string().min(2,{message:c("general.nameMinLength")}),image:o.z.string().optional()}),A=r.useForm({resolver:i.zodResolver(N),defaultValues:{name:n.name||"",image:n.image||""}});if(!n)return e.jsx(E,{});const C=p(a.Permission.WORKSPACE_SETTINGS_EDIT),w="upload"!==h||v.enabled?h:"emoji";return e.jsxs("div",{children:[y.message&&e.jsx(a.StatusBanner,{variant:"success",title:c("settings.common.success"),message:y.message,className:"mb-4"}),!C&&e.jsx(k,{descriptionKey:"general.ownerOnly"}),e.jsx(a.Form,{...A,children:e.jsxs("form",{onSubmit:A.handleSubmit(async function(e){g(!0),y.clear();try{await m(n,e),y.show(c("general.success"))}catch(e){a.handleError(e,{component:"WorkspaceSettingsGeneral",action:"updateWorkspace",metadata:{workspaceId:n._id}})}finally{g(!1)}}),className:"space-y-6",children:[d&&e.jsx(a.FormField,{control:A.control,name:"name",render:({field:s})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:c("general.name")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{placeholder:c("general.namePlaceholder"),...s,disabled:!C})}),e.jsx(a.FormMessage,{})]})}),n.billingCurrency?.trim()&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(a.Label,{className:"text-sm font-medium text-muted-foreground",children:c("general.billingCurrency")}),e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[a.getCurrencyFlag(n.billingCurrency)&&e.jsx("span",{className:"text-base",children:a.getCurrencyFlag(n.billingCurrency)}),e.jsx("span",{children:n.billingCurrency.trim().toUpperCase()})]})]}),u&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(a.Label,{className:"text-sm font-medium",children:c("general.icon")}),e.jsx(a.FormDescription,{children:c("general.iconDescription")})]}),e.jsxs(a.RadioGroup,{value:w,disabled:!C||v.loading,onValueChange:e=>f(e),className:"flex flex-col space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.RadioGroupItem,{value:"emoji",id:"emoji"}),e.jsxs(a.Label,{htmlFor:"emoji",className:"flex items-center gap-2",children:[e.jsx(s.Smile,{className:"h-4 w-4"}),c("general.chooseEmoji")]})]}),v.enabled&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.RadioGroupItem,{value:"upload",id:"upload"}),e.jsxs(a.Label,{htmlFor:"upload",className:"flex items-center gap-2",children:[e.jsx(s.Upload,{className:"h-4 w-4"}),c("general.uploadImage")]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.RadioGroupItem,{value:"url",id:"url"}),e.jsxs(a.Label,{htmlFor:"url",className:"flex items-center gap-2",children:[e.jsx(s.ImageIcon,{className:"h-4 w-4"}),c("general.customImageUrl")]})]})]}),"upload"===w&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("input",{ref:j,type:"file",accept:a.UPLOAD_ACCEPT,className:"hidden",onChange:e=>{const s=e.target.files?.[0];s&&async function(e){try{const s=await v.upload(e);S(void 0),A.setValue("image",s.url,{shouldDirty:!0})}catch{}finally{j.current&&(j.current.value="")}}(s)}}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-12 h-12 rounded-lg border-2 border-border overflow-hidden bg-muted",children:A.watch("image")?.trim()&&e.jsx("img",{src:A.watch("image")||void 0,className:"w-full h-full object-cover",alt:c("general.previewImageAlt")})}),e.jsx(a.Button,{type:"button",variant:"outline",disabled:!C||v.loading,progress:v.loading,"aria-describedby":"workspace-image-upload-help",onClick:()=>j.current?.click(),children:v.loading?c("uploads.uploading"):c("general.chooseImage")})]}),e.jsx(a.FormDescription,{id:"workspace-image-upload-help",children:c("uploads.description",{max:v.maxLabel})}),v.error&&e.jsx(a.StatusBanner,{variant:"error",message:v.error})]}),"emoji"===w&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm font-medium",children:c("general.previewLabel")}),e.jsxs("div",{className:"w-12 h-12 rounded-lg border-2 border-border flex items-center justify-center text-2xl bg-muted",children:[b&&e.jsx("span",{className:"text-2xl",children:b}),!b&&A.watch("image")?.trim()&&e.jsx("img",{src:A.watch("image")||void 0,alt:c("general.previewImageAlt")})]})]}),C&&e.jsx(a.ScrollArea,{className:"h-32 w-full rounded-md border",children:e.jsx("div",{className:"p-4 grid grid-cols-8 gap-2",children:a.workspaceEmojis.map((s,t)=>e.jsx("button",{type:"button",onClick:()=>(e=>{S(e),A.setValue("image",a.getSvgImage(e))})(s),disabled:!C,"aria-label":s,"aria-pressed":b===s,className:"w-10 h-10 sm:w-8 sm:h-8 rounded flex items-center justify-center text-lg hover:bg-muted transition-colors "+(b===s?"bg-primary text-primary-foreground":""),children:s},t))})})]}),"url"===w&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(a.FormField,{control:A.control,name:"image",render:({field:s})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:c("general.imageUrl")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{placeholder:c("general.imageUrlPlaceholder"),...s,disabled:!C})}),e.jsx(a.FormDescription,{children:c("general.imageUrlDescription")}),e.jsx(a.FormMessage,{})]})}),A.watch("image")&&A.watch("image")?.trim()&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm font-medium",children:c("general.previewLabel")}),e.jsx("div",{className:"w-12 h-12 rounded-lg border-2 border-border overflow-hidden bg-muted",children:e.jsx("img",{src:A.watch("image")||void 0,className:"w-full h-full object-cover",alt:c("general.previewImageAlt")})})]})]})]}),e.jsx("div",{className:"flex justify-end gap-3 pt-4",children:C&&(d||u)&&e.jsx(a.Button,{type:"submit",disabled:x||v.loading,progress:x,children:c("general.updateWorkspace")})})]})})]})};function me(e,s,t){const a=e.defaults[s],n=a?.required?void 0:e.mine[s]?.[t];return"boolean"==typeof n?n:!1!==a?.[t]}const pe={firefox:4,safari:4,edge:4,chrome:4},xe={defaults:{},mine:{}},ge=({workspace:n})=>{const{isSupported:i,permission:r,isSubscribed:o,loading:c,error:l,subscribe:d,unsubscribe:u}=a.usePushNotifications(),{t:m}=a.useTranslation(),{api:p}=a.useWorkspaceApiWithOs(),{can:x}=a.usePermissions(),{visible:g}=a.useUIVisibility(),h=x(a.Permission.WORKSPACE_SETTINGS_EDIT),f=g(e=>e.settings?.notifications?.push),b=g(e=>e.settings?.notifications?.emailToggles),S=g(e=>e.settings?.notifications?.pushToggles),v=t.useMemo(()=>function(){const e="undefined"!=typeof navigator?navigator.userAgent:"";return e.includes("Firefox")?"firefox":e.includes("Safari")&&!e.includes("Chrome")?"safari":e.includes("Edg")?"edge":"chrome"}(),[]),j=pe[v],[y,N]=t.useState([]),[A,C]=t.useState(!0),[w,T]=t.useState(xe),[k,E]=t.useState(!0),[P,D]=t.useState(null),[M,I]=t.useState(null),[U,R]=t.useState(null),B=t.useRef(null);t.useEffect(()=>()=>{B.current&&clearTimeout(B.current)},[]),t.useEffect(()=>{if(!n?._id)return;const e=n._id.toString();C(!0),E(!0),Promise.all([p.getNotificationEvents(e).catch(()=>[]),p.getMyNotificationPreferences(e).catch(()=>xe)]).then(([e,s])=>{N(e),T(s)}).finally(()=>{C(!1),E(!1)})},[n?._id]);const F=t.useCallback(()=>{I(m("notifications.prefsSaved")),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>I(null),3e3)},[m]),L=t.useCallback(async(e,s)=>{if(!n?._id)return;if(w.defaults[e]?.required)return;const t=!me(w,e,s),i=!1!==w.defaults[e]?.[s]===t?null:t,r=w;D(`mine.${e}.${s}`),I(null),R(null),T(t=>{const a={...t.mine[e]};return null===i?delete a[s]:a[s]=i,{...t,mine:{...t.mine,[e]:a}}});try{const t=await p.updateMyNotificationPreferences(n._id.toString(),{[e]:{[s]:i}});T(t),F()}catch(e){T(r),R(m("notifications.prefsSaveFailed")),a.handleError(e,{component:"SettingsNotifications",action:"toggleMine"})}finally{D(null)}},[n?._id,w,p,F,m]),_=t.useCallback(async(e,s)=>{if(!n?._id||!h)return;const t=w.defaults[e]??{},i="required"===s?!t.required:!1===t[s],r=w;D(`defaults.${e}.${s}`),I(null),R(null),T(a=>({...a,defaults:{...a.defaults,[e]:{...t,[s]:i}}}));try{const t=await p.updateNotificationPreferences(n._id.toString(),{[e]:{[s]:i}});T(e=>({...e,defaults:t})),F()}catch(e){T(r),R(m("notifications.prefsSaveFailed")),a.handleError(e,{component:"SettingsNotifications",action:"toggleDefault"})}finally{D(null)}},[n?._id,h,w,p,F,m]),G=t.useMemo(()=>{const e=new Map;for(const s of y){const t=s.category||"general";e.has(t)||e.set(t,[]),e.get(t).push(s)}return Array.from(e.entries())},[y]),K=A||k,O=y.length>0;return e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:m("notifications.manageDescription")}),f&&i&&e.jsxs(e.Fragment,{children:[l&&"denied"!==r&&e.jsx(a.StatusBanner,{variant:"error",message:l}),"denied"===r&&e.jsx("div",{className:"border border-warning/30 bg-warning/10 rounded-lg p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(s.ShieldAlert,{className:"h-5 w-5 text-warning shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-warning",children:m("notifications.blocked")}),e.jsx("p",{className:"text-xs text-warning mt-1",children:m("notifications.blockedDescription")}),e.jsx("ol",{className:"text-xs text-warning mt-2 space-y-1 list-decimal list-inside",children:Array.from({length:j},(s,t)=>e.jsx("li",{children:m(`notifications.unblock.${v}.step${t+1}`)},t))})]})]})}),"denied"!==r&&e.jsxs("div",{className:"border rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5 p-2 rounded-lg "+(o?"bg-success/15":"bg-muted"),children:o?e.jsx(s.Bell,{className:"h-4 w-4 text-success"}):e.jsx(s.BellOff,{className:"h-4 w-4 text-muted-foreground/70"})}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-foreground",children:m("notifications.pushTitle")}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:m("notifications.pushDescription",{subscribed:String(o)})})]})]}),e.jsx(a.Button,{variant:o?"outline":"default",size:"sm",className:"shrink-0",onClick:o?u:d,disabled:c,progress:c,children:m("notifications.toggleAction",{loading:String(c),subscribed:String(o)})})]}),o&&e.jsx("div",{className:"mt-3 pt-3 border-t border-border/60 text-xs text-muted-foreground",children:m("notifications.deviceNote")})]})]}),K&&e.jsx("div",{className:"text-center text-sm text-muted-foreground/70 py-4",children:m("notifications.loadingPrefs")}),!K&&O&&(b||S)&&e.jsxs(e.Fragment,{children:[M&&e.jsx(a.StatusBanner,{variant:"success",message:M}),U&&e.jsx(a.StatusBanner,{variant:"error",message:U}),e.jsx(he,{title:m("notifications.yourTitle"),description:m("notifications.yourDescription"),grouped:G,showEmail:b,showPush:S,renderCell:(s,t)=>{const a=Boolean(w.defaults[s.slug]?.required);return e.jsx(ce,{checked:me(w,s.slug,t),onCheckedChange:()=>L(s.slug,t),disabled:a||P===`mine.${s.slug}.${t}`,"aria-label":`${s.name}: ${t}`})},renderNote:t=>w.defaults[t.slug]?.required?e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground",children:[e.jsx(s.Lock,{className:"h-3 w-3","aria-hidden":"true"}),m("notifications.requiredHint")]}):null}),h&&e.jsx(he,{title:m("notifications.defaultsTitle"),description:m("notifications.defaultsDescription"),grouped:G,showEmail:b,showPush:S,extraColumn:{header:m("notifications.requiredLabel"),render:s=>e.jsx(ce,{checked:Boolean(w.defaults[s.slug]?.required),onCheckedChange:()=>_(s.slug,"required"),disabled:P===`defaults.${s.slug}.required`,"aria-label":`${s.name}: ${m("notifications.requiredLabel")}`})},renderCell:(s,t)=>e.jsx(ce,{checked:!1!==w.defaults[s.slug]?.[t],onCheckedChange:()=>_(s.slug,t),disabled:P===`defaults.${s.slug}.${t}`,"aria-label":`${s.name}: ${t}`})})]})]})};function he({title:t,description:a,grouped:n,showEmail:i,showPush:r,renderCell:o,renderNote:c,extraColumn:l}){return e.jsxs("section",{className:"space-y-2",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-foreground",children:t}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:a})]}),n.map(([t,a])=>e.jsxs("div",{className:"border rounded-lg overflow-hidden",children:[e.jsx("div",{className:"bg-muted/50 px-4 py-2.5 border-b",children:e.jsx("h4",{className:"text-sm font-medium text-foreground capitalize",children:t})}),e.jsxs("div",{className:"divide-y",children:[e.jsxs("div",{className:"flex items-center px-4 py-2 bg-muted/30",children:[e.jsx("div",{className:"flex-1"}),e.jsxs("div",{className:"flex items-center gap-6",children:[i&&e.jsx("div",{className:"w-12 flex justify-center",children:e.jsx(s.Mail,{className:"h-3.5 w-3.5 text-muted-foreground/70","aria-hidden":"true"})}),r&&e.jsx("div",{className:"w-12 flex justify-center",children:e.jsx(s.Smartphone,{className:"h-3.5 w-3.5 text-muted-foreground/70","aria-hidden":"true"})}),l&&e.jsx("div",{className:"w-16 text-center text-xs text-muted-foreground",children:l.header})]})]}),a.map(s=>e.jsxs("div",{className:"flex items-center px-4 py-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"text-sm font-medium text-foreground",children:s.name}),s.description&&e.jsx("div",{className:"text-xs text-muted-foreground mt-0.5",children:s.description}),c?.(s)]}),e.jsxs("div",{className:"flex items-center gap-6 shrink-0",children:[i&&e.jsx("div",{className:"w-12 flex justify-center",children:s.channels.email?o(s,"email"):e.jsx("span",{className:"text-xs text-muted-foreground/50",children:"-"})}),r&&e.jsx("div",{className:"w-12 flex justify-center",children:s.channels.push?o(s,"push"):e.jsx("span",{className:"text-xs text-muted-foreground/50",children:"-"})}),l&&e.jsx("div",{className:"w-16 flex justify-center",children:l.render(s)})]})]},s.slug))]})]},t))]})}const fe=({workspace:s})=>{const{t:n}=a.useTranslation(),{isOwner:i}=a.usePermissions(),{settings:r}=a.useSaaSSettings(),{appPermissions:o}=a.usePermissionConfig(),{updateWorkspacePermissions:c}=a.useSaaSWorkspaces(),[l,d]=t.useState(!1),u=le(),m=t.useMemo(()=>r?.workspace?.roles??s.roles??[],[r?.workspace?.roles,s.roles]),p=t.useMemo(()=>a.appPermissionCatalogue(r,o),[r,o]),x=t.useMemo(()=>e=>a.resolveRolePermissions(e,{workspace:s,settings:r,appPermissions:o},{applyRestrictions:!1}),[s,r,o]),[g,h]=t.useState({});t.useEffect(()=>{const e={};for(const s of m)e[s]=[...x(s)].filter(e=>!e.startsWith("workspace:"));h(e)},[x,m]);const f=t.useMemo(()=>{const e=new Map;for(const s of p){const t=s.group??"";e.set(t,[...e.get(t)??[],s])}return[...e.entries()]},[p]);if(!s)return e.jsx(E,{});if(0===p.length)return null;return e.jsxs("div",{children:[u.message&&e.jsx(a.StatusBanner,{variant:"success",title:n("settings.common.success"),message:u.message,className:"mb-4"}),!i&&e.jsx(k,{descriptionKey:"permissions.ownerOnly"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:n("permissions.description")}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b",children:[e.jsx("th",{className:"text-start py-2 pe-4 font-medium text-muted-foreground min-w-[160px]"}),m.map(s=>e.jsx("th",{className:"text-center py-2 px-3 font-medium text-foreground capitalize min-w-[80px]",children:s},s))]})}),e.jsx("tbody",{children:f.map(([s,a])=>e.jsxs(t.Fragment,{children:[f.length>1&&s&&e.jsx("tr",{children:e.jsx("td",{colSpan:m.length+1,className:"pt-4 pb-1 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:s})}),a.map(({key:s,label:t})=>e.jsxs("tr",{className:"border-b border-border/40 hover:bg-muted/30",children:[e.jsxs("td",{className:"py-2 pe-4 text-foreground",children:[e.jsx("div",{children:t}),t!==s&&e.jsx("div",{className:"font-mono text-xs opacity-60",children:s})]}),m.map(a=>{const n="admin"===a,r=n||(g[a]??[]).includes(s);return e.jsx("td",{className:"text-center py-2 px-3",children:e.jsx(ce,{checked:r,disabled:!i||n,onCheckedChange:()=>((e,s)=>{h(t=>{const a=t[e]??[],n=a.includes(s);return{...t,[e]:n?a.filter(e=>e!==s):[...a,s]}})})(a,s),className:"mx-auto","aria-label":`${t}: ${a}`})},a)})]},s))]},s||"_"))})]})}),i&&e.jsx("div",{className:"mt-6",children:e.jsx(a.Button,{onClick:async()=>{d(!0),u.clear();try{const e={};for(const s of m){const t=[...x(s)].filter(e=>e.startsWith("workspace:"));e[s]=[...t,...g[s]??[]]}await c(s._id,e),u.show(n("permissions.saveSuccess"))}catch(e){a.handleError(e,{component:"WorkspaceSettingsPermissions",action:"savePermissions",metadata:{workspaceId:s._id}})}finally{d(!1)}},disabled:l,progress:l,children:n(l?"permissions.saving":"permissions.save")})})]})},be=m.forwardRef(({className:s,...t},n)=>e.jsx(l.Command,{ref:n,className:a.cn("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",s),...t}));be.displayName=l.Command.displayName;const Se=m.forwardRef(({className:s,...t},n)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(c.MagnifyingGlassIcon,{className:"me-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(l.Command.Input,{ref:n,className:a.cn("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",s),...t})]}));Se.displayName=l.Command.Input.displayName;const ve=m.forwardRef(({className:s,...t},n)=>e.jsx(l.Command.List,{ref:n,className:a.cn("max-h-[300px] overflow-y-auto overflow-x-hidden",s),...t}));ve.displayName=l.Command.List.displayName;const je=m.forwardRef((s,t)=>e.jsx(l.Command.Empty,{ref:t,className:"py-6 text-center text-sm",...s}));je.displayName=l.Command.Empty.displayName;const ye=m.forwardRef(({className:s,...t},n)=>e.jsx(l.Command.Group,{ref:n,className:a.cn("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",s),...t}));ye.displayName=l.Command.Group.displayName;m.forwardRef(({className:s,...t},n)=>e.jsx(l.Command.Separator,{ref:n,className:a.cn("-mx-1 h-px bg-border",s),...t})).displayName=l.Command.Separator.displayName;const Ne=m.forwardRef(({className:s,...t},n)=>e.jsx(l.Command.Item,{ref:n,className:a.cn("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50",s),...t}));function Ae({options:n,value:i,onChange:r,placeholder:o,emptyLabel:c,"aria-labelledby":l,"aria-label":d}){const{t:u}=a.useTranslation(),m=o??u("dropdowns.search"),p=c??u("dropdowns.chooseOption"),[x,g]=t.useState(i??""),[h,f]=t.useState(!1),b=t.useId();t.useEffect(()=>{void 0!==i&&g(i)},[i]);const S=n.find(e=>e.value===x);return e.jsxs(a.Popover,{open:h,onOpenChange:f,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsxs(a.Button,{variant:"outline",role:"combobox","aria-expanded":h,"aria-labelledby":l?`${l} ${b}`:void 0,"aria-label":l?void 0:d,className:"h-10 sm:h-9 w-full justify-between rounded-md border-input bg-transparent px-3 py-1 text-base sm:text-sm font-normal shadow-sm hover:bg-transparent",children:[S?e.jsxs("div",{id:b,className:"truncate",children:[String(S.label).trim(),S.icon&&e.jsx("span",{className:"ms-2 text-xs text-muted-foreground",children:S.icon})]}):e.jsx("span",{id:b,className:"text-muted-foreground",children:p}),e.jsx(s.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(a.PopoverContent,{className:"p-0 overflow-hidden text-ellipsis",asChild:!0,children:e.jsxs(be,{children:[e.jsx(Se,{placeholder:m}),e.jsxs(ve,{children:[e.jsx(je,{children:u("dropdowns.noResults")}),e.jsx(ye,{children:n.map(t=>e.jsxs(Ne,{className:a.cn("whitespace-nowrap text-start",{"text-success":x===t.value}),value:t.value,keywords:[t.label],onSelect:()=>{return e=t.value,g(e),r?.(e),void f(!1);var e},children:[x===t.value&&e.jsx(s.CheckCheck,{className:a.cn("me-2 h-4 w-4 text-success",x===t.value?"opacity-100":"opacity-0")}),String(t.label).trim(),t.icon&&e.jsx("span",{className:"ms-2 text-xs text-muted-foreground",children:t.icon})]},t.value))})]})]})})]})}Ne.displayName=l.Command.Item.displayName;const Ce=A.map(e=>({value:e.currencyCode,text:e.currencyCode,icon:e.currencyIcon??null})),we=Array.from(new Set(Ce.map(e=>e.value))).map(e=>Ce.find(s=>s.value===e)).filter(e=>void 0!==e);let Te=[{code:"en",label:"English",flag:"🇬🇧"},{code:"en-GB",label:"English (United Kingdom)",flag:"🇬🇧"},{code:"en-US",label:"English (United States)",flag:"🇺🇸"},{code:"en-AU",label:"English (Australia)",flag:"🇦🇺"},{code:"en-CA",label:"English (Canada)",flag:"🇨🇦"},{code:"en-NZ",label:"English (New Zealand)",flag:"🇳🇿"},{code:"es",label:"Spanish",flag:"🇪🇸"},{code:"es-ES",label:"Spanish (Spain)",flag:"🇪🇸"},{code:"es-MX",label:"Spanish (Mexico)",flag:"🇲🇽"},{code:"fr",label:"French",flag:"🇫🇷"},{code:"fr-FR",label:"French (France)",flag:"🇫🇷"},{code:"de",label:"German",flag:"🇩🇪"},{code:"de-DE",label:"German (Germany)",flag:"🇩🇪"},{code:"it",label:"Italian",flag:"🇮🇹"},{code:"it-IT",label:"Italian (Italy)",flag:"🇮🇹"},{code:"pt",label:"Portuguese",flag:"🇵🇹"},{code:"pt-PT",label:"Portuguese (Portugal)",flag:"🇵🇹"},{code:"pt-BR",label:"Portuguese (Brazil)",flag:"🇧🇷"},{code:"ru",label:"Russian",flag:"🇷🇺"},{code:"ru-RU",label:"Russian (Russia)",flag:"🇷🇺"},{code:"zh",label:"Chinese",flag:"🇨🇳"},{code:"zh-CN",label:"Chinese (Simplified)",flag:"🇨🇳"},{code:"zh-TW",label:"Chinese (Traditional)",flag:"🇹🇼"},{code:"ja",label:"Japanese",flag:"🇯🇵"},{code:"ja-JP",label:"Japanese (Japan)",flag:"🇯🇵"},{code:"ko",label:"Korean",flag:"🇰🇷"},{code:"ko-KR",label:"Korean (South Korea)",flag:"🇰🇷"},{code:"ar",label:"Arabic",flag:"🇸🇦"},{code:"ar-SA",label:"Arabic (Saudi Arabia)",flag:"🇸🇦"},{code:"hi",label:"Hindi",flag:"🇮🇳"},{code:"hi-IN",label:"Hindi (India)",flag:"🇮🇳"},{code:"bn",label:"Bengali",flag:"🇮🇳"},{code:"bn-IN",label:"Bengali (India)",flag:"🇮🇳"},{code:"gu",label:"Gujarati",flag:"🇮🇳"},{code:"gu-IN",label:"Gujarati (India)",flag:"🇮🇳"},{code:"ta",label:"Tamil",flag:"🇮🇳"},{code:"ta-IN",label:"Tamil (India)",flag:"🇮🇳"},{code:"te",label:"Telugu",flag:"🇮🇳"},{code:"te-IN",label:"Telugu (India)",flag:"🇮🇳"},{code:"ml",label:"Malayalam",flag:"🇮🇳"},{code:"ml-IN",label:"Malayalam (India)",flag:"🇮🇳"},{code:"kn",label:"Kannada",flag:"🇮🇳"},{code:"kn-IN",label:"Kannada (India)",flag:"🇮🇳"},{code:"mr",label:"Marathi",flag:"🇮🇳"},{code:"mr-IN",label:"Marathi (India)",flag:"🇮🇳"},{code:"pa",label:"Punjabi",flag:"🇮🇳"},{code:"pa-IN",label:"Punjabi (India)",flag:"🇮🇳"},{code:"ur",label:"Urdu",flag:"🇮🇳"},{code:"ur-IN",label:"Urdu (India)",flag:"🇮🇳"},{code:"or",label:"Odia",flag:"🇮🇳"},{code:"or-IN",label:"Odia (India)",flag:"🇮🇳"},{code:"as",label:"Assamese",flag:"🇮🇳"},{code:"as-IN",label:"Assamese (India)",flag:"🇮🇳"},{code:"zh-HK",label:"Chinese (Hong Kong)",flag:"🇭🇰"},{code:"nl",label:"Dutch",flag:"🇳🇱"},{code:"nl-NL",label:"Dutch (Netherlands)",flag:"🇳🇱"},{code:"pl",label:"Polish",flag:"🇵🇱"},{code:"pl-PL",label:"Polish (Poland)",flag:"🇵🇱"},{code:"sv",label:"Swedish",flag:"🇸🇪"},{code:"sv-SE",label:"Swedish (Sweden)",flag:"🇸🇪"},{code:"da",label:"Danish",flag:"🇩🇰"},{code:"da-DK",label:"Danish (Denmark)",flag:"🇩🇰"},{code:"no",label:"Norwegian",flag:"🇳🇴"},{code:"no-NO",label:"Norwegian (Norway)",flag:"🇳🇴"},{code:"fi",label:"Finnish",flag:"🇫🇮"},{code:"fi-FI",label:"Finnish (Finland)",flag:"🇫🇮"},{code:"tr",label:"Turkish",flag:"🇹🇷"},{code:"tr-TR",label:"Turkish (Turkey)",flag:"🇹🇷"},{code:"cs",label:"Czech",flag:"🇨🇿"},{code:"cs-CZ",label:"Czech (Czech Republic)",flag:"🇨🇿"},{code:"sk",label:"Slovak",flag:"🇸🇰"},{code:"sk-SK",label:"Slovak (Slovakia)",flag:"🇸🇰"},{code:"hu",label:"Hungarian",flag:"🇭🇺"},{code:"hu-HU",label:"Hungarian (Hungary)",flag:"🇭🇺"},{code:"ro",label:"Romanian",flag:"🇷🇴"},{code:"ro-RO",label:"Romanian (Romania)",flag:"🇷🇴"},{code:"el",label:"Greek",flag:"🇬🇷"},{code:"el-GR",label:"Greek (Greece)",flag:"🇬🇷"},{code:"th",label:"Thai",flag:"🇹🇭"},{code:"th-TH",label:"Thai (Thailand)",flag:"🇹🇭"},{code:"id",label:"Indonesian",flag:"🇮🇩"},{code:"id-ID",label:"Indonesian (Indonesia)",flag:"🇮🇩"},{code:"ms",label:"Malay",flag:"🇲🇾"},{code:"ms-MY",label:"Malay (Malaysia)",flag:"🇲🇾"},{code:"vi",label:"Vietnamese",flag:"🇻🇳"},{code:"vi-VN",label:"Vietnamese (Vietnam)",flag:"🇻🇳"},{code:"he",label:"Hebrew",flag:"🇮🇱"},{code:"he-IL",label:"Hebrew (Israel)",flag:"🇮🇱"}];Te=Te.filter((e,s,t)=>s===t.findIndex(s=>s.code===e.code&&s.label===e.label)),Te.sort((e,s)=>e.label<s.label?-1:e.label>s.label?1:0);const ke=Te.filter(e=>function(e){try{const s=new Intl.DateTimeFormat(e);return s.resolvedOptions().locale===e||s.resolvedOptions().locale.startsWith(e)}catch{return!1}}(e.code)).filter((e,s,t)=>s===t.findIndex(s=>s.code===e.code&&s.label===e.label)).map(e=>({value:e.code,label:e.label,flag:e.flag}));const Ee=[{value:"Dateline Standard Time",abbr:"DST",offset:-12,isdst:!1,text:"(UTC-12:00) International Date Line West",utc:["Etc/GMT+12"]},{value:"UTC-11",abbr:"U",offset:-11,isdst:!1,text:"(UTC-11:00) Coordinated Universal Time-11",utc:["Etc/GMT+11","Pacific/Midway","Pacific/Niue","Pacific/Pago_Pago"]},{value:"Hawaiian Standard Time",abbr:"HST",offset:-10,isdst:!1,text:"(UTC-10:00) Hawaii",utc:["Etc/GMT+10","Pacific/Honolulu","Pacific/Johnston","Pacific/Rarotonga","Pacific/Tahiti"]},{value:"Alaskan Standard Time",abbr:"AKDT",offset:-8,isdst:!0,text:"(UTC-09:00) Alaska",utc:["America/Anchorage","America/Juneau","America/Nome","America/Sitka","America/Yakutat"]},{value:"Pacific Standard Time (Mexico)",abbr:"PDT",offset:-7,isdst:!0,text:"(UTC-08:00) Baja California",utc:["America/Santa_Isabel"]},{value:"Pacific Daylight Time",abbr:"PDT",offset:-7,isdst:!0,text:"(UTC-07:00) Pacific Daylight Time (US & Canada)",utc:["America/Los_Angeles","America/Tijuana","America/Vancouver"]},{value:"Pacific Standard Time",abbr:"PST",offset:-8,isdst:!1,text:"(UTC-08:00) Pacific Standard Time (US & Canada)",utc:["America/Los_Angeles","America/Tijuana","America/Vancouver","PST8PDT"]},{value:"US Mountain Standard Time",abbr:"UMST",offset:-7,isdst:!1,text:"(UTC-07:00) Arizona",utc:["America/Creston","America/Dawson","America/Dawson_Creek","America/Hermosillo","America/Phoenix","America/Whitehorse","Etc/GMT+7"]},{value:"Mountain Standard Time (Mexico)",abbr:"MDT",offset:-6,isdst:!0,text:"(UTC-07:00) Chihuahua, La Paz, Mazatlan",utc:["America/Chihuahua","America/Mazatlan"]},{value:"Mountain Standard Time",abbr:"MDT",offset:-6,isdst:!0,text:"(UTC-07:00) Mountain Time (US & Canada)",utc:["America/Boise","America/Cambridge_Bay","America/Denver","America/Edmonton","America/Inuvik","America/Ojinaga","America/Yellowknife","MST7MDT"]},{value:"Central America Standard Time",abbr:"CAST",offset:-6,isdst:!1,text:"(UTC-06:00) Central America",utc:["America/Belize","America/Costa_Rica","America/El_Salvador","America/Guatemala","America/Managua","America/Tegucigalpa","Etc/GMT+6","Pacific/Galapagos"]},{value:"Central Standard Time",abbr:"CDT",offset:-5,isdst:!0,text:"(UTC-06:00) Central Time (US & Canada)",utc:["America/Chicago","America/Indiana/Knox","America/Indiana/Tell_City","America/Matamoros","America/Menominee","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Rainy_River","America/Rankin_Inlet","America/Resolute","America/Winnipeg","CST6CDT"]},{value:"Central Standard Time (Mexico)",abbr:"CDT",offset:-5,isdst:!0,text:"(UTC-06:00) Guadalajara, Mexico City, Monterrey",utc:["America/Bahia_Banderas","America/Cancun","America/Merida","America/Mexico_City","America/Monterrey"]},{value:"Canada Central Standard Time",abbr:"CCST",offset:-6,isdst:!1,text:"(UTC-06:00) Saskatchewan",utc:["America/Regina","America/Swift_Current"]},{value:"SA Pacific Standard Time",abbr:"SPST",offset:-5,isdst:!1,text:"(UTC-05:00) Bogota, Lima, Quito",utc:["America/Bogota","America/Cayman","America/Coral_Harbour","America/Eirunepe","America/Guayaquil","America/Jamaica","America/Lima","America/Panama","America/Rio_Branco","Etc/GMT+5"]},{value:"Eastern Standard Time",abbr:"EST",offset:-5,isdst:!1,text:"(UTC-05:00) Eastern Time (US & Canada)",utc:["America/Detroit","America/Havana","America/Indiana/Petersburg","America/Indiana/Vincennes","America/Indiana/Winamac","America/Iqaluit","America/Kentucky/Monticello","America/Louisville","America/Montreal","America/Nassau","America/New_York","America/Nipigon","America/Pangnirtung","America/Port-au-Prince","America/Thunder_Bay","America/Toronto"]},{value:"Eastern Daylight Time",abbr:"EDT",offset:-4,isdst:!0,text:"(UTC-04:00) Eastern Daylight Time (US & Canada)",utc:["America/Detroit","America/Havana","America/Indiana/Petersburg","America/Indiana/Vincennes","America/Indiana/Winamac","America/Iqaluit","America/Kentucky/Monticello","America/Louisville","America/Montreal","America/Nassau","America/New_York","America/Nipigon","America/Pangnirtung","America/Port-au-Prince","America/Thunder_Bay","America/Toronto"]},{value:"US Eastern Standard Time",abbr:"UEDT",offset:-5,isdst:!1,text:"(UTC-05:00) Indiana (East)",utc:["America/Indiana/Marengo","America/Indiana/Vevay","America/Indianapolis"]},{value:"Venezuela Standard Time",abbr:"VST",offset:-4.5,isdst:!1,text:"(UTC-04:30) Caracas",utc:["America/Caracas"]},{value:"Paraguay Standard Time",abbr:"PYT",offset:-4,isdst:!1,text:"(UTC-04:00) Asuncion",utc:["America/Asuncion"]},{value:"Atlantic Standard Time",abbr:"ADT",offset:-3,isdst:!0,text:"(UTC-04:00) Atlantic Time (Canada)",utc:["America/Glace_Bay","America/Goose_Bay","America/Halifax","America/Moncton","America/Thule","Atlantic/Bermuda"]},{value:"Central Brazilian Standard Time",abbr:"CBST",offset:-4,isdst:!1,text:"(UTC-04:00) Cuiaba",utc:["America/Campo_Grande","America/Cuiaba"]},{value:"SA Western Standard Time",abbr:"SWST",offset:-4,isdst:!1,text:"(UTC-04:00) Georgetown, La Paz, Manaus, San Juan",utc:["America/Anguilla","America/Antigua","America/Aruba","America/Barbados","America/Blanc-Sablon","America/Boa_Vista","America/Curacao","America/Dominica","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guyana","America/Kralendijk","America/La_Paz","America/Lower_Princes","America/Manaus","America/Marigot","America/Martinique","America/Montserrat","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Santo_Domingo","America/St_Barthelemy","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Tortola","Etc/GMT+4"]},{value:"Pacific SA Standard Time",abbr:"PSST",offset:-4,isdst:!1,text:"(UTC-04:00) Santiago",utc:["America/Santiago","Antarctica/Palmer"]},{value:"Newfoundland Standard Time",abbr:"NDT",offset:-2.5,isdst:!0,text:"(UTC-03:30) Newfoundland",utc:["America/St_Johns"]},{value:"E. South America Standard Time",abbr:"ESAST",offset:-3,isdst:!1,text:"(UTC-03:00) Brasilia",utc:["America/Sao_Paulo"]},{value:"Argentina Standard Time",abbr:"AST",offset:-3,isdst:!1,text:"(UTC-03:00) Buenos Aires",utc:["America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Buenos_Aires","America/Catamarca","America/Cordoba","America/Jujuy","America/Mendoza"]},{value:"SA Eastern Standard Time",abbr:"SEST",offset:-3,isdst:!1,text:"(UTC-03:00) Cayenne, Fortaleza",utc:["America/Araguaina","America/Belem","America/Cayenne","America/Fortaleza","America/Maceio","America/Paramaribo","America/Recife","America/Santarem","Antarctica/Rothera","Atlantic/Stanley","Etc/GMT+3"]},{value:"Greenland Standard Time",abbr:"GDT",offset:-3,isdst:!0,text:"(UTC-03:00) Greenland",utc:["America/Godthab"]},{value:"Montevideo Standard Time",abbr:"MST",offset:-3,isdst:!1,text:"(UTC-03:00) Montevideo",utc:["America/Montevideo"]},{value:"Bahia Standard Time",abbr:"BST",offset:-3,isdst:!1,text:"(UTC-03:00) Salvador",utc:["America/Bahia"]},{value:"UTC-02",abbr:"U",offset:-2,isdst:!1,text:"(UTC-02:00) Coordinated Universal Time-02",utc:["America/Noronha","Atlantic/South_Georgia","Etc/GMT+2"]},{value:"Mid-Atlantic Standard Time",abbr:"MDT",offset:-1,isdst:!0,text:"(UTC-02:00) Mid-Atlantic - Old",utc:[]},{value:"Azores Standard Time",abbr:"ADT",offset:0,isdst:!0,text:"(UTC-01:00) Azores",utc:["America/Scoresbysund","Atlantic/Azores"]},{value:"Cape Verde Standard Time",abbr:"CVST",offset:-1,isdst:!1,text:"(UTC-01:00) Cape Verde Is.",utc:["Atlantic/Cape_Verde","Etc/GMT+1"]},{value:"Morocco Standard Time",abbr:"MDT",offset:1,isdst:!0,text:"(UTC) Casablanca",utc:["Africa/Casablanca","Africa/El_Aaiun"]},{value:"UTC",abbr:"UTC",offset:0,isdst:!1,text:"(UTC) Coordinated Universal Time",utc:["America/Danmarkshavn","Etc/GMT"]},{value:"GMT Standard Time",abbr:"GMT",offset:0,isdst:!1,text:"(UTC) Edinburgh, London",utc:["Europe/Isle_of_Man","Europe/Guernsey","Europe/Jersey","Europe/London"]},{value:"British Summer Time",abbr:"BST",offset:1,isdst:!0,text:"(UTC+01:00) Edinburgh, London",utc:["Europe/Isle_of_Man","Europe/Guernsey","Europe/Jersey","Europe/London"]},{value:"GMT Standard Time",abbr:"GDT",offset:1,isdst:!0,text:"(UTC) Dublin, Lisbon",utc:["Atlantic/Canary","Atlantic/Faeroe","Atlantic/Madeira","Europe/Dublin","Europe/Lisbon"]},{value:"Greenwich Standard Time",abbr:"GST",offset:0,isdst:!1,text:"(UTC) Monrovia, Reykjavik",utc:["Africa/Abidjan","Africa/Accra","Africa/Bamako","Africa/Banjul","Africa/Bissau","Africa/Conakry","Africa/Dakar","Africa/Freetown","Africa/Lome","Africa/Monrovia","Africa/Nouakchott","Africa/Ouagadougou","Africa/Sao_Tome","Atlantic/Reykjavik","Atlantic/St_Helena"]},{value:"W. Europe Standard Time",abbr:"WEDT",offset:2,isdst:!0,text:"(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",utc:["Arctic/Longyearbyen","Europe/Amsterdam","Europe/Andorra","Europe/Berlin","Europe/Busingen","Europe/Gibraltar","Europe/Luxembourg","Europe/Malta","Europe/Monaco","Europe/Oslo","Europe/Rome","Europe/San_Marino","Europe/Stockholm","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Zurich"]},{value:"Central Europe Standard Time",abbr:"CEDT",offset:2,isdst:!0,text:"(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",utc:["Europe/Belgrade","Europe/Bratislava","Europe/Budapest","Europe/Ljubljana","Europe/Podgorica","Europe/Prague","Europe/Tirane"]},{value:"Romance Standard Time",abbr:"RDT",offset:2,isdst:!0,text:"(UTC+01:00) Brussels, Copenhagen, Madrid, Paris",utc:["Africa/Ceuta","Europe/Brussels","Europe/Copenhagen","Europe/Madrid","Europe/Paris"]},{value:"Central European Standard Time",abbr:"CEDT",offset:2,isdst:!0,text:"(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb",utc:["Europe/Sarajevo","Europe/Skopje","Europe/Warsaw","Europe/Zagreb"]},{value:"W. Central Africa Standard Time",abbr:"WCAST",offset:1,isdst:!1,text:"(UTC+01:00) West Central Africa",utc:["Africa/Algiers","Africa/Bangui","Africa/Brazzaville","Africa/Douala","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Luanda","Africa/Malabo","Africa/Ndjamena","Africa/Niamey","Africa/Porto-Novo","Africa/Tunis","Etc/GMT-1"]},{value:"Namibia Standard Time",abbr:"NST",offset:1,isdst:!1,text:"(UTC+01:00) Windhoek",utc:["Africa/Windhoek"]},{value:"GTB Standard Time",abbr:"GDT",offset:3,isdst:!0,text:"(UTC+02:00) Athens, Bucharest",utc:["Asia/Nicosia","Europe/Athens","Europe/Bucharest","Europe/Chisinau"]},{value:"Middle East Standard Time",abbr:"MEDT",offset:3,isdst:!0,text:"(UTC+02:00) Beirut",utc:["Asia/Beirut"]},{value:"Egypt Standard Time",abbr:"EST",offset:2,isdst:!1,text:"(UTC+02:00) Cairo",utc:["Africa/Cairo"]},{value:"Syria Standard Time",abbr:"SDT",offset:3,isdst:!0,text:"(UTC+02:00) Damascus",utc:["Asia/Damascus"]},{value:"E. Europe Standard Time",abbr:"EEDT",offset:3,isdst:!0,text:"(UTC+02:00) E. Europe",utc:["Asia/Nicosia","Europe/Athens","Europe/Bucharest","Europe/Chisinau","Europe/Helsinki","Europe/Kyiv","Europe/Mariehamn","Europe/Nicosia","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Uzhhorod","Europe/Vilnius","Europe/Zaporizhzhia"]},{value:"South Africa Standard Time",abbr:"SAST",offset:2,isdst:!1,text:"(UTC+02:00) Harare, Pretoria",utc:["Africa/Blantyre","Africa/Bujumbura","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Kigali","Africa/Lubumbashi","Africa/Lusaka","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Etc/GMT-2"]},{value:"FLE Standard Time",abbr:"FDT",offset:3,isdst:!0,text:"(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius",utc:["Europe/Helsinki","Europe/Kyiv","Europe/Mariehamn","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Uzhhorod","Europe/Vilnius","Europe/Zaporizhzhia"]},{value:"Turkey Standard Time",abbr:"TDT",offset:3,isdst:!1,text:"(UTC+03:00) Istanbul",utc:["Europe/Istanbul"]},{value:"Israel Standard Time",abbr:"JDT",offset:3,isdst:!0,text:"(UTC+02:00) Jerusalem",utc:["Asia/Jerusalem"]},{value:"Libya Standard Time",abbr:"LST",offset:2,isdst:!1,text:"(UTC+02:00) Tripoli",utc:["Africa/Tripoli"]},{value:"Jordan Standard Time",abbr:"JST",offset:3,isdst:!1,text:"(UTC+03:00) Amman",utc:["Asia/Amman"]},{value:"Arabic Standard Time",abbr:"AST",offset:3,isdst:!1,text:"(UTC+03:00) Baghdad",utc:["Asia/Baghdad"]},{value:"Kaliningrad Standard Time",abbr:"KST",offset:3,isdst:!1,text:"(UTC+02:00) Kaliningrad",utc:["Europe/Kaliningrad"]},{value:"Arab Standard Time",abbr:"AST",offset:3,isdst:!1,text:"(UTC+03:00) Kuwait, Riyadh",utc:["Asia/Aden","Asia/Bahrain","Asia/Kuwait","Asia/Qatar","Asia/Riyadh"]},{value:"E. Africa Standard Time",abbr:"EAST",offset:3,isdst:!1,text:"(UTC+03:00) Nairobi",utc:["Africa/Addis_Ababa","Africa/Asmera","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Mogadishu","Africa/Nairobi","Antarctica/Syowa","Etc/GMT-3","Indian/Antananarivo","Indian/Comoro","Indian/Mayotte"]},{value:"Moscow Standard Time",abbr:"MSK",offset:3,isdst:!1,text:"(UTC+03:00) Moscow, St. Petersburg, Volgograd, Minsk",utc:["Europe/Kirov","Europe/Moscow","Europe/Simferopol","Europe/Volgograd","Europe/Minsk"]},{value:"Samara Time",abbr:"SAMT",offset:4,isdst:!1,text:"(UTC+04:00) Samara, Ulyanovsk, Saratov",utc:["Europe/Astrakhan","Europe/Samara","Europe/Ulyanovsk"]},{value:"Iran Standard Time",abbr:"IDT",offset:4.5,isdst:!0,text:"(UTC+03:30) Tehran",utc:["Asia/Tehran"]},{value:"Arabian Standard Time",abbr:"AST",offset:4,isdst:!1,text:"(UTC+04:00) Abu Dhabi, Muscat",utc:["Asia/Dubai","Asia/Muscat","Etc/GMT-4"]},{value:"Azerbaijan Standard Time",abbr:"ADT",offset:5,isdst:!0,text:"(UTC+04:00) Baku",utc:["Asia/Baku"]},{value:"Mauritius Standard Time",abbr:"MST",offset:4,isdst:!1,text:"(UTC+04:00) Port Louis",utc:["Indian/Mahe","Indian/Mauritius","Indian/Reunion"]},{value:"Georgian Standard Time",abbr:"GET",offset:4,isdst:!1,text:"(UTC+04:00) Tbilisi",utc:["Asia/Tbilisi"]},{value:"Caucasus Standard Time",abbr:"CST",offset:4,isdst:!1,text:"(UTC+04:00) Yerevan",utc:["Asia/Yerevan"]},{value:"Afghanistan Standard Time",abbr:"AST",offset:4.5,isdst:!1,text:"(UTC+04:30) Kabul",utc:["Asia/Kabul"]},{value:"West Asia Standard Time",abbr:"WAST",offset:5,isdst:!1,text:"(UTC+05:00) Ashgabat, Tashkent",utc:["Antarctica/Mawson","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Dushanbe","Asia/Oral","Asia/Samarkand","Asia/Tashkent","Etc/GMT-5","Indian/Kerguelen","Indian/Maldives"]},{value:"Yekaterinburg Time",abbr:"YEKT",offset:5,isdst:!1,text:"(UTC+05:00) Yekaterinburg",utc:["Asia/Yekaterinburg"]},{value:"Pakistan Standard Time",abbr:"PKT",offset:5,isdst:!1,text:"(UTC+05:00) Islamabad, Karachi",utc:["Asia/Karachi"]},{value:"India Standard Time",abbr:"IST",offset:5.5,isdst:!1,text:"(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi",utc:["Asia/Kolkata","Asia/Calcutta"]},{value:"Sri Lanka Standard Time",abbr:"SLST",offset:5.5,isdst:!1,text:"(UTC+05:30) Sri Jayawardenepura",utc:["Asia/Colombo"]},{value:"Nepal Standard Time",abbr:"NST",offset:5.75,isdst:!1,text:"(UTC+05:45) Kathmandu",utc:["Asia/Kathmandu"]},{value:"Central Asia Standard Time",abbr:"CAST",offset:6,isdst:!1,text:"(UTC+06:00) Nur-Sultan (Astana)",utc:["Antarctica/Vostok","Asia/Almaty","Asia/Bishkek","Asia/Qyzylorda","Asia/Urumqi","Etc/GMT-6","Indian/Chagos"]},{value:"Bangladesh Standard Time",abbr:"BST",offset:6,isdst:!1,text:"(UTC+06:00) Dhaka",utc:["Asia/Dhaka","Asia/Thimphu"]},{value:"Myanmar Standard Time",abbr:"MST",offset:6.5,isdst:!1,text:"(UTC+06:30) Yangon (Rangoon)",utc:["Asia/Rangoon","Indian/Cocos"]},{value:"SE Asia Standard Time",abbr:"SAST",offset:7,isdst:!1,text:"(UTC+07:00) Bangkok, Hanoi, Jakarta",utc:["Antarctica/Davis","Asia/Bangkok","Asia/Hovd","Asia/Jakarta","Asia/Phnom_Penh","Asia/Pontianak","Asia/Saigon","Asia/Vientiane","Etc/GMT-7","Indian/Christmas"]},{value:"N. Central Asia Standard Time",abbr:"NCAST",offset:7,isdst:!1,text:"(UTC+07:00) Novosibirsk",utc:["Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk"]},{value:"China Standard Time",abbr:"CST",offset:8,isdst:!1,text:"(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi",utc:["Asia/Hong_Kong","Asia/Macau","Asia/Shanghai"]},{value:"North Asia Standard Time",abbr:"NAST",offset:8,isdst:!1,text:"(UTC+08:00) Krasnoyarsk",utc:["Asia/Krasnoyarsk"]},{value:"Singapore Standard Time",abbr:"MPST",offset:8,isdst:!1,text:"(UTC+08:00) Kuala Lumpur, Singapore",utc:["Asia/Brunei","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Makassar","Asia/Manila","Asia/Singapore","Etc/GMT-8"]},{value:"W. Australia Standard Time",abbr:"WAST",offset:8,isdst:!1,text:"(UTC+08:00) Perth",utc:["Antarctica/Casey","Australia/Perth"]},{value:"Taipei Standard Time",abbr:"TST",offset:8,isdst:!1,text:"(UTC+08:00) Taipei",utc:["Asia/Taipei"]},{value:"Ulaanbaatar Standard Time",abbr:"UST",offset:8,isdst:!1,text:"(UTC+08:00) Ulaanbaatar",utc:["Asia/Choibalsan","Asia/Ulaanbaatar"]},{value:"North Asia East Standard Time",abbr:"NAEST",offset:8,isdst:!1,text:"(UTC+08:00) Irkutsk",utc:["Asia/Irkutsk"]},{value:"Japan Standard Time",abbr:"JST",offset:9,isdst:!1,text:"(UTC+09:00) Osaka, Sapporo, Tokyo",utc:["Asia/Dili","Asia/Jayapura","Asia/Tokyo","Etc/GMT-9","Pacific/Palau"]},{value:"Korea Standard Time",abbr:"KST",offset:9,isdst:!1,text:"(UTC+09:00) Seoul",utc:["Asia/Pyongyang","Asia/Seoul"]},{value:"Cen. Australia Standard Time",abbr:"CAST",offset:9.5,isdst:!1,text:"(UTC+09:30) Adelaide",utc:["Australia/Adelaide","Australia/Broken_Hill"]},{value:"AUS Central Standard Time",abbr:"ACST",offset:9.5,isdst:!1,text:"(UTC+09:30) Darwin",utc:["Australia/Darwin"]},{value:"E. Australia Standard Time",abbr:"EAST",offset:10,isdst:!1,text:"(UTC+10:00) Brisbane",utc:["Australia/Brisbane","Australia/Lindeman"]},{value:"AUS Eastern Standard Time",abbr:"AEST",offset:10,isdst:!1,text:"(UTC+10:00) Canberra, Melbourne, Sydney",utc:["Australia/Melbourne","Australia/Sydney"]},{value:"West Pacific Standard Time",abbr:"WPST",offset:10,isdst:!1,text:"(UTC+10:00) Guam, Port Moresby",utc:["Antarctica/DumontDUrville","Etc/GMT-10","Pacific/Guam","Pacific/Port_Moresby","Pacific/Saipan","Pacific/Truk"]},{value:"Tasmania Standard Time",abbr:"TST",offset:10,isdst:!1,text:"(UTC+10:00) Hobart",utc:["Australia/Currie","Australia/Hobart"]},{value:"Yakutsk Standard Time",abbr:"YST",offset:9,isdst:!1,text:"(UTC+09:00) Yakutsk",utc:["Asia/Chita","Asia/Khandyga","Asia/Yakutsk"]},{value:"Central Pacific Standard Time",abbr:"CPST",offset:11,isdst:!1,text:"(UTC+11:00) Solomon Is., New Caledonia",utc:["Antarctica/Macquarie","Etc/GMT-11","Pacific/Efate","Pacific/Guadalcanal","Pacific/Kosrae","Pacific/Noumea","Pacific/Ponape"]},{value:"Vladivostok Standard Time",abbr:"VST",offset:11,isdst:!1,text:"(UTC+11:00) Vladivostok",utc:["Asia/Sakhalin","Asia/Ust-Nera","Asia/Vladivostok"]},{value:"New Zealand Standard Time",abbr:"NZST",offset:12,isdst:!1,text:"(UTC+12:00) Auckland, Wellington",utc:["Antarctica/McMurdo","Pacific/Auckland"]},{value:"UTC+12",abbr:"U",offset:12,isdst:!1,text:"(UTC+12:00) Coordinated Universal Time+12",utc:["Etc/GMT-12","Pacific/Funafuti","Pacific/Kwajalein","Pacific/Majuro","Pacific/Nauru","Pacific/Tarawa","Pacific/Wake","Pacific/Wallis"]},{value:"Fiji Standard Time",abbr:"FST",offset:12,isdst:!1,text:"(UTC+12:00) Fiji",utc:["Pacific/Fiji"]},{value:"Magadan Standard Time",abbr:"MST",offset:12,isdst:!1,text:"(UTC+12:00) Magadan",utc:["Asia/Anadyr","Asia/Kamchatka","Asia/Magadan","Asia/Srednekolymsk"]},{value:"Kamchatka Standard Time",abbr:"KDT",offset:13,isdst:!0,text:"(UTC+12:00) Petropavlovsk-Kamchatsky - Old",utc:["Asia/Kamchatka"]},{value:"Tonga Standard Time",abbr:"TST",offset:13,isdst:!1,text:"(UTC+13:00) Nuku'alofa",utc:["Etc/GMT-13","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Tongatapu"]},{value:"Samoa Standard Time",abbr:"SST",offset:13,isdst:!1,text:"(UTC+13:00) Samoa",utc:["Pacific/Apia"]}].filter(e=>e.utc.length).reduce((e,s)=>{let t=s.utc;for(let a=0;a<t.length;a++){const n=t[a],i=s.text;let r=i.substring(i.indexOf("(")+1,i.indexOf(")"));-1!==r.indexOf("UTC")&&e.push({value:n,abbr:s.abbr,offset:s.offset,isdst:s.isdst,text:`(${r}) ${n}`,utc:["Etc/GMT-13","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Tongatapu"]})}return e},[]).filter((e,s,t)=>s===t.findIndex(s=>s.value===e.value));const Pe={language:{label:"profile.language",Picker:function({value:s,onChange:t,...n}){const{t:i}=a.useTranslation(),r=ke.map(e=>({value:e.value,label:e.label,icon:e.flag}));return e.jsx(Ae,{...n,options:r,value:s,onChange:t,placeholder:i("dropdowns.searchLanguage"),emptyLabel:i("dropdowns.chooseLanguage")})}},country:{label:"profile.country",Picker:function({value:s,onChange:t,...n}){const{t:i}=a.useTranslation(),r=A.map(e=>({value:e.value,label:e.text,icon:e.flag}));return e.jsx(Ae,{...n,options:r,value:s,onChange:t,placeholder:i("dropdowns.searchCountry"),emptyLabel:i("dropdowns.chooseCountry")})}},currency:{label:"profile.currency",Picker:function({value:s,onChange:t,...n}){const{t:i}=a.useTranslation(),r=we.map(e=>({value:e.value,label:e.text,icon:e.icon??void 0}));return e.jsx(Ae,{...n,options:r,value:s,onChange:t,placeholder:i("dropdowns.searchCurrency"),emptyLabel:i("dropdowns.chooseCurrency")})}},timezone:{label:"profile.timezone",Picker:function({value:s,onChange:t,...n}){const{t:i}=a.useTranslation(),r=Ee.map(e=>({value:e.value,label:e.text}));return e.jsx(Ae,{...n,options:r,value:s,onChange:t,placeholder:i("dropdowns.searchTimezone"),emptyLabel:i("dropdowns.chooseTimezone")})}}},De=({field:s,value:n,onChange:i})=>{const{t:r}=a.useTranslation(),o=t.useId(),{label:c,Picker:l}=Pe[s];return e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsx("div",{id:o,className:"text-sm font-medium",children:r(c)}),e.jsx(l,{"aria-labelledby":o,value:n,onChange:e=>i(s,e)})]})},Me=({fields:s,values:t,onChange:a})=>e.jsx("div",{className:"flex gap-y-2 my-4 flex-col",children:s.map(s=>e.jsx(De,{field:s,value:t[s],onChange:a},s))}),Ie=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function Ue(){const e=a.useAuthStore();return t.useCallback(s=>{const t=e.getState().session;t&&e.dispatch(a.authActions.setSession({...t,user:{...t.user,...s}}))},[e])}const Re=({currentEmail:s,busy:t,waitSeconds:n,onSubmit:c,onCancel:l})=>{const{t:d}=a.useTranslation(),u=o.z.object({newEmail:o.z.string().trim().refine(e=>Ie.test(e),{message:d("profile.changeEmailInvalid")}).refine(e=>e.toLowerCase()!==s.trim().toLowerCase(),{message:d("profile.changeEmailSame")})}),m=r.useForm({resolver:i.zodResolver(u),defaultValues:{newEmail:""}});return e.jsx(a.Form,{...m,children:e.jsxs("form",{noValidate:!0,onSubmit:m.handleSubmit(e=>c(e.newEmail)),className:"space-y-3 rounded-md border p-4",children:[e.jsx(a.FormField,{disabled:t,control:m.control,name:"newEmail",render:({field:s})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:d("profile.changeEmailNewLabel")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{type:"email",dir:"ltr",autoFocus:!0,autoComplete:"email",autoCapitalize:"off",spellCheck:!1,...s})}),e.jsx(a.FormMessage,{})]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:d("profile.changeEmailNewHint")}),e.jsxs("div",{className:"flex flex-wrap justify-end gap-2",children:[e.jsx(a.Button,{type:"button",variant:"ghost",disabled:t,onClick:l,children:d("settings.common.cancel")}),e.jsx(a.Button,{type:"submit",progress:t,disabled:t||n>0,children:d("profile.changeEmailSend")})]})]})})},Be=({email:s,confirming:t,resending:n,waitSeconds:c,onSubmit:l,onResend:d,onCancel:u})=>{const{t:m}=a.useTranslation(),p=t||n,x=o.z.object({code:o.z.string().refine(e=>/^\d{6}$/.test((e=>e.replace(/\s+/g,""))(e)),{message:m("profile.changeEmailCodeInvalid")})}),g=r.useForm({resolver:i.zodResolver(x),defaultValues:{code:""}});return e.jsx(a.Form,{...g,children:e.jsxs("form",{onSubmit:g.handleSubmit(e=>l(e.code)),className:"space-y-3 rounded-md border p-4",children:[e.jsx("p",{className:"text-sm break-words",children:m("profile.changeEmailSentTo",{email:s})}),e.jsx(a.FormField,{disabled:p,control:g.control,name:"code",render:({field:s})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:m("profile.changeEmailCodeLabel")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{dir:"ltr",autoFocus:!0,autoComplete:"one-time-code",autoCapitalize:"off",autoCorrect:"off",spellCheck:!1,inputMode:"numeric",maxLength:7,className:"font-mono sm:max-w-xs",...s})}),e.jsx(a.FormMessage,{})]})}),e.jsxs("div",{className:"flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between",children:[e.jsx(a.Button,{type:"button",variant:"outline",progress:n,disabled:p||c>0,onClick:d,children:c>0?m("profile.changeEmailResendIn",{seconds:c}):m("profile.changeEmailResend")}),e.jsxs("div",{className:"flex flex-wrap justify-end gap-2",children:[e.jsx(a.Button,{type:"button",variant:"ghost",disabled:p,onClick:u,children:m("settings.common.cancel")}),e.jsx(a.Button,{type:"submit",progress:t,disabled:p,children:m("profile.changeEmailConfirm")})]})]})]})})},Fe=({user:s,onUserChange:n})=>{const{t:i}=a.useTranslation(),{visible:r}=a.useUIVisibility(),o=r(e=>e.settings?.profile?.changeEmail),{api:c}=a.useWorkspaceApiWithOs(),l=Ue(),[d,u]=t.useState({kind:"idle"}),[m,p]=t.useState(null),[x,g]=t.useState(null),[h,f]=t.useState(0),[b,S]=t.useState(()=>Date.now());t.useEffect(()=>{if(h<=Date.now())return;S(Date.now());const e=setInterval(()=>{const s=Date.now();S(s),s>=h&&clearInterval(e)},1e3);return()=>clearInterval(e)},[h]);const v=Math.max(0,Math.ceil((h-b)/1e3)),{canChangeEmail:j,changeEmailBlockedBy:y}=a.readChangeEmail(s),N=o&&j,A=o&&"linked_social_account"===y;function C(e){const s=Date.now()+1e3*e;S(Date.now()),f(s)}function w(e,s){a.handleError(e,{component:"WorkspaceSettingsProfile",action:s}),g({ok:!1,message:a.errorMessageFor(e,i)});const{code:t,retryAfter:r}=e??{};if("number"==typeof r&&C(r),"linked_social_account"===t){const e={canChangeEmail:!1,changeEmailBlockedBy:t};u({kind:"idle"}),n(e),l(e)}}function T(e){g(null),f(0),u(e)}async function k(e,s){p(s?"resend":"send"),g(null);try{const{retryAfter:t}=await c.requestEmailChange(e);C(t),u({kind:"verify",email:e}),s&&g({ok:!0,message:i("profile.changeEmailResent",{email:e})})}catch(e){w(e,"requestEmailChange")}finally{p(null)}}return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"mb-1 flex items-center gap-1",children:[e.jsx("label",{htmlFor:"profile-email",className:"block text-sm font-medium",children:i("profile.email")}),e.jsx(ee,{canChange:N})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[e.jsx(a.Input,{id:"profile-email",disabled:!0,className:"w-full border rounded px-3 py-2 bg-muted",value:s.email}),N&&"idle"===d.kind&&e.jsx(a.Button,{type:"button",variant:"outline",className:"shrink-0",onClick:()=>T({kind:"enter"}),children:i("profile.changeEmail")})]}),A&&e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:i("profile.changeEmailBlockedSocial")})]}),x&&e.jsx(a.StatusBanner,{variant:x.ok?"success":"error",title:x.ok?i("settings.common.success"):i("settings.common.error"),message:x.message}),N&&"enter"===d.kind&&e.jsx(Re,{currentEmail:s.email,busy:"send"===m,waitSeconds:v,onSubmit:e=>k(e,!1),onCancel:()=>T({kind:"idle"})}),N&&"verify"===d.kind&&e.jsx(Be,{email:d.email,confirming:"confirm"===m,resending:"resend"===m,waitSeconds:v,onSubmit:async function(e){if("verify"===d.kind){p("confirm"),g(null);try{const s=await c.confirmEmailChange(e),t="string"==typeof s?.email&&s.email?s.email:d.email;n({email:t}),l({email:t,emailVerified:!0}),u({kind:"idle"}),f(0),g({ok:!0,message:i("profile.changeEmailChanged",{email:t})})}catch(e){w(e,"confirmEmailChange")}finally{p(null)}}},onResend:()=>k(d.email,!0),onCancel:()=>T({kind:"idle"})})]})},Le=({username:s,policy:n,onChange:i})=>{const{t:r}=a.useTranslation(),{api:o}=a.useWorkspaceApiWithOs(),c=Ue(),[l,d]=t.useState(s),[u,m]=t.useState(!1),[p,x]=t.useState(null),[g,h]=t.useState(null);t.useEffect(()=>{d(s),m(!1)},[s]);const f=null===n||n.enabled,b=!0===n?.required,S=a.normaliseUsername(l),v=(S??l.trim().toLowerCase())===s;function j(e){i(e),d(e),c({username:e||void 0})}const y="profile-username-hint",N="profile-username-error";return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("form",{noValidate:!0,onSubmit:e=>{e.preventDefault(),f&&!v&&null===p&&async function(){if(S){x("save"),h(null);try{const e=await o.setUsername(S);j(e.username),h({ok:!0,message:r("profile.usernameSaved",{username:e.username})})}catch(e){a.handleError(e,{component:"WorkspaceSettingsProfile",action:"setUsername"}),h({ok:!1,message:a.errorMessageFor(e,r)})}finally{x(null)}}else m(!0)}()},children:[e.jsx("label",{htmlFor:"profile-username",className:"mb-1 block text-sm font-medium",children:r("profile.username")}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[e.jsx(a.Input,{id:"profile-username",dir:"ltr",autoComplete:"username",autoCapitalize:"off",spellCheck:!1,maxLength:30,value:l,disabled:!f||null!==p,"aria-invalid":u||void 0,"aria-describedby":u?`${y} ${N}`:y,onChange:e=>{d(e.target.value),m(!1)}}),e.jsxs("div",{className:"flex shrink-0 flex-wrap gap-2",children:[f&&e.jsx(a.Button,{type:"submit",variant:"outline",progress:"save"===p,disabled:v||null!==p,children:r("profile.usernameSave")}),s&&!b&&e.jsx(a.Button,{type:"button",variant:"outline",className:"text-destructive",progress:"remove"===p,disabled:null!==p,onClick:async function(){x("remove"),h(null);try{await o.removeUsername(),j(""),h({ok:!0,message:r("profile.usernameRemoved")})}catch(e){a.handleError(e,{component:"WorkspaceSettingsProfile",action:"removeUsername"}),h({ok:!1,message:a.errorMessageFor(e,r)})}finally{x(null)}},children:r("profile.usernameRemove")})]})]}),u&&e.jsx("p",{id:N,className:"mt-1 text-xs text-destructive",children:r("profile.usernameInvalid")}),e.jsx("p",{id:y,className:"mt-1 text-xs text-muted-foreground",children:r(b?"profile.usernameRequiredNote":"profile.usernameHint")})]}),g&&e.jsx(a.StatusBanner,{variant:g.ok?"success":"error",title:g.ok?r("settings.common.success"):r("settings.common.error"),message:g.message})]})};const _e=({workspace:s})=>{const{t:n}=a.useTranslation(),{visible:c}=a.useUIVisibility(),l=[["language",c(e=>e.settings?.profile?.language)],["country",c(e=>e.settings?.profile?.country)],["currency",c(e=>e.settings?.profile?.currency)],["timezone",c(e=>e.settings?.profile?.timezone)]].filter(([,e])=>e).map(([e])=>e),d=c(e=>e.settings?.profile?.username),{updateUserProfile:u,getProfile:m}=a.useSaaSWorkspaces(),[p,x]=t.useState(!1),[g,h]=t.useState(),[f,b]=t.useState(0),[S,v]=t.useState(!1),[j,y]=t.useState(null),N=le(),A=a.useUpload("profile-image"),C=t.useRef(null),w=function(e){const s=a.useSaaSOs(),[n,i]=t.useState(null);return t.useEffect(()=>{if(!e||!s.serverUrl||!s.orgId)return;const t=new AbortController;return new a.AuthApi({serverUrl:s.serverUrl,version:s.version}).getUsernamePolicy(s.orgId,t.signal).then(i).catch(()=>i(null)),()=>t.abort()},[e,s.serverUrl,s.version,s.orgId]),n}(d),T=!!g&&a.isGuestProfile(g),k="string"==typeof g?.username?g.username:"",P=d&&!T&&(!!k||!!w?.enabled),D=o.z.object({name:o.z.string().min(2,{message:n("profile.nameMinLength")}),country:o.z.string().optional(),timezone:o.z.string().optional(),language:o.z.string().optional(),currency:o.z.string().optional(),image:o.z.string().optional()}),M=r.useForm({resolver:i.zodResolver(D),defaultValues:{name:g?.name||"",country:g?.country||"",timezone:g?.timezone||"",language:g?.language||"",currency:g?.currency||"",image:g?.image||""}});function I(){b(e=>e+1)}t.useEffect(()=>{v(!1),m().then(e=>{h(e),M.setValue("name",e.name),M.setValue("country",e.country),M.setValue("timezone",e.timezone),M.setValue("language",e.language),M.setValue("currency",e.currency),M.setValue("image",e.image??"")}).catch(e=>{a.handleError(e,{component:"WorkspaceSettingsProfile",action:"getProfile"}),v(!0)})},[f]);const U=S&&e.jsx(a.StatusBanner,{variant:"error",title:n("settings.common.error"),message:n("profile.loadFailed"),actionLabel:n("settings.common.retry"),onAction:I,className:g?"mb-4":void 0});if(!g)return U||e.jsx(E,{});const R=M.watch("image")?.trim(),B=p||A.loading;return e.jsxs("div",{children:[U,N.message&&e.jsx(a.StatusBanner,{variant:"success",title:n("settings.common.success"),message:N.message,className:"mb-4"}),j&&e.jsx(a.StatusBanner,{variant:"error",title:n("settings.common.error"),message:j,className:"mb-4"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[e.jsxs(a.Avatar,{className:"h-16 w-16",children:[R&&e.jsx(a.AvatarImage,{src:R,alt:n("profile.profileImage")}),e.jsx(a.AvatarFallback,{className:"text-lg",children:(g.name||g.email||"?").trim().charAt(0).toUpperCase()})]}),e.jsxs("div",{className:"min-w-0 space-y-2",children:[e.jsx("p",{className:"text-sm font-medium",children:n("profile.profileImage")}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[A.enabled&&e.jsxs(e.Fragment,{children:[e.jsx("input",{ref:C,type:"file",accept:a.UPLOAD_ACCEPT,className:"hidden",tabIndex:-1,"aria-hidden":"true",onChange:e=>{const s=e.target.files?.[0];s&&async function(e){try{const s=await A.upload(e);M.setValue("image",s.url,{shouldDirty:!0})}catch{}finally{C.current&&(C.current.value="")}}(s)}}),e.jsx(a.Button,{type:"button",variant:"outline",size:"sm",disabled:B,progress:A.loading,"aria-describedby":"profile-picture-help",onClick:()=>C.current?.click(),children:A.loading?n("uploads.uploading"):n("profile.changePicture")})]}),R&&A.enabled&&e.jsx(a.Button,{type:"button",variant:"ghost",size:"sm",disabled:B,onClick:()=>M.setValue("image","",{shouldDirty:!0}),children:n("profile.removePicture")})]}),A.enabled&&e.jsx("p",{id:"profile-picture-help",className:"text-xs text-muted-foreground",children:n("uploads.description",{max:A.maxLabel})})]})]}),A.error&&e.jsx(a.StatusBanner,{variant:"error",message:A.error}),T?e.jsx(a.GuestUpgrade,{onUpgraded:({profile:e,email:s})=>{e&&(h(e),M.setValue("name",e.name)),I(),N.show(n("guest.done",{email:s}))}}):e.jsx(Fe,{user:g,onUserChange:e=>h(s=>s?{...s,...e}:s)}),P&&e.jsx(Le,{username:k,policy:w,onChange:e=>h(s=>s?{...s,username:e}:s)}),e.jsx(a.Form,{...M,children:e.jsxs("form",{onSubmit:M.handleSubmit(async function(e){const t=e.image?.trim()??"";x(!0),N.clear(),y(null);try{await u({name:e.name,country:e.country,timezone:e.timezone,language:e.language,currency:e.currency,...t!==(g?.image??"")?{image:t}:{}}),h(e=>e?{...e,image:t}:e),N.show(n("profile.success"))}catch(e){a.handleError(e,{component:"WorkspaceSettingsProfile",action:"updateUserProfile",metadata:{workspaceId:s._id}}),y(a.errorMessageFor(e,n))}finally{x(!1)}}),className:"space-y-4",children:[e.jsx(a.FormField,{disabled:p,control:M.control,name:"name",render:({field:s})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:n("profile.name")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{...s})}),e.jsx(a.FormMessage,{})]})}),e.jsx(Me,{fields:l,values:{language:M.watch("language"),country:M.watch("country"),currency:M.watch("currency"),timezone:M.watch("timezone")},onChange:(e,s)=>M.setValue(e,s)}),e.jsxs("div",{className:"flex justify-end gap-x-2",children:[e.jsx(a.Button,{type:"submit",progress:p,disabled:B,children:n("profile.save")}),e.jsx(a.Button,{type:"button",variant:"outline",onClick:()=>{I()},disabled:B,children:n("profile.reset")})]})]})})]})]})},Ge=[["AC","247","",[5,6]],["AD","376","",[6,8,9]],["AE","971","0",[5,6,7,8,9,10,11,12]],["AF","93","0",[9]],["AG","1","1",[10]],["AI","1","1",[10]],["AL","355","0",[6,7,8,9]],["AM","374","0",[8]],["AO","244","",[9]],["AR","54","0",[10,11]],["AS","1","1",[10]],["AT","43","0",[4,5,6,7,8,9,10,11,12,13]],["AU","61","0",[5,6,7,8,9,10,12]],["AW","297","",[7]],["AX","358","0",[5,6,7,8,9,10,11,12]],["AZ","994","0",[9]],["BA","387","0",[8,9]],["BB","1","1",[10]],["BD","880","0",[6,7,8,9,10]],["BE","32","0",[8,9]],["BF","226","",[8]],["BG","359","0",[6,7,8,9,12]],["BH","973","",[8]],["BI","257","",[8]],["BJ","229","",[8,10]],["BL","590","0",[9]],["BM","1","1",[10]],["BN","673","",[7]],["BO","591","0",[8,9]],["BQ","599","",[7]],["BR","55","0",[8,9,10,11]],["BS","1","1",[10]],["BT","975","",[7,8]],["BW","267","",[7,8,10]],["BY","375","8",[6,7,8,9,10,11]],["BZ","501","",[7,11]],["CA","1","1",[7,10]],["CC","61","0",[6,7,8,9,10,12]],["CD","243","0",[7,8,9,10]],["CF","236","",[8]],["CG","242","",[9]],["CH","41","0",[9,12]],["CI","225","",[10]],["CK","682","",[5]],["CL","56","",[9,10,11]],["CM","237","",[8,9]],["CN","86","0",[7,8,9,10,11,12]],["CO","57","0",[8,10,11]],["CR","506","",[8,10]],["CU","53","0",[6,7,8,10]],["CV","238","",[7]],["CW","599","",[7,8]],["CX","61","0",[6,7,8,9,10,12]],["CY","357","",[8]],["CZ","420","",[9,10,11,12]],["DE","49","0",[4,5,6,7,8,9,10,11,12,13,14,15]],["DJ","253","",[8]],["DK","45","",[8]],["DM","1","1",[10]],["DO","1","1",[10]],["DZ","213","0",[8,9]],["EC","593","0",[8,9,10,11]],["EE","372","",[7,8,10]],["EG","20","0",[8,9,10]],["EH","212","0",[9]],["ER","291","0",[7]],["ES","34","",[9]],["ET","251","0",[9]],["FI","358","0",[5,6,7,8,9,10,11,12]],["FJ","679","",[7,11]],["FK","500","",[5]],["FM","691","",[7]],["FO","298","",[6]],["FR","33","0",[9]],["GA","241","",[7,8]],["GB","44","0",[7,9,10]],["GD","1","1",[10]],["GE","995","0",[9]],["GF","594","0",[9]],["GG","44","0",[7,9,10]],["GH","233","0",[8,9]],["GI","350","",[8]],["GL","299","",[6]],["GM","220","",[7]],["GN","224","",[8,9]],["GP","590","0",[9]],["GQ","240","",[9]],["GR","30","",[10,11,12]],["GT","502","",[8,11]],["GU","1","1",[10]],["GW","245","",[7,9]],["GY","592","",[7]],["HK","852","",[5,6,7,8,9,11]],["HN","504","",[8,11]],["HR","385","0",[7,8,9]],["HT","509","",[8]],["HU","36","06",[8,9]],["ID","62","0",[7,8,9,10,11,12,13,14,15,16,17]],["IE","353","0",[7,8,9,10]],["IL","972","0",[7,8,9,10,11,12]],["IM","44","0",[10]],["IN","91","0",[8,9,10,11,12,13]],["IO","246","",[7]],["IQ","964","0",[8,9,10]],["IR","98","0",[4,5,6,7,10]],["IS","354","",[7,9]],["IT","39","",[6,7,8,9,10,11,12]],["JE","44","0",[10]],["JM","1","1",[10]],["JO","962","0",[8,9]],["JP","81","0",[8,9,10,11,12,13,14,15,16,17]],["KE","254","0",[7,8,9,10]],["KG","996","0",[9,10]],["KH","855","0",[8,9,10]],["KI","686","0",[5,8]],["KM","269","",[7]],["KN","1","1",[10]],["KP","850","0",[8,10]],["KR","82","0",[5,6,8,9,10,11,12,13,14]],["KW","965","",[7,8]],["KY","1","1",[10]],["KZ","7","8",[10,14]],["LA","856","0",[8,9,10]],["LB","961","0",[7,8]],["LC","1","1",[10]],["LI","423","0",[7,9]],["LK","94","0",[9]],["LR","231","0",[7,8,9]],["LS","266","",[8]],["LT","370","0",[8]],["LU","352","",[4,5,6,7,8,9,10,11]],["LV","371","",[8]],["LY","218","0",[9]],["MA","212","0",[9]],["MC","377","0",[8,9]],["MD","373","0",[8]],["ME","382","0",[8,9]],["MF","590","0",[9]],["MG","261","0",[9]],["MH","692","1",[7]],["MK","389","0",[8]],["ML","223","",[8]],["MM","95","0",[6,7,8,9,10]],["MN","976","0",[8,9,10]],["MO","853","",[7,8]],["MP","1","1",[10]],["MQ","596","0",[9]],["MR","222","",[8]],["MS","1","1",[10]],["MT","356","",[8]],["MU","230","",[7,8,10]],["MV","960","",[7,10]],["MW","265","0",[7,9]],["MX","52","",[10]],["MY","60","0",[8,9,10]],["MZ","258","",[8,9]],["NA","264","0",[8,9]],["NC","687","",[6]],["NE","227","",[8]],["NF","672","",[6]],["NG","234","0",[10,11,12,13,14]],["NI","505","",[8]],["NL","31","0",[5,6,7,8,9,10,11]],["NO","47","",[5,8]],["NP","977","0",[8,10,11]],["NR","674","",[7]],["NU","683","",[4,7]],["NZ","64","0",[5,6,7,8,9,10]],["OM","968","",[7,8,9]],["PA","507","",[7,8,10,11]],["PE","51","0",[8,9]],["PF","689","",[6,8,9]],["PG","675","",[7,8]],["PH","63","0",[6,8,9,10,11,12,13]],["PK","92","0",[8,9,10,11,12]],["PL","48","",[6,7,8,9,10]],["PM","508","0",[6,9]],["PR","1","1",[10]],["PS","970","0",[8,9,10]],["PT","351","",[9]],["PW","680","",[7]],["PY","595","0",[6,7,8,9,10,11]],["QA","974","",[7,8,9,11]],["RE","262","0",[9]],["RO","40","0",[6,9]],["RS","381","0",[6,7,8,9,10,11,12]],["RU","7","8",[10,14]],["RW","250","0",[8,9]],["SA","966","0",[9,10]],["SB","677","",[5,7]],["SC","248","",[7]],["SD","249","0",[9]],["SE","46","0",[6,7,8,9,10,12]],["SG","65","",[8,10,11]],["SH","290","",[4,5]],["SI","386","0",[5,6,7,8]],["SJ","47","",[5,8]],["SK","421","0",[6,7,9]],["SL","232","0",[8]],["SM","378","",[8,10]],["SN","221","",[9]],["SO","252","0",[6,7,8,9]],["SR","597","",[6,7]],["SS","211","0",[9]],["ST","239","",[7]],["SV","503","",[7,8,11]],["SX","1","1",[10]],["SY","963","0",[8,9]],["SZ","268","",[8,9]],["TA","290","",[4]],["TC","1","1",[10]],["TD","235","",[8]],["TG","228","",[8]],["TH","66","0",[8,9,10,13]],["TJ","992","",[9]],["TK","690","",[4,5,6,7]],["TL","670","",[7,8]],["TM","993","8",[8]],["TN","216","",[8]],["TO","676","",[5,7]],["TR","90","0",[7,10,12,13]],["TT","1","1",[10]],["TV","688","",[5,6,7]],["TW","886","0",[7,8,9,10,11]],["TZ","255","0",[9]],["UA","380","0",[9,10]],["UG","256","0",[9]],["US","1","1",[10]],["UY","598","0",[4,5,6,7,8,9,10,11,12,13]],["UZ","998","",[9]],["VA","39","",[6,7,8,9,10,11,12]],["VC","1","1",[10]],["VE","58","0",[10]],["VG","1","1",[10]],["VI","1","1",[10]],["VN","84","0",[7,8,9,10]],["VU","678","",[5,7]],["WF","681","",[6,9]],["WS","685","",[5,6,7,10]],["XK","383","0",[8,9,10,11,12]],["YE","967","0",[7,8,9]],["YT","262","0",[9]],["ZA","27","0",[5,6,7,8,9,10]],["ZM","260","0",[9]],["ZW","263","0",[5,6,7,8,9,10]]],Ke=new Map(Ge.map(e=>[e[0],e])),Oe=new Set(Ge.map(e=>e[1])),We=Ge.map(e=>e[0]);function Ve(e){if(a.isE164(e))for(let s=1;s<=3;s++){const t=e.slice(1,1+s);if(Oe.has(t))return t}}const ze=/^\+?[\d\s().\-/]+$/,He=/[\u00AD\u200B-\u200F\u202A-\u202E\u2060\u2066-\u2069\uFEFF]/g,qe=/[\u0660-\u0669\u06F0-\u06F9\u0966-\u096F\uFF10-\uFF19]/g,$e=[1632,1776,2406,65296];function Ze(e,s){const t="string"==typeof e?function(e){return e.replace(He,"").replace(/\uFF0B/g,"+").replace(qe,e=>{const s=e.charCodeAt(0),t=$e.find(e=>s>=e&&s<=e+9)??s;return String(s-t)})}(e).trim():"";if(!t||t.length>32||!ze.test(t))return null;const a=t.replace(/\D/g,"");if(!a)return null;if(t.startsWith("+"))return Ye(`+${a}`);if(a.startsWith("00"))return Ye(`+${a.slice(2)}`);const n=Ke.get(s?.toUpperCase?.()??"");if(!n)return null;const[,i,r,o]=n;let c=a;if(!o.includes(c.length)&&c.startsWith(i)&&o.includes(c.length-i.length))c=c.slice(i.length);else if(r&&c.startsWith(r)){const e=c.slice(r.length);o.includes(c.length)&&!o.includes(e.length)||(c=e)}return c?Ye(`+${i}${c}`):null}function Ye(e){return a.isE164(e)?e:null}function Je(e){const s=Ve(e);if(!s)return e;const t=e.slice(1+s.length);return"1"===s&&/^\d{10}$/.test(t)?`+1 ${t.slice(0,3)} ${t.slice(3,6)} ${t.slice(6)}`:`+${s} ${t}`}function Xe(e){const s=String(e).replace(/\D/g,"").slice(-4),t=Ve(e);return t?`+${t} ••• ••• ${s}`:`••• ${s}`}function Qe(e){return`${e}`}function es(e){const s=/^[a-z]{2,3}(?:-[a-z]{4})?-([a-z]{2})(?:-|$)/i.exec(e??"");return s?s[1].toUpperCase():void 0}function ss(e,s){switch(e){case"last_sign_in_method":return"security.phoneLastWay";case"mfa_sms_enrolled":return"security.phoneUsedForTwoStep";case"sms_unavailable":return"check"===s?"security.phoneCheckUnavailable":"security.phoneSmsUnavailable";case"method_unavailable":return"send"===s?"security.phoneTextUnavailable":void 0;default:return}}function ts(e){const{code:s,retryAfter:t}=e??{};return"cooldown"===s&&"number"==typeof t&&t>0?t:0}const as={link_conflict:"security.connectedAccountsLinkConflict",provider_error:"security.connectedAccountsProviderError",provider_failed:"security.connectedAccountsProviderFailed",session_ended:"security.connectedAccountsSessionEnded",no_verified_email:"security.connectedAccountsNoVerifiedEmail",email_unverified:"security.connectedAccountsEmailUnverified",email_unavailable:"security.connectedAccountsEmailUnavailable",disposable_email:"security.connectedAccountsDisposableEmail",signup_closed:"security.connectedAccountsSignupClosed",signup_restricted:"security.connectedAccountsSignupRestricted",waitlist_required:"security.connectedAccountsWaitlistRequired",not_a_guest:"security.connectedAccountsNotAGuest"},ns=Object.keys(as);function is(e){const s=e.searchParams,t=s.get("linked");if(null!==t)return s.delete("linked"),t?{kind:"linked",provider:t}:null;const a=s.get("reason");return s.has("error")&&(n=a,ns.includes(n??""))?(s.delete("error"),s.delete("reason"),{kind:"error",reason:a}):null;var n}function rs(e){const s=new URL(e);return is(s),s.searchParams.set(a.BB_PARAM,`screen:${a.BBScreen.Security}`),s.toString()}const os=new Set(["reverify_unavailable","invalid_return_url"]),cs=({factors:s,disabled:n=!1})=>{const{t:i}=a.useTranslation(),{user:r,session:o,requireReverification:c,signIn:l,signOut:d}=a.useSaaSAuth(),[u,m]=t.useState(!1),[p,x]=t.useState(null);return e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx(a.Button,{size:"sm",progress:u,disabled:n||u,onClick:async function(){m(!0),x(null);const e=rs(window.location.href);try{await c({returnUrl:e,factors:s})}catch(s){const t=s?.code,n="string"==typeof t&&os.has(t);if(n&&o?.impersonation)x(i("security.reauthImpersonating"));else if(n&&!r?.isAnonymous)try{return await d(),void await l(e)}catch{}else x(a.errorMessageFor(s,i));m(!1)}},children:i("security.reauthConfirm")}),p&&e.jsx("p",{role:"alert",className:"text-end text-xs text-destructive",children:p})]})};function ls(e){const s=e?.factors;return Array.isArray(s)&&s.length>0?s:void 0}const ds=/^\d{4,10}$/,us=({sentTo:s,submitLabel:t,confirming:n,resending:c,waitSeconds:l,onSubmit:d,onResend:u,onCancel:m})=>{const{t:p}=a.useTranslation(),x=n||c,g=o.z.object({code:o.z.string().refine(e=>ds.test((e=>e.replace(/\s+/g,""))(e)),{message:p("security.phoneCodeInvalid")})}),h=r.useForm({resolver:i.zodResolver(g),defaultValues:{code:""}});return e.jsx(a.Form,{...h,children:e.jsxs("form",{onSubmit:h.handleSubmit(e=>d(e.code)),className:"space-y-3 rounded-md border p-4",children:[e.jsx("p",{className:"text-sm break-words",children:s}),e.jsx(a.FormField,{disabled:x,control:h.control,name:"code",render:({field:s})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:p("security.phoneCodeLabel")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{dir:"ltr",autoFocus:!0,autoComplete:"one-time-code",autoCapitalize:"off",autoCorrect:"off",spellCheck:!1,inputMode:"numeric",maxLength:12,className:"font-mono sm:max-w-xs",...s})}),e.jsx(a.FormMessage,{})]})}),e.jsxs("div",{className:"flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between",children:[e.jsx(a.Button,{type:"button",variant:"outline",progress:c,disabled:x||l>0,onClick:u,children:l>0?p("security.phoneResendIn",{seconds:l}):p("security.phoneResend")}),e.jsxs("div",{className:"flex flex-wrap justify-end gap-2",children:[e.jsx(a.Button,{type:"button",variant:"ghost",disabled:x,onClick:m,children:p("settings.common.cancel")}),e.jsx(a.Button,{type:"submit",progress:n,disabled:x,children:t})]})]})]})})},ms=({outcome:s,disabled:t=!1,waitSeconds:n=0})=>{const{t:i}=a.useTranslation();return"wait"===s.variant?n<=0?null:e.jsx(a.StatusBanner,{variant:"info",message:e.jsx("span",{role:"timer",children:i("security.phoneWait",{seconds:n})})}):e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.StatusBanner,{variant:s.variant,title:"success"===s.variant?i("settings.common.success"):"error"===s.variant?i("settings.common.error"):void 0,message:s.message}),(s.reauth||s.action)&&e.jsxs("div",{className:"flex flex-wrap items-start justify-end gap-2",children:[s.action&&e.jsx(a.Button,{size:"sm",variant:"outline",disabled:t,onClick:s.action.onClick,children:s.action.label}),s.reauth&&e.jsxs("div",{className:"flex items-start gap-1",children:[e.jsx(cs,{factors:s.factors,disabled:t}),e.jsx(X,{className:"mt-1.5 sm:mt-1"})]})]})]})},ps=new Set(["last_sign_in_method","already_linked","method_unavailable"]),xs={rejected:"security.walletRejected",wallet_busy:"security.walletBusy",wrong_network:"security.walletWrongNetwork",no_account:"security.walletNoAccount",wallet_failed:"security.walletFailed"},gs={ethereum:"Ethereum",solana:"Solana"},hs=({src:a,wallet:n=!1})=>{const[i,r]=t.useState(!1);if(!function(e){if("string"!=typeof e||!e)return!1;try{const{protocol:s}=new URL(e);return"https:"===s||"http:"===s}catch{return!1}}(a)||i){const t=n?s.Wallet:s.Link2;return e.jsx(t,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":"true"})}return e.jsx("img",{src:a,alt:"","aria-hidden":"true",width:16,height:16,className:"h-4 w-4 shrink-0 object-contain",onError:()=>r(!0)})},fs=({data:s,onChange:n,walletsAllowed:i=!0})=>{const{t:r,formattingLocale:o}=a.useTranslation(),{ui:c}=a.useUIVisibility(),l=c.formats?.date??{dateStyle:"medium"},{api:d}=a.useWorkspaceApiWithOs(),[u,m]=t.useState(null),[p,x]=t.useState(null),g=t.useRef(s.accounts);t.useEffect(()=>{if("undefined"==typeof window)return;const e=function(e){let s;try{s=new URL(e)}catch{return null}const t=is(s);return t?{result:t,cleanUrl:s.toString()}:null}(window.location.href);if(!e)return;window.history.replaceState(window.history.state,"",e.cleanUrl);const{result:s}=e;if("linked"===s.kind){const e=(t=g.current,a=s.provider,t.find(e=>e.provider===a)?.label||void 0);x({variant:"success",message:e?r("security.connectedAccountsLinked",{provider:e}):r("security.connectedAccountsLinkedGeneric")})}else x({variant:"error",message:r(as[s.reason])});var t,a},[r]);const h=t.useCallback(async()=>{try{n(await d.getConnectedAccounts())}catch(e){a.handleError(e,{component:"WorkspaceSettingsSecurity",action:"getConnectedAccounts"})}},[d,n]);function f(e,s){const t=e?.code;"reauth_required"!==t?(a.handleError(e,{component:"WorkspaceSettingsSecurity",action:s}),x({variant:"error",message:a.errorMessageFor(e,r)}),"string"==typeof t&&ps.has(t)&&h()):x({variant:"warning",message:r("security.connectedAccountsReauth"),reauth:!0,factors:ls(e)})}const b=i&&s.wallet?[...s.wallet.ethereumChainIds.length>0?["ethereum"]:[],...s.wallet.solana?["solana"]:[]]:[];if(0===s.accounts.length&&0===s.available.length&&0===b.length&&!p)return null;const S=(e,s)=>null!==u&&u.kind===e&&u.id===s;return e.jsxs("div",{className:"space-y-4 border-b pb-6",children:[e.jsx(a.SectionHeader,{title:r("security.connectedAccountsTitle"),description:r("security.connectedAccountsDescription"),help:e.jsx($,{})}),p&&e.jsx(ms,{outcome:p,disabled:null!==u}),0===s.accounts.length?(s.available.length>0||b.length>0)&&e.jsx("p",{className:"text-sm text-muted-foreground",children:r("security.connectedAccountsEmpty")}):e.jsx("div",{className:"space-y-2",children:s.accounts.map(t=>{const i=`bb-connected-account-${t._id}-reason`;return e.jsxs("div",{className:"flex flex-col gap-3 rounded-md border p-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx(hs,{src:t.icon,wallet:a.isWalletProvider(t.provider)}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:t.label}),t.detail&&e.jsx("p",{dir:"ltr",className:"truncate font-mono text-xs text-muted-foreground",children:t.detail}),t.createdAt&&e.jsx("p",{className:"text-xs text-muted-foreground",children:`${r("security.added")}: ${a.formatDate(t.createdAt,o,l)}`}),!t.canUnlink&&e.jsx("p",{id:i,className:"text-xs text-muted-foreground",children:r("security.connectedAccountsLastWay")})]})]}),e.jsx("div",{className:"flex shrink-0",children:e.jsxs(a.AlertDialog,{children:[e.jsx(a.AlertDialogTrigger,{asChild:!0,children:e.jsx(a.Button,{size:"sm",variant:"outline",className:"text-destructive",progress:S("unlink",t._id),disabled:!t.canUnlink||null!==u,"aria-describedby":t.canUnlink?void 0:i,children:r("security.remove")})}),e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:r("security.connectedAccountsRemoveTitle",{provider:t.label})}),e.jsx(a.AlertDialogDescription,{children:r("security.connectedAccountsRemoveDescription",{provider:t.label})})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{children:r("settings.common.cancel")}),e.jsx(a.AlertDialogAction,{onClick:()=>async function(e){m({kind:"unlink",id:e._id}),x(null);try{await d.unlinkAccount(e._id);try{n(await d.getConnectedAccounts())}catch{n({...s,accounts:s.accounts.filter(s=>s._id!==e._id)})}x({variant:"success",message:r("security.connectedAccountsRemoved",{provider:e.label})})}catch(e){f(e,"unlinkAccount")}finally{m(null)}}(t),children:r("security.remove")})]})]})]})})]},t._id)})}),(s.available.length>0||b.length>0)&&e.jsxs("div",{className:"space-y-2",children:[s.accounts.length>0&&e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:r("security.connectedAccountsAvailable")}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[b.map(t=>e.jsxs(a.Button,{size:"sm",variant:"outline",className:"gap-2",progress:S("wallet",t),disabled:null!==u,onClick:()=>async function(e){m({kind:"wallet",id:e}),x(null);try{const t=await a.connectWallet(e,{api:d,ethereumChainIds:s.wallet?.ethereumChainIds});try{n(await d.getConnectedAccounts())}catch{n({...s,accounts:[...s.accounts,t]})}x({variant:"success",message:r("security.connectedAccountsLinked",{provider:t.label})})}catch(s){s instanceof a.WalletFlowError?x({variant:"rejected"===s.code?"info":"error",message:"no_wallet"===s.code?r("security.walletNotFound",{chain:gs[e]}):r(xs[s.code])}):f(s,"linkWallet")}finally{m(null)}}(t),children:[!S("wallet",t)&&e.jsx(hs,{wallet:!0}),r("ethereum"===t?"security.walletConnectEthereum":"security.walletConnectSolana")]},`wallet-${t}`)),s.available.map(s=>e.jsxs(a.Button,{size:"sm",variant:"outline",className:"gap-2",progress:S("link",s.methodId),disabled:null!==u,onClick:()=>async function(e){m({kind:"link",id:e.methodId}),x(null);try{const{url:s}=await d.linkAccount(e.methodId,rs(window.location.href));if(!a.validateRedirectUrl(s))throw new Error(r("security.connectedAccountsProviderFailed"));a.safeRedirect(s)}catch(e){f(e,"linkAccount"),m(null)}}(s),children:[!S("link",s.methodId)&&e.jsx(hs,{src:s.icon}),r("security.connectedAccountsConnect",{provider:s.label})]},s.methodId))]}),b.length>0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:r("security.walletHint")})]})]})};const bs=e=>e.normalize("NFC").trim().toLocaleUpperCase(),Ss=({deleteAfter:n,onChange:i})=>{const{t:r,formattingLocale:o}=a.useTranslation(),{ui:c}=a.useUIVisibility(),l=c.formats?.date??{dateStyle:"long"},{api:d}=a.useWorkspaceApiWithOs(),{signOut:u}=a.useSaaSAuth(),[m,p]=t.useState(!1),[x,h]=t.useState(""),[f,b]=t.useState(null),[S,v]=t.useState(null),[j,y]=t.useState([]),N=function(){const e=a.useSaaSOs(),[s,n]=t.useState(null);return t.useEffect(()=>{if(!e.serverUrl||!e.orgId)return;const s=new AbortController;return new a.AuthApi({serverUrl:e.serverUrl,version:e.version}).getAccountDeletionGraceDays(e.orgId,s.signal).then(n).catch(()=>n(null)),()=>s.abort()},[e.serverUrl,e.version,e.orgId]),s}(),A=r("security.deleteAccountWord"),C=[A,"DELETE"].some(e=>bs(x)===bs(e));function w(e,s){const t=e?.code;if("reauth_required"!==t){if("owns_workspaces"===t){const s=e.workspaces??[];return y(s),void v({variant:"error",message:s.length?r("security.deleteAccountOwnsWorkspaces",{count:s.length}):a.errorMessageFor(e,r)})}a.handleError(e,{component:"WorkspaceSettingsSecurity",action:s}),v({variant:"error",message:a.errorMessageFor(e,r)})}else v({variant:"warning",message:r("security.deleteAccountReauth"),reauth:!0,factors:ls(e)})}const T="bb-security-delete-account-confirm";return e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsx(a.SectionHeader,{title:r("security.deleteAccountTitle"),titleClassName:"text-destructive",description:r("security.deleteAccountDescription"),help:n?void 0:e.jsx(te,{graceDays:N})}),S&&e.jsx(ms,{outcome:S,disabled:null!==f}),j.length>0&&e.jsx("ul",{className:"list-disc space-y-1 ps-5 text-sm",children:j.map(s=>e.jsx("li",{className:"break-words",children:s.name},s.id))}),n?e.jsxs("div",{className:"flex flex-col gap-3 rounded-md border border-destructive/20 bg-destructive/10 p-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsx("p",{className:"text-sm text-destructive",children:r("security.deleteAccountScheduled",{date:a.formatDate(n,o,l)})}),e.jsx(a.Button,{size:"sm",variant:"outline",className:"shrink-0",progress:"cancel"===f,disabled:null!==f,onClick:async function(){b("cancel"),v(null);try{await g(d,()=>i(void 0)),v({variant:"success",message:r("security.deleteAccountCancelled")})}catch(e){w(e,"cancelAccountDeletion")}finally{b(null)}},children:r("security.deleteAccountCancel")})]}):m?e.jsxs("form",{noValidate:!0,className:"space-y-3 rounded-md border border-destructive/20 p-4",onSubmit:e=>{e.preventDefault(),C&&null===f&&async function(){b("delete"),v(null),y([]);try{const e=await d.requestAccountDeletion();if(e.deleted)return void await u();p(!1),h(""),i(e.deleteAfter??void 0)}catch(e){w(e,"requestAccountDeletion")}finally{b(null)}}()},children:[e.jsx("p",{className:"text-sm",children:null===N?r("security.deleteAccountWarning"):0===N?r("security.deleteAccountWarningNow"):r("security.deleteAccountWarningDays",{days:N})}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{htmlFor:T,className:"block text-sm font-medium",children:r("security.deleteAccountTypeLabel",{word:A})}),e.jsx(a.Input,{id:T,autoFocus:!0,autoComplete:"off",autoCapitalize:"characters",spellCheck:!1,className:"sm:max-w-xs",value:x,disabled:null!==f,onChange:e=>h(e.target.value)})]}),e.jsxs("div",{className:"flex flex-wrap justify-end gap-2",children:[e.jsx(a.Button,{type:"button",variant:"ghost",disabled:null!==f,onClick:()=>{p(!1),h("")},children:r("settings.common.cancel")}),e.jsx(a.Button,{type:"submit",variant:"destructive",progress:"delete"===f,disabled:!C||null!==f,children:r("security.deleteAccountConfirm")})]})]}):e.jsx("div",{className:"flex",children:e.jsxs(a.Button,{variant:"outline",className:"text-destructive",onClick:()=>{v(null),y([]),p(!0)},children:[e.jsx(s.Trash2,{className:"me-2 h-4 w-4","aria-hidden":"true"}),r("security.deleteAccountTitle")]})})]})},vs=new Map(A.map(e=>[e.value,e.text]));const js=({defaultCountry:s,busy:n,waitSeconds:c,onSubmit:l,onCancel:d})=>{const{t:u,locale:m}=a.useTranslation(),p=function(e){return t.useMemo(()=>{let s;try{s=new Intl.DisplayNames([e],{type:"region"})}catch{s=void 0}const t=e=>{try{const t=s?.of(e);if(t&&t!==e)return t}catch{}return vs.get(e)??e};return We.map(e=>{return{value:e,label:t(e),icon:`+${s=e,s?Ke.get(s.toUpperCase())?.[1]:void 0}`};var s}).sort((s,t)=>s.label.localeCompare(t.label,e))},[e])}(m),x=o.z.object({country:o.z.string(),number:o.z.string()}).refine(e=>null!==Ze(e.number,e.country),{message:u("security.phoneNumberInvalid"),path:["number"]}),g=r.useForm({resolver:i.zodResolver(x),defaultValues:{country:s,number:""}}),h="bb-security-phone-country-label";return e.jsx(a.Form,{...g,children:e.jsxs("form",{noValidate:!0,onSubmit:g.handleSubmit(e=>{const s=Ze(e.number,e.country);s&&l(s)}),className:"space-y-3 rounded-md border p-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start",children:[e.jsxs("div",{className:"flex flex-col gap-2 sm:w-56 sm:shrink-0",children:[e.jsx("div",{id:h,className:"text-sm font-medium",children:u("security.phoneCountryLabel")}),e.jsx(Ae,{"aria-labelledby":h,options:p,value:g.watch("country"),onChange:e=>g.setValue("country",e,{shouldValidate:!1}),placeholder:u("dropdowns.searchCountry"),emptyLabel:u("dropdowns.chooseCountry")})]}),e.jsx(a.FormField,{disabled:n,control:g.control,name:"number",render:({field:s})=>e.jsxs(a.FormItem,{className:"min-w-0 flex-1",children:[e.jsx(a.FormLabel,{children:u("security.phoneTitle")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{type:"tel",dir:"ltr",autoFocus:!0,autoComplete:"tel",inputMode:"tel",spellCheck:!1,maxLength:32,...s})}),e.jsx(a.FormMessage,{})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:u("security.phoneNumberHint")}),e.jsxs("div",{className:"flex flex-wrap justify-end gap-2",children:[e.jsx(a.Button,{type:"button",variant:"ghost",disabled:n,onClick:d,children:u("settings.common.cancel")}),e.jsx(a.Button,{type:"submit",progress:n,disabled:n||c>0,children:u("security.phoneSendCode")})]})]})})},ys=({data:n,onChange:i,onStale:r,usedForTwoStep:o,defaultCountry:c,sectionRef:l})=>{const{t:d}=a.useTranslation(),{api:u}=a.useWorkspaceApiWithOs(),m=a.useResendCooldown(),[p,x]=t.useState({kind:"idle"}),[g,h]=t.useState(null),[f,b]=t.useState(null),S=n.phone?Qe(Je(n.phone)):"";function v(e){b(null),m.clear(),x(e)}function j(e,s,t){const{code:n,retryAfter:i}=e??{};if("number"==typeof i&&m.wait(i),ts(e)>0)return void b({variant:"wait"});if("reauth_required"===n)return void b({variant:"warning",message:d("security.phoneReauth"),reauth:!0,factors:ls(e)});a.handleError(e,{component:"WorkspaceSettingsSecurity",action:t});const o=ss(n,s);b({variant:"error",message:o?d(o):a.errorMessageFor(e,d)}),function(e){return"last_sign_in_method"===e||"mfa_sms_enrolled"===e}(n)&&r()}async function y(e,s){h(s?"resend":"send"),b(null);try{const{retryAfter:t}=await u.addPhone(e);m.wait(t),x({kind:"verify",phone:e}),s&&b({variant:"success",message:d("security.phoneResent",{phone:Qe(Je(e))})})}catch(e){j(e,"send","addPhone")}finally{h(null)}}const N="bb-security-phone-reason",A=!0===n.phoneVerified;return e.jsxs("div",{ref:l,tabIndex:-1,className:"space-y-4 border-b pb-6 outline-none",children:[e.jsx(a.SectionHeader,{title:d("security.phoneTitle"),description:d("security.phoneDescription"),help:e.jsx(Y,{})}),f&&e.jsx(ms,{outcome:f,disabled:null!==g,waitSeconds:m.waitSeconds}),"idle"===p.kind&&(n.phone?e.jsxs("div",{className:"flex flex-col gap-3 rounded-md border p-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx(s.Phone,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":"true"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:S}),e.jsx("p",{className:"text-xs "+(A?"text-success":"text-warning"),children:d(A?"security.phoneVerified":"security.phoneNotVerified")}),o&&e.jsx("p",{id:N,className:"text-xs text-muted-foreground",children:d("security.phoneUsedForTwoStep")})]})]}),e.jsxs("div",{className:"flex shrink-0 flex-wrap gap-2",children:[!A&&e.jsx(a.Button,{size:"sm",progress:"send"===g,disabled:null!==g||m.waitSeconds>0,onClick:()=>y(n.phone,!1),children:d("security.phoneVerify")}),e.jsx(a.Button,{size:"sm",variant:"outline",disabled:null!==g,onClick:()=>v({kind:"enter"}),children:d("security.phoneChange")}),e.jsxs(a.AlertDialog,{children:[e.jsx(a.AlertDialogTrigger,{asChild:!0,children:e.jsx(a.Button,{size:"sm",variant:"outline",className:"text-destructive",progress:"remove"===g,disabled:o||null!==g,"aria-describedby":o?N:void 0,children:d("security.remove")})}),e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:d("security.phoneRemoveTitle")}),e.jsx(a.AlertDialogDescription,{children:d("security.phoneRemoveDescription",{phone:S})})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{children:d("settings.common.cancel")}),e.jsx(a.AlertDialogAction,{onClick:async function(){h("remove"),b(null);try{await u.removePhone(),i({}),b({variant:"success",message:d("security.phoneRemoved")})}catch(e){j(e,"remove","removePhone")}finally{h(null)}},children:d("security.remove")})]})]})]})]})]}):e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:d("security.phoneEmpty")}),e.jsx(a.Button,{size:"sm",variant:"outline",className:"shrink-0",onClick:()=>v({kind:"enter"}),children:d("security.phoneAdd")})]})),"enter"===p.kind&&e.jsx(js,{defaultCountry:c,busy:"send"===g,waitSeconds:m.waitSeconds,onSubmit:e=>y(e,!1),onCancel:()=>v({kind:"idle"})}),"verify"===p.kind&&e.jsx(us,{sentTo:d("security.phoneSentTo",{phone:Qe(Je(p.phone))}),submitLabel:d("security.phoneVerify"),confirming:"confirm"===g,resending:"resend"===g,waitSeconds:m.waitSeconds,onSubmit:async function(e){if("verify"===p.kind){h("confirm"),b(null);try{const s=(await u.confirmPhone(e)).phone||p.phone;i({phone:s,phoneVerified:!0}),m.clear(),x({kind:"idle"}),b({variant:"success",message:d("security.phoneSaved",{phone:Qe(Je(s))})})}catch(e){j(e,"check","confirmPhone")}finally{h(null)}}},onResend:()=>y(p.phone,!0),onCancel:()=>v({kind:"idle"})})]})},Ns=({view:s="change-with-hint"})=>{const{t:n}=a.useTranslation(),{api:c}=a.useWorkspaceApiWithOs(),[l,d]=t.useState(!1),[u,m]=t.useState(null),[p,x]=t.useState(!1),g=o.z.object({currentPassword:o.z.string().min(1,{message:n("security.passwordRequired")}),newPassword:o.z.string().min(8,{message:n("security.passwordMinLength")})}),h=r.useForm({resolver:i.zodResolver(g),defaultValues:{currentPassword:"",newPassword:""}}),f=()=>m(e=>function(e){return e&&!e.ok?null:e}(e));return"set-on-sign-in"===s?e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.SectionHeader,{title:n("security.passwordTitle"),description:n("security.passwordNone")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n("security.passwordNoneHint")})]}):p?e.jsxs("div",{className:"space-y-4",children:[e.jsx(a.SectionHeader,{title:n("security.passwordTitle")}),u&&e.jsx(a.StatusBanner,{variant:"info",message:u.message})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsx(a.SectionHeader,{title:n("security.passwordTitle"),description:n("security.passwordDescription"),help:e.jsx(_,{})}),u&&e.jsx(a.StatusBanner,{variant:u.ok?"success":"error",title:u.ok?n("settings.common.success"):n("settings.common.error"),message:u.message}),e.jsx(a.Form,{...h,children:e.jsxs("form",{onSubmit:h.handleSubmit(async function(e){d(!0),m(null);try{await c.changePassword(e.currentPassword,e.newPassword),h.reset(),m({ok:!0,message:n("security.passwordChanged")})}catch(e){if("password_not_set"===e?.code)return h.reset(),x(!0),void m({ok:!1,message:e instanceof Error?e.message:n("security.passwordNone")});a.handleError(e,{component:"WorkspaceSettingsSecurity",action:"changePassword"}),m({ok:!1,message:a.errorMessageFor(e,n)})}finally{d(!1)}},f),className:"space-y-3",children:[e.jsx(a.FormField,{disabled:l,control:h.control,name:"currentPassword",render:({field:s})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:n("security.currentPassword")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{type:"password",autoComplete:"current-password",...s,onChange:e=>{s.onChange(e),f()}})}),e.jsx(a.FormMessage,{})]})}),e.jsx(a.FormField,{disabled:l,control:h.control,name:"newPassword",render:({field:s})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:n("security.newPassword")}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{type:"password",autoComplete:"new-password",...s,onChange:e=>{s.onChange(e),f()}})}),e.jsx(a.FormMessage,{})]})}),e.jsx("div",{className:"flex justify-end",children:e.jsx(a.Button,{type:"submit",progress:l,disabled:l,children:n("security.changePassword")})})]})}),"change-with-hint"===s&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n("security.passwordSocialHint")})]})},As=e=>e.replace(/\s+/g,""),Cs=new Set(["mfa-off","already-enrolled","not-enrolling","not-enrolled","required-by-org","factor_not_allowed"]);const ws=({totpOnly:s=!1,label:t,submitLabel:n,destructive:c=!1,busy:l,onSubmit:d,onCancel:u})=>{const{t:m}=a.useTranslation(),p=o.z.object({code:s?o.z.string().refine(e=>/^\d{6}$/.test(As(e)),{message:m("security.twoStepCodeInvalid")}):o.z.string().refine(e=>As(e).length>=6,{message:m("security.twoStepCurrentCodeRequired")})}),x=r.useForm({resolver:i.zodResolver(p),defaultValues:{code:""}});return e.jsx(a.Form,{...x,children:e.jsxs("form",{onSubmit:x.handleSubmit(e=>d(e.code)),className:"space-y-3",children:[e.jsx(a.FormField,{disabled:l,control:x.control,name:"code",render:({field:n})=>e.jsxs(a.FormItem,{children:[e.jsx(a.FormLabel,{children:t}),e.jsx(a.FormControl,{children:e.jsx(a.Input,{dir:"ltr",autoFocus:!0,autoComplete:"one-time-code",autoCapitalize:"off",autoCorrect:"off",spellCheck:!1,inputMode:s?"numeric":"text",maxLength:s?7:24,className:"font-mono sm:max-w-xs",...n})}),e.jsx(a.FormMessage,{})]})}),e.jsxs("div",{className:"flex flex-wrap justify-end gap-2",children:[e.jsx(a.Button,{type:"button",variant:"ghost",disabled:l,onClick:u,children:m("settings.common.cancel")}),e.jsx(a.Button,{type:"submit",variant:c?"destructive":"default",progress:l,disabled:l,children:n})]})]})})},Ts=({status:n,onStatusChange:i,phone:r,onGoToPhone:o})=>{const{t:c,formattingLocale:l}=a.useTranslation(),{ui:d}=a.useUIVisibility(),u=d.formats?.date??{dateStyle:"medium"},{api:m}=a.useWorkspaceApiWithOs(),p=a.useResendCooldown(),[x,g]=t.useState({kind:"idle"}),[h,f]=t.useState(!1),[b,S]=t.useState(null),[v,j]=t.useState(null),y="required"===n.enforcement,N=h||null!==b,A=!0===n.sms?.enrolled,C=r?.phoneVerified?r.phone:void 0,w="wait"===v?.variant&&p.waitSeconds>0,T=r?.phone,k=!0===r?.phoneVerified;t.useEffect(()=>{j(e=>function(e){return e?.needsPhone?null:e}(e))},[T,k]);const E=t.useCallback(async()=>{try{i(await m.getMfaStatus())}catch(e){a.handleError(e,{component:"WorkspaceSettingsSecurity",action:"getMfaStatus"})}},[m,i]);function P(){g({kind:"idle"}),j({variant:"warning",message:c("security.twoStepSmsNeedsPhone"),needsPhone:!0,...o?{action:{label:c("security.twoStepSmsGoToPhone"),onClick:o}}:{}})}function D(e,s){const{code:t,retryAfter:n}=e??{};if("number"==typeof n&&p.wait(n),ts(e)>0)return void j({variant:"wait"});if("reauth_required"===t)return void j({variant:"warning",message:c("security.twoStepSmsReauth"),reauth:!0,factors:ls(e)});if("phone_required"===t)return void P();a.handleError(e,{component:"WorkspaceSettingsSecurity",action:s});const i=function(e){return"guest_account"===e?"security.twoStepGuest":void 0}(t)??("startSmsEnrollment"===s?ss(t,"send"):"confirmSmsEnrollment"===s?ss(t,"check"):void 0);j({variant:"error",message:i?c(i):a.errorMessageFor(e,c)}),"string"==typeof t&&Cs.has(t)&&(g({kind:"idle"}),E())}function M(e){j(null),g(e)}async function I(e){S(e?"resend":"start"),j(null);try{const s=await m.startSmsEnrollment();p.wait(s.retryAfter);const t=s.phone||n.sms?.phone||(C?Xe(C):"");g({kind:"smsCode",sentTo:t?c("security.phoneSentTo",{phone:Qe(t)}):c("security.twoStepSmsSentGeneric")}),e&&j({variant:"success",message:t?c("security.phoneResent",{phone:Qe(t)}):c("security.twoStepSmsSentGeneric")})}catch(e){D(e,"startSmsEnrollment")}finally{S(null)}}const U="off"!==n.enforcement,R=function(e){return"off"===e.enforcement?e.enabled?"remove-only":"hidden":e.enabled?"manage":!1!==e.allowedFactors?.includes("totp")?"set-up":"hidden"}(n),B="remove-only"===R,F=U&&!0===n.sms?.allowed,L=F||A;if("hidden"===R&&!L&&!v)return null;const _=!y||n.enabled,G=n.backupCodesRemaining,K=function(e){const s=e.confirmedAt?Date.parse(e.confirmedAt):NaN,t=e.lastUsedAt?Date.parse(e.lastUsedAt):NaN;return!e.lastUsedAt||Number.isNaN(t)||t-s<6e4?e.confirmedAt?{kind:"added",at:e.confirmedAt}:e.lastUsedAt?{kind:"last-used",at:e.lastUsedAt}:null:{kind:"last-used",at:e.lastUsedAt}}(n),W=K?`${c("last-used"===K.kind?"security.lastUsed":"security.added")}: ${a.formatDate(K.at,l,u)}`:null;return e.jsxs("div",{className:"space-y-4 border-b pb-6",children:[e.jsx(a.SectionHeader,{title:c("security.twoStepTitle"),description:c(U?"security.twoStepDescription":"security.twoStepOffDescription"),help:e.jsx(O,{app:"hidden"!==R,sms:L})}),v&&e.jsx(ms,{outcome:v,disabled:N,waitSeconds:p.waitSeconds}),y&&("set-up"===R||F)&&!n.enabled&&!A&&e.jsx(a.StatusBanner,{variant:"warning",message:c("security.twoStepRequiredSetup")}),"hidden"===R?null:n.enabled?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-3 rounded-md border p-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx(s.Smartphone,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":"true"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:c("security.twoStepAppName")}),"number"==typeof G&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("p",{className:"text-xs "+(0===G?"text-warning":"text-muted-foreground"),children:c("security.twoStepBackupLeft",{count:G})}),e.jsx(V,{})]}),W&&e.jsx("p",{className:"text-xs text-muted-foreground",children:W})]})]}),"idle"===x.kind&&e.jsxs("div",{className:"flex shrink-0 flex-wrap gap-2",children:[!B&&e.jsx(a.Button,{size:"sm",variant:"outline",disabled:N,onClick:()=>M({kind:"verify",action:"regenerate"}),children:c("security.twoStepNewCodes")}),!y&&e.jsx(a.Button,{size:"sm",variant:"outline",className:"text-destructive",disabled:N,onClick:()=>M({kind:"verify",action:"disable"}),children:c(B?"security.remove":"security.twoStepTurnOff")})]})]}),y&&e.jsx("p",{className:"text-xs text-muted-foreground",children:c("security.twoStepRequiredNote")}),"verify"===x.kind&&e.jsxs("div",{className:"space-y-3 rounded-md border p-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"regenerate"===x.action?c("security.twoStepNewCodesHint"):c(B?"security.twoStepRemoveHint":"security.twoStepTurnOffHint")}),e.jsx(ws,{label:c("security.twoStepCurrentCodeLabel"),submitLabel:"regenerate"===x.action?c("security.twoStepNewCodes"):c(B?"security.remove":"security.twoStepTurnOff"),destructive:"disable"===x.action,busy:h,onSubmit:e=>async function(e,s){f(!0),j(null);try{if("disable"===e)await m.disableTotp(s),i({enabled:!1,enforcement:n.enforcement,allowedFactors:n.allowedFactors,...n.sms?{sms:n.sms}:{}}),g({kind:"idle"}),j({variant:"success",message:"off"===n.enforcement||A?c("security.twoStepRemoved"):c("security.twoStepDisabled")});else{const{backupCodes:e}=await m.regenerateBackupCodes(s);i({...n,backupCodesRemaining:e.length}),g({kind:"codes",codes:e}),j({variant:"success",message:c("security.twoStepCodesRegenerated")})}}catch(s){D(s,"disable"===e?"disableTotp":"regenerateBackupCodes")}finally{f(!1)}}(x.action,e),onCancel:()=>M({kind:"idle"})},x.action)]})]}):"enrolling"===x.kind?e.jsxs("div",{className:"space-y-4 rounded-md border p-4",children:[e.jsx("p",{className:"text-sm",children:c("security.twoStepScan")}),e.jsx("img",{src:`data:image/svg+xml;utf8,${encodeURIComponent(x.enrollment.qrSvg)}`,alt:c("security.twoStepQrAlt"),width:176,height:176,className:"h-44 w-44 rounded-md border"}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:c("security.twoStepManualKey")}),e.jsx(a.CopyField,{variant:"code",value:x.enrollment.secret,displayValue:(H=x.enrollment.secret,H.match(/.{1,4}/g)?.join(" ")??H),copyLabel:c("security.twoStepCopy"),copiedLabel:c("security.twoStepCopied")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:c("help.twoStepKeyPrivate")})]}),e.jsx(ws,{totpOnly:!0,label:c("security.twoStepCodeLabel"),submitLabel:c("security.twoStepTurnOn"),busy:h,onSubmit:async function(e){f(!0),j(null);try{const{backupCodes:s}=await m.confirmTotpEnrollment(e),{lastUsedAt:t,...a}=n;i({...a,enabled:!0,confirmedAt:(new Date).toISOString(),backupCodesRemaining:s.length}),g({kind:"codes",codes:s}),j({variant:"success",message:c("security.twoStepEnabled")})}catch(e){D(e,"confirmTotpEnrollment")}finally{f(!1)}},onCancel:()=>M({kind:"idle"})})]}):e.jsxs("div",{className:"flex flex-col gap-3 rounded-md border p-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx(s.Smartphone,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":"true"}),e.jsx("p",{className:"truncate text-sm font-medium",children:c("security.twoStepAppName")})]}),e.jsx("div",{className:"flex shrink-0",children:e.jsx(a.Button,{size:"sm",progress:h,disabled:N,onClick:async function(){f(!0),j(null);try{const e=await m.startTotpEnrollment();g({kind:"enrolling",enrollment:e})}catch(e){D(e,"startTotpEnrollment")}finally{f(!1)}},children:c("security.twoStepSetUp")})})]}),L&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-3 rounded-md border p-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx(s.MessageSquare,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":"true"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:c("security.twoStepSmsName")}),A&&n.sms?.phone&&e.jsx("p",{className:"text-xs text-muted-foreground",children:c("security.twoStepSmsTo",{phone:Qe(n.sms.phone)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:c("security.twoStepSmsWeaker")})]})]}),"smsCode"!==x.kind&&e.jsx("div",{className:"flex shrink-0 flex-wrap gap-2",children:A?_?e.jsxs(a.AlertDialog,{children:[e.jsx(a.AlertDialogTrigger,{asChild:!0,children:e.jsx(a.Button,{size:"sm",variant:"outline",className:"text-destructive",progress:"disable"===b,disabled:N,children:c("security.twoStepTurnOff")})}),e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:c("security.twoStepSmsTurnOffTitle")}),e.jsx(a.AlertDialogDescription,{children:c("security.twoStepSmsTurnOffDescription")})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{children:c("settings.common.cancel")}),e.jsx(a.AlertDialogAction,{onClick:async function(){S("disable"),j(null);try{await m.disableSms(),i({...n,sms:{allowed:n.sms?.allowed??!0,enrolled:!1}}),g({kind:"idle"}),j({variant:"success",message:c("security.twoStepSmsDisabled")})}catch(e){D(e,"disableSms")}finally{S(null)}},children:c("security.twoStepTurnOff")})]})]})]}):null:e.jsx(a.Button,{size:"sm",variant:"outline",progress:"start"===b,disabled:N||w,onClick:function(){!r||C?I(!1):P()},children:c("security.twoStepTurnOn")})})]}),A&&!_&&e.jsx("p",{className:"text-xs text-muted-foreground",children:c("security.twoStepRequiredNote")}),"smsCode"===x.kind&&e.jsx(us,{sentTo:x.sentTo,submitLabel:c("security.twoStepTurnOn"),confirming:"confirm"===b,resending:"resend"===b,waitSeconds:p.waitSeconds,onSubmit:async function(e){S("confirm"),j(null);try{const{backupCodes:s}=await m.confirmSmsEnrollment(e),t=n.sms?.phone??(C?Xe(C):void 0);i({...n,sms:{allowed:!0,...n.sms,enrolled:!0,...t?{phone:t}:{}}}),p.clear(),g(s?.length?{kind:"codes",codes:s}:{kind:"idle"}),j({variant:"success",message:c("security.twoStepSmsEnabled")}),E()}catch(e){D(e,"confirmSmsEnrollment")}finally{S(null)}},onResend:()=>I(!0),onCancel:()=>M({kind:"idle"})})]}),"codes"===x.kind&&e.jsxs("div",{className:"space-y-3 rounded-md border p-4",children:[e.jsx(a.SectionHeader,{title:c("security.twoStepBackupTitle"),description:c("security.twoStepBackupDescription"),help:e.jsx(V,{})}),e.jsx(a.CopyField,{variant:"code",value:x.codes.join("\n"),displayValue:(z=x.codes,z.reduce((e,s,t)=>(t%2==0?e.push(s):e[e.length-1]+=` ${s}`,e),[]).join("\n")),copyLabel:c("security.twoStepCopy"),copiedLabel:c("security.twoStepCopied")}),e.jsx("div",{className:"flex justify-end",children:e.jsx(a.Button,{onClick:()=>{j(null),g({kind:"idle"})},children:c("security.twoStepDone")})})]})]});var z,H},ks=()=>{const{t:n,formattingLocale:i}=a.useTranslation(),{visible:r,ui:o}=a.useUIVisibility(),c=o.formats?.date??{dateStyle:"medium"},l=r(e=>e.settings?.security?.passkeyRename),d=r(e=>e.settings?.security?.passkeyDelete),u=r(e=>e.settings?.security?.password),m=r(e=>e.settings?.security?.phone),p=r(e=>e.settings?.security?.twoStep),x=r(e=>e.settings?.security?.connectedAccounts),g=r(e=>e.settings?.security?.wallets),h=r(e=>e.settings?.security?.deleteAccount),{api:b}=a.useWorkspaceApiWithOs(),S=function(){const e=a.useAuthStore();return t.useCallback(s=>{const t=e.getState().session;t&&t.user.mfaEnabled!==s&&e.dispatch(a.authActions.setSession({...t,user:{...t.user,mfaEnabled:s}}))},[e])}(),v=function(){const e=a.useAuthStore();return t.useCallback(s=>{const t=e.getState().session;if(!t)return;const{phone:n,phoneVerified:i,...r}=t.user,o={...r,...a.readPhone(s)};e.dispatch(a.authActions.setSession({...t,user:o}))},[e])}(),[j,y]=t.useState(!0),[N,A]=t.useState(!1),[C,w]=f(),[T,k]=t.useState("change-with-hint"),[P,D]=t.useState(!1),[M,I]=t.useState(null),[U,R]=t.useState(null),[B,F]=t.useState([]),[L,_]=t.useState(null),[G,K]=t.useState(null),[O,W]=t.useState(null),[V,z]=t.useState("US"),q=t.useRef(null),[$,Z]=t.useState(null),[Y,J]=t.useState(null),[X,Q]=t.useState(""),ee=t.useCallback(e=>{_(e),S(e.enabled||!0===e.sms?.enrolled)},[S]),se=t.useCallback(async()=>{const[e,s,t,n]=await Promise.all([b.getPasskeys().catch(e=>(a.handleError(e,{component:"WorkspaceSettingsSecurity"}),null)),p||m?b.getMfaStatus().catch(e=>(404!==e?.status&&a.handleError(e,{component:"WorkspaceSettingsSecurity",action:"getMfaStatus"}),null)):null,x?b.getConnectedAccounts().catch(e=>(404!==e?.status&&a.handleError(e,{component:"WorkspaceSettingsSecurity",action:"getConnectedAccounts"}),null)):null,b.getProfile().catch(e=>(a.handleError(e,{component:"WorkspaceSettingsSecurity",action:"getProfile"}),null))]);e&&F(e),s&&ee(s),t&&K(t),k(function(e){return"boolean"!=typeof e?.passwordSet?"change-with-hint":e.passwordSet?"change":!1===e.passwordSignIn?"hidden":"set-on-sign-in"}(n)),n&&(A(a.isGuestProfile(n)),w(function(e){const s=e?.deleteAfter;return"string"==typeof s&&s&&Number.isFinite(Date.parse(s))?s:void 0}(n))),m&&n&&function(e,s){return null!==e&&("phone"in e||"phoneVerified"in e)||null!==s&&void 0!==s.sms}(n,s)&&(W(a.readPhone(n)),z(function(...e){for(const s of e){const e=s?.toUpperCase();if(e&&Ke.has(e))return e}return"US"}(n.country,..."undefined"==typeof navigator?[]:(navigator.languages?.length?navigator.languages:[navigator.language]).map(es)))),y(!1)},[b,p,m,x,ee,w]);t.useEffect(()=>{se()},[se]),t.useEffect(()=>{a.consumeReverified()&&D(!0)},[]);const te=t.useCallback(()=>{x&&b.getConnectedAccounts().then(K).catch(()=>{}),(p||m)&&b.getMfaStatus().then(ee).catch(()=>{})},[b,x,p,m,ee]),ae=t.useCallback(e=>{W(e),v(e),te()},[v,te]),ne=t.useCallback(()=>{const e=q.current;e&&(e.scrollIntoView?.({behavior:"smooth",block:"start"}),e.focus({preventScroll:!0}))},[]);return j?e.jsx(E,{}):e.jsxs("div",{className:"space-y-4",children:[P&&e.jsx(a.StatusBanner,{variant:"info",message:n("security.reauthConfirmed")}),null!==M&&e.jsx(a.StatusBanner,{variant:"success",title:n("settings.common.success"),message:n("guest.done",{email:M})}),N&&e.jsx("div",{className:"border-b pb-6",children:e.jsx(a.GuestUpgrade,{onUpgraded:({email:e})=>{I(e),A(!1),se()}})}),u&&!N&&"hidden"!==T&&e.jsx("div",{className:"border-b pb-6",children:e.jsx(Ns,{view:T})}),O&&!N&&e.jsx(ys,{data:O,onChange:ae,onStale:te,usedForTwoStep:!0===L?.sms?.enrolled,defaultCountry:V,sectionRef:q}),p&&L&&!N&&e.jsx(Ts,{status:L,onStatusChange:ee,phone:O??void 0,onGoToPhone:O?ne:void 0}),x&&G&&e.jsx(fs,{data:G,onChange:K,walletsAllowed:g&&!N}),!N&&e.jsxs(e.Fragment,{children:[e.jsx(a.SectionHeader,{title:n("security.passkeysTitle"),description:n("security.passkeysDescription"),help:e.jsx(H,{})}),U&&e.jsx(a.StatusBanner,{variant:"error",title:n("settings.common.error"),message:U}),0===B.length?e.jsx(a.EmptyState,{icon:e.jsx(s.KeyRound,{className:"h-5 w-5 text-muted-foreground"}),description:n("security.noPasskeys")}):e.jsx("div",{className:"space-y-2",children:B.map(t=>e.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-md border p-3 "+(!1===t.active?"opacity-70":""),children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx(s.KeyRound,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),e.jsx("div",{className:"min-w-0",children:Y===t.id?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Input,{value:X,onChange:e=>Q(e.target.value),placeholder:n("security.renamePlaceholder"),className:"h-8"}),e.jsx(a.Button,{size:"icon",variant:"ghost",className:"h-10 w-10 sm:h-8 sm:w-8 shrink-0",disabled:$===t.id,onClick:()=>async function(e){const s=X.trim();if(s){Z(e),R(null);try{await b.renamePasskey(e,s),F(t=>t.map(t=>t.id===e?{...t,name:s}:t)),J(null)}catch(e){a.handleError(e,{component:"WorkspaceSettingsSecurity"}),R(a.errorMessageFor(e,n))}finally{Z(null)}}}(t.id),children:e.jsx(s.Check,{className:"h-4 w-4"})}),e.jsx(a.Button,{size:"icon",variant:"ghost",className:"h-10 w-10 sm:h-8 sm:w-8 shrink-0",onClick:()=>J(null),children:e.jsx(s.X,{className:"h-4 w-4"})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:t.name}),!1===t.active&&e.jsx("span",{className:"shrink-0 rounded-full border border-warning/40 bg-warning/10 px-2 py-0.5 text-xs font-medium text-warning",title:n("security.inactiveHint"),children:n("security.inactive")})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:!1===t.active?n("security.inactiveHint"):t.lastUsedAt?`${n("security.lastUsed")}: ${a.formatDate(t.lastUsedAt,i,c)}`:t.createdAt?`${n("security.added")}: ${a.formatDate(t.createdAt,i,c)}`:null})]})})]}),Y!==t.id&&(l||d)&&e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[l&&e.jsx(a.Button,{size:"icon",variant:"ghost",className:"h-10 w-10 sm:h-8 sm:w-8","aria-label":n("security.rename"),onClick:()=>{J(t.id),Q(t.name)},children:e.jsx(s.Pencil,{className:"h-4 w-4"})}),d&&e.jsxs(a.AlertDialog,{children:[e.jsx(a.AlertDialogTrigger,{asChild:!0,children:e.jsx(a.Button,{size:"icon",variant:"ghost",className:"h-10 w-10 sm:h-8 sm:w-8 text-destructive","aria-label":n("security.remove"),disabled:$===t.id,children:e.jsx(s.Trash2,{className:"h-4 w-4"})})}),e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:n("security.removeTitle")}),e.jsx(a.AlertDialogDescription,{children:n("security.removeDescription")})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{children:n("settings.common.cancel")}),e.jsx(a.AlertDialogAction,{onClick:()=>async function(e){Z(e),R(null);try{await b.deletePasskey(e),F(s=>s.filter(s=>s.id!==e))}catch(e){a.handleError(e,{component:"WorkspaceSettingsSecurity"}),R(a.errorMessageFor(e,n))}finally{Z(null)}}(t.id),children:n("security.remove")})]})]})]})]})]},t.id))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n("security.addHint")})]}),h&&e.jsx(Ss,{deleteAfter:C,onChange:w})]})},Es=e=>{switch(e){case a.InvoiceStatuses.Paid:return"bg-success/15 text-success";case a.InvoiceStatuses.Open:return"bg-warning/15 text-warning";case a.InvoiceStatuses.Draft:return"bg-muted text-foreground";case a.InvoiceStatuses.Uncollectible:return"bg-destructive/15 text-destructive";case a.InvoiceStatuses.Void:default:return"bg-muted text-foreground"}},Ps=({workspaceId:t,hasActiveSubscription:n=!1,onViewPricingPlans:i,limit:r=20})=>{const{t:o,formattingLocale:c}=a.useTranslation(),{can:l}=a.usePermissions(),d=l(a.Permission.WORKSPACE_BILLING_VIEW),{invoices:u,loading:m,error:p,refetch:x}=a.useInvoices(t,r);if(!d)return e.jsx(k,{});const g=u.length>0;return e.jsxs("div",{className:"space-y-4",children:[e.jsx(a.SectionHeader,{title:o("invoices.title"),description:o("invoices.description"),actions:e.jsx(a.Button,{variant:"ghost",size:"sm",progress:m,onClick:x,disabled:m,children:o("settings.common.refreshAction",{loading:String(m)})})}),p&&e.jsx(a.StatusBanner,{variant:"error",title:o("invoices.errorLoading"),message:p,actionLabel:o("settings.common.retryAction",{loading:String(m)}),onAction:x,actionDisabled:m}),m&&!g?e.jsx("div",{className:"border rounded-lg p-6",children:e.jsx(E,{})}):g?e.jsx("div",{className:"space-y-2",children:u.map(t=>{const n=(e=>{switch(e.status){case a.InvoiceStatuses.Draft:case a.InvoiceStatuses.Open:return{textKey:"invoices.pay",color:"bg-info text-info-foreground hover:bg-info/90"};case a.InvoiceStatuses.Paid:return{textKey:"invoices.view",color:"bg-success text-success-foreground hover:bg-success/90"};case a.InvoiceStatuses.Uncollectible:case a.InvoiceStatuses.Void:return{textKey:"invoices.viewDetails",color:"bg-muted-foreground text-background hover:bg-muted-foreground/90"};default:return{textKey:"invoices.view",color:"bg-muted-foreground text-background hover:bg-muted-foreground/90"}}})(t);return e.jsxs("div",{className:"border rounded-md bg-background hover:shadow-sm transition-shadow p-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1.5",children:[e.jsx("span",{className:"text-sm font-medium text-foreground truncate min-w-0",children:t.description||t.number||t.id.slice(-8)}),e.jsx("span",{className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium shrink-0 ${Es(t.status)}`,children:o(`invoices.status.${t.status}`)})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-0.5 text-sm text-muted-foreground mb-2.5",children:[e.jsx("span",{className:"font-medium text-foreground",children:a.formatMinorAmountIntl(t.amount_due,t.currency,c)}),t.created&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-muted-foreground/50 hidden sm:inline",children:"·"}),e.jsx("span",{children:a.formatUnixDate(t.created,c)})]}),t.amount_paid>0&&t.amount_due>0&&e.jsx("span",{className:"text-xs text-muted-foreground",children:o("invoices.paidAmount",{amount:a.formatMinorAmountIntl(t.amount_paid,t.currency,c)})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(a.Button,{size:"sm",disabled:!t.hosted_invoice_url,onClick:()=>t.hosted_invoice_url&&window.open(t.hosted_invoice_url,"_blank","noopener,noreferrer"),className:n.color,children:[o(n.textKey),e.jsx(s.ExternalLink,{className:"h-3.5 w-3.5 ms-1.5"})]}),t.invoice_pdf&&e.jsxs(a.Button,{size:"sm",variant:"outline",onClick:()=>window.open(t.invoice_pdf,"_blank","noopener,noreferrer"),children:[e.jsx(s.Download,{className:"h-3.5 w-3.5 me-1.5"}),o("invoices.download")]})]})]},t.id)})}):e.jsx(a.EmptyState,{icon:e.jsx(s.FileText,{className:"h-5 w-5 text-muted-foreground"}),description:o(n?"invoices.noInvoicesWithSub":"invoices.noInvoices"),action:!n&&i?e.jsx(a.Button,{size:"sm",className:"mt-2",onClick:i,children:o("subscription.viewPricingPlans")}):void 0})]})},Ds=(e,s)=>s?a.formatDate(s,e,{month:"long",day:"numeric",year:"numeric"}):"",Ms=({planVersion:s,subscriptionCurrency:t,billingInterval:n,seatPricingConfig:i,memberCount:r,includedSeats:o,billableSeats:c,perSeatPrice:l,intervalLabel:d})=>{const{t:u,formattingLocale:m,fmtNum:p,fmtCents:x}=a.useTranslation(),g=((e,s,t=a.BillingIntervals.Monthly)=>{if(!e?.subscriptionItems)return{features:[],limits:[],quotas:[]};const n=[],i=[],r=[];return e.subscriptionItems.forEach(o=>{const c=o.slug;if(o.type===a.SubscriptionItemType.Feature){const s=e.features?.[c]??!1;n.push({item:o,enabled:s})}else if(o.type===a.SubscriptionItemType.Limit){const s=e.limits?.[c]??0;i.push({item:o,value:s})}else if(o.type===a.SubscriptionItemType.Quota){const n=s&&e.pricingVariants?.length?a.getQuotaDisplayWithVariant(e,s,c,t):a.getQuotaDisplayValue(e.quotas?.[c],t);null!=n&&r.push({item:o,value:n})}}),{features:n,limits:i,quotas:r}})(s,t,n??"monthly");return g.features.length>0||g.limits.length>0||g.quotas.length>0?e.jsx("div",{className:"px-4 py-4 sm:px-5 sm:py-5 border-t border-border/60",children:e.jsxs("div",{className:"space-y-5",children:[g.features.length>0&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2",children:u("subscription.items.features")}),e.jsx("ul",{className:"space-y-1.5",children:g.features.sort(e=>e.enabled?-1:1).map(({item:s,enabled:t})=>e.jsxs("li",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:"w-4 text-center shrink-0 "+(t?"text-success":"text-muted-foreground/50"),children:t?"✓":"✕"}),e.jsx("span",{className:t?"text-foreground":"text-muted-foreground/70",children:s.name})]},s._id))})]}),g.limits.length>0&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2",children:u("subscription.items.limits")}),e.jsx("ul",{className:"space-y-1.5",children:g.limits.map(({item:s,value:t})=>e.jsxs("li",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:s.name}),e.jsx("span",{className:"font-medium text-foreground",children:p(t)})]},s._id))})]}),g.quotas.length>0&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2",children:u("subscription.items.quotas")}),e.jsx("ul",{className:"space-y-1.5",children:g.quotas.map(({item:s,value:n})=>{const i=a.getQuotaDisplayParts(n,s.name.toLowerCase(),{currency:t,locale:m}),r=i?i.hasOverage?u("quota.includedWithOverage",{count:i.included,price:i.price,unit:i.unit}):u("quota.includedOnly",{count:i.included}):"—";return e.jsx("li",{className:"text-sm",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-0.5",children:[e.jsx("span",{className:"text-muted-foreground",children:s.name}),e.jsx("span",{className:"font-medium text-foreground text-xs sm:text-sm",children:r})]})},s._id)})})]}),i&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2",children:u("subscription.seats.title")}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-3 space-y-1.5",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:u("subscription.seats.members")}),e.jsx("span",{className:"font-semibold text-foreground",children:p(r)})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:u("subscription.seats.included")}),e.jsx("span",{className:"text-foreground",children:p(o)})]}),c>0&&e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:u("subscription.seats.billable")}),e.jsxs("span",{className:"font-medium text-warning",children:[p(c)," ",u("subscription.seats.extra")]})]}),null!=l&&l>0&&e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:u("subscription.seats.perExtraSeat")}),e.jsxs("span",{className:"text-foreground",children:[x(l,t),d]})]}),(i?.maxSeats??0)>0&&e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:u("subscription.seats.limit")}),e.jsx("span",{className:"text-foreground",children:p(i.maxSeats)})]})]})]}),s?.creditGrant?.enabled&&"object"==typeof s.creditGrant.creditPackage&&null!==s.creditGrant.creditPackage&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2",children:u("subscription.items.credits")}),e.jsxs("div",{className:"bg-info/10 rounded-lg p-3 space-y-1.5",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:s.creditGrant.renewOnPeriod?u("subscription.items.creditsPerMonth"):u("subscription.items.creditsOneTime")}),e.jsx("span",{className:"font-semibold text-info",children:p("object"==typeof s.creditGrant.creditPackage?s.creditGrant.creditPackage.creditAmount:0)})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:u("subscription.items.creditRenewal")}),e.jsx("span",{className:"font-medium text-foreground",children:s.creditGrant.renewOnPeriod?"reset"===s.creditGrant.mode?u("subscription.items.creditModeReset"):u("subscription.items.creditModeTopup"):u("subscription.items.creditModeLifetime")})]})]})]})]})}):null},Is=({resumeDialogOpen:t,setResumeDialogOpen:n,resumeLoading:i,handleResumeSubscription:r,subscription:o})=>{const{t:c,formattingLocale:l}=a.useTranslation();return e.jsx(a.AlertDialog,{open:t,onOpenChange:n,children:e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:c("subscription.resumeTitle")}),e.jsx(a.AlertDialogDescription,{asChild:!0,children:e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{children:c("subscription.resumeConfirm")}),e.jsxs("div",{className:"bg-warning/10 border border-warning/30 rounded-lg p-4 space-y-2 text-sm",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(s.AlertTriangle,{className:"h-4 w-4 text-warning mt-0.5 flex-shrink-0"}),e.jsxs("span",{children:[c("subscription.resumeChargeDate")," ",o?.subscription?.stripeCurrentPeriodEnd&&Ds(l,o.subscription.stripeCurrentPeriodEnd)?e.jsx("span",{className:"font-medium",children:Ds(l,o.subscription.stripeCurrentPeriodEnd)}):c("subscription.resumeChargeFallback")]})]}),e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-warning mt-0.5",children:"•"}),e.jsx("span",{children:c("subscription.resumeContinue")})]}),e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-info mt-0.5",children:"ℹ"}),e.jsx("span",{children:c("subscription.resumeCancelAnytime")})]})]})]})})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{disabled:i,children:c("subscription.resumeKeep")}),e.jsx(a.AlertDialogAction,{onClick:r,disabled:i,children:c(i?"subscription.resuming":"subscription.resumeButton")})]})]})})},Us=({cancelDialogOpen:s,setCancelDialogOpen:t,cancelLoading:n,handleCancelSubscription:i,subscription:r})=>{const{t:o,formattingLocale:c}=a.useTranslation(),l=r?.subscription?.subscriptionStatus===a.SubscriptionStatus.Trialing,d=l&&r?.subscription?.trialEnd||r?.subscription?.stripeCurrentPeriodEnd;return e.jsx(a.AlertDialog,{open:s,onOpenChange:t,children:e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:o(l?"subscription.cancelTrialTitle":"subscription.cancelTitle")}),e.jsx(a.AlertDialogDescription,{asChild:!0,children:e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{children:o(l?"subscription.cancelTrialConfirm":"subscription.cancelConfirm")}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2 text-sm",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-success mt-0.5",children:"✓"}),e.jsxs("span",{children:[o(l?"subscription.cancelTrialAccess":"subscription.retainAccess")," ",d&&Ds(c,d)?e.jsx("span",{className:"font-medium",children:Ds(c,d)}):o("subscription.retainAccessFallback")]})]}),e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-success mt-0.5",children:"✓"}),e.jsx("span",{children:o(l?"subscription.cancelTrialNoCharge":"subscription.cancelNotCharged")})]}),e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-info mt-0.5",children:"ℹ"}),e.jsx("span",{children:o(l?"subscription.cancelTrialResume":"subscription.cancelResumeAnytime")})]})]})]})})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{disabled:n,children:o(l?"subscription.cancelTrialKeep":"subscription.cancelKeep")}),e.jsx(a.AlertDialogAction,{onClick:i,disabled:n,className:"bg-destructive hover:bg-destructive/90 focus:ring-destructive",children:o(n?"subscription.canceling":l?"subscription.cancelTrialButton":"subscription.cancelButton")})]})]})})},Rs=({className:s,icon:t,titleClassName:n,title:i,descriptionClassName:r,description:o,children:c,kind:l})=>(a.useGateReport(!!l,l??"","subscription_notice_shown",{kind:l}),e.jsx("div",{className:s,children:e.jsxs("div",{className:"flex items-start gap-3",children:[t,e.jsxs("div",{children:[e.jsx("p",{className:n,children:i}),e.jsx("p",{className:r,children:o}),c]})]})})),Bs=({subscription:s})=>{const{t:t}=a.useTranslation();return e.jsxs("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium "+(s.subscriptionStatus===a.SubscriptionStatus.Active?s.cancelAtPeriodEnd?"bg-warning/15 text-warning":"bg-success/15 text-success":s.subscriptionStatus===a.SubscriptionStatus.Trialing?"bg-info/15 text-info":s.subscriptionStatus===a.SubscriptionStatus.Canceled?"bg-muted text-foreground":"bg-destructive/15 text-destructive"),children:[s.subscriptionStatus===a.SubscriptionStatus.Active&&(s.cancelAtPeriodEnd?t("subscription.status.canceling"):t("subscription.status.active")),s.subscriptionStatus===a.SubscriptionStatus.Trialing&&t("subscription.status.trial"),s.subscriptionStatus===a.SubscriptionStatus.Canceled&&t("subscription.status.canceled"),s.subscriptionStatus===a.SubscriptionStatus.PastDue&&t("subscription.status.pastDue")]})},Fs=({subscription:s,showChangePlan:t,setDialogOpen:n,onManagePayment:i,managePaymentLoading:r})=>{const{t:o}=a.useTranslation(),c=s.trialEnd||s.stripeCurrentPeriodEnd,l=c?new Date(c):null,d=l&&!isNaN(l.getTime())?l:null,u=d?Math.max(0,Math.ceil((d.getTime()-Date.now())/864e5)):null,m=null!==u&&u<=3;a.useGateReport(!0,"trial","subscription_notice_shown",{kind:m?"trial_ending":"trial",days_remaining:u??void 0});const p=m?"border-warning/30 text-warning hover:bg-warning/15":"border-info/30 text-info hover:bg-info/15";return e.jsxs("div",{className:"px-4 py-3 sm:px-5 text-sm flex flex-col sm:flex-row sm:items-center justify-between gap-2 "+(m?"bg-warning/10 text-warning border-b border-warning/30":"bg-info/10 text-info border-b border-info/20"),children:[e.jsxs("span",{children:[null!==u&&u<=0?o("subscription.trialEnded"):null!==u?o("subscription.trialEndsIn",{days:u}):o("subscription.onTrial")," ",o("subscription.trialKeepAccess")]}),(i||t)&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2 shrink-0",children:[i&&e.jsx(a.Button,{size:"sm",variant:m?"default":"outline",className:m?"":p,onClick:i,disabled:r,progress:r,children:o(r?"subscription.openingPortal":"subscription.managePayment")}),t&&e.jsx(a.Button,{size:"sm",variant:m&&!i?"default":"outline",className:m&&!i?"":p,onClick:()=>n(!0),children:o("subscription.changePlan")})]})]})},Ls=t.lazy(()=>Promise.resolve().then(function(){return require("./SubscriptionDialog-CGIvMKpT.cjs")}).then(e=>({default:e.default}))),_s=({workspace:n})=>{const i=n._id?.toString(),{t:r,formattingLocale:o,fmtCents:c}=a.useTranslation(),{api:l}=a.useWorkspaceApiWithOs(),{can:d}=a.usePermissions(),{visible:u,ui:m}=a.useUIVisibility(),p=m.behavior,x=u(e=>e.settings?.subscription?.changePlan),g=u(e=>e.settings?.subscription?.cancel),h=u(e=>e.settings?.subscription?.managePayment),f=u(e=>e.settings?.subscription?.invoicesTab),b=u(e=>e.settings?.subscription?.planDetails),S=d(a.Permission.WORKSPACE_BILLING_VIEW),v=d(a.Permission.WORKSPACE_BILLING_MANAGE),{subscription:j,loading:y,error:N,updateSubscription:A,refetch:C}=a.useSubscriptionManagement(i),{createCheckoutSession:w}=a.useCreateCheckoutSession(i),{cancelSubscription:T,loading:P}=a.useCancelSubscription(i),{resumeSubscription:D,loading:M}=a.useResumeSubscription(i),{openBillingPortal:I,loading:U}=a.useBillingPortal(i),{versions:R,loading:B,error:F,refetch:L}=a.usePlanGroupVersions(i),_=y||B,G=N||F,{currentVersion:K,latestVersion:O,isDeprecated:W,plansToShow:V}=t.useMemo(()=>{const e=R?.currentVersion,s=R?.availableVersions||[],t=null!=j?.subscription;let a=null;s.length>0?a=s.reduce((e,s)=>s.version>e.version?s:e):e&&(a=e);return{currentVersion:e,latestVersion:a,isDeprecated:!!(t&&a&&e)&&a.version>e.version&&t,plansToShow:a?.plans&&a.plans.length>0?a.plans:[]}},[R,j?.subscription]),[z,H]=t.useState(!1),[q,$]=t.useState(null),[Z,Y]=t.useState(null),[J,X]=t.useState(null),Q=a.useTransientStatus(),ee=j?.planVersion?._id;t.useEffect(()=>{J&&ee===J.planVersionId&&X(null)},[ee,J]);const[se,te]=t.useState(!1),[ae,ne]=t.useState(!1),ie=t.useRef("unknown"),re=e=>{ie.current=e,te(!0)},{emit:oe}=a.useFunnel(),ce=()=>({plan_version_id:j?.planVersion?._id,plan_slug:j?.plan?.slug,subscription_status:j?.subscription?.subscriptionStatus}),le=e=>{oe("subscription_cancel_started",{...ce(),source:e}),ne(!0)},de=t.useRef(void 0),ue=t.useRef(!1);t.useEffect(()=>{if(ue.current)return;if(y||!V||0===V.length)return;const e=a.workspaceSettingsManager.getState(),s=e.params?.action===a.BBAction.SelectPlan,t=!1!==p?.autoOpenPlanDialog;(!j?.subscription&&t||s)&&(ue.current=!0,s&&(de.current=e.params,a.workspaceSettingsManager.clearParams()),re(s?"deep_link":"auto_no_subscription"))},[y,j?.subscription,V,p?.autoOpenPlanDialog]);const[me,pe]=t.useState(!1),[xe,ge]=t.useState("subscription"),he=async()=>{await Promise.all([C(),L()])},fe=t.useMemo(()=>a.getBillingIntervalAndCurrencyFromPriceId(j?.subscription?.stripePriceId,V??[]),[j?.subscription?.stripePriceId,V]);if(!S)return e.jsx(k,{});if(_&&!j&&!R)return e.jsx(E,{});const be=j?.planVersion?._id||null;return i?e.jsxs("div",{className:"space-y-4",children:[G&&e.jsx(a.StatusBanner,{variant:"error",title:r("subscription.errorLoading"),message:G,description:r("subscription.errorLoadingDescription"),actionLabel:r("settings.common.retryAction",{loading:String(_)}),onAction:he,actionDisabled:_}),q&&e.jsx(a.StatusBanner,{variant:"error",title:r("subscription.updateFailed"),message:q,actionLabel:r("settings.common.dismiss"),onAction:()=>$(null)}),J&&e.jsx(a.StatusBanner,{variant:"warning",title:r("subscription.paymentRequiredTitle"),message:r("subscription.paymentRequiredMessage"),actionLabel:J.url?r("subscription.completePayment"):r("settings.common.dismiss"),onAction:()=>{J.url?window.open(J.url,"_blank","noopener,noreferrer"):X(null)}}),Z&&e.jsx(a.StatusBanner,{variant:"success",title:r("settings.common.success"),message:Z,actionLabel:r("settings.common.dismiss"),onAction:()=>Y(null)}),f&&e.jsx("div",{className:"border-b border-border",children:e.jsxs("nav",{className:"-mb-px flex gap-6",role:"tablist","aria-label":r("subscription.tabsLabel"),onKeyDown:e=>{"ArrowLeft"!==e.key&&"ArrowRight"!==e.key&&"Home"!==e.key&&"End"!==e.key||(e.preventDefault(),ge("ArrowLeft"===e.key||"End"===e.key?"invoices":"subscription"))},children:[e.jsx("button",{type:"button",role:"tab",id:"subscription-tab-subscription","aria-controls":"subscription-panel-subscription","aria-selected":"subscription"===xe,tabIndex:"subscription"===xe?0:-1,onClick:()=>ge("subscription"),className:"border-b-2 py-3 text-sm font-medium transition-colors "+("subscription"===xe?"border-primary text-primary":"border-transparent text-muted-foreground hover:border-border hover:text-foreground"),children:r("subscription.plan")}),e.jsx("button",{type:"button",role:"tab",id:"subscription-tab-invoices","aria-controls":"subscription-panel-invoices","aria-selected":"invoices"===xe,tabIndex:"invoices"===xe?0:-1,onClick:()=>ge("invoices"),className:"border-b-2 py-3 text-sm font-medium transition-colors "+("invoices"===xe?"border-primary text-primary":"border-transparent text-muted-foreground hover:border-border hover:text-foreground"),children:r("subscription.invoicesTab")})]})}),"subscription"===xe&&e.jsxs("div",{id:"subscription-panel-subscription",role:"tabpanel","aria-labelledby":"subscription-tab-subscription",tabIndex:0,children:[_&&e.jsx(a.LoadingState,{}),x&&W&&j?.subscription&&e.jsxs("div",{className:"bg-warning/10 border border-warning/30 rounded-lg px-4 py-3 flex flex-col sm:flex-row sm:items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(s.AlertTriangle,{className:"h-4 w-4 text-warning shrink-0"}),e.jsxs("span",{className:"text-sm text-warning",children:[e.jsx("span",{className:"font-medium",children:r("subscription.planUpdateAvailable")}),e.jsxs("span",{className:"text-warning",children:[" ","- v",K?.version||"?"," → v",O?.version||"?"]})]})]}),e.jsx(a.Button,{size:"sm",variant:"outline",className:"shrink-0 border-warning/40 text-warning hover:bg-warning/15",onClick:()=>re("new_version_notice"),children:r("subscription.viewPlans")})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{children:e.jsx("p",{className:"text-sm text-muted-foreground",children:r("subscription.managePlan")})}),e.jsxs("div",{className:"flex items-center gap-2",children:[(()=>{if(!x)return null;const s=j?.subscription?.subscriptionStatus===a.SubscriptionStatus.Canceled,t=j?.subscription?.cancelAtPeriodEnd;return t||P?null:s&&V&&V.length>0?e.jsx(a.Button,{size:"sm",onClick:()=>re("resubscribe"),children:r("subscription.viewPricingPlans")}):j?.subscription&&!s&&v?e.jsx(a.Button,{variant:"outline",size:"sm",onClick:()=>re("change_plan"),children:r("subscription.changePlanButton")}):!j?.subscription&&V&&V.length>0?e.jsx(a.Button,{size:"sm",onClick:()=>re("choose_plan"),children:r("subscription.viewPricingPlans")}):null})(),e.jsx(a.Button,{variant:"ghost",size:"sm",progress:_,onClick:he,disabled:_||z,children:r("settings.common.refreshAction",{loading:String(_)})})]})]}),j?.subscription?(()=>{const t=a.getBillingIntervalAndCurrencyFromPriceId(j.subscription.stripePriceId,V??[]),i=t?.interval??null,l=t?.currency??j.plan?.currency??n?.billingCurrency??"",d=i&&j.planVersion?a.getBasePriceCents(j.planVersion,l,i):null,u=l,m=j.planVersion?a.getSeatPricing(j.planVersion,l):null,p=m&&i?a.getPerSeatPriceCents(j.planVersion,l,i):null,S=Array.isArray(n?.users)?n.users.length:1,y=m?.includedSeats??0,N=Math.max(0,S-y),A=!!j.plan?.isFreemium,C=null!=d?0===d?r("subscription.free"):c(d,u):A?r("subscription.free"):null,w=i===a.BillingIntervals.Monthly?r("subscription.billingInterval.perMonth"):i===a.BillingIntervals.Quarterly?r("subscription.billingInterval.perQuarter"):i===a.BillingIntervals.Yearly?r("subscription.billingInterval.perYear"):"";return e.jsxs("div",{className:"border rounded-lg overflow-hidden "+(W?"border-warning/40":"border-border"),children:[j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing&&!j.subscription.cancelAtPeriodEnd&&e.jsx(Fs,{subscription:j.subscription,showChangePlan:x,setDialogOpen:e=>{!0===e?re("trial_banner"):te(e)},onManagePayment:h&&v&&j.subscription.subscriptionId?()=>{oe("billing_portal_opened",{...ce(),source:"trial_banner"}),I()}:void 0,managePaymentLoading:U}),e.jsxs("div",{className:"p-4 sm:p-5 "+(W?"bg-warning/5":"bg-muted/30"),children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2 mb-2",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground",children:j.plan?.name||r("subscription.noPlanAssigned")}),e.jsx(Bs,{subscription:j.subscription}),j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing&&Ds(o,j.subscription.trialEnd||j.subscription.stripeCurrentPeriodEnd)&&e.jsx("span",{className:"text-xs text-muted-foreground",children:r("subscription.endsOn",{date:Ds(o,j.subscription.trialEnd||j.subscription.stripeCurrentPeriodEnd)})}),W&&e.jsxs("span",{className:"inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium bg-warning/15 text-warning",children:[e.jsx(s.AlertTriangle,{className:"h-3.5 w-3.5"}),r("subscription.status.deprecated")]})]}),j.plan?.description&&e.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:j.plan.description}),!A&&e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3 sm:gap-4",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-baseline gap-1 whitespace-nowrap",children:[!C&&B?e.jsx(a.Skeleton,{className:"h-8 w-28"}):e.jsx("span",{className:"text-2xl font-bold text-foreground",children:C||r("invoices.na")}),C&&C!==r("subscription.free")&&w&&e.jsx("span",{className:"text-sm text-muted-foreground",children:w})]}),m&&null!=p&&p>0&&e.jsx("div",{className:"text-xs text-muted-foreground mt-1",children:r("subscription.perSeatDisplay",{price:c(p,u),interval:w})}),m&&null!=p&&p>0&&N>0&&C&&C!==r("subscription.free")&&null!=d&&e.jsx("div",{className:"text-xs text-muted-foreground mt-1 pt-1 border-t border-border",children:r("subscription.estTotalDisplay",{total:c(d+p*N,u),interval:w,count:N})})]}),(j.subscription.subscriptionStatus===a.SubscriptionStatus.Active||j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing)&&!j.subscription.cancelAtPeriodEnd&&Ds(o,j.subscription.stripeCurrentPeriodEnd)&&e.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[e.jsx(s.Calendar,{className:"h-3.5 w-3.5 flex-shrink-0"}),e.jsx("span",{children:r("subscription.nextBillingDisplay",{date:Ds(o,j.subscription.stripeCurrentPeriodEnd)??""})})]})]}),W&&e.jsx("p",{className:"text-xs text-warning mt-2",children:r("subscription.versionLabel",{version:K?.version||r("invoices.na")})}),!A&&(h||g||j.subscription.cancelAtPeriodEnd)&&(j.subscription.subscriptionStatus===a.SubscriptionStatus.Active||j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing||j.subscription.subscriptionStatus===a.SubscriptionStatus.PastDue)&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2 sm:gap-3 mt-4 pt-4 border-t border-border",children:[h&&j.subscription&&v&&j.subscription?.subscriptionId&&e.jsx(a.Button,{variant:"outline",size:"sm",onClick:()=>{oe("billing_portal_opened",ce()),I()},disabled:U,progress:U,children:r(U?"subscription.openingPortal":"subscription.managePayment")}),v&&j.subscription?.subscriptionId&&(j.subscription.subscriptionStatus===a.SubscriptionStatus.Active||j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing)&&e.jsx(e.Fragment,{children:j.subscription.cancelAtPeriodEnd?e.jsx(a.Button,{variant:"outline",size:"sm",onClick:()=>pe(!0),disabled:z||P||M,progress:M,children:j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing?r("subscription.resumeTrial"):r("subscription.resumeTitle")}):g?e.jsx(a.Button,{variant:"outline",size:"sm",className:"text-destructive hover:text-destructive hover:bg-destructive/10 border-destructive/20",onClick:()=>le("billing_tab"),disabled:z||P||M,progress:P||z,children:P||z?r("subscription.canceling"):j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing?r("subscription.cancelTrial"):r("subscription.cancelTitle")}):null})]})]}),j.subscription.subscriptionStatus===a.SubscriptionStatus.PastDue&&e.jsx(Rs,{kind:"past_due",className:"px-5 py-3 bg-destructive/10 border-t border-destructive/20",icon:e.jsx(s.AlertTriangle,{className:"h-5 w-5 text-destructive flex-shrink-0 mt-0.5"}),titleClassName:"text-sm font-medium text-destructive",title:r("subscription.paymentPastDue"),descriptionClassName:"text-sm text-destructive mt-0.5",description:r("subscription.paymentPastDueDescription"),children:f&&e.jsx(a.Button,{variant:"outline",size:"sm",className:"mt-2 border-destructive/20 text-destructive hover:bg-destructive/15",onClick:()=>ge("invoices"),children:r("subscription.viewInvoices")})}),j.subscription.subscriptionStatus===a.SubscriptionStatus.PastDue&&j.subscription.dunningState&&j.subscription.dunningState!==a.DunningState.None&&e.jsx(Rs,{kind:"dunning",className:"px-5 py-3 bg-destructive/10 border-t border-destructive/20",icon:e.jsx(s.AlertTriangle,{className:"h-5 w-5 text-destructive flex-shrink-0 mt-0.5"}),titleClassName:"text-sm font-medium text-destructive",title:j.subscription.dunningState===a.DunningState.Final?r("subscription.dunningFinal"):j.subscription.dunningState===a.DunningState.Suspended?r("subscription.dunningSuspended"):r("subscription.dunningRecovery"),descriptionClassName:"text-sm text-destructive mt-0.5",description:j.subscription.dunningState===a.DunningState.Suspended?r("subscription.dunningSuspendedDescription"):r("subscription.dunningRecoveryDescription")}),j.subscription.subscriptionStatus===a.SubscriptionStatus.Paused&&e.jsx(Rs,{kind:"paused",className:"px-5 py-3 bg-info/10 border-t border-info/20",icon:e.jsx(s.Calendar,{className:"h-5 w-5 text-info flex-shrink-0 mt-0.5"}),titleClassName:"text-sm font-medium text-info",title:r("subscription.subscriptionPaused"),descriptionClassName:"text-sm text-info mt-0.5",description:r("subscription.subscriptionPausedDescription")}),j.subscription.cancelAtPeriodEnd&&e.jsx(Rs,{kind:"cancel_scheduled",className:"px-5 py-3 bg-warning/10 border-t border-warning/30",icon:e.jsx(s.Calendar,{className:"h-5 w-5 text-warning flex-shrink-0 mt-0.5"}),titleClassName:"text-sm font-medium text-warning",title:j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing?r("subscription.scheduledTrialCancellation"):r("subscription.scheduledCancellation"),descriptionClassName:"text-sm text-warning mt-0.5",description:Ds(o,j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing&&j.subscription.trialEnd||j.subscription.stripeCurrentPeriodEnd)?e.jsxs(e.Fragment,{children:[j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing?r("subscription.trialEndDescription"):r("subscription.cancelEndDescription")," ",e.jsx("span",{className:"font-medium",children:Ds(o,j.subscription.subscriptionStatus===a.SubscriptionStatus.Trialing&&j.subscription.trialEnd||j.subscription.stripeCurrentPeriodEnd)}),"."]}):r("subscription.cancelEndFallback")}),b&&j.planVersion&&e.jsx(Ms,{planVersion:j.planVersion,subscriptionCurrency:l,billingInterval:i,seatPricingConfig:m,memberCount:S,includedSeats:y,billableSeats:N,perSeatPrice:p,intervalLabel:w})]})})():e.jsx(a.EmptyState,{icon:e.jsx(s.CreditCard,{className:"h-5 w-5 text-muted-foreground"}),title:r("subscription.noSubscription"),description:r("subscription.noSubscriptionDescription"),action:x&&V&&V.length>0?e.jsx(a.Button,{size:"sm",onClick:()=>re("empty_state"),children:r("subscription.viewPricingPlans")}):void 0})]}),!R&&!_&&!G&&e.jsx(a.EmptyState,{title:r("subscription.errorLoading"),description:r("subscription.noPlansAvailable"),action:e.jsx(a.Button,{variant:"outline",size:"sm",progress:_,onClick:he,children:r("settings.common.refreshAction",{loading:String(_)})})})]}),f&&"invoices"===xe&&e.jsxs("div",{id:"subscription-panel-invoices",role:"tabpanel","aria-labelledby":"subscription-tab-invoices",tabIndex:0,children:[_&&e.jsx(a.LoadingState,{}),e.jsx(Ps,{workspaceId:i,hasActiveSubscription:null!=j?.subscription,onViewPricingPlans:()=>ge("subscription"),limit:20})]}),V&&V.length>0&&e.jsx(t.Suspense,{fallback:se?e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(s.Loader2,{className:"h-5 w-5 animate-spin"}),e.jsx("span",{children:r("settings.common.loading")})]})}):null,children:e.jsx(Ls,{open:se,onOpenChange:te,source:ie.current,planVersions:V,currentPlanVersionId:be||null,currentStripePriceId:j?.subscription?.stripePriceId,billingCurrency:n.billingCurrency,trialUsedAt:n.trialUsedAt,workspaceName:n.name,initialInterval:de.current?.interval,initialCurrency:de.current?.currency,currentMemberCount:Array.isArray(n?.users)?n.users.length:void 0,onSelectPlan:async(e,s=a.BillingIntervals.Monthly,t)=>{if(!i)return;const c=V?.find(s=>s._id===e),d=t??fe?.currency??j?.plan?.currency??n?.billingCurrency??"",u=c?a.getStripePriceIdForInterval(c,d,s):null,m=j?.subscription?.stripePriceId;if(!u||!m||u!==m){H(!0),$(null),Y(null),X(null);try{const{successUrl:t,cancelUrl:n}=a.createCheckoutRedirectUrls(i);let u;if(c?.plan?.isFreemium){return j?.subscription?.subscriptionId?(te(!1),void le("downgrade_to_free")):(await l.selectFreePlan(i,e),te(!1),a.invalidateSubscription(),await he(),void Y(r("subscription.updateSuccess")))}const m=j?.subscription?.subscriptionStatus===a.SubscriptionStatus.Canceled;if(u=j?.subscription&&!m?await A(e,{billingInterval:s,successUrl:t,cancelUrl:n}):await w({planVersionId:e,billingInterval:s,currency:d||void 0,successUrl:t,cancelUrl:n}),u&&"checkoutUrl"in u&&u.checkoutUrl)return void a.safeRedirect(u.checkoutUrl);if(u&&"paymentRequired"in u&&u.paymentRequired)return X({planVersionId:e,url:a.validateRedirectUrl(u.paymentUrl??u.invoice?.hosted_invoice_url)}),void await he();const p=j?.subscription,x=p?.subscriptionStatus===a.SubscriptionStatus.Trialing?Ds(o,p.trialEnd):"";Y(x?r("subscription.updateSuccessTrial",{date:x}):r("subscription.updateSuccess")),await he()}catch(e){const s=e instanceof Error?e.message:r("subscription.errorProcessing");$(s)}finally{H(!1),Q(()=>{$(null),Y(null)})}}},loading:z||_})}),e.jsx(Is,{resumeDialogOpen:me,setResumeDialogOpen:pe,resumeLoading:M,handleResumeSubscription:async()=>{if(i){pe(!1),H(!0),$(null),Y(null);try{await D(),oe("subscription_resumed",ce()),Y(r("subscription.resumeSuccess")),await he()}catch(e){const s=e instanceof Error?e.message:r("subscription.errorResuming");$(s)}finally{H(!1),Q(()=>{$(null),Y(null)})}}},subscription:j}),e.jsx(Us,{cancelDialogOpen:ae,setCancelDialogOpen:ne,cancelLoading:P,handleCancelSubscription:async()=>{if(i){ne(!1),H(!0),$(null),Y(null);try{await T(),oe("subscription_cancelled",ce()),Y(r("subscription.cancelSuccess")),await he()}catch(e){const s=e instanceof Error?e.message:r("subscription.errorCanceling");$(s)}finally{H(!1),Q(()=>{$(null),Y(null)})}}},subscription:j})]}):e.jsx("div",{className:"border rounded-lg p-4 text-center text-muted-foreground",children:e.jsx("p",{children:r("subscription.invalidWorkspace")})})};function Gs(e){return e.replace(/[_-]/g," ").replace(/\b\w/g,e=>e.toUpperCase())}function Ks(e){try{const s=new Date(e);if(isNaN(s.getTime()))return null;const t=new Date;return Math.ceil((s.getTime()-t.getTime())/864e5)}catch{return null}}const Os=()=>{const{quotas:n,loading:i,error:r,refetch:o}=a.useQuotaUsageContext(),{t:c,formattingLocale:l,fmtNum:d}=a.useTranslation(),{can:u}=a.usePermissions(),{response:m}=a.useSubscriptionContext(),[p,x]=t.useState(!1),g=t.useMemo(()=>{const e={};if(!m?.planVersion||!m?.subscription)return e;const s=m.planVersion,t=m.subscription,i=t.billingInterval??"monthly",r=t.plan?.currency??"usd";if(!n)return e;for(const t of Object.keys(n)){const o=a.getQuotaOverageCents(s,r,t,i);if(null==o||o<=0)continue;const c=s.quotas?.[t],l=c?.[i],d=l?.unitSize??1,u=n[t].overage,m=(d>1?Math.ceil(u/d):u)*o;e[t]={overageCents:o,unitSize:d,currency:r,estimatedCostCents:m}}return e},[m,n]),h=t.useMemo(()=>{const e=m?.subscription?.usageCurrentPeriodEnd||m?.subscription?.stripeCurrentPeriodEnd;if(!e)return null;const s=a.formatDate(e,l);return s?{endDate:s,daysRemaining:Ks(e)}:null},[m,l]),f=async()=>{x(!0);try{await o()}finally{x(!1)}};if(i&&!n)return e.jsx(E,{});if(!u(a.Permission.WORKSPACE_USAGE_VIEW))return null;if(r)return e.jsx(a.StatusBanner,{variant:"error",title:c("usage.errorLoading"),message:r,actionLabel:c("settings.common.retryAction",{loading:String(p)}),onAction:f,actionDisabled:p});const b=function(e){return[...e].sort(([,e],[,s])=>{if(e.hasOverage&&!s.hasOverage)return-1;if(!e.hasOverage&&s.hasOverage)return 1;const t=e.included>0?e.consumed/e.included:e.consumed>0?1:0;return(s.included>0?s.consumed/s.included:s.consumed>0?1:0)-t})}(n?Object.entries(n):[]);if(0===b.length)return e.jsx(a.EmptyState,{icon:e.jsx(s.BarChart3,{className:"h-5 w-5 text-muted-foreground"}),title:c("usage.noData"),description:c("usage.noDataHint"),action:e.jsx(a.Button,{variant:"outline",size:"sm",progress:p,onClick:f,children:c("settings.common.refreshAction",{loading:String(p)})})});const S=b.filter(([,e])=>e.hasOverage).length,v=b.length>0?Math.round(b.reduce((e,[,s])=>e+(s.included>0?s.consumed/s.included*100:0),0)/b.length):0,j=Object.values(g).reduce((e,s)=>e+s.estimatedCostCents,0),y=Object.values(g)[0]?.currency??"usd",N=e=>a.formatMinorAmountIntl(e,y,l);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:c("usage.description")}),e.jsxs(a.Button,{variant:"ghost",size:"sm",onClick:f,disabled:p,children:[e.jsx(s.RefreshCw,{className:a.cn("h-3.5 w-3.5 me-1.5",p&&"animate-spin")}),c("settings.common.refreshAction",{loading:String(p)})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-muted/30 px-4 py-3 text-sm text-muted-foreground",children:[e.jsx(s.Calendar,{className:"h-4 w-4 text-muted-foreground/70 flex-shrink-0"}),e.jsxs("span",{children:[c("usage.resetDateDisplay",{date:h.endDate}),null!==h.daysRemaining&&h.daysRemaining>0&&e.jsxs("span",{className:"text-muted-foreground",children:[" ","(",c("usage.daysRemainingDisplay",{count:h.daysRemaining}),")"]}),null!==h.daysRemaining&&h.daysRemaining<=0&&e.jsxs("span",{className:"text-warning font-medium",children:[" (",c("usage.renewingSoon"),")"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-2 sm:gap-3",children:[e.jsxs("div",{className:"border border-border rounded-lg p-3 sm:p-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground font-medium",children:c("usage.totalResources")}),e.jsx("p",{className:"text-lg sm:text-xl font-semibold text-foreground mt-1",children:d(b.length)})]}),e.jsxs("div",{className:"border border-border rounded-lg p-3 sm:p-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground font-medium",children:c("usage.overallUsage")}),e.jsx("p",{className:"text-lg sm:text-xl font-semibold text-foreground mt-1",children:d(v)+"%"})]}),e.jsxs("div",{className:a.cn("border rounded-lg p-3 sm:p-4",S>0?"border-destructive/20 bg-destructive/10":"border-border"),children:[e.jsx("p",{className:"text-xs text-muted-foreground font-medium",children:c("usage.inOverage")}),e.jsx("p",{className:a.cn("text-lg sm:text-xl font-semibold mt-1",S>0?"text-destructive":"text-foreground"),children:d(S)})]}),S>0&&j>0&&e.jsxs("div",{className:"border border-destructive/20 bg-destructive/10 rounded-lg p-3 sm:p-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground font-medium",children:c("usage.estOverageCost")}),e.jsx("p",{className:"text-lg sm:text-xl font-semibold mt-1 text-destructive",children:N(j)})]})]}),S>0&&e.jsx("div",{className:"bg-warning/10 border border-warning/30 rounded-lg p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(s.AlertTriangle,{className:"h-5 w-5 text-warning flex-shrink-0 mt-0.5 hidden sm:block"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h3",{className:"text-sm font-semibold text-warning mb-1",children:c("usage.overageDetected")}),e.jsx("p",{className:"text-sm text-warning",children:c("usage.overageWarning",{count:S})}),j>0&&e.jsx("p",{className:"text-sm text-warning font-medium mt-1",children:c("usage.estOverageCharges",{amount:N(j)})})]})]})}),e.jsx("div",{className:"space-y-3",children:b.map(([s,t])=>{const a=(n=t.consumed,(i=t.included)<=0?n>0?100:0:Math.min(n/i*100,100));var n,i;const r=function(e,s){return s?{bar:"bg-destructive",bg:"bg-destructive/15",badge:"bg-destructive/15",badgeText:"text-destructive"}:e>=90?{bar:"bg-warning",bg:"bg-warning/15",badge:"bg-warning/15",badgeText:"text-warning"}:e>=75?{bar:"bg-warning/80",bg:"bg-warning/15",badge:"bg-warning/15",badgeText:"text-warning"}:{bar:"bg-info",bg:"bg-info/15",badge:"bg-info/15",badgeText:"text-info"}}(a,t.hasOverage),o=g[s];return e.jsx(Ws,{slug:s,quota:t,percent:a,colors:r,pricing:o},s)})})]})};function Ws({slug:s,quota:t,percent:n,colors:i,pricing:r}){const{t:o,formattingLocale:c}=a.useTranslation(),l=e=>function(e,s){return new Intl.NumberFormat(s,{notation:"compact",maximumFractionDigits:1}).format(e)}(e,c),d=(e,s)=>a.formatMinorAmountIntl(e,s,c);return e.jsxs("div",{className:"border border-border rounded-lg p-4 sm:p-5",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-y-1 mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx("h3",{className:"text-sm font-medium text-foreground truncate",children:Gs(s)}),t.hasOverage&&e.jsx("span",{className:a.cn("inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium",i.badge,i.badgeText),children:o("usage.overage")}),!t.hasOverage&&n>=90&&e.jsx("span",{className:a.cn("inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium",i.badge,i.badgeText),children:o("usage.almostFull")})]}),e.jsxs("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:[l(t.consumed)," / ",l(t.included)]})]}),e.jsx("div",{role:"progressbar","aria-valuenow":Math.round(n),"aria-valuemin":0,"aria-valuemax":100,"aria-label":Gs(s),className:a.cn("h-2 rounded-full w-full",i.bg),children:e.jsx("div",{className:a.cn("h-2 rounded-full transition-all duration-500",i.bar),style:{width:`${n}%`}})}),e.jsxs("div",{className:"flex items-center justify-between mt-2 text-xs text-muted-foreground",children:[e.jsx("span",{children:o("usage.percentUsed",{percent:Math.round(n)})}),e.jsx("span",{children:t.available>0?o("usage.availableRemaining",{count:l(t.available)}):t.hasOverage?o("usage.overLimitCount",{count:l(t.overage)}):o("usage.fullyUsed")})]}),t.hasOverage&&r&&e.jsxs("div",{className:"mt-3 pt-3 border-t border-border space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:o("usage.overageUnits")}),e.jsx("span",{className:"font-medium text-foreground",children:l(t.overage)})]}),e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:o("usage.rate")}),e.jsx("span",{className:"font-medium text-foreground",children:o("usage.rateDisplay",{rate:d(r.overageCents,r.currency),unitSize:r.unitSize})})]}),r.unitSize>1&&e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:o("usage.billableBlocks")}),e.jsx("span",{className:"font-medium text-foreground",children:l(Math.ceil(t.overage/r.unitSize))})]}),e.jsxs("div",{className:"flex items-center justify-between text-xs pt-2 border-t border-border",children:[e.jsx("span",{className:"font-medium text-destructive",children:o("usage.estimatedCharge")}),e.jsx("span",{className:"font-semibold text-destructive",children:d(r.estimatedCostCents,r.currency)})]})]}),!t.hasOverage&&r&&e.jsx("div",{className:"mt-2 text-xs text-muted-foreground",children:o("usage.overageRateDisplay",{rate:o("usage.rateDisplay",{rate:d(r.overageCents,r.currency),unitSize:r.unitSize})})})]})}const Vs=x.Root,zs=x.Value,Hs=m.forwardRef(({className:s,children:t,...n},i)=>e.jsxs(x.Trigger,{ref:i,className:a.cn("flex h-10 sm:h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-base sm:text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",s),...n,children:[t,e.jsx(x.Icon,{asChild:!0,children:e.jsx(c.CaretSortIcon,{className:"h-4 w-4 opacity-50"})})]}));Hs.displayName=x.Trigger.displayName;const qs=m.createContext(null),$s="undefined"==typeof window?m.useEffect:m.useLayoutEffect,Zs=m.forwardRef(({className:s,children:t,position:n="popper",style:i,searchable:r,searchPlaceholder:o,emptyText:c,onCloseAutoFocus:l,onKeyDownCapture:d,...u},p)=>{const{container:g}=m.useContext(a.PortalContext),{t:h}=a.useTranslation(),f=o??h("dropdowns.search"),[b,S]=m.useState(""),[v,j]=m.useState(0),[y,N]=m.useState(!1),A=m.useRef(null),C=m.useRef(null),w=function(e){return e.trim().toLowerCase()}(b),T=function(e,s){return e??s>=8}(r,v),k=m.useCallback(()=>(j(e=>e+1),()=>j(e=>e-1)),[]),E=m.useMemo(()=>({query:T?w:"",register:k}),[T,w,k]);$s(()=>{if(!w||!C.current)return N(!1);N(!C.current.querySelector('[role="option"]:not(.hidden)'))},[w,v]);return e.jsx(qs.Provider,{value:E,children:e.jsx(x.Portal,{container:g,children:e.jsxs(x.Content,{ref:p,onCloseAutoFocus:e=>{S(""),l?.(e)},onKeyDownCapture:e=>{d?.(e),T&&e.target!==A.current&&(e=>1===e.key.length&&!e.ctrlKey&&!e.metaKey&&!e.altKey)(e)&&(" "!==e.key||""!==b)&&(e.preventDefault(),e.stopPropagation(),S(s=>s+e.key),A.current?.focus())},className:a.cn("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===n&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",s),position:n,style:{..."popper"===n?{maxHeight:"min(24rem, var(--radix-select-content-available-height))"}:{},...i},...u,children:[T&&e.jsx("div",{className:"border-b p-1",children:e.jsx("input",{ref:A,type:"search",value:b,placeholder:f,"aria-label":f,autoComplete:"off",className:"h-8 w-full rounded-sm bg-background px-2 text-sm outline-none placeholder:text-muted-foreground",onChange:e=>S(e.target.value),onKeyDown:e=>{if("ArrowDown"===e.key||"Enter"===e.key){e.preventDefault(),e.stopPropagation();const s=C.current?.querySelector('[role="option"]:not(.hidden):not([data-disabled])')??null;if(!s)return;return s.focus(),void("Enter"===e.key&&s.dispatchEvent(new KeyboardEvent("keydown",{key:"Enter",bubbles:!0})))}"Escape"!==e.key&&"Tab"!==e.key&&e.stopPropagation()}})}),e.jsxs(x.Viewport,{ref:C,className:a.cn("p-1","![scrollbar-color:hsl(var(--border))_transparent] ![scrollbar-width:thin] [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-border [&::-webkit-scrollbar]:!block [&::-webkit-scrollbar]:w-2","popper"===n&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:[t,y&&e.jsx("p",{className:"px-2 py-1.5 text-sm text-muted-foreground",children:c??h("dropdowns.noResults")})]})]})})})});Zs.displayName=x.Content.displayName;m.forwardRef(({className:s,...t},n)=>{const i=!!m.useContext(qs)?.query;return e.jsx(x.Label,{ref:n,className:a.cn("px-2 py-1.5 text-sm font-semibold",s,i&&"hidden"),...t})}).displayName=x.Label.displayName;const Ys=m.forwardRef(({className:s,children:t,disabled:n,textValue:i,...r},o)=>{const l=m.useContext(qs),d=l?.register,u=m.useRef(null),[p,g]=m.useState(i??"");$s(()=>d?.(),[d]),$s(()=>{g(i??u.current?.textContent??"")},[i,t]);const h=m.useCallback(e=>{u.current=e,"function"==typeof o?o(e):o&&(o.current=e)},[o]),f=!!l?.query&&!function(e,s){return!s||e.toLowerCase().includes(s)}(p,l.query);return e.jsxs(x.Item,{ref:h,disabled:n||f,textValue:i,className:a.cn("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 ps-2 pe-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s,f&&"hidden"),...r,children:[e.jsx("span",{className:"absolute end-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(x.ItemIndicator,{children:e.jsx(c.CheckIcon,{className:"h-4 w-4"})})}),e.jsx(x.ItemText,{children:t})]})});Ys.displayName=x.Item.displayName;m.forwardRef(({className:s,...t},n)=>{const i=!!m.useContext(qs)?.query;return e.jsx(x.Separator,{ref:n,className:a.cn("-mx-1 my-1 h-px bg-muted",s,i&&"hidden"),...t})}).displayName=x.Separator.displayName;const Js=({workspace:n})=>{const{user:i}=a.useSaaSAuth(),{t:r,fmtNum:o,fmtCents:c}=a.useTranslation(),[l,u]=t.useState(0),[m,p]=t.useState(!1),[x,g]=t.useState(!1),[h,f]=t.useState([]),[b,S]=t.useState(null),{getUsers:v,removeUser:j,updateUser:y}=a.useSaaSWorkspaces(),{settings:N}=a.useSaaSSettings(),{can:A}=a.usePermissions(),{visible:C}=a.useUIVisibility(),{response:w}=a.useSubscriptionContext(),T=a.workspaceInvitesEnabled(N),P=a.useWorkspaceInvitations(a.shouldLoadWorkspaceInvitations({canView:A(a.Permission.WORKSPACE_MEMBERS_VIEW)})?n?._id:null),D=a.useSeatStatus(n,{settingsMaxUsers:N?.workspace?.maxWorkspaceUsers,pendingInvitations:P.pendingCount});t.useEffect(()=>{n&&(p(!0),v(n._id).then(e=>{f(e)}).catch(e=>{a.handleError(e,{component:"WorkspaceSettingsUsers",action:"getUsers",metadata:{workspaceId:n._id}})}).finally(()=>{p(!1),g(!0)}))},[n,l,v]);const M=()=>{u(e=>e+1)};if(!x||!n)return e.jsx(E,{});const I=e=>"string"==typeof e?{name:r("users.unknownUser"),email:e,id:e,role:"-"}:{name:e.name||r("users.unknownUser"),email:e.email,id:e._id},U=h.map(e=>({...e,...I(e.user)})),R=C(e=>e.settings?.users?.invite,a.Permission.WORKSPACE_MEMBERS_INVITE),B=C(e=>e.settings?.users?.remove,a.Permission.WORKSPACE_MEMBERS_REMOVE),F=C(e=>e.settings?.users?.roleChange,a.Permission.WORKSPACE_MEMBERS_ROLE_CHANGE),L=C(e=>e.settings?.users?.seatPricing),_=C(e=>e.settings?.users?.invitations,a.Permission.WORKSPACE_MEMBERS_VIEW),{hasSeatPricing:G,includedSeats:K,maxUsers:O,canInvite:W,inviteBlockReason:V,inviteBlockMessageKey:z,inviteBlockMessageValues:H,perSeatPriceCents:q,currency:$}=D,Z=h.length+P.pendingCount,Y=w?.subscription?.billingInterval??"monthly",J=G&&Z>=K,X=Z>=O?{bar:"bg-destructive",track:"bg-destructive/15"}:Z>=.8*O?{bar:"bg-warning",track:"bg-warning/15"}:{bar:"bg-success",track:"bg-success/15"};return e.jsxs("div",{children:[!A(a.Permission.WORKSPACE_MEMBERS_INVITE)&&!A(a.Permission.WORKSPACE_MEMBERS_REMOVE)&&!A(a.Permission.WORKSPACE_MEMBERS_ROLE_CHANGE)&&e.jsx(k,{descriptionKey:"users.adminOnly"}),R&&T&&e.jsx("div",{className:"mb-4",children:W?e.jsxs("div",{children:[e.jsx(Xs,{onInvite:()=>{M(),P.refresh().catch(()=>{})},workspaceId:n._id}),L&&J&&null!=q&&q>0&&e.jsx("div",{className:"flex items-center gap-1.5 mt-2 text-xs text-warning bg-warning/10 px-3 py-1.5 rounded-md",children:e.jsx("span",{children:r("users.extraSeatCost",{price:c(q,$),interval:Y})})})]}):e.jsx("div",{className:"flex items-center justify-between p-3 bg-destructive/10 border border-destructive/20 rounded-md",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-destructive",children:r("users.limitReached",{reason:V??"member_limit_reached"})}),e.jsx("p",{className:"text-xs text-destructive mt-0.5",children:z?r(z,H??void 0):""})]})})}),L&&(G||O>0)&&e.jsxs("div",{className:"mb-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground",children:r("users.seatHeading",{hasSeatPricing:String(G)})}),O>0&&e.jsxs("span",{className:"text-xs font-medium px-2 py-0.5 rounded-full "+(Z>=O?"bg-destructive/15 text-destructive":Z>=.8*O?"bg-warning/15 text-warning":"bg-success/15 text-success"),children:[o(Z)," / ",o(O)]})]}),O>0&&e.jsx("div",{role:"progressbar","aria-valuenow":Z,"aria-valuemin":0,"aria-valuemax":O,"aria-label":r("users.seatHeading"),className:`w-full h-1.5 rounded-full mb-3 ${X.track}`,children:e.jsx("div",{className:`h-1.5 rounded-full transition-all ${X.bar}`,style:{width:`${Math.min(100,Z/O*100)}%`}})}),e.jsxs("div",{className:"flex items-center justify-between text-sm text-muted-foreground",children:[e.jsx("div",{children:G?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-foreground font-medium",children:o(K)})," ",r("users.included"),null!=q&&q>0&&e.jsxs("span",{className:"text-muted-foreground/70",children:[" ","· ",c(q,$),r("users.perExtraSeat")]})]}):e.jsxs("span",{children:[e.jsx("span",{className:"text-foreground font-medium",children:o(O)})," ",r("users.maxMembers")]})}),O>0?e.jsxs("span",{children:[o(Math.max(0,O-Z))," ",r("users.available")]}):e.jsx("span",{className:"text-muted-foreground/70",children:r("users.noMemberLimit")})]}),P.pendingCount>0&&e.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:r("users.invitations.seatNote",{count:P.pendingCount})})]}),_&&e.jsx(Qs,{state:P,canResend:R&&T,canRevoke:R,onChanged:M}),e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("div",{children:e.jsx("div",{className:"text-sm text-muted-foreground",children:r("users.memberCount",{count:h.length})})}),e.jsx("div",{children:e.jsx(a.Button,{variant:"ghost",size:"sm",onClick:M,progress:m,children:r("settings.common.refreshAction",{loading:String(m)})})})]}),e.jsx("ul",{className:"space-y-2",children:U.map((t,o)=>{const c=t.id===i?.id,l=("object"==typeof n.createdBy&&null!==n.createdBy?n.createdBy._id:n.createdBy)===t.id;return e.jsxs("li",{className:"border rounded-md p-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx("div",{className:"w-8 h-8 bg-muted rounded-full flex items-center justify-center text-sm font-medium shrink-0",children:t.name.charAt(0).toUpperCase()}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:t.name}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:t.email})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[c&&e.jsx("span",{className:"text-xs bg-info/15 text-info px-2 py-0.5 rounded",children:r("users.you")}),l&&e.jsx("span",{className:"text-xs bg-primary/10 text-primary px-2 py-0.5 rounded",children:r("users.owner")})]})]}),F&&e.jsxs("div",{className:"flex items-center gap-2 mt-2 pt-2 border-t border-border/60 sm:mt-0 sm:pt-0 sm:border-0",children:[e.jsxs("div",{className:"relative flex-1 sm:flex-initial",children:[e.jsxs(Vs,{disabled:c||!F||l||b===t.id,value:t.role,onValueChange:e=>{return s=n._id,i=t.id,r=e,void(a.isWorkspaceOwner(n,i)?a.handleError(new Error("Cannot change the role of the workspace owner"),{component:"WorkspaceSettingsUsers",action:"handleUpdateRole",metadata:{workspaceId:s,userId:i,role:r}}):(S(i),y(s,i,{role:r}).then(()=>{M()}).catch(e=>{a.handleError(e,{component:"WorkspaceSettingsUsers",action:"handleUpdateRole",metadata:{workspaceId:s,userId:i,role:r}})}).finally(()=>{S(null)})));var s,i,r},children:[e.jsx(Hs,{children:e.jsx(d.SelectValue,{placeholder:r("users.selectRole")})}),e.jsx(Zs,{children:(N?.workspace?.roles??n?.roles??[]).map(s=>e.jsx(Ys,{value:s,children:s},s))})]}),b===t.id&&e.jsx("div",{className:"absolute end-8 top-1/2 -translate-y-1/2 pointer-events-none",children:e.jsx(s.Loader2,{className:"h-4 w-4 animate-spin text-muted-foreground"})})]}),!c&&!l&&B&&e.jsx(a.Button,{variant:"destructive",size:"sm",startIcon:e.jsx(s.TrashIcon,{}),"aria-label":r("settings.common.delete"),onClick:()=>{return e=t.id,void(a.isWorkspaceOwner(n,e)?a.handleError(new Error("Cannot remove the workspace owner"),{component:"WorkspaceSettingsUsers",action:"handleRemoveUser",metadata:{workspaceId:n._id,userId:e}}):j(n._id,e).then(()=>{M()}).catch(s=>{a.handleError(s,{component:"WorkspaceSettingsUsers",action:"handleRemoveUser",metadata:{workspaceId:n._id,userId:e}})}));var e}})]})]},t.id??o)})}),0===h.length&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:r("users.noMembers")})]})};function Xs({onInvite:s,workspaceId:n}){const{t:i}=a.useTranslation(),{inviteMember:r,getWorkspace:o}=a.useSaaSWorkspaces(),{settings:c}=a.useSaaSSettings(),[l,u]=t.useState(""),[m,p]=t.useState(null),x=c?.workspace.roles??m?.roles??[],g=a.pickDefaultRole(x,c?.workspace.defaultRole),[h,f]=t.useState(g),[b,S]=t.useState(!1),[v,j]=t.useState(null),[y,N]=t.useState(null),A=a.useTransientStatus();t.useEffect(()=>{!h&&g&&f(g)},[g]),t.useEffect(()=>{n&&o(n).then(p).catch(e=>{a.handleError(e,{component:"InviteMember",action:"getWorkspace"})})},[n]);const C=()=>{j(null),N(null),u(""),f(g)};return e.jsxs("div",{className:"flex gap-2 flex-col gap-y-2",children:[v&&e.jsx(a.StatusBanner,{variant:"error",message:v}),y&&e.jsx(a.StatusBanner,{variant:"success",message:y}),e.jsxs("div",{children:[e.jsx(a.Label,{children:i("users.inviteByEmail")}),e.jsx(a.Input,{type:"email",value:l,onChange:e=>u(e.target.value),placeholder:i("users.emailPlaceholder")})]}),e.jsxs("div",{children:[e.jsx(a.Label,{children:i("users.role")}),e.jsxs(Vs,{value:h,onValueChange:f,children:[e.jsx(Hs,{children:e.jsx(d.SelectValue,{placeholder:i("users.selectRole")})}),e.jsx(Zs,{children:x.map(s=>e.jsx(Ys,{value:s,children:s},s))})]})]}),e.jsx("div",{children:e.jsx(a.Button,{progress:b,onClick:async()=>{const e=l.trim();if(!e)return void j(i("users.emailRequired"));/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?(S(!0),j(null),N(null),await r(n,e,h).then(()=>{N(i("users.invitations.sent",{email:e})),s?.()}).catch(s=>{a.handleError(s,{component:"InviteMember",action:"inviteMember",metadata:{workspaceId:n,email:e,role:h}}),j(s instanceof Error?s.message:i("users.inviteFailed"))}).finally(()=>{S(!1),A(C,6e3)})):j(i("users.invalidEmail"))},disabled:b||!l||!h,children:b?i("users.inviting"):i("users.inviteAs",{role:h})})})]})}function Qs({state:s,canResend:n,canRevoke:i,onChanged:r}){const{t:o,formattingLocale:c}=a.useTranslation(),{formats:l}=a.useUIConfig(),{invitations:d,loading:u,error:m,busy:p,resend:x,revoke:g}=s,[h,f]=t.useState(null),[b,S]=t.useState(null),v=a.useTransientStatus(),[,j]=t.useState(0);if(t.useEffect(()=>{if(!d.some(e=>a.resendCooldownSeconds(e)>0))return;const e=setInterval(()=>j(e=>e+1),1e3);return()=>clearInterval(e)},[d]),!u&&0===d.length&&!m)return null;const y=e=>e?a.formatDate(e,c,l?.date??{dateStyle:"medium"}):"";return e.jsxs("div",{className:"mb-4",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground",children:o("users.invitations.title")}),e.jsx("span",{className:"text-xs text-muted-foreground",children:o("users.invitations.pendingCount",{count:s.pendingCount})})]}),m&&e.jsx(a.StatusBanner,{variant:"error",message:m}),b&&e.jsx(a.StatusBanner,{variant:"success",message:b}),e.jsx("ul",{className:"space-y-2",children:d.map(s=>{const t=a.isInvitationLapsed(s),c="invited"===s.status&&!t,l=c?a.resendCooldownSeconds(s):0,d=p===s._id;return e.jsx("li",{className:"rounded-md border p-3",children:e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.jsx("span",{className:"truncate text-sm font-medium",children:s.email}),e.jsx("span",{className:"rounded bg-muted px-2 py-0.5 text-xs",children:s.role}),e.jsx("span",{className:"rounded px-2 py-0.5 text-xs "+(c?"bg-info/15 text-info":"accepted"===s.status?"bg-success/15 text-success":"bg-muted text-muted-foreground"),children:o(`users.invitations.status.${t?"expired":s.status}`)})]}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[o("users.invitations.sentAt",{date:y(s.lastSentAt??s.invitedAt)}),c&&s.validTill&&e.jsxs(e.Fragment,{children:[" · ",o("users.invitations.expiresAt",{date:y(s.validTill)})]})]})]}),(n&&(c||t)||i&&c)&&e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[n&&e.jsx(a.Button,{variant:"outline",size:"sm",disabled:d||l>0,progress:d,onClick:()=>(e=>{x(e._id).then(()=>{S(o("users.invitations.sent",{email:e.email})),v(()=>S(null),6e3),r()}).catch(()=>{})})(s),children:l>0?o("users.invitations.resendIn",{minutes:Math.max(1,Math.ceil(l/60))}):o("users.invitations.resend")}),i&&c&&e.jsx(a.Button,{variant:"destructive",size:"sm",disabled:d,onClick:()=>f(s),children:o("users.invitations.revoke")})]})]})},s._id)})}),e.jsx(a.AlertDialog,{open:null!==h,onOpenChange:e=>!e&&f(null),children:e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:o("users.invitations.revokeTitle")}),e.jsx(a.AlertDialogDescription,{children:o("users.invitations.revokeConfirm",{email:h?.email??""})})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{children:o("settings.common.cancel")}),e.jsx(a.AlertDialogAction,{onClick:()=>{return h&&(e=h,f(null),void g(e._id).then(r).catch(()=>{}));var e},className:"bg-destructive hover:bg-destructive/90 focus:ring-destructive",children:o("users.invitations.revoke")})]})]})})]})}const et=({workspace:t,section:n,setSection:i})=>{const{t:r}=a.useTranslation(),{settings:o}=a.useSaaSSettings(),{appPermissions:c}=a.usePermissionConfig(),{visible:l}=a.useUIVisibility(),d=a.workspaceCanBeDeleted(o),u=a.appPermissionCatalogue(o,c).length>0,m=(e,s)=>l(s=>s.settings?.sections?.[e],s),p=m(a.SettingsScreen.Profile),x=m(a.SettingsScreen.Security),g=m(a.SettingsScreen.Devices),h=m(a.SettingsScreen.ConnectedAgents),f=m(a.SettingsScreen.General,a.Permission.WORKSPACE_SETTINGS_VIEW),b=m(a.SettingsScreen.Users,a.Permission.WORKSPACE_MEMBERS_VIEW),S=m(a.SettingsScreen.Subscription,a.Permission.WORKSPACE_BILLING_VIEW),v=m(a.SettingsScreen.Usage,a.Permission.WORKSPACE_USAGE_VIEW),j=m(a.SettingsScreen.Credits,a.Permission.WORKSPACE_BILLING_VIEW),y=m(a.SettingsScreen.Features,a.Permission.WORKSPACE_FEATURES_VIEW),N=m(a.SettingsScreen.Notifications),A=m(a.SettingsScreen.Permissions)&&u,C=m(a.SettingsScreen.Danger,a.Permission.WORKSPACE_DELETE)&&d,w=p||x||g||h,T=f||b||S||v||j||y||N||A||C,k=(s,t,r)=>e.jsx(a.SidebarNavItem,{icon:t,label:r,active:n===s,onClick:()=>i(s)});return e.jsxs("div",{className:"w-full sm:w-56 sm:h-full flex flex-col space-y-4 sm:space-y-6 shrink-0",children:[t&&e.jsx("div",{className:"sticky top-0 z-10 bg-muted border-b p-2 py-4 pe-10 sm:pe-2",children:e.jsxs("div",{className:"flex items-center gap-x-2",children:[t.image&&t.image.trim()&&e.jsx("div",{className:"bg-info/15 rounded flex items-center justify-center text-info font-medium px-0.5 py-0.5",style:{width:"40px",height:"40px",minWidth:"40px",minHeight:"40px"},children:e.jsx("img",{src:t.image,className:"w-full h-full object-contain",style:{width:"36px",height:"36px",maxWidth:"36px",maxHeight:"36px",objectFit:"contain"},alt:t.name})}),e.jsxs("div",{className:a.cn("flex-1 min-w-0",t.image?"":"ps-2"),children:[e.jsx("div",{className:"font-medium text-sm line-clamp-1 text-ellipsis overflow-hidden",children:t.name}),e.jsx("div",{className:a.cn("text-xs",a.SIDEBAR_SECONDARY_TEXT),children:t.workspaceId})]})]})}),w&&e.jsxs(a.SidebarNavSection,{title:r("settings.sidebar.account"),children:[p&&k(a.SettingsScreen.Profile,e.jsx(s.UserIcon,{className:"h-3.5 w-3.5"}),r("settings.sidebar.profile")),x&&k(a.SettingsScreen.Security,e.jsx(s.KeyRound,{className:"h-3.5 w-3.5"}),r("settings.sidebar.security")),g&&k(a.SettingsScreen.Devices,e.jsx(s.MonitorSmartphone,{className:"h-3.5 w-3.5"}),r("settings.sidebar.devices")),h&&k(a.SettingsScreen.ConnectedAgents,e.jsx(s.Bot,{className:"h-3.5 w-3.5"}),r("security.connectedAgentsTitle"))]}),T&&e.jsxs(a.SidebarNavSection,{title:r("settings.sidebar.workspace"),children:[f&&k(a.SettingsScreen.General,e.jsx(s.SettingsIcon,{className:"h-3.5 w-3.5"}),r("settings.sidebar.general")),b&&k(a.SettingsScreen.Users,e.jsx(s.UsersIcon,{className:"h-3.5 w-3.5"}),r("settings.sidebar.users")),S&&k(a.SettingsScreen.Subscription,e.jsx(s.CreditCard,{className:"h-3.5 w-3.5"}),r("settings.sidebar.subscription")),v&&k(a.SettingsScreen.Usage,e.jsx(s.BarChart3,{className:"h-3.5 w-3.5"}),r("settings.sidebar.usage")),j&&k(a.SettingsScreen.Credits,e.jsx(s.Coins,{className:"h-3.5 w-3.5"}),r("settings.sidebar.credits")),y&&k(a.SettingsScreen.Features,e.jsx(s.ToggleRight,{className:"h-3.5 w-3.5"}),r("settings.sidebar.features")),N&&k(a.SettingsScreen.Notifications,e.jsx(s.Bell,{className:"h-3.5 w-3.5"}),r("settings.sidebar.notifications")),A&&k(a.SettingsScreen.Permissions,e.jsx(s.Shield,{className:"h-3.5 w-3.5"}),r("settings.sidebar.permissions")),C&&k(a.SettingsScreen.Danger,e.jsx(s.AlertTriangle,{className:"h-3.5 w-3.5"}),r("settings.sidebar.danger"))]})]})},st={[a.SettingsScreen.Profile]:"settings.titles.profile",[a.SettingsScreen.Security]:"settings.titles.security",[a.SettingsScreen.Devices]:"settings.titles.devices",[a.SettingsScreen.ConnectedAgents]:"security.connectedAgentsTitle",[a.SettingsScreen.General]:"settings.titles.general",[a.SettingsScreen.Users]:"settings.titles.users",[a.SettingsScreen.Subscription]:"settings.titles.subscription",[a.SettingsScreen.Usage]:"settings.titles.usage",[a.SettingsScreen.Credits]:"settings.titles.credits",[a.SettingsScreen.Features]:"settings.titles.features",[a.SettingsScreen.Notifications]:"settings.titles.notifications",[a.SettingsScreen.Permissions]:"settings.titles.permissions",[a.SettingsScreen.Danger]:"settings.titles.danger"},tt=({ui:s,...n})=>{const i=a.useUIConfig(),r=t.useMemo(()=>a.mergeUIConfig(i,s),[i,s]);return s?e.jsx(a.UIConfigProvider,{ui:r,children:e.jsx(at,{...n})}):e.jsx(at,{...n})},at=({workspace:n,onClose:i,open:r,onOpenChange:o,defaultSection:c=a.SettingsScreen.Profile,section:l,onSectionChange:d,showTrigger:u=!0,trigger:m})=>{const{t:p,dir:x}=a.useTranslation(),{visible:g}=a.useUIVisibility(),[h,f]=t.useState(!1),[b,j]=t.useState(c),y=void 0!==r?r:h,N=o||f,A=void 0!==l?l:b,C=d||j,w=e=>g(s=>s.settings?.sections?.[e]),T=w(A)?A:Object.values(a.SettingsScreen).find(w)??null,k=void 0===l&&c===a.SettingsScreen.Profile,[E,P]=t.useState(k),M=t.useRef(T),U=t.useRef(null),R=t.useRef(null),B=t.useRef(E);t.useEffect(()=>{B.current!==E&&(B.current=E,"undefined"==typeof window||window.innerWidth>=640||(E?R:U).current?.focus())},[E]),t.useEffect(()=>{M.current!==T&&(M.current=T,P(!1))},[T]),t.useEffect(()=>{y&&P(k)},[y]);const{emit:F}=a.useFunnel(),L=t.useRef(!1),_=t.useRef(null);t.useEffect(()=>y?T?L.current?void(_.current!==T&&(_.current=T,F("workspace_settings_section_viewed",{section:T}))):(L.current=!0,_.current=T,void F("workspace_settings_opened",{section:T})):void 0:(L.current=!1,void(_.current=null)),[y,T,F]);if(!n||!T)return null;const G=e.jsx(a.Button,{variant:"outline",size:"icon","aria-label":p("settings.common.openSettings"),children:e.jsx(s.Settings,{className:"h-4 w-4"})});return e.jsxs(a.Dialog,{open:y,onOpenChange:e=>{N(e),!e&&i&&i()},children:[u&&e.jsx(a.DialogTrigger,{asChild:!0,children:m||G}),e.jsxs(a.DialogContent,{dir:x,className:"flex flex-col sm:flex-row max-w-2xl min-w-full md:min-w-[800px] xl:min-w-[960px] p-0 m-0 bg-muted h-dvh max-h-dvh sm:h-auto sm:max-h-[90vh] sm:min-h-[600px] overflow-hidden gap-x-0 space-x-0",children:[e.jsx(a.DialogDescription,{className:"sr-only",children:p(st[T])}),e.jsx("div",{ref:R,tabIndex:-1,className:a.cn("flex-col flex-1 min-h-0 overflow-y-auto overscroll-contain px-2 pb-2 sm:p-0 sm:flex sm:flex-none focus:outline-none",E?"flex":"hidden"),children:e.jsx(et,{workspace:n,section:T,setSection:e=>{C(e),P(!1)}})}),e.jsxs("div",{ref:U,tabIndex:-1,className:a.cn("flex-1 p-4 sm:p-6 overflow-auto flex-col bg-background sm:flex focus:outline-none",E?"hidden":"flex"),children:[e.jsxs("div",{className:"flex items-center gap-1 mb-4 pe-10 sm:pe-0",children:[e.jsx(a.Button,{variant:"ghost",size:"icon",className:"sm:hidden -ms-2 shrink-0 text-muted-foreground","aria-label":p("settings.common.back"),onClick:()=>P(!0),children:e.jsx(s.ArrowLeft,{className:"h-5 w-5 rtl:rotate-180"})}),e.jsx(a.DialogTitle,{className:"text-xl font-semibold min-w-0 truncate",children:p(st[T])})]}),e.jsx(S,{className:"mb-4"}),e.jsxs("div",{className:"sm:max-h-[500px] xl:max-h-[65vh] overflow-y-auto",children:[T===a.SettingsScreen.Profile&&e.jsx(_e,{workspace:n}),T===a.SettingsScreen.Security&&e.jsx(ks,{}),T===a.SettingsScreen.Devices&&e.jsx(oe,{}),T===a.SettingsScreen.ConnectedAgents&&e.jsx(v,{}),T===a.SettingsScreen.General&&e.jsx(ue,{workspace:n}),T===a.SettingsScreen.Users&&e.jsx(Js,{workspace:n}),T===a.SettingsScreen.Subscription&&e.jsx(_s,{workspace:n}),T===a.SettingsScreen.Usage&&e.jsx(Os,{}),T===a.SettingsScreen.Credits&&e.jsx(D,{workspace:n}),T===a.SettingsScreen.Features&&e.jsx(de,{workspaceId:n._id?.toString()}),T===a.SettingsScreen.Notifications&&e.jsx(ge,{workspace:n}),T===a.SettingsScreen.Permissions&&e.jsx(fe,{workspace:n}),T===a.SettingsScreen.Danger&&e.jsx(I,{workspace:n})]})]})]})]})};var nt=Object.freeze({__proto__:null,SETTINGS_SCREENS:a.SETTINGS_SCREENS,SettingsScreen:a.SettingsScreen,WorkspaceSettingsDialog:tt,default:tt});exports.Select=Vs,exports.SelectContent=Zs,exports.SelectItem=Ys,exports.SelectTrigger=Hs,exports.SelectValue=zs,exports.SettingsDialog=nt,exports.getVisitorCurrency=C;
|