From 5924ddea63b4522f27a304d55fe947ceb45c9f9d Mon Sep 17 00:00:00 2001 From: TechQuery Date: Sat, 2 May 2026 00:49:30 +0800 Subject: [PATCH 1/2] [migrate] replace built-in Count Down & Zodiac Bar components with Idea-React 2.2 --- .../Hackathon/AgendaCountdown.module.less | 2 +- .../Activity/Hackathon/AgendaCountdown.tsx | 6 +- components/Activity/Hackathon/Hero.tsx | 6 +- components/Base/Countdown.tsx | 105 ----- components/Base/ZodiacBar.tsx | 34 -- package.json | 8 +- pages/NGO/index.tsx | 2 +- pages/hackathon/[id].tsx | 2 +- pnpm-lock.yaml | 426 +++++++++++------- 9 files changed, 289 insertions(+), 302 deletions(-) delete mode 100644 components/Base/Countdown.tsx delete mode 100644 components/Base/ZodiacBar.tsx diff --git a/components/Activity/Hackathon/AgendaCountdown.module.less b/components/Activity/Hackathon/AgendaCountdown.module.less index 8d12cf9..3861a84 100644 --- a/components/Activity/Hackathon/AgendaCountdown.module.less +++ b/components/Activity/Hackathon/AgendaCountdown.module.less @@ -20,7 +20,7 @@ grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.8rem; - li { + .item { gap: 0.7rem; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.03), diff --git a/components/Activity/Hackathon/AgendaCountdown.tsx b/components/Activity/Hackathon/AgendaCountdown.tsx index 7b69487..92ed0d4 100644 --- a/components/Activity/Hackathon/AgendaCountdown.tsx +++ b/components/Activity/Hackathon/AgendaCountdown.tsx @@ -1,10 +1,10 @@ import { TableCellValue } from 'mobx-lark'; import { observer } from 'mobx-react'; import { FC, useContext, useState } from 'react'; +import { Countdown, TimeUnit } from 'idea-react'; import { Agenda } from '../../../models/Hackathon'; import { I18nContext } from '../../../models/Translation'; -import { Countdown, TimeUnit } from '../../Base/Countdown'; import styles from './AgendaCountdown.module.less'; import { agendaTypeLabelOf, resolveCountdownState } from './utility'; @@ -15,7 +15,7 @@ export interface AgendaCountdownProps { units: TimeUnit[]; } -export const AgendaCountdown: FC = observer( +const AgendaCountdown: FC = observer( ({ agendaItems, endTime, startTime, units }) => { const { t } = useContext(I18nContext); const [referenceTime, setReferenceTime] = useState(Date.now()); @@ -38,6 +38,7 @@ export const AgendaCountdown: FC = observer( setReferenceTime(Date.now())} units={units} @@ -46,3 +47,4 @@ export const AgendaCountdown: FC = observer( ); }, ); +export default AgendaCountdown; diff --git a/components/Activity/Hackathon/Hero.tsx b/components/Activity/Hackathon/Hero.tsx index 60495fb..c92ef28 100644 --- a/components/Activity/Hackathon/Hero.tsx +++ b/components/Activity/Hackathon/Hero.tsx @@ -1,13 +1,15 @@ import { TableCellValue } from 'mobx-lark'; +import dynamic from 'next/dynamic'; import { FC } from 'react'; import { Container } from 'react-bootstrap'; +import { TimeUnit } from 'idea-react'; import { Agenda } from '../../../models/Hackathon'; import { LarkImage } from '../../LarkImage'; -import { AgendaCountdown } from './AgendaCountdown'; -import { TimeUnit } from '../../Base/Countdown'; import styles from './Hero.module.less'; +const AgendaCountdown = dynamic(() => import('./AgendaCountdown'), { ssr: false }); + export type HackathonHeroNavItem = Record<'label' | 'href', string>; export interface HackathonHeroAction extends HackathonHeroNavItem { diff --git a/components/Base/Countdown.tsx b/components/Base/Countdown.tsx deleted file mode 100644 index 9c45fdc..0000000 --- a/components/Base/Countdown.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { computed, observable } from 'mobx'; -import { observer } from 'mobx-react'; -import { ObservedComponent, reaction } from 'mobx-react-helper'; -import { HTMLAttributes } from 'react'; -import { Second, TimeData } from 'web-utility'; - -export interface TimeUnit { - scale: number; - label: string; -} - -interface TimeSection { - value: number; - label: string; -} - -export interface CountdownProps extends HTMLAttributes { - units: TimeUnit[]; - endTime: TimeData; - onEnd?: (endTime: TimeData) => any; -} - -@observer -export class Countdown extends ObservedComponent { - @observable - accessor rest = 0; - - private timer = 0; - - get endTimestamp() { - return +new Date(this.props.endTime || Date.now()); - } - - @computed - get timeSections(): TimeSection[] { - const { units } = this.observedProps; - let { rest } = this; - - return units.reduce((list, { label }, index) => { - const scale = units - .slice(index) - .map(({ scale }) => scale) - .reduce((sum, scale) => sum * scale, 1); - - const value = ~~(rest / scale); - rest -= value * scale; - - list.push({ value, label }); - return list; - }, [] as TimeSection[]); - } - - tick = () => { - const { onEnd, endTime } = this.props, - rest = this.endTimestamp - Date.now(); - - if (rest > 0) { - this.rest = rest; - } else { - this.rest = 0; - this.stop(); - onEnd?.(endTime); - } - }; - - stop() { - if (this.timer) { - window.clearInterval(this.timer); - this.timer = 0; - } - } - - componentDidMount() { - super.componentDidMount(); - this.initTimer(); - } - - @reaction(_this => _this.observedProps.endTime) - initTimer() { - this.stop(); - this.tick(); - this.timer = window.setInterval(this.tick, Second); - } - - componentWillUnmount() { - super.componentWillUnmount(); - this.stop(); - } - - render() { - const { className = '', ...props } = this.props; - const { timeSections } = this; - - return ( -
    - {timeSections.map(({ value, label }) => ( -
  1. - {(value + '').padStart(2, '0')} - {label} -
  2. - ))} -
- ); - } -} diff --git a/components/Base/ZodiacBar.tsx b/components/Base/ZodiacBar.tsx deleted file mode 100644 index b54dd49..0000000 --- a/components/Base/ZodiacBar.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import Link from 'next/link'; -import { FC, ReactNode } from 'react'; - -export const ZodiacSigns = ['๐Ÿต', '๐Ÿ”', '๐Ÿถ', '๐Ÿท', '๐Ÿญ', '๐Ÿฎ', '๐Ÿฏ', '๐Ÿฐ', '๐Ÿฒ', '๐Ÿ', '๐Ÿด', '๐Ÿ']; - -export interface ZodiacBarProps { - startYear: number; - endYear?: number; - itemOf?: (year: number, zodiac: string) => { link?: string; title?: ReactNode }; -} - -export const ZodiacBar: FC = ({ - startYear, - endYear = new Date().getFullYear(), - itemOf, -}) => ( -
    - {Array.from({ length: endYear - startYear + 1 }, (_, index) => { - const year = endYear - index; - const zodiac = ZodiacSigns[year % 12]; - const { link = '#', title } = itemOf?.(year, zodiac) || {}; - - return ( -
  1. - -
    {zodiac}
    - - {title} - -
  2. - ); - })} -
-); diff --git a/package.json b/package.json index 935cbd4..779837b 100644 --- a/package.json +++ b/package.json @@ -21,13 +21,13 @@ "core-js": "^3.49.0", "echarts-jsx": "^0.6.0", "file-type": "^22.0.1", - "idea-react": "^2.0.0-rc.13", + "idea-react": "^2.2.0", "jsonwebtoken": "^9.0.3", "koa": "^3.2.0", "koa-jwt": "^4.0.4", "koajax": "^3.3.0", "license-filter": "^0.2.5", - "marked": "^18.0.2", + "marked": "^18.0.3", "mime": "^4.1.0", "mobx": "^6.15.0", "mobx-github": "^0.6.2", @@ -49,7 +49,7 @@ "react-typed-component": "^1.0.6", "remark-frontmatter": "^5.0.0", "remark-mdx-frontmatter": "^5.2.0", - "web-utility": "^4.6.5", + "web-utility": "^4.6.6", "yaml": "^2.8.3" }, "devDependencies": { @@ -69,7 +69,7 @@ "@types/nodemailer": "^8.0.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "eslint": "^10.2.1", + "eslint": "^10.3.0", "eslint-config-next": "^16.2.4", "eslint-config-prettier": "^10.1.8", "eslint-plugin-react": "^7.37.5", diff --git a/pages/NGO/index.tsx b/pages/NGO/index.tsx index 0ce5287..4c52939 100644 --- a/pages/NGO/index.tsx +++ b/pages/NGO/index.tsx @@ -3,8 +3,8 @@ import { InferGetServerSidePropsType } from 'next'; import { cache, compose, errorLogger } from 'next-ssr-middleware'; import { FC, useContext } from 'react'; import { Container } from 'react-bootstrap'; +import { ZodiacBar } from 'idea-react'; -import { ZodiacBar } from '../../components/Base/ZodiacBar'; import { PageHead } from '../../components/Layout/PageHead'; import { OrganizationModel } from '../../models/Organization'; import { I18nContext } from '../../models/Translation'; diff --git a/pages/hackathon/[id].tsx b/pages/hackathon/[id].tsx index 8243d8a..0f73a56 100644 --- a/pages/hackathon/[id].tsx +++ b/pages/hackathon/[id].tsx @@ -2,6 +2,7 @@ import { TableCellLocation, TableFormView } from 'mobx-lark'; import { observer } from 'mobx-react'; import { cache, compose, errorLogger } from 'next-ssr-middleware'; import { FC, useContext } from 'react'; +import { TimeUnit } from 'idea-react'; import { HackathonActionHub, @@ -25,7 +26,6 @@ import { heroNavigation, RequiredTableKeys, } from '../../components/Activity/Hackathon/constant'; -import { TimeUnit } from '../../components/Base/Countdown'; import { HackathonFAQ } from '../../components/Activity/Hackathon/FAQ'; import { HackathonHero } from '../../components/Activity/Hackathon/Hero'; import { HackathonOverview } from '../../components/Activity/Hackathon/Overview'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7cf211..8ad4916 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,8 +37,8 @@ importers: specifier: ^22.0.1 version: 22.0.1 idea-react: - specifier: ^2.0.0-rc.13 - version: 2.0.0-rc.13(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5)(typescript@5.9.3) + specifier: ^2.2.0 + version: 2.2.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5)(typescript@5.9.3) jsonwebtoken: specifier: ^9.0.3 version: 9.0.3 @@ -55,8 +55,8 @@ importers: specifier: ^0.2.5 version: 0.2.5 marked: - specifier: ^18.0.2 - version: 18.0.2 + specifier: ^18.0.3 + version: 18.0.3 mime: specifier: ^4.1.0 version: 4.1.0 @@ -121,8 +121,8 @@ importers: specifier: ^5.2.0 version: 5.2.0 web-utility: - specifier: ^4.6.5 - version: 4.6.5(typescript@5.9.3) + specifier: ^4.6.6 + version: 4.6.6(typescript@5.9.3) yaml: specifier: ^2.8.3 version: 2.8.3 @@ -138,10 +138,10 @@ importers: version: 7.28.5(@babel/core@7.29.0) '@cspell/eslint-plugin': specifier: ^10.0.0 - version: 10.0.0(eslint@10.2.1(jiti@2.6.1)) + version: 10.0.0(eslint@10.3.0(jiti@2.6.1)) '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.2.1(jiti@2.6.1)) + version: 10.0.1(eslint@10.3.0(jiti@2.6.1)) '@next/eslint-plugin-next': specifier: ^16.2.4 version: 16.2.4 @@ -150,7 +150,7 @@ importers: version: 1.1.2 '@stylistic/eslint-plugin': specifier: ^5.10.0 - version: 5.10.0(eslint@10.2.1(jiti@2.6.1)) + version: 5.10.0(eslint@10.3.0(jiti@2.6.1)) '@types/eslint-config-prettier': specifier: ^6.11.3 version: 6.11.3 @@ -176,20 +176,20 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) eslint: - specifier: ^10.2.1 - version: 10.2.1(jiti@2.6.1) + specifier: ^10.3.0 + version: 10.3.0(jiti@2.6.1) eslint-config-next: specifier: ^16.2.4 - version: 16.2.4(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + version: 16.2.4(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.2.1(jiti@2.6.1)) + version: 10.1.8(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@10.2.1(jiti@2.6.1)) + version: 7.37.5(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-simple-import-sort: specifier: ^13.0.0 - version: 13.0.0(eslint@10.2.1(jiti@2.6.1)) + version: 13.0.0(eslint@10.3.0(jiti@2.6.1)) globals: specifier: ^17.5.0 version: 17.5.0 @@ -225,7 +225,7 @@ importers: version: 5.9.3 typescript-eslint: specifier: ^8.59.1 - version: 8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + version: 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) packages: @@ -239,8 +239,8 @@ packages: resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.29.0': - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} engines: {node: '>=6.9.0'} '@babel/core@7.29.0': @@ -259,8 +259,8 @@ packages: resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.6': - resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + '@babel/helper-create-class-features-plugin@7.29.3': + resolution: {integrity: sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -338,8 +338,8 @@ packages: resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true @@ -361,6 +361,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3': + resolution: {integrity: sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} engines: {node: '>=6.9.0'} @@ -757,8 +763,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.29.2': - resolution: {integrity: sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==} + '@babel/preset-env@7.29.3': + resolution: {integrity: sha512-ySZypNLAIH1ClygLDQzVMoGQRViATnkHkYYV6TcNDz+8+jwZCdsguGvsb3EY5d9wyWyhmF1iSuFM0Yh5XPnqSA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1748,6 +1754,9 @@ packages: '@types/nodemailer@8.0.0': resolution: {integrity: sha512-fyf8jWULsCo0d0BuoQ75i6IeoHs47qcqxWc7yUdUcV0pOZGjUTTOvwdG1PRXUDqN/8A64yQdQdnA2pZgcdi+cA==} + '@types/prismjs@1.26.6': + resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} + '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} @@ -2008,6 +2017,9 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + aria-hidden@1.2.6: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} @@ -2085,8 +2097,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.11.3: - resolution: {integrity: sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==} + axe-core@4.11.4: + resolution: {integrity: sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==} engines: {node: '>=4'} axobject-query@4.1.0: @@ -2129,8 +2141,8 @@ packages: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} engines: {node: '>= 0.6.0'} - baseline-browser-mapping@2.10.24: - resolution: {integrity: sha512-I2NkZOOrj2XuguvWCK6OVh9GavsNjZjK908Rq3mIBK25+GD8vPX5w2WdxVqnQ7xx3SrZJiCiZFu+/Oz50oSYSA==} + baseline-browser-mapping@2.10.25: + resolution: {integrity: sha512-QO/VHsXCQdnzADMfmkeOPvHdIAkoB7i0/rGjINPJEetLx75hNttVWGQ/jycHUDP9zZ9rupbm60WRxcwViB0MiA==} engines: {node: '>=6.0.0'} hasBin: true @@ -2265,6 +2277,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + comment-json@4.6.2: resolution: {integrity: sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==} engines: {node: '>= 6'} @@ -2478,8 +2494,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.344: - resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} + electron-to-chromium@1.5.348: + resolution: {integrity: sha512-QC2X59nRlycQQMc4ZXjSVBX+tSgJfgRtcrYHbIZLgOV2dCvefoQGegLR7lLXKgpPpSuVmJU19LMzGrSa2C7k3Q==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2661,8 +2677,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.2.1: - resolution: {integrity: sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==} + eslint@10.3.0: + resolution: {integrity: sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2997,8 +3013,8 @@ packages: idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} - idea-react@2.0.0-rc.13: - resolution: {integrity: sha512-1UEQk6tppAOcVQJgiET/WkYkpG0ShWuFm6eq3oK4fhepDZzlgcBVHvmOZBgGmw2ecE+9wqjQeD7mL0PEqzz9Aw==} + idea-react@2.2.0: + resolution: {integrity: sha512-JJMHnap4PmgkTO7GAlG2PTOQRzRcPF12xFBKRfpYJVESOeex26QYo3PDqURR3WfgoW3pcLXdxvHOsgCBA84PQg==} peerDependencies: react: '>=16' react-dom: '>=16' @@ -3383,6 +3399,9 @@ packages: license-filter@0.2.5: resolution: {integrity: sha512-xzKCeI9ax0k6/qALLhyXoJq1sbnmGHhjAX1AHr9ItDL9LF4jv97h64Z9iDyNTBQdhdr3BTI80VsWwTp0wpM1GQ==} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lint-staged@16.4.0: resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} engines: {node: '>=20.17'} @@ -3486,8 +3505,8 @@ packages: engines: {node: '>= 18'} hasBin: true - marked@18.0.2: - resolution: {integrity: sha512-NsmlUYBS/Zg57rgDWMYdnre6OTj4e+qq/JS2ot3KrYLSoHLw+sDu0Nm1ZGpRgYAq6c+b1ekaY5NzVchMCQnzcg==} + marked@18.0.3: + resolution: {integrity: sha512-7VT90JOkDeaRWpfjOReRGPEKn0ecdARBkDGL+tT1wZY0efPPqkUxLUSmzy/C7TIylQYJC9STISEsCHrqb/7VIA==} engines: {node: '>= 20'} hasBin: true @@ -3739,8 +3758,11 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -3972,6 +3994,10 @@ packages: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -4015,6 +4041,11 @@ packages: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} + prism-react-renderer@2.4.1: + resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} + peerDependencies: + react: '>=16.0.0' + prismjs@1.30.0: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} @@ -4101,6 +4132,13 @@ packages: react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + react-live@4.1.8: + resolution: {integrity: sha512-B2SgNqwPuS2ekqj4lcxi5TibEcjWkdVyYykBEUBshPAPDQ527x2zPEZg560n8egNtAjUpwXFQm7pcXV65aAYmg==} + engines: {node: '>= 0.12.0', npm: '>= 2.0.0'} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + react-stately@3.46.0: resolution: {integrity: sha512-OdxhWvHgs2L4OJGIs7hnuTr5WjjMM6enhNEAMRqiekhF8+ITvA2LRwNftOZwcogaoCslGYq5S2VQTQwnm0GbCA==} peerDependencies: @@ -4481,6 +4519,11 @@ packages: babel-plugin-macros: optional: true + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -4529,8 +4572,15 @@ packages: text-segmentation@1.0.3: resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} - tinyexec@1.1.1: - resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tinyexec@1.1.2: + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} engines: {node: '>=18'} tinyglobby@0.2.16: @@ -4567,6 +4617,9 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -4730,6 +4783,11 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-editable@2.3.3: + resolution: {integrity: sha512-7wVD2JbfAFJ3DK0vITvXBdpd9JAz5BcKAAolsnLBuBn6UDDwBGuCIAGvR3yA2BNKm578vAMVHFCWaOcA+BhhiA==} + peerDependencies: + react: '>= 16.8.0' + use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -4761,8 +4819,8 @@ packages: resolution: {integrity: sha512-0rYDzGOh9EZpig92umN5g5D/9A1Kff7k0/mzPSSCY8jEQeYkgRMoY7LhbXtUCWzLCMX0TUE9aoHkjFNB7D9pfA==} engines: {node: '>= 8'} - web-utility@4.6.5: - resolution: {integrity: sha512-1XsfSzTHUJB4qa7oiFkfKxUiVwMzZy7c8X4wTqno1ors8w6tFL/2kj+idoeCSXVh3OmCbcXhTldqGG7MbcP7FQ==} + web-utility@4.6.6: + resolution: {integrity: sha512-ia1yi7NC6wF3ScTW9U2nu4VAjuKHbpXuluh3x8b0LSMiM49V5MexA+asaidmURMZ3gTTRD+ymw5+W4MWSaazqg==} peerDependencies: element-internals-polyfill: '>=1' typescript: '>=4.1' @@ -4887,8 +4945,8 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zod@4.4.1: + resolution: {integrity: sha512-a6ENMBBGZBsnlSebQ/eKCguSBeGKSf4O7BPnqVPmYGtpBYI7VSqoVqw+QcB7kPRjbqPwhYTpFbVj/RqNz/CT0Q==} zrender@6.0.0: resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==} @@ -4910,7 +4968,7 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.29.0': {} + '@babel/compat-data@7.29.3': {} '@babel/core@7.29.0': dependencies: @@ -4919,7 +4977,7 @@ snapshots: '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -4934,7 +4992,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -4946,13 +5004,13 @@ snapshots: '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/helper-validator-option': 7.27.1 browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 @@ -5058,7 +5116,7 @@ snapshots: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.2': + '@babel/parser@7.29.3': dependencies: '@babel/types': 7.29.0 @@ -5080,6 +5138,14 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -5100,7 +5166,7 @@ snapshots: '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: @@ -5177,7 +5243,7 @@ snapshots: '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -5185,7 +5251,7 @@ snapshots: '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -5388,7 +5454,7 @@ snapshots: '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -5397,7 +5463,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -5484,7 +5550,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) @@ -5514,9 +5580,9 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.29.2(@babel/core@7.29.0)': + '@babel/preset-env@7.29.3(@babel/core@7.29.0)': dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/core': 7.29.0 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 @@ -5524,6 +5590,7 @@ snapshots: '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.3(@babel/core@7.29.0) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) @@ -5614,7 +5681,7 @@ snapshots: '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -5622,7 +5689,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 @@ -5846,12 +5913,12 @@ snapshots: '@cspell/url': 10.0.0 import-meta-resolve: 4.2.0 - '@cspell/eslint-plugin@10.0.0(eslint@10.2.1(jiti@2.6.1))': + '@cspell/eslint-plugin@10.0.0(eslint@10.3.0(jiti@2.6.1))': dependencies: '@cspell/cspell-types': 10.0.0 '@cspell/url': 10.0.0 cspell-lib: 10.0.0 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) synckit: 0.11.12 '@cspell/filetypes@10.0.0': {} @@ -5900,9 +5967,9 @@ snapshots: tslib: 2.8.1 optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.2.1(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0(jiti@2.6.1))': dependencies: - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -5923,9 +5990,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.2.1(jiti@2.6.1))': + '@eslint/js@10.0.1(eslint@10.3.0(jiti@2.6.1))': optionalDependencies: - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) '@eslint/object-schema@3.0.5': {} @@ -6381,11 +6448,11 @@ snapshots: '@softonus/prettier-plugin-duplicate-remover@1.1.2': {} - '@stylistic/eslint-plugin@5.10.0(eslint@10.2.1(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) '@typescript-eslint/types': 8.59.1 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -6566,6 +6633,8 @@ snapshots: dependencies: '@types/node': 24.12.2 + '@types/prismjs@1.26.6': {} + '@types/prop-types@15.7.15': {} '@types/qs@6.15.0': {} @@ -6607,15 +6676,15 @@ snapshots: '@types/warning@3.0.4': {} - '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/type-utils': 8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.59.1 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -6623,14 +6692,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.59.1 '@typescript-eslint/types': 8.59.1 '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.59.1 debug: 4.4.3 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -6653,13 +6722,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.59.1 '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -6682,13 +6751,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.59.1 '@typescript-eslint/types': 8.59.1 '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -6810,6 +6879,8 @@ snapshots: ansi-styles@6.2.3: {} + any-promise@1.3.0: {} + aria-hidden@1.2.6: dependencies: tslib: 2.8.1 @@ -6907,7 +6978,7 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axe-core@4.11.3: {} + axe-core@4.11.4: {} axobject-query@4.1.0: {} @@ -6921,7 +6992,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/core': 7.29.0 '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) semver: 6.3.1 @@ -6951,7 +7022,7 @@ snapshots: base64-arraybuffer@1.0.2: {} - baseline-browser-mapping@2.10.24: {} + baseline-browser-mapping@2.10.25: {} big.js@5.2.2: {} @@ -6976,9 +7047,9 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.24 + baseline-browser-mapping: 2.10.25 caniuse-lite: 1.0.30001791 - electron-to-chromium: 1.5.344 + electron-to-chromium: 1.5.348 node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -7072,6 +7143,8 @@ snapshots: commander@2.20.3: {} + commander@4.1.1: {} + comment-json@4.6.2: dependencies: array-timsort: 1.0.3 @@ -7287,7 +7360,7 @@ snapshots: echarts: 6.0.0 lodash: 4.18.1 react: 19.2.5 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -7308,7 +7381,7 @@ snapshots: regenerator-runtime: 0.14.1 turndown: 7.2.4 turndown-plugin-gfm: 1.0.2 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -7319,7 +7392,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.344: {} + electron-to-chromium@1.5.348: {} emoji-regex@10.6.0: {} @@ -7463,18 +7536,18 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@16.2.4(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@16.2.4(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 16.2.4 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.1(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.1(jiti@2.6.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@10.2.1(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@10.2.1(jiti@2.6.1)) - eslint-plugin-react-hooks: 7.1.1(eslint@10.2.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.3.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.3.0(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@10.3.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@10.3.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.1.1(eslint@10.3.0(jiti@2.6.1)) globals: 16.4.0 - typescript-eslint: 8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + typescript-eslint: 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -7483,9 +7556,9 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-prettier@10.1.8(eslint@10.2.1(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@10.3.0(jiti@2.6.1)): dependencies: - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) eslint-import-resolver-node@0.3.10: dependencies: @@ -7495,32 +7568,32 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.1(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.3.0(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) get-tsconfig: 4.14.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.3.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.3.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.3.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.3.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7529,9 +7602,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.3.0(jiti@2.6.1)) hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7547,17 +7620,17 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@10.2.1(jiti@2.6.1)): + eslint-plugin-jsx-a11y@6.10.2(eslint@10.3.0(jiti@2.6.1)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.11.3 + axe-core: 4.11.4 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) hasown: 2.0.3 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -7566,18 +7639,18 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@7.1.1(eslint@10.2.1(jiti@2.6.1)): + eslint-plugin-react-hooks@7.1.1(eslint@10.3.0(jiti@2.6.1)): dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 - eslint: 10.2.1(jiti@2.6.1) + '@babel/parser': 7.29.3 + eslint: 10.3.0(jiti@2.6.1) hermes-parser: 0.25.1 - zod: 4.3.6 - zod-validation-error: 4.0.2(zod@4.3.6) + zod: 4.4.1 + zod-validation-error: 4.0.2(zod@4.4.1) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@10.2.1(jiti@2.6.1)): + eslint-plugin-react@7.37.5(eslint@10.3.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -7585,7 +7658,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.2 - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.3 jsx-ast-utils: 3.3.5 @@ -7599,9 +7672,9 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-simple-import-sort@13.0.0(eslint@10.2.1(jiti@2.6.1)): + eslint-plugin-simple-import-sort@13.0.0(eslint@10.3.0(jiti@2.6.1)): dependencies: - eslint: 10.2.1(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1) eslint-scope@9.1.2: dependencies: @@ -7616,9 +7689,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.2.1(jiti@2.6.1): + eslint@10.3.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 '@eslint/config-helpers': 0.5.5 @@ -8044,7 +8117,7 @@ snapshots: idb@7.1.1: {} - idea-react@2.0.0-rc.13(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5)(typescript@5.9.3): + idea-react@2.2.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5)(typescript@5.9.3): dependencies: '@editorjs/editorjs': 2.31.6 '@editorjs/paragraph': 2.11.7 @@ -8064,7 +8137,8 @@ snapshots: react-dom: 19.2.5(react@19.2.5) react-editor-js: 2.1.0(@editorjs/editorjs@2.31.6)(@editorjs/paragraph@2.11.7)(react@19.2.5) react-element-to-jsx-string: 17.0.1(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5) - web-utility: 4.6.5(typescript@5.9.3) + react-live: 4.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - '@types/react' - element-internals-polyfill @@ -8414,7 +8488,7 @@ snapshots: core-js: 3.49.0 regenerator-runtime: 0.14.1 web-streams-polyfill: 4.2.0 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -8455,13 +8529,15 @@ snapshots: dependencies: '@swc/helpers': 0.5.21 + lines-and-columns@1.2.4: {} + lint-staged@16.4.0: dependencies: commander: 14.0.3 listr2: 9.0.5 picomatch: 4.0.4 string-argv: 0.3.2 - tinyexec: 1.1.1 + tinyexec: 1.1.2 yaml: 2.8.3 listr2@9.0.5: @@ -8565,7 +8641,7 @@ snapshots: marked@15.0.12: {} - marked@18.0.2: {} + marked@18.0.3: {} math-intrinsics@1.1.0: {} @@ -8947,7 +9023,7 @@ snapshots: lodash: 4.18.1 mobx: 6.15.0 mobx-restful: 2.1.4(core-js@3.49.0)(mobx@6.15.0)(typescript@5.9.3) - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -8960,7 +9036,7 @@ snapshots: '@types/node': 22.19.17 mobx: 6.15.0 regenerator-runtime: 0.14.1 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -8975,7 +9051,7 @@ snapshots: mobx-restful: 2.1.4(core-js@3.49.0)(mobx@6.15.0)(typescript@5.9.3) react: 19.2.5 regenerator-runtime: 0.14.1 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -8988,7 +9064,7 @@ snapshots: lodash.isequalwith: 4.4.0 mobx: 6.15.0 react: 19.2.5 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -9023,7 +9099,7 @@ snapshots: react-bootstrap: 2.10.10(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-bootstrap-editor: 2.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) regenerator-runtime: 0.14.1 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - '@types/react' - core-js @@ -9040,7 +9116,7 @@ snapshots: koajax: 3.3.0(core-js@3.49.0)(typescript@5.9.3) mobx: 6.15.0 regenerator-runtime: 0.14.1 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -9056,7 +9132,7 @@ snapshots: mobx-restful: 2.1.4(core-js@3.49.0)(mobx@6.15.0)(typescript@5.9.3) qs: 6.15.1 regenerator-runtime: 0.14.1 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -9067,7 +9143,13 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.11: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.12: {} napi-postinstall@0.3.4: {} @@ -9111,7 +9193,7 @@ snapshots: next: 16.2.4(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0) react: 19.2.5 tslib: 2.8.1 - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - supports-color @@ -9128,7 +9210,7 @@ snapshots: dependencies: '@next/env': 16.2.4 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.24 + baseline-browser-mapping: 2.10.25 caniuse-lite: 1.0.30001791 postcss: 8.4.31 react: 19.2.5 @@ -9229,7 +9311,7 @@ snapshots: react: 19.2.5 react-dom: 19.2.5(react@19.2.5) react-leaflet: 5.0.0(leaflet@1.9.4)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -9328,6 +9410,8 @@ snapshots: pinkie@2.0.4: {} + pirates@4.0.7: {} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -9344,7 +9428,7 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -9363,6 +9447,12 @@ snapshots: pretty-bytes@5.6.0: {} + prism-react-renderer@2.4.1(react@19.2.5): + dependencies: + '@types/prismjs': 1.26.6 + clsx: 2.1.1 + react: 19.2.5 + prismjs@1.30.0: {} prop-types-extra@1.1.1(react@19.2.5): @@ -9424,7 +9514,7 @@ snapshots: mobx-react-helper: 0.5.1(mobx@6.15.0)(react@19.2.5)(typescript@5.9.3) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - web-utility: 4.6.5(typescript@5.9.3) + web-utility: 4.6.6(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - react-native @@ -9484,6 +9574,14 @@ snapshots: react-lifecycles-compat@3.0.4: {} + react-live@4.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + prism-react-renderer: 2.4.1(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + sucrase: 3.35.1 + use-editable: 2.3.3(react@19.2.5) + react-stately@3.46.0(react@19.2.5): dependencies: '@internationalized/date': 3.12.1 @@ -9990,6 +10088,16 @@ snapshots: optionalDependencies: '@babel/core': 7.29.0 + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.16 + ts-interface-checker: 0.1.13 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -10031,7 +10139,15 @@ snapshots: dependencies: utrie: 1.0.2 - tinyexec@1.1.1: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + tinyexec@1.1.2: {} tinyglobby@0.2.16: dependencies: @@ -10064,6 +10180,8 @@ snapshots: dependencies: typescript: 5.9.3 + ts-interface-checker@0.1.13: {} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -10137,13 +10255,13 @@ snapshots: typed.js@2.1.0: {} - typescript-eslint@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) - eslint: 10.2.1(jiti@2.6.1) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.3.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -10277,6 +10395,10 @@ snapshots: dependencies: punycode: 2.3.1 + use-editable@2.3.3(react@19.2.5): + dependencies: + react: 19.2.5 + use-sync-external-store@1.6.0(react@19.2.5): dependencies: react: 19.2.5 @@ -10307,7 +10429,7 @@ snapshots: web-streams-polyfill@4.2.0: {} - web-utility@4.6.5(typescript@5.9.3): + web-utility@4.6.6(typescript@5.9.3): dependencies: '@swc/helpers': 0.5.21 regenerator-runtime: 0.14.1 @@ -10386,7 +10508,7 @@ snapshots: dependencies: '@apideck/better-ajv-errors': 0.3.7(ajv@8.20.0) '@babel/core': 7.29.0 - '@babel/preset-env': 7.29.2(@babel/core@7.29.0) + '@babel/preset-env': 7.29.3(@babel/core@7.29.0) '@babel/runtime': 7.29.2 '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.0)(rollup@2.80.0) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.80.0) @@ -10513,11 +10635,11 @@ snapshots: yocto-queue@0.1.0: {} - zod-validation-error@4.0.2(zod@4.3.6): + zod-validation-error@4.0.2(zod@4.4.1): dependencies: - zod: 4.3.6 + zod: 4.4.1 - zod@4.3.6: {} + zod@4.4.1: {} zrender@6.0.0: dependencies: From 369f4e2ca178c7d7ae025a9ab2ac2d4515a2739c Mon Sep 17 00:00:00 2001 From: TechQuery Date: Sat, 2 May 2026 02:49:54 +0800 Subject: [PATCH 2/2] [refactor] use Time & Time Range components to render all Date Time texts Co-authored-by: Copilot --- components/Activity/Hackathon/ActionHub.tsx | 8 +- components/Activity/Hackathon/Hero.tsx | 12 +-- components/Activity/Hackathon/Schedule.tsx | 35 +++++--- components/Activity/Hackathon/constant.ts | 6 +- components/Activity/ProductCard.tsx | 12 +-- components/Finance/FundCard.tsx | 10 +-- components/Git/Issue/Card.tsx | 14 +-- components/TimeRange.tsx | 47 ++++++++++ pages/hackathon/[id].tsx | 96 ++++++++++++--------- 9 files changed, 156 insertions(+), 84 deletions(-) create mode 100644 components/TimeRange.tsx diff --git a/components/Activity/Hackathon/ActionHub.tsx b/components/Activity/Hackathon/ActionHub.tsx index b471a8b..2e1e5a1 100644 --- a/components/Activity/Hackathon/ActionHub.tsx +++ b/components/Activity/Hackathon/ActionHub.tsx @@ -1,4 +1,4 @@ -import type { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; import { Col, Container, Row } from 'react-bootstrap'; import { HackathonHeroAction } from './Hero'; @@ -14,7 +14,7 @@ export interface HackathonActionHubEntry { export interface HackathonActionHubProps { entries: HackathonActionHubEntry[]; - facts: string[]; + facts: ReactNode[]; primaryAction?: HackathonHeroAction; primaryDescription: string; primaryTitle: string; @@ -90,8 +90,8 @@ export const HackathonActionHub: FC>
    - {facts.map(fact => ( -
  • {fact}
  • + {facts.map((fact, index) => ( +
  • {fact}
  • ))}
diff --git a/components/Activity/Hackathon/Hero.tsx b/components/Activity/Hackathon/Hero.tsx index c92ef28..c64c1f9 100644 --- a/components/Activity/Hackathon/Hero.tsx +++ b/components/Activity/Hackathon/Hero.tsx @@ -1,6 +1,6 @@ import { TableCellValue } from 'mobx-lark'; import dynamic from 'next/dynamic'; -import { FC } from 'react'; +import { FC, ReactNode } from 'react'; import { Container } from 'react-bootstrap'; import { TimeUnit } from 'idea-react'; @@ -28,9 +28,9 @@ export interface HackathonHeroProps extends Record< string > { agendaItems: Agenda[]; - badges: string[]; + badges: ReactNode[]; bottomCard?: HackathonHeroCard; - chips?: string[]; + chips?: ReactNode[]; countdownUnits: TimeUnit[]; endTime?: TableCellValue; image?: TableCellValue; @@ -150,7 +150,7 @@ export const HackathonHero: FC = ({