Spaces:
Sleeping
Sleeping
| 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} | |
| </> | |
| ) | |
| } | |