mirror of
				https://github.com/D4M13N-D3V/neroshitron.git
				synced 2025-11-04 03:25:35 +00:00 
			
		
		
		
	fix: css themiing
This commit is contained in:
		
							parent
							
								
									9b5c3d44c5
								
							
						
					
					
						commit
						f175b31976
					
				@ -54,8 +54,6 @@ export async function GET(
 | 
				
			|||||||
    .select('*')
 | 
					    .select('*')
 | 
				
			||||||
    .eq('user_id', userId)
 | 
					    .eq('user_id', userId)
 | 
				
			||||||
    .single();
 | 
					    .single();
 | 
				
			||||||
    //console.log(subscription)
 | 
					 | 
				
			||||||
    //console.log(gallery.tier)
 | 
					 | 
				
			||||||
    switch(gallery.tier){
 | 
					    switch(gallery.tier){
 | 
				
			||||||
      case "Tier 3":
 | 
					      case "Tier 3":
 | 
				
			||||||
        if(subscription?.tier!="Tier 3"){
 | 
					        if(subscription?.tier!="Tier 3"){
 | 
				
			||||||
 | 
				
			|||||||
@ -13,18 +13,15 @@ export async function POST(request: Request) {
 | 
				
			|||||||
      .from('galleries')
 | 
					      .from('galleries')
 | 
				
			||||||
      .select('*')
 | 
					      .select('*')
 | 
				
			||||||
      .ilike('name', `%${search}%`)
 | 
					      .ilike('name', `%${search}%`)
 | 
				
			||||||
      //console.log(error)
 | 
					 | 
				
			||||||
    return NextResponse.json(galleries);
 | 
					    return NextResponse.json(galleries);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else{
 | 
					  else{
 | 
				
			||||||
    // Rest of the code...
 | 
					    // Rest of the code...
 | 
				
			||||||
    console.log(tags)
 | 
					 | 
				
			||||||
  let { data: galleries, error } = await supabase
 | 
					  let { data: galleries, error } = await supabase
 | 
				
			||||||
    .from('galleries')
 | 
					    .from('galleries')
 | 
				
			||||||
    .select('*')
 | 
					    .select('*')
 | 
				
			||||||
    .contains('tags', tags) // Fix: Use contains instead of overlaps
 | 
					    .contains('tags', tags) // Fix: Use contains instead of overlaps
 | 
				
			||||||
    .ilike('name', `%${search}%`)
 | 
					    .ilike('name', `%${search}%`)
 | 
				
			||||||
    //console.log(error)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return NextResponse.json(galleries);
 | 
					  return NextResponse.json(galleries);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,6 @@ function PageComponent() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  useEffect(() => {
 | 
					  useEffect(() => {
 | 
				
			||||||
    getData();
 | 
					    getData();
 | 
				
			||||||
    console.log(selectedGallery)
 | 
					 | 
				
			||||||
  }, [selectedGallery]);
 | 
					  }, [selectedGallery]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   const closeGallery = () => {
 | 
					   const closeGallery = () => {
 | 
				
			||||||
@ -43,7 +42,7 @@ function PageComponent() {
 | 
				
			|||||||
             aria-hidden="true"
 | 
					             aria-hidden="true"
 | 
				
			||||||
           >
 | 
					           >
 | 
				
			||||||
             <div
 | 
					             <div
 | 
				
			||||||
               className="absolute inset-0 bg-neroshi-blue-900 opacity-70 z-30"
 | 
					               className="absolute inset-0 bg-secondary-dark opacity-70 z-30"
 | 
				
			||||||
               onClick={() => closeGallery()}
 | 
					               onClick={() => closeGallery()}
 | 
				
			||||||
             ></div>
 | 
					             ></div>
 | 
				
			||||||
             <div className="absolute inset-0 overflow-y-auto overflow-x-hidden no-scrollbar pt-2 w-full p-20 z-30">
 | 
					             <div className="absolute inset-0 overflow-y-auto overflow-x-hidden no-scrollbar pt-2 w-full p-20 z-30">
 | 
				
			||||||
 | 
				
			|||||||
@ -16,23 +16,7 @@
 | 
				
			|||||||
.no-scrollbar::-webkit-scrollbar {
 | 
					.no-scrollbar::-webkit-scrollbar {
 | 
				
			||||||
  display: none;
 | 
					  display: none;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.my-masonry-grid {
 | 
					 | 
				
			||||||
  display: -webkit-box; /* Not needed if autoprefixing */
 | 
					 | 
				
			||||||
  display: -ms-flexbox; /* Not needed if autoprefixing */
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  margin-left: -30px; /* gutter size offset */
 | 
					 | 
				
			||||||
  width: auto;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.my-masonry-grid_column {
 | 
					 | 
				
			||||||
  padding-left: 30px; /* gutter size */
 | 
					 | 
				
			||||||
  background-clip: padding-box;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Style your items */
 | 
					 | 
				
			||||||
.my-masonry-grid_column > div { /* change div to reference your elements you put in <Masonry> */
 | 
					 | 
				
			||||||
  background: grey;
 | 
					 | 
				
			||||||
  margin-bottom: 30px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/* Hide scrollbar for IE, Edge and Firefox */
 | 
					/* Hide scrollbar for IE, Edge and Firefox */
 | 
				
			||||||
.no-scrollbar {
 | 
					.no-scrollbar {
 | 
				
			||||||
  -ms-overflow-style: none;  /* IE and Edge */
 | 
					  -ms-overflow-style: none;  /* IE and Edge */
 | 
				
			||||||
@ -63,11 +47,6 @@
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@layer base {
 | 
					 | 
				
			||||||
  * {
 | 
					 | 
				
			||||||
    @apply border-foreground/20;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
.animate-in {
 | 
					.animate-in {
 | 
				
			||||||
  animation: animateIn 0.3s ease 0.15s both;
 | 
					  animation: animateIn 0.3s ease 0.15s both;
 | 
				
			||||||
 | 
				
			|||||||
@ -26,7 +26,7 @@ export default function RootLayout({
 | 
				
			|||||||
          <SpeedInsights/>
 | 
					          <SpeedInsights/>
 | 
				
			||||||
          <Analytics/>
 | 
					          <Analytics/>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <main className="min-h-screen flex flex-col items-center bg-gradient-to-r from-neroshi-blue-900 to-neroshi-blue-950 overflow-hidden">
 | 
					        <main className="min-h-screen flex flex-col items-center bg-gradient-to-r from-primary to-secondary overflow-hidden">
 | 
				
			||||||
          {children}
 | 
					          {children}
 | 
				
			||||||
        </main>
 | 
					        </main>
 | 
				
			||||||
      </body>
 | 
					      </body>
 | 
				
			||||||
 | 
				
			|||||||
@ -30,7 +30,6 @@ export default async function Login({
 | 
				
			|||||||
      password,
 | 
					      password,
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //console.log(error);
 | 
					 | 
				
			||||||
    if (error) {
 | 
					    if (error) {
 | 
				
			||||||
      return redirect("/login?message=Could not authenticate user");
 | 
					      return redirect("/login?message=Could not authenticate user");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -54,7 +53,6 @@ export default async function Login({
 | 
				
			|||||||
      },
 | 
					      },
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //console.log(error);
 | 
					 | 
				
			||||||
    if (error) {
 | 
					    if (error) {
 | 
				
			||||||
      return redirect("/login?message=Could not authenticate user");
 | 
					      return redirect("/login?message=Could not authenticate user");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -104,14 +102,14 @@ export default async function Login({
 | 
				
			|||||||
      <div className="flex text-white white">
 | 
					      <div className="flex text-white white">
 | 
				
			||||||
        <SubmitButton
 | 
					        <SubmitButton
 | 
				
			||||||
          formAction={signIn}
 | 
					          formAction={signIn}
 | 
				
			||||||
          className="bg-neroshi-blue-500 hover:bg-neroshi-blue-400 rounded-md px-4 py-2 text-white mb-2 mx-1 w-1/2"
 | 
					          className="bg-success hover:bg-success-light rounded-md px-4 py-2 text-white mb-2 mx-1 w-1/2"
 | 
				
			||||||
          pendingText="Signing In..."
 | 
					          pendingText="Signing In..."
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          Sign In
 | 
					          Sign In
 | 
				
			||||||
        </SubmitButton>
 | 
					        </SubmitButton>
 | 
				
			||||||
        <SubmitButton
 | 
					        <SubmitButton
 | 
				
			||||||
          formAction={signUp}
 | 
					          formAction={signUp}
 | 
				
			||||||
          className="bg-neroshi-blue-300 hover:bg-neroshi-blue-200 border border-foreground/20 rounded-md px-4 py-2 text-white mb-2 mx-1 w-1/2"
 | 
					          className="bg-info hover:bg-info-light border border-foreground/20 rounded-md px-4 py-2 text-white mb-2 mx-1 w-1/2"
 | 
				
			||||||
          pendingText="Signing Up..."
 | 
					          pendingText="Signing Up..."
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          Sign Up
 | 
					          Sign Up
 | 
				
			||||||
 | 
				
			|||||||
@ -23,7 +23,6 @@ const Galleries = ({ nsfw, tags, search, gallerySelected }: TagProps) => {
 | 
				
			|||||||
        gallerySelected(gallery);
 | 
					        gallerySelected(gallery);
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    console.log(tags)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const getData = async () => {
 | 
					    const getData = async () => {
 | 
				
			||||||
        const galleriesResponse = await fetch(`/api/galleries?search=` + searchState + '&nsfw=' + nsfwState, {
 | 
					        const galleriesResponse = await fetch(`/api/galleries?search=` + searchState + '&nsfw=' + nsfwState, {
 | 
				
			||||||
@ -42,7 +41,7 @@ const Galleries = ({ nsfw, tags, search, gallerySelected }: TagProps) => {
 | 
				
			|||||||
    }, [tagsState]);
 | 
					    }, [tagsState]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        <div className="absolute inset-0 mx-auto ml-16 md:ml-0 pt-48 p-4 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-y-60 gap-x-4 animate-in overflow-y-scroll no-scrollbar z-0">
 | 
					        <div className="absolute inset-0 mx-auto ml-16 md:ml-0 pt-48 p-4 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-y-20 gap-x-4 animate-in overflow-y-scroll no-scrollbar z-0">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            {galleries && galleries.map((gallery: any, index) => (
 | 
					            {galleries && galleries.map((gallery: any, index) => (
 | 
				
			||||||
                <GalleryThumbnail
 | 
					                <GalleryThumbnail
 | 
				
			||||||
 | 
				
			|||||||
@ -106,10 +106,10 @@ const Gallery = ({ id, columns, closeMenu }: GalleryProps) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const renderButtons = () => {
 | 
					    const renderButtons = () => {
 | 
				
			||||||
        return (
 | 
					        return (
 | 
				
			||||||
            <div className="z-20 bottom-10 fixed pt-4 bg-purple-900 bg-opacity-40 animate-in rounded-2xl" style={{ backdropFilter: 'blur(10px)' }}>
 | 
					            <div className="z-20 bottom-10 fixed text-white pt-4 bg-primary bg-opacity-90 animate-in rounded-2xl" style={{ backdropFilter: 'blur(10px)' }}>
 | 
				
			||||||
                <div className='grid grid-cols-4 pl-4 gap-4 pr-4'>
 | 
					                <div className='grid grid-cols-4 pl-4 gap-4 pr-4'>
 | 
				
			||||||
                    <button
 | 
					                    <button
 | 
				
			||||||
                        className={`justify-center text-center w-full animate-in animate-once animate-duration-1000 animate-ease-out animate-reverse mb-4 py-2 px-4 rounded-lg no-underline flex items-center z-50 bg-neroshi-blue-900 hover:bg-neroshi-blue-800`}
 | 
					                        className={`justify-center text-center w-full animate-in animate-once animate-duration-1000 animate-ease-out animate-reverse mb-4 py-2 px-4 rounded-lg no-underline flex items-center z-50 bg-error hover:bg-error-light`}
 | 
				
			||||||
                        onClick={() => close()}
 | 
					                        onClick={() => close()}
 | 
				
			||||||
                    >
 | 
					                    >
 | 
				
			||||||
                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6">
 | 
					                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6">
 | 
				
			||||||
@ -117,7 +117,7 @@ const Gallery = ({ id, columns, closeMenu }: GalleryProps) => {
 | 
				
			|||||||
                        </svg>
 | 
					                        </svg>
 | 
				
			||||||
                    </button>
 | 
					                    </button>
 | 
				
			||||||
                    <button
 | 
					                    <button
 | 
				
			||||||
                        className={`justify-center text-center w-full animate-in animate-once animate-duration-1000 animate-ease-out animate-reverse mb-4 py-2 px-4 rounded-lg no-underline flex items-center z-50 ${!selectedImage ? 'opacity-50 cursor-not-allowed bg-gray-800' : 'bg-pink-700 hover:bg-pink-600'}`}
 | 
					                        className={`justify-center text-center w-full animate-in animate-once animate-duration-1000 animate-ease-out animate-reverse mb-4 py-2 px-4 rounded-lg no-underline flex items-center z-50 ${!selectedImage ? 'opacity-50 cursor-not-allowed bg-gray-800' : 'bg-secondary hover:bg-secondary-light'}`}
 | 
				
			||||||
                        onClick={() => previous()}
 | 
					                        onClick={() => previous()}
 | 
				
			||||||
                        disabled={!selectedImage}
 | 
					                        disabled={!selectedImage}
 | 
				
			||||||
                    >
 | 
					                    >
 | 
				
			||||||
@ -127,7 +127,7 @@ const Gallery = ({ id, columns, closeMenu }: GalleryProps) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    </button>
 | 
					                    </button>
 | 
				
			||||||
                    <button
 | 
					                    <button
 | 
				
			||||||
                        className={`justify-center text-center w-full animate-in animate-once animate-duration-1000 animate-ease-out animate-reverse mb-4 py-2 px-4 rounded-lg no-underline flex items-center z-50 ${!selectedImage ? 'opacity-50 cursor-not-allowed bg-gray-800' : 'bg-pink-700 hover:bg-pink-600'}`}
 | 
					                        className={`justify-center text-center w-full animate-in animate-once animate-duration-1000 animate-ease-out animate-reverse mb-4 py-2 px-4 rounded-lg no-underline flex items-center z-50 ${!selectedImage ? 'opacity-50 cursor-not-allowed bg-gray-800' : 'bg-secondary hover:bg-secondary-light'}`}
 | 
				
			||||||
                        onClick={() => next()}
 | 
					                        onClick={() => next()}
 | 
				
			||||||
                        disabled={!selectedImage}
 | 
					                        disabled={!selectedImage}
 | 
				
			||||||
                    >
 | 
					                    >
 | 
				
			||||||
@ -136,7 +136,7 @@ const Gallery = ({ id, columns, closeMenu }: GalleryProps) => {
 | 
				
			|||||||
                        </svg>
 | 
					                        </svg>
 | 
				
			||||||
                    </button>
 | 
					                    </button>
 | 
				
			||||||
                    <button
 | 
					                    <button
 | 
				
			||||||
                        className={`justify-center text-center w-full animate-in animate-once animate-duration-1000 animate-ease-out animate-reverse mb-4 py-2 px-4 rounded-lg no-underline flex items-center z-50 ${!selectedImage ? 'opacity-50 cursor-not-allowed bg-gray-800' : 'bg-purple-700 hover:bg-purple-600'}`}
 | 
					                        className={`justify-center text-center w-full animate-in animate-once animate-duration-1000 animate-ease-out animate-reverse mb-4 py-2 px-4 rounded-lg no-underline flex items-center z-50 ${!selectedImage ? 'opacity-50 cursor-not-allowed bg-gray-800' : 'bg-success hover:bg-success-light'}`}
 | 
				
			||||||
                        onClick={() => selectedImage && handleDownload(selectedImage)}
 | 
					                        onClick={() => selectedImage && handleDownload(selectedImage)}
 | 
				
			||||||
                        disabled={!selectedImage}
 | 
					                        disabled={!selectedImage}
 | 
				
			||||||
                    >
 | 
					                    >
 | 
				
			||||||
 | 
				
			|||||||
@ -63,30 +63,30 @@ const GalleryThumbnail = ({ id, columns, onSelect, title, showNsfw, nsfw, subscr
 | 
				
			|||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                            <div className="text-white flex justify-between">
 | 
					                            <div className="text-white flex justify-between">
 | 
				
			||||||
                                <div className="flex items-center">
 | 
					                                <div className="flex items-center">
 | 
				
			||||||
                                    <span className="bg-neroshi-blue-900   text-white mr-2 px-2 py-1 rounded-md text-sm flex items-center h-full">
 | 
					                                    <span className="bg-secondary text-white mr-2 px-2 py-1 rounded-md text-sm flex items-center h-full">
 | 
				
			||||||
                                        <span className="text-center">{imageCount}</span>
 | 
					                                        <span className="text-center">{imageCount}</span>
 | 
				
			||||||
                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" className="pl-2 size-6">
 | 
					                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" className="pl-2 size-6">
 | 
				
			||||||
                                            <path strokeLinecap="round" strokeLinejoin="round" d="m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
 | 
					                                            <path strokeLinecap="round" strokeLinejoin="round" d="m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
 | 
				
			||||||
                                        </svg>
 | 
					                                        </svg>
 | 
				
			||||||
                                    </span>
 | 
					                                    </span>
 | 
				
			||||||
                                    {nsfwState && (
 | 
					                                    {nsfwState && (
 | 
				
			||||||
                                        <span className=" bg-red-900 text-white px-2 py-1 mr-2 rounded-md text-sm h-full flex items-center">NSFW</span>
 | 
					                                        <span className=" bg-error text-white px-2 py-1 mr-2 rounded-md text-sm h-full flex items-center">NSFW</span>
 | 
				
			||||||
                                    )}
 | 
					                                    )}
 | 
				
			||||||
                                    {subscription === "Free" && (
 | 
					                                    {subscription === "Free" && (
 | 
				
			||||||
                                        <span className=" bg-gray-900 text-white px-2 py-1 rounded-md text-sm h-full flex items-center">Free</span>
 | 
					                                        <span className=" bg-free text-white px-2 py-1 rounded-md text-sm h-full flex items-center">Free</span>
 | 
				
			||||||
                                    )}
 | 
					                                    )}
 | 
				
			||||||
                                    {subscription === "Tier 1" && (
 | 
					                                    {subscription === "Tier 1" && (
 | 
				
			||||||
                                        <span className=" bg-purple-600 text-white px-2 py-1 rounded-md text-sm h-full flex items-center">Tier 1</span>
 | 
					                                        <span className=" bg-tier1 text-white px-2 py-1 rounded-md text-sm h-full flex items-center">Tier 1</span>
 | 
				
			||||||
                                    )}
 | 
					                                    )}
 | 
				
			||||||
                                    {subscription === "Tier 2" && (
 | 
					                                    {subscription === "Tier 2" && (
 | 
				
			||||||
                                        <span className=" bg-pink-700 text-white px-2 py-1 rounded-md text-sm h-full flex items-center">Tier 2</span>
 | 
					                                        <span className=" bg-tier2 text-white px-2 py-1 rounded-md text-sm h-full flex items-center">Tier 2</span>
 | 
				
			||||||
                                    )}
 | 
					                                    )}
 | 
				
			||||||
                                    {subscription === "Tier 3" && (
 | 
					                                    {subscription === "Tier 3" && (
 | 
				
			||||||
                                        <span className=" bg-fuchsia-500 text-white px-2 py-1 rounded-md text-sm h-full flex items-center">Tier 3</span>
 | 
					                                        <span className=" bg-tier3 text-white px-2 py-1 rounded-md text-sm h-full flex items-center">Tier 3</span>
 | 
				
			||||||
                                    )}
 | 
					                                    )}
 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                            <div className="text-white flex justify-between">
 | 
					                            {/* <div className="text-white flex justify-between">
 | 
				
			||||||
                                <div>
 | 
					                                <div>
 | 
				
			||||||
                                    <div className="flex">
 | 
					                                    <div className="flex">
 | 
				
			||||||
                                        {tagsState.map((tag, index) => (
 | 
					                                        {tagsState.map((tag, index) => (
 | 
				
			||||||
@ -100,11 +100,11 @@ const GalleryThumbnail = ({ id, columns, onSelect, title, showNsfw, nsfw, subscr
 | 
				
			|||||||
                                        ))}
 | 
					                                        ))}
 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
                            </div>
 | 
					                            </div> */}
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </>
 | 
					                    </>
 | 
				
			||||||
                ) : (
 | 
					                ) : (
 | 
				
			||||||
                    <div className="animate-pulse bg-neroshi-blue-950 rounded-3xl" style={{ width: '20rem', height: '20rem' }}></div>
 | 
					                    <div className="animate-pulse bg-secondary-light rounded-3xl" style={{ width: '20rem', height: '20rem' }}></div>
 | 
				
			||||||
                )}
 | 
					                )}
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -22,7 +22,7 @@ export default async function AuthButton() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  const heads = headers()
 | 
					  const heads = headers()
 | 
				
			||||||
  const currentPage = heads.get('x-path')
 | 
					  const currentPage = heads.get('x-path')
 | 
				
			||||||
 | 
					console.log(currentPage)
 | 
				
			||||||
  const getGravatarUrl = () => {
 | 
					  const getGravatarUrl = () => {
 | 
				
			||||||
    if (user == null) {
 | 
					    if (user == null) {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@ -37,12 +37,12 @@ export default async function AuthButton() {
 | 
				
			|||||||
  const url = getGravatarUrl();
 | 
					  const url = getGravatarUrl();
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <div className="flex justify-center items-center pt-2 ">
 | 
					    <div className="flex justify-center items-center pt-2 ">
 | 
				
			||||||
      <nav className="w-auto bg-neroshi-blue-300 bg-opacity-10  flex justify-center z-10 h-16 animate-in rounded-md" style={{ backdropFilter: 'blur(10px)' }}>
 | 
					      <nav className="w-auto bg-info bg-opacity-80  flex justify-center z-10 h-16 animate-in rounded-md" style={{ backdropFilter: 'blur(10px)' }}>
 | 
				
			||||||
        <div className="w-full max-w-2xl flex justify-between items-center p-3 text-sm">
 | 
					        <div className="w-full max-w-2xl flex justify-between items-center p-3 text-sm">
 | 
				
			||||||
          <div className="flex items-center gap-2 z-10">
 | 
					          <div className="flex items-center gap-2 z-10">
 | 
				
			||||||
            <Link
 | 
					            <Link
 | 
				
			||||||
              href="/gallery"
 | 
					              href="/gallery"
 | 
				
			||||||
              className={`py-2 px-3 flex rounded-md no-underline ${currentPage === '/gallery' ? 'bg-neroshi-blue-800 hover:bg-neroshi-blue-700' : 'bg-neroshi-blue-900 hover:bg-neroshi-blue-800'}`}
 | 
					              className={`py-2 px-3 flex rounded-md no-underline ${currentPage!="gallery" ? 'bg-primary hover:bg-primary-light' : 'bg-secondary hover:bg-secondary-light'}`}
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
					              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
				
			||||||
                <path strokeLinecap="round" strokeLinejoin="round" d="m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
 | 
					                <path strokeLinecap="round" strokeLinejoin="round" d="m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
 | 
				
			||||||
@ -52,7 +52,7 @@ export default async function AuthButton() {
 | 
				
			|||||||
            </Link>
 | 
					            </Link>
 | 
				
			||||||
            <Link
 | 
					            <Link
 | 
				
			||||||
              href="/livestream"
 | 
					              href="/livestream"
 | 
				
			||||||
              className={`py-2 px-3 flex rounded-md no-underline ${currentPage === '/gallery' ? 'bg-neroshi-blue-800 hover:bg-neroshi-blue-700' : 'bg-neroshi-blue-900 hover:bg-neroshi-blue-800'}`}
 | 
					              className={`py-2 px-3 flex rounded-md no-underline  ${currentPage!="livestream" ? 'bg-primary hover:bg-primary-light' : 'bg-secondary hover:bg-secondary-light'}`}
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
					              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
				
			||||||
                <path strokeLinecap="round" strokeLinejoin="round" d="m15.75 10.5 4.72-4.72a.75.75 0 0 1 1.28.53v11.38a.75.75 0 0 1-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25h-9A2.25 2.25 0 0 0 2.25 7.5v9a2.25 2.25 0 0 0 2.25 2.25Z" />
 | 
					                <path strokeLinecap="round" strokeLinejoin="round" d="m15.75 10.5 4.72-4.72a.75.75 0 0 1 1.28.53v11.38a.75.75 0 0 1-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25h-9A2.25 2.25 0 0 0 2.25 7.5v9a2.25 2.25 0 0 0 2.25 2.25Z" />
 | 
				
			||||||
@ -61,7 +61,7 @@ export default async function AuthButton() {
 | 
				
			|||||||
            </Link>
 | 
					            </Link>
 | 
				
			||||||
            <Link
 | 
					            <Link
 | 
				
			||||||
              href="/commissions"
 | 
					              href="/commissions"
 | 
				
			||||||
              className={`py-2 px-3 flex rounded-md no-underline ${currentPage === '/gallery' ? 'bg-neroshi-blue-800 hover:bg-neroshi-blue-700' : 'bg-neroshi-blue-900 hover:bg-neroshi-blue-800'}`}
 | 
					              className={`py-2 px-3 flex rounded-md no-underline  ${currentPage!="commissions" ? 'bg-primary hover:bg-primary-light' : 'bg-secondary hover:bg-secondary-light'}`}
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
					              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
				
			||||||
                <path strokeLinecap="round" strokeLinejoin="round" d="M15.75 10.5V6a3.75 3.75 0 1 0-7.5 0v4.5m11.356-1.993 1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 0 1-1.12-1.243l1.264-12A1.125 1.125 0 0 1 5.513 7.5h12.974c.576 0 1.059.435 1.119 1.007ZM8.625 10.5a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm7.5 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
 | 
					                <path strokeLinecap="round" strokeLinejoin="round" d="M15.75 10.5V6a3.75 3.75 0 1 0-7.5 0v4.5m11.356-1.993 1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 0 1-1.12-1.243l1.264-12A1.125 1.125 0 0 1 5.513 7.5h12.974c.576 0 1.059.435 1.119 1.007ZM8.625 10.5a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm7.5 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
 | 
				
			||||||
@ -70,7 +70,7 @@ export default async function AuthButton() {
 | 
				
			|||||||
            </Link>
 | 
					            </Link>
 | 
				
			||||||
            <Link
 | 
					            <Link
 | 
				
			||||||
              href="/subscriptions"
 | 
					              href="/subscriptions"
 | 
				
			||||||
              className={`py-2 px-3 flex rounded-md no-underline ${currentPage === '/gallery' ? 'bg-neroshi-blue-800 hover:bg-neroshi-blue-700' : 'bg-neroshi-blue-900 hover:bg-neroshi-blue-800'}`}
 | 
					              className={`py-2 px-3 flex rounded-md no-underline  ${currentPage!="subscriptions" ? 'bg-primary hover:bg-primary-light' : 'bg-secondary hover:bg-secondary-light'}`}
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
					              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
				
			||||||
                <path strokeLinecap="round" strokeLinejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
 | 
					                <path strokeLinecap="round" strokeLinejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
 | 
				
			||||||
@ -82,7 +82,7 @@ export default async function AuthButton() {
 | 
				
			|||||||
            {(user != null) ? (
 | 
					            {(user != null) ? (
 | 
				
			||||||
              <>
 | 
					              <>
 | 
				
			||||||
                <form action={signOut}>
 | 
					                <form action={signOut}>
 | 
				
			||||||
                  <button className="py-2 px-4 ml-2 rounded-md no-underline bg-pink-950 hover:bg-pink-900">
 | 
					                  <button className="py-2 px-4 ml-2 rounded-md no-underline bg-error hover:bg-error-light">
 | 
				
			||||||
                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 md:hidden ">
 | 
					                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 md:hidden ">
 | 
				
			||||||
                      <path strokeLinecap="round" strokeLinejoin="round" d="M13.5 10.5V6.75a4.5 4.5 0 1 1 9 0v3.75M3.75 21.75h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H3.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" />
 | 
					                      <path strokeLinecap="round" strokeLinejoin="round" d="M13.5 10.5V6.75a4.5 4.5 0 1 1 9 0v3.75M3.75 21.75h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H3.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" />
 | 
				
			||||||
                    </svg>
 | 
					                    </svg>
 | 
				
			||||||
@ -94,7 +94,7 @@ export default async function AuthButton() {
 | 
				
			|||||||
            ) : (
 | 
					            ) : (
 | 
				
			||||||
              <Link
 | 
					              <Link
 | 
				
			||||||
                href="/subscriptions"
 | 
					                href="/subscriptions"
 | 
				
			||||||
                className={`ml-2 py-2 px-3 flex rounded-md no-underline ${currentPage === '/gallery' ? 'bg-neroshi-blue-800 hover:bg-neroshi-blue-700' : 'bg-neroshi-blue-900 hover:bg-neroshi-blue-800'}`}
 | 
					                className={`ml-2 py-2 px-3 flex rounded-md no-underline  bg-success hover:bg-secondary`}
 | 
				
			||||||
              >
 | 
					              >
 | 
				
			||||||
                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
					                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor" className="size-6 lg:hidden  block">
 | 
				
			||||||
                  <path strokeLinecap="round" strokeLinejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
 | 
					                  <path strokeLinecap="round" strokeLinejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
 | 
				
			||||||
 | 
				
			|||||||
@ -56,7 +56,6 @@ const SearchInput = ({ tagsChanged, searchChanged, nsfwChanged }: SearchInputPro
 | 
				
			|||||||
  }, []);
 | 
					  }, []);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const tagOptions = tags.map((tag: { name: string; }) => ({ value: tag.name, label: tag.name }));
 | 
					  const tagOptions = tags.map((tag: { name: string; }) => ({ value: tag.name, label: tag.name }));
 | 
				
			||||||
  console.log(tagOptions)
 | 
					 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <>
 | 
					    <>
 | 
				
			||||||
      <div className="relative md:w-full lg:w-1/2 mx-auto flex flex-col items-center justify-center z-10">
 | 
					      <div className="relative md:w-full lg:w-1/2 mx-auto flex flex-col items-center justify-center z-10">
 | 
				
			||||||
@ -92,12 +91,13 @@ const SearchInput = ({ tagsChanged, searchChanged, nsfwChanged }: SearchInputPro
 | 
				
			|||||||
                        setSelectedTagsInput([value])
 | 
					                        setSelectedTagsInput([value])
 | 
				
			||||||
                      }
 | 
					                      }
 | 
				
			||||||
                    }}
 | 
					                    }}
 | 
				
			||||||
                    value={selectedTagsInput} primaryColor={'neroshi-blue'} />
 | 
					                    value={selectedTagsInput} 
 | 
				
			||||||
 | 
					                    primaryColor={"indigo"} />
 | 
				
			||||||
                  <span className="flex items-center rounded rounded-l-none border-0 px-3 font-bold text-grey-100">
 | 
					                  <span className="flex items-center rounded rounded-l-none border-0 px-3 font-bold text-grey-100">
 | 
				
			||||||
                    <button
 | 
					                    <button
 | 
				
			||||||
                      onClick={() => { setNsfw(!nsfw) }}
 | 
					                      onClick={() => { setNsfw(!nsfw) }}
 | 
				
			||||||
                      type="button"
 | 
					                      type="button"
 | 
				
			||||||
                      className={`animate-in text-sm text-white font-bold py-1 w-16 px-2 rounded ml-2 ${nsfw ? "bg-pink-900 hover:bg-pink-800" : "bg-green-900 hover:bg-green-800"}`}
 | 
					                      className={`animate-in text-sm text-white font-bold py-1 w-16 px-2 rounded ml-2 ${nsfw ? "bg-error hover:bg-error-light" : "bg-success hover:bg-success-light"}`}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    >
 | 
					                    >
 | 
				
			||||||
                      {nsfw ? "NSFW" : "SFW"}
 | 
					                      {nsfw ? "NSFW" : "SFW"}
 | 
				
			||||||
 | 
				
			|||||||
@ -14,8 +14,6 @@ const TagSelector = forwardRef<TagSelectorProps, { tagSearch: string, selectedTa
 | 
				
			|||||||
    const [tagSearch, setTagSearch] = useState<string>(props.tagSearch);
 | 
					    const [tagSearch, setTagSearch] = useState<string>(props.tagSearch);
 | 
				
			||||||
    const [selectedTags, setSelectedTags] = useState<string[]>(props.selectedTagsInput);
 | 
					    const [selectedTags, setSelectedTags] = useState<string[]>(props.selectedTagsInput);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    console.log()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const handleTag = (tag: string) => {
 | 
					    const handleTag = (tag: string) => {
 | 
				
			||||||
        if (selectedTags.includes(tag)) {
 | 
					        if (selectedTags.includes(tag)) {
 | 
				
			||||||
            setSelectedTags(selectedTags.filter(t => t !== tag));
 | 
					            setSelectedTags(selectedTags.filter(t => t !== tag));
 | 
				
			||||||
 | 
				
			|||||||
@ -16,31 +16,42 @@ module.exports = {
 | 
				
			|||||||
      },
 | 
					      },
 | 
				
			||||||
      aspectRatio: {}, // enable aspect-ratio plugin
 | 
					      aspectRatio: {}, // enable aspect-ratio plugin
 | 
				
			||||||
      textShadow: {
 | 
					      textShadow: {
 | 
				
			||||||
        'pink-glow': '0 0 4px #524FFD, 0 0 4px #524FFD, 0 0 4px #524FFD, 0 0 4px #524FFD',
 | 
					        // 'pink-glow': '0 0 4px #524FFD, 0 0 4px #524FFD, 0 0 4px #524FFD, 0 0 4px #524FFD',
 | 
				
			||||||
        'purple-grey-glow': '0 0 4px #9f7aea, 0 0 15px #9f7aea, 0 0 20px #9f7aea, 0 0 25px #9f7aea',
 | 
					 | 
				
			||||||
        'green-grey-glow': '0 0 4px #32CD32, 0 0 15px #32CD32, 0 0 20px #32CD32, 0 0 25px #32CD32',
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      colors: {
 | 
					      colors: {
 | 
				
			||||||
        
 | 
					        'primary': '#201240',
 | 
				
			||||||
        "neroshi-blue": {
 | 
					        'primary-light': '#403260',
 | 
				
			||||||
          50: "#EBEBFF",
 | 
					        'primary-dark': '#100120',
 | 
				
			||||||
          100: "#D2D2FE",
 | 
					        'secondary': '#4F3D70',
 | 
				
			||||||
          200: "#A6A4FE",
 | 
					        'secondary-light': '#6F5D90',
 | 
				
			||||||
          300: "#7E7CFD",
 | 
					        'secondary-dark': '#2F1D50',
 | 
				
			||||||
          400: "#524FFD",
 | 
					        'free': '#04396F',
 | 
				
			||||||
          500: "#2522FC",
 | 
					        'free-light': '#04396F',
 | 
				
			||||||
          600: "#0703E2",
 | 
					        'free-dark': '#001A35',
 | 
				
			||||||
          700: "#0502AB",
 | 
					        'tier1': '#006197',
 | 
				
			||||||
          800: "#03026F",
 | 
					        'tier1-light': '#006197',
 | 
				
			||||||
          900: "#020137",
 | 
					        'tier1-dark': '#003D5E',
 | 
				
			||||||
          950: "#01001E"
 | 
					        'tier2': '#008BB3',
 | 
				
			||||||
        },
 | 
					        'tier2-light': '#4AC8E1',
 | 
				
			||||||
        background: "hsl(var(--background))",
 | 
					        'tier2-dark': '#005F7A',
 | 
				
			||||||
        foreground: "hsl(var(--foreground))",
 | 
					        'tier3': '#00B5C0',
 | 
				
			||||||
        btn: {
 | 
					        'tier3-light': '#6CE2E8',
 | 
				
			||||||
          background: "hsl(var(--btn-background))",
 | 
					        'tier3-dark': '#008B94',
 | 
				
			||||||
          "background-hover": "hsl(var(--btn-background-hover))",
 | 
					        'error': '#862117',
 | 
				
			||||||
        },
 | 
					        'error-light': '#C44C4C',
 | 
				
			||||||
 | 
					        'error-dark': '#5C0D0D',
 | 
				
			||||||
 | 
					        'success': '#00C9A6',
 | 
				
			||||||
 | 
					        'success-light': '#20E9C6',
 | 
				
			||||||
 | 
					        'success-dark': '#00A986',
 | 
				
			||||||
 | 
					        'warning': '#E17558',
 | 
				
			||||||
 | 
					        'warning-light': '#E39578',
 | 
				
			||||||
 | 
					        'warning-dark': '#C15538',
 | 
				
			||||||
 | 
					        'info': '#222140',
 | 
				
			||||||
 | 
					        'info-light': '#424260',
 | 
				
			||||||
 | 
					        'info-dark': '#020120',
 | 
				
			||||||
 | 
					        'neutral': '#78639A',
 | 
				
			||||||
 | 
					        'neutral-light': '#9883BA',
 | 
				
			||||||
 | 
					        'neutral-dark': '#58427A',
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
@ -49,4 +60,4 @@ module.exports = {
 | 
				
			|||||||
    require('tailwindcss-textshadow'),
 | 
					    require('tailwindcss-textshadow'),
 | 
				
			||||||
    require('@tailwindcss/aspect-ratio')
 | 
					    require('@tailwindcss/aspect-ratio')
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user