diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..351f72d Binary files /dev/null and b/.DS_Store differ diff --git a/.github/workflows/jekyll-docker.yml b/.github/workflows/jekyll-docker.yml new file mode 100644 index 0000000..60e5736 --- /dev/null +++ b/.github/workflows/jekyll-docker.yml @@ -0,0 +1,20 @@ +name: Jekyll site CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build the site in the jekyll/builder container + run: | + docker run \ + -v ${{ github.workspace }}:/srv/jekyll -v ${{ github.workspace }}/_site:/srv/jekyll/_site \ + jekyll/builder:latest /bin/bash -c "chmod -R 777 /srv/jekyll && jekyll build --future" diff --git a/CatalogVisualMockupGrid.jsx b/CatalogVisualMockupGrid.jsx new file mode 100644 index 0000000..faec14f --- /dev/null +++ b/CatalogVisualMockupGrid.jsx @@ -0,0 +1,54 @@ +import { useEffect, useState } from "react"; +import products from "./data/products.json"; + +export default function CatalogVisualMockupGrid() { + const [productList, setProductList] = useState(products || []); + + useEffect(() => { + if (!products || products.length === 0) { + fetch("/data/products.json") + .then((res) => res.json()) + .then((data) => setProductList(data)) + .catch((err) => console.error("Failed to load products", err)); + } + }, []); + + return ( +
+
+

+ Catalog — Grid View Mockup +

+

+ A clean grid layout showcasing products with images, names, and prices. +

+
+ +
+ {productList.map((product, idx) => ( +
+
+ {product.name} +
+
+

+ {product.name} +

+
+ L.{product.price} +
+
+
+ ))} +
+
+ ); +} + diff --git a/Pastebin.wdgt/main.js b/Pastebin.wdgt/main.js index 4c220d5..a000283 100644 --- a/Pastebin.wdgt/main.js +++ b/Pastebin.wdgt/main.js @@ -25,7 +25,7 @@ $(document).ready(function() { $("#loading_notice").fadeIn(200); if ($("#paste_username").val() != "" && $("#paste_password").val() != "") { - $.post("http://pastebin.com/api/api_login.php", { + $.post("https://pastebin.com/api/api_login.php", { api_dev_key: api_key, api_user_name: $("#paste_username").val(), api_user_password: $("#paste_password").val() @@ -51,7 +51,7 @@ $(document).ready(function() { }); function post_paste(userkey) { -$.post("http://pastebin.com/api/api_post.php", +$.post("https://pastebin.com/api/api_post.php", { api_dev_key: api_key, api_option: 'paste', diff --git a/data/products.json b/data/products.json new file mode 100644 index 0000000..69501b7 --- /dev/null +++ b/data/products.json @@ -0,0 +1,13 @@ +[ + { "name": "NailFrida", "price": 299, "img": "/images/catalog/nailfrida.jpg" }, + { "name": "BreatheFrida Vapor Bath Bomb", "price": 295, "img": "/images/catalog/breathefrida.jpg" }, + { "name": "Sleep Vapor Bath Bombs", "price": 295, "img": "/images/catalog/sleepvapor.jpg" }, + { "name": "Baby Basics Kit", "price": 1195, "img": "/images/catalog/babybasics.jpg" }, + { "name": "Gas + Colic Heating Pad", "price": 750, "img": "/images/catalog/gascolic.jpg" }, + { "name": "Baby Grooming Kit", "price": 1095, "img": "/images/catalog/babygrooming.jpg" }, + { "name": "Windi the Gaspasser", "price": 395, "img": "/images/catalog/windi.jpg" }, + { "name": "Push Pop Feeder", "price": 295, "img": "/images/catalog/pushpop.jpg" }, + { "name": "SmileFrida Finger Toothbrush", "price": 195, "img": "/images/catalog/smilefrida.jpg" }, + { "name": "NailFrida S-Curved Nail Files", "price": 395, "img": "/images/catalog/nailfridafile.jpg" }, + { "name": "Not-Too-Cold-To-Hold Teether", "price": 295, "img": "/images/catalog/teether.jpg" } +] diff --git a/frida-catalog-premium (1).jsx b/frida-catalog-premium (1).jsx new file mode 100644 index 0000000..fe886d6 --- /dev/null +++ b/frida-catalog-premium (1).jsx @@ -0,0 +1,597 @@ +import React, { useState, useEffect, useRef } from 'react'; +import { Search, Filter, ShoppingCart, MessageCircle, Package, TrendingUp, Users, DollarSign, Eye, Heart, Share2, X, ChevronRight, Star, Zap, Award, Check, Sparkles } from 'lucide-react'; + +const FridaCatalog = () => { + // Product data with inventory + const products = [ + { + id: 1, + name: "NoseFrida Aspirador Nasal", + category: "nasal", + image: "https://i.ibb.co/sJDFRvGz/FB-Nose-Fridasolo-Thumbnail-badgeupdate3-992x-progressive-4.webp", + description: "El aspirador nasal #1 recomendado por pediatras. Diseño higiénico y efectivo para aliviar la congestión nasal del bebé.", + features: ["Recomendado por pediatras", "Higiénico", "Sin BPA"], + badge: "Bestseller", + price: 450, + stock: 24, + sold: 156, + rating: 4.9 + }, + { + id: 2, + name: "Kit Ultimate Baby Essentials", + category: "kits", + image: "https://i.ibb.co/Q3rzP4cB/Ultimate-Baby-Kit-B0-BLCTTMRB-Frame-1-992x-progressive-3.webp", + description: "Kit completo con todos los esenciales para el cuidado del bebé. Incluye 10+ productos premium.", + features: ["Kit completo", "10+ productos", "Regalo perfecto"], + badge: "Premium", + price: 2850, + stock: 8, + sold: 42, + rating: 5.0 + }, + { + id: 3, + name: "Electric NoseFrida 2.0", + category: "nasal", + image: "https://i.ibb.co/GvNYyZ69/Electric-Nose-Frida-2-0-A-Frame-1-992x-progressive-3.webp", + description: "Versión eléctrica del famoso aspirador nasal. 3 niveles de succión para máxima efectividad.", + features: ["Eléctrico", "3 niveles", "Silencioso"], + price: 1250, + stock: 15, + sold: 89, + rating: 4.8 + }, + { + id: 4, + name: "3 en 1 Humidificador + Purificador", + category: "sleep", + image: "https://i.ibb.co/Y7K93ZXh/3-in-1-Sound-Machine-Air-Purifier-Nightlight-B08-Q2-R8-KQ7-Frame-1-992x-progressive.webp", + description: "Máquina de sonido, purificador de aire y luz nocturna en un solo dispositivo.", + features: ["3 en 1", "Sonidos relajantes", "Purifica el aire"], + badge: "Innovación", + price: 1890, + stock: 12, + sold: 67, + rating: 4.7 + }, + { + id: 5, + name: "Cortaúñas Eléctrico", + category: "grooming", + image: "https://i.ibb.co/8LY11rTc/Electric-Nail-Trimmer-1-992x-progressive-2.webp", + description: "Cortaúñas eléctrico ultra seguro con luz LED. Ideal para recién nacidos.", + features: ["Luz LED", "Ultra seguro", "Silencioso"], + price: 680, + stock: 31, + sold: 103, + rating: 4.6 + }, + { + id: 6, + name: "Kit Baby Basics", + category: "kits", + image: "https://i.ibb.co/X0VQWJM/Baby-Basics-Kit-B07-BYLG8-R8-Frame-1-1-992x-progressive-1.webp", + description: "Kit esencial con productos básicos de higiene y cuidado del bebé.", + features: ["Esenciales", "Alta calidad", "Compacto"], + price: 1450, + stock: 18, + sold: 94, + rating: 4.7 + }, + { + id: 7, + name: "Humidificador BreatheFrida XL", + category: "sleep", + image: "https://i.ibb.co/HWrw0s1/FB-Humi-XL-Hero-CAN-992x-progressive-3.webp", + description: "Humidificador de gran capacidad con tecnología de vapor frío.", + features: ["XL capacidad", "Vapor frío", "12h duración"], + price: 1350, + stock: 9, + sold: 51, + rating: 4.8 + }, + { + id: 8, + name: "Push & Pop Alimentador", + category: "grooming", + image: "https://i.ibb.co/FbZs4M3F/Push-Pop-Feeder-Vibrant-Teal-1ct-Hero-992x-progressive-1.webp", + description: "Alimentador de frutas innovador para introducir sólidos de forma segura.", + features: ["Seguro", "Fácil limpieza", "Sin BPA"], + price: 320, + stock: 45, + sold: 178, + rating: 4.5 + }, + { + id: 9, + name: "Spray Nasal con Solución Salina", + category: "nasal", + image: "https://i.ibb.co/hx3QjX3P/FB-Nose-Frida-Saline-Rinse-Digital-Shelf-Ecomm-1-992x-progressive-1.webp", + description: "Spray nasal suave con solución salina natural para aliviar la congestión.", + features: ["Natural", "Suave", "0+ meses"], + price: 280, + stock: 52, + sold: 234, + rating: 4.6 + }, + { + id: 10, + name: "Vapor Rub Eucalipto", + category: "health", + image: "https://i.ibb.co/x8134tXc/202307-FBVapor-Rub-Eucalyptus-Digital-Shelfv1copy-992x-progressive.webp", + description: "Bálsamo calmante con eucalipto para aliviar la congestión y mejorar el sueño.", + features: ["Eucalipto natural", "Calmante", "3+ meses"], + price: 380, + stock: 38, + sold: 145, + rating: 4.7 + } + ]; + + const [filteredProducts, setFilteredProducts] = useState(products); + const [selectedCategory, setSelectedCategory] = useState('all'); + const [searchQuery, setSearchQuery] = useState(''); + const [selectedProduct, setSelectedProduct] = useState(null); + const [showModal, setShowModal] = useState(false); + const [cartItems, setCartItems] = useState([]); + const [showCart, setShowCart] = useState(false); + const [viewMode, setViewMode] = useState('grid'); + const [sortBy, setSortBy] = useState('popular'); + const [favorites, setFavorites] = useState([]); + const [showDashboard, setShowDashboard] = useState(false); + + // Categories + const categories = [ + { id: 'all', name: 'Todos', icon: '📦', color: 'bg-gradient-to-r from-purple-500 to-pink-500' }, + { id: 'nasal', name: 'Cuidado Nasal', icon: '👃', color: 'bg-gradient-to-r from-blue-500 to-cyan-500' }, + { id: 'bath', name: 'Baño', icon: '🛁', color: 'bg-gradient-to-r from-teal-500 to-green-500' }, + { id: 'grooming', name: 'Aseo', icon: '✨', color: 'bg-gradient-to-r from-yellow-500 to-orange-500' }, + { id: 'health', name: 'Salud', icon: '💊', color: 'bg-gradient-to-r from-red-500 to-pink-500' }, + { id: 'sleep', name: 'Sueño', icon: '🌙', color: 'bg-gradient-to-r from-indigo-500 to-purple-500' }, + { id: 'kits', name: 'Kits', icon: '🎁', color: 'bg-gradient-to-r from-pink-500 to-rose-500' }, + ]; + + // Stats calculation + const stats = { + totalProducts: products.length, + totalStock: products.reduce((sum, p) => sum + p.stock, 0), + totalSold: products.reduce((sum, p) => sum + p.sold, 0), + revenue: products.reduce((sum, p) => sum + (p.sold * p.price), 0), + lowStock: products.filter(p => p.stock < 10).length, + topSeller: products.reduce((max, p) => p.sold > max.sold ? p : max, products[0]) + }; + + // Filter and sort products + useEffect(() => { + let filtered = products; + + // Category filter + if (selectedCategory !== 'all') { + filtered = filtered.filter(p => p.category === selectedCategory); + } + + // Search filter + if (searchQuery) { + filtered = filtered.filter(p => + p.name.toLowerCase().includes(searchQuery.toLowerCase()) || + p.description.toLowerCase().includes(searchQuery.toLowerCase()) + ); + } + + // Sorting + switch(sortBy) { + case 'popular': + filtered.sort((a, b) => b.sold - a.sold); + break; + case 'price-low': + filtered.sort((a, b) => a.price - b.price); + break; + case 'price-high': + filtered.sort((a, b) => b.price - a.price); + break; + case 'rating': + filtered.sort((a, b) => b.rating - a.rating); + break; + case 'stock': + filtered.sort((a, b) => a.stock - b.stock); + break; + default: + break; + } + + setFilteredProducts(filtered); + }, [selectedCategory, searchQuery, sortBy]); + + // WhatsApp integration + const sendWhatsApp = (message) => { + const phone = "50494840343"; + window.open(`https://wa.me/${phone}?text=${encodeURIComponent(message)}`, '_blank'); + }; + + // Add to cart + const addToCart = (product) => { + setCartItems([...cartItems, { ...product, quantity: 1 }]); + }; + + // Toggle favorite + const toggleFavorite = (productId) => { + setFavorites(prev => + prev.includes(productId) + ? prev.filter(id => id !== productId) + : [...prev, productId] + ); + }; + + // Dashboard Component + const Dashboard = () => ( +
+
+
+
+

+ Dashboard ColorPlay +

+

Análisis en tiempo real - Frida Baby Collection

+
+ +
+ + {/* Stats Grid */} +
+
+
+ + {stats.totalProducts} +
+

Productos Totales

+
+12% este mes
+
+ +
+
+ + {stats.totalSold} +
+

Unidades Vendidas

+
+24% este mes
+
+ +
+
+ + L{(stats.revenue / 1000).toFixed(1)}K +
+

Ingresos Totales

+
+18% este mes
+
+ +
+
+ + {stats.lowStock} +
+

Inventario Bajo

+
Requiere atención
+
+
+ + {/* Top Products */} +
+

+ + Top 5 Productos Más Vendidos +

+
+ {products.sort((a, b) => b.sold - a.sold).slice(0, 5).map((product, idx) => ( +
+
+ #{idx + 1} + {product.name} +
+

{product.name}

+

{product.sold} vendidos

+
+
+
+

L{(product.sold * product.price).toLocaleString()}

+

Stock: {product.stock}

+
+
+ ))} +
+
+ + {/* Quick Actions */} +
+ + + +
+
+
+ ); + + // Product Modal + const ProductModal = () => { + if (!selectedProduct) return null; + + return ( +
+
+
+ {selectedProduct.name} + + {selectedProduct.badge && ( + + {selectedProduct.badge} + + )} +
+ +
+
+
+

{selectedProduct.name}

+
+
+ + {selectedProduct.rating} +
+ + {selectedProduct.sold} vendidos + + + {selectedProduct.stock} en stock + +
+
+
+

L{selectedProduct.price}

+

Precio exclusivo ColorPlay

+
+
+ +

{selectedProduct.description}

+ +
+

Características Premium:

+
+ {selectedProduct.features.map(feature => ( + + + {feature} + + ))} +
+
+ +
+ + + +
+
+
+
+ ); + }; + + return ( +
+ {/* Header */} +
+
+
+
+
+

+ FRIDA BABY +

+

Colección Premium • ColorPlay Honduras

+
+
+ +
+ + + +
+
+
+
+ + {/* Quick Stats Bar */} +
+
+ + + {stats.totalProducts} Productos + + + + Envío Express 24h + + + + Distribuidor Exclusivo + +
+
+ + {/* Search and Filters */} +
+
+
+
+ + setSearchQuery(e.target.value)} + className="w-full pl-12 pr-4 py-3 bg-gray-50 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500" + /> +
+ +
+ + {/* Category Pills */} +
+ {categories.map(cat => ( + + ))} +
+
+ + {/* Products Grid */} +
+ {filteredProducts.map((product, idx) => ( +
{ + setSelectedProduct(product); + setShowModal(true); + }} + style={{ animationDelay: `${idx * 50}ms` }}> + +
+ {product.name} + {product.badge && ( + + {product.badge} + + )} + {product.stock < 10 && ( + + ¡Últimas {product.stock}! + + )} + +
+ +
+

{product.name}

+ +
+
+ + {product.rating} +
+ {product.sold} vendidos +
+ +
+ {product.features.slice(0, 2).map(feature => ( + + {feature} + + ))} +
+ +
+ L{product.price} + +
+
+
+ ))} +
+ + {filteredProducts.length === 0 && ( +
+ +

No se encontraron productos

+
+ )} +
+ + {/* Floating WhatsApp Button */} + + + {/* Modals */} + {showModal && } + {showDashboard && } +
+ ); +}; + +export default FridaCatalog; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..c24d7de --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "name": "pastebin-widget", + "version": "1.0.0", + "description": "Pastebin dashboard widget", + "scripts": { + "test": "echo 'No tests configured'" + } +}