mirror of
https://github.com/tabler/tabler.git
synced 2025-12-21 17:34:25 +04:00
Generate random data to demos (#2473)
This commit is contained in:
@@ -158,5 +158,93 @@
|
||||
{
|
||||
"text": "<strong>%p</strong> shared a new design: <strong>Modern Dashboard UI</strong>",
|
||||
"icon": "layout"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> completed the course: <strong>Advanced React Patterns</strong>",
|
||||
"icon": "certificate"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> started a new discussion: <strong>Best practices for mobile UI</strong>",
|
||||
"icon": "message-square"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> reached <strong>1000 followers</strong> milestone",
|
||||
"icon": "trophy"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> published a tutorial: <strong>Building Responsive Components</strong>",
|
||||
"icon": "book-open"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> organized a workshop: <strong>Design System Fundamentals</strong>",
|
||||
"icon": "users-group"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> contributed to <strong>Open Source Project</strong>",
|
||||
"icon": "git-branch"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> received a <strong>5-star review</strong> on their latest work",
|
||||
"icon": "star"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> launched a new product: <strong>TaskFlow Pro</strong>",
|
||||
"icon": "rocket"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> joined the mentorship program",
|
||||
"icon": "graduation-cap"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> created a design challenge: <strong>Minimalist Dashboard</strong>",
|
||||
"icon": "target"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> won the <strong>Design Award 2024</strong>",
|
||||
"icon": "award"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> started a podcast: <strong>Design & Development</strong>",
|
||||
"icon": "microphone"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> completed a <strong>30-day design challenge</strong>",
|
||||
"icon": "calendar-check"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> became a <strong>verified designer</strong>",
|
||||
"icon": "badge-check"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> published a case study: <strong>Redesigning E-commerce UX</strong>",
|
||||
"icon": "file-text"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> hosted a live stream: <strong>Design Q&A Session</strong>",
|
||||
"icon": "video-plus"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> created a design system: <strong>Component Library v2.0</strong>",
|
||||
"icon": "library"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> reached <strong>50k downloads</strong> on their template",
|
||||
"icon": "download"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> started a newsletter: <strong>Weekly Design Insights</strong>",
|
||||
"icon": "mail"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> collaborated on <strong>Community Design Project</strong>",
|
||||
"icon": "users"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> published a research paper: <strong>UI/UX Trends 2024</strong>",
|
||||
"icon": "file-search"
|
||||
},
|
||||
{
|
||||
"text": "<strong>%p</strong> became a <strong>featured creator</strong>",
|
||||
"icon": "crown"
|
||||
}
|
||||
]
|
||||
@@ -1,44 +1,332 @@
|
||||
[
|
||||
{
|
||||
"title": "And this isn't my nose. This is a false one.",
|
||||
"description": "Look, my liege! The Knights Who Say Ni demand a sacrifice! …Are you suggesting that coconuts migrate? Well, I got better.",
|
||||
"title": "How to Build a Modern Web App with Vue 3",
|
||||
"description": "Learn the fundamentals of Vue 3 and Composition API by creating a fully functional, modern web application from scratch.",
|
||||
"tags": [
|
||||
"vue",
|
||||
"javascript",
|
||||
"frontend"
|
||||
],
|
||||
"image": 14,
|
||||
"author": 3
|
||||
"author": 10
|
||||
},
|
||||
{
|
||||
"title": "Well, I didn't vote for you.",
|
||||
"description": "Well, we did do the nose. Why? Shut up! Will you shut up?! You don't frighten us, English pig-dogs! Go and boil your bottoms, sons of a silly person! I blow my nose at you, so-called Ah-thoor Keeng, you and all your silly English K-n-n-n-n-n-n-n-niggits!",
|
||||
"image": 15,
|
||||
"author": 4
|
||||
"title": "10 UX Principles Every Designer Should Know",
|
||||
"description": "A concise guide to user experience best practices, helping you design more intuitive and user-friendly interfaces.",
|
||||
"tags": [
|
||||
"ux",
|
||||
"design",
|
||||
"usability"
|
||||
],
|
||||
"image": 5,
|
||||
"author": 8
|
||||
},
|
||||
{
|
||||
"title": "How do you know she is a witch?",
|
||||
"description": "Are you suggesting that coconuts migrate? No, no, no! Yes, yes. A bit. But she's got a wart. You don't vote for kings. Ah, now we see the violence inherent in the system!",
|
||||
"title": "Optimizing JavaScript Performance in Large-Scale Projects",
|
||||
"description": "Explore techniques and tools to improve the speed and maintainability of your JavaScript applications at scale.",
|
||||
"tags": [
|
||||
"javascript",
|
||||
"performance",
|
||||
"best-practices"
|
||||
],
|
||||
"image": 19,
|
||||
"author": 14
|
||||
},
|
||||
{
|
||||
"title": "The Future of CSS: What's Coming in 2025",
|
||||
"description": "Get an early look at the next generation of CSS features and how they'll transform modern web development.",
|
||||
"tags": [
|
||||
"css",
|
||||
"future",
|
||||
"web-development"
|
||||
],
|
||||
"image": 3,
|
||||
"author": 11
|
||||
},
|
||||
{
|
||||
"title": "Understanding TypeScript: A Beginner's Guide",
|
||||
"description": "This article walks you through the basics of TypeScript, helping you write safer and more scalable JavaScript code.",
|
||||
"tags": [
|
||||
"typescript",
|
||||
"javascript",
|
||||
"beginner"
|
||||
],
|
||||
"image": 16,
|
||||
"author": 5
|
||||
},
|
||||
{
|
||||
"title": "Shut up!",
|
||||
"description": "Burn her! How do you know she is a witch? You don't frighten us, English pig-dogs! Go and boil your bottoms, sons of a silly person! I blow my nose at you, so-called Ah-thoor Keeng, you and all your silly English K-n-n-n-n-n-n-n-niggits!",
|
||||
"image": 17,
|
||||
"title": "Building a Design System with Tailwind CSS",
|
||||
"description": "Learn how to create a consistent, reusable design system using utility-first CSS with Tailwind.",
|
||||
"tags": [
|
||||
"tailwind",
|
||||
"design-system",
|
||||
"css"
|
||||
],
|
||||
"image": 22,
|
||||
"author": 6
|
||||
},
|
||||
{
|
||||
"title": "Weaseling out of things is important to learn.",
|
||||
"description": "Please do not offer my god a peanut. That's why I love elementary school, Edna. The children believe anything you tell them. Brace yourselves gentlemen. According to the gas chromatograph, the secret ingredient is… Love!? Who's been screwing with this thing?",
|
||||
"title": "5 Mistakes to Avoid in Web Accessibility",
|
||||
"description": "Avoid common accessibility pitfalls and make your website inclusive for all users.",
|
||||
"tags": [
|
||||
"a11y",
|
||||
"accessibility",
|
||||
"html"
|
||||
],
|
||||
"image": 12,
|
||||
"author": 7
|
||||
},
|
||||
{
|
||||
"title": "Deploying Your App with Vercel and GitHub Actions",
|
||||
"description": "A step-by-step guide to automating your deployment process using GitHub Actions and Vercel.",
|
||||
"tags": [
|
||||
"devops",
|
||||
"vercel",
|
||||
"ci/cd"
|
||||
],
|
||||
"image": 2,
|
||||
"author": 15
|
||||
},
|
||||
{
|
||||
"title": "A Dive into Reactive Programming with RxJS",
|
||||
"description": "Understand the core concepts of reactive programming and learn how to use RxJS in real-world scenarios.",
|
||||
"tags": [
|
||||
"rxjs",
|
||||
"reactive",
|
||||
"javascript"
|
||||
],
|
||||
"image": 17,
|
||||
"author": 4
|
||||
},
|
||||
{
|
||||
"title": "Creating Stunning Data Visualizations with D3.js",
|
||||
"description": "Learn how to transform complex data into interactive, beautiful charts using D3.js.",
|
||||
"tags": [
|
||||
"d3",
|
||||
"data-viz",
|
||||
"charts"
|
||||
],
|
||||
"image": 8,
|
||||
"author": 12
|
||||
},
|
||||
{
|
||||
"title": "State Management in Vue 3 with Pinia",
|
||||
"description": "Pinia is the new official store library for Vue—here's how to use it effectively.",
|
||||
"tags": [
|
||||
"vue",
|
||||
"pinia",
|
||||
"state-management"
|
||||
],
|
||||
"image": 21,
|
||||
"author": 3
|
||||
},
|
||||
{
|
||||
"title": "Dark Mode in CSS: Best Practices",
|
||||
"description": "Implementing dark mode isn't just about switching colors. Learn how to do it right with CSS variables and media queries.",
|
||||
"tags": [
|
||||
"css",
|
||||
"dark-mode",
|
||||
"ui"
|
||||
],
|
||||
"image": 7,
|
||||
"author": 13
|
||||
},
|
||||
{
|
||||
"title": "Next.js vs Nuxt 3: A Head-to-Head Comparison",
|
||||
"description": "Comparing the most popular frameworks for React and Vue. Which one should you choose?",
|
||||
"tags": [
|
||||
"nextjs",
|
||||
"nuxt",
|
||||
"frameworks"
|
||||
],
|
||||
"image": 15,
|
||||
"author": 6
|
||||
},
|
||||
{
|
||||
"title": "Progressive Web Apps: How to Make Your Website Installable",
|
||||
"description": "Turn your web project into a PWA and reach users offline or on mobile devices.",
|
||||
"tags": [
|
||||
"pwa",
|
||||
"web-apps",
|
||||
"offline"
|
||||
],
|
||||
"image": 11,
|
||||
"author": 9
|
||||
},
|
||||
{
|
||||
"title": "Using Figma for Developer Handoff",
|
||||
"description": "Bridge the gap between designers and developers by mastering Figma's handoff features.",
|
||||
"tags": [
|
||||
"figma",
|
||||
"design",
|
||||
"workflow"
|
||||
],
|
||||
"image": 9,
|
||||
"author": 14
|
||||
},
|
||||
{
|
||||
"title": "Improving Lighthouse Scores with Modern Techniques",
|
||||
"description": "A practical guide to fixing common issues and optimizing your site for better Lighthouse results.",
|
||||
"tags": [
|
||||
"performance",
|
||||
"seo",
|
||||
"lighthouse"
|
||||
],
|
||||
"image": 6,
|
||||
"author": 2
|
||||
},
|
||||
{
|
||||
"title": "Animating Interfaces with Framer Motion",
|
||||
"description": "Bring your UI to life with simple, declarative animations using Framer Motion.",
|
||||
"tags": [
|
||||
"react",
|
||||
"animations",
|
||||
"framer-motion"
|
||||
],
|
||||
"image": 1,
|
||||
"author": 7
|
||||
},
|
||||
{
|
||||
"title": "GraphQL vs REST: Which Should You Choose?",
|
||||
"description": "Breaking down the pros and cons of GraphQL and REST to help you pick the right API design.",
|
||||
"tags": [
|
||||
"graphql",
|
||||
"rest",
|
||||
"api"
|
||||
],
|
||||
"image": 13,
|
||||
"author": 16
|
||||
},
|
||||
{
|
||||
"title": "Building a Blog with Astro and Markdown",
|
||||
"description": "Leverage Astro's performance and use Markdown to create a fast, flexible blog.",
|
||||
"tags": [
|
||||
"astro",
|
||||
"markdown",
|
||||
"static-sites"
|
||||
],
|
||||
"image": 10,
|
||||
"author": 5
|
||||
},
|
||||
{
|
||||
"title": "Why You Should Use CSS Container Queries",
|
||||
"description": "The long-awaited feature is here. Learn how to use container queries to write smarter, more responsive CSS.",
|
||||
"tags": [
|
||||
"css",
|
||||
"container-queries",
|
||||
"responsive"
|
||||
],
|
||||
"image": 18,
|
||||
"author": 11
|
||||
},
|
||||
{
|
||||
"title": "Mastering React Server Components: A Complete Guide",
|
||||
"description": "Dive deep into React Server Components and learn how to build faster, more efficient applications with this revolutionary feature.",
|
||||
"tags": [
|
||||
"react",
|
||||
"server-components",
|
||||
"performance"
|
||||
],
|
||||
"image": 4,
|
||||
"author": 8
|
||||
},
|
||||
{
|
||||
"title": "Building Micro-Frontends with Module Federation",
|
||||
"description": "Learn how to break down monolithic frontend applications into smaller, independently deployable micro-frontends.",
|
||||
"tags": [
|
||||
"micro-frontends",
|
||||
"webpack",
|
||||
"architecture"
|
||||
],
|
||||
"image": 20,
|
||||
"author": 12
|
||||
},
|
||||
{
|
||||
"title": "You don't like your job, you don't strike.",
|
||||
"description": "But, Aquaman, you cannot marry a woman without gills. You're from two different worlds… Oh, I've wasted my life. Son, when you participate in sporting events, it's not whether you win or lose: it's how drunk you get.",
|
||||
"image": 21,
|
||||
"title": "The Complete Guide to CSS Grid Layout",
|
||||
"description": "Master CSS Grid Layout with practical examples and real-world use cases for modern web layouts.",
|
||||
"tags": [
|
||||
"css",
|
||||
"grid",
|
||||
"layout"
|
||||
],
|
||||
"image": 23,
|
||||
"author": 9
|
||||
},
|
||||
{
|
||||
"title": "Testing React Applications with Vitest and Testing Library",
|
||||
"description": "Set up a modern testing environment for React applications using Vitest and React Testing Library.",
|
||||
"tags": [
|
||||
"react",
|
||||
"testing",
|
||||
"vitest"
|
||||
],
|
||||
"image": 24,
|
||||
"author": 15
|
||||
},
|
||||
{
|
||||
"title": "Building Scalable APIs with Fastify and TypeScript",
|
||||
"description": "Create high-performance APIs using Fastify and TypeScript with best practices for production applications.",
|
||||
"tags": [
|
||||
"fastify",
|
||||
"typescript",
|
||||
"api"
|
||||
],
|
||||
"image": 25,
|
||||
"author": 6
|
||||
},
|
||||
{
|
||||
"title": "Implementing Authentication with NextAuth.js",
|
||||
"description": "Add secure authentication to your Next.js applications with NextAuth.js and multiple provider support.",
|
||||
"tags": [
|
||||
"nextjs",
|
||||
"authentication",
|
||||
"security"
|
||||
],
|
||||
"image": 26,
|
||||
"author": 11
|
||||
},
|
||||
{
|
||||
"title": "Optimizing Images for the Web: A Developer's Guide",
|
||||
"description": "Learn modern techniques for optimizing images, including WebP, AVIF, and responsive image strategies.",
|
||||
"tags": [
|
||||
"images",
|
||||
"performance",
|
||||
"webp"
|
||||
],
|
||||
"image": 27,
|
||||
"author": 14
|
||||
},
|
||||
{
|
||||
"title": "Building Interactive Maps with Mapbox and React",
|
||||
"description": "Create stunning, interactive maps for your web applications using Mapbox GL JS and React.",
|
||||
"tags": [
|
||||
"maps",
|
||||
"react",
|
||||
"mapbox"
|
||||
],
|
||||
"image": 28,
|
||||
"author": 7
|
||||
},
|
||||
{
|
||||
"title": "Mastering CSS Custom Properties and Theming",
|
||||
"description": "Build flexible design systems with CSS custom properties and create dynamic theming solutions.",
|
||||
"tags": [
|
||||
"css",
|
||||
"theming",
|
||||
"design-system"
|
||||
],
|
||||
"image": 29,
|
||||
"author": 13
|
||||
},
|
||||
{
|
||||
"title": "I hope I didn't brain my damage.",
|
||||
"description": "I don't like being outdoors, Smithers. For one thing, there's too many fat children. Oh, loneliness and cheeseburgers are a dangerous mix. Jesus must be spinning in his grave! I hope this has taught you kids a lesson: kids never learn.",
|
||||
"image": 22,
|
||||
"author": 14
|
||||
"title": "Building Real-Time Applications with Socket.io",
|
||||
"description": "Create real-time features like chat, notifications, and live updates using Socket.io and Node.js.",
|
||||
"tags": [
|
||||
"socket.io",
|
||||
"real-time",
|
||||
"nodejs"
|
||||
],
|
||||
"image": 30,
|
||||
"author": 10
|
||||
}
|
||||
]
|
||||
132
shared/data/channels.json
Normal file
132
shared/data/channels.json
Normal file
@@ -0,0 +1,132 @@
|
||||
[
|
||||
{
|
||||
"channel": "Facebook",
|
||||
"icon": "brand-facebook",
|
||||
"visitors": 11873,
|
||||
"revenues": 8423.78,
|
||||
"sales": 336,
|
||||
"conversion": 2.83,
|
||||
"bounceRate": 45.6,
|
||||
"sessionDuration": 183,
|
||||
"pagesPerSession": 3.1,
|
||||
"costPerAcquisition": 7.22,
|
||||
"clickThroughRate": 1.8
|
||||
},
|
||||
{
|
||||
"channel": "Github",
|
||||
"icon": "brand-github",
|
||||
"visitors": 5372,
|
||||
"revenues": 4876.12,
|
||||
"sales": 188,
|
||||
"conversion": 3.50,
|
||||
"bounceRate": 32.4,
|
||||
"sessionDuration": 246,
|
||||
"pagesPerSession": 4.5,
|
||||
"costPerAcquisition": 5.75,
|
||||
"clickThroughRate": 2.1
|
||||
},
|
||||
{
|
||||
"channel": "Twitter",
|
||||
"icon": "brand-twitter",
|
||||
"visitors": 7941,
|
||||
"revenues": 6184.39,
|
||||
"sales": 272,
|
||||
"conversion": 3.42,
|
||||
"bounceRate": 39.1,
|
||||
"sessionDuration": 174,
|
||||
"pagesPerSession": 3.3,
|
||||
"costPerAcquisition": 6.90,
|
||||
"clickThroughRate": 1.6
|
||||
},
|
||||
{
|
||||
"channel": "LinkedIn",
|
||||
"icon": "brand-linkedin",
|
||||
"visitors": 3127,
|
||||
"revenues": 2748.56,
|
||||
"sales": 121,
|
||||
"conversion": 3.87,
|
||||
"bounceRate": 28.9,
|
||||
"sessionDuration": 209,
|
||||
"pagesPerSession": 4.0,
|
||||
"costPerAcquisition": 6.10,
|
||||
"clickThroughRate": 2.3
|
||||
},
|
||||
{
|
||||
"channel": "Instagram",
|
||||
"icon": "brand-instagram",
|
||||
"visitors": 9442,
|
||||
"revenues": 7632.91,
|
||||
"sales": 308,
|
||||
"conversion": 3.26,
|
||||
"bounceRate": 41.2,
|
||||
"sessionDuration": 192,
|
||||
"pagesPerSession": 3.4,
|
||||
"costPerAcquisition": 6.15,
|
||||
"clickThroughRate": 1.9
|
||||
},
|
||||
{
|
||||
"channel": "Reddit",
|
||||
"icon": "brand-reddit",
|
||||
"visitors": 4347,
|
||||
"revenues": 3311.34,
|
||||
"sales": 147,
|
||||
"conversion": 3.38,
|
||||
"bounceRate": 46.8,
|
||||
"sessionDuration": 167,
|
||||
"pagesPerSession": 2.9,
|
||||
"costPerAcquisition": 7.10,
|
||||
"clickThroughRate": 1.5
|
||||
},
|
||||
{
|
||||
"channel": "YouTube",
|
||||
"icon": "brand-youtube",
|
||||
"visitors": 14856,
|
||||
"revenues": 10573.44,
|
||||
"sales": 393,
|
||||
"conversion": 2.64,
|
||||
"bounceRate": 38.7,
|
||||
"sessionDuration": 221,
|
||||
"pagesPerSession": 3.6,
|
||||
"costPerAcquisition": 6.55,
|
||||
"clickThroughRate": 2.0
|
||||
},
|
||||
{
|
||||
"channel": "Pinterest",
|
||||
"icon": "brand-pinterest",
|
||||
"visitors": 3879,
|
||||
"revenues": 2824.07,
|
||||
"sales": 132,
|
||||
"conversion": 3.40,
|
||||
"bounceRate": 36.2,
|
||||
"sessionDuration": 195,
|
||||
"pagesPerSession": 3.7,
|
||||
"costPerAcquisition": 6.00,
|
||||
"clickThroughRate": 1.7
|
||||
},
|
||||
{
|
||||
"channel": "TikTok",
|
||||
"icon": "brand-tiktok",
|
||||
"visitors": 8749,
|
||||
"revenues": 6887.63,
|
||||
"sales": 293,
|
||||
"conversion": 3.35,
|
||||
"bounceRate": 43.0,
|
||||
"sessionDuration": 181,
|
||||
"pagesPerSession": 3.2,
|
||||
"costPerAcquisition": 6.40,
|
||||
"clickThroughRate": 1.8
|
||||
},
|
||||
{
|
||||
"channel": "Dribbble",
|
||||
"icon": "brand-dribbble",
|
||||
"visitors": 2623,
|
||||
"revenues": 2113.28,
|
||||
"sales": 99,
|
||||
"conversion": 3.78,
|
||||
"bounceRate": 29.6,
|
||||
"sessionDuration": 204,
|
||||
"pagesPerSession": 4.1,
|
||||
"costPerAcquisition": 5.90,
|
||||
"clickThroughRate": 2.2
|
||||
}
|
||||
]
|
||||
@@ -4,5 +4,15 @@
|
||||
"She is so damn beautiful OMG i love her!!! does somebody knows what kind of music is this? sorry xD",
|
||||
"Did anyone go camping in Oshkosh Wisconsin last month?",
|
||||
"Hey i am subbed but i didnt get the notification how?",
|
||||
"This is the best by far! I laughed for the hole sticking time 😂"
|
||||
"This is the best by far! I laughed for the hole sticking time 😂",
|
||||
"Can't stop watching this! The vibes are immaculate ✨",
|
||||
"Who else is here from the algorithm? This popped up and I'm obsessed now 🔥",
|
||||
"The editing in this is absolutely insane! How do you do it? 🤯",
|
||||
"Finally found my new favorite channel! Subscribed immediately 💯",
|
||||
"This gives me such good memories from last summer... anyone else? 🌞",
|
||||
"The way you captured that moment is pure magic! Love it so much 🥰",
|
||||
"Can we get a part 2? I need more of this content in my life! 🙏",
|
||||
"This is exactly what I needed today, thank you for sharing! 💖",
|
||||
"The quality is amazing! What camera do you use? 📸",
|
||||
"This made my day so much better, sending good vibes back! ✌️"
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
170
shared/data/notifications.json
Normal file
170
shared/data/notifications.json
Normal file
@@ -0,0 +1,170 @@
|
||||
[
|
||||
{
|
||||
"id": "1",
|
||||
"title": "New order received",
|
||||
"description": "Order #12345 has been placed by John Doe",
|
||||
"type": "order",
|
||||
"status": "unread",
|
||||
"priority": "high",
|
||||
"icon": "shopping-cart",
|
||||
"color": "success",
|
||||
"timestamp": "2025-01-15T10:30:00Z",
|
||||
"user_id": "123",
|
||||
"action_url": "/orders/12345",
|
||||
"is_important": true
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"title": "Payment failed",
|
||||
"description": "Payment for order #12340 failed. Please review payment details.",
|
||||
"type": "payment",
|
||||
"status": "unread",
|
||||
"priority": "critical",
|
||||
"icon": "alert-triangle",
|
||||
"color": "danger",
|
||||
"timestamp": "2025-01-15T09:15:00Z",
|
||||
"user_id": "456",
|
||||
"action_url": "/payments/12340",
|
||||
"is_important": true
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"title": "System maintenance",
|
||||
"description": "Scheduled maintenance will begin in 2 hours. Expected downtime: 30 minutes.",
|
||||
"type": "system",
|
||||
"status": "unread",
|
||||
"priority": "medium",
|
||||
"icon": "settings",
|
||||
"color": "warning",
|
||||
"timestamp": "2025-01-15T08:45:00Z",
|
||||
"user_id": null,
|
||||
"action_url": "/maintenance",
|
||||
"is_important": false
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"title": "New customer registered",
|
||||
"description": "Sarah Johnson has created a new account",
|
||||
"type": "user",
|
||||
"status": "read",
|
||||
"priority": "low",
|
||||
"icon": "user-plus",
|
||||
"color": "info",
|
||||
"timestamp": "2025-01-15T07:20:00Z",
|
||||
"user_id": "789",
|
||||
"action_url": "/customers/789",
|
||||
"is_important": false
|
||||
},
|
||||
{
|
||||
"id": "5",
|
||||
"title": "Inventory alert",
|
||||
"description": "Product 'Premium Widget' is running low on stock (5 items remaining)",
|
||||
"type": "inventory",
|
||||
"status": "unread",
|
||||
"priority": "high",
|
||||
"icon": "package",
|
||||
"color": "warning",
|
||||
"timestamp": "2025-01-15T06:30:00Z",
|
||||
"user_id": null,
|
||||
"action_url": "/inventory/premium-widget",
|
||||
"is_important": true
|
||||
},
|
||||
{
|
||||
"id": "6",
|
||||
"title": "Support ticket resolved",
|
||||
"description": "Ticket #TKT-2025-001 has been resolved by support team",
|
||||
"type": "support",
|
||||
"status": "read",
|
||||
"priority": "medium",
|
||||
"icon": "message-circle",
|
||||
"color": "success",
|
||||
"timestamp": "2025-01-15T05:45:00Z",
|
||||
"user_id": "234",
|
||||
"action_url": "/support/tickets/TKT-2025-001",
|
||||
"is_important": false
|
||||
},
|
||||
{
|
||||
"id": "7",
|
||||
"title": "Security alert",
|
||||
"description": "Unusual login activity detected from new location",
|
||||
"type": "security",
|
||||
"status": "unread",
|
||||
"priority": "critical",
|
||||
"icon": "shield",
|
||||
"color": "danger",
|
||||
"timestamp": "2025-01-15T04:15:00Z",
|
||||
"user_id": "567",
|
||||
"action_url": "/security/activity",
|
||||
"is_important": true
|
||||
},
|
||||
{
|
||||
"id": "8",
|
||||
"title": "Backup completed",
|
||||
"description": "Daily backup has been completed successfully",
|
||||
"type": "system",
|
||||
"status": "read",
|
||||
"priority": "low",
|
||||
"icon": "database",
|
||||
"color": "success",
|
||||
"timestamp": "2025-01-15T03:00:00Z",
|
||||
"user_id": null,
|
||||
"action_url": "/system/backups",
|
||||
"is_important": false
|
||||
},
|
||||
{
|
||||
"id": "9",
|
||||
"title": "New review received",
|
||||
"description": "5-star review received for product 'Deluxe Package'",
|
||||
"type": "review",
|
||||
"status": "unread",
|
||||
"priority": "medium",
|
||||
"icon": "star",
|
||||
"color": "success",
|
||||
"timestamp": "2025-01-15T02:30:00Z",
|
||||
"user_id": "890",
|
||||
"action_url": "/reviews/deluxe-package",
|
||||
"is_important": false
|
||||
},
|
||||
{
|
||||
"id": "10",
|
||||
"title": "API rate limit warning",
|
||||
"description": "API usage is approaching the rate limit (85% used)",
|
||||
"type": "system",
|
||||
"status": "unread",
|
||||
"priority": "medium",
|
||||
"icon": "activity",
|
||||
"color": "warning",
|
||||
"timestamp": "2025-01-15T01:45:00Z",
|
||||
"user_id": null,
|
||||
"action_url": "/api/usage",
|
||||
"is_important": true
|
||||
},
|
||||
{
|
||||
"id": "11",
|
||||
"title": "Refund processed",
|
||||
"description": "Refund for order #12335 has been processed and sent to customer",
|
||||
"type": "refund",
|
||||
"status": "read",
|
||||
"priority": "medium",
|
||||
"icon": "refresh-ccw",
|
||||
"color": "info",
|
||||
"timestamp": "2025-01-15T00:20:00Z",
|
||||
"user_id": "345",
|
||||
"action_url": "/refunds/12335",
|
||||
"is_important": false
|
||||
},
|
||||
{
|
||||
"id": "12",
|
||||
"title": "New feature available",
|
||||
"description": "Advanced analytics dashboard is now available for all users",
|
||||
"type": "feature",
|
||||
"status": "unread",
|
||||
"priority": "low",
|
||||
"icon": "bar-chart",
|
||||
"color": "info",
|
||||
"timestamp": "2025-01-14T23:10:00Z",
|
||||
"user_id": null,
|
||||
"action_url": "/features/analytics",
|
||||
"is_important": false
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
422
shared/data/transactions.json
Normal file
422
shared/data/transactions.json
Normal file
@@ -0,0 +1,422 @@
|
||||
[
|
||||
{
|
||||
"id": "1",
|
||||
"counterparty": "Form Builder CP",
|
||||
"counterparty_logo": "static/brands/form-builder.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "pending",
|
||||
"status": "warning",
|
||||
"amount": -1299.22,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Annual subscription renewal",
|
||||
"reference": "FB-2025-001"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"counterparty": "Imperial Hotel ****",
|
||||
"counterparty_logo": "static/brands/hotel.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -1029.77,
|
||||
"currency": "USD",
|
||||
"transaction_type": "hotel",
|
||||
"category": "travel",
|
||||
"description": "Hotel accommodation for business trip",
|
||||
"reference": "IH-2025-002"
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"counterparty": "Aprilynne Pills",
|
||||
"counterparty_logo": "static/avatars/000m.jpg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "pending",
|
||||
"status": "warning",
|
||||
"amount": 499.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "refund",
|
||||
"category": "healthcare",
|
||||
"description": "Refund for cancelled prescription",
|
||||
"reference": "AP-2025-003"
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"counterparty": "Google Limited UK",
|
||||
"counterparty_logo": "static/brands/google.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -1029.77,
|
||||
"currency": "USD",
|
||||
"transaction_type": "advertising",
|
||||
"category": "marketing",
|
||||
"description": "Google Ads campaign payment",
|
||||
"reference": "GL-2025-004"
|
||||
},
|
||||
{
|
||||
"id": "5",
|
||||
"counterparty": "Acme LTD UK",
|
||||
"counterparty_logo": "static/brands/acme.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "pending",
|
||||
"status": "warning",
|
||||
"amount": 2179.36,
|
||||
"currency": "USD",
|
||||
"transaction_type": "payment",
|
||||
"category": "business",
|
||||
"description": "Payment received for consulting services",
|
||||
"reference": "AL-2025-005"
|
||||
},
|
||||
{
|
||||
"id": "6",
|
||||
"counterparty": "Google Limited UK",
|
||||
"counterparty_logo": "static/brands/google.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "canceled",
|
||||
"status": "danger",
|
||||
"amount": -1029.77,
|
||||
"currency": "USD",
|
||||
"transaction_type": "advertising",
|
||||
"category": "marketing",
|
||||
"description": "Cancelled Google Ads campaign",
|
||||
"reference": "GL-2025-006"
|
||||
},
|
||||
{
|
||||
"id": "7",
|
||||
"counterparty": "Uber",
|
||||
"counterparty_logo": "static/brands/uber.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -272.88,
|
||||
"currency": "USD",
|
||||
"transaction_type": "transport",
|
||||
"category": "travel",
|
||||
"description": "Ride sharing service",
|
||||
"reference": "UB-2025-007"
|
||||
},
|
||||
{
|
||||
"id": "8",
|
||||
"counterparty": "PublicOne Inc.",
|
||||
"counterparty_logo": "static/brands/publicone.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -199.87,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Monthly software subscription",
|
||||
"reference": "PO-2025-008"
|
||||
},
|
||||
{
|
||||
"id": "9",
|
||||
"counterparty": "Github Inc.",
|
||||
"counterparty_logo": "static/brands/github.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -42.87,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "GitHub Pro subscription",
|
||||
"reference": "GH-2025-009"
|
||||
},
|
||||
{
|
||||
"id": "10",
|
||||
"counterparty": "Form Builder PRO",
|
||||
"counterparty_logo": "static/brands/form-builder-pro.svg",
|
||||
"payment_date": "2025-01-22",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -112.44,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Premium form builder subscription",
|
||||
"reference": "FBP-2025-010"
|
||||
},
|
||||
{
|
||||
"id": "11",
|
||||
"counterparty": "Netflix",
|
||||
"counterparty_logo": "static/brands/netflix.svg",
|
||||
"payment_date": "2025-01-21",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -15.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "entertainment",
|
||||
"description": "Monthly streaming subscription",
|
||||
"reference": "NF-2025-011"
|
||||
},
|
||||
{
|
||||
"id": "12",
|
||||
"counterparty": "Amazon",
|
||||
"counterparty_logo": "static/brands/amazon.svg",
|
||||
"payment_date": "2025-01-21",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -89.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "purchase",
|
||||
"category": "shopping",
|
||||
"description": "Office supplies purchase",
|
||||
"reference": "AMZ-2025-012"
|
||||
},
|
||||
{
|
||||
"id": "13",
|
||||
"counterparty": "Starbucks",
|
||||
"counterparty_logo": "static/brands/starbucks.svg",
|
||||
"payment_date": "2025-01-21",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -4.75,
|
||||
"currency": "USD",
|
||||
"transaction_type": "food",
|
||||
"category": "dining",
|
||||
"description": "Coffee purchase",
|
||||
"reference": "SB-2025-013"
|
||||
},
|
||||
{
|
||||
"id": "14",
|
||||
"counterparty": "Microsoft",
|
||||
"counterparty_logo": "static/brands/microsoft.svg",
|
||||
"payment_date": "2025-01-21",
|
||||
"status_name": "pending",
|
||||
"status": "warning",
|
||||
"amount": -299.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Microsoft 365 Business subscription",
|
||||
"reference": "MS-2025-014"
|
||||
},
|
||||
{
|
||||
"id": "15",
|
||||
"counterparty": "TechCorp Solutions",
|
||||
"counterparty_logo": "static/brands/techcorp.svg",
|
||||
"payment_date": "2025-01-21",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": 1500.00,
|
||||
"currency": "USD",
|
||||
"transaction_type": "payment",
|
||||
"category": "business",
|
||||
"description": "Payment for web development services",
|
||||
"reference": "TCS-2025-015"
|
||||
},
|
||||
{
|
||||
"id": "16",
|
||||
"counterparty": "Spotify",
|
||||
"counterparty_logo": "static/brands/spotify.svg",
|
||||
"payment_date": "2025-01-20",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -9.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "entertainment",
|
||||
"description": "Premium music subscription",
|
||||
"reference": "SP-2025-016"
|
||||
},
|
||||
{
|
||||
"id": "17",
|
||||
"counterparty": "Zoom",
|
||||
"counterparty_logo": "static/brands/zoom.svg",
|
||||
"payment_date": "2025-01-20",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -149.90,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Annual Zoom Pro subscription",
|
||||
"reference": "ZM-2025-017"
|
||||
},
|
||||
{
|
||||
"id": "18",
|
||||
"counterparty": "Slack",
|
||||
"counterparty_logo": "static/brands/slack.svg",
|
||||
"payment_date": "2025-01-20",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -67.50,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Monthly Slack workspace subscription",
|
||||
"reference": "SL-2025-018"
|
||||
},
|
||||
{
|
||||
"id": "19",
|
||||
"counterparty": "Dropbox",
|
||||
"counterparty_logo": "static/brands/dropbox.svg",
|
||||
"payment_date": "2025-01-20",
|
||||
"status_name": "pending",
|
||||
"status": "warning",
|
||||
"amount": -119.88,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Annual cloud storage subscription",
|
||||
"reference": "DB-2025-019"
|
||||
},
|
||||
{
|
||||
"id": "20",
|
||||
"counterparty": "Digital Marketing Agency",
|
||||
"counterparty_logo": "static/brands/dma.svg",
|
||||
"payment_date": "2025-01-19",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": 2500.00,
|
||||
"currency": "USD",
|
||||
"transaction_type": "payment",
|
||||
"category": "business",
|
||||
"description": "Payment for marketing campaign",
|
||||
"reference": "DMA-2025-020"
|
||||
},
|
||||
{
|
||||
"id": "21",
|
||||
"counterparty": "Apple",
|
||||
"counterparty_logo": "static/brands/apple.svg",
|
||||
"payment_date": "2025-01-19",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -99.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Apple Developer Program",
|
||||
"reference": "APL-2025-021"
|
||||
},
|
||||
{
|
||||
"id": "22",
|
||||
"counterparty": "LinkedIn",
|
||||
"counterparty_logo": "static/brands/linkedin.svg",
|
||||
"payment_date": "2025-01-19",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -29.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "business",
|
||||
"description": "LinkedIn Premium subscription",
|
||||
"reference": "LI-2025-022"
|
||||
},
|
||||
{
|
||||
"id": "23",
|
||||
"counterparty": "Canva",
|
||||
"counterparty_logo": "static/brands/canva.svg",
|
||||
"payment_date": "2025-01-18",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -119.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Annual Canva Pro subscription",
|
||||
"reference": "CV-2025-023"
|
||||
},
|
||||
{
|
||||
"id": "24",
|
||||
"counterparty": "Figma",
|
||||
"counterparty_logo": "static/brands/figma.svg",
|
||||
"payment_date": "2025-01-18",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -144.00,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Annual Figma Professional subscription",
|
||||
"reference": "FG-2025-024"
|
||||
},
|
||||
{
|
||||
"id": "25",
|
||||
"counterparty": "Notion",
|
||||
"counterparty_logo": "static/brands/notion.svg",
|
||||
"payment_date": "2025-01-18",
|
||||
"status_name": "pending",
|
||||
"status": "warning",
|
||||
"amount": -96.00,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Annual Notion Team subscription",
|
||||
"reference": "NT-2025-025"
|
||||
},
|
||||
{
|
||||
"id": "26",
|
||||
"counterparty": "Salesforce",
|
||||
"counterparty_logo": "static/brands/salesforce.svg",
|
||||
"payment_date": "2025-01-17",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -150.00,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Monthly Salesforce subscription",
|
||||
"reference": "SF-2025-026"
|
||||
},
|
||||
{
|
||||
"id": "27",
|
||||
"counterparty": "HubSpot",
|
||||
"counterparty_logo": "static/brands/hubspot.svg",
|
||||
"payment_date": "2025-01-17",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -89.00,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Monthly HubSpot Marketing subscription",
|
||||
"reference": "HS-2025-027"
|
||||
},
|
||||
{
|
||||
"id": "28",
|
||||
"counterparty": "Mailchimp",
|
||||
"counterparty_logo": "static/brands/mailchimp.svg",
|
||||
"payment_date": "2025-01-17",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -59.99,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Monthly email marketing subscription",
|
||||
"reference": "MC-2025-028"
|
||||
},
|
||||
{
|
||||
"id": "29",
|
||||
"counterparty": "Trello",
|
||||
"counterparty_logo": "static/brands/trello.svg",
|
||||
"payment_date": "2025-01-16",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -59.88,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Annual Trello Business Class",
|
||||
"reference": "TR-2025-029"
|
||||
},
|
||||
{
|
||||
"id": "30",
|
||||
"counterparty": "Asana",
|
||||
"counterparty_logo": "static/brands/asana.svg",
|
||||
"payment_date": "2025-01-16",
|
||||
"status_name": "completed",
|
||||
"status": "success",
|
||||
"amount": -131.88,
|
||||
"currency": "USD",
|
||||
"transaction_type": "subscription",
|
||||
"category": "software",
|
||||
"description": "Annual Asana Premium subscription",
|
||||
"reference": "AS-2025-030"
|
||||
}
|
||||
]
|
||||
@@ -54,5 +54,75 @@
|
||||
"unique": 450,
|
||||
"bounce": "8.69%",
|
||||
"data": "6, 15, 13, 13, 5, 7, 17, 20, 19"
|
||||
},
|
||||
{
|
||||
"uri": "/buttons.html",
|
||||
"visitors": 542,
|
||||
"unique": 487,
|
||||
"bounce": "28.45%",
|
||||
"data": "8, 12, 15, 9, 6, 11, 14, 7, 13"
|
||||
},
|
||||
{
|
||||
"uri": "/cards.html",
|
||||
"visitors": 498,
|
||||
"unique": 445,
|
||||
"bounce": "31.23%",
|
||||
"data": "5, 9, 12, 8, 15, 11, 6, 14, 10"
|
||||
},
|
||||
{
|
||||
"uri": "/typography.html",
|
||||
"visitors": 423,
|
||||
"unique": 378,
|
||||
"bounce": "35.67%",
|
||||
"data": "7, 11, 9, 13, 8, 12, 6, 15, 10"
|
||||
},
|
||||
{
|
||||
"uri": "/alerts.html",
|
||||
"visitors": 387,
|
||||
"unique": 342,
|
||||
"bounce": "42.18%",
|
||||
"data": "4, 8, 11, 7, 13, 9, 12, 6, 14"
|
||||
},
|
||||
{
|
||||
"uri": "/modals.html",
|
||||
"visitors": 356,
|
||||
"unique": 298,
|
||||
"bounce": "38.76%",
|
||||
"data": "9, 6, 12, 8, 11, 14, 7, 13, 10"
|
||||
},
|
||||
{
|
||||
"uri": "/tables.html",
|
||||
"visitors": 312,
|
||||
"unique": 267,
|
||||
"bounce": "45.83%",
|
||||
"data": "6, 10, 8, 12, 7, 11, 9, 13, 5"
|
||||
},
|
||||
{
|
||||
"uri": "/charts.html",
|
||||
"visitors": 289,
|
||||
"unique": 234,
|
||||
"bounce": "52.94%",
|
||||
"data": "3, 7, 9, 5, 11, 8, 12, 6, 10"
|
||||
},
|
||||
{
|
||||
"uri": "/pricing.html",
|
||||
"visitors": 267,
|
||||
"unique": 223,
|
||||
"bounce": "48.69%",
|
||||
"data": "8, 5, 11, 7, 9, 12, 6, 10, 13"
|
||||
},
|
||||
{
|
||||
"uri": "/blog/",
|
||||
"visitors": 245,
|
||||
"unique": 198,
|
||||
"bounce": "55.10%",
|
||||
"data": "4, 8, 6, 10, 7, 9, 11, 5, 12"
|
||||
},
|
||||
{
|
||||
"uri": "/profile.html",
|
||||
"visitors": 198,
|
||||
"unique": 156,
|
||||
"bounce": "61.62%",
|
||||
"data": "2, 6, 8, 4, 9, 7, 10, 5, 11"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user