@ollaid/native-sso 1.0.4 → 1.0.7

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/dist/index.cjs CHANGED
@@ -2874,25 +2874,209 @@ function LoginModal({
2874
2874
  )
2875
2875
  ] });
2876
2876
  }
2877
- const SUPPORTED_COUNTRIES = [
2878
- { code: "+221", name: "Sénégal", flag: "🇸🇳", digits: 9 },
2879
- { code: "+229", name: "Bénin", flag: "🇧🇯", digits: 8 },
2880
- { code: "+225", name: "Côte d'Ivoire", flag: "🇨🇮", digits: 10 },
2881
- { code: "+228", name: "Togo", flag: "🇹🇬", digits: 8 },
2882
- { code: "+237", name: "Cameroun", flag: "🇨🇲", digits: 9 },
2883
- { code: "+33", name: "France", flag: "🇫🇷", digits: 9 }
2877
+ const COUNTRIES = [
2878
+ // ── Afrique de l'Ouest (prioritaires) ──
2879
+ { code: "SN", name: "Sénégal", dialCode: "+221", flag: "🇸🇳", digits: 9 },
2880
+ { code: "CI", name: "Côte d'Ivoire", dialCode: "+225", flag: "🇨🇮", digits: 10 },
2881
+ { code: "ML", name: "Mali", dialCode: "+223", flag: "🇲🇱", digits: 8 },
2882
+ { code: "BF", name: "Burkina Faso", dialCode: "+226", flag: "🇧🇫", digits: 8 },
2883
+ { code: "GN", name: "Guinée", dialCode: "+224", flag: "🇬🇳", digits: 9 },
2884
+ { code: "TG", name: "Togo", dialCode: "+228", flag: "🇹🇬", digits: 8 },
2885
+ { code: "BJ", name: "Bénin", dialCode: "+229", flag: "🇧🇯", digits: 8 },
2886
+ { code: "NE", name: "Niger", dialCode: "+227", flag: "🇳🇪", digits: 8 },
2887
+ { code: "MR", name: "Mauritanie", dialCode: "+222", flag: "🇲🇷", digits: 8 },
2888
+ { code: "GW", name: "Guinée-Bissau", dialCode: "+245", flag: "🇬🇼", digits: 7 },
2889
+ { code: "GM", name: "Gambie", dialCode: "+220", flag: "🇬🇲", digits: 7 },
2890
+ { code: "CV", name: "Cap-Vert", dialCode: "+238", flag: "🇨🇻", digits: 7 },
2891
+ { code: "SL", name: "Sierra Leone", dialCode: "+232", flag: "🇸🇱", digits: 8 },
2892
+ { code: "LR", name: "Liberia", dialCode: "+231", flag: "🇱🇷", digits: 7 },
2893
+ { code: "GH", name: "Ghana", dialCode: "+233", flag: "🇬🇭", digits: 9 },
2894
+ { code: "NG", name: "Nigeria", dialCode: "+234", flag: "🇳🇬", digits: 10 },
2895
+ // ── Afrique Centrale ──
2896
+ { code: "CM", name: "Cameroun", dialCode: "+237", flag: "🇨🇲", digits: 9 },
2897
+ { code: "GA", name: "Gabon", dialCode: "+241", flag: "🇬🇦", digits: 7 },
2898
+ { code: "CG", name: "Congo", dialCode: "+242", flag: "🇨🇬", digits: 9 },
2899
+ { code: "CD", name: "RD Congo", dialCode: "+243", flag: "🇨🇩", digits: 9 },
2900
+ { code: "TD", name: "Tchad", dialCode: "+235", flag: "🇹🇩", digits: 8 },
2901
+ { code: "CF", name: "Centrafrique", dialCode: "+236", flag: "🇨🇫", digits: 8 },
2902
+ { code: "GQ", name: "Guinée équatoriale", dialCode: "+240", flag: "🇬🇶", digits: 9 },
2903
+ { code: "ST", name: "São Tomé-et-Príncipe", dialCode: "+239", flag: "🇸🇹", digits: 7 },
2904
+ { code: "BI", name: "Burundi", dialCode: "+257", flag: "🇧🇮", digits: 8 },
2905
+ { code: "RW", name: "Rwanda", dialCode: "+250", flag: "🇷🇼", digits: 9 },
2906
+ // ── Afrique de l'Est ──
2907
+ { code: "KE", name: "Kenya", dialCode: "+254", flag: "🇰🇪", digits: 9 },
2908
+ { code: "TZ", name: "Tanzanie", dialCode: "+255", flag: "🇹🇿", digits: 9 },
2909
+ { code: "UG", name: "Ouganda", dialCode: "+256", flag: "🇺🇬", digits: 9 },
2910
+ { code: "ET", name: "Éthiopie", dialCode: "+251", flag: "🇪🇹", digits: 9 },
2911
+ { code: "SO", name: "Somalie", dialCode: "+252", flag: "🇸🇴", digits: 8 },
2912
+ { code: "DJ", name: "Djibouti", dialCode: "+253", flag: "🇩🇯", digits: 8 },
2913
+ { code: "ER", name: "Érythrée", dialCode: "+291", flag: "🇪🇷", digits: 7 },
2914
+ { code: "SS", name: "Soudan du Sud", dialCode: "+211", flag: "🇸🇸", digits: 9 },
2915
+ { code: "MG", name: "Madagascar", dialCode: "+261", flag: "🇲🇬", digits: 9 },
2916
+ { code: "MU", name: "Maurice", dialCode: "+230", flag: "🇲🇺", digits: 8 },
2917
+ { code: "SC", name: "Seychelles", dialCode: "+248", flag: "🇸🇨", digits: 7 },
2918
+ { code: "KM", name: "Comores", dialCode: "+269", flag: "🇰🇲", digits: 7 },
2919
+ // ── Afrique Australe ──
2920
+ { code: "ZA", name: "Afrique du Sud", dialCode: "+27", flag: "🇿🇦", digits: 9 },
2921
+ { code: "MZ", name: "Mozambique", dialCode: "+258", flag: "🇲🇿", digits: 9 },
2922
+ { code: "ZW", name: "Zimbabwe", dialCode: "+263", flag: "🇿🇼", digits: 9 },
2923
+ { code: "ZM", name: "Zambie", dialCode: "+260", flag: "🇿🇲", digits: 9 },
2924
+ { code: "MW", name: "Malawi", dialCode: "+265", flag: "🇲🇼", digits: 9 },
2925
+ { code: "BW", name: "Botswana", dialCode: "+267", flag: "🇧🇼", digits: 8 },
2926
+ { code: "NA", name: "Namibie", dialCode: "+264", flag: "🇳🇦", digits: 9 },
2927
+ { code: "AO", name: "Angola", dialCode: "+244", flag: "🇦🇴", digits: 9 },
2928
+ { code: "SZ", name: "Eswatini", dialCode: "+268", flag: "🇸🇿", digits: 8 },
2929
+ { code: "LS", name: "Lesotho", dialCode: "+266", flag: "🇱🇸", digits: 8 },
2930
+ // ── Afrique du Nord ──
2931
+ { code: "MA", name: "Maroc", dialCode: "+212", flag: "🇲🇦", digits: 9 },
2932
+ { code: "DZ", name: "Algérie", dialCode: "+213", flag: "🇩🇿", digits: 9 },
2933
+ { code: "TN", name: "Tunisie", dialCode: "+216", flag: "🇹🇳", digits: 8 },
2934
+ { code: "LY", name: "Libye", dialCode: "+218", flag: "🇱🇾", digits: 9 },
2935
+ { code: "EG", name: "Égypte", dialCode: "+20", flag: "🇪🇬", digits: 10 },
2936
+ { code: "SD", name: "Soudan", dialCode: "+249", flag: "🇸🇩", digits: 9 },
2937
+ // ── Europe ──
2938
+ { code: "FR", name: "France", dialCode: "+33", flag: "🇫🇷", digits: 9 },
2939
+ { code: "BE", name: "Belgique", dialCode: "+32", flag: "🇧🇪", digits: 9 },
2940
+ { code: "CH", name: "Suisse", dialCode: "+41", flag: "🇨🇭", digits: 9 },
2941
+ { code: "DE", name: "Allemagne", dialCode: "+49", flag: "🇩🇪", digits: 10 },
2942
+ { code: "GB", name: "Royaume-Uni", dialCode: "+44", flag: "🇬🇧", digits: 10 },
2943
+ { code: "ES", name: "Espagne", dialCode: "+34", flag: "🇪🇸", digits: 9 },
2944
+ { code: "IT", name: "Italie", dialCode: "+39", flag: "🇮🇹", digits: 10 },
2945
+ { code: "PT", name: "Portugal", dialCode: "+351", flag: "🇵🇹", digits: 9 },
2946
+ { code: "NL", name: "Pays-Bas", dialCode: "+31", flag: "🇳🇱", digits: 9 },
2947
+ { code: "SE", name: "Suède", dialCode: "+46", flag: "🇸🇪", digits: 9 },
2948
+ { code: "NO", name: "Norvège", dialCode: "+47", flag: "🇳🇴", digits: 8 },
2949
+ { code: "DK", name: "Danemark", dialCode: "+45", flag: "🇩🇰", digits: 8 },
2950
+ { code: "FI", name: "Finlande", dialCode: "+358", flag: "🇫🇮", digits: 10 },
2951
+ { code: "PL", name: "Pologne", dialCode: "+48", flag: "🇵🇱", digits: 9 },
2952
+ { code: "AT", name: "Autriche", dialCode: "+43", flag: "🇦🇹", digits: 10 },
2953
+ { code: "IE", name: "Irlande", dialCode: "+353", flag: "🇮🇪", digits: 9 },
2954
+ { code: "GR", name: "Grèce", dialCode: "+30", flag: "🇬🇷", digits: 10 },
2955
+ { code: "CZ", name: "Tchéquie", dialCode: "+420", flag: "🇨🇿", digits: 9 },
2956
+ { code: "RO", name: "Roumanie", dialCode: "+40", flag: "🇷🇴", digits: 9 },
2957
+ { code: "HU", name: "Hongrie", dialCode: "+36", flag: "🇭🇺", digits: 9 },
2958
+ { code: "BG", name: "Bulgarie", dialCode: "+359", flag: "🇧🇬", digits: 9 },
2959
+ { code: "HR", name: "Croatie", dialCode: "+385", flag: "🇭🇷", digits: 9 },
2960
+ { code: "SK", name: "Slovaquie", dialCode: "+421", flag: "🇸🇰", digits: 9 },
2961
+ { code: "SI", name: "Slovénie", dialCode: "+386", flag: "🇸🇮", digits: 8 },
2962
+ { code: "RS", name: "Serbie", dialCode: "+381", flag: "🇷🇸", digits: 9 },
2963
+ { code: "UA", name: "Ukraine", dialCode: "+380", flag: "🇺🇦", digits: 9 },
2964
+ { code: "RU", name: "Russie", dialCode: "+7", flag: "🇷🇺", digits: 10 },
2965
+ { code: "TR", name: "Turquie", dialCode: "+90", flag: "🇹🇷", digits: 10 },
2966
+ { code: "LU", name: "Luxembourg", dialCode: "+352", flag: "🇱🇺", digits: 9 },
2967
+ { code: "MC", name: "Monaco", dialCode: "+377", flag: "🇲🇨", digits: 8 },
2968
+ { code: "IS", name: "Islande", dialCode: "+354", flag: "🇮🇸", digits: 7 },
2969
+ { code: "AL", name: "Albanie", dialCode: "+355", flag: "🇦🇱", digits: 9 },
2970
+ { code: "ME", name: "Monténégro", dialCode: "+382", flag: "🇲🇪", digits: 8 },
2971
+ { code: "MK", name: "Macédoine du Nord", dialCode: "+389", flag: "🇲🇰", digits: 8 },
2972
+ { code: "BA", name: "Bosnie-Herzégovine", dialCode: "+387", flag: "🇧🇦", digits: 8 },
2973
+ { code: "LT", name: "Lituanie", dialCode: "+370", flag: "🇱🇹", digits: 8 },
2974
+ { code: "LV", name: "Lettonie", dialCode: "+371", flag: "🇱🇻", digits: 8 },
2975
+ { code: "EE", name: "Estonie", dialCode: "+372", flag: "🇪🇪", digits: 8 },
2976
+ { code: "MT", name: "Malte", dialCode: "+356", flag: "🇲🇹", digits: 8 },
2977
+ { code: "CY", name: "Chypre", dialCode: "+357", flag: "🇨🇾", digits: 8 },
2978
+ { code: "MD", name: "Moldavie", dialCode: "+373", flag: "🇲🇩", digits: 8 },
2979
+ { code: "GE", name: "Géorgie", dialCode: "+995", flag: "🇬🇪", digits: 9 },
2980
+ { code: "AM", name: "Arménie", dialCode: "+374", flag: "🇦🇲", digits: 8 },
2981
+ { code: "AZ", name: "Azerbaïdjan", dialCode: "+994", flag: "🇦🇿", digits: 9 },
2982
+ { code: "BY", name: "Biélorussie", dialCode: "+375", flag: "🇧🇾", digits: 9 },
2983
+ // ── Amérique du Nord ──
2984
+ { code: "US", name: "États-Unis", dialCode: "+1", flag: "🇺🇸", digits: 10 },
2985
+ { code: "CA", name: "Canada", dialCode: "+1", flag: "🇨🇦", digits: 10 },
2986
+ { code: "MX", name: "Mexique", dialCode: "+52", flag: "🇲🇽", digits: 10 },
2987
+ // ── Amérique Centrale & Caraïbes ──
2988
+ { code: "HT", name: "Haïti", dialCode: "+509", flag: "🇭🇹", digits: 8 },
2989
+ { code: "DO", name: "République dominicaine", dialCode: "+1809", flag: "🇩🇴", digits: 10 },
2990
+ { code: "CU", name: "Cuba", dialCode: "+53", flag: "🇨🇺", digits: 8 },
2991
+ { code: "JM", name: "Jamaïque", dialCode: "+1876", flag: "🇯🇲", digits: 7 },
2992
+ { code: "GT", name: "Guatemala", dialCode: "+502", flag: "🇬🇹", digits: 8 },
2993
+ { code: "HN", name: "Honduras", dialCode: "+504", flag: "🇭🇳", digits: 8 },
2994
+ { code: "SV", name: "El Salvador", dialCode: "+503", flag: "🇸🇻", digits: 8 },
2995
+ { code: "NI", name: "Nicaragua", dialCode: "+505", flag: "🇳🇮", digits: 8 },
2996
+ { code: "CR", name: "Costa Rica", dialCode: "+506", flag: "🇨🇷", digits: 8 },
2997
+ { code: "PA", name: "Panama", dialCode: "+507", flag: "🇵🇦", digits: 8 },
2998
+ { code: "TT", name: "Trinité-et-Tobago", dialCode: "+1868", flag: "🇹🇹", digits: 7 },
2999
+ // ── Amérique du Sud ──
3000
+ { code: "BR", name: "Brésil", dialCode: "+55", flag: "🇧🇷", digits: 11 },
3001
+ { code: "AR", name: "Argentine", dialCode: "+54", flag: "🇦🇷", digits: 10 },
3002
+ { code: "CO", name: "Colombie", dialCode: "+57", flag: "🇨🇴", digits: 10 },
3003
+ { code: "CL", name: "Chili", dialCode: "+56", flag: "🇨🇱", digits: 9 },
3004
+ { code: "PE", name: "Pérou", dialCode: "+51", flag: "🇵🇪", digits: 9 },
3005
+ { code: "VE", name: "Venezuela", dialCode: "+58", flag: "🇻🇪", digits: 10 },
3006
+ { code: "EC", name: "Équateur", dialCode: "+593", flag: "🇪🇨", digits: 9 },
3007
+ { code: "BO", name: "Bolivie", dialCode: "+591", flag: "🇧🇴", digits: 8 },
3008
+ { code: "PY", name: "Paraguay", dialCode: "+595", flag: "🇵🇾", digits: 9 },
3009
+ { code: "UY", name: "Uruguay", dialCode: "+598", flag: "🇺🇾", digits: 8 },
3010
+ { code: "GY", name: "Guyana", dialCode: "+592", flag: "🇬🇾", digits: 7 },
3011
+ { code: "SR", name: "Suriname", dialCode: "+597", flag: "🇸🇷", digits: 7 },
3012
+ // ── Moyen-Orient ──
3013
+ { code: "AE", name: "Émirats arabes unis", dialCode: "+971", flag: "🇦🇪", digits: 9 },
3014
+ { code: "SA", name: "Arabie saoudite", dialCode: "+966", flag: "🇸🇦", digits: 9 },
3015
+ { code: "QA", name: "Qatar", dialCode: "+974", flag: "🇶🇦", digits: 8 },
3016
+ { code: "KW", name: "Koweït", dialCode: "+965", flag: "🇰🇼", digits: 8 },
3017
+ { code: "BH", name: "Bahreïn", dialCode: "+973", flag: "🇧🇭", digits: 8 },
3018
+ { code: "OM", name: "Oman", dialCode: "+968", flag: "🇴🇲", digits: 8 },
3019
+ { code: "JO", name: "Jordanie", dialCode: "+962", flag: "🇯🇴", digits: 9 },
3020
+ { code: "LB", name: "Liban", dialCode: "+961", flag: "🇱🇧", digits: 8 },
3021
+ { code: "IQ", name: "Irak", dialCode: "+964", flag: "🇮🇶", digits: 10 },
3022
+ { code: "IR", name: "Iran", dialCode: "+98", flag: "🇮🇷", digits: 10 },
3023
+ { code: "IL", name: "Israël", dialCode: "+972", flag: "🇮🇱", digits: 9 },
3024
+ { code: "PS", name: "Palestine", dialCode: "+970", flag: "🇵🇸", digits: 9 },
3025
+ { code: "YE", name: "Yémen", dialCode: "+967", flag: "🇾🇪", digits: 9 },
3026
+ { code: "SY", name: "Syrie", dialCode: "+963", flag: "🇸🇾", digits: 9 },
3027
+ // ── Asie ──
3028
+ { code: "CN", name: "Chine", dialCode: "+86", flag: "🇨🇳", digits: 11 },
3029
+ { code: "JP", name: "Japon", dialCode: "+81", flag: "🇯🇵", digits: 10 },
3030
+ { code: "KR", name: "Corée du Sud", dialCode: "+82", flag: "🇰🇷", digits: 10 },
3031
+ { code: "IN", name: "Inde", dialCode: "+91", flag: "🇮🇳", digits: 10 },
3032
+ { code: "PK", name: "Pakistan", dialCode: "+92", flag: "🇵🇰", digits: 10 },
3033
+ { code: "BD", name: "Bangladesh", dialCode: "+880", flag: "🇧🇩", digits: 10 },
3034
+ { code: "ID", name: "Indonésie", dialCode: "+62", flag: "🇮🇩", digits: 10 },
3035
+ { code: "MY", name: "Malaisie", dialCode: "+60", flag: "🇲🇾", digits: 10 },
3036
+ { code: "PH", name: "Philippines", dialCode: "+63", flag: "🇵🇭", digits: 10 },
3037
+ { code: "TH", name: "Thaïlande", dialCode: "+66", flag: "🇹🇭", digits: 9 },
3038
+ { code: "VN", name: "Vietnam", dialCode: "+84", flag: "🇻🇳", digits: 9 },
3039
+ { code: "SG", name: "Singapour", dialCode: "+65", flag: "🇸🇬", digits: 8 },
3040
+ { code: "HK", name: "Hong Kong", dialCode: "+852", flag: "🇭🇰", digits: 8 },
3041
+ { code: "TW", name: "Taïwan", dialCode: "+886", flag: "🇹🇼", digits: 9 },
3042
+ { code: "MM", name: "Myanmar", dialCode: "+95", flag: "🇲🇲", digits: 9 },
3043
+ { code: "KH", name: "Cambodge", dialCode: "+855", flag: "🇰🇭", digits: 9 },
3044
+ { code: "LA", name: "Laos", dialCode: "+856", flag: "🇱🇦", digits: 10 },
3045
+ { code: "NP", name: "Népal", dialCode: "+977", flag: "🇳🇵", digits: 10 },
3046
+ { code: "LK", name: "Sri Lanka", dialCode: "+94", flag: "🇱🇰", digits: 9 },
3047
+ { code: "AF", name: "Afghanistan", dialCode: "+93", flag: "🇦🇫", digits: 9 },
3048
+ { code: "UZ", name: "Ouzbékistan", dialCode: "+998", flag: "🇺🇿", digits: 9 },
3049
+ { code: "KZ", name: "Kazakhstan", dialCode: "+7", flag: "🇰🇿", digits: 10 },
3050
+ { code: "MN", name: "Mongolie", dialCode: "+976", flag: "🇲🇳", digits: 8 },
3051
+ // ── Océanie ──
3052
+ { code: "AU", name: "Australie", dialCode: "+61", flag: "🇦🇺", digits: 9 },
3053
+ { code: "NZ", name: "Nouvelle-Zélande", dialCode: "+64", flag: "🇳🇿", digits: 9 },
3054
+ { code: "FJ", name: "Fidji", dialCode: "+679", flag: "🇫🇯", digits: 7 },
3055
+ { code: "PG", name: "Papouasie-Nouvelle-Guinée", dialCode: "+675", flag: "🇵🇬", digits: 8 }
2884
3056
  ];
3057
+ const DEFAULT_COUNTRY_CODE = "SN";
3058
+ const DEFAULT_DIAL_CODE = "+221";
3059
+ const getCountryByCode = (code) => COUNTRIES.find((c) => c.code.toLowerCase() === code.toLowerCase());
3060
+ const getCountryByDialCode = (dialCode) => COUNTRIES.find((c) => c.dialCode === dialCode);
3061
+ const getDefaultCountry = () => COUNTRIES.find((c) => c.code === DEFAULT_COUNTRY_CODE);
3062
+ const searchCountries = (query) => {
3063
+ const q = query.toLowerCase().trim();
3064
+ if (!q) return COUNTRIES;
3065
+ return COUNTRIES.filter(
3066
+ (c) => c.name.toLowerCase().includes(q) || c.dialCode.includes(q) || c.code.toLowerCase().includes(q)
3067
+ );
3068
+ };
2885
3069
  function PhoneInput({
2886
3070
  value,
2887
3071
  onChange,
2888
- ccphone = "+221",
3072
+ ccphone = DEFAULT_DIAL_CODE,
2889
3073
  onCcphoneChange,
2890
3074
  disabled = false,
2891
3075
  error,
2892
3076
  placeholder = "77 123 45 67",
2893
3077
  lockCcphone = false
2894
3078
  }) {
2895
- const selectedCountry = SUPPORTED_COUNTRIES.find((c) => c.code === ccphone) || SUPPORTED_COUNTRIES[0];
3079
+ const selectedCountry = getCountryByDialCode(ccphone) || COUNTRIES[0];
2896
3080
  const handleChange = (e) => {
2897
3081
  const cleaned = e.target.value.replace(/\D/g, "");
2898
3082
  onChange(cleaned.slice(0, selectedCountry.digits));
@@ -2919,16 +3103,16 @@ function PhoneInput({
2919
3103
  value: ccphone,
2920
3104
  onChange: (e) => onCcphoneChange(e.target.value),
2921
3105
  disabled,
2922
- style: { padding: "0.75rem", backgroundColor: "#f9fafb", borderRight: "1px solid #e5e7eb", fontWeight: 500, color: "#374151", outline: "none", border: "none" },
2923
- children: SUPPORTED_COUNTRIES.map((c) => /* @__PURE__ */ jsxRuntime.jsxs("option", { value: c.code, children: [
3106
+ style: { padding: "0.75rem", backgroundColor: "#f9fafb", borderRight: "1px solid #e5e7eb", fontWeight: 500, color: "#374151", outline: "none", border: "none", maxWidth: "7rem" },
3107
+ children: COUNTRIES.map((c) => /* @__PURE__ */ jsxRuntime.jsxs("option", { value: c.dialCode, children: [
2924
3108
  c.flag,
2925
3109
  " ",
2926
- c.code
2927
- ] }, c.code))
3110
+ c.dialCode
3111
+ ] }, `${c.code}-${c.dialCode}`))
2928
3112
  }
2929
3113
  ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem", padding: "0.75rem", backgroundColor: "#f9fafb", borderRight: "1px solid #e5e7eb" }, children: [
2930
3114
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "1.125rem" }, children: selectedCountry.flag }),
2931
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 500, color: "#374151" }, children: selectedCountry.code })
3115
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 500, color: "#374151" }, children: selectedCountry.dialCode })
2932
3116
  ] }),
2933
3117
  /* @__PURE__ */ jsxRuntime.jsx(
2934
3118
  "input",
@@ -2954,12 +3138,9 @@ function PhoneInput({
2954
3138
  ] })
2955
3139
  ] });
2956
3140
  }
2957
- function AppsLogoSlider({ speed = "normal", className = "", iamApiUrl: iamApiUrlProp }) {
2958
- const scrollRef = react.useRef(null);
2959
- const [isPaused, setIsPaused] = react.useState(false);
3141
+ function AppsLogoSlider({ className = "", iamApiUrl: iamApiUrlProp }) {
2960
3142
  const [applications, setApplications] = react.useState([]);
2961
3143
  const [isLoading, setIsLoading] = react.useState(true);
2962
- const speedMap = { slow: 50, normal: 30, fast: 15 };
2963
3144
  react.useEffect(() => {
2964
3145
  const resolvedIamApiUrl = iamApiUrlProp || getNativeAuthConfig().iamApiUrl;
2965
3146
  if (!resolvedIamApiUrl) return;
@@ -2978,19 +3159,6 @@ function AppsLogoSlider({ speed = "normal", className = "", iamApiUrl: iamApiUrl
2978
3159
  };
2979
3160
  fetchApps();
2980
3161
  }, [iamApiUrlProp]);
2981
- react.useEffect(() => {
2982
- const container = scrollRef.current;
2983
- if (!container || applications.length === 0) return;
2984
- let pos = 0;
2985
- const id = setInterval(() => {
2986
- if (!isPaused && container) {
2987
- pos += 1;
2988
- if (pos >= container.scrollWidth / 2) pos = 0;
2989
- container.scrollLeft = pos;
2990
- }
2991
- }, speedMap[speed]);
2992
- return () => clearInterval(id);
2993
- }, [isPaused, speed, applications.length]);
2994
3162
  const getLogoUrl = (logo) => {
2995
3163
  if (!logo) return null;
2996
3164
  if (logo.startsWith("http")) return logo;
@@ -2998,27 +3166,85 @@ function AppsLogoSlider({ speed = "normal", className = "", iamApiUrl: iamApiUrl
2998
3166
  return `${resolvedUrl.replace("/api", "")}/storage/applications/${logo}`;
2999
3167
  };
3000
3168
  if (isLoading) {
3001
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { overflow: "hidden" }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: "1rem", padding: "0.5rem 0" }, children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flexShrink: 0, display: "flex", flexDirection: "column", alignItems: "center", gap: "0.5rem" }, children: [
3002
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "3rem", height: "3rem", borderRadius: "0.75rem", backgroundColor: "#e5e7eb" } }),
3003
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "2.5rem", height: "0.75rem", borderRadius: "0.25rem", backgroundColor: "#e5e7eb" } })
3004
- ] }, i)) }) });
3169
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { width: "100%", height: "100%", display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: "0.75rem", padding: "0 0.75rem" }, children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "2rem", height: "2rem", borderRadius: "0.5rem", backgroundColor: "#e5e7eb", flexShrink: 0 } }, i)) }) });
3005
3170
  }
3006
3171
  if (applications.length === 0) return null;
3007
- const displayApps = [...applications, ...applications];
3008
- return /* @__PURE__ */ jsxRuntime.jsx(
3172
+ const displayApps = [...applications, ...applications, ...applications];
3173
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3009
3174
  "div",
3010
3175
  {
3011
3176
  className,
3012
- style: { position: "relative", overflow: "hidden" },
3013
- onMouseEnter: () => setIsPaused(true),
3014
- onMouseLeave: () => setIsPaused(false),
3015
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, style: { display: "flex", gap: "1rem", overflow: "hidden", padding: "0.5rem 0" }, children: displayApps.map((app, index) => {
3016
- const logoUrl = getLogoUrl(app.logo);
3017
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flexShrink: 0, display: "flex", flexDirection: "column", alignItems: "center", gap: "0.5rem" }, children: [
3018
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "3rem", height: "3rem", borderRadius: "0.75rem", display: "flex", alignItems: "center", justifyContent: "center", boxShadow: "0 1px 3px rgba(0,0,0,0.1)", backgroundColor: "white", border: "1px solid #f3f4f6" }, children: logoUrl ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoUrl, alt: app.name, style: { width: "2.5rem", height: "2.5rem", objectFit: "contain", borderRadius: "0.5rem" } }) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 700, fontSize: "1.125rem", color: "hsl(var(--primary, 222 47% 11%))" }, children: app.name.charAt(0).toUpperCase() }) }),
3019
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.75rem", color: "#6b7280", fontWeight: 500 }, children: app.name })
3020
- ] }, `${app.id}-${index}`);
3021
- }) })
3177
+ style: { position: "relative", width: "100%", height: "100%", overflow: "hidden" },
3178
+ children: [
3179
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
3180
+ position: "absolute",
3181
+ left: 0,
3182
+ top: 0,
3183
+ bottom: 0,
3184
+ width: "1.5rem",
3185
+ background: "linear-gradient(to right, #ffffff, transparent)",
3186
+ zIndex: 10,
3187
+ pointerEvents: "none"
3188
+ } }),
3189
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
3190
+ display: "flex",
3191
+ animation: "ollaid-marquee 20s linear infinite",
3192
+ height: "100%",
3193
+ alignItems: "center"
3194
+ }, children: displayApps.map((app, index) => {
3195
+ var _a, _b;
3196
+ const logoUrl = getLogoUrl(app.logo);
3197
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3198
+ "div",
3199
+ {
3200
+ style: { flexShrink: 0, padding: "0 0.75rem", display: "flex", alignItems: "center", height: "100%" },
3201
+ children: [
3202
+ logoUrl ? /* @__PURE__ */ jsxRuntime.jsx(
3203
+ "img",
3204
+ {
3205
+ src: logoUrl,
3206
+ alt: app.name,
3207
+ style: { width: "2rem", height: "2rem", objectFit: "contain" },
3208
+ onError: (e) => {
3209
+ const target = e.currentTarget;
3210
+ target.style.display = "none";
3211
+ if (target.nextElementSibling) {
3212
+ target.nextElementSibling.style.display = "flex";
3213
+ }
3214
+ }
3215
+ }
3216
+ ) : null,
3217
+ /* @__PURE__ */ jsxRuntime.jsx(
3218
+ "div",
3219
+ {
3220
+ style: {
3221
+ width: "2rem",
3222
+ height: "2rem",
3223
+ borderRadius: "0.5rem",
3224
+ backgroundColor: "#f3f4f6",
3225
+ alignItems: "center",
3226
+ justifyContent: "center",
3227
+ display: logoUrl ? "none" : "flex"
3228
+ },
3229
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.75rem", fontWeight: 700, color: "#6b7280" }, children: ((_b = (_a = app.name) == null ? void 0 : _a.charAt(0)) == null ? void 0 : _b.toUpperCase()) || "A" })
3230
+ }
3231
+ )
3232
+ ]
3233
+ },
3234
+ `${app.id}-${index}`
3235
+ );
3236
+ }) }),
3237
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
3238
+ position: "absolute",
3239
+ right: 0,
3240
+ top: 0,
3241
+ bottom: 0,
3242
+ width: "1.5rem",
3243
+ background: "linear-gradient(to left, #ffffff, transparent)",
3244
+ zIndex: 10,
3245
+ pointerEvents: "none"
3246
+ } })
3247
+ ]
3022
3248
  }
3023
3249
  );
3024
3250
  }
@@ -3567,7 +3793,8 @@ function SignupModal({ open, onOpenChange, onSwitchToLogin, onSignupSuccess, saa
3567
3793
  };
3568
3794
  const handleAccountTypeSelect = (type) => {
3569
3795
  setAccountType(type);
3570
- if (type === "phone-only") updateFormData({ ccphone: "+221", country: "Sénégal", email: "" });
3796
+ if (type === "phone-only") updateFormData({ ccphone: "+221", country: "SN", email: "" });
3797
+ else if (!formData.country) updateFormData({ country: DEFAULT_COUNTRY_CODE });
3571
3798
  goToStep("info");
3572
3799
  };
3573
3800
  const renderError = () => error ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { padding: "0.75rem", borderRadius: "0.375rem", backgroundColor: C$1.redBg, color: C$1.red, fontSize: "0.875rem" }, children: error }) : null;
@@ -3671,7 +3898,23 @@ function SignupModal({ open, onOpenChange, onSwitchToLogin, onSignupSuccess, saa
3671
3898
  ] }),
3672
3899
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3673
3900
  /* @__PURE__ */ jsxRuntime.jsx(Label, { children: "Pays" }),
3674
- /* @__PURE__ */ jsxRuntime.jsx(Input, { placeholder: "Sénégal", value: formData.country || "", onChange: (e) => updateFormData({ country: e.target.value }), disabled: regLoading || isPhoneOnly })
3901
+ /* @__PURE__ */ jsxRuntime.jsx(
3902
+ "select",
3903
+ {
3904
+ value: formData.country || DEFAULT_COUNTRY_CODE,
3905
+ onChange: (e) => {
3906
+ const country = getCountryByCode(e.target.value);
3907
+ updateFormData({ country: e.target.value, ccphone: (country == null ? void 0 : country.dialCode) || "+221" });
3908
+ },
3909
+ disabled: regLoading || isPhoneOnly,
3910
+ style: { width: "100%", padding: "0.5rem", borderRadius: "0.375rem", border: "1px solid #d1d5db", backgroundColor: regLoading || isPhoneOnly ? "#f3f4f6" : "white", fontSize: "0.875rem" },
3911
+ children: COUNTRIES.map((c) => /* @__PURE__ */ jsxRuntime.jsxs("option", { value: c.code, children: [
3912
+ c.flag,
3913
+ " ",
3914
+ c.name
3915
+ ] }, c.code))
3916
+ }
3917
+ )
3675
3918
  ] })
3676
3919
  ] }),
3677
3920
  /* @__PURE__ */ jsxRuntime.jsx(StepIndicator, { current: 3 }),
@@ -4101,8 +4344,10 @@ function DebugPanel({ saasApiUrl, iamApiUrl }) {
4101
4344
  ] })
4102
4345
  ] });
4103
4346
  }
4347
+ const ollaidLogo = "data:image/png;base64,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";
4104
4348
  const COLORS = {
4105
4349
  primary: "#002147",
4350
+ primaryForeground: "#ffffff",
4106
4351
  accent: "#e8430a",
4107
4352
  card: "#ffffff",
4108
4353
  cardForeground: "#1a2332",
@@ -4131,13 +4376,49 @@ const LIGHT_VARS = {
4131
4376
  "--input": "40 15% 88%",
4132
4377
  "--ring": "209 100% 13%"
4133
4378
  };
4134
- const ShieldCheckIcon = () => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: COLORS.accent, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4379
+ const ShieldCheckIcon = ({ size = 24, color = COLORS.accent }) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4135
4380
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" }),
4136
4381
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m9 12 2 2 4-4" })
4137
4382
  ] });
4138
4383
  function needsOnboarding(user) {
4139
4384
  return !user.image_url || !user.phone;
4140
4385
  }
4386
+ const GRADIENT_STYLE_ID = "ollaid-sso-gradient-anim";
4387
+ function injectGradientAnimation() {
4388
+ if (document.getElementById(GRADIENT_STYLE_ID)) return;
4389
+ const style = document.createElement("style");
4390
+ style.id = GRADIENT_STYLE_ID;
4391
+ style.textContent = `
4392
+ @keyframes ollaid-border-gradient {
4393
+ 0% { background-position: 0% 50%; }
4394
+ 50% { background-position: 100% 50%; }
4395
+ 100% { background-position: 0% 50%; }
4396
+ }
4397
+ @keyframes ollaid-marquee {
4398
+ 0% { transform: translateX(0); }
4399
+ 100% { transform: translateX(-50%); }
4400
+ }
4401
+ `;
4402
+ document.head.appendChild(style);
4403
+ }
4404
+ const TopBranding = ({ subtitle }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: [
4405
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", gap: "0.5rem", marginBottom: "0.5rem" }, children: [
4406
+ /* @__PURE__ */ jsxRuntime.jsx(ShieldCheckIcon, { size: 28, color: COLORS.accent }),
4407
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "1.25rem", fontWeight: 700, color: COLORS.primaryForeground }, children: [
4408
+ "iam.",
4409
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: COLORS.accent }, children: "ollaid" }),
4410
+ ".com"
4411
+ ] })
4412
+ ] }),
4413
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { fontSize: "1rem", fontWeight: 600, color: "rgba(255,255,255,0.85)" }, children: subtitle })
4414
+ ] });
4415
+ const Footer = ({ hideFooter }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "1.5rem", textAlign: "center" }, children: [
4416
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: ollaidLogo, alt: "Ollaid", style: { height: "28px", margin: "0 auto 0.5rem" } }),
4417
+ !hideFooter && /* @__PURE__ */ jsxRuntime.jsxs("p", { style: { fontSize: "0.75rem", color: "rgba(255,255,255,0.5)" }, children: [
4418
+ "© 2026 iam.ollaid.com propulsé par ",
4419
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 500 }, children: "ollaid" })
4420
+ ] })
4421
+ ] });
4141
4422
  function NativeSSOPage({
4142
4423
  saasApiUrl,
4143
4424
  iamApiUrl,
@@ -4146,7 +4427,7 @@ function NativeSSOPage({
4146
4427
  onOnboardingComplete,
4147
4428
  accountType = "user",
4148
4429
  configPrefix = "iam",
4149
- title = "Un compte, plusieurs accès",
4430
+ title = "Un compte pour toutes vos applications",
4150
4431
  description = "Connectez-vous avec votre compte Ollaid pour accéder à toutes les applications partenaires.",
4151
4432
  logoUrl,
4152
4433
  hideFooter = false,
@@ -4167,6 +4448,7 @@ function NativeSSOPage({
4167
4448
  });
4168
4449
  const { isDebug: resolvedDebug } = useNativeAuth({ saasApiUrl, iamApiUrl, configPrefix, autoLoadCredentials: true });
4169
4450
  react.useEffect(() => {
4451
+ injectGradientAnimation();
4170
4452
  const root = document.documentElement;
4171
4453
  const originalValues = {};
4172
4454
  Object.keys(LIGHT_VARS).forEach((key) => {
@@ -4259,7 +4541,7 @@ function NativeSSOPage({
4259
4541
  flexDirection: "column",
4260
4542
  alignItems: "center",
4261
4543
  justifyContent: "center",
4262
- padding: "1rem"
4544
+ padding: "1.5rem 1rem"
4263
4545
  };
4264
4546
  const cardStyle = {
4265
4547
  width: "100%",
@@ -4270,25 +4552,47 @@ function NativeSSOPage({
4270
4552
  boxShadow: COLORS.shadow,
4271
4553
  overflow: "hidden"
4272
4554
  };
4273
- const footerStyle = {
4274
- marginTop: "1.5rem",
4275
- fontSize: "0.75rem",
4276
- color: "rgba(255,255,255,0.6)",
4277
- textAlign: "center"
4278
- };
4279
- const BrandingHeader = () => /* @__PURE__ */ jsxRuntime.jsx("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", gap: "0.5rem", marginBottom: "0.5rem" }, children: [
4280
- /* @__PURE__ */ jsxRuntime.jsx(ShieldCheckIcon, {}),
4281
- /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "1.125rem", fontWeight: 700, color: COLORS.primary }, children: [
4282
- "iam.",
4283
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: COLORS.accent }, children: "ollaid" }),
4284
- ".com"
4285
- ] })
4555
+ const SliderBadge = () => /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "100%", maxWidth: "28rem", marginBottom: "1.5rem" }, children: logoUrl ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoUrl, alt: "Logo", style: { height: "3rem", margin: "0 auto" } }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "1rem" }, children: [
4556
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
4557
+ width: "3rem",
4558
+ height: "3rem",
4559
+ borderRadius: "50%",
4560
+ backgroundColor: "#ffffff",
4561
+ display: "flex",
4562
+ alignItems: "center",
4563
+ justifyContent: "center",
4564
+ flexShrink: 0,
4565
+ boxShadow: "0 2px 8px rgba(0,0,0,0.15)",
4566
+ border: `1px solid ${COLORS.border}`
4567
+ }, children: /* @__PURE__ */ jsxRuntime.jsx(ShieldCheckIcon, { size: 22, color: COLORS.accent }) }),
4568
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
4569
+ flex: 1,
4570
+ minWidth: 0,
4571
+ position: "relative",
4572
+ borderRadius: "9999px",
4573
+ padding: "2px",
4574
+ background: `linear-gradient(90deg, ${COLORS.primary}, ${COLORS.accent}, ${COLORS.primary})`,
4575
+ backgroundSize: "200% 100%",
4576
+ animation: "ollaid-border-gradient 3s ease infinite"
4577
+ }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
4578
+ backgroundColor: "#ffffff",
4579
+ borderRadius: "9999px",
4580
+ height: "3rem",
4581
+ overflow: "hidden"
4582
+ }, children: /* @__PURE__ */ jsxRuntime.jsx(AppsLogoSlider, { iamApiUrl, speed: "normal" }) }) })
4286
4583
  ] }) });
4287
4584
  if (session) {
4585
+ if (redirectAfterLogin) {
4586
+ window.location.href = redirectAfterLogin;
4587
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: containerStyle, children: [
4588
+ /* @__PURE__ */ jsxRuntime.jsx(TopBranding, { subtitle: title }),
4589
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { color: "rgba(255,255,255,0.7)", fontSize: "0.875rem" }, children: "Redirection en cours..." })
4590
+ ] });
4591
+ }
4288
4592
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: containerStyle, children: [
4289
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "100%", maxWidth: "28rem", marginBottom: "1.5rem" }, children: /* @__PURE__ */ jsxRuntime.jsx(AppsLogoSlider, { iamApiUrl }) }),
4593
+ /* @__PURE__ */ jsxRuntime.jsx(TopBranding, { subtitle: title }),
4594
+ /* @__PURE__ */ jsxRuntime.jsx(SliderBadge, {}),
4290
4595
  /* @__PURE__ */ jsxRuntime.jsx("div", { style: cardStyle, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { padding: "2rem 1.5rem 1.5rem" }, children: [
4291
- /* @__PURE__ */ jsxRuntime.jsx(BrandingHeader, {}),
4292
4596
  /* @__PURE__ */ jsxRuntime.jsxs("h2", { style: { fontSize: "1.25rem", fontWeight: 600, textAlign: "center", color: COLORS.cardForeground }, children: [
4293
4597
  "Bienvenue, ",
4294
4598
  session.user.name
@@ -4296,20 +4600,13 @@ function NativeSSOPage({
4296
4600
  /* @__PURE__ */ jsxRuntime.jsx("p", { style: { fontSize: "0.875rem", color: COLORS.muted, textAlign: "center", marginTop: "0.25rem" }, children: "Vous êtes connecté à votre compte Ollaid SSO" }),
4297
4601
  /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginTop: "1.5rem" }, children: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", onClick: handleLogout, style: { width: "100%" }, children: "Déconnexion" }) })
4298
4602
  ] }) }),
4299
- !hideFooter && /* @__PURE__ */ jsxRuntime.jsxs("p", { style: footerStyle, children: [
4300
- "Géré par",
4301
- " ",
4302
- /* @__PURE__ */ jsxRuntime.jsx("a", { href: "https://iam.ollaid.com", target: "_blank", rel: "noopener noreferrer", style: { color: COLORS.accent, textDecoration: "none" }, children: "iam.ollaid.com" }),
4303
- " ",
4304
- "— Identity Access Manager"
4305
- ] })
4603
+ /* @__PURE__ */ jsxRuntime.jsx(Footer, { hideFooter })
4306
4604
  ] });
4307
4605
  }
4308
4606
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: containerStyle, children: [
4309
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "100%", maxWidth: "28rem", marginBottom: "1.5rem" }, children: logoUrl ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoUrl, alt: "Logo", style: { height: "3rem", margin: "0 auto" } }) : /* @__PURE__ */ jsxRuntime.jsx(AppsLogoSlider, { iamApiUrl }) }),
4607
+ /* @__PURE__ */ jsxRuntime.jsx(TopBranding, { subtitle: title }),
4608
+ /* @__PURE__ */ jsxRuntime.jsx(SliderBadge, {}),
4310
4609
  /* @__PURE__ */ jsxRuntime.jsx("div", { style: cardStyle, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { padding: "2rem 1.5rem 1.5rem" }, children: [
4311
- /* @__PURE__ */ jsxRuntime.jsx(BrandingHeader, {}),
4312
- /* @__PURE__ */ jsxRuntime.jsx("h2", { style: { fontSize: "1.25rem", fontWeight: 600, textAlign: "center", color: COLORS.cardForeground, marginBottom: "0.5rem" }, children: title }),
4313
4610
  /* @__PURE__ */ jsxRuntime.jsx("p", { style: { fontSize: "0.875rem", color: COLORS.muted, textAlign: "center", marginBottom: "1.5rem" }, children: description }),
4314
4611
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.75rem" }, children: [
4315
4612
  /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: openLogin, style: { width: "100%", height: "2.75rem" }, children: "Connexion" }),
@@ -4318,24 +4615,13 @@ function NativeSSOPage({
4318
4615
  {
4319
4616
  variant: "outline",
4320
4617
  onClick: openSignup,
4321
- style: {
4322
- width: "100%",
4323
- height: "2.75rem",
4324
- borderColor: COLORS.cardForeground,
4325
- color: COLORS.cardForeground
4326
- },
4618
+ style: { width: "100%", height: "2.75rem", borderColor: COLORS.cardForeground, color: COLORS.cardForeground },
4327
4619
  children: "Inscription"
4328
4620
  }
4329
4621
  )
4330
4622
  ] })
4331
4623
  ] }) }),
4332
- !hideFooter && /* @__PURE__ */ jsxRuntime.jsxs("p", { style: footerStyle, children: [
4333
- "Géré par",
4334
- " ",
4335
- /* @__PURE__ */ jsxRuntime.jsx("a", { href: "https://iam.ollaid.com", target: "_blank", rel: "noopener noreferrer", style: { color: COLORS.accent, textDecoration: "none" }, children: "iam.ollaid.com" }),
4336
- " ",
4337
- "— Identity Access Manager"
4338
- ] }),
4624
+ /* @__PURE__ */ jsxRuntime.jsx(Footer, { hideFooter }),
4339
4625
  /* @__PURE__ */ jsxRuntime.jsx(
4340
4626
  LoginModal,
4341
4627
  {
@@ -4546,6 +4832,9 @@ const iamAccountService = {
4546
4832
  };
4547
4833
  exports.ApiError = ApiError;
4548
4834
  exports.AppsLogoSlider = AppsLogoSlider;
4835
+ exports.COUNTRIES = COUNTRIES;
4836
+ exports.DEFAULT_COUNTRY_CODE = DEFAULT_COUNTRY_CODE;
4837
+ exports.DEFAULT_DIAL_CODE = DEFAULT_DIAL_CODE;
4549
4838
  exports.LoginModal = LoginModal;
4550
4839
  exports.NativeSSOPage = NativeSSOPage;
4551
4840
  exports.NativeSSOProvider = NativeSSOProvider;
@@ -4554,13 +4843,18 @@ exports.OnboardingModal = OnboardingModal;
4554
4843
  exports.PasswordRecoveryModal = PasswordRecoveryModal;
4555
4844
  exports.PhoneInput = PhoneInput;
4556
4845
  exports.SignupModal = SignupModal;
4846
+ exports.clearAuthToken = clearAuthToken;
4557
4847
  exports.getAccountType = getAccountType;
4558
4848
  exports.getAuthToken = getAuthToken;
4559
4849
  exports.getAuthUser = getAuthUser;
4850
+ exports.getCountryByCode = getCountryByCode;
4851
+ exports.getCountryByDialCode = getCountryByDialCode;
4852
+ exports.getDefaultCountry = getDefaultCountry;
4560
4853
  exports.getNativeAuthConfig = getNativeAuthConfig;
4561
4854
  exports.iamAccountService = iamAccountService;
4562
4855
  exports.mobilePasswordService = mobilePasswordService;
4563
4856
  exports.nativeAuthService = nativeAuthService;
4857
+ exports.searchCountries = searchCountries;
4564
4858
  exports.setNativeAuthConfig = setNativeAuthConfig;
4565
4859
  exports.useMobilePassword = useMobilePassword;
4566
4860
  exports.useMobileRegistration = useMobileRegistration;