> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# DingTalk Help Center — Guides, FAQs & Product Docs

> Guides, FAQs and step-by-step tutorials for DingTalk Chats, Calendar, Meetings, Mail, Docs, Drive, AI Table, AI Minutes and Developer APIs.

export const Home = ({t, cats, arts, hot, lang = "en"}) => {
  const buildStructuredData = l => {
    const lp = l === "en" ? "/" : "/" + l + "/";
    const inLang = ({
      en: "en-US",
      zh: "zh-CN",
      ja: "ja-JP",
      id: "id-ID"
    })[l] || "en-US";
    const altName = ({
      en: "DingTalk Help Center",
      zh: "钉钉帮助中心",
      ja: "DingTalk ヘルプセンター",
      id: "Pusat Bantuan DingTalk"
    })[l];
    const siteUrl = "https://help.dingtalk.io" + lp;
    const logo = "https://img.alicdn.com/imgextra/i2/O1CN01YT67eU1F0F4n6LlTN_!!6000000000424-2-tps-1024-1024.png";
    return {
      "@context": "https://schema.org",
      "@graph": [{
        "@type": "Organization",
        "@id": "https://help.dingtalk.io/#org",
        "name": "DingTalk",
        "url": "https://www.dingtalk.io/",
        "logo": logo,
        "sameAs": ["https://www.dingtalk.io/", "https://www.dingtalk.com/", "https://www.dingtalk.co.jp/"]
      }, {
        "@type": "WebSite",
        "@id": "https://help.dingtalk.io/#website",
        "url": siteUrl,
        "name": altName,
        "inLanguage": inLang,
        "publisher": {
          "@id": "https://help.dingtalk.io/#org"
        },
        "potentialAction": {
          "@type": "SearchAction",
          "target": {
            "@type": "EntryPoint",
            "urlTemplate": siteUrl + "?q={search_term_string}"
          },
          "query-input": "required name=search_term_string"
        }
      }]
    };
  };
  const I = {
    im: 'M2.98122001,16.3249C2.32707,14.96303,2,13.521399,2,12C2,9.2385702,2.9763100099999997,6.8815498,4.9289401,4.928929800000001C6.8815603,2.9763097800000002,9.2385798,1.99999976158142,12,1.99999976158142C14.7614,1.99999976158142,17.11843,2.9763097800000002,19.0711,4.928929800000001C21.023701,6.8815498,22,9.2385697,22,12C22,14.7614,21.023701,17.11843,19.0711,19.0711C17.11843,21.023701,14.7614,22,12,22C10.6440201,22,9.3464603,21.73793,8.107319799999999,21.2138C7.8636699,21.110731,7.6244998,20.998131,7.3898096,20.876001L3.7028996999999997,21.692902C3.2490497,21.793501,2.8601197000000003,21.677101,2.53612971,21.343702C2.21213973,21.010372,2.10685971,20.618301,2.22028971,20.167501L3.1181897000000003,16.599102000000002C3.0711697,16.508432,3.0255096999999997,16.417032,2.98122001,16.3249ZM4.6426699,16.6876L3.7737498,20.1408L7.3311501,19.352701L7.33776,19.351202C7.3909898,19.339401,7.4453402,19.333403,7.4998598,19.333403C7.6277699,19.333403,7.7535496,19.366102,7.8659797,19.428904C8.1341696,19.578434,8.4093995,19.712904,8.691659900000001,19.832304C9.74403,20.277433,10.8468094,20.500004,12,20.500004C14.3472,20.500004,16.35067,19.670134,18.010399,18.010405C19.670128,16.350675000000003,20.499998,14.347204,20.499998,12.000005C20.499998,9.652794799999999,19.670128,7.6493249,18.010399,5.9895949C16.350669,4.329865,14.347198,3.500005,11.999999,3.500005C9.6527891,3.500005,7.6493192,4.329865,5.9895892,5.9895949C4.3298593,7.6493249,3.4999993,9.652794799999999,3.4999993,12.000005C3.4999993,13.293674,3.7777493,14.518775,4.3332593,15.675304C4.4080894,15.831035,4.487489200000001,15.984175,4.5714693,16.134705C4.6337893,16.246405,4.6664994,16.372205,4.6664994,16.500104999999998C4.6664994,16.561705,4.6588893,16.623205,4.643849400000001,16.683005L4.6426699,16.6876ZM7,12.25C7,11.4215698,7.6715698,10.75,8.5,10.75C9.3284302,10.75,10,11.4215698,10,12.25C10,13.0784,9.3284302,13.75,8.5,13.75C7.6715698,13.75,7,13.0784,7,12.25ZM14,12.25C14,11.4215698,14.6716,10.75,15.5,10.75C16.328400000000002,10.75,17,11.4215698,17,12.25C17,13.0784,16.328400000000002,13.75,15.5,13.75C14.6716,13.75,14,13.0784,14,12.25Z',
    cal: 'M8.25,2C8.25,1.58579001,8.5857902,1.25,9,1.25C9.4142098,1.25,9.75,1.58579001,9.75,2L9.75,3.2509799L14.25,3.2509799L14.25,1.9999998799999998C14.25,1.58578989,14.5858,1.24999988079071,15,1.24999988079071C15.4142,1.24999988079071,15.75,1.58578989,15.75,1.9999998799999998L15.75,3.2509799L18,3.2509799C19.03553,3.2509799,19.91943,3.6171,20.651699,4.3493299C21.3839,5.0815599,21.75,5.9654398,21.75,7.0009799L21.75,18.000999C21.75,19.03653,21.3839,19.920399,20.651699,20.652599C19.91943,21.384869,19.035528,21.750999,17.999999000000003,21.750999L5.999999,21.750999C4.964468999999999,21.750999,4.080579,21.384869,3.3483491,20.652599C2.6161190899999998,19.920399,2.24999904632568,19.03653,2.24999904632568,18.000999L2.24999904632568,7.0009794C2.24999904632568,5.9654493,2.61611906,5.0815594,3.3483491,4.3493295C4.080579,3.6170995,4.964468999999999,3.2509794,5.999999,3.2509794L8.249998999999999,3.2509794L8.25,2ZM20.25,8.75L20.25,7.0009799C20.25,6.3796597,20.030331,5.8493299,19.591,5.4099898C19.15167,4.9706497,18.62133,4.7509799,18,4.7509799L6,4.7509799C5.37868,4.7509799,4.84835,4.97065,4.4090099,5.4099898C3.9696699,5.8493299,3.75,6.3796597,3.75,7.0009799L3.75,8.75L20.25,8.75ZM6,20.250999L18,20.250999C18.62133,20.250999,19.15167,20.03133,19.591,19.591999C20.030329,19.15267,20.25,18.62233,20.25,18.000999L20.25,10.25L3.75,10.25L3.75,18.000999C3.75,18.62233,3.9696701,19.15267,4.4090099,19.591999C4.84835,20.031328,5.37868,20.250999,6,20.250999ZM15,16.5C15,15.6716,15.6716,15,16.5,15C17.328400000000002,15,18,15.6716,18,16.5C18,17.3284,17.328400000000002,18,16.5,18C15.6716,18,15,17.3284,15,16.5Z',
    av: 'M20.7775,5.69686C20.976435,5.5559299,21.196186,5.4794899,21.43675,5.4675449C21.66095,5.4564099,21.873415,5.5027498999999995,22.07415,5.6065649C22.274916,5.7103798,22.435551,5.8569748,22.556049,6.0463499C22.685349,6.2495598999999995,22.75,6.4730749,22.75,6.7168949L22.75,17.283099999999997C22.75,17.526936,22.68535,17.75045,22.556049,17.95365C22.435549,18.143016,22.274914,18.289616000000002,22.07415,18.393451C21.873415,18.497251,21.66095,18.543585999999998,21.43675,18.532451000000002C21.196186,18.520515,20.976435,18.444086,20.7775,18.303151L16.59385,15.339751C16.520785,15.644986,16.422114999999998,15.944536,16.29785,16.238401C16.006815,16.926401,15.596149,17.535550999999998,15.065849,18.065851000000002C14.535549,18.596151,13.926399,19.006816,13.2384,19.297852C12.5257,19.599287,11.779565,19.750002000000002,11,19.750002000000002L4,19.750002000000002C3.24061,19.750002000000002,2.5924300000000002,19.481517,2.05545497,18.944551C1.51848495,18.407586000000002,1.249999940395355,17.759401,1.249999940395355,17.000002000000002L1.249999940395355,7.0000019C1.249999940395355,6.2406119,1.51848495,5.5924319,2.05545497,5.05545688C2.5924300000000002,4.51848686,3.24061,4.250001847744,4,4.250001847744L11,4.250001847744C11.779565,4.250001847744,12.5257,4.40072685,13.2384,4.70217186C13.926399,4.99317682,14.535549,5.4038318,15.065849,5.9341369C15.596149,6.4644417999999995,16.006814,7.0736017,16.29785,7.7616119C16.422114,8.0554869,16.520784,8.3550367,16.593849,8.6602721L20.7775,5.69686ZM15.388,10.4334998C15.2982,10.3067999,15.25,10.1552997,15.25,10C15.25,8.826395,14.835065,7.8246601,14.0052,6.9947951C13.175335,6.1649301,12.1736,5.7500001,11,5.7500001L4,5.7500001C3.654825,5.7500001,3.3601949,5.8720402,3.1161149999999997,6.1161151C2.87204,6.3601952,2.75,6.654825199999999,2.75,7L2.75,17C2.75,17.345165,2.87204,17.6398,3.1161149999999997,17.8839C3.3601949,18.127965,3.654825,18.25,4,18.25L11,18.25C12.1736,18.25,13.175335,17.835065,14.005199,17.005200000000002C14.835064,16.175335,15.249999,15.1736,15.249999,14C15.249999,13.5858002,15.585799,13.25,15.999999,13.25C16.155299,13.25,16.306798999999998,13.2981997,16.433498999999998,13.3879995L21.25,16.799649000000002L21.25,7.2003392999999996L16.433500000000002,10.6119995C16.0955,10.851449500000001,15.6274,10.7714996,15.388,10.4334998Z',
    contact: 'M2.25,5.5L2.25,18.5Q2.25,19.846195,3.20190287,20.798098Q4.1538043,21.75,5.5000005000000005,21.75L18.500002,21.75Q19.846197,21.750002,20.7981,20.798098Q21.750004,19.846195,21.750002,18.5L21.750002,5.5Q21.75,4.1538048,20.7981,3.20190334Q19.846195,2.25,18.500002,2.25L5.5,2.25Q4.153806,2.25,3.20190287,3.20190334Q2.25,4.1538056999999995,2.25,5.5ZM4.262563,19.737436Q3.75,19.224873,3.75,18.5L3.75,5.5Q3.75,3.75,5.5,3.75L18.500002,3.75Q20.25,3.75,20.250002,5.5L20.250002,18.5Q20.250002,20.249998,18.500002,20.25L5.5000005000000005,20.25Q4.7751265,20.25,4.262563,19.737436ZM16,9.75C16,11.9591389,14.209139,13.75,12,13.75C9.7908611,13.75,8,11.9591389,8,9.75C8,7.5408611,9.7908611,5.75,12,5.75C14.209139,5.75,16,7.5408611,16,9.75ZM14.5,9.75C14.5,8.369288000000001,13.380713,7.25,12,7.25C10.6192875,7.25,9.5,8.369288000000001,9.5,9.75C9.5,11.1307125,10.6192875,12.25,12,12.25C13.380713,12.25,14.5,11.1307125,14.5,9.75ZM9.5140142,15.245337Q8.366919,15.723429,7.4751682,16.596971C7.3311367,16.738087999999998,7.25,16.931173,7.25,17.132742999999998C7.25,17.546957,7.5857863,17.882742999999998,8,17.882742999999998C8.1962595,17.882742999999998,8.384699300000001,17.805813999999998,8.525157,17.668197Q9.210346699999999,16.996969,10.0910759,16.629894999999998Q11.0025673,16.25,11.9998436,16.25Q12.997221,16.25,13.908789,16.62997Q14.789621,16.997128,15.475077,17.668732C15.615267,17.806106,15.803722,17.883049,16,17.883049C16.414213,17.883049,16.75,17.547263,16.75,17.133049C16.75,16.931499000000002,16.668879,16.738432,16.524452,16.596906Q15.633087,15.723615,14.485905,15.245435Q13.297329,14.75,11.9998436,14.75Q10.7024889,14.75,9.5140142,15.245337Z',
    mail: 'M2,17L2,7Q2,5.653806,2.95190287,4.70190287Q3.9038060000000003,3.75,5.25,3.75L18.75,3.75Q20.096195,3.75,21.048098,4.70190287Q21.999996,5.653805,21.999998,7L21.999998,17Q22,18.346193,21.048098,19.298096Q20.096195,20.249998,18.75,20.249998L5.25,20.249998Q3.9038060000000003,20.249998,2.9519031,19.298096Q2,18.346193,2,17ZM3.5,17Q3.5,17.724873000000002,4.012563200000001,18.237436000000002Q4.5251262,18.749999000000003,5.25,18.749999000000003L18.75,18.749999000000003Q19.474874,18.749999000000003,19.987436,18.237436000000002Q20.5,17.724873000000002,20.5,17L20.5,7Q20.5,6.2751262,19.987436,5.762563200000001Q19.474874,5.25,18.75,5.25L5.25,5.25Q4.5251262,5.25,4.012563200000001,5.762563200000001Q3.5,6.275126,3.5,7L3.5,17ZM6.9411287,7.8934479L11.2647858,11.037925699999999Q11.5935202,11.2770057,12,11.2770057Q12.40648,11.2770057,12.735214,11.037925699999999L17.05887,7.8934479C17.187061,7.8002186,17.341493,7.75,17.5,7.75C17.914213,7.75,18.25,8.085786299999999,18.25,8.5C18.25,8.739952599999999,18.135187,8.9654188,17.940981999999998,9.1066589L13.617472,12.25103Q12.894256,12.7770061,12,12.7770061Q11.1057434,12.7770061,10.3825274,12.25103L6.0588713,9.1065521C5.8648131,8.9654188,5.75,8.739952599999999,5.75,8.5C5.75,8.085786299999999,6.0857863,7.75,6.5,7.75C6.6585069,7.75,6.8129387,7.8002186,6.9411287,7.8934479Z',
    table: 'M12.7781046875,3.21436978061676L12.7786046875,5.21427978061676L14.0688046875,4.46669968061676C15.7235346875,3.5078397806167603,17.3785346875,3.50739968061676,19.0338056875,4.46538958061676L20.0519066875,5.05460968061676C21.2338366875,5.73869958061676,21.8248066875,6.763579480616761,21.8248066875,8.12925968061676L21.8248066875,15.08023978061676C21.8248066875,15.79530978061676,21.5162756875,16.333509780616758,20.8992056875,16.69483978061676C20.2820756875,17.05616978061676,19.6617066875,17.061839780616758,19.0381066875,16.71183978061676L17.2517066875,15.70914078061676L17.2698066875,17.13544078061676C17.2943376875,19.06983978061676,16.4690066875,20.52074078061676,14.7938066875,21.48814078061676L13.5634066875,22.19864178061676C12.5403366875,22.78944078061676,11.5164765875,22.79081178061676,10.4918174875,22.202741780616762L4.1576475875,18.56724178061676C3.5479175874999997,18.21731278061676,3.2348775874999998,17.69091278061676,3.2185175875,16.98804278061676C3.2021674874999997,16.285242780616763,3.4903775875000003,15.74484178061676,4.0831675875,15.36684278061676L5.7944373875,14.27584278061676L4.6526674875000005,13.61704278061676C3.0007575775,12.66377278061676,2.1748075485229,11.23356308061676,2.1748075485229,9.32639368061676L2.1748075485229,8.24576388061676C2.1748075485229,6.801533780616761,2.8007575275,5.71936378061676,4.0526475875,4.99925388061676L9.974257487500001,1.5930339106167604C10.5978278875,1.2343439166167602,11.2209977875,1.2350538966167603,11.8437471875,1.5951639106167603C12.4665176875,1.9552739306167601,12.7779766875,2.4950139806167604,12.7781046875,3.21436978061676ZM7.4743446875,8.28789958061676L11.2788648875,6.08333938061676L11.2781447875,3.21474918061676C11.2781152875,3.07210918061676,11.2163543875,2.9650891806167605,11.0928649875,2.8936892806167602C10.9693851875,2.8222793806167603,10.8458251875,2.82213928061676,10.7221746875,2.8932592806167605L5.5061244875,5.89362918061676C5.515114587499999,6.74223908061676,5.9138943875,7.39272938061676,6.7024645875,7.845099080616761L7.4743446875,8.28789958061676ZM16.041304687500002,8.58284958061676L16.0603046875,8.57216938061676L17.8639046875,7.58828938061676C18.5963746875,7.18873938061676,19.3345046875,7.029369480616761,20.0783046875,7.110169480616761C19.9076346875,6.806639280616761,19.6483746875,6.55419938061676,19.3005046875,6.3528595806167605L18.2824036875,5.76363958061676C17.1284036875,5.09572948061676,15.9745336875,5.0960396806167605,14.8208036875,5.76454938061676L12.4050036875,7.164419280616761L8.971483187499999,9.153999480616761L12.0265035875,10.92628918061676L16.041304687500002,8.58284958061676ZM7.1030244875,9.80417978061676L5.9560644875,9.14620988061676C4.9680244875,8.57939968061676,4.3548545875,7.82205978061676,4.1165544875,6.874189980616761C3.8220544875,7.246200180616761,3.6748044875000003,7.70338978061676,3.6748044875000003,8.24576008061676L3.6748044875000003,9.32638988061676C3.6748044875000003,10.65607988061676,4.2506544875,11.65318978061676,5.4023544875,12.31773978061676L7.6145143875,13.59423978061676L11.2776546875,15.70803978061676L11.2776546875,12.22603978061676L7.1030244875,9.80417978061676ZM17.1751046875,9.67269958061676L17.2297046875,13.976639780616761L19.7723046875,15.40373978061676C19.8959746875,15.47313978061676,20.0189746875,15.47200978061676,20.1413036875,15.40033978061676C20.2636336875,15.328739780616761,20.3248046875,15.222039780616761,20.3248046875,15.08023978061676L20.3248046875,8.69009988061676C19.7382736875,8.51970968061676,19.1574036875,8.59137978061676,18.5822046875,8.90511998061676L17.1751046875,9.67269958061676ZM12.7777046875,17.006739780616762L12.7777046875,18.81073978061676C12.7777046875,19.66720978061676,12.5733446875,20.437040780616762,12.1646241875,21.12023978061676C12.3809446875,21.09803978061676,12.5971746875,21.02450978061676,12.8133036875,20.89963978061676L14.0437036875,20.18913878061676C15.2116336875,19.51466778061676,15.7870336875,18.50313778061676,15.7699036875,17.15453878061676L15.7353036875,14.42843878061676L15.6858036875,10.527198480616761L12.7777036875,12.224638780616761L12.7777046875,17.006739780616762ZM11.2776546875,17.43983878061676L7.2590546875,15.121038780616761L4.8895547875,16.63173878061676C4.7720145875,16.70666978061676,4.7148646875,16.81380878061676,4.7181148875000005,16.95313878061676C4.7213549875,17.092468780616763,4.7834248875,17.19683878061676,4.9043247875,17.26623878061676L10.7086648875,20.59763778061676C11.0879945875,20.08243778061676,11.2776651875,19.48680778061676,11.2776651875,18.810737780616762L11.2776546875,17.43983878061676Z',
    doc: 'M19.302631,8.4468479L19.302631,11.0263157C19.302631,11.4405289,19.638418,11.7763157,20.052631,11.7763157C20.466845,11.7763157,20.802631,11.4405289,20.802631,11.0263157L20.802631,8.4468479Q20.802631,7.3077612,19.997175,6.5023046L16.300325,2.80545616Q15.49487,2,14.355783,2L6.000000200000001,2Q4.6538056999999995,2,3.70190287,2.95190334Q2.75,3.9038067,2.75,5.25L2.75,18.75Q2.75,20.096195,3.70190334,21.048098Q4.6538048,22,6.0000005000000005,22L7.8815794,22C8.2957926,22,8.6315794,21.664213,8.6315794,21.25C8.6315794,20.835787,8.2957926,20.5,7.8815794,20.5L6.0000005000000005,20.5Q5.2751265,20.5,4.762563699999999,19.987436Q4.25,19.474873,4.25,18.75L4.25,5.25Q4.25,4.5251265,4.762563200000001,4.012563699999999Q5.2751265,3.5,6.000000200000001,3.5L14.355783,3.5Q14.87355,3.5,15.239666,3.8661165L18.936516,7.5629649Q19.302631,7.9290819,19.302631,8.4468479ZM14.302631,6.25L7,6.25C6.5857863000000005,6.25,6.25,6.5857863,6.25,7C6.25,7.4142137,6.5857863000000005,7.75,7,7.75L14.302631,7.75C14.716845,7.75,15.052631,7.4142137,15.052631,7C15.052631,6.5857863,14.716845,6.25,14.302631,6.25ZM14.302631,9.25L7,9.25C6.5857863000000005,9.25,6.25,9.585786299999999,6.25,10C6.25,10.4142132,6.5857863000000005,10.75,7,10.75L14.302631,10.75C14.716845,10.75,15.052631,10.4142132,15.052631,10C15.052631,9.585786299999999,14.716845,9.25,14.302631,9.25ZM18.591538999999997,22.223763L14.209961,22.223763C11.521307,22.223516,9.3417969,20.043892,9.3417969,17.355238C9.3417969,14.666483,11.5214634,12.486816,14.210218,12.486816C16.146430000000002,12.486816,17.898599,13.634178,18.672662000000003,15.40893C20.522638,15.453005,21.999382,16.965351,21.999382,18.815853C21.999382,20.697964,20.47365,22.223724,18.591538999999997,22.223763ZM15.709961,20.723763L18.591538999999997,20.723763Q19.381792,20.723736,19.940582,20.164934Q20.499382,19.606123,20.499382,18.815853Q20.499382,18.038858,19.956547,17.482934Q19.413708,16.92701,18.636935,16.908504L17.680301,16.885713000000003L17.297747,16.008602Q16.896072,15.087651,16.055512,14.537233Q15.214954,13.986816,14.210218,13.986816Q12.814972,13.986816,11.8283844,14.973404Q10.8417969,15.959991,10.8417969,17.355238Q10.8417969,18.750431,11.8283215,19.737009Q12.814846,20.723585,14.21004,20.72366L15.709961,20.723763Z',
    notes: 'M12.75,2.5C12.75,2.9142099999999997,12.4142103,3.25,12,3.25C11.003910099999999,3.25,10.17132,3.5573699000000003,9.5022097,4.172110099999999C8.8340697,4.7859602,8.499999500000001,5.561920199999999,8.499999500000001,6.5L8.499999500000001,11.25C8.499999500000001,12.21647,8.8417096,13.04143,9.5251293,13.7249C10.2085495,14.4083,11.0335093,14.75,11.999999,14.75C12.8548193,14.75,13.6079187,14.47443,14.259299,13.9233C14.903569,13.378099,15.299069,12.69293,15.445799,11.8678C15.509398,11.5098801,15.820599,11.2491398,16.184198000000002,11.2491398C16.598398,11.2491398,16.934198000000002,11.5849199,16.934198000000002,11.9991C16.934198000000002,12.0432,16.930298999999998,12.0871,16.922598999999998,12.1305L16.922399,12.1315C16.712329,13.31137,16.147598000000002,14.2903,15.228199,15.0683C14.297199,15.8561,13.2211285,16.25,11.999999,16.25C10.6192889,16.25,9.4407787,15.76183,8.464469000000001,14.7855C7.4881589,13.80917,6.999999,12.63067,6.999999,11.25L6.999999,6.5C6.999999,5.12269,7.4957891,3.9785299,8.4873791,3.0675198999999997C9.4432693,2.1893099,10.6139288,1.75012993813,11.9993591,1.74999988079071C12.4142094,1.74999988079071,12.749999,2.08578989,12.75,2.5ZM18.8172,11.5602999L17.9944,9.75L13.50564,9.75L12.6827698,11.5602999C12.5610695,11.828,12.2941093,11.9999,12,11.9999C11.5857902,11.9999,11.25,11.6641598,11.25,11.2499495C11.25,11.142889,11.2729201,11.0370598,11.317220200000001,10.939599L15.0672,2.6895895C15.1423,2.52450949,15.2746,2.39219952,15.4397,2.31716949C15.8167,2.1457694800000002,16.261400000000002,2.31250948,16.4328,2.6895895L20.1824,10.9388599C20.2271,11.0370598,20.25,11.14289,20.25,11.2499504C20.25,11.6641607,19.9142,11.999901,19.5,11.999901C19.2059,11.999901,18.9389,11.828001,18.8172,11.5602999ZM14.1875,8.25L17.3126,8.25L15.75,4.8124001L14.1875,8.25ZM5.25,11.5C5.25,13.36393,5.9090099,14.95493,7.22703,16.273C8.545050100000001,17.591,10.136039700000001,18.25,12,18.25C13.27493,18.25,14.4522,17.91783,15.5318,17.253500000000003C16.58247,16.60703,17.39573,15.73923,17.971601,14.6501C18.101501,14.4043,18.356701,14.2506,18.634601,14.2506C19.0488,14.2506,19.384601,14.5864,19.384601,15.0006C19.384601,15.1228,19.354799999999997,15.2432,19.2972,15.352099C18.593801,16.682099,17.6007,17.74173,16.3179,18.531C15.21183,19.211599,14.02253,19.607201,12.75,19.7178L12.75,22C12.75,22.4142,12.4142103,22.75,12,22.75C11.5857902,22.75,11.25,22.4142,11.25,22L11.25,19.7199C9.292110000000001,19.56023,7.5975699,18.764801,6.166369899999999,17.3336C4.55545986,15.72273,3.75,13.7782,3.75,11.5C3.75,11.0857897,4.08579001,10.75,4.5,10.75C4.91421,10.75,5.25,11.0857897,5.25,11.5Z',
    drive: 'M18.740967,7.0813131Q19.22888,8.313756,19.249125,9.635412200000001Q20.716375,10.345158099999999,21.657091,11.7191525Q22.75,13.315435,22.75,15.25Q22.750002,16.442152999999998,22.311178,17.550592Q21.834707,18.754128,20.919418,19.669416Q20.004122,20.584713,18.800592,21.061178Q17.692152,21.5,16.5,21.5Q16.349566,21.5,16.199361,21.492765Q16.099853,21.5,16,21.5L8,21.5Q7.9001465,21.5,7.8006482,21.492765Q7.6504335,21.5,7.5,21.5Q6.3078475,21.5,5.199408099999999,21.061178Q3.9958744,20.584709,3.0805826,19.669416Q2.16528988,18.754124,1.68882322,17.550592Q1.25,16.442148,1.25,15.25Q1.25,13.315431,2.3429065,11.7191525Q3.2836237,10.345158600000001,4.7508762,9.6354127Q4.7711198,8.313758400000001,5.2590342,7.0813131Q5.811738,5.6852131,6.8734756,4.623476Q7.9352136,3.561738,9.3313141,3.00903511Q10.6171093,2.5,12,2.5Q13.38289,2.5,14.668686,3.00903511Q16.064788,3.561739,17.126524,4.623476Q18.188263,5.6852160000000005,18.740967,7.0813131ZM17.740557,10.0794044Q17.75,9.914843099999999,17.75,9.75Q17.75,8.653223,17.346283,7.6334553Q16.907936,6.526207,16.065865000000002,5.684135400000001Q15.223799,4.8420696,14.116545,4.403717Q13.096775,4,12,4Q10.9032249,4,9.8834553,4.403717Q8.776204100000001,4.842067699999999,7.9341359,5.684135400000001Q7.0920677,6.5262036,6.653717,7.6334553Q6.25,8.653223,6.25,9.75Q6.25,9.9148383,6.2594433,10.079406299999999C6.2780795,10.4041767,6.0852265,10.7039337,5.7819462,10.8215942Q4.4112189,11.3533831,3.5806088,12.566557Q2.75,13.779728,2.75,15.25Q2.75,16.156034,3.0835056,16.998451Q3.445621,17.913136,4.141242999999999,18.608757Q4.8368635,19.304377,5.7515502,19.666494Q6.593967,20,7.5,20Q7.6348324,20,7.7694507,19.992352C7.8071308,19.990211,7.8449192,19.990917,7.882493,19.994465Q7.9411173,20,8,20L16,20Q16.058883,20,16.117507,19.994465C16.155081,19.990917,16.192869,19.990211,16.230549,19.992352Q16.365168,20,16.5,20Q17.406033,20,18.248449,19.666494Q19.163136,19.304379,19.858757,18.608757Q20.554379,17.913137,20.916494,16.998451Q21.25,16.156034,21.25,15.25Q21.250002,13.77973,20.41939,12.566557Q19.588778,11.3533831,18.218054,10.8215942C17.914772,10.7039337,17.72192,10.4041758,17.740557,10.0794044ZM9.3650627,14.306324Q10.5997419,15.000014,11.999992,15.000014Q13.39887,15.000014,14.63299,14.307408C14.745103,14.244476,14.871517,14.211423,15.000094,14.211423C15.414309,14.211423,15.750094,14.54721,15.750094,14.961423C15.750094,15.232621,15.603688,15.482694,15.367048,15.615521L15.3664,15.615886Q13.790827,16.500014,11.999992,16.500014Q10.2068157,16.500014,8.629632,15.613666C8.393329600000001,15.480867,8.2470703,15.2309,8.2470703,14.959839C8.2470703,14.545626,8.5828567,14.209839,8.9970703,14.209839C9.125772999999999,14.209839,9.2523098,14.242959,9.3645086,14.306012L9.3650627,14.306324Z',
    dev: 'M16.75,6.5C16.75,6.6731317,16.809898,6.8409319,16.919532,6.9749284L21.030954,12L16.919926,17.02459C16.809898,17.159069000000002,16.75,17.326867999999997,16.75,17.5C16.75,17.914213,17.085787,18.25,17.5,18.25C17.724951,18.25,17.938021,18.14903,18.080467,17.974928L22.580467,12.4749279C22.806511,12.1986542,22.806511,11.8013458,22.580467,11.5250711L18.080467,6.0250716C17.938021,5.85097,17.724949,5.75,17.5,5.75C17.085787,5.75,16.75,6.0857863000000005,16.75,6.5ZM14.5,3.5C14.5,3.55080509,14.494838,3.60147858,14.484592,3.65123987L10.9846725,20.65085C10.9128208,20.999847,10.6059189,21.25,10.25,21.25C9.8357868,21.25,9.5,20.914213,9.5,20.5C9.5,20.449196,9.5051622,20.398521,9.5154076,20.348759L13.015408,3.34876037C13.087179,3.0001533,13.394081,2.75,13.75,2.75C14.164213,2.75,14.5,3.08578634,14.5,3.5ZM7.25,6.5C7.25,6.6731317,7.1901016,6.8409319,7.0804682,6.9749284L2.9690456000000003,12L7.0800743,17.02459C7.1901016,17.159069000000002,7.25,17.326867999999997,7.25,17.5C7.25,17.914213,6.9142132,18.25,6.5,18.25C6.2750502,18.25,6.0619783,18.14903,5.9195318,17.974928L1.41953182,12.4749279C1.193489075,12.1986542,1.193489075,11.8013458,1.41953182,11.5250711L5.9195318,6.0250716C6.0619793,5.85097,6.2750502,5.75,6.5,5.75C6.9142132,5.75,7.25,6.0857863000000005,6.5,6.5Z'
  };
  const openSearchWithQuery = query => {
    if (typeof document === "undefined") return;
    if (openSearchWithQuery._lock) return;
    openSearchWithQuery._lock = true;
    setTimeout(() => {
      openSearchWithQuery._lock = false;
    }, 300);
    const btn = document.querySelector('button[id*="search-bar-entry"], button[aria-label*="Search" i], [data-search-trigger]');
    if (btn) {
      btn.click();
    } else {
      const isMac = navigator.platform.toLowerCase().includes("mac");
      window.dispatchEvent(new KeyboardEvent("keydown", {
        key: "k",
        code: "KeyK",
        metaKey: isMac,
        ctrlKey: !isMac,
        bubbles: true
      }));
    }
    const trimmed = (query || "").trim();
    if (!trimmed) return;
    let tries = 0;
    const maxTries = 18;
    const tick = () => {
      tries++;
      const input = document.querySelector("#search-input") || document.querySelector('[role="dialog"] input[role="combobox"]') || document.querySelector('[role="dialog"] input');
      if (input) {
        const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value").set;
        setter.call(input, trimmed);
        input.dispatchEvent(new Event("input", {
          bubbles: true
        }));
        input.focus();
        try {
          input.setSelectionRange(trimmed.length, trimmed.length);
        } catch (_) {}
        return;
      }
      if (tries < maxTries) requestAnimationFrame(tick);
    };
    requestAnimationFrame(tick);
  };
  const triggerMintlifySearch = () => openSearchWithQuery("");
  useEffect(() => {
    if (typeof document === "undefined") return;
    const id = "dt-home-search-overrides";
    let styleEl = document.getElementById(id);
    if (!styleEl) {
      styleEl = document.createElement("style");
      styleEl.id = id;
      styleEl.textContent = `
        /* Pin the panel to the upper third (~30% from top), not dead-centre
           which sits too low. flex-start + padding-top keeps tall result
           lists scrollable inside the container instead of clipping. */
        .dt-search-portal {
          display: flex !important;
          align-items: flex-start !important;
          justify-content: center !important;
          padding-top: 16vh !important;
        }
        /* Flex layout shrinks the panel to its content; restore the full
           width so the input matches the doc-page search box (panel keeps its
           own max-width:640px, so this stays responsive on mobile). */
        .dt-search-portal > [role="dialog"] {
          width: 100% !important;
        }
        /* Recolour Mintlify's mask: its default 0.4 black is too faint in light
           mode and gives too little contrast for the panel in dark mode. */
        .dt-search-backdrop {
          background-color: rgba(2, 6, 23, 0.72) !important;
        }
        html.dark .dt-search-backdrop {
          background-color: rgba(0, 0, 0, 0.82) !important;
        }
        body.dt-search-open .dt-home-header {
          z-index: 0 !important;
        }
      `;
      document.head.appendChild(styleEl);
    }
    const isSearchDialog = node => node && node.nodeType === 1 && typeof node.matches === "function" && node.matches('[role="dialog"]') && !!node.querySelector("input");
    const findSearchDialog = root => {
      if (isSearchDialog(root)) return root;
      if (root && root.nodeType === 1 && typeof root.querySelector === "function") {
        const inner = root.querySelector('[role="dialog"]');
        if (inner && inner.querySelector("input")) return inner;
      }
      return null;
    };
    const onOpen = dialog => {
      const container = dialog.parentElement;
      if (container) {
        container.classList.add("dt-search-portal");
        const portalRoot = container.parentElement;
        if (portalRoot) {
          for (const c of portalRoot.children) {
            if (c === container) continue;
            const bg = getComputedStyle(c).backgroundColor;
            if (bg && bg !== "rgba(0, 0, 0, 0)" && bg !== "transparent") {
              c.classList.add("dt-search-backdrop");
              break;
            }
          }
        }
      }
      document.body.classList.add("dt-search-open");
      document.body.style.overflow = "hidden";
      const focusInput = () => {
        const input = document.querySelector("#search-input") || dialog.querySelector('input[role="combobox"], input');
        if (input && document.activeElement !== input) input.focus();
      };
      focusInput();
      requestAnimationFrame(focusInput);
    };
    const onClose = () => {
      document.body.classList.remove("dt-search-open");
      document.body.style.overflow = "";
      document.querySelectorAll(".dt-search-portal").forEach(el => el.classList.remove("dt-search-portal"));
      document.querySelectorAll(".dt-search-backdrop").forEach(el => el.classList.remove("dt-search-backdrop"));
    };
    const observer = new MutationObserver(mutations => {
      for (const m of mutations) {
        for (const node of m.addedNodes) {
          const d = findSearchDialog(node);
          if (d) onOpen(d);
        }
        for (const node of m.removedNodes) {
          const d = findSearchDialog(node);
          if (d) onClose();
        }
      }
    });
    observer.observe(document.body, {
      childList: true,
      subtree: true
    });
    const existing = document.querySelector('[role="dialog"]');
    if (existing && existing.querySelector("input")) onOpen(existing);
    return () => {
      observer.disconnect();
      onClose();
      const found = document.getElementById(id);
      if (found) found.remove();
    };
  }, []);
  useEffect(() => {
    if (typeof window === "undefined") return;
    const q = new URLSearchParams(window.location.search).get("q");
    if (q) openSearchWithQuery(q);
  }, []);
  const ParticleCanvas = () => {
    const ref = useRef(null);
    useEffect(() => {
      if (typeof window === "undefined") return;
      const canvas = ref.current;
      if (!canvas) return;
      const ctx = canvas.getContext("2d");
      const reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
      const CFG = {
        count: 75,
        spread: 19,
        speed: 0.1,
        baseSize: 120,
        sizeRandomness: 1,
        cameraDistance: 20,
        hover: true,
        hoverFactor: 1,
        rotate: !reduce,
        colors: ["#0066ff", "#3385ff", "#86b3ff"]
      };
      let W = 0, H = 0, DPR = 1, cx = 0, cy = 0, proj = 1;
      const resize = () => {
        const r = canvas.getBoundingClientRect();
        DPR = Math.min(window.devicePixelRatio || 1, 2);
        W = Math.max(1, r.width);
        H = Math.max(1, r.height);
        canvas.width = W * DPR;
        canvas.height = H * DPR;
        ctx.setTransform(DPR, 0, 0, DPR, 0, 0);
        cx = W / 2;
        cy = H / 2;
        proj = Math.min(W, H) * 0.085;
      };
      const rand = (a, b) => a + Math.random() * (b - a);
      const half = CFG.spread / 2;
      const particles = Array.from({
        length: CFG.count
      }, () => ({
        x: rand(-half, half),
        y: rand(-half, half),
        z: rand(-half, half),
        sizeF: 1 + (Math.random() - 0.5) * CFG.sizeRandomness,
        phase: Math.random() * Math.PI * 2,
        color: CFG.colors[Math.random() * CFG.colors.length | 0]
      }));
      const mouse = {
        x: 0,
        y: 0,
        tx: 0,
        ty: 0
      };
      const hero = canvas.closest(".dt-home-hero") || canvas.parentElement;
      const onMove = e => {
        const r = hero.getBoundingClientRect();
        mouse.tx = ((e.clientX - r.left) / r.width - 0.5) * 2;
        mouse.ty = ((e.clientY - r.top) / r.height - 0.5) * 2;
      };
      const onLeave = () => {
        mouse.tx = 0;
        mouse.ty = 0;
      };
      if (CFG.hover && hero) {
        hero.addEventListener("mousemove", onMove);
        hero.addEventListener("mouseleave", onLeave);
      }
      let raf = 0, t = 0, last = performance.now();
      const frame = now => {
        const dt = Math.min(0.05, (now - last) / 1000);
        last = now;
        t += dt * CFG.speed;
        mouse.x += (mouse.tx - mouse.x) * 0.06;
        mouse.y += (mouse.ty - mouse.y) * 0.06;
        const ay = CFG.rotate ? t * 0.6 : 0;
        const ax = CFG.rotate ? t * 0.25 : 0;
        const cosY = Math.cos(ay), sinY = Math.sin(ay);
        const cosX = Math.cos(ax), sinX = Math.sin(ax);
        const hx = mouse.x * CFG.hoverFactor * 1.4;
        const hy = mouse.y * CFG.hoverFactor * 1.4;
        ctx.clearRect(0, 0, W, H);
        const list = [];
        for (const p of particles) {
          const wob = 0.35;
          let x = p.x + Math.sin(t * 1.3 + p.phase) * wob;
          let y = p.y + Math.cos(t * 1.1 + p.phase) * wob;
          let z = p.z;
          let x1 = x * cosY - z * sinY, z1 = x * sinY + z * cosY;
          let y1 = y * cosX - z1 * sinX, z2 = y * sinX + z1 * cosX;
          const f = CFG.cameraDistance / (CFG.cameraDistance + z2);
          const depth = (z2 + half) / CFG.spread;
          const sx = cx + (x1 + hx * f) * proj * f;
          const sy = cy + (y1 + hy * f) * proj * f;
          const r = CFG.baseSize / 20 * f * p.sizeF * (Math.min(W, H) / 900);
          const op = Math.max(0.05, Math.min(0.7, 0.12 + depth * 0.62));
          list.push({
            sx,
            sy,
            r,
            op,
            z2,
            color: p.color
          });
        }
        list.sort((a, b) => b.z2 - a.z2);
        for (const d of list) {
          if (d.r <= 0.2) continue;
          ctx.globalAlpha = d.op;
          ctx.fillStyle = d.color;
          ctx.beginPath();
          ctx.arc(d.sx, d.sy, d.r, 0, Math.PI * 2);
          ctx.fill();
        }
        ctx.globalAlpha = 1;
        raf = requestAnimationFrame(frame);
      };
      resize();
      window.addEventListener("resize", resize);
      raf = requestAnimationFrame(frame);
      return () => {
        cancelAnimationFrame(raf);
        window.removeEventListener("resize", resize);
        if (hero) {
          hero.removeEventListener("mousemove", onMove);
          hero.removeEventListener("mouseleave", onLeave);
        }
      };
    }, []);
    return <canvas ref={ref} className="dt-home-particle-canvas" />;
  };
  const SearchBar = () => {
    const [val, setVal] = useState("");
    const submit = () => openSearchWithQuery(val);
    const isMac = typeof navigator !== "undefined" && navigator.platform.toLowerCase().includes("mac");
    const kbdHint = isMac ? "⌘K" : "Ctrl+K";
    return <div className="dt-home-search">
        <div className="dt-home-search-box" role="search">
          <svg className="dt-home-search-ic" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" aria-hidden="true">
            <circle cx="11" cy="11" r="7" />
            <path d="m20 20-3.2-3.2" />
          </svg>
          <input type="text" role="searchbox" aria-label={t.ph} value={val} placeholder={t.ph} onChange={e => setVal(e.target.value)} onKeyDown={e => {
      if (e.key === "Enter") {
        e.preventDefault();
        submit();
      }
    }} onClick={e => e.stopPropagation()} />
          <kbd aria-hidden="true" style={{
      fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
      fontSize: "11.5px",
      fontWeight: 600,
      color: "var(--ink-3)",
      background: "var(--surface-2, rgba(15, 23, 42, 0.06))",
      border: "1px solid var(--line)",
      borderRadius: "5px",
      padding: "2px 6px",
      flex: "none",
      letterSpacing: "0.02em",
      userSelect: "none"
    }}>
            {kbdHint}
          </kbd>
          <button type="button" className="dt-home-search-go" aria-label={t.search_btn} onClick={e => {
      e.stopPropagation();
      submit();
    }}>
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.4" style={{
      display: "inline-block",
      verticalAlign: "-2px"
    }} aria-hidden="true">
              <path d="M5 12h14m-6-6 6 6-6 6" />
            </svg>{" "}
            <span>{t.search_btn}</span>
          </button>
        </div>
      </div>;
  };
  const renderHotTags = () => <div className="dt-home-hot">
      <span className="dt-home-hot-label">{t.hot_label}</span>
      {hot.map((tag, i) => <a key={i} href="#" onClick={e => {
    e.preventDefault();
    openSearchWithQuery(tag);
  }}>
          {tag}
        </a>)}
    </div>;
  const LangMenu = () => {
    const [open, setOpen] = useState(false);
    useEffect(() => {
      if (!open) return;
      const onDoc = e => {
        if (!e.target.closest(".dt-home-lang")) setOpen(false);
      };
      const onKey = e => {
        if (e.key === "Escape") setOpen(false);
      };
      document.addEventListener("click", onDoc);
      document.addEventListener("keydown", onKey);
      return () => {
        document.removeEventListener("click", onDoc);
        document.removeEventListener("keydown", onKey);
      };
    }, [open]);
    const LANGS = [{
      code: "en",
      label: "English",
      href: "/"
    }, {
      code: "zh",
      label: "中文",
      href: "/zh/index"
    }, {
      code: "ja",
      label: "日本語",
      href: "/ja/index"
    }, {
      code: "id",
      label: "Bahasa Indonesia",
      href: "/id/index"
    }];
    const LABEL_MAP = {
      en: "English",
      zh: "中文",
      ja: "日本語",
      id: "Bahasa Indonesia"
    };
    const current = LANGS.find(l => l.code === lang) || ({
      code: lang,
      label: LABEL_MAP[lang] || "English"
    });
    return <div className={`dt-home-lang${open ? " dt-home-lang-open" : ""}`}>
        <button type="button" className="dt-home-lang-btn" aria-haspopup="listbox" aria-expanded={open ? "true" : "false"} onClick={e => {
      e.stopPropagation();
      setOpen(v => !v);
    }}>
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8">
            <circle cx="12" cy="12" r="9" />
            <path d="M3 12h18M12 3a15 15 0 0 1 0 18M12 3a15 15 0 0 0 0 18" />
          </svg>
          <span className="dt-home-lang-label">{current.label}</span>
          <svg className="dt-home-lang-chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
            <path d="m6 9 6 6 6-6" />
          </svg>
        </button>
        <ul className="dt-home-lang-list" role="listbox">
          {LANGS.map(l => <li key={l.code} role="option" aria-selected={l.code === current.code ? "true" : "false"} onClick={() => {
      window.location.href = l.href;
    }}>
              {l.label}
            </li>)}
        </ul>
      </div>;
  };
  const lp = lang === "en" ? "/" : "/" + lang + "/";
  const openLp = lp;
  const homeHref = lang === "en" ? "/" : "/" + lang + "/index";
  const feedbackHref = lang === "zh" ? "https://docs.dingtalk.io/notable/share/form/v01r4mlQd7VRJ0kOxow_wSHNmzo_d2mVaXS?source=link" : lang === "ja" ? "https://docs.dingtalk.io/notable/share/form/v01r4mlQd7VRJ0kOxow_beLDpf0_etWlgA3?source=link" : "https://docs.dingtalk.io/notable/share/form/v01r4mlQd7VRJ0kOxow_dv19yqvsgs3oebp3pcjys_1qX0QQ0?source=link";
  const mkt = path => {
    const jp = {
      "/contact-sales": "https://www.dingtalk.co.jp/contact-sales/",
      "/contact-sales/": "https://www.dingtalk.co.jp/contact-sales/",
      "/contact-sales/?type=support": "https://www.dingtalk.co.jp/contact-sales/?type=support",
      "/products/dingtalk-im/": "https://www.dingtalk.co.jp/feature/chat/",
      "/products/dingtalk-meeting/": "https://www.dingtalk.co.jp/feature/meeting/",
      "/products/dingtalk-document/": "https://www.dingtalk.co.jp/feature/document/",
      "/products/ai-table/": "https://www.dingtalk.co.jp/feature/aitable/",
      "/blog/": "https://www.dingtalk.co.jp/blog/",
      "/qa/": "https://www.dingtalk.co.jp/qa/",
      "/download/": "https://www.dingtalk.co.jp/download/",
      "/privacy-policy/": "https://terms.alicdn.com/legal-agreement/terms/suit_bu1_dingtalk/suit_bu1_dingtalk202010191550_64611.html",
      "/terms-of-service/": "https://terms.alicdn.com/legal-agreement/terms/suit_bu1_dingtalk/suit_bu1_dingtalk202010161503_92178.html",
      "/#pricing": "https://www.dingtalk.co.jp/#pricing",
      "/#customer-cases": "https://www.dingtalk.co.jp/#customer-cases"
    };
    if (lang === "ja" && jp[path]) return jp[path];
    return "https://www.dingtalk.io" + path;
  };
  const NavMenu = () => {
    const [open, setOpen] = useState(false);
    useEffect(() => {
      if (!open) return;
      const onDoc = e => {
        if (!e.target.closest(".dt-home-navmenu")) setOpen(false);
      };
      const onKey = e => {
        if (e.key === "Escape") setOpen(false);
      };
      document.addEventListener("click", onDoc);
      document.addEventListener("keydown", onKey);
      return () => {
        document.removeEventListener("click", onDoc);
        document.removeEventListener("keydown", onKey);
      };
    }, [open]);
    return <div className={`dt-home-navmenu${open ? " dt-home-navmenu-open" : ""}`}>
        <button type="button" className="dt-home-nav-burger" aria-haspopup="true" aria-expanded={open ? "true" : "false"} aria-label="Menu" onClick={e => {
      e.stopPropagation();
      setOpen(v => !v);
    }}>
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" aria-hidden="true">
            <path d="M4 6h16M4 12h16M4 18h16" />
          </svg>
        </button>
        <div className="dt-home-nav-panel" role="menu">
          <a href="#categories" role="menuitem" onClick={() => setOpen(false)}>
            {t.nav1}
          </a>
          <a href={`${openLp}open/dingstart/basic-concepts-beta`} role="menuitem" onClick={() => setOpen(false)}>
            {t.nav3}
          </a>
          <a href={mkt("/contact-sales")} target="_blank" rel="noopener noreferrer" role="menuitem" onClick={() => setOpen(false)}>
            {t.nav4}
          </a>
          <a href={mkt("/contact-sales/?type=support")} target="_blank" rel="noopener noreferrer" role="menuitem" className="dt-home-nav-panel-cta" onClick={() => setOpen(false)}>
            {t.contact}
          </a>
        </div>
      </div>;
  };
  const renderHeader = () => <header className="dt-home-header">
      <nav className="dt-home-nav">
        <a href={homeHref} className="dt-home-brand">
          <span className="dt-home-brand-logo" aria-label="DingTalk" />
          <small className="dt-home-brand-sub">{t.brand_sub}</small>
        </a>
        <div className="dt-home-nav-links">
          <a href="#categories">{t.nav1}</a>
          <a href={`${openLp}open/dingstart/basic-concepts-beta`}>{t.nav3}</a>
          <a href={mkt("/contact-sales")} target="_blank" rel="noopener noreferrer">
            {t.nav4}
          </a>
        </div>
        <div className="dt-home-nav-right">
          {React.createElement(LangMenu)}
          <a href={mkt("/contact-sales/?type=support")} target="_blank" rel="noopener noreferrer" className="dt-home-btn-primary">
            {t.contact}
          </a>
          {React.createElement(NavMenu)}
        </div>
      </nav>
    </header>;
  const renderHero = () => <div className="dt-home-hero">
      <div className="dt-home-hero-bg">{React.createElement(ParticleCanvas)}</div>
      <div className="dt-home-hero-scrim" />
      <div className="dt-home-hero-inner">
        <span className="dt-home-eyebrow">
          <span className="dt-home-eyebrow-dot" />
          <span>{t.status}</span>
        </span>
        <h1 className="dt-home-hero-title">{t.title}</h1>
        <p className="dt-home-hero-sub">{t.subtitle}</p>
        {React.createElement(SearchBar)}
        {renderHotTags()}
      </div>
    </div>;
  const renderCategoryGrid = () => <section className="dt-home-block dt-home-wrap" id="categories">
      <div className="dt-home-sec-head">
        <div>
          <h2>{t.cat_title}</h2>
          <p>{t.cat_sub}</p>
        </div>
      </div>
      <div className="dt-home-grid">
        {cats.map((c, i) => {
    const isExternal = (/^https?:\/\//).test(c.href);
    return <a key={i} className="dt-home-card" href={c.href} target={isExternal ? "_blank" : undefined} rel={isExternal ? "noopener noreferrer" : undefined}>
              <span className="dt-home-card-count">
                {c.n} {t.articles}
              </span>
              <span className="dt-home-card-ico">
                <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" dangerouslySetInnerHTML={{
      __html: `<path d="${I[c.ic]}"/>`
    }} />
              </span>
              <h3>{c.t}</h3>
              <p className="dt-home-card-desc">{c.d}</p>
              <div className="dt-home-card-topics">
                {c.topics.map((x, j) => <span key={j}>{x}</span>)}
              </div>
            </a>;
  })}
      </div>
    </section>;
  const renderPopularArticles = () => <section className="dt-home-popular" id="popular">
      <div className="dt-home-wrap dt-home-block">
        <div className="dt-home-sec-head">
          <div>
            <h2>{t.pop_title}</h2>
            <p>{t.pop_sub}</p>
          </div>
        </div>
        <div className="dt-home-art-grid">
          {arts.map((a, i) => <a key={i} className="dt-home-art" href={a.slug ? `${lp}${a.slug}` : a.href || "#"}>
              <span className="dt-home-art-num">{i + 1}</span>
              <span className="dt-home-art-info">
                <h4>{a.t}</h4>
                <span className="dt-home-art-tag">{a.tag}</span>
              </span>
              <svg className="dt-home-art-arr" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                <path d="M9 6l6 6-6 6" />
              </svg>
            </a>)}
        </div>
      </div>
    </section>;
  const renderSupportCTA = () => <section className="dt-home-block dt-home-wrap" id="support">
      <div className="dt-home-support">
        <div className="dt-home-support-txt">
          <h2>{t.sup_title}</h2>
          <p>{t.sup_sub}</p>
        </div>
        <div className="dt-home-support-acts">
          <a href={mkt("/contact-sales/?type=support")} target="_blank" rel="noopener noreferrer" className="dt-home-support-s1">
            {t.sup_b1}
          </a>
          <a href={feedbackHref} target="_blank" rel="noopener noreferrer" className="dt-home-support-s2">
            {t.sup_b2}
          </a>
        </div>
      </div>
    </section>;
  const renderHomeFooter = () => <footer className="dt-home-footer">
      <div className="dt-home-wrap dt-home-foot">
        <div>
          <a href={homeHref} className="dt-home-foot-brand" aria-label="DingTalk" />

          <p className="dt-home-foot-tagline">{t.foot_tag}</p>
        </div>
        <div>
          <h5>{t.foot_h1}</h5>
          <ul>
            <li><a href={mkt("/products/dingtalk-im/")} target="_blank" rel="noopener noreferrer">{t.foot_p1}</a></li>
            <li><a href={mkt("/products/dingtalk-meeting/")} target="_blank" rel="noopener noreferrer">{t.foot_p2}</a></li>
            <li><a href={mkt("/products/dingtalk-document/")} target="_blank" rel="noopener noreferrer">{t.foot_p3}</a></li>
            <li><a href={mkt("/products/ai-table/")} target="_blank" rel="noopener noreferrer">{t.foot_p4}</a></li>
          </ul>
        </div>
        <div>
          <h5>{t.foot_h2}</h5>
          <ul>
            <li><a href={mkt("/#pricing")} target="_blank" rel="noopener noreferrer">{t.foot_s1}</a></li>
            <li><a href={mkt("/contact-sales/")} target="_blank" rel="noopener noreferrer">{t.foot_s2}</a></li>
            <li><a href={`https://help.dingtalk.io${homeHref}`}>{t.foot_s3}</a></li>
            <li><a href={`https://help.dingtalk.io${openLp}open/dingstart/basic-concepts-beta`} target="_blank" rel="noopener noreferrer">{t.foot_s4}</a></li>
          </ul>
        </div>
        <div>
          <h5>{t.foot_h3}</h5>
          <ul>
            <li><a href={mkt("/blog/")} target="_blank" rel="noopener noreferrer">{t.foot_r1}</a></li>
            <li><a href={mkt("/qa/")} target="_blank" rel="noopener noreferrer">{t.foot_r2}</a></li>
            <li><a href={mkt("/#customer-cases")} target="_blank" rel="noopener noreferrer">{t.foot_r3}</a></li>
            <li><a href={mkt("/download/")} target="_blank" rel="noopener noreferrer">{t.foot_r4}</a></li>
          </ul>
        </div>
      </div>
      <div className="dt-home-foot-bottom">
        <span>© 2026 DingTalk. {t.rights}</span>
        <span style={{
    display: "flex",
    gap: "20px"
  }}>
          <a href={mkt("/privacy-policy/")} target="_blank" rel="noopener noreferrer">{t.legal1}</a>
          <a href={mkt("/terms-of-service/")} target="_blank" rel="noopener noreferrer">{t.legal2}</a>
        </span>
      </div>
    </footer>;
  return <div className="dt-home">
      <script type="application/ld+json" dangerouslySetInnerHTML={{
    __html: JSON.stringify(buildStructuredData(lang))
  }} />
      {renderHeader()}
      {renderHero()}
      {renderCategoryGrid()}
      {renderPopularArticles()}
      {renderSupportCTA()}
      {renderHomeFooter()}
    </div>;
};

export const T = {
  brand_sub: "Help Center",
  nav1: "Documentation",
  nav3: "Developers",
  nav4: "Contact",
  contact: "Live Chat",
  status: "All systems operational · 24/7 support",
  title: "Hi, how can we help?",
  subtitle: "Search guides, FAQs and product features to quickly find the answer you need.",
  search_btn: "Search",
  ph: "Search topics, features or keywords…",
  hot_label: "Popular:",
  cat_title: "Browse by Product",
  cat_sub: "Pick a product to see full feature guides and step-by-step help.",
  pop_title: "Recommended Docs",
  pop_sub: "One short read picked from each product.",
  sup_title: "Still need help?",
  sup_sub: "Our support team is on standby. Open a ticket or chat with us — average response under 2 minutes.",
  sup_b1: "Chat with Support",
  sup_b2: "Feedback & Suggestions",
  foot_tag: "Work Smarter, Work with AI",
  foot_h1: "Products",
  foot_p1: "Messaging",
  foot_p2: "Meetings",
  foot_p3: "Docs",
  foot_p4: "AI Tables",
  foot_h2: "Support",
  foot_s1: "Pricing",
  foot_s2: "Contact Us",
  foot_s3: "Help Docs",
  foot_s4: "Developer Platform",
  foot_h3: "Resources",
  foot_r1: "What's New",
  foot_r2: "Tips & Tricks",
  foot_r3: "Customer Cases",
  foot_r4: "Download Apps",
  rights: "All rights reserved.",
  legal1: "Privacy",
  legal2: "Terms",
  articles: "articles"
};

export const HOT = ["Group chats", "Captions", "Mailbox", "Formulas", "Translate"];

export const CATS = [{
  ic: "im",
  t: "Chats",
  d: "Messaging, group chats and efficient collaboration.",
  n: 18,
  topics: ["Start a Direct Message", "Create and Manage a Group Chat", "Manage Message Notifications"],
  href: "/im/chats-direct-message"
}, {
  ic: "cal",
  t: "Calendar",
  d: "Schedule events, share calendars and invites.",
  n: 18,
  topics: ["Create an Event", "Set Calendar Views", "Share My Calendar"],
  href: "/calendar/create-an-event"
}, {
  ic: "av",
  t: "Meetings",
  d: "Video meetings, screen sharing and live streams.",
  n: 44,
  topics: ["How to Start or Schedule a Video Meeting?", "How to Share Your Screen?", "How to Use Captions?"],
  href: "/meetings/start-or-schedule-meeting"
}, {
  ic: "contact",
  t: "Contacts",
  d: "Org structure, members and external contacts.",
  n: 15,
  topics: ["Create Departments", "Enable Member Invitations", "Manage Roles"],
  href: "/contacts/create-departments"
}, {
  ic: "mail",
  t: "Mail",
  d: "Bind mailbox, send mail and set signatures.",
  n: 22,
  topics: ["Send an Email", "Set Up Automatic Email Replies", "Set Up Automatic Email Forwarding"],
  href: "/mail/send-an-email"
}, {
  ic: "doc",
  t: "Docs",
  d: "Real-time co-editing, templates and rich text.",
  n: 290,
  topics: ["Getting Started", "Insert a Whiteboard", "Basic Operations of Knowledge Base"],
  href: "/docs/getting-started/index"
}, {
  ic: "drive",
  t: "Drive",
  d: "File storage, shared spaces and permissions.",
  n: 23,
  topics: ["What Is DingTalk Drive?", "How to Save Chat Files to DingTalk Drive", "How to Set or Change Member Permissions"],
  href: "/drive/what-is-dingtalk-drive"
}, {
  ic: "table",
  t: "AI Table",
  d: "Smart sheets, AI formulas and data views.",
  n: 210,
  topics: ["AI Table Quick Start", "Working with AI Table Views", "Use AI Table Dashboards"],
  href: "/aitable/getting-started/quick-start"
}, {
  ic: "notes",
  t: "AI Minutes",
  d: "Recording transcription, minutes and AI summaries.",
  n: 8,
  topics: ["Start AI Minutes", "Use AI Minutes", "Face-to-Face Translation Feature Overview"],
  href: "/ai-minutes/start-ai-minutes"
}, {
  ic: "dev",
  t: "Developers",
  d: "App development, open APIs and webhooks.",
  n: 417,
  topics: ["App Creation and Configuration", "Configure an Enterprise Bot", "Security Settings for Custom Bots"],
  href: "/open/dingstart/create-application"
}];

export const ARTS = [{
  slug: "im/chats-rich-messages",
  tag: "Chats",
  t: "Send and Edit Messages"
}, {
  slug: "calendar/set-calendar-views",
  tag: "Calendar",
  t: "Set Calendar Views"
}, {
  slug: "meetings/meeting-ai",
  tag: "Meetings",
  t: "Meeting AI"
}, {
  slug: "contacts/quickly-enable-organization",
  tag: "Contacts",
  t: "Quickly Enable a DingTalk Organization"
}, {
  slug: "mail/dingtalk-enterprise-mail",
  tag: "Mail",
  t: "DingTalk Enterprise Mail"
}, {
  slug: "docs/getting-started/intro-docs",
  tag: "Docs",
  t: "Collaborate with Docs"
}, {
  slug: "drive/what-is-dingtalk-drive",
  tag: "Drive",
  t: "What Is DingTalk Drive?"
}, {
  slug: "aitable/getting-started/quick-start",
  tag: "AI Table",
  t: "AI Table Quick Start"
}, {
  slug: "ai-minutes/voiceprint-recognition",
  tag: "AI Minutes",
  t: "Voiceprint Recognition Feature Overview"
}, {
  slug: "open/dingstart/create-application",
  tag: "Developers",
  t: "App Creation and Configuration"
}, {
  slug: "open/development/server-api-calling-guide",
  tag: "Developers",
  t: "API Call Walkthrough"
}, {
  slug: "open/development/server-api-error-codes-1",
  tag: "Developers",
  t: "Global Error Codes"
}];

<Home lang="en" t={T} cats={CATS} arts={ARTS} hot={HOT} />
