Skip to content

Instantly share code, notes, and snippets.

View codigoconjuan's full-sized avatar

Juan Pablo De la torre Valdez codigoconjuan

View GitHub Profile
@codigoconjuan
codigoconjuan / prisma.ts
Created November 10, 2025 19:12
Cliente de Conexiones Prisma
import { PrismaClient } from '@/src/generated/prisma/client'
const globalForPrisma = global as unknown as { prisma: PrismaClient }
export const prisma =
globalForPrisma.prisma ||
new PrismaClient({
log: ['query'],
})
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
@codigoconjuan
codigoconjuan / categories.ts
Created November 10, 2025 18:43
Seeding con Prisma
export const categories = [
{
slug: "cafe",
name: "Café"
},
{
slug: "hamburguesa",
name: "Hamburguesas"
},
{
@codigoconjuan
codigoconjuan / DeleteProductModal.tsx
Last active July 16, 2025 14:49
Modal para Eliminar Producto en Astro
import { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react'
import { XMarkIcon } from '@heroicons/react/24/outline'
export default function DeleteProductModal() {
return (
<div>
<Dialog open={true} onClose={() => {} } className="relative z-10">
<DialogBackdrop
transition
@codigoconjuan
codigoconjuan / products.ts
Created July 9, 2025 20:02
Body para el Product Action de Astro
const body = {
title: input.title,
freshcoffee_categories: input.freshcoffee_category,
featured_media: input.featured_media,
status: 'publish',
...(input.variable_price === "true" ? {
acf: {
variable_price: input.variable_price,
small: {
size: 'Chico',
@codigoconjuan
codigoconjuan / product.action.schema.ts
Created July 9, 2025 19:40
Action de Zod para validación de Productos
import { nullToEmptyString } from '@/utils'
import { z } from 'astro:schema'
const CommonFields = {
title: z.preprocess(
nullToEmptyString,
z.string().trim().min(1, { message: 'El Título no puede ir vacío' }),
),
featured_media: z.preprocess(
nullToEmptyString,
@codigoconjuan
codigoconjuan / ProductPriceField.vue
Created July 9, 2025 18:36
Componentes de Precio Fijo y Variable en Vue y Astro
<template>
<div class="col-span-full">
<label for="price" class="block text-sm/6 font-medium text-gray-900">
Precio del Producto:
</label>
<div class="mt-2">
<input
id="price"
name="price"
type="number"
@codigoconjuan
codigoconjuan / VariablePriceCheck.vue
Created July 9, 2025 17:36
Precios Variables en Astro, Vue y WordPress
<template>
<div class="grid max-w-2xl grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6 md:col-span-2">
<div class="col-span-full">
<div class="mt-6 space-y-6">
<div class="flex gap-3">
<div class="flex h-6 shrink-0 items-center">
<div class="group grid size-4 grid-cols-1">
<input
id="variable_price" type="checkbox" aria-describedby="comments-description"
@codigoconjuan
codigoconjuan / UploadImage.tsx
Created July 8, 2025 23:41
Componente para Drag N Drop con Astro y WordPress
<div className="col-span-full">
<label
htmlFor="cover-photo"
className="block text-sm/6 font-medium text-gray-900">{label}
</label>
<div {...getRootProps({
className: `
mt-2 py-20 outline-1 outline-dashed -outline-offset-1 outline-gray-300 text-center
${isDragActive ? 'outline-gray-900 text-gray-900 bg-gray-200 ' : 'border-gray-400 text-gray-400 bg-white'}
${isDragReject ? 'border-none cursor-not-allowed' : ''}
@codigoconjuan
codigoconjuan / 1) new.astro
Last active July 16, 2025 14:43
Formulario de Productos en Astro y WordPress
---
import AdminLayout from "@/layouts/AdminLayout.astro";
---
<AdminLayout title='Nuevo Producto'>
<form class="mx-auto max-w-4xl">
<!-- ProductForm -->
<div class="mt-6 flex items-center justify-end gap-x-6">
<button
type="submit"
@codigoconjuan
codigoconjuan / ProductsMenu.tsx
Last active July 16, 2025 14:40
Menú de Acciones para Admin de Productos
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'
import { EllipsisVerticalIcon } from '@heroicons/react/20/solid'
type Props = {
name: string
id: number
}
export default function ProductMenu({name, id}: Props) {