import React, { useState } from 'react' export function FAQ({}) { return ( <section className="bg-white dark:bg-gray-900 pt-12"> <div className="max-w-screen-xl px-4 pb-8 mx-auto lg:pb-24 lg:px-6" id="faq" > <h2 className="mb-6 text-3xl font-extrabold tracking-tight text-center text-gray-900 lg:mb-8 lg:text-3xl dark:text-white"> Frequently asked questions </h2> <div className="max-w-screen-md mx-auto"> <div id="accordion-flush" data-accordion="collapse" data-active-classes="bg-white dark:bg-gray-900 text-gray-900 dark:text-white" data-inactive-classes="text-gray-500 dark:text-gray-400" > <FAQItem defaultSelected title="How does Followgraph for Hugging Face work?" > Followgraph looks up all the people you follow on Hugging Face, and then the people <em>they</em> follow. Then it sorts them by the number of mutuals, or otherwise by how popular those accounts are. <br /> It then shows the list with Hugging Face links to follow them. </FAQItem> <FAQItem title="Do I need to grant Followgraph any permissions?"> Not at all! Followgraph uses public APIs to fetch potential people you can follow on Hugging Face. In fact, it only does inauthenticated network requests. </FAQItem> <FAQItem title="Help! The search got stuck."> Don't worry. The list of suggestions will load in 30 seconds or so. Sometimes it gets stuck because one or more of the queries made to Hugging Face time out. This is not a problem, because the rest of the queries will work as expected. </FAQItem> <FAQItem title="Why don't I see any results?"> Make sure you have no typos in the Hugging Face handle, and make sure you follow at least a few people to seed the search. </FAQItem> <FAQItem title="How can I contribute with suggestions?"> Click the "Fork me on Github" link on the top right, and open up an issue. </FAQItem> <FAQItem title="Why is this not a core Hugging Face feature?"> Well, maybe it should be. In the meantime, you can use this website. </FAQItem> <FAQItem title="Can I download the list of accounts as CSV?"> While it would be a useful feature, Followgraph does <em>not</em>{' '} plan to offer this functionality as it would facilitate inorganic and potentially malicious behaviour. </FAQItem> <FAQItem title="Why don't I see Hugging Face staff members?"> Followgraph does not include Hugging Face staff members to increase the diversity of the suggestions, and promote the discovery of new accounts. </FAQItem> </div> </div> </div> </section> ) } function FAQItem({ defaultSelected, title, children, }: { defaultSelected?: boolean title: string children: React.ReactNode }) { const [selected, setSelected] = useState(defaultSelected) return ( <> <h3 id="accordion-flush-heading-1"> <button type="button" onClick={() => setSelected(!selected)} className={`flex items-center justify-between w-full py-5 font-medium text-left text-gray-${ selected ? 900 : 500 } bg-white border-b border-gray-200 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-${ selected ? 200 : 400 }`} data-accordion-target="#accordion-flush-body-1" aria-expanded="true" aria-controls="accordion-flush-body-1" > <span>{title}</span> <svg data-accordion-icon className="w-6 h-6 rotate-180 shrink-0" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" > <path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" /> </svg> </button> </h3> {selected ? ( <div id="accordion-flush-body-1" aria-labelledby="accordion-flush-heading-1" > <div className="py-5 border-b border-gray-200 dark:border-gray-700 dark:text-gray-300"> {children} </div> </div> ) : null} </> ) }