From a6fe1ce410b434b7d94b100810fe49acfd39bc86 Mon Sep 17 00:00:00 2001 From: alvarosabu Date: Mon, 23 Jun 2025 09:37:21 +0200 Subject: [PATCH 1/3] chore(react): improved next15 playground - Upgraded Tailwind CSS to version 4.1.10 and added related plugins for typography and postcss. - Modified the Next.js development script to enable experimental HTTPS. - Added a new PostCSS configuration file for Tailwind CSS integration. - Updated global styles to include Tailwind CSS and typography plugin. - Refactored the main page component to utilize Tailwind CSS classes for styling. - Introduced a new EmojiRandomizer component for interactive emoji display. - Updated storyblok integration to include the new EmojiRandomizer component. --- packages/react/playground/next15/.gitignore | 2 + packages/react/playground/next15/package.json | 8 +- .../playground/next15/postcss.config.mjs | 6 + .../src/app/components/EmojiRandomizer.tsx | 51 +++ .../playground/next15/src/app/globals.css | 18 +- .../playground/next15/src/app/layout.tsx | 1 + .../react/playground/next15/src/app/page.tsx | 113 +---- .../playground/next15/src/lib/storyblok.ts | 4 +- pnpm-lock.yaml | 432 ++++++++++++++++-- 9 files changed, 497 insertions(+), 138 deletions(-) create mode 100644 packages/react/playground/next15/postcss.config.mjs create mode 100644 packages/react/playground/next15/src/app/components/EmojiRandomizer.tsx diff --git a/packages/react/playground/next15/.gitignore b/packages/react/playground/next15/.gitignore index d32cc78b8..44fdeff2b 100644 --- a/packages/react/playground/next15/.gitignore +++ b/packages/react/playground/next15/.gitignore @@ -38,3 +38,5 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +certificates \ No newline at end of file diff --git a/packages/react/playground/next15/package.json b/packages/react/playground/next15/package.json index aceeac4b8..cc8dd3996 100644 --- a/packages/react/playground/next15/package.json +++ b/packages/react/playground/next15/package.json @@ -3,21 +3,25 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev --experimental-https", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@storyblok/react": "workspace:*", + "@tailwindcss/typography": "^0.5.16", "next": "15.3.2", "react": "19.1.0", "react-dom": "19.1.0" }, "devDependencies": { + "@tailwindcss/postcss": "^4.1.10", "@types/node": "^20", "@types/react": "^19", - "@types/react-dom": "^19" + "@types/react-dom": "^19", + "postcss": "^8.5.6", + "tailwindcss": "^4.1.10" }, "nx": { "projectType": "application" diff --git a/packages/react/playground/next15/postcss.config.mjs b/packages/react/playground/next15/postcss.config.mjs new file mode 100644 index 000000000..89b7b34db --- /dev/null +++ b/packages/react/playground/next15/postcss.config.mjs @@ -0,0 +1,6 @@ +/** @type {import('tailwindcss').Config} */ +export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +} \ No newline at end of file diff --git a/packages/react/playground/next15/src/app/components/EmojiRandomizer.tsx b/packages/react/playground/next15/src/app/components/EmojiRandomizer.tsx new file mode 100644 index 000000000..11a01e1ae --- /dev/null +++ b/packages/react/playground/next15/src/app/components/EmojiRandomizer.tsx @@ -0,0 +1,51 @@ +'use client'; + +import React, { type FC, useState } from 'react'; +import type { SbBlokData } from '@storyblok/react'; + +interface EmojiRandomizerProps { + blok: SbBlokData & { + label?: string; + }; +} + +/** + * A component that displays a label and a random emoji that changes on click + */ +const EmojiRandomizer: FC = ({ blok }) => { + // List of fun emojis to randomly choose from + const emojis = ['😊', '🎉', '🚀', '✨', '🌈', '🎨', '🎸', '🎮', '🍕', '🌺']; + + // State to track current emoji + const [currentEmoji, setCurrentEmoji] = useState(() => + emojis[Math.floor(Math.random() * emojis.length)], + ); + + /** + * Generates a new random emoji different from the current one + */ + const randomizeEmoji = () => { + let newEmoji; + do { + newEmoji = emojis[Math.floor(Math.random() * emojis.length)]; + } while (newEmoji === currentEmoji); + + setCurrentEmoji(newEmoji); + }; + + return ( +
+
+ {currentEmoji} +
+ +
+ ); +}; + +export default EmojiRandomizer; \ No newline at end of file diff --git a/packages/react/playground/next15/src/app/globals.css b/packages/react/playground/next15/src/app/globals.css index e3734be15..b01bdf43b 100644 --- a/packages/react/playground/next15/src/app/globals.css +++ b/packages/react/playground/next15/src/app/globals.css @@ -1,3 +1,10 @@ +@import 'tailwindcss'; +@plugin '@tailwindcss/typography'; + +span[data-type='emoji'] img { + @apply m-0; +} + :root { --background: #ffffff; --foreground: #171717; @@ -24,10 +31,13 @@ body { -moz-osx-font-smoothing: grayscale; } -* { - box-sizing: border-box; - padding: 0; - margin: 0; +@layer base { + * { + margin: 0; + padding: 0; + box-sizing: border-box; + scroll-behavior: smooth; + } } a { diff --git a/packages/react/playground/next15/src/app/layout.tsx b/packages/react/playground/next15/src/app/layout.tsx index 923b47a88..f6fb35e67 100644 --- a/packages/react/playground/next15/src/app/layout.tsx +++ b/packages/react/playground/next15/src/app/layout.tsx @@ -1,4 +1,5 @@ import StoryblokProvider from '@/components/StoryblokProvider'; +import './globals.css'; export const metadata = { title: 'Create Next App', diff --git a/packages/react/playground/next15/src/app/page.tsx b/packages/react/playground/next15/src/app/page.tsx index b726adad2..0ec41c537 100644 --- a/packages/react/playground/next15/src/app/page.tsx +++ b/packages/react/playground/next15/src/app/page.tsx @@ -1,105 +1,40 @@ import type { ISbStoriesParams, StoryblokClient, - StoryblokRichTextNode, } from '@storyblok/react/rsc'; -import { MarkTypes, StoryblokRichText, StoryblokStory, +import { StoryblokStory, } from '@storyblok/react/rsc'; import { getStoryblokApi } from '@/lib/storyblok'; -import Link from 'next/link'; -import type { ReactElement } from 'react'; +// import Link from 'next/link'; export default async function Home() { const { data } = await fetchData(); - const doc = { - type: 'doc', - content: [ - { - type: 'paragraph', - content: [ - { - type: 'text', - text: 'This is a test of the StoryblokRichText component.', - }, - ], - }, - { - type: 'paragraph', - content: [ - { - text: 'Internal Link', - type: 'text', - marks: [ - { - type: 'link', - attrs: { - href: '/', - uuid: '8489bed8-d86f-4fde-965c-e3d748e12147', - anchor: null, - target: '_self', - linktype: 'story', - }, - }, - ], - }, - ], - }, - { - type: 'paragraph', - content: [ - { - text: 'External link', - type: 'text', - marks: [ - { - type: 'link', - attrs: { - href: 'https://alvarosaburido.dev', - uuid: null, - anchor: null, - target: '_blank', - linktype: 'url', - }, - }, - ], - }, - ], - }, - ], - }; - const resolvers = { - // custom resolvers - [MarkTypes.LINK]: (node: StoryblokRichTextNode) => { - return node.attrs?.linktype === 'story' - ? ( - - {node.text} - - ) - : ( - - {node.text} - - ); - }, - }; return ( -
-

- Story: - {data.story.id} +
+
+

+ Storyblok Next.js 15 Example

- - + + { // TODO: Enable for https://github.com/storyblok/monoblok/issues/35 + /* */} + + {data.story && ( +
+ +
+ )}
+
); } @@ -107,5 +42,5 @@ export async function fetchData() { const sbParams: ISbStoriesParams = { version: 'draft' }; const storyblokApi: StoryblokClient = getStoryblokApi(); - return storyblokApi.get(`cdn/stories/home`, sbParams); + return storyblokApi.get(`cdn/stories/react`, sbParams); } diff --git a/packages/react/playground/next15/src/lib/storyblok.ts b/packages/react/playground/next15/src/lib/storyblok.ts index 378deaa9c..e2b8b3c69 100644 --- a/packages/react/playground/next15/src/lib/storyblok.ts +++ b/packages/react/playground/next15/src/lib/storyblok.ts @@ -1,5 +1,5 @@ +import EmojiRandomizer from '@/app/components/EmojiRandomizer'; import Grid from '@/components/Grid'; -import IFrameEmbed from '@/components/IFrameEmbed'; import Page from '@/components/Page'; import Teaser from '@/components/Teaser'; import { apiPlugin, storyblokInit } from '@storyblok/react/rsc'; @@ -11,6 +11,6 @@ export const getStoryblokApi = storyblokInit({ 'teaser': Teaser, 'page': Page, 'grid': Grid, - 'iframe-embed': IFrameEmbed, + 'emoji-randomizer': EmojiRandomizer, }, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d441214cb..79b52daef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -386,7 +386,7 @@ importers: version: 1.1.2 tailwindcss: specifier: ^4.1.4 - version: 4.1.7 + version: 4.1.10 typescript: specifier: ^5.7.2 version: 5.8.3 @@ -489,7 +489,7 @@ importers: version: 9.33.0(eslint@9.26.0(jiti@2.4.2)) nuxt: specifier: ^3.15.4 - version: 3.17.3(@parcel/watcher@2.5.1)(@types/node@22.15.18)(db0@0.3.2)(eslint@9.26.0(jiti@2.4.2))(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3))(yaml@2.8.0) + version: 3.17.3(@parcel/watcher@2.5.1)(@types/node@22.15.18)(db0@0.3.2)(eslint@9.26.0(jiti@2.4.2))(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.5)(terser@5.39.2)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3))(yaml@2.8.0) prettier: specifier: ^3.4.2 version: 3.5.3 @@ -501,13 +501,13 @@ importers: devDependencies: '@nuxt/devtools': specifier: ^1.5.2 - version: 1.7.0(rollup@4.40.2)(vue@3.5.14(typescript@5.8.3)) + version: 1.7.0(rollup@4.40.2)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)) '@types/node': specifier: ^20 version: 20.17.47 nuxt: specifier: ^3.13.2 - version: 3.17.3(@parcel/watcher@2.5.1)(@types/node@20.17.47)(db0@0.3.2)(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(yaml@2.8.0) + version: 3.17.3(@parcel/watcher@2.5.1)(@types/node@20.17.47)(db0@0.3.2)(eslint@9.26.0(jiti@2.4.2))(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3))(yaml@2.8.0) packages/react: dependencies: @@ -643,6 +643,9 @@ importers: '@storyblok/react': specifier: workspace:* version: link:../.. + '@tailwindcss/typography': + specifier: ^0.5.16 + version: 0.5.16(tailwindcss@4.1.10) next: specifier: 15.3.2 version: 15.3.2(@babel/core@7.27.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -653,6 +656,9 @@ importers: specifier: 19.1.0 version: 19.1.0(react@19.1.0) devDependencies: + '@tailwindcss/postcss': + specifier: ^4.1.10 + version: 4.1.10 '@types/node': specifier: ^20 version: 20.17.47 @@ -662,6 +668,12 @@ importers: '@types/react-dom': specifier: ^19 version: 19.1.5(@types/react@19.1.4) + postcss: + specifier: ^8.5.6 + version: 8.5.6 + tailwindcss: + specifier: ^4.1.10 + version: 4.1.10 packages/react/playground/react: dependencies: @@ -4150,63 +4162,132 @@ packages: '@swc/types@0.1.21': resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + '@tailwindcss/node@4.1.10': + resolution: {integrity: sha512-2ACf1znY5fpRBwRhMgj9ZXvb2XZW8qs+oTfotJ2C5xR0/WNL7UHZ7zXl6s+rUqedL1mNi+0O+WQr5awGowS3PQ==} + '@tailwindcss/node@4.1.7': resolution: {integrity: sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==} + '@tailwindcss/oxide-android-arm64@4.1.10': + resolution: {integrity: sha512-VGLazCoRQ7rtsCzThaI1UyDu/XRYVyH4/EWiaSX6tFglE+xZB5cvtC5Omt0OQ+FfiIVP98su16jDVHDEIuH4iQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + '@tailwindcss/oxide-android-arm64@4.1.7': resolution: {integrity: sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==} engines: {node: '>= 10'} cpu: [arm64] os: [android] + '@tailwindcss/oxide-darwin-arm64@4.1.10': + resolution: {integrity: sha512-ZIFqvR1irX2yNjWJzKCqTCcHZbgkSkSkZKbRM3BPzhDL/18idA8uWCoopYA2CSDdSGFlDAxYdU2yBHwAwx8euQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@tailwindcss/oxide-darwin-arm64@4.1.7': resolution: {integrity: sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@tailwindcss/oxide-darwin-x64@4.1.10': + resolution: {integrity: sha512-eCA4zbIhWUFDXoamNztmS0MjXHSEJYlvATzWnRiTqJkcUteSjO94PoRHJy1Xbwp9bptjeIxxBHh+zBWFhttbrQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@tailwindcss/oxide-darwin-x64@4.1.7': resolution: {integrity: sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@tailwindcss/oxide-freebsd-x64@4.1.10': + resolution: {integrity: sha512-8/392Xu12R0cc93DpiJvNpJ4wYVSiciUlkiOHOSOQNH3adq9Gi/dtySK7dVQjXIOzlpSHjeCL89RUUI8/GTI6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + '@tailwindcss/oxide-freebsd-x64@4.1.7': resolution: {integrity: sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.10': + resolution: {integrity: sha512-t9rhmLT6EqeuPT+MXhWhlRYIMSfh5LZ6kBrC4FS6/+M1yXwfCtp24UumgCWOAJVyjQwG+lYva6wWZxrfvB+NhQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.7': resolution: {integrity: sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==} engines: {node: '>= 10'} cpu: [arm] os: [linux] + '@tailwindcss/oxide-linux-arm64-gnu@4.1.10': + resolution: {integrity: sha512-3oWrlNlxLRxXejQ8zImzrVLuZ/9Z2SeKoLhtCu0hpo38hTO2iL86eFOu4sVR8cZc6n3z7eRXXqtHJECa6mFOvA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tailwindcss/oxide-linux-arm64-gnu@4.1.7': resolution: {integrity: sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tailwindcss/oxide-linux-arm64-musl@4.1.10': + resolution: {integrity: sha512-saScU0cmWvg/Ez4gUmQWr9pvY9Kssxt+Xenfx1LG7LmqjcrvBnw4r9VjkFcqmbBb7GCBwYNcZi9X3/oMda9sqQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tailwindcss/oxide-linux-arm64-musl@4.1.7': resolution: {integrity: sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tailwindcss/oxide-linux-x64-gnu@4.1.10': + resolution: {integrity: sha512-/G3ao/ybV9YEEgAXeEg28dyH6gs1QG8tvdN9c2MNZdUXYBaIY/Gx0N6RlJzfLy/7Nkdok4kaxKPHKJUlAaoTdA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tailwindcss/oxide-linux-x64-gnu@4.1.7': resolution: {integrity: sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tailwindcss/oxide-linux-x64-musl@4.1.10': + resolution: {integrity: sha512-LNr7X8fTiKGRtQGOerSayc2pWJp/9ptRYAa4G+U+cjw9kJZvkopav1AQc5HHD+U364f71tZv6XamaHKgrIoVzA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tailwindcss/oxide-linux-x64-musl@4.1.7': resolution: {integrity: sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tailwindcss/oxide-wasm32-wasi@4.1.10': + resolution: {integrity: sha512-d6ekQpopFQJAcIK2i7ZzWOYGZ+A6NzzvQ3ozBvWFdeyqfOZdYHU66g5yr+/HC4ipP1ZgWsqa80+ISNILk+ae/Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + '@tailwindcss/oxide-wasm32-wasi@4.1.7': resolution: {integrity: sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==} engines: {node: '>=14.0.0'} @@ -4219,22 +4300,46 @@ packages: - '@emnapi/wasi-threads' - tslib + '@tailwindcss/oxide-win32-arm64-msvc@4.1.10': + resolution: {integrity: sha512-i1Iwg9gRbwNVOCYmnigWCCgow8nDWSFmeTUU5nbNx3rqbe4p0kRbEqLwLJbYZKmSSp23g4N6rCDmm7OuPBXhDA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@tailwindcss/oxide-win32-arm64-msvc@4.1.7': resolution: {integrity: sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@tailwindcss/oxide-win32-x64-msvc@4.1.10': + resolution: {integrity: sha512-sGiJTjcBSfGq2DVRtaSljq5ZgZS2SDHSIfhOylkBvHVjwOsodBhnb3HdmiKkVuUGKD0I7G63abMOVaskj1KpOA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@tailwindcss/oxide-win32-x64-msvc@4.1.7': resolution: {integrity: sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@tailwindcss/oxide@4.1.10': + resolution: {integrity: sha512-v0C43s7Pjw+B9w21htrQwuFObSkio2aV/qPx/mhrRldbqxbWJK6KizM+q7BF1/1CmuLqZqX3CeYF7s7P9fbA8Q==} + engines: {node: '>= 10'} + '@tailwindcss/oxide@4.1.7': resolution: {integrity: sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==} engines: {node: '>= 10'} + '@tailwindcss/postcss@4.1.10': + resolution: {integrity: sha512-B+7r7ABZbkXJwpvt2VMnS6ujcDoR2OOcFaqrLIo1xbcdxje4Vf+VgJdBzNNbrAjBj/rLZ66/tlQ1knIGNLKOBQ==} + + '@tailwindcss/typography@0.5.16': + resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' + '@tailwindcss/vite@4.1.7': resolution: {integrity: sha512-tYa2fO3zDe41I7WqijyVbRd8oWT0aEID1Eokz5hMT6wShLIHj3yvwj9XbfuloHP9glZ6H+aG2AN/+ZrxJ1Y5RQ==} peerDependencies: @@ -8373,6 +8478,9 @@ packages: lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} + lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -9718,6 +9826,10 @@ packages: peerDependencies: postcss: ^8.4.29 + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -9755,6 +9867,10 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + precinct@11.0.5: resolution: {integrity: sha512-oHSWLC8cL/0znFhvln26D14KfCQFFn4KOLSw6hmLhd+LQ2SKt9Ljm89but76Pc7flM9Ty1TnXyrA2u16MfRV3w==} engines: {node: ^14.14.0 || >=16.0.0} @@ -10809,6 +10925,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tailwindcss@4.1.10: + resolution: {integrity: sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA==} + tailwindcss@4.1.7: resolution: {integrity: sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==} @@ -14252,11 +14371,21 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)': + '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))': dependencies: '@nuxt/kit': 3.17.3(magicast@0.3.5) '@nuxt/schema': 3.17.3 execa: 7.2.0 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + transitivePeerDependencies: + - magicast + + '@nuxt/devtools-kit@2.4.1(magicast@0.3.5)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))': + dependencies: + '@nuxt/kit': 3.17.3(magicast@0.3.5) + '@nuxt/schema': 3.17.3 + execa: 8.0.1 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) transitivePeerDependencies: - magicast @@ -14293,13 +14422,13 @@ snapshots: prompts: 2.4.2 semver: 7.7.2 - '@nuxt/devtools@1.7.0(rollup@4.40.2)(vue@3.5.14(typescript@5.8.3))': + '@nuxt/devtools@1.7.0(rollup@4.40.2)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))': dependencies: '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5) + '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) '@nuxt/devtools-wizard': 1.7.0 '@nuxt/kit': 3.17.3(magicast@0.3.5) - '@vue/devtools-core': 7.6.8(vue@3.5.14(typescript@5.8.3)) + '@vue/devtools-core': 7.6.8(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)) '@vue/devtools-kit': 7.6.8 birpc: 0.2.19 consola: 3.4.2 @@ -14328,8 +14457,9 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.13 unimport: 3.14.6(rollup@4.40.2) - vite-plugin-inspect: 0.8.9(@nuxt/kit@3.17.3(magicast@0.3.5))(rollup@4.40.2) - vite-plugin-vue-inspector: 5.3.1(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.17.3(magicast@0.3.5))(rollup@4.40.2)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) + vite-plugin-vue-inspector: 5.3.1(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) which: 3.0.1 ws: 8.18.2 transitivePeerDependencies: @@ -14339,6 +14469,47 @@ snapshots: - utf-8-validate - vue + '@nuxt/devtools@2.4.1(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))': + dependencies: + '@nuxt/devtools-kit': 2.4.1(magicast@0.3.5)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) + '@nuxt/devtools-wizard': 2.4.1 + '@nuxt/kit': 3.17.3(magicast@0.3.5) + '@vue/devtools-core': 7.7.6(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)) + '@vue/devtools-kit': 7.7.6 + birpc: 2.3.0 + consola: 3.4.2 + destr: 2.0.5 + error-stack-parser-es: 1.0.5 + execa: 8.0.1 + fast-npm-meta: 0.4.2 + get-port-please: 3.1.2 + hookable: 5.5.3 + image-meta: 0.2.1 + is-installed-globally: 1.0.0 + launch-editor: 2.10.0 + local-pkg: 1.1.1 + magicast: 0.3.5 + nypm: 0.6.0 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + pkg-types: 2.1.0 + semver: 7.7.2 + simple-git: 3.27.0 + sirv: 3.0.1 + structured-clone-es: 1.0.0 + tinyglobby: 0.2.13 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + vite-plugin-inspect: 11.0.1(@nuxt/kit@3.17.3(magicast@0.3.5))(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) + vite-plugin-vue-tracer: 0.1.3(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)) + which: 5.0.0 + ws: 8.18.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + - vue + '@nuxt/devtools@2.4.1(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))': dependencies: '@nuxt/devtools-kit': 2.4.1(magicast@0.3.5)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) @@ -14563,7 +14734,7 @@ snapshots: - typescript - yaml - '@nuxt/vite-builder@3.17.3(@types/node@20.17.47)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(vue@3.5.14(typescript@5.8.3))(yaml@2.8.0)': + '@nuxt/vite-builder@3.17.3(@types/node@20.17.47)(eslint@9.26.0(jiti@2.4.2))(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(vue@3.5.14(typescript@5.8.3))(yaml@2.8.0)': dependencies: '@nuxt/kit': 3.17.3(magicast@0.3.5) '@rollup/plugin-replace': 6.0.2(rollup@4.40.2) @@ -14596,7 +14767,7 @@ snapshots: unplugin: 2.3.4 vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) vite-node: 3.1.3(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) - vite-plugin-checker: 0.9.3(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3)) + vite-plugin-checker: 0.9.3(eslint@9.26.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3)) vue: 3.5.14(typescript@5.8.3) vue-bundle-renderer: 2.1.1 transitivePeerDependencies: @@ -14624,10 +14795,10 @@ snapshots: - vue-tsc - yaml - '@nuxt/vite-builder@3.17.3(@types/node@22.15.18)(eslint@9.26.0(jiti@2.4.2))(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(vue@3.5.14(typescript@5.8.3))(yaml@2.8.0)': + '@nuxt/vite-builder@3.17.3(@types/node@22.15.18)(eslint@9.26.0(jiti@2.4.2))(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.5)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(vue@3.5.14(typescript@5.8.3))(yaml@2.8.0)': dependencies: '@nuxt/kit': 3.17.3(magicast@0.3.5) - '@rollup/plugin-replace': 6.0.2(rollup@4.40.2) + '@rollup/plugin-replace': 6.0.2(rollup@3.29.5) '@vitejs/plugin-vue': 5.2.4(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)) '@vitejs/plugin-vue-jsx': 4.1.2(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)) autoprefixer: 10.4.21(postcss@8.5.3) @@ -14650,7 +14821,7 @@ snapshots: perfect-debounce: 1.0.0 pkg-types: 2.1.0 postcss: 8.5.3 - rollup-plugin-visualizer: 5.14.0(rollup@4.40.2) + rollup-plugin-visualizer: 5.14.0(rollup@3.29.5) std-env: 3.9.0 ufo: 1.6.1 unenv: 2.0.0-rc.17 @@ -14692,7 +14863,7 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-vue: 9.33.0(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - eslint-import-resolver-webpack @@ -14703,8 +14874,8 @@ snapshots: '@nuxtjs/eslint-config@12.0.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2))': dependencies: eslint: 9.26.0(jiti@2.4.2) - eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint-plugin-n@15.7.0(eslint@9.26.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint-plugin-n@15.7.0(eslint@9.26.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-n: 15.7.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-node: 11.1.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-promise: 6.6.0(eslint@9.26.0(jiti@2.4.2)) @@ -15109,6 +15280,13 @@ snapshots: optionalDependencies: rollup: 3.29.5 + '@rollup/plugin-replace@6.0.2(rollup@3.29.5)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) + magic-string: 0.30.17 + optionalDependencies: + rollup: 3.29.5 + '@rollup/plugin-replace@6.0.2(rollup@4.40.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.40.2) @@ -15506,6 +15684,16 @@ snapshots: dependencies: '@swc/counter': 0.1.3 + '@tailwindcss/node@4.1.10': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.30.1 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.10 + '@tailwindcss/node@4.1.7': dependencies: '@ampproject/remapping': 2.3.0 @@ -15516,42 +15704,96 @@ snapshots: source-map-js: 1.2.1 tailwindcss: 4.1.7 + '@tailwindcss/oxide-android-arm64@4.1.10': + optional: true + '@tailwindcss/oxide-android-arm64@4.1.7': optional: true + '@tailwindcss/oxide-darwin-arm64@4.1.10': + optional: true + '@tailwindcss/oxide-darwin-arm64@4.1.7': optional: true + '@tailwindcss/oxide-darwin-x64@4.1.10': + optional: true + '@tailwindcss/oxide-darwin-x64@4.1.7': optional: true + '@tailwindcss/oxide-freebsd-x64@4.1.10': + optional: true + '@tailwindcss/oxide-freebsd-x64@4.1.7': optional: true + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.10': + optional: true + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.7': optional: true + '@tailwindcss/oxide-linux-arm64-gnu@4.1.10': + optional: true + '@tailwindcss/oxide-linux-arm64-gnu@4.1.7': optional: true + '@tailwindcss/oxide-linux-arm64-musl@4.1.10': + optional: true + '@tailwindcss/oxide-linux-arm64-musl@4.1.7': optional: true + '@tailwindcss/oxide-linux-x64-gnu@4.1.10': + optional: true + '@tailwindcss/oxide-linux-x64-gnu@4.1.7': optional: true + '@tailwindcss/oxide-linux-x64-musl@4.1.10': + optional: true + '@tailwindcss/oxide-linux-x64-musl@4.1.7': optional: true + '@tailwindcss/oxide-wasm32-wasi@4.1.10': + optional: true + '@tailwindcss/oxide-wasm32-wasi@4.1.7': optional: true + '@tailwindcss/oxide-win32-arm64-msvc@4.1.10': + optional: true + '@tailwindcss/oxide-win32-arm64-msvc@4.1.7': optional: true + '@tailwindcss/oxide-win32-x64-msvc@4.1.10': + optional: true + '@tailwindcss/oxide-win32-x64-msvc@4.1.7': optional: true + '@tailwindcss/oxide@4.1.10': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.10 + '@tailwindcss/oxide-darwin-arm64': 4.1.10 + '@tailwindcss/oxide-darwin-x64': 4.1.10 + '@tailwindcss/oxide-freebsd-x64': 4.1.10 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.10 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.10 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.10 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.10 + '@tailwindcss/oxide-linux-x64-musl': 4.1.10 + '@tailwindcss/oxide-wasm32-wasi': 4.1.10 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.10 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.10 + '@tailwindcss/oxide@4.1.7': dependencies: detect-libc: 2.0.4 @@ -15570,6 +15812,22 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.7 '@tailwindcss/oxide-win32-x64-msvc': 4.1.7 + '@tailwindcss/postcss@4.1.10': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.10 + '@tailwindcss/oxide': 4.1.10 + postcss: 8.5.6 + tailwindcss: 4.1.10 + + '@tailwindcss/typography@0.5.16(tailwindcss@4.1.10)': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 4.1.10 + '@tailwindcss/vite@4.1.7(vite@5.4.19(@types/node@22.15.18)(lightningcss@1.30.1)(terser@5.39.2))': dependencies: '@tailwindcss/node': 4.1.7 @@ -16374,14 +16632,26 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/devtools-core@7.6.8(vue@3.5.14(typescript@5.8.3))': + '@vue/devtools-core@7.6.8(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))': dependencies: '@vue/devtools-kit': 7.7.6 '@vue/devtools-shared': 7.7.6 mitt: 3.0.1 nanoid: 5.1.5 pathe: 1.1.2 - vite-hot-client: 0.2.4 + vite-hot-client: 0.2.4(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) + vue: 3.5.14(typescript@5.8.3) + transitivePeerDependencies: + - vite + + '@vue/devtools-core@7.7.6(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))': + dependencies: + '@vue/devtools-kit': 7.7.6 + '@vue/devtools-shared': 7.7.6 + mitt: 3.0.1 + nanoid: 5.1.5 + pathe: 2.0.3 + vite-hot-client: 2.0.4(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) vue: 3.5.14(typescript@5.8.3) transitivePeerDependencies: - vite @@ -18433,7 +18703,7 @@ snapshots: eslint: 8.55.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.1(eslint@8.55.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(eslint@8.55.0))(eslint@8.55.0) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@8.55.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(eslint@8.55.0))(eslint@8.55.0))(eslint@8.55.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.55.0) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.55.0) eslint-plugin-react: 7.37.5(eslint@8.55.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.55.0) @@ -18453,7 +18723,7 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.11.1(eslint@8.57.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@8.57.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.0) eslint-plugin-react: 7.37.5(eslint@8.57.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.0) @@ -18468,10 +18738,10 @@ snapshots: dependencies: eslint: 9.26.0(jiti@2.4.2) - eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint-plugin-n@15.7.0(eslint@9.26.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)): + eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint-plugin-n@15.7.0(eslint@9.26.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)): dependencies: eslint: 9.26.0(jiti@2.4.2) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-n: 15.7.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-promise: 6.6.0(eslint@9.26.0(jiti@2.4.2)) @@ -18507,7 +18777,7 @@ snapshots: tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@8.55.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(eslint@8.55.0))(eslint@8.55.0))(eslint@8.55.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.55.0) eslint-plugin-import-x: 4.11.1(eslint@8.55.0)(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -18523,7 +18793,7 @@ snapshots: tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@8.57.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.0) eslint-plugin-import-x: 4.11.1(eslint@8.57.0)(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -18539,7 +18809,7 @@ snapshots: tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-import-x: 4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -18708,7 +18978,7 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@8.55.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(eslint@8.55.0))(eslint@8.55.0))(eslint@8.55.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.55.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -18737,7 +19007,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)))(eslint@9.26.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -18766,7 +19036,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.11.1(eslint@8.57.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@8.57.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -20994,6 +21264,8 @@ snapshots: lodash.capitalize@4.2.1: {} + lodash.castarray@4.4.0: {} + lodash.debounce@4.0.8: {} lodash.defaults@4.2.0: {} @@ -21968,15 +22240,15 @@ snapshots: nuxi@3.25.1: {} - nuxt@3.17.3(@parcel/watcher@2.5.1)(@types/node@20.17.47)(db0@0.3.2)(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(yaml@2.8.0): + nuxt@3.17.3(@parcel/watcher@2.5.1)(@types/node@20.17.47)(db0@0.3.2)(eslint@9.26.0(jiti@2.4.2))(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3))(yaml@2.8.0): dependencies: '@nuxt/cli': 3.25.1(magicast@0.3.5) '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 2.4.1(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)) + '@nuxt/devtools': 2.4.1(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)) '@nuxt/kit': 3.17.3(magicast@0.3.5) '@nuxt/schema': 3.17.3 '@nuxt/telemetry': 2.6.6(magicast@0.3.5) - '@nuxt/vite-builder': 3.17.3(@types/node@20.17.47)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(vue@3.5.14(typescript@5.8.3))(yaml@2.8.0) + '@nuxt/vite-builder': 3.17.3(@types/node@20.17.47)(eslint@9.26.0(jiti@2.4.2))(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(vue@3.5.14(typescript@5.8.3))(yaml@2.8.0) '@unhead/vue': 2.0.8(vue@3.5.14(typescript@5.8.3)) '@vue/shared': 3.5.14 c12: 3.0.3(magicast@0.3.5) @@ -22088,7 +22360,7 @@ snapshots: - xml2js - yaml - nuxt@3.17.3(@parcel/watcher@2.5.1)(@types/node@22.15.18)(db0@0.3.2)(eslint@9.26.0(jiti@2.4.2))(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3))(yaml@2.8.0): + nuxt@3.17.3(@parcel/watcher@2.5.1)(@types/node@22.15.18)(db0@0.3.2)(eslint@9.26.0(jiti@2.4.2))(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.5)(terser@5.39.2)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3))(yaml@2.8.0): dependencies: '@nuxt/cli': 3.25.1(magicast@0.3.5) '@nuxt/devalue': 2.0.2 @@ -22096,7 +22368,7 @@ snapshots: '@nuxt/kit': 3.17.3(magicast@0.3.5) '@nuxt/schema': 3.17.3 '@nuxt/telemetry': 2.6.6(magicast@0.3.5) - '@nuxt/vite-builder': 3.17.3(@types/node@22.15.18)(eslint@9.26.0(jiti@2.4.2))(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.40.2)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(vue@3.5.14(typescript@5.8.3))(yaml@2.8.0) + '@nuxt/vite-builder': 3.17.3(@types/node@22.15.18)(eslint@9.26.0(jiti@2.4.2))(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.5)(terser@5.39.2)(typescript@5.8.3)(vue-tsc@2.2.10(typescript@5.8.3))(vue@3.5.14(typescript@5.8.3))(yaml@2.8.0) '@unhead/vue': 2.0.8(vue@3.5.14(typescript@5.8.3)) '@vue/shared': 3.5.14 c12: 3.0.3(magicast@0.3.5) @@ -22888,6 +23160,11 @@ snapshots: dependencies: postcss: 8.5.3 + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -22930,6 +23207,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + precinct@11.0.5: dependencies: '@dependents/detective-less': 4.1.0 @@ -23489,6 +23772,15 @@ snapshots: magic-string: 0.30.17 rollup: 4.40.2 + rollup-plugin-visualizer@5.14.0(rollup@3.29.5): + dependencies: + open: 8.4.2 + picomatch: 4.0.2 + source-map: 0.7.4 + yargs: 17.7.2 + optionalDependencies: + rollup: 3.29.5 + rollup-plugin-visualizer@5.14.0(rollup@4.40.2): dependencies: open: 8.4.2 @@ -24298,6 +24590,8 @@ snapshots: transitivePeerDependencies: - ts-node + tailwindcss@4.1.10: {} + tailwindcss@4.1.7: {} tapable@2.2.1: {} @@ -25003,13 +25297,25 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 + vite-dev-rpc@1.0.7(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): + dependencies: + birpc: 2.3.0 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + vite-hot-client: 2.0.4(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) + vite-dev-rpc@1.0.7(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): dependencies: birpc: 2.3.0 vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) vite-hot-client: 2.0.4(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) - vite-hot-client@0.2.4: {} + vite-hot-client@0.2.4(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): + dependencies: + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + + vite-hot-client@2.0.4(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): + dependencies: + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) vite-hot-client@2.0.4(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): dependencies: @@ -25059,7 +25365,7 @@ snapshots: vite-plugin-banner@0.8.1: {} - vite-plugin-checker@0.9.3(eslint@9.26.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3)): + vite-plugin-checker@0.9.3(eslint@9.26.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3)): dependencies: '@babel/code-frame': 7.27.1 chokidar: 4.0.3 @@ -25069,7 +25375,7 @@ snapshots: strip-ansi: 7.1.0 tiny-invariant: 1.3.3 tinyglobby: 0.2.13 - vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) vscode-uri: 3.1.0 optionalDependencies: eslint: 9.26.0(jiti@2.4.2) @@ -25077,7 +25383,7 @@ snapshots: typescript: 5.8.3 vue-tsc: 2.2.10(typescript@5.8.3) - vite-plugin-checker@0.9.3(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3)): + vite-plugin-checker@0.9.3(eslint@9.26.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue-tsc@2.2.10(typescript@5.8.3)): dependencies: '@babel/code-frame': 7.27.1 chokidar: 4.0.3 @@ -25087,9 +25393,10 @@ snapshots: strip-ansi: 7.1.0 tiny-invariant: 1.3.3 tinyglobby: 0.2.13 - vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) vscode-uri: 3.1.0 optionalDependencies: + eslint: 9.26.0(jiti@2.4.2) optionator: 0.9.4 typescript: 5.8.3 vue-tsc: 2.2.10(typescript@5.8.3) @@ -25113,7 +25420,7 @@ snapshots: - rollup - supports-color - vite-plugin-inspect@0.8.9(@nuxt/kit@3.17.3(magicast@0.3.5))(rollup@4.40.2): + vite-plugin-inspect@0.8.9(@nuxt/kit@3.17.3(magicast@0.3.5))(rollup@4.40.2)(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.4(rollup@4.40.2) @@ -25124,6 +25431,7 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.1.1 sirv: 3.0.1 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) optionalDependencies: '@nuxt/kit': 3.17.3(magicast@0.3.5) transitivePeerDependencies: @@ -25157,6 +25465,23 @@ snapshots: transitivePeerDependencies: - supports-color + vite-plugin-inspect@11.0.1(@nuxt/kit@3.17.3(magicast@0.3.5))(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): + dependencies: + ansis: 3.17.0 + debug: 4.4.1(supports-color@8.1.1) + error-stack-parser-es: 1.0.5 + ohash: 2.0.11 + open: 10.1.2 + perfect-debounce: 1.0.0 + sirv: 3.0.1 + unplugin-utils: 0.2.4 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + vite-dev-rpc: 1.0.7(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)) + optionalDependencies: + '@nuxt/kit': 3.17.3(magicast@0.3.5) + transitivePeerDependencies: + - supports-color + vite-plugin-inspect@11.0.1(@nuxt/kit@3.17.3(magicast@0.3.5))(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): dependencies: ansis: 3.17.0 @@ -25218,6 +25543,21 @@ snapshots: - supports-color - vue + vite-plugin-vue-inspector@5.3.1(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.1) + '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.27.1) + '@vue/compiler-dom': 3.5.14 + kolorist: 1.8.0 + magic-string: 0.30.17 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + transitivePeerDependencies: + - supports-color + vite-plugin-vue-inspector@5.3.1(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0)): dependencies: '@babel/core': 7.27.1 @@ -25233,6 +25573,16 @@ snapshots: transitivePeerDependencies: - supports-color + vite-plugin-vue-tracer@0.1.3(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)): + dependencies: + estree-walker: 3.0.3 + exsolve: 1.0.5 + magic-string: 0.30.17 + pathe: 2.0.3 + source-map-js: 1.2.1 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0) + vue: 3.5.14(typescript@5.8.3) + vite-plugin-vue-tracer@0.1.3(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3)): dependencies: estree-walker: 3.0.3 From e368a49f38934e17d6158701dc1777a5e6ae9af4 Mon Sep 17 00:00:00 2001 From: alvarosabu Date: Mon, 23 Jun 2025 09:47:04 +0200 Subject: [PATCH 2/3] chore(react): enhance playground with Tailwind CSS integration and new component - Added Tailwind CSS and related plugins for typography and Vite support. - Updated navigation and layout styles using Tailwind utility classes. - Introduced a new EmojiRandomizer component for interactive emoji display. - Removed the deprecated IFrameEmbed component. - Updated index.html to include the new styles.css for Tailwind integration. --- packages/react/playground/react/App.tsx | 9 ++-- .../react/components/emiji-randomizer.tsx | 49 +++++++++++++++++++ .../react/components/iframe-embed.tsx | 19 ------- packages/react/playground/react/index.html | 1 + packages/react/playground/react/index.tsx | 5 +- packages/react/playground/react/package.json | 3 ++ packages/react/playground/react/styles.css | 6 +++ .../react/playground/react/vite.config.ts | 2 + pnpm-lock.yaml | 16 ++++++ 9 files changed, 84 insertions(+), 26 deletions(-) create mode 100644 packages/react/playground/react/components/emiji-randomizer.tsx delete mode 100644 packages/react/playground/react/components/iframe-embed.tsx create mode 100644 packages/react/playground/react/styles.css diff --git a/packages/react/playground/react/App.tsx b/packages/react/playground/react/App.tsx index 5f189be70..28f882f38 100644 --- a/packages/react/playground/react/App.tsx +++ b/packages/react/playground/react/App.tsx @@ -7,22 +7,23 @@ function App() { return (
-
); diff --git a/packages/react/playground/react/components/emiji-randomizer.tsx b/packages/react/playground/react/components/emiji-randomizer.tsx new file mode 100644 index 000000000..73c778839 --- /dev/null +++ b/packages/react/playground/react/components/emiji-randomizer.tsx @@ -0,0 +1,49 @@ +import React, { type FC, useState } from 'react'; +import type { SbBlokData } from '@storyblok/react'; + +interface EmojiRandomizerProps { + blok: SbBlokData & { + label?: string; + }; +} + +/** + * A component that displays a label and a random emoji that changes on click + */ +const EmojiRandomizer: FC = ({ blok }) => { + // List of fun emojis to randomly choose from + const emojis = ['😊', '🎉', '🚀', '✨', '🌈', '🎨', '🎸', '🎮', '🍕', '🌺']; + + // State to track current emoji + const [currentEmoji, setCurrentEmoji] = useState(() => + emojis[Math.floor(Math.random() * emojis.length)], + ); + + /** + * Generates a new random emoji different from the current one + */ + const randomizeEmoji = () => { + let newEmoji; + do { + newEmoji = emojis[Math.floor(Math.random() * emojis.length)]; + } while (newEmoji === currentEmoji); + + setCurrentEmoji(newEmoji); + }; + + return ( +
+
+ {currentEmoji} +
+ +
+ ); +}; + +export default EmojiRandomizer; \ No newline at end of file diff --git a/packages/react/playground/react/components/iframe-embed.tsx b/packages/react/playground/react/components/iframe-embed.tsx deleted file mode 100644 index 63e53a2f6..000000000 --- a/packages/react/playground/react/components/iframe-embed.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import type { SbBlokData } from '@storyblok/react'; -import { storyblokEditable } from '@storyblok/react'; - -interface IframeEmbedProps { - blok: SbBlokData; -} - -const IFrameEmbed = ({ blok }: IframeEmbedProps) => { - return ( -
-
-