diff --git a/code/fms/fms-vue/src/views/system/module-management/ModuleQueryConfigPanel.vue b/code/fms/fms-vue/src/views/system/module-management/ModuleQueryConfigPanel.vue
index b8bd924d..4435ae07 100644
--- a/code/fms/fms-vue/src/views/system/module-management/ModuleQueryConfigPanel.vue
+++ b/code/fms/fms-vue/src/views/system/module-management/ModuleQueryConfigPanel.vue
@@ -1,26 +1,34 @@
-
-
-
-
-
-
-
(activeKey = String(row.b_id))"
- @change="onCellChange"
- @row-order-change="onRowOrderChange"
- />
+
+
+
+
+
+
+ (activeKey = String(row.b_id))"
+ @change="onCellChange"
+ @row-order-change="onRowOrderChange"
+ />
+
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/fieldDefaults.js b/code/fms/fms-vue/src/views/system/module-management/components/fieldDefaults.js
index 42a8bb46..7b973df4 100644
--- a/code/fms/fms-vue/src/views/system/module-management/components/fieldDefaults.js
+++ b/code/fms/fms-vue/src/views/system/module-management/components/fieldDefaults.js
@@ -1,7 +1,7 @@
/**
* 字段区域默认策略(业务层,非编辑器内核)。
* 「字段定义 → 列表列 / 查询条件默认配置行」的规则集中于此,供
- * index.vue(同步字段、补充缺失)、查询面板(选定字段后的组件/操作符重置)
+ * index.vue(同步字段)、查询面板(选定字段后的组件/操作符重置)
* 与字段定义面板的参与开关共用。
*
* 编辑器内核(design-editor/common/useStructureEditing.js)不依赖本文件——
@@ -9,11 +9,6 @@
*/
import { createTempId } from '@/utils/tempId'
-/** 大文本字段:默认不进列表、默认不作为查询条件 */
-function isLargeText(field) {
- return field.b_type === 'textarea' || field.b_dbtype === 'text'
-}
-
/** 列表列默认宽度(按控件类型) */
const LIST_WIDTH_DEFAULTS = {
input: 120,
@@ -26,10 +21,13 @@ const LIST_WIDTH_DEFAULTS = {
select: 110,
}
-/** 字段 → 列表列默认属性(b_visible / b_width / b_sortable) */
+/**
+ * 字段 → 列表列默认属性(b_visible: 1 / b_width / b_sortable)。
+ * 列表配置为手动管理(行存在即展示),b_visible 恒为 1,不再作为显示/隐藏开关。
+ */
export function listRowDefaults(field) {
return {
- b_visible: isLargeText(field) ? 0 : 1,
+ b_visible: 1,
b_width: LIST_WIDTH_DEFAULTS[field.b_type] ?? 100,
b_sortable: 0,
}
@@ -45,7 +43,7 @@ const QUERY_COMPONENT_DEFAULTS = {
checkbox: { component: 'checkbox', operator: 'eq' },
}
-/** 字段 → 查询条件默认属性(b_component / b_operator / b_canuse) */
+/** 字段 → 查询条件默认属性(b_component / b_operator) */
export function queryRowDefaults(field) {
const component = QUERY_COMPONENT_DEFAULTS[field.b_type] || {
component: 'input',
@@ -54,14 +52,13 @@ export function queryRowDefaults(field) {
return {
b_component: component.component,
b_operator: component.operator,
- b_canuse: isLargeText(field) ? 0 : 1,
}
}
/* ---------- 默认配置行工厂 ----------
- * 与 index.vue 的默认配置补全、字段定义面板参与开关共用,
- * 保证「同步字段自动补全」与「手动打开参与开关」生成的行结构一致。
- * forceOn:显式意愿(手动开开关)时无视大文本默认不参与的策略,置 1。
+ * 与字段定义面板的参与开关共用,
+ * 保证「手动打开参与开关」生成的行结构一致。
+ * 列表/查询配置均为手动管理(行存在即展示/参与),行由用户在字段库手动添加生成。
*/
function nextXh(rows) {
@@ -74,7 +71,7 @@ function nextXh(rows) {
}
/** 字段 → 列表列配置行(s_field_view),追加到末尾时使用 */
-export function createListConfigRow(moduleId, field, rows, { forceOn = false } = {}) {
+export function createListConfigRow(moduleId, field, rows) {
return {
b_id: createTempId(),
b_module_id: String(moduleId),
@@ -83,12 +80,11 @@ export function createListConfigRow(moduleId, field, rows, { forceOn = false } =
b_i18n: field.b_i18n || null,
b_xh: nextXh(rows),
...listRowDefaults(field),
- ...(forceOn ? { b_visible: 1 } : {}),
}
}
/** 字段 → 查询条件配置行(s_field_query) */
-export function createQueryConfigRow(moduleId, field, rows, { forceOn = false } = {}) {
+export function createQueryConfigRow(moduleId, field, rows) {
return {
b_id: createTempId(),
b_module_id: String(moduleId),
@@ -98,6 +94,5 @@ export function createQueryConfigRow(moduleId, field, rows, { forceOn = false }
b_default_value: null,
b_xh: nextXh(rows),
...queryRowDefaults(field),
- ...(forceOn ? { b_canuse: 1 } : {}),
}
}
diff --git a/code/fms/fms-vue/src/views/system/module-management/index.vue b/code/fms/fms-vue/src/views/system/module-management/index.vue
index 3857514a..4999be8f 100644
--- a/code/fms/fms-vue/src/views/system/module-management/index.vue
+++ b/code/fms/fms-vue/src/views/system/module-management/index.vue
@@ -6,7 +6,7 @@
* 模块树 / 草稿加载与脏检查 / 保存编排逻辑直接内联在下方;确认弹窗状态机仅本页使用。
* 设计器共用逻辑在 components/useStructureEditing.js,本文件不包含。
*/
-import { computed, nextTick, ref, watch } from 'vue'
+import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue'
import { useHotkeys } from '@/composables/useHotkeys'
import {
Plus,
@@ -42,6 +42,8 @@ import {
buildModuleI18nKey,
buildModuleItemI18nKey,
syncModuleItemI18nKeys,
+ consolidatePivotRows,
+ getI18nNamespace,
} from '@/utils/i18n'
import { createTempId } from '@/utils/tempId'
import {
@@ -52,7 +54,6 @@ import {
tableChange,
hasChanges,
} from '@/utils/dataChanges'
-import { createListConfigRow, createQueryConfigRow } from './components/fieldDefaults'
import UnsavedChangesModal from '@/components/UnsavedChangesModal.vue'
import ModuleBasicPanel from './ModuleBasicPanel.vue'
import ModuleFieldsPanel from './ModuleFieldsPanel.vue'
@@ -80,7 +81,6 @@ const drafts = ref(null)
const activeSection = ref('basic')
const basicPanelRef = ref(null)
const autoCodePanelRef = ref(null)
-const i18nPanelRef = ref(null)
// 新建模块时跳过 watch(moduleSelectedId) 的自动加载;非响应式 holder,跨 composable 共享
const skipModuleLoad = { value: false }
@@ -137,6 +137,175 @@ const finalI18nItems = computed(() => {
return items
})
+// 前端默认语言列表(默认语言排第一);与面板共用同一份,保证保存 diff 与展示一致
+const I18N_LANGUAGES = [
+ { code: 'zh-CN', name: '简体中文', default: true },
+ { code: 'en-US', name: 'English', default: false },
+]
+
+/* ================= i18n 数据维护(多语言面板数据由 index.vue 持有) ================= */
+
+// 扁平记录(b_key/b_locale/b_value)→ 透视行(每行一个 key,每种语言一列)
+function buildI18nPivot(flat) {
+ const byKey = new Map()
+ for (const r of flat) {
+ if (!byKey.has(r.b_key)) byKey.set(r.b_key, [])
+ byKey.get(r.b_key).push(r)
+ }
+ const rows = []
+ for (const [key, recs] of byKey) {
+ const row = { _id: createTempId(), b_key: key, _localeIds: {} }
+ for (const r of recs) {
+ row[r.b_locale] = r.b_value
+ row._localeIds[r.b_locale] = r.b_id
+ }
+ rows.push(row)
+ }
+ return rows
+}
+
+function isI18nManaged(row) {
+ return Boolean(row && row._managedId)
+}
+
+function isEmptyI18nManaged(row, defaultLocale) {
+ if (row._localeIds && Object.keys(row._localeIds).length) return false
+ for (const lang of I18N_LANGUAGES) {
+ const value = row[lang.code]
+ if (value == null || value === '') continue
+ if (lang.code === defaultLocale && String(value) === String(row._defaultValue ?? '')) continue
+ return false
+ }
+ return true
+}
+
+// 保证模块/字段/权限受管键始终存在:默认语言为空时自动跟随当前名称,人工翻译不被覆盖
+function reconcileI18nRows() {
+ if (!drafts.value) return
+ const items = finalI18nItems.value
+ const rows = [...drafts.value.i18n]
+ const rowByManagedId = new Map()
+ const unclaimedByKey = new Map()
+ for (const row of rows) {
+ if (row._managedId) rowByManagedId.set(String(row._managedId), row)
+ else unclaimedByKey.set(String(row.b_key), row)
+ }
+ const currentManagedIds = new Set()
+ const defaultLocale = I18N_LANGUAGES[0]?.code || ''
+
+ for (const item of items) {
+ const managedId = String(item.id || item.key)
+ currentManagedIds.add(managedId)
+ let row = rowByManagedId.get(managedId)
+ if (!row) row = unclaimedByKey.get(String(item.key))
+ if (!row && item.sourceKey) row = unclaimedByKey.get(String(item.sourceKey))
+ if (!row) {
+ row = { _id: createTempId(), b_key: item.key, _localeIds: {}, _syncInjected: true }
+ rows.push(row)
+ }
+ const previousDefault = row._defaultValue
+ const nextDefault = item.defaultValue == null ? '' : String(item.defaultValue)
+ if (
+ defaultLocale &&
+ (row[defaultLocale] == null ||
+ row[defaultLocale] === '' ||
+ row[defaultLocale] === previousDefault)
+ ) {
+ row[defaultLocale] = nextDefault
+ }
+ row.b_key = String(item.key)
+ row._managedId = managedId
+ row._defaultValue = nextDefault
+ row._sortType = String(item.key).split('.', 1)[0]
+ }
+
+ // 键已失效的受管行:自动创建且无内容的直接丢弃,有翻译或来自数据库的解除保护保留
+ const keptRows = []
+ for (const row of rows) {
+ if (row._managedId && !currentManagedIds.has(String(row._managedId))) {
+ if (row._syncInjected && isEmptyI18nManaged(row, defaultLocale)) continue
+ delete row._managedId
+ delete row._defaultValue
+ }
+ keptRows.push(row)
+ }
+ drafts.value.i18n = consolidatePivotRows(keptRows)
+}
+
+// 保存:按最终草稿态生成 s_i18n 请求(与加载时的扁平基线 diff)
+function buildI18nSaveRequest() {
+ reconcileI18nRows()
+ const rows = drafts.value?.i18n || []
+ const originals = new Map(
+ (originals.value?.i18n || []).map((r) => [`${r.b_key}|${r.b_locale}`, r]),
+ )
+ const inserts = []
+ const updates = []
+ const deletes = []
+ // 模块命名空间:这些键属于当前模块元数据,落库写入 b_module_id 便于级联删除;其余保持 NULL
+ const MODULE_NAMESPACES = ['module', 'menu', 'field', 'power', 'group']
+ function moduleIdOf(key) {
+ return MODULE_NAMESPACES.includes(getI18nNamespace(key)) ? String(selectedModule.value?.b_id) : null
+ }
+ const seen = new Set()
+ for (const row of rows) {
+ const key = String(row.b_key || '')
+ if (!key) continue
+ for (const lang of I18N_LANGUAGES) {
+ const locale = lang.code
+ const cellKey = `${key}|${locale}`
+ seen.add(cellKey)
+ const value = row[locale] == null ? '' : String(row[locale])
+ const original = originals.get(cellKey)
+ const localeId = row._localeIds?.[locale]
+ if (localeId) {
+ if (!original || String(original.b_value ?? '') !== value) {
+ updates.push({ b_id: localeId, b_key: key, b_locale: locale, b_value: value, b_module_id: moduleIdOf(key), b_canuse: 1 })
+ }
+ } else if (value !== '') {
+ inserts.push({
+ b_id: createTempId(), _rowId: row._id, _locale: locale,
+ b_key: key, b_locale: locale, b_value: value, b_module_id: moduleIdOf(key), b_canuse: 1,
+ })
+ }
+ }
+ }
+ for (const r of originals.value?.i18n || []) {
+ const cellKey = `${r.b_key}|${r.b_locale}`
+ if (!seen.has(cellKey)) deletes.push({ b_id: r.b_id })
+ }
+ if (!inserts.length && !updates.length && !deletes.length) return null
+ return { table: 's_i18n', key_field: 'b_id', inserts, updates, deletes }
+}
+
+// 为新增记录回写真实主键到透视行 _localeIds,避免二次保存重复插入
+function applyI18nInsertedIds(inserts) {
+ for (const ins of inserts || []) {
+ if (!ins._rowId || !ins._locale || ins.b_id == null) continue
+ const row = (drafts.value?.i18n || []).find((r) => String(r._id) === String(ins._rowId))
+ if (row) row._localeIds[ins._locale] = String(ins.b_id)
+ }
+}
+
+// 同步字段时删除失效受管键(_managedId 为 `field:${i18nKey}` 等,见 finalI18nItems)
+function removeI18nByManagedIds(ids) {
+ if (!drafts.value) return
+ const set = new Set(ids.map(String))
+ drafts.value.i18n = (drafts.value.i18n || []).filter((r) => !set.has(String(r._managedId)))
+}
+
+// 字段/权限草稿变化(改名、编码输入)时防抖补齐受管行;加载中不处理(load 完成后自行 reconcile)
+let i18nReconcileTimer = null
+watch(
+ finalI18nItems,
+ () => {
+ if (configLoading.value || !drafts.value) return
+ clearTimeout(i18nReconcileTimer)
+ i18nReconcileTimer = setTimeout(() => reconcileI18nRows(), 300)
+ },
+)
+onBeforeUnmount(() => clearTimeout(i18nReconcileTimer))
+
/* 右侧分组配置导航:概览 / 数据结构 / 界面配置 / 业务能力 / 高级设置。
每个导航项唯一激活(activeSection)。 */
const configGroups = computed(() => {
@@ -159,14 +328,9 @@ const configGroups = computed(() => {
if (isDataModule.value) {
uiItems.push({ key: 'edit', label: '表单设计', icon: Pencil })
}
- // 列表配置行在加载时自动补全全部启用字段,无「缺失」概念,不带徽标
+ // 列表/查询配置行均为手动管理(行存在即展示/参与),无「缺失」概念,不带徽标
uiItems.push({ key: 'list', label: '列表配置', icon: List })
- uiItems.push({
- key: 'query',
- label: '查询配置',
- icon: Search,
- badge: missingQueryCount.value ? `缺 ${missingQueryCount.value}` : '',
- })
+ uiItems.push({ key: 'query', label: '查询配置', icon: Search })
groups.push({ key: 'display', label: '界面配置', items: uiItems })
const capabilityItems = []
@@ -297,20 +461,15 @@ async function saveModule() {
}
}
- const i18nPanel = i18nPanelRef.value
- if (i18nPanel && typeof i18nPanel.reconcileManagedRows === 'function') {
- i18nPanel.reconcileManagedRows(finalI18nItems.value)
- }
- if (i18nPanel && typeof i18nPanel.buildSaveRequest === 'function') {
- const i18nReq = i18nPanel.buildSaveRequest()
- if (i18nReq) {
- // 为新增的多语言记录分配真实主键,并回写内部状态,避免二次保存重复插入
- if (i18nReq.inserts?.length) {
- await allocateTemporaryIds([i18nReq.inserts])
- i18nPanel.applyInsertedIds?.(i18nReq.inserts)
- }
- saveReqs.push(i18nReq)
+ // i18n 数据独立保存于 s_i18n:先补齐受管键,再按基线 diff 生成请求
+ const i18nReq = buildI18nSaveRequest()
+ if (i18nReq) {
+ // 为新增的多语言记录分配真实主键,并回写草稿,避免二次保存重复插入
+ if (i18nReq.inserts?.length) {
+ await allocateTemporaryIds([i18nReq.inserts])
+ applyI18nInsertedIds(i18nReq.inserts)
}
+ saveReqs.push(i18nReq)
}
if (saveReqs.length === 0) {
@@ -328,8 +487,6 @@ async function saveModule() {
const prevSection = activeSection.value
await loadModuleConfig(moduleId)
activeSection.value = prevSection
- // i18n 数据独立保存于 s_i18n,不随模块配置草稿重载,单独从后端刷新
- i18nPanelRef.value?.loadI18n?.()
Message.success('保存成功')
return true
} catch (e) {
@@ -711,12 +868,24 @@ async function loadModuleConfig(moduleId) {
}
originals.value = original
drafts.value = cloneData(original)
- // 列表配置自动包含全部启用字段:缺失的按控件类型生成默认列。
- // 「删除列」语义为隐藏(b_visible=0)而非删行——行删了下次加载又会自动补回。
- const listGenerated = buildMissingDefaultConfigs(original.module, original.fields)
- if (listGenerated.listConfig.length) {
- drafts.value.listConfig = [...(drafts.value.listConfig || []), ...listGenerated.listConfig]
+ // i18n 独立加载(s_i18n 不随模块配置草稿加载,按受管键查询)
+ if (type === 'data' || type === 'query') {
+ const keys = [...new Set(finalI18nItems.value.flatMap((it) => [it.key, it.sourceKey]).filter(Boolean).map(String))]
+ const quotedKeys = keys.map((key) => "'" + key.replace(/'/g, "''") + "'")
+ const where = keys.length ? 'b_key IN (' + quotedKeys.join(', ') + ')' : null
+ const res = where ? await loadDataApi('s_i18n', where, 'b_key ASC, b_locale ASC') : { data: [] }
+ if (String(moduleSelectedId.value) !== id) return
+ const flat = (res.data || []).map((row) => ({
+ b_id: row.b_id, b_key: row.b_key, b_locale: row.b_locale, b_value: row.b_value,
+ }))
+ originals.value.i18n = flat
+ drafts.value.i18n = buildI18nPivot(flat)
+ reconcileI18nRows()
+ } else {
+ originals.value.i18n = []
+ drafts.value.i18n = []
}
+ // 列表配置不再自动补全:行存在即展示,删除即真删,由用户通过字段库手动管理(与查询配置一致)。
loadedModuleId.value = id
activeSection.value = 'basic'
} catch (e) {
@@ -843,44 +1012,10 @@ function onAutoCodeUpdate(rows) {
}
/* ================= 模块:同步字段 ================= */
-// 已配置过对应配置行的字段 id(列表/编辑/查询),用于判断新增字段是否缺默认配置
-function configuredFieldIds(section) {
- const ids = new Set()
- for (const source of [originals.value, drafts.value]) {
- for (const row of source?.[section] || []) {
- if (row.b_field_id != null) ids.add(String(row.b_field_id))
- }
- }
- return ids
-}
-
-// 为尚未配置的字段生成列表/查询默认行(行结构统一走 useStructureEditing 的工厂)。
-// 默认不参与的字段(大文本等)同样生成行、开关置 0,保留配置空间;
-// 表单设计(editConfig)不自动生成:字段由用户在表单设计器中逐个添加,
-// 自动铺满会与设计器的画布/分组/栅格编辑冲突。
-function buildMissingDefaultConfigs(module, fields) {
- const moduleId = String(module.b_id)
- const listFieldIds = configuredFieldIds('listConfig')
- const queryFieldIds = configuredFieldIds('queryConfig')
- const generated = { listConfig: [], queryConfig: [] }
- let orderIndex = 0
- for (const field of fields) {
- if (Number(field.b_canuse) !== 1) continue
- orderIndex++
- const fieldId = String(field.b_id)
- const order = orderIndex * 10
- if (!listFieldIds.has(fieldId)) {
- generated.listConfig.push({ ...createListConfigRow(moduleId, field, []), b_xh: order })
- }
- if (!queryFieldIds.has(fieldId)) {
- generated.queryConfig.push({ ...createQueryConfigRow(moduleId, field, []), b_xh: order })
- }
- }
- return generated
-}
-
+// 同步只合并字段定义与移除已消失字段的配置行/i18n,不自动生成任何配置行——
+// 列表/查询配置为手动管理(行存在即展示),表单设计由用户逐个添加。
// 计算同步计划(纯计算,不改草稿):describe 结果与现有字段合并、
-// 找出视图已不存在的字段、为新字段生成列表/编辑/查询默认配置。
+// 找出视图已不存在的字段。
function buildSyncPlan(module, columns) {
const viewColumnSet = new Set(columns.map((col) => String(col.name || '').toLowerCase()))
const existingMap = new Map()
@@ -924,9 +1059,7 @@ function buildSyncPlan(module, columns) {
for (const field of mergedFields) {
field.b_i18n = buildModuleItemI18nKey('field', module.b_code, field.b_field)
}
- const generated = buildMissingDefaultConfigs(module, mergedFields)
- const generatedCount = generated.listConfig.length + generated.queryConfig.length
- return { mergedFields, removedIds, removedI18nIds, generated, addedCount, generatedCount }
+ return { mergedFields, removedIds, removedI18nIds, addedCount }
}
function applySyncPlan(plan) {
@@ -936,18 +1069,10 @@ function applySyncPlan(plan) {
(row) => !plan.removedIds.has(String(row.b_field_id)),
)
}
- i18nPanelRef.value?.removeByManagedIds?.(Array.from(plan.removedI18nIds))
- }
- for (const section of ['listConfig', 'queryConfig']) {
- const rows = plan.generated[section]
- if (!rows.length) continue
- drafts.value[section] = [...(drafts.value[section] || []), ...rows]
+ removeI18nByManagedIds(Array.from(plan.removedI18nIds))
}
drafts.value.fields = plan.mergedFields
- const parts = [`已同步 ${plan.mergedFields.length} 个字段`]
- if (plan.addedCount) parts.push(`新增 ${plan.addedCount} 个并补充 ${plan.generatedCount} 条默认配置`)
- if (plan.removedIds.size) parts.push(`移除 ${plan.removedIds.size} 个及其关联配置`)
- Message.success(parts.join(','))
+ Message.success(`已成功同步 ${plan.mergedFields.length} 个字段`)
}
async function syncFields() {
@@ -973,43 +1098,6 @@ async function syncFields() {
}
}
-/* ================= 欠配置统计与一键补充 ================= */
-// 启用字段中尚未出现在指定配置(listConfig/queryConfig)的数量
-function missingConfigCount(section) {
- return computed(() => {
- const fields = drafts.value?.fields || []
- if (!fields.length) return 0
- const configured = new Set()
- for (const row of drafts.value?.[section] || []) {
- if (row.b_field_id != null) configured.add(String(row.b_field_id))
- }
- let count = 0
- for (const field of fields) {
- if (Number(field.b_canuse) !== 1) continue
- if (!configured.has(String(field.b_id))) count++
- }
- return count
- })
-}
-
-const missingQueryCount = missingConfigCount('queryConfig')
-
-// 为缺失的启用字段补充默认配置行(复用同步字段的默认行生成逻辑)
-function fillMissingConfigs(sections) {
- const module = drafts.value?.module
- if (!module || busy.value) return
- const generated = buildMissingDefaultConfigs(module, drafts.value.fields)
- let total = 0
- for (const section of sections) {
- const rows = generated[section]
- if (!rows?.length) continue
- drafts.value[section] = [...(drafts.value[section] || []), ...rows]
- total += rows.length
- }
- if (total) Message.success(`已补充 ${total} 条默认配置`)
- else Message.info('没有需要补充的配置')
-}
-
/* ================= 快捷键 ================= */
// 仅保留 Ctrl/Cmd + S 保存当前对象(通用封装见 @/composables/useHotkeys)
useHotkeys([
@@ -1221,9 +1309,7 @@ loadModuleTree()
:query-config="drafts?.queryConfig"
:fields="drafts?.fields"
:loading="busy"
- :missing-count="missingQueryCount"
@update="(v) => onModuleUpdate('queryConfig', v)"
- @fill-missing="() => fillMissingConfigs(['queryConfig'])"
/>
@@ -1258,10 +1344,11 @@ loadModuleTree()
class="mm-config-pane"
>
onModuleUpdate('i18n', v)"
/>
diff --git a/code/fms/fms-vue/tests/unit/delete-confirm-regression.spec.js b/code/fms/fms-vue/tests/unit/delete-confirm-regression.spec.js
new file mode 100644
index 00000000..38cb4e4c
--- /dev/null
+++ b/code/fms/fms-vue/tests/unit/delete-confirm-regression.spec.js
@@ -0,0 +1,187 @@
+import { mount } from '@vue/test-utils'
+import { describe, expect, it, vi, beforeAll, beforeEach } from 'vitest'
+import { createPinia, setActivePinia } from 'pinia'
+import { nextTick } from 'vue'
+import { registerFeature, useAreaSelection } from 'stk-table-vue'
+import ModuleQueryConfigPanel from '@/views/system/module-management/ModuleQueryConfigPanel.vue'
+import ModulePowersPanel from '@/views/system/module-management/ModulePowersPanel.vue'
+import ModuleI18nPanel from '@/views/system/module-management/ModuleI18nPanel.vue'
+
+registerFeature(useAreaSelection)
+
+beforeAll(() => {
+ Object.defineProperty(HTMLElement.prototype, 'clientWidth', {
+ configurable: true,
+ get() { return 5000 }
+ })
+})
+
+vi.mock('@/services/api', () => ({
+ loadDataApi: vi.fn(async () => ({ data: [] })),
+ saveObjectApi: vi.fn(),
+ nextIdApi: vi.fn(),
+ describeApi: vi.fn(),
+}))
+
+const fields = [
+ { b_id: '1', b_name: '姓名', b_field: 'name', b_type: 'input', b_canuse: 1 }
+]
+
+describe('module-management 删除(单个无确认弹窗 + 批量)', () => {
+ beforeEach(() => setActivePinia(createPinia()))
+
+ async function settle() {
+ await nextTick()
+ await new Promise((r) => setTimeout(r, 50))
+ }
+
+ async function clickDelete(wrapper) {
+ const trs = wrapper.findAll('.stk-tbody-main tr')
+ expect(trs.length).toBeGreaterThan(0)
+ const delBtn = trs[0].find('button.fms-action-btn')
+ expect(delBtn, '行内删除按钮应存在').toBeTruthy()
+ await delBtn.trigger('click')
+ await settle()
+ }
+
+ async function checkNoModal() {
+ expect(document.body.querySelector('.fms-modal'), '删除不应弹出确认弹窗').toBeNull()
+ }
+
+ async function selectRowCheckbox(wrapper, index = 0) {
+ const trs = wrapper.findAll('.stk-tbody-main tr')
+ expect(trs.length).toBeGreaterThan(0)
+ const checkbox = trs[index].find('input[type="checkbox"]')
+ expect(checkbox, '行复选框应存在').toBeTruthy()
+ await checkbox.setValue(true)
+ await settle()
+ }
+
+ async function clickToolbarBatch(wrapper) {
+ const btn = wrapper.findAll('button').find((b) => b.text().includes('批量删除'))
+ expect(btn, '批量删除按钮应存在').toBeTruthy()
+ await btn.trigger('click')
+ await settle()
+ }
+
+ it('查询面板:单个删除不弹弹窗且行被移除', async () => {
+ const wrapper = mount(ModuleQueryConfigPanel, {
+ props: { moduleId: 'm1', queryConfig: [], fields, loading: false },
+ attachTo: document.body,
+ })
+ await settle()
+ await wrapper.findAll('button').find((b) => b.text().includes('新增查询条件')).trigger('click')
+ await settle()
+ expect(wrapper.findAll('.stk-tbody-main tr').length).toBe(1)
+ await clickDelete(wrapper)
+ await checkNoModal()
+ expect(wrapper.findAll('.stk-tbody-main tr').length, '单个删除后行应被移除').toBe(0)
+ wrapper.unmount()
+ })
+
+ it('查询面板:批量删除选中多行', async () => {
+ const wrapper = mount(ModuleQueryConfigPanel, {
+ props: { moduleId: 'm1', queryConfig: [], fields, loading: false },
+ attachTo: document.body,
+ })
+ await settle()
+ for (let i = 0; i < 2; i++) {
+ await wrapper.findAll('button').find((b) => b.text().includes('新增查询条件')).trigger('click')
+ await settle()
+ }
+ expect(wrapper.findAll('.stk-tbody-main tr').length).toBe(2)
+ await selectRowCheckbox(wrapper, 0)
+ await selectRowCheckbox(wrapper, 1)
+ await clickToolbarBatch(wrapper)
+ await checkNoModal()
+ expect(wrapper.findAll('.stk-tbody-main tr').length, '批量删除后应无行').toBe(0)
+ wrapper.unmount()
+ })
+
+ it('权限面板:单个删除不弹弹窗且行被移除', async () => {
+ const wrapper = mount(ModulePowersPanel, {
+ props: { moduleId: 'm1', moduleCode: 'demo', powers: [], loading: false },
+ attachTo: document.body,
+ })
+ await settle()
+ await wrapper.findAll('button').find((b) => b.text().includes('新增权限')).trigger('click')
+ await settle()
+ expect(wrapper.findAll('.stk-tbody-main tr').length).toBe(1)
+ await clickDelete(wrapper)
+ await checkNoModal()
+ expect(wrapper.findAll('.stk-tbody-main tr').length, '单个删除后行应被移除').toBe(0)
+ wrapper.unmount()
+ })
+
+ it('权限面板:批量删除选中多行', async () => {
+ const wrapper = mount(ModulePowersPanel, {
+ props: { moduleId: 'm1', moduleCode: 'demo', powers: [], loading: false },
+ attachTo: document.body,
+ })
+ await settle()
+ for (let i = 0; i < 2; i++) {
+ await wrapper.findAll('button').find((b) => b.text().includes('新增权限')).trigger('click')
+ await settle()
+ }
+ expect(wrapper.findAll('.stk-tbody-main tr').length).toBe(2)
+ await selectRowCheckbox(wrapper, 0)
+ await selectRowCheckbox(wrapper, 1)
+ await clickToolbarBatch(wrapper)
+ await checkNoModal()
+ expect(wrapper.findAll('.stk-tbody-main tr').length, '批量删除后应无行').toBe(0)
+ wrapper.unmount()
+ })
+
+ it('多语言面板:单个删除不弹弹窗且行被移除', async () => {
+ const wrapper = mount(ModuleI18nPanel, {
+ props: {
+ moduleId: 'm1',
+ rows: [],
+ languages: [
+ { code: 'zh-CN', name: '简体中文', default: true },
+ { code: 'en-US', name: 'English', default: false },
+ ],
+ loading: false,
+ },
+ attachTo: document.body,
+ })
+ await settle()
+ await wrapper.findAll('button').find((b) => b.text().includes('新增多语言')).trigger('click')
+ await settle()
+ const before = wrapper.findAll('.stk-tbody-main tr').length
+ expect(before).toBeGreaterThan(0)
+ await clickDelete(wrapper)
+ await checkNoModal()
+ expect(wrapper.findAll('.stk-tbody-main tr').length, '单个删除后行应减少').toBe(before - 1)
+ wrapper.unmount()
+ })
+
+ it('多语言面板:批量删除选中多行', async () => {
+ const wrapper = mount(ModuleI18nPanel, {
+ props: {
+ moduleId: 'm1',
+ rows: [],
+ languages: [
+ { code: 'zh-CN', name: '简体中文', default: true },
+ { code: 'en-US', name: 'English', default: false },
+ ],
+ loading: false,
+ },
+ attachTo: document.body,
+ })
+ await settle()
+ const before = wrapper.findAll('.stk-tbody-main tr').length
+ for (let i = 0; i < 2; i++) {
+ await wrapper.findAll('button').find((b) => b.text().includes('新增多语言')).trigger('click')
+ await settle()
+ }
+ const total = wrapper.findAll('.stk-tbody-main tr').length
+ expect(total).toBeGreaterThanOrEqual(before + 2)
+ await selectRowCheckbox(wrapper, 0)
+ await selectRowCheckbox(wrapper, 1)
+ await clickToolbarBatch(wrapper)
+ await checkNoModal()
+ expect(wrapper.findAll('.stk-tbody-main tr').length, '批量删除后应只剩受管行').toBe(before)
+ wrapper.unmount()
+ })
+})
\ No newline at end of file
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/SKILL.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/SKILL.md
new file mode 100644
index 00000000..2ce6e71f
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/SKILL.md
@@ -0,0 +1,176 @@
+---
+name: nuxt-ui
+description: Build UIs with @nuxt/ui v4 — 125+ accessible Vue components with Tailwind CSS theming. Use when creating interfaces, customizing themes to match a brand, building forms, or composing layouts like dashboards, docs sites, and chat interfaces.
+---
+
+# Nuxt UI
+
+Vue component library built on [Reka UI](https://reka-ui.com/) + [Tailwind CSS](https://tailwindcss.com/) + [Tailwind Variants](https://www.tailwind-variants.org/). Works with Nuxt, Vue (Vite), Laravel (Vite + Inertia), and AdonisJS (Vite + Inertia).
+
+## MCP Server
+
+For component API details (props, slots, events, full documentation, examples), use the [Nuxt UI MCP server](https://ui.nuxt.com/docs/getting-started/ai/mcp). If not already configured, add it:
+
+**Cursor** — `.cursor/mcp.json`:
+
+```json
+{ "mcpServers": { "nuxt-ui": { "type": "http", "url": "https://ui.nuxt.com/mcp" } } }
+```
+
+**Claude Code**:
+
+```bash
+claude mcp add --transport http nuxt-ui https://ui.nuxt.com/mcp
+```
+
+Key MCP tools:
+- `search-components` — find components by name, category, or intent (no params = list all)
+- `search-composables` — find composables by name or description (no params = list all)
+- `search-icons` — search Iconify icons (defaults to `lucide`), returns `i-{prefix}-{name}` names
+- `get-component` — full component documentation with usage examples
+- `get-component-metadata` — props, slots, events (lightweight, no docs content)
+- `get-example` — real-world code examples
+
+When you need to know **what a component accepts** or **how its API works**, use the MCP. This skill teaches you **when to use which component** and **how to build well**.
+
+## Core rules (always apply)
+
+1. **Always wrap the app in `UApp`** — required for toasts, tooltips, and programmatic overlays. Accepts a `locale` prop for i18n.
+2. **Always use semantic colors** — `text-default`, `bg-elevated`, `border-muted`, etc. Never use raw Tailwind palette colors like `text-gray-500`.
+3. **Read generated theme files for slot names** — Nuxt: `.nuxt/ui/
.ts`, Vue: `node_modules/.nuxt-ui/ui/.ts`. These show every slot, variant, and default class for any component.
+4. **Override priority** (highest wins): `ui` prop / `class` prop → global config → theme defaults.
+5. **Icons use `i-{collection}-{name}` format** — `lucide` is the default collection. Use the MCP `search-icons` tool to find icons, or browse at [icones.js.org](https://icones.js.org).
+
+## How to use this skill
+
+Based on the task, load the relevant reference files **before writing any code**. Don't load everything — only what's needed.
+
+### Reference files
+
+**Guidelines** — design decisions and conventions:
+- [design-system](references/guidelines/design-system.md) — semantic colors, theming, brand customization, variants, the `ui` prop
+- [component-selection](references/guidelines/component-selection.md) — decision matrices: when to use Modal vs Slideover, Select vs SelectMenu, Toast vs Alert, etc.
+- [conventions](references/guidelines/conventions.md) — coding patterns, slot naming, items arrays, composables, keyboard shortcuts
+- [forms](references/guidelines/forms.md) — form validation, field layout, error handling, Standard Schema
+
+**Layouts** — full page structure patterns:
+- [landing](references/layouts/landing.md) — landing pages, blog, changelog, pricing
+- [dashboard](references/layouts/dashboard.md) — admin UI with sidebar and panels
+- [docs](references/layouts/docs.md) — documentation sites with navigation and TOC
+- [chat](references/layouts/chat.md) — AI chat with Vercel AI SDK
+- [editor](references/layouts/editor.md) — rich text editor with toolbars
+
+**Recipes** — complete patterns for common tasks:
+- [data-tables](references/recipes/data-tables.md) — tables with filters, pagination, sorting, selection
+- [auth](references/recipes/auth.md) — login, signup, forgot password forms
+- [overlays](references/recipes/overlays.md) — modals, slideovers, drawers, command palette
+- [navigation](references/recipes/navigation.md) — headers, sidebars, breadcrumbs, tabs
+
+**Quick reference:**
+- [components](references/components.md) — categorized component index for finding the right component name
+
+### Routing table
+
+| Task | Load these references |
+|---|---|
+| Build a landing page | design-system, conventions, landing |
+| Build a dashboard / admin UI | conventions, component-selection, dashboard |
+| Add a settings page | conventions, forms |
+| Create a login / signup form | conventions, forms, auth |
+| Display data in a table | conventions, component-selection, data-tables |
+| Customize theme / brand colors | design-system |
+| Add a chat interface | conventions, chat |
+| Add a modal, slideover, or drawer | conventions, component-selection, overlays |
+| Build site navigation | conventions, component-selection, navigation |
+| Build a documentation site | conventions, docs |
+| Render markdown | component-selection, components, docs |
+| Add a rich text editor | conventions, editor |
+| General UI work | conventions, component-selection |
+
+## Installation
+
+### Nuxt
+
+```bash
+pnpm add @nuxt/ui tailwindcss
+```
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ modules: ['@nuxt/ui'],
+ css: ['~/assets/css/main.css']
+})
+```
+
+```css
+/* app/assets/css/main.css */
+@import "tailwindcss";
+@import "@nuxt/ui";
+```
+
+```vue
+
+
+
+
+
+
+```
+
+### Vue (Vite)
+
+```bash
+pnpm add @nuxt/ui tailwindcss
+```
+
+```ts
+// vite.config.ts
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import ui from '@nuxt/ui/vite'
+
+export default defineConfig({
+ plugins: [
+ vue(),
+ ui()
+ ]
+})
+```
+
+```ts
+// src/main.ts
+import './assets/css/main.css'
+import { createApp } from 'vue'
+import { createRouter, createWebHistory } from 'vue-router'
+import ui from '@nuxt/ui/vue-plugin'
+import App from './App.vue'
+
+const app = createApp(App)
+const router = createRouter({
+ routes: [],
+ history: createWebHistory()
+})
+
+app.use(router)
+app.use(ui)
+app.mount('#app')
+```
+
+```css
+/* src/assets/css/main.css */
+@import "tailwindcss";
+@import "@nuxt/ui";
+```
+
+```vue
+
+
+
+
+
+
+```
+
+> Add `class="isolate"` to your root `` in `index.html`.
+> For Inertia: use `ui({ router: 'inertia' })` in `vite.config.ts`.
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/components.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/components.md
new file mode 100644
index 00000000..6f108bda
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/components.md
@@ -0,0 +1,245 @@
+# Components
+
+Quick-reference index of all 125+ components. For full API docs (props, slots, events, examples), use the MCP `get-component` or `get-component-metadata` tools.
+
+## Layout
+
+| Component | Purpose |
+|---|---|
+| `UApp` | **Required** root wrapper — toasts, tooltips, overlays, i18n |
+| `UHeader` | Responsive header with mobile menu |
+| `UFooter` | Footer with left/right/top/bottom slots |
+| `UFooterColumns` | Multi-column footer with link groups |
+| `UMain` | Main content area |
+| `UContainer` | Centered max-width container |
+| `USplitter` | Resizable panels separated by draggable handles |
+| `ULink` | Enhanced link — NuxtLink/RouterLink with active states |
+
+## Element
+
+| Component | Purpose |
+|---|---|
+| `UButton` | Buttons — links, actions, icons, loading states |
+| `UBadge` | Labels, tags, status indicators |
+| `UAvatar` | User photos, initials, icons |
+| `UAvatarGroup` | Stacked avatars with `max` limit |
+| `UIcon` | Iconify icons (`i-{collection}-{name}`) |
+| `UCard` | Bordered container with header/body/footer |
+| `UAlert` | Inline messages — info, warning, error, success |
+| `UBanner` | App-wide sticky announcement bar |
+| `UChip` | Notification dot overlay on children |
+| `UKbd` | Keyboard key display |
+| `USeparator` | Divider line with optional label |
+| `USkeleton` | Loading placeholder |
+| `UProgress` | Progress bar |
+| `UProgressGroup` | Segmented progress bar with a list of items |
+| `UToast` | Toast notification (shown via `useToast`) |
+| `UCalendar` | Date calendar (single, range, multiple) |
+| `UCollapsible` | Animated expand/collapse |
+| `UFieldGroup` | Group form inputs horizontally |
+| `UMarquee` | Scrolling content ticker |
+| `UCarousel` | Image/content carousel with autoplay |
+| `UEmpty` | Empty state placeholder with icon, title, actions |
+| `UError` | Error display with retry action |
+| `UScrollArea` | Scrollable area with custom scrollbar |
+| `UTimeline` | Timeline display for events and activity |
+| `UUser` | User display — avatar + name + description |
+| `UTheme` | Theme provider — scoped color overrides for children |
+
+## Form
+
+| Component | Purpose |
+|---|---|
+| `UAuthForm` | Pre-built auth form with social providers |
+| `UInput` | Text input — text, email, password, search |
+| `UTextarea` | Multi-line text with autoresize |
+| `USelect` | Native-like dropdown for small lists |
+| `USelectMenu` | Rich searchable dropdown, multi-select, groups |
+| `UInputMenu` | Autocomplete / combobox |
+| `UInputNumber` | Numeric input with +/- controls |
+| `UInputDate` | Date picker with calendar |
+| `UInputTime` | Time picker (12/24h) |
+| `UInputTags` | Tag/chip input |
+| `UPinInput` | Verification code input |
+| `UCheckbox` | Single boolean checkbox |
+| `UCheckboxGroup` | Multiple checkboxes |
+| `URadioGroup` | Radio button group |
+| `USwitch` | Toggle switch |
+| `USlider` | Range slider |
+| `UColorPicker` | Color picker (hex/rgb/hsl) |
+| `UFileUpload` | File upload (button or drop area) |
+| `UForm` | Validation wrapper with Standard Schema |
+| `UFormField` | Field wrapper with label, hint, errors |
+
+## Overlay
+
+| Component | Purpose |
+|---|---|
+| `UModal` | Centered dialog — confirmations, forms |
+| `USlideover` | Side panel — details, editing |
+| `UDrawer` | Bottom sheet — mobile actions |
+| `UPopover` | Contextual popup attached to trigger |
+| `UTooltip` | Hover/focus hint (non-interactive) |
+| `UContextMenu` | Right-click menu |
+| `UCommandPalette` | Search + keyboard navigation (Cmd+K) |
+
+## Navigation
+
+| Component | Purpose |
+|---|---|
+| `USidebar` | Standalone sidebar with header/body/footer |
+| `UNavigationMenu` | Primary nav — horizontal or vertical |
+| `UTabs` | Tab switcher within a page |
+| `UBreadcrumb` | Location hierarchy |
+| `UDropdownMenu` | Action menu on a trigger |
+| `UPagination` | Page navigation |
+| `UStepper` | Multi-step wizard |
+| `UAccordion` | Collapsible sections |
+
+## Data
+
+| Component | Purpose |
+|---|---|
+| `UTable` | Data table (TanStack Table) with sorting, selection, pinning |
+| `UTree` | Hierarchical tree view |
+
+## Dashboard
+
+| Component | Purpose |
+|---|---|
+| `UDashboardGroup` | Root dashboard wrapper |
+| `UDashboardSidebar` | Resizable, collapsible sidebar |
+| `UDashboardPanel` | Content panel with header/body/footer |
+| `UDashboardNavbar` | Panel header bar |
+| `UDashboardToolbar` | Filter/action bar below navbar |
+| `UDashboardResizeHandle` | Resize handle between panels |
+| `UDashboardSidebarToggle` | Mobile sidebar toggle button |
+| `UDashboardSearchButton` | Search button for sidebar |
+| `UDashboardSearch` | Dashboard-level search overlay |
+| `UDashboardSidebarCollapse` | Collapse button for sidebar |
+
+## Page (marketing)
+
+| Component | Purpose |
+|---|---|
+| `UPage` | Multi-column layout with left/right sidebars |
+| `UPageHero` | Hero section — title, description, links, media |
+| `UPageSection` | Content section with features grid |
+| `UPageCTA` | Call to action block |
+| `UPageHeader` | Page title and description |
+| `UPageBody` | Main content area |
+| `UPageGrid` | Card grid layout |
+| `UPageColumns` | Multi-column layout |
+| `UPageCard` | Content card for grids |
+| `UPageFeature` | Feature item |
+| `UPageLogos` | Logo cloud |
+| `UPageAside` | Sticky sidebar wrapper |
+| `UPageAnchors` | Simple anchor links |
+| `UPageLinks` | Related resource links |
+| `UPageList` | List layout for page items |
+
+## Blog & Changelog
+
+| Component | Purpose |
+|---|---|
+| `UBlogPosts` | Blog post grid |
+| `UBlogPost` | Individual post card |
+| `UChangelogVersions` | Changelog list |
+| `UChangelogVersion` | Individual changelog entry |
+
+## Pricing
+
+| Component | Purpose |
+|---|---|
+| `UPricingPlans` | Pricing plan cards |
+| `UPricingPlan` | Individual pricing plan card |
+| `UPricingTable` | Feature comparison table |
+
+## Prose — Base Typography
+
+Standard Markdown elements auto-resolved by Comark/Content/MDC. No `::` prefix needed — they map directly from markdown syntax (`# Heading` → `ProseH1`, `**bold**` → `ProseStrong`, etc.). Themed via `appConfig.ui.prose.
`.
+
+| Component | Renders | Notable |
+|---|---|---|
+| `H1` `H2` `H3` `H4` | Headings | H1–H3 get anchor links + TOC entries |
+| `P` | Paragraph | |
+| `A` | Link | External links get target/rel handling |
+| `Strong` | Bold | |
+| `Em` | Italic | |
+| `Blockquote` | Blockquote | |
+| `Hr` | Horizontal rule | |
+| `Ul` `Ol` `Li` | Lists | Supports nesting and mixed lists |
+| `Table` `Thead` `Tbody` `Tr` `Th` `Td` | Tables | |
+| `Img` | Image | Zoom on click (`:zoom="false"` to disable), `@nuxt/image` support |
+| `Pre` | Code block | Copy button, filename + icon, line highlighting (`{2,4-6}`), diff |
+| `Code` | Inline code | `color` and `lang` props |
+
+## Prose — Feature Components
+
+Nuxt UI-specific Prose components. In markdown files they are used **without the `Prose` prefix** (e.g. `::callout`, `::steps`). In Vue they are referenced as `ProseCallout`, `ProseSteps`, etc. Comark resolves them automatically when `@nuxt/ui` is installed.
+
+Nuxt UI also registers shorthand aliases for `Callout`: `::note`, `::tip`, `::warning`, `::caution` (preset `color` + `icon`).
+
+| Component | Purpose |
+|---|---|
+| `Callout` | Highlighted note/warning/tip (`color`, `icon`, `to`) |
+| `Badge` | Inline badge/tag |
+| `Kbd` | Keyboard key |
+| `Icon` | Inline Iconify icon |
+| `Prompt` | Terminal prompt block |
+| `Card` `CardGroup` | Content card and card grid |
+| `Steps` | Numbered step list (`level` prop sets heading depth) |
+| `Tabs` `TabsItem` | Tabbed content (`sync` for localStorage, `hash` for scroll-on-change) |
+| `Accordion` `AccordionItem` | Collapsible accordion sections |
+| `Collapsible` | Single collapsible section |
+| `Field` `FieldGroup` | Form field display |
+| `CodeGroup` | Tabbed code blocks |
+| `CodeCollapse` | Collapsible code block |
+| `CodeIcon` | File-type icon in code headers |
+| `CodePreview` | Code + live rendered preview side by side |
+| `CodeTree` | File tree display |
+| `Script` | Script injection |
+
+## Content (Nuxt Content)
+
+| Component | Purpose |
+|---|---|
+| `UContentNavigation` | Sidebar navigation from content |
+| `UContentToc` | Table of contents |
+| `UContentSurround` | Prev/next navigation |
+| `UContentSearch` | Search command palette |
+| `UContentSearchButton` | Trigger for content search |
+
+## Chat (AI)
+
+| Component | Purpose |
+|---|---|
+| `UChatMessages` | Scrollable message list |
+| `UChatMessage` | Individual message bubble |
+| `UChatReasoning` | Collapsible AI reasoning block |
+| `UChatTool` | Tool invocation status |
+| `UChatShimmer` | Streaming text animation |
+| `UChatPrompt` | Enhanced textarea for prompts |
+| `UChatPromptSubmit` | Submit button with status |
+| `UChatPalette` | Chat layout for overlays |
+
+## Editor
+
+| Component | Purpose |
+|---|---|
+| `UEditor` | Rich text editor (JSON/HTML/Markdown) |
+| `UEditorToolbar` | Toolbar (fixed/bubble/floating) |
+| `UEditorDragHandle` | Block drag-and-drop |
+| `UEditorSuggestionMenu` | Slash command menu |
+| `UEditorMentionMenu` | @ mention menu |
+| `UEditorEmojiMenu` | Emoji picker |
+
+## Color Mode
+
+| Component | Purpose |
+|---|---|
+| `UColorModeButton` | Toggle button (light/dark) |
+| `UColorModeSwitch` | Toggle switch (light/dark) |
+| `UColorModeSelect` | Dropdown (light/dark/system) |
+| `UColorModeAvatar` | Avatar that changes with color mode |
+| `UColorModeImage` | Image that changes with color mode |
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/component-selection.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/component-selection.md
new file mode 100644
index 00000000..c2d1ce14
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/component-selection.md
@@ -0,0 +1,124 @@
+# Component Selection
+
+Decision matrices for choosing the right component. When in doubt, use the MCP `search-components` tool.
+
+## Overlays
+
+| Need | Component | Why |
+|---|---|---|
+| Confirmation dialog, focused task, form | `UModal` | Blocks page interaction, centered, draws focus |
+| Detail panel, settings, secondary content | `USlideover` | Slides from edge, doesn't feel as interruptive as modal |
+| Mobile-first bottom sheet | `UDrawer` | Natural mobile pattern, swipe to dismiss |
+| Contextual info attached to a trigger | `UPopover` | No backdrop, positioned relative to trigger |
+| Simple hover hint | `UTooltip` | Non-interactive, hover/focus only |
+
+### Rules
+- Use `UModal` for destructive confirmations ("Are you sure you want to delete?")
+- Use `USlideover` for detail views in dashboards (email preview, user profile)
+- Use `UDrawer` for mobile navigation or action sheets
+- Modal and Slideover support `mode="drawer"` for automatic mobile drawer behavior
+- For programmatic overlays, use `useOverlay()` instead of `v-model:open`
+- Never put interactive content (buttons, links) inside `UTooltip`
+
+## Navigation
+
+| Need | Component | Why |
+|---|---|---|
+| Primary site/app navigation | `UNavigationMenu` | Horizontal (header) or vertical (sidebar) |
+| Switch between views on same page | `UTabs` | Content stays on page, no route change needed |
+| Show current location in hierarchy | `UBreadcrumb` | Nested page structures |
+| Search + keyboard-driven navigation | `UCommandPalette` | Power users, global search |
+| Contextual actions on a trigger element | `UDropdownMenu` | Right-click menus, action buttons |
+| Step-by-step process | `UStepper` | Multi-step forms, wizards |
+
+### Rules
+- Use `UNavigationMenu` with `orientation="vertical"` in sidebars, default horizontal in headers
+- Use `UTabs` when switching views that don't need their own URL
+- Use route-based navigation (`to` prop) when views should have shareable URLs
+- `UCommandPalette` is typically opened via `Cmd+K` shortcut — use `defineShortcuts` to wire it up
+
+## Inputs
+
+| Need | Component | Why |
+|---|---|---|
+| Small fixed list (< 10 items) | `USelect` | Native-like, simple, lightweight |
+| Searchable list, multiple selection, groups | `USelectMenu` | Rich dropdown with search, multi-select, grouped items |
+| Autocomplete / combobox (type + select) | `UInputMenu` | User can type freely AND pick from suggestions |
+| Free text entry | `UInput` | Plain text, email, password, search |
+| Multi-line text | `UTextarea` | With `autoresize` and `maxrows` |
+| Numeric value with +/- controls | `UInputNumber` | Min/max/step constraints |
+| Date selection | `UInputDate` | Calendar dropdown, supports ranges |
+| Time selection | `UInputTime` | Hour/minute picker, 12/24 hour |
+| Tags / multi-value free text | `UInputTags` | Chip-style input with max limit |
+| Verification code | `UPinInput` | Fixed-length code entry |
+| Boolean toggle | `USwitch` | On/off, enable/disable |
+| Boolean checkbox | `UCheckbox` | Single option with label |
+| Multiple choices from a list | `UCheckboxGroup` | Multiple selection, vertical or horizontal |
+| Single choice from a list (visible) | `URadioGroup` | All options visible, one selected |
+| Range value | `USlider` | Min/max with visual track |
+| Color value | `UColorPicker` | Hex/RGB/HSL picker |
+| File upload | `UFileUpload` | Button or drop area variants |
+
+### Rules
+- Use `UAuthForm` for login/signup pages — handles fields, social providers, validation, and layout out of the box
+- Use `USelect` for short, known lists (country, status, role)
+- Use `USelectMenu` when the list is long or needs search
+- Use `UInputMenu` when the user might want to type a value that's not in the list
+- Wrap all form inputs in `UFormField` for labels, descriptions, hints, and validation errors
+- Group related inline inputs with `UFieldGroup`
+
+## Feedback
+
+| Need | Component | Why |
+|---|---|---|
+| Ephemeral notification after action | `useToast()` | Auto-dismisses, stacks, non-blocking |
+| Inline persistent message | `UAlert` | Stays visible, in-page context |
+| App-wide announcement | `UBanner` | Sticky top bar, dismissible |
+| Loading state | `USkeleton` | Placeholder shimmer while loading |
+| Progress indicator | `UProgress` | Determinate or indeterminate progress |
+| Breakdown of a total | `UProgressGroup` | One bar split into colored segments that add up to `max` |
+
+### Rules
+- Use `useToast()` for action feedback: "Item saved", "Email sent", "Error occurred"
+- Use `UAlert` for contextual warnings in forms or sections
+- Use `UBanner` for site-wide messages (maintenance, new feature)
+- Never use a toast for information the user needs to act on — use an alert or modal instead
+
+## Markdown
+
+When rendering Markdown (for instance with Comark), **prefer Prose components** — they are styled and tuned for Markdown contexts. Generic Nuxt UI components can also be used. `` (or ``) auto-resolves `ProseX` components when `@nuxt/ui` is installed. In Markdown, the `Prose` prefix can be omitted (`::callout`, `::steps`, etc.).
+
+| Need | Use | Not |
+|---|---|---|
+| Note / warning / tip | `Callout` | `UAlert` |
+| Tabbed content | `Tabs` + `TabsItem` | `UTabs` |
+| Step-by-step list | `Steps` | custom list |
+| Content card grid | `Card` + `CardGroup` | `UCard` |
+| Collapsible section | `Collapsible` / `Accordion` | `UCollapsible` / `UAccordion` |
+| Tabbed code blocks | `CodeGroup` | manual tabs |
+
+### Rules
+- Prose components use native Vue slots — Comark maps named `#slot` blocks directly to ``
+- Theme via `appConfig.ui.prose.` using the same override pattern as other Nuxt UI components
+- `Callout` colors: `neutral` (default), `primary`, `secondary`, `info`, `success`, `warning`, `error`
+
+## Layout containers
+
+| Need | Component | Why |
+|---|---|---|
+| Grouped content with header/body/footer | `UCard` | Bordered/shadow container with slots |
+| Rich content card with icon, badge, links | `UPageCard` | Extended card for grids — supports icon, badge, highlight, links |
+| Marketing page section | `UPageSection` | Full-width section with headline, title, features |
+| Page hero | `UPageHero` | Title + description + links + optional media |
+| Call to action | `UPageCTA` | Highlighted section with action links |
+| Feature grid | `UPageGrid` + `UPageCard` | Multi-column card grid |
+| Centered content wrapper | `UContainer` | Max-width container |
+| Collapsible section | `UCollapsible` | Animated expand/collapse |
+| Accordion (multiple collapsibles) | `UAccordion` | FAQ, grouped collapsible content |
+| Resizable side-by-side panes | `USplitter` | IDE-style layouts, resizable sidebars |
+
+### Rules
+- Don't overuse `UCard` — plain content with spacing is often better than wrapping everything in cards
+- Use `UPageCard` instead of `UCard` when you need icon, badge, highlight, or links — it's designed for feature grids and landing pages
+- Use `UPageSection` for marketing/landing page sections, not for app UI
+- Use `UContainer` inside `UDashboardPanel` body for consistent content width
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/conventions.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/conventions.md
new file mode 100644
index 00000000..c1aa29eb
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/conventions.md
@@ -0,0 +1,376 @@
+# Conventions
+
+Coding patterns specific to Nuxt UI.
+
+## Auto-registered modules
+
+Nuxt UI automatically registers `@nuxt/icon`, `@nuxt/fonts`, and `@nuxtjs/color-mode`. Do **not** add them to your `modules` array. Configure them via root-level keys in `nuxt.config.ts`:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ modules: ['@nuxt/ui'],
+ icon: { /* @nuxt/icon options */ },
+ fonts: { /* @nuxt/fonts options */ },
+ colorMode: { /* @nuxtjs/color-mode options */ }
+})
+```
+
+Disable any of them: `ui: { fonts: false }`, `ui: { colorMode: false }`.
+
+## Content module integration
+
+When using `@nuxt/content`, it **must** come after `@nuxt/ui` in the `modules` array — otherwise prose components won't be available:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ modules: ['@nuxt/ui', '@nuxt/content']
+})
+```
+
+Add `@source` in your CSS so Tailwind generates classes used in markdown/MDC:
+
+```css
+/* app/assets/css/main.css */
+@import "tailwindcss";
+@import "@nuxt/ui";
+
+@source "../../../content/**/*";
+```
+
+Use `mapContentNavigation` to transform content navigation for components like `UBreadcrumb`:
+
+```ts
+import { mapContentNavigation } from '@nuxt/ui/utils/content'
+import { findPageBreadcrumb } from '@nuxt/content/utils'
+
+const breadcrumb = computed(() =>
+ mapContentNavigation(findPageBreadcrumb(navigation.value, page.value?.path))
+)
+```
+
+## IDE setup
+
+Recommended `.vscode/settings.json` for Tailwind IntelliSense autocomplete with Nuxt UI:
+
+```json
+{
+ "files.associations": { "*.css": "tailwindcss" },
+ "editor.quickSuggestions": { "strings": "on" },
+ "tailwindCSS.classAttributes": ["class", "ui"],
+ "tailwindCSS.classFunctions": ["defineAppConfig"]
+}
+```
+
+## UApp wrapper
+
+Always wrap your app in `UApp` — it provides:
+- Toast container (`useToast`)
+- Tooltip provider
+- Programmatic overlay context (`useOverlay`)
+- i18n locale support
+
+```vue
+
+
+
+```
+
+## Icons
+
+Nuxt UI registers `@nuxt/icon` automatically. Format: `i-{collection}-{name}`. Prefer `lucide` collection.
+
+```vue
+
+
+
+```
+
+Install collections locally for reliable SSR and best performance:
+
+```bash
+pnpm i @iconify-json/lucide
+pnpm i @iconify-json/simple-icons
+```
+
+Custom local collections (Nuxt only):
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ icon: {
+ customCollections: [{
+ prefix: 'custom',
+ dir: './app/assets/icons'
+ }]
+ }
+})
+```
+
+### Default icon overrides
+
+Components like `Modal`, `Select`, `Accordion`, etc. use default icons from `appConfig.ui.icons`. Override them globally:
+
+```ts
+// app.config.ts
+export default defineAppConfig({
+ ui: {
+ icons: {
+ loading: 'i-lucide-refresh-cw',
+ close: 'i-lucide-x',
+ check: 'i-lucide-check',
+ chevronDown: 'i-lucide-chevron-down',
+ chevronRight: 'i-lucide-chevron-right',
+ arrowLeft: 'i-lucide-arrow-left',
+ arrowRight: 'i-lucide-arrow-right'
+ }
+ }
+})
+```
+
+## Slot patterns
+
+Most components follow consistent slot naming:
+
+| Slot | Used by | Purpose |
+|---|---|---|
+| `#header` | Card, Modal, Slideover, DashboardPanel | Top section |
+| `#body` | DashboardPanel | Scrollable content area |
+| `#footer` | Card, Modal, Slideover, DashboardPanel | Bottom section |
+| `#left` | Page, DashboardNavbar | Left sidebar or content |
+| `#right` | Page, DashboardNavbar, Header | Right sidebar or content |
+| `#leading` | Input, Button, Alert | Before main content (icon area) |
+| `#trailing` | Input, Button | After main content (icon area) |
+| `#content` | Modal, Slideover, Popover, Tooltip | Full content override |
+| `#default` | Most components | Main content area |
+
+## Items arrays
+
+Many components accept an `items` prop. Two patterns:
+
+**Flat array** — plain list:
+
+```ts
+const items = [
+ { label: 'Edit', icon: 'i-lucide-pencil' },
+ { label: 'Delete', icon: 'i-lucide-trash', color: 'error' }
+]
+```
+
+**Nested array** — groups with automatic separators between them:
+
+```ts
+const items = [
+ [
+ { label: 'Edit', icon: 'i-lucide-pencil' },
+ { label: 'Duplicate', icon: 'i-lucide-copy' }
+ ],
+ [
+ { label: 'Delete', icon: 'i-lucide-trash', color: 'error' }
+ ]
+]
+```
+
+Components supporting nested arrays: `UDropdownMenu`, `UContextMenu`, `UCommandPalette`, `UNavigationMenu`.
+
+## Composables
+
+### useToast
+
+```ts
+const toast = useToast()
+
+toast.add({
+ title: 'Success',
+ description: 'Item saved',
+ color: 'success',
+ icon: 'i-lucide-check-circle',
+ duration: 5000,
+ actions: [{ label: 'Undo', onClick: () => {} }]
+})
+
+toast.remove('toast-id')
+toast.clear()
+```
+
+### useOverlay
+
+Programmatic modals, slideovers, drawers — no template `v-model` needed. See [overlays recipe](../recipes/overlays.md) for full patterns.
+
+```ts
+const overlay = useOverlay()
+const modal = overlay.create(MyComponent)
+const instance = modal.open({ title: 'Confirm?' })
+if (await instance.result) { /* confirmed */ }
+```
+
+### defineShortcuts
+
+```ts
+defineShortcuts({
+ meta_k: () => openSearch(),
+ escape: () => close(),
+ meta_enter: {
+ handler: () => submit(),
+ whenever: [isFormValid]
+ }
+})
+```
+
+Keys: `meta` (Cmd/Ctrl), `ctrl`, `alt`, `shift`. Separator: `_`.
+
+### extractShortcuts
+
+Wire up keyboard shortcuts from menu items:
+
+```ts
+const items = [
+ { label: 'New file', kbds: ['meta', 'n'], onSelect: () => newFile() },
+ { label: 'Save', kbds: ['meta', 's'], onSelect: () => save() }
+]
+
+defineShortcuts(extractShortcuts(items))
+```
+
+### Internationalization (i18n)
+
+Nuxt UI supports 50+ locales. Set the locale on `UApp` — all components inherit it.
+
+#### Static locale
+
+```vue
+
+
+
+
+
+
+
+```
+
+#### Extend a built-in locale
+
+`extendLocale` is auto-imported. Override specific messages or the `code` (affects date/time formatting in Calendar, InputDate, InputTime):
+
+```ts
+import { en } from '@nuxt/ui/locale'
+
+const locale = extendLocale(en, {
+ code: 'en-AU',
+ messages: {
+ commandPalette: { placeholder: 'Search a component...' }
+ }
+})
+```
+
+#### Custom locale from scratch
+
+```ts
+import type { Messages } from '@nuxt/ui'
+
+const locale = defineLocale({
+ name: 'My locale',
+ code: 'en',
+ dir: 'ltr',
+ messages: {
+ // all component message keys
+ }
+})
+```
+
+#### Dynamic locale with @nuxtjs/i18n
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ modules: ['@nuxt/ui', '@nuxtjs/i18n'],
+ i18n: {
+ locales: [
+ { code: 'en', name: 'English' },
+ { code: 'fr', name: 'Français' },
+ { code: 'ar', name: 'العربية' }
+ ]
+ }
+})
+```
+
+```vue
+
+
+
+
+
+
+
+```
+
+Each locale has a `dir` property (`'ltr'` or `'rtl'`). `UApp` uses it to set directionality on all components. Use `useHead` to propagate `lang` and `dir` to the `` element.
+
+## Color mode
+
+Nuxt UI registers `@nuxtjs/color-mode` automatically. Built-in components for switching:
+- `UColorModeButton` — single button toggle (light/dark)
+- `UColorModeSwitch` — toggle switch
+- `UColorModeSelect` — dropdown with system/light/dark options
+- `UColorModeAvatar` — displays different avatar per mode
+- `UColorModeImage` — displays different image per mode
+
+For custom color mode UI, use `useColorMode` with `ClientOnly` to avoid hydration mismatch:
+
+```vue
+
+
+
+
+
+
+
+
+
+
+```
+
+## Official templates
+
+Bootstrap a project from a template instead of starting from scratch:
+
+```bash
+npx nuxi@latest init -t ui # Starter
+npx nuxi@latest init -t ui/dashboard # Dashboard
+npx nuxi@latest init -t ui/docs # Docs (Nuxt Content)
+npx nuxi@latest init -t ui/landing # Landing page
+npx nuxi@latest init -t ui/saas # SaaS (landing + pricing + docs + blog)
+npx nuxi@latest init -t ui/chat # AI chat (Vercel AI SDK)
+npx nuxi@latest init -t ui/editor # Rich text editor
+npx nuxi@latest init -t ui/portfolio # Portfolio
+npx nuxi@latest init -t ui/changelog # Changelog
+npx nuxi@latest init -t ui/calendar # Calendar
+```
+
+## Responsive patterns
+
+- Dashboard sidebar hides on mobile, shows a slideover/drawer via `UDashboardSidebar` `mode` prop
+- `UHeader` body slot is the mobile menu content (shown when hamburger is tapped)
+- Most components handle responsiveness automatically — avoid manual breakpoint classes unless needed
+- Use `UPageAside` for sidebars that should hide below `lg` breakpoint
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/design-system.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/design-system.md
new file mode 100644
index 00000000..561dc411
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/design-system.md
@@ -0,0 +1,378 @@
+# Design System
+
+## Semantic colors
+
+Nuxt UI uses 7 semantic colors. Never use raw Tailwind palette colors in components — always use these semantic names.
+
+| Color | Default | When to use |
+|---|---|---|
+| `primary` | green | CTAs, active states, brand accent, links |
+| `secondary` | blue | Secondary actions, complementary highlights |
+| `success` | green | Success messages, confirmations, positive states |
+| `info` | blue | Informational alerts, tips, neutral highlights |
+| `warning` | yellow | Warnings, caution states, pending actions |
+| `error` | red | Errors, destructive actions, validation failures |
+| `neutral` | slate | Text, borders, backgrounds, disabled states, chrome |
+
+### Choosing colors for components
+
+- **Primary action** on a page (submit, save, confirm) → `color="primary"`
+- **Secondary actions** (cancel, back, alternative) → `color="neutral"` with `variant="outline"` or `"ghost"`
+- **Destructive actions** (delete, remove) → `color="error"`
+- **Status indicators** → match the semantic meaning: `success`, `warning`, `error`, `info`
+- **Navigation and chrome** → `color="neutral"`
+
+### Configuring colors
+
+```ts
+// Nuxt — app.config.ts
+export default defineAppConfig({
+ ui: {
+ colors: {
+ primary: 'indigo',
+ secondary: 'violet',
+ success: 'emerald',
+ error: 'rose',
+ neutral: 'zinc'
+ }
+ }
+})
+```
+
+```ts
+// Vue — vite.config.ts
+ui({
+ ui: {
+ colors: { primary: 'indigo', secondary: 'violet', neutral: 'zinc' }
+ }
+})
+```
+
+Only colors that exist in your theme work — either Tailwind's defaults or custom colors defined with `@theme`.
+
+Available color palettes:
+- **Standard Tailwind**: red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose
+- **Neutral palettes** (for `neutral` key — pick one that matches the aesthetic):
+ - `slate` — cool blue-gray, professional (default)
+ - `gray` — true neutral, clean
+ - `zinc` — slightly cool, modern, techy
+ - `neutral` — perfectly balanced
+ - `stone` — warm gray, earthy
+ - `taupe` — warm brown-gray, sophisticated
+ - `mauve` — purple-tinted gray, elegant
+ - `mist` — soft blue-gray, airy
+ - `olive` — green-tinted gray, natural
+
+### Adding custom brand colors
+
+1. Define all 11 shades in CSS:
+
+```css
+/* app/assets/css/main.css */
+@theme static {
+ --color-brand-50: #fef2f2;
+ --color-brand-100: #fee2e2;
+ --color-brand-200: #fecaca;
+ --color-brand-300: #fca5a5;
+ --color-brand-400: #f87171;
+ --color-brand-500: #ef4444;
+ --color-brand-600: #dc2626;
+ --color-brand-700: #b91c1c;
+ --color-brand-800: #991b1b;
+ --color-brand-900: #7f1d1d;
+ --color-brand-950: #450a0a;
+}
+```
+
+2. Assign it: `ui: { colors: { primary: 'brand' } }`
+
+### Extending with new semantic color names
+
+To add a color beyond the 7 defaults (e.g., `tertiary`), register it in `theme.colors`:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ ui: {
+ theme: {
+ colors: ['primary', 'secondary', 'tertiary', 'info', 'success', 'warning', 'error']
+ }
+ }
+})
+```
+
+## Semantic utility classes
+
+Use these everywhere instead of raw palette colors:
+
+### Text
+- `text-default` — primary body text
+- `text-muted` — secondary text (descriptions, hints)
+- `text-toned` — medium-emphasis text (between muted and default)
+- `text-dimmed` — tertiary text (placeholders, disabled)
+- `text-highlighted` — emphasized text (headings, important labels)
+- `text-inverted` — text on inverted backgrounds (pair with `bg-inverted`)
+
+### Backgrounds
+- `bg-default` — page background
+- `bg-muted` — subtle backgrounds (hover states, alternating rows)
+- `bg-elevated` — raised surfaces (cards, dropdowns)
+- `bg-accented` — accent backgrounds (active states, selected items)
+- `bg-inverted` — inverse background (dark on light, light on dark)
+
+### Borders
+- `border-default` — standard borders
+- `border-muted` — subtle borders (dividers, separators)
+- `border-accented` — accent borders (active states)
+- `border-inverted` — inverse borders
+
+## Variants
+
+Most components accept a `variant` prop. Choose based on visual weight:
+
+| Variant | Weight | When to use |
+|---|---|---|
+| `solid` | Highest | Primary actions, main CTAs |
+| `outline` | Medium | Secondary actions, form fields |
+| `soft` | Medium-low | Tags, badges, subtle buttons |
+| `subtle` | Low | Background highlights, less prominent actions |
+| `ghost` | Lowest | Inline actions, icon buttons, navigation items |
+| `link` | Lowest | Text-only links inside content |
+
+### Rules
+
+- **One solid primary button per view** — everything else should be lower weight
+- **Destructive buttons** use `color="error"` but not necessarily `variant="solid"` — use `variant="soft"` or `"outline"` unless it's the primary action on a confirmation dialog
+- **Button groups** should use consistent variants — don't mix `solid` and `outline` siblings
+
+## Customizing components
+
+### `ui` prop
+
+Override theme **slots** on a single instance — wins over global config and variants.
+
+```vue
+
+
+```
+
+Rules for `ui` overrides:
+- **Prefer `defaultVariants`** over slot class overrides when possible (e.g., changing default button variant/size).
+- **Don't duplicate default classes** — check the generated theme file first to see what's already there.
+- Border radius defaults come from `--ui-radius`, but you can override with `rounded-*` classes in `ui` or `class` when you need a specific radius on a component.
+
+### `class` prop
+
+Override the **root** (or `base`) slot only — simpler than `ui` for single-slot changes.
+
+```vue
+
+```
+
+### Finding slot names
+
+Read the generated theme file for any component:
+- **Nuxt**: `.nuxt/ui/.ts`
+- **Vue**: `node_modules/.nuxt-ui/ui/.ts`
+
+These files show every available slot name, variant combination, and default class.
+
+### Global config
+
+Override `slots`, `variants`, `compoundVariants`, and `defaultVariants` globally in `app.config.ts` (Nuxt) or `vite.config.ts` (Vue):
+
+```ts
+// Nuxt — app.config.ts
+export default defineAppConfig({
+ ui: {
+ button: {
+ slots: {
+ base: 'font-bold'
+ },
+ compoundVariants: [{
+ color: 'neutral',
+ variant: 'outline',
+ class: 'ring-default hover:bg-accented'
+ }],
+ defaultVariants: {
+ color: 'neutral',
+ variant: 'outline'
+ }
+ }
+ }
+})
+```
+
+Tailwind Variants uses `tailwind-merge` under the hood — conflicting classes are resolved automatically.
+
+### Replace instead of merge
+
+Classes from the `ui` prop, the `class` prop, and global config are merged onto the component defaults. To replace them instead, set the slot to a function, which receives the default classes as its argument so you can reuse part of them.
+
+In global config it replaces the slot's own classes, so `variants` and `compoundVariants` still apply on top. In the `ui` and `class` props it runs after the variants, so it replaces the resolved classes, variants included.
+
+```vue
+
+```
+
+```ts
+// app.config.ts, applies to every instance
+export default defineAppConfig({
+ ui: {
+ button: {
+ slots: {
+ label: () => 'text-base font-bold'
+ }
+ }
+ }
+})
+```
+
+### Theme component
+
+Override theme for a section of the component tree without affecting the rest of the app. Renders no DOM element — uses `provide`/`inject`:
+
+```vue
+
+
+
+
+```
+
+### Global `defaultVariants`
+
+Override default `size` and `color` for **all** components at once:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ ui: {
+ theme: {
+ defaultVariants: {
+ size: 'lg',
+ color: 'neutral'
+ }
+ }
+ }
+})
+```
+
+### `theme.transitions`
+
+Controls whether interactive components get `transition-colors`. Enabled by default.
+
+```ts
+// nuxt.config.ts — disable transitions
+export default defineNuxtConfig({
+ ui: {
+ theme: {
+ transitions: false
+ }
+ }
+})
+```
+
+### `theme.prefix`
+
+When using Tailwind CSS with a prefix, configure the same prefix in Nuxt UI so component classes match:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ ui: {
+ theme: {
+ prefix: 'tw'
+ }
+ }
+})
+```
+
+```css
+/* app/assets/css/main.css */
+@import "tailwindcss" prefix(tw);
+@import "@nuxt/ui";
+```
+
+### Tree-shaking with `experimental.componentDetection`
+
+Enable automatic component detection to only generate CSS for components you actually use:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ ui: {
+ experimental: {
+ componentDetection: true
+ }
+ }
+})
+```
+
+For dynamic components (e.g., ``), pass an array of component names to guarantee they're included:
+
+```ts
+componentDetection: ['Modal', 'Dropdown', 'Popover']
+```
+
+## CSS `@theme` customization
+
+Customize Tailwind design tokens in `main.css`:
+
+### Fonts
+
+```css
+@theme {
+ --font-sans: 'Public Sans', system-ui, sans-serif;
+ --font-mono: 'JetBrains Mono', monospace;
+}
+```
+
+In Nuxt, fonts defined here are automatically loaded by `@nuxt/fonts`.
+
+### Breakpoints
+
+```css
+@theme {
+ --breakpoint-3xl: 1920px;
+}
+```
+
+## CSS variables
+
+Nuxt UI exposes CSS variables you can override in `main.css`:
+
+```css
+:root {
+ --ui-radius: 0.25rem;
+ --ui-container: 80rem;
+ --ui-header-height: 4rem;
+}
+```
+
+### Color shade overrides
+
+Each semantic color defaults to shade 500 in light mode, 400 in dark mode. Override per-mode:
+
+```css
+:root {
+ --ui-primary: var(--ui-color-primary-700);
+}
+.dark {
+ --ui-primary: var(--ui-color-primary-200);
+}
+```
+
+You can use `var(--ui-color--)` to reference shades from the active palette (e.g., `var(--ui-color-neutral-800)` maps to whichever neutral palette is configured).
+
+### Black/white as primary
+
+`black` and `white` have no shades, so they can't be used in config. Set them directly:
+
+```css
+:root {
+ --ui-primary: black;
+}
+.dark {
+ --ui-primary: white;
+}
+```
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/forms.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/forms.md
new file mode 100644
index 00000000..2a3eda14
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/guidelines/forms.md
@@ -0,0 +1,233 @@
+# Forms
+
+## Basic pattern
+
+Nuxt UI forms use `UForm` + `UFormField` + Standard Schema validation (Zod, Valibot, Yup, or Joi).
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Key rules
+
+- Always use `UFormField` around inputs — it connects validation errors via the `name` prop
+- The `name` prop on `UFormField` must match the schema field name exactly
+- Use `reactive>({})` for state — `Partial` allows empty initial values
+- `@submit` only fires when validation passes
+- For nested objects, use dot notation: `name="address.city"`
+
+## UFormField props
+
+| Prop | Purpose |
+|---|---|
+| `name` | Links to schema field for validation errors |
+| `label` | Visible label text |
+| `description` | Help text below the input |
+| `hint` | Right-aligned hint text (e.g., "Optional") |
+| `required` | Shows required indicator |
+| `size` | Inherits to child input |
+
+## Field layout patterns
+
+### Vertical stack (default)
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+### Inline fields with UFieldGroup
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+### Grid layout
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Common field patterns
+
+### Select
+
+```vue
+
+
+
+```
+
+### Checkbox
+
+```vue
+
+
+
+```
+
+### Radio group
+
+```vue
+
+
+
+```
+
+### Switch
+
+```vue
+
+
+
+```
+
+### Textarea
+
+```vue
+
+
+
+```
+
+### File upload
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+### Date
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+## Programmatic validation
+
+```vue
+
+
+
+
+
+
+
+```
+
+## Form in a modal
+
+Use `#footer="{ close }"` scoped slot for cancel/submit actions. Wrap the modal body in `UForm` with a `type="submit"` button in the footer so validation runs on submit.
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/chat.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/chat.md
new file mode 100644
index 00000000..5ba3b6c8
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/chat.md
@@ -0,0 +1,263 @@
+# Chat Layout
+
+Build AI chat interfaces with message streams, reasoning, tool calling, and Vercel AI SDK integration.
+
+## When to use
+
+- AI chatbot interfaces
+- Customer support chat
+- Any conversational UI with streaming responses
+
+## Setup
+
+### Install dependencies
+
+**Nuxt:**
+
+```bash
+pnpm add ai @ai-sdk/gateway @ai-sdk/vue @comark/nuxt
+```
+
+**Vue (Vite):**
+
+```bash
+pnpm add ai @ai-sdk/gateway @ai-sdk/vue @comark/vue
+```
+
+### Register Comark module
+
+**Nuxt:**
+
+```ts [nuxt.config.ts]
+export default defineNuxtConfig({
+ modules: [
+ '@nuxt/ui',
+ '@comark/nuxt'
+ ]
+})
+```
+
+**Vue (Vite):** No module registration needed, import directly from `@comark/vue`.
+
+> `@comark/nuxt` (or `@comark/vue` for Vue projects) provides the `Comark` component used to render AI responses as streaming Markdown, it incrementally renders tokens as they arrive and automatically enables Nuxt UI's prose components.
+
+### Dark mode for syntax highlighting
+
+When using the `highlight` plugin, add the following CSS to your stylesheet:
+
+```css [main.css]
+html.dark .shiki span {
+ color: var(--shiki-dark) !important;
+ background-color: var(--shiki-dark-bg) !important;
+ font-style: var(--shiki-dark-font-style) !important;
+ font-weight: var(--shiki-dark-font-weight) !important;
+ text-decoration: var(--shiki-dark-text-decoration) !important;
+}
+```
+
+### Server endpoint
+
+Using [Vercel AI Gateway](https://vercel.com/ai-gateway) (recommended):
+
+```ts [server/api/chat.post.ts]
+import { streamText, convertToModelMessages, toUIMessageStream, createUIMessageStreamResponse } from 'ai'
+import { gateway } from '@ai-sdk/gateway'
+
+export default defineEventHandler(async (event) => {
+ const { messages } = await readBody(event)
+
+ const result = streamText({
+ model: gateway('anthropic/claude-sonnet-5'),
+ instructions: 'You are a helpful assistant.',
+ messages: await convertToModelMessages(messages)
+ })
+
+ const stream = toUIMessageStream({ stream: result.stream })
+ return createUIMessageStreamResponse({ stream })
+})
+```
+
+Or with a direct provider (e.g., `pnpm add @ai-sdk/openai`):
+
+```ts [server/api/chat.post.ts]
+import { streamText, convertToModelMessages, toUIMessageStream, createUIMessageStreamResponse } from 'ai'
+import { openai } from '@ai-sdk/openai'
+
+export default defineEventHandler(async (event) => {
+ const { messages } = await readBody(event)
+
+ const result = streamText({
+ model: openai('gpt-5-nano'),
+ instructions: 'You are a helpful assistant.',
+ messages: await convertToModelMessages(messages)
+ })
+
+ const stream = toUIMessageStream({ stream: result.stream })
+ return createUIMessageStreamResponse({ stream })
+})
+```
+
+## Component tree
+
+```
+UDashboardPanel
+├── #header → UDashboardNavbar
+├── #body → UContainer → UChatMessages
+│ ├── #content → UChatReasoning, UChatTool, Comark
+│ └── #indicator (loading)
+└── #footer → UContainer → UChatPrompt
+ └── UChatPromptSubmit
+```
+
+## Full page chat
+
+```vue [pages/chat/[id].vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ part.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Key components
+
+- `UChatMessages` — scrollable message list with auto-scroll. Props: `messages`, `status`. Slots: `#content` (per message), `#actions`, `#indicator`.
+- `UChatMessage` — individual bubble. Props: `message`, `side` (`'left'`/`'right'`).
+- `UChatReasoning` — collapsible reasoning block. Auto-opens during streaming, auto-closes when done. Use `isPartStreaming(part)` from `@nuxt/ui/utils/ai`.
+- `UChatTool` — tool invocation status. Use `isToolStreaming(part)`. Variants: `'inline'` (default), `'card'`.
+- `UChatPrompt` — enhanced textarea. Accepts all Textarea props + `error` prop.
+- `UChatPromptSubmit` — submit button with automatic status handling (send/stop/reload).
+- `UChatPalette` — layout wrapper for chat inside overlays.
+
+## Chat in a modal
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## With model selector
+
+```vue
+
+
+
+
+
+
+
+```
+
+## Conversation sidebar
+
+Combine with dashboard layout for a ChatGPT-like interface:
+
+```vue [layouts/dashboard.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/dashboard.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/dashboard.md
new file mode 100644
index 00000000..10d99548
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/dashboard.md
@@ -0,0 +1,233 @@
+# Dashboard Layout
+
+Build admin interfaces with resizable sidebars, multi-panel layouts, and toolbars.
+
+## When to use
+
+- Admin panels, back-office UIs
+- Email clients, project management tools
+- Any app with a persistent sidebar and content panels
+- Combine with chat or editor layouts for specialized dashboards
+
+## Component tree
+
+```
+UApp
+└── NuxtLayout (dashboard)
+ └── UDashboardGroup
+ ├── UDashboardSidebar
+ │ ├── #header (logo, search button)
+ │ ├── #default (navigation) — receives { collapsed } slot prop
+ │ └── #footer (user menu)
+ └── NuxtPage
+ └── UDashboardPanel
+ ├── #header → UDashboardNavbar + UDashboardToolbar
+ ├── #body (scrollable content)
+ └── #footer (optional)
+```
+
+## Layout
+
+```vue [layouts/dashboard.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Page
+
+```vue [pages/dashboard/index.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### Common mistakes
+
+- Forgetting `definePageMeta({ layout: 'dashboard' })` — the page won't use the dashboard layout without it.
+- Putting content directly in `UDashboardPanel` without using `#body` slot — content won't scroll properly.
+- Not handling the `collapsed` slot prop — sidebar content should adapt when collapsed (hide labels, center icons).
+
+## Key components
+
+### DashboardGroup
+
+Root wrapper. Manages sidebar state and persistence.
+
+| Prop | Default | Purpose |
+|---|---|---|
+| `storage` | `'cookie'` | `'cookie'`, `'localStorage'`, `false` |
+| `storage-key` | `'dashboard'` | Storage key name |
+
+### DashboardSidebar
+
+Resizable, collapsible sidebar. Must be inside `DashboardGroup`.
+
+| Prop | Default | Purpose |
+|---|---|---|
+| `resizable` | `false` | Drag to resize |
+| `collapsible` | `false` | Collapse when dragged to edge |
+| `side` | `'left'` | `'left'` or `'right'` |
+| `mode` | `'slideover'` | Mobile: `'modal'`, `'slideover'`, `'drawer'` |
+
+All slots receive `{ collapsed, collapse }` — `collapsed` is the boolean state, `collapse(value)` toggles it programmatically. Use `v-model:collapsed` and `v-model:open` (mobile) for state control.
+
+### DashboardPanel
+
+Content panel with `#header`, `#body` (scrollable), `#footer`, and `#default` (raw, no scroll) slots.
+
+### DashboardNavbar / DashboardToolbar
+
+Navbar: `#leading`, `#left`, `#default`, `#right` slots + `title` prop. Use `UDashboardSidebarCollapse` in `#leading` to toggle sidebar on mobile.
+Toolbar: same slots, sits below navbar for filters/actions.
+
+### UNavigationMenu in sidebar
+
+Always pass `:collapsed="collapsed"` to `UNavigationMenu` inside a collapsible sidebar — it auto-hides labels and centers icons. Use `NavigationMenuItem[][]` (array of arrays) for separate groups (main nav + footer links).
+
+## Multi-panel (list-detail)
+
+```vue [pages/dashboard/inbox.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## With toolbar
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## With search
+
+```vue [layouts/dashboard.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Right sidebar
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/docs.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/docs.md
new file mode 100644
index 00000000..e539897e
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/docs.md
@@ -0,0 +1,152 @@
+# Docs Layout
+
+Build documentation sites with sidebar navigation, table of contents, and surround links.
+
+## When to use
+
+- Technical documentation sites
+- Knowledge bases, help centers
+- Any content-heavy site with hierarchical navigation
+
+> Requires `@nuxt/content` — see [conventions](../guidelines/conventions.md#content-module-integration) for setup (module order + `@source`).
+
+## Component tree
+
+```
+UApp
+├── UHeader
+├── UMain
+│ └── NuxtLayout (docs)
+│ └── UPage
+│ ├── #left → UPageAside → UContentNavigation
+│ └── NuxtPage
+│ ├── UPageHeader
+│ ├── UPageBody → ContentRenderer + UContentSurround
+│ └── #right → UContentToc
+└── UFooter
+```
+
+## App shell
+
+```vue [app.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Layout
+
+```vue [layouts/docs.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Page
+
+```vue [pages/docs/[...slug].vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### How nesting works
+
+The outer `UPage` in the layout handles the **left sidebar**. The inner `UPage` in the page handles the **right sidebar**. They nest correctly — this is intentional.
+
+### Common mistakes
+
+- Not providing navigation via `provide`/`inject` — the layout needs it from the app shell.
+- Forgetting `UContentSearch` in app.vue — search won't work without it.
+- Using `UContentSearchButton` without `UContentSearch` — the button opens search, but the search component must exist.
+
+## Key components
+
+- `UPage` — multi-column grid with `#left`, `#default`, `#right` slots
+- `UPageAside` — sticky sidebar wrapper (visible from `lg` breakpoint)
+- `UContentNavigation` — sidebar navigation tree from Nuxt Content
+- `UContentToc` — table of contents from page headings
+- `UContentSurround` — prev/next links
+- `UContentSearch` / `UContentSearchButton` — search command palette
+- `UPageAnchors` — simpler alternative to full TOC
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/editor.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/editor.md
new file mode 100644
index 00000000..eb224a66
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/editor.md
@@ -0,0 +1,153 @@
+# Editor Layout
+
+Build a rich text editor with toolbars, slash commands, mentions, and drag-and-drop.
+
+## When to use
+
+- Note-taking apps, CMS editors
+- Collaborative editing interfaces
+- Any rich text editing need (supports JSON, HTML, and Markdown)
+
+## Component tree
+
+```
+UEditor
+├── UEditorToolbar (fixed / bubble / floating)
+├── UEditorDragHandle
+├── UEditorSuggestionMenu
+├── UEditorMentionMenu
+└── UEditorEmojiMenu
+```
+
+## Basic editor
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
+
+> If you encounter prosemirror-related errors, add prosemirror packages to `vite.optimizeDeps.include` in `nuxt.config.ts`.
+
+## Key components
+
+- `UEditor` — rich text editor. `v-model` accepts JSON (default), HTML, or Markdown via `content-type` prop. Default slot provides `{ editor, handlers }` — `editor` is the Tiptap instance, `handlers` contains action functions for toolbar/menus.
+- `UEditorToolbar` — toolbar with `layout`: `'fixed'` (default), `'bubble'` (on selection), `'floating'` (on empty lines).
+- `UEditorDragHandle` — block drag-and-drop handle.
+- `UEditorSuggestionMenu` — slash command menu (type `/` to open).
+- `UEditorMentionMenu` — `@` mention menu.
+- `UEditorEmojiMenu` — emoji picker (type `:` to open).
+
+## Toolbar modes
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+## Content types
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+## With document sidebar
+
+Combine with Dashboard layout for a multi-document editor:
+
+```vue [layouts/editor.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```vue [pages/editor/[id].vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/landing.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/landing.md
new file mode 100644
index 00000000..a0d231ad
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/layouts/landing.md
@@ -0,0 +1,185 @@
+# Landing Page Layout
+
+Build public-facing pages — landing, blog, changelog, pricing — using the Header + Main + Footer shell with Page components.
+
+## When to use
+
+- Marketing sites, product pages, company sites
+- Blog and content pages
+- Pricing, changelog, portfolio pages
+- Any public-facing page that isn't a dashboard or documentation
+
+## App shell
+
+```vue [app.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copyright © {{ new Date().getFullYear() }}
+
+
+
+
+
+
+
+```
+
+### Common mistakes
+
+- Forgetting the `#body` slot on `UHeader` — this is the mobile menu content. Without it, mobile users have no navigation.
+- Using `variant="solid"` for both header and hero buttons — the header button should be lower weight than the hero CTA.
+
+## Landing page
+
+```vue [pages/index.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Key components
+
+- `UPageHero` — hero with title, description, links, and optional media. Use `orientation="horizontal"` for side-by-side layout.
+- `UPageSection` — content section with headline, title, description, and `features` grid. Use `id` for anchor links.
+- `UPageCTA` — call to action block.
+- `UPageGrid` / `UPageCard` — card grid for features, testimonials, etc.
+- `UPageFeature` — individual feature item.
+- `UPageLogos` — logo wall for social proof.
+- `UPricingPlans` / `UPricingTable` — pricing cards and comparison tables.
+- `UFooterColumns` — multi-column footer with link groups (used inside `UFooter`).
+
+## Variations
+
+### Alternating feature sections
+
+```vue
+
+
+
+
+
+
+
+```
+
+### Blog listing
+
+```vue [pages/blog/index.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### Changelog
+
+```vue [pages/changelog.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/auth.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/auth.md
new file mode 100644
index 00000000..57d2bdc0
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/auth.md
@@ -0,0 +1,162 @@
+# Auth Forms
+
+## UAuthForm (recommended)
+
+`UAuthForm` provides a complete auth form with fields, providers, validation, and submit — no manual `UForm` + `UFormField` wiring needed. Wrap it in `UPageCard` for a polished look.
+
+```vue [pages/login.vue]
+
+
+
+
+
+
+
+ Forgot password?
+
+
+ Don't have an account? Sign up.
+
+
+
+
+
+```
+
+### UAuthForm key props
+
+| Prop | Purpose |
+|---|---|
+| `title`, `description`, `icon` | Header content |
+| `fields` | `AuthFormField[]` — each has `name`, `type`, `label`, `placeholder`, `required` |
+| `providers` | `ButtonProps[]` — social login buttons shown above/below the form |
+| `schema` | Zod/Valibot schema for validation |
+| `submit` | Customize submit button: `{ label: 'Sign in', block: true }` |
+| `separator` | Text between providers and fields (default: `'or'`) |
+
+### UAuthForm key slots
+
+| Slot | Purpose |
+|---|---|
+| `#description` | Override description (e.g., add sign-up link) |
+| `#password-hint` | "Forgot password?" link on password field |
+| `#validation` | Custom error display (e.g., `UAlert`) |
+| `#footer` | Terms of service, sign-up link |
+| `#-field` | Override a specific field's rendering |
+
+## Custom auth layout
+
+For layouts where `UAuthForm` is too opinionated, use `UCard` + `UForm` + `UFormField` directly.
+
+```vue [pages/login.vue]
+
+
+
+
+
+
+
+
Welcome back
+
Sign in to your account
+
+
+
+
+
+
+
+
+
+
+ Forgot password?
+
+
+
+
+
+
+
+
+
+ Don't have an account?
+ Sign up
+
+
+
+
+
+```
+
+## Tips
+
+- Prefer `UAuthForm` with `UPageCard` for standard auth pages — handles layout, providers, validation, and submit
+- Use `import * as z from 'zod'` and `z.email()` (Zod 4 syntax)
+- Type the submit handler: `function onSubmit(event: FormSubmitEvent)` — access validated data via `event.data`
+- Center auth forms with `flex min-h-dvh items-center justify-center`
+- Place "Forgot password?" link as `#password-hint` slot on `UAuthForm`, or `#hint` slot on `UFormField`
+- Social login buttons: use `providers` prop on `UAuthForm`, or add manually with ``
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/data-tables.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/data-tables.md
new file mode 100644
index 00000000..f5c81f86
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/data-tables.md
@@ -0,0 +1,225 @@
+# Data Tables
+
+Complete patterns for displaying and managing tabular data.
+
+## Basic table
+
+```vue
+
+
+
+
+
+```
+
+## With search and filters (dashboard)
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## With row selection
+
+Row selection uses TanStack Table's `rowSelection` state — a `Record` keyed by row index.
+
+```vue
+
+
+
+
+
+
+ {{ table?.tableApi?.getFilteredSelectedRowModel().rows.length || 0 }} of
+ {{ table?.tableApi?.getFilteredRowModel().rows.length || 0 }} row(s) selected.
+
+
+```
+
+Add a checkbox column using the `h` function. Use tri-state `modelValue` (`true`, `false`, or `'indeterminate'`) for the "select all" header:
+
+```ts
+import { h } from 'vue'
+
+const UCheckbox = resolveComponent('UCheckbox')
+
+const columns: TableColumn[] = [{
+ id: 'select',
+ header: ({ table }) => h(UCheckbox, {
+ 'modelValue': table.getIsSomePageRowsSelected() ? 'indeterminate' : table.getIsAllPageRowsSelected(),
+ 'onUpdate:modelValue': (value: boolean | 'indeterminate') => table.toggleAllPageRowsSelected(!!value),
+ 'aria-label': 'Select all'
+ }),
+ cell: ({ row }) => h(UCheckbox, {
+ 'modelValue': row.getIsSelected(),
+ 'onUpdate:modelValue': (value: boolean | 'indeterminate') => row.toggleSelected(!!value),
+ 'aria-label': 'Select row'
+ })
+},
+// ... other columns
+]
+```
+
+## With pagination
+
+Use `v-model:pagination` on `UTable` with TanStack's `getPaginationRowModel`, then wire `UPagination` to the table API. `UPagination`'s `total` is total **items** (not pages) — it calculates page count from `total / items-per-page`.
+
+```vue
+
+
+
+
+
+
+ table?.tableApi?.setPageIndex(p - 1)"
+ />
+
+
+```
+
+## With async data (Nuxt)
+
+Use `status === 'pending' || status === 'idle'` for loading state — `idle` covers the initial render before `useLazyFetch` starts.
+
+```vue
+
+
+
+
+
+```
+
+For server-side pagination:
+
+```vue
+
+
+
+
+
+
+
+
+
+```
+
+## Tips
+
+- Table is built on [TanStack Table v8](https://tanstack.com/table/v8) — columns use `ColumnDef` format with `accessorKey`, `header`, `cell`
+- Use `#-cell` and `#-header` template slots to customize rendering with Vue templates
+- Alternatively, use the `h` function inside `header` and `cell` column properties for inline rendering
+- Row data in slots is accessed via `row.original` (not `row` directly)
+- Use `v-model:row-selection` for selection, `v-model:sorting` for sort state
+- Wrap tables in `UDashboardPanel` with `#header` toolbar for the dashboard pattern
+- For empty states, use the `#empty` slot
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/navigation.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/navigation.md
new file mode 100644
index 00000000..ef71a988
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/navigation.md
@@ -0,0 +1,90 @@
+# Navigation
+
+Patterns for headers, sidebars, breadcrumbs, and tab navigation.
+
+## Header with mobile menu
+
+`UHeader` default slot is desktop nav, `#body` is the mobile menu. Without `#body`, mobile users have no navigation.
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+> Full app shell example in [landing layout](../layouts/landing.md).
+
+## Sidebar navigation (dashboard)
+
+See [dashboard layout](../layouts/dashboard.md) for the full sidebar pattern with `UDashboardSidebar` + `UNavigationMenu`. Key points:
+- Pass `:collapsed="collapsed"` to `UNavigationMenu` inside collapsible sidebars
+- Use `NavigationMenuItem[][]` (nested arrays) for separate nav groups
+- Use `#footer` slot for user menu with `UDropdownMenu`
+
+## Breadcrumbs
+
+```vue
+
+
+
+
+
+```
+
+## Tab navigation (within a page)
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
diff --git a/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/overlays.md b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/overlays.md
new file mode 100644
index 00000000..597def75
--- /dev/null
+++ b/code/link-site/link-nuxt/.agents/skills/nuxt-ui/references/recipes/overlays.md
@@ -0,0 +1,173 @@
+# Overlays
+
+Patterns for modals, slideovers, drawers, and command palettes.
+
+## Confirmation dialog
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Programmatic confirmation (useOverlay)
+
+Reusable pattern — no template state needed at the call site.
+
+```vue [components/ConfirmModal.vue]
+
+
+
+
+
+
+
+
+
+
+```
+
+```ts
+// Usage anywhere
+const overlay = useOverlay()
+const confirm = overlay.create(ConfirmModal)
+
+async function deleteItem(item) {
+ const instance = confirm.open({
+ title: 'Delete item',
+ description: `Are you sure you want to delete "${item.name}"?`
+ })
+
+ if (await instance.result) {
+ // user confirmed
+ }
+}
+```
+
+## Form in a slideover
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Command palette
+
+```vue
+
+
+
+
+
+
+
+```
+
+## Drawer (bottom sheet)
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/SKILL.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/SKILL.md
new file mode 100644
index 00000000..2ce6e71f
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/SKILL.md
@@ -0,0 +1,176 @@
+---
+name: nuxt-ui
+description: Build UIs with @nuxt/ui v4 — 125+ accessible Vue components with Tailwind CSS theming. Use when creating interfaces, customizing themes to match a brand, building forms, or composing layouts like dashboards, docs sites, and chat interfaces.
+---
+
+# Nuxt UI
+
+Vue component library built on [Reka UI](https://reka-ui.com/) + [Tailwind CSS](https://tailwindcss.com/) + [Tailwind Variants](https://www.tailwind-variants.org/). Works with Nuxt, Vue (Vite), Laravel (Vite + Inertia), and AdonisJS (Vite + Inertia).
+
+## MCP Server
+
+For component API details (props, slots, events, full documentation, examples), use the [Nuxt UI MCP server](https://ui.nuxt.com/docs/getting-started/ai/mcp). If not already configured, add it:
+
+**Cursor** — `.cursor/mcp.json`:
+
+```json
+{ "mcpServers": { "nuxt-ui": { "type": "http", "url": "https://ui.nuxt.com/mcp" } } }
+```
+
+**Claude Code**:
+
+```bash
+claude mcp add --transport http nuxt-ui https://ui.nuxt.com/mcp
+```
+
+Key MCP tools:
+- `search-components` — find components by name, category, or intent (no params = list all)
+- `search-composables` — find composables by name or description (no params = list all)
+- `search-icons` — search Iconify icons (defaults to `lucide`), returns `i-{prefix}-{name}` names
+- `get-component` — full component documentation with usage examples
+- `get-component-metadata` — props, slots, events (lightweight, no docs content)
+- `get-example` — real-world code examples
+
+When you need to know **what a component accepts** or **how its API works**, use the MCP. This skill teaches you **when to use which component** and **how to build well**.
+
+## Core rules (always apply)
+
+1. **Always wrap the app in `UApp`** — required for toasts, tooltips, and programmatic overlays. Accepts a `locale` prop for i18n.
+2. **Always use semantic colors** — `text-default`, `bg-elevated`, `border-muted`, etc. Never use raw Tailwind palette colors like `text-gray-500`.
+3. **Read generated theme files for slot names** — Nuxt: `.nuxt/ui/.ts`, Vue: `node_modules/.nuxt-ui/ui/.ts`. These show every slot, variant, and default class for any component.
+4. **Override priority** (highest wins): `ui` prop / `class` prop → global config → theme defaults.
+5. **Icons use `i-{collection}-{name}` format** — `lucide` is the default collection. Use the MCP `search-icons` tool to find icons, or browse at [icones.js.org](https://icones.js.org).
+
+## How to use this skill
+
+Based on the task, load the relevant reference files **before writing any code**. Don't load everything — only what's needed.
+
+### Reference files
+
+**Guidelines** — design decisions and conventions:
+- [design-system](references/guidelines/design-system.md) — semantic colors, theming, brand customization, variants, the `ui` prop
+- [component-selection](references/guidelines/component-selection.md) — decision matrices: when to use Modal vs Slideover, Select vs SelectMenu, Toast vs Alert, etc.
+- [conventions](references/guidelines/conventions.md) — coding patterns, slot naming, items arrays, composables, keyboard shortcuts
+- [forms](references/guidelines/forms.md) — form validation, field layout, error handling, Standard Schema
+
+**Layouts** — full page structure patterns:
+- [landing](references/layouts/landing.md) — landing pages, blog, changelog, pricing
+- [dashboard](references/layouts/dashboard.md) — admin UI with sidebar and panels
+- [docs](references/layouts/docs.md) — documentation sites with navigation and TOC
+- [chat](references/layouts/chat.md) — AI chat with Vercel AI SDK
+- [editor](references/layouts/editor.md) — rich text editor with toolbars
+
+**Recipes** — complete patterns for common tasks:
+- [data-tables](references/recipes/data-tables.md) — tables with filters, pagination, sorting, selection
+- [auth](references/recipes/auth.md) — login, signup, forgot password forms
+- [overlays](references/recipes/overlays.md) — modals, slideovers, drawers, command palette
+- [navigation](references/recipes/navigation.md) — headers, sidebars, breadcrumbs, tabs
+
+**Quick reference:**
+- [components](references/components.md) — categorized component index for finding the right component name
+
+### Routing table
+
+| Task | Load these references |
+|---|---|
+| Build a landing page | design-system, conventions, landing |
+| Build a dashboard / admin UI | conventions, component-selection, dashboard |
+| Add a settings page | conventions, forms |
+| Create a login / signup form | conventions, forms, auth |
+| Display data in a table | conventions, component-selection, data-tables |
+| Customize theme / brand colors | design-system |
+| Add a chat interface | conventions, chat |
+| Add a modal, slideover, or drawer | conventions, component-selection, overlays |
+| Build site navigation | conventions, component-selection, navigation |
+| Build a documentation site | conventions, docs |
+| Render markdown | component-selection, components, docs |
+| Add a rich text editor | conventions, editor |
+| General UI work | conventions, component-selection |
+
+## Installation
+
+### Nuxt
+
+```bash
+pnpm add @nuxt/ui tailwindcss
+```
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ modules: ['@nuxt/ui'],
+ css: ['~/assets/css/main.css']
+})
+```
+
+```css
+/* app/assets/css/main.css */
+@import "tailwindcss";
+@import "@nuxt/ui";
+```
+
+```vue
+
+
+
+
+
+
+```
+
+### Vue (Vite)
+
+```bash
+pnpm add @nuxt/ui tailwindcss
+```
+
+```ts
+// vite.config.ts
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import ui from '@nuxt/ui/vite'
+
+export default defineConfig({
+ plugins: [
+ vue(),
+ ui()
+ ]
+})
+```
+
+```ts
+// src/main.ts
+import './assets/css/main.css'
+import { createApp } from 'vue'
+import { createRouter, createWebHistory } from 'vue-router'
+import ui from '@nuxt/ui/vue-plugin'
+import App from './App.vue'
+
+const app = createApp(App)
+const router = createRouter({
+ routes: [],
+ history: createWebHistory()
+})
+
+app.use(router)
+app.use(ui)
+app.mount('#app')
+```
+
+```css
+/* src/assets/css/main.css */
+@import "tailwindcss";
+@import "@nuxt/ui";
+```
+
+```vue
+
+
+
+
+
+
+```
+
+> Add `class="isolate"` to your root `` in `index.html`.
+> For Inertia: use `ui({ router: 'inertia' })` in `vite.config.ts`.
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/components.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/components.md
new file mode 100644
index 00000000..6f108bda
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/components.md
@@ -0,0 +1,245 @@
+# Components
+
+Quick-reference index of all 125+ components. For full API docs (props, slots, events, examples), use the MCP `get-component` or `get-component-metadata` tools.
+
+## Layout
+
+| Component | Purpose |
+|---|---|
+| `UApp` | **Required** root wrapper — toasts, tooltips, overlays, i18n |
+| `UHeader` | Responsive header with mobile menu |
+| `UFooter` | Footer with left/right/top/bottom slots |
+| `UFooterColumns` | Multi-column footer with link groups |
+| `UMain` | Main content area |
+| `UContainer` | Centered max-width container |
+| `USplitter` | Resizable panels separated by draggable handles |
+| `ULink` | Enhanced link — NuxtLink/RouterLink with active states |
+
+## Element
+
+| Component | Purpose |
+|---|---|
+| `UButton` | Buttons — links, actions, icons, loading states |
+| `UBadge` | Labels, tags, status indicators |
+| `UAvatar` | User photos, initials, icons |
+| `UAvatarGroup` | Stacked avatars with `max` limit |
+| `UIcon` | Iconify icons (`i-{collection}-{name}`) |
+| `UCard` | Bordered container with header/body/footer |
+| `UAlert` | Inline messages — info, warning, error, success |
+| `UBanner` | App-wide sticky announcement bar |
+| `UChip` | Notification dot overlay on children |
+| `UKbd` | Keyboard key display |
+| `USeparator` | Divider line with optional label |
+| `USkeleton` | Loading placeholder |
+| `UProgress` | Progress bar |
+| `UProgressGroup` | Segmented progress bar with a list of items |
+| `UToast` | Toast notification (shown via `useToast`) |
+| `UCalendar` | Date calendar (single, range, multiple) |
+| `UCollapsible` | Animated expand/collapse |
+| `UFieldGroup` | Group form inputs horizontally |
+| `UMarquee` | Scrolling content ticker |
+| `UCarousel` | Image/content carousel with autoplay |
+| `UEmpty` | Empty state placeholder with icon, title, actions |
+| `UError` | Error display with retry action |
+| `UScrollArea` | Scrollable area with custom scrollbar |
+| `UTimeline` | Timeline display for events and activity |
+| `UUser` | User display — avatar + name + description |
+| `UTheme` | Theme provider — scoped color overrides for children |
+
+## Form
+
+| Component | Purpose |
+|---|---|
+| `UAuthForm` | Pre-built auth form with social providers |
+| `UInput` | Text input — text, email, password, search |
+| `UTextarea` | Multi-line text with autoresize |
+| `USelect` | Native-like dropdown for small lists |
+| `USelectMenu` | Rich searchable dropdown, multi-select, groups |
+| `UInputMenu` | Autocomplete / combobox |
+| `UInputNumber` | Numeric input with +/- controls |
+| `UInputDate` | Date picker with calendar |
+| `UInputTime` | Time picker (12/24h) |
+| `UInputTags` | Tag/chip input |
+| `UPinInput` | Verification code input |
+| `UCheckbox` | Single boolean checkbox |
+| `UCheckboxGroup` | Multiple checkboxes |
+| `URadioGroup` | Radio button group |
+| `USwitch` | Toggle switch |
+| `USlider` | Range slider |
+| `UColorPicker` | Color picker (hex/rgb/hsl) |
+| `UFileUpload` | File upload (button or drop area) |
+| `UForm` | Validation wrapper with Standard Schema |
+| `UFormField` | Field wrapper with label, hint, errors |
+
+## Overlay
+
+| Component | Purpose |
+|---|---|
+| `UModal` | Centered dialog — confirmations, forms |
+| `USlideover` | Side panel — details, editing |
+| `UDrawer` | Bottom sheet — mobile actions |
+| `UPopover` | Contextual popup attached to trigger |
+| `UTooltip` | Hover/focus hint (non-interactive) |
+| `UContextMenu` | Right-click menu |
+| `UCommandPalette` | Search + keyboard navigation (Cmd+K) |
+
+## Navigation
+
+| Component | Purpose |
+|---|---|
+| `USidebar` | Standalone sidebar with header/body/footer |
+| `UNavigationMenu` | Primary nav — horizontal or vertical |
+| `UTabs` | Tab switcher within a page |
+| `UBreadcrumb` | Location hierarchy |
+| `UDropdownMenu` | Action menu on a trigger |
+| `UPagination` | Page navigation |
+| `UStepper` | Multi-step wizard |
+| `UAccordion` | Collapsible sections |
+
+## Data
+
+| Component | Purpose |
+|---|---|
+| `UTable` | Data table (TanStack Table) with sorting, selection, pinning |
+| `UTree` | Hierarchical tree view |
+
+## Dashboard
+
+| Component | Purpose |
+|---|---|
+| `UDashboardGroup` | Root dashboard wrapper |
+| `UDashboardSidebar` | Resizable, collapsible sidebar |
+| `UDashboardPanel` | Content panel with header/body/footer |
+| `UDashboardNavbar` | Panel header bar |
+| `UDashboardToolbar` | Filter/action bar below navbar |
+| `UDashboardResizeHandle` | Resize handle between panels |
+| `UDashboardSidebarToggle` | Mobile sidebar toggle button |
+| `UDashboardSearchButton` | Search button for sidebar |
+| `UDashboardSearch` | Dashboard-level search overlay |
+| `UDashboardSidebarCollapse` | Collapse button for sidebar |
+
+## Page (marketing)
+
+| Component | Purpose |
+|---|---|
+| `UPage` | Multi-column layout with left/right sidebars |
+| `UPageHero` | Hero section — title, description, links, media |
+| `UPageSection` | Content section with features grid |
+| `UPageCTA` | Call to action block |
+| `UPageHeader` | Page title and description |
+| `UPageBody` | Main content area |
+| `UPageGrid` | Card grid layout |
+| `UPageColumns` | Multi-column layout |
+| `UPageCard` | Content card for grids |
+| `UPageFeature` | Feature item |
+| `UPageLogos` | Logo cloud |
+| `UPageAside` | Sticky sidebar wrapper |
+| `UPageAnchors` | Simple anchor links |
+| `UPageLinks` | Related resource links |
+| `UPageList` | List layout for page items |
+
+## Blog & Changelog
+
+| Component | Purpose |
+|---|---|
+| `UBlogPosts` | Blog post grid |
+| `UBlogPost` | Individual post card |
+| `UChangelogVersions` | Changelog list |
+| `UChangelogVersion` | Individual changelog entry |
+
+## Pricing
+
+| Component | Purpose |
+|---|---|
+| `UPricingPlans` | Pricing plan cards |
+| `UPricingPlan` | Individual pricing plan card |
+| `UPricingTable` | Feature comparison table |
+
+## Prose — Base Typography
+
+Standard Markdown elements auto-resolved by Comark/Content/MDC. No `::` prefix needed — they map directly from markdown syntax (`# Heading` → `ProseH1`, `**bold**` → `ProseStrong`, etc.). Themed via `appConfig.ui.prose.
`.
+
+| Component | Renders | Notable |
+|---|---|---|
+| `H1` `H2` `H3` `H4` | Headings | H1–H3 get anchor links + TOC entries |
+| `P` | Paragraph | |
+| `A` | Link | External links get target/rel handling |
+| `Strong` | Bold | |
+| `Em` | Italic | |
+| `Blockquote` | Blockquote | |
+| `Hr` | Horizontal rule | |
+| `Ul` `Ol` `Li` | Lists | Supports nesting and mixed lists |
+| `Table` `Thead` `Tbody` `Tr` `Th` `Td` | Tables | |
+| `Img` | Image | Zoom on click (`:zoom="false"` to disable), `@nuxt/image` support |
+| `Pre` | Code block | Copy button, filename + icon, line highlighting (`{2,4-6}`), diff |
+| `Code` | Inline code | `color` and `lang` props |
+
+## Prose — Feature Components
+
+Nuxt UI-specific Prose components. In markdown files they are used **without the `Prose` prefix** (e.g. `::callout`, `::steps`). In Vue they are referenced as `ProseCallout`, `ProseSteps`, etc. Comark resolves them automatically when `@nuxt/ui` is installed.
+
+Nuxt UI also registers shorthand aliases for `Callout`: `::note`, `::tip`, `::warning`, `::caution` (preset `color` + `icon`).
+
+| Component | Purpose |
+|---|---|
+| `Callout` | Highlighted note/warning/tip (`color`, `icon`, `to`) |
+| `Badge` | Inline badge/tag |
+| `Kbd` | Keyboard key |
+| `Icon` | Inline Iconify icon |
+| `Prompt` | Terminal prompt block |
+| `Card` `CardGroup` | Content card and card grid |
+| `Steps` | Numbered step list (`level` prop sets heading depth) |
+| `Tabs` `TabsItem` | Tabbed content (`sync` for localStorage, `hash` for scroll-on-change) |
+| `Accordion` `AccordionItem` | Collapsible accordion sections |
+| `Collapsible` | Single collapsible section |
+| `Field` `FieldGroup` | Form field display |
+| `CodeGroup` | Tabbed code blocks |
+| `CodeCollapse` | Collapsible code block |
+| `CodeIcon` | File-type icon in code headers |
+| `CodePreview` | Code + live rendered preview side by side |
+| `CodeTree` | File tree display |
+| `Script` | Script injection |
+
+## Content (Nuxt Content)
+
+| Component | Purpose |
+|---|---|
+| `UContentNavigation` | Sidebar navigation from content |
+| `UContentToc` | Table of contents |
+| `UContentSurround` | Prev/next navigation |
+| `UContentSearch` | Search command palette |
+| `UContentSearchButton` | Trigger for content search |
+
+## Chat (AI)
+
+| Component | Purpose |
+|---|---|
+| `UChatMessages` | Scrollable message list |
+| `UChatMessage` | Individual message bubble |
+| `UChatReasoning` | Collapsible AI reasoning block |
+| `UChatTool` | Tool invocation status |
+| `UChatShimmer` | Streaming text animation |
+| `UChatPrompt` | Enhanced textarea for prompts |
+| `UChatPromptSubmit` | Submit button with status |
+| `UChatPalette` | Chat layout for overlays |
+
+## Editor
+
+| Component | Purpose |
+|---|---|
+| `UEditor` | Rich text editor (JSON/HTML/Markdown) |
+| `UEditorToolbar` | Toolbar (fixed/bubble/floating) |
+| `UEditorDragHandle` | Block drag-and-drop |
+| `UEditorSuggestionMenu` | Slash command menu |
+| `UEditorMentionMenu` | @ mention menu |
+| `UEditorEmojiMenu` | Emoji picker |
+
+## Color Mode
+
+| Component | Purpose |
+|---|---|
+| `UColorModeButton` | Toggle button (light/dark) |
+| `UColorModeSwitch` | Toggle switch (light/dark) |
+| `UColorModeSelect` | Dropdown (light/dark/system) |
+| `UColorModeAvatar` | Avatar that changes with color mode |
+| `UColorModeImage` | Image that changes with color mode |
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/component-selection.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/component-selection.md
new file mode 100644
index 00000000..c2d1ce14
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/component-selection.md
@@ -0,0 +1,124 @@
+# Component Selection
+
+Decision matrices for choosing the right component. When in doubt, use the MCP `search-components` tool.
+
+## Overlays
+
+| Need | Component | Why |
+|---|---|---|
+| Confirmation dialog, focused task, form | `UModal` | Blocks page interaction, centered, draws focus |
+| Detail panel, settings, secondary content | `USlideover` | Slides from edge, doesn't feel as interruptive as modal |
+| Mobile-first bottom sheet | `UDrawer` | Natural mobile pattern, swipe to dismiss |
+| Contextual info attached to a trigger | `UPopover` | No backdrop, positioned relative to trigger |
+| Simple hover hint | `UTooltip` | Non-interactive, hover/focus only |
+
+### Rules
+- Use `UModal` for destructive confirmations ("Are you sure you want to delete?")
+- Use `USlideover` for detail views in dashboards (email preview, user profile)
+- Use `UDrawer` for mobile navigation or action sheets
+- Modal and Slideover support `mode="drawer"` for automatic mobile drawer behavior
+- For programmatic overlays, use `useOverlay()` instead of `v-model:open`
+- Never put interactive content (buttons, links) inside `UTooltip`
+
+## Navigation
+
+| Need | Component | Why |
+|---|---|---|
+| Primary site/app navigation | `UNavigationMenu` | Horizontal (header) or vertical (sidebar) |
+| Switch between views on same page | `UTabs` | Content stays on page, no route change needed |
+| Show current location in hierarchy | `UBreadcrumb` | Nested page structures |
+| Search + keyboard-driven navigation | `UCommandPalette` | Power users, global search |
+| Contextual actions on a trigger element | `UDropdownMenu` | Right-click menus, action buttons |
+| Step-by-step process | `UStepper` | Multi-step forms, wizards |
+
+### Rules
+- Use `UNavigationMenu` with `orientation="vertical"` in sidebars, default horizontal in headers
+- Use `UTabs` when switching views that don't need their own URL
+- Use route-based navigation (`to` prop) when views should have shareable URLs
+- `UCommandPalette` is typically opened via `Cmd+K` shortcut — use `defineShortcuts` to wire it up
+
+## Inputs
+
+| Need | Component | Why |
+|---|---|---|
+| Small fixed list (< 10 items) | `USelect` | Native-like, simple, lightweight |
+| Searchable list, multiple selection, groups | `USelectMenu` | Rich dropdown with search, multi-select, grouped items |
+| Autocomplete / combobox (type + select) | `UInputMenu` | User can type freely AND pick from suggestions |
+| Free text entry | `UInput` | Plain text, email, password, search |
+| Multi-line text | `UTextarea` | With `autoresize` and `maxrows` |
+| Numeric value with +/- controls | `UInputNumber` | Min/max/step constraints |
+| Date selection | `UInputDate` | Calendar dropdown, supports ranges |
+| Time selection | `UInputTime` | Hour/minute picker, 12/24 hour |
+| Tags / multi-value free text | `UInputTags` | Chip-style input with max limit |
+| Verification code | `UPinInput` | Fixed-length code entry |
+| Boolean toggle | `USwitch` | On/off, enable/disable |
+| Boolean checkbox | `UCheckbox` | Single option with label |
+| Multiple choices from a list | `UCheckboxGroup` | Multiple selection, vertical or horizontal |
+| Single choice from a list (visible) | `URadioGroup` | All options visible, one selected |
+| Range value | `USlider` | Min/max with visual track |
+| Color value | `UColorPicker` | Hex/RGB/HSL picker |
+| File upload | `UFileUpload` | Button or drop area variants |
+
+### Rules
+- Use `UAuthForm` for login/signup pages — handles fields, social providers, validation, and layout out of the box
+- Use `USelect` for short, known lists (country, status, role)
+- Use `USelectMenu` when the list is long or needs search
+- Use `UInputMenu` when the user might want to type a value that's not in the list
+- Wrap all form inputs in `UFormField` for labels, descriptions, hints, and validation errors
+- Group related inline inputs with `UFieldGroup`
+
+## Feedback
+
+| Need | Component | Why |
+|---|---|---|
+| Ephemeral notification after action | `useToast()` | Auto-dismisses, stacks, non-blocking |
+| Inline persistent message | `UAlert` | Stays visible, in-page context |
+| App-wide announcement | `UBanner` | Sticky top bar, dismissible |
+| Loading state | `USkeleton` | Placeholder shimmer while loading |
+| Progress indicator | `UProgress` | Determinate or indeterminate progress |
+| Breakdown of a total | `UProgressGroup` | One bar split into colored segments that add up to `max` |
+
+### Rules
+- Use `useToast()` for action feedback: "Item saved", "Email sent", "Error occurred"
+- Use `UAlert` for contextual warnings in forms or sections
+- Use `UBanner` for site-wide messages (maintenance, new feature)
+- Never use a toast for information the user needs to act on — use an alert or modal instead
+
+## Markdown
+
+When rendering Markdown (for instance with Comark), **prefer Prose components** — they are styled and tuned for Markdown contexts. Generic Nuxt UI components can also be used. `` (or ``) auto-resolves `ProseX` components when `@nuxt/ui` is installed. In Markdown, the `Prose` prefix can be omitted (`::callout`, `::steps`, etc.).
+
+| Need | Use | Not |
+|---|---|---|
+| Note / warning / tip | `Callout` | `UAlert` |
+| Tabbed content | `Tabs` + `TabsItem` | `UTabs` |
+| Step-by-step list | `Steps` | custom list |
+| Content card grid | `Card` + `CardGroup` | `UCard` |
+| Collapsible section | `Collapsible` / `Accordion` | `UCollapsible` / `UAccordion` |
+| Tabbed code blocks | `CodeGroup` | manual tabs |
+
+### Rules
+- Prose components use native Vue slots — Comark maps named `#slot` blocks directly to ``
+- Theme via `appConfig.ui.prose.` using the same override pattern as other Nuxt UI components
+- `Callout` colors: `neutral` (default), `primary`, `secondary`, `info`, `success`, `warning`, `error`
+
+## Layout containers
+
+| Need | Component | Why |
+|---|---|---|
+| Grouped content with header/body/footer | `UCard` | Bordered/shadow container with slots |
+| Rich content card with icon, badge, links | `UPageCard` | Extended card for grids — supports icon, badge, highlight, links |
+| Marketing page section | `UPageSection` | Full-width section with headline, title, features |
+| Page hero | `UPageHero` | Title + description + links + optional media |
+| Call to action | `UPageCTA` | Highlighted section with action links |
+| Feature grid | `UPageGrid` + `UPageCard` | Multi-column card grid |
+| Centered content wrapper | `UContainer` | Max-width container |
+| Collapsible section | `UCollapsible` | Animated expand/collapse |
+| Accordion (multiple collapsibles) | `UAccordion` | FAQ, grouped collapsible content |
+| Resizable side-by-side panes | `USplitter` | IDE-style layouts, resizable sidebars |
+
+### Rules
+- Don't overuse `UCard` — plain content with spacing is often better than wrapping everything in cards
+- Use `UPageCard` instead of `UCard` when you need icon, badge, highlight, or links — it's designed for feature grids and landing pages
+- Use `UPageSection` for marketing/landing page sections, not for app UI
+- Use `UContainer` inside `UDashboardPanel` body for consistent content width
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/conventions.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/conventions.md
new file mode 100644
index 00000000..c1aa29eb
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/conventions.md
@@ -0,0 +1,376 @@
+# Conventions
+
+Coding patterns specific to Nuxt UI.
+
+## Auto-registered modules
+
+Nuxt UI automatically registers `@nuxt/icon`, `@nuxt/fonts`, and `@nuxtjs/color-mode`. Do **not** add them to your `modules` array. Configure them via root-level keys in `nuxt.config.ts`:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ modules: ['@nuxt/ui'],
+ icon: { /* @nuxt/icon options */ },
+ fonts: { /* @nuxt/fonts options */ },
+ colorMode: { /* @nuxtjs/color-mode options */ }
+})
+```
+
+Disable any of them: `ui: { fonts: false }`, `ui: { colorMode: false }`.
+
+## Content module integration
+
+When using `@nuxt/content`, it **must** come after `@nuxt/ui` in the `modules` array — otherwise prose components won't be available:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ modules: ['@nuxt/ui', '@nuxt/content']
+})
+```
+
+Add `@source` in your CSS so Tailwind generates classes used in markdown/MDC:
+
+```css
+/* app/assets/css/main.css */
+@import "tailwindcss";
+@import "@nuxt/ui";
+
+@source "../../../content/**/*";
+```
+
+Use `mapContentNavigation` to transform content navigation for components like `UBreadcrumb`:
+
+```ts
+import { mapContentNavigation } from '@nuxt/ui/utils/content'
+import { findPageBreadcrumb } from '@nuxt/content/utils'
+
+const breadcrumb = computed(() =>
+ mapContentNavigation(findPageBreadcrumb(navigation.value, page.value?.path))
+)
+```
+
+## IDE setup
+
+Recommended `.vscode/settings.json` for Tailwind IntelliSense autocomplete with Nuxt UI:
+
+```json
+{
+ "files.associations": { "*.css": "tailwindcss" },
+ "editor.quickSuggestions": { "strings": "on" },
+ "tailwindCSS.classAttributes": ["class", "ui"],
+ "tailwindCSS.classFunctions": ["defineAppConfig"]
+}
+```
+
+## UApp wrapper
+
+Always wrap your app in `UApp` — it provides:
+- Toast container (`useToast`)
+- Tooltip provider
+- Programmatic overlay context (`useOverlay`)
+- i18n locale support
+
+```vue
+
+
+
+```
+
+## Icons
+
+Nuxt UI registers `@nuxt/icon` automatically. Format: `i-{collection}-{name}`. Prefer `lucide` collection.
+
+```vue
+
+
+
+```
+
+Install collections locally for reliable SSR and best performance:
+
+```bash
+pnpm i @iconify-json/lucide
+pnpm i @iconify-json/simple-icons
+```
+
+Custom local collections (Nuxt only):
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ icon: {
+ customCollections: [{
+ prefix: 'custom',
+ dir: './app/assets/icons'
+ }]
+ }
+})
+```
+
+### Default icon overrides
+
+Components like `Modal`, `Select`, `Accordion`, etc. use default icons from `appConfig.ui.icons`. Override them globally:
+
+```ts
+// app.config.ts
+export default defineAppConfig({
+ ui: {
+ icons: {
+ loading: 'i-lucide-refresh-cw',
+ close: 'i-lucide-x',
+ check: 'i-lucide-check',
+ chevronDown: 'i-lucide-chevron-down',
+ chevronRight: 'i-lucide-chevron-right',
+ arrowLeft: 'i-lucide-arrow-left',
+ arrowRight: 'i-lucide-arrow-right'
+ }
+ }
+})
+```
+
+## Slot patterns
+
+Most components follow consistent slot naming:
+
+| Slot | Used by | Purpose |
+|---|---|---|
+| `#header` | Card, Modal, Slideover, DashboardPanel | Top section |
+| `#body` | DashboardPanel | Scrollable content area |
+| `#footer` | Card, Modal, Slideover, DashboardPanel | Bottom section |
+| `#left` | Page, DashboardNavbar | Left sidebar or content |
+| `#right` | Page, DashboardNavbar, Header | Right sidebar or content |
+| `#leading` | Input, Button, Alert | Before main content (icon area) |
+| `#trailing` | Input, Button | After main content (icon area) |
+| `#content` | Modal, Slideover, Popover, Tooltip | Full content override |
+| `#default` | Most components | Main content area |
+
+## Items arrays
+
+Many components accept an `items` prop. Two patterns:
+
+**Flat array** — plain list:
+
+```ts
+const items = [
+ { label: 'Edit', icon: 'i-lucide-pencil' },
+ { label: 'Delete', icon: 'i-lucide-trash', color: 'error' }
+]
+```
+
+**Nested array** — groups with automatic separators between them:
+
+```ts
+const items = [
+ [
+ { label: 'Edit', icon: 'i-lucide-pencil' },
+ { label: 'Duplicate', icon: 'i-lucide-copy' }
+ ],
+ [
+ { label: 'Delete', icon: 'i-lucide-trash', color: 'error' }
+ ]
+]
+```
+
+Components supporting nested arrays: `UDropdownMenu`, `UContextMenu`, `UCommandPalette`, `UNavigationMenu`.
+
+## Composables
+
+### useToast
+
+```ts
+const toast = useToast()
+
+toast.add({
+ title: 'Success',
+ description: 'Item saved',
+ color: 'success',
+ icon: 'i-lucide-check-circle',
+ duration: 5000,
+ actions: [{ label: 'Undo', onClick: () => {} }]
+})
+
+toast.remove('toast-id')
+toast.clear()
+```
+
+### useOverlay
+
+Programmatic modals, slideovers, drawers — no template `v-model` needed. See [overlays recipe](../recipes/overlays.md) for full patterns.
+
+```ts
+const overlay = useOverlay()
+const modal = overlay.create(MyComponent)
+const instance = modal.open({ title: 'Confirm?' })
+if (await instance.result) { /* confirmed */ }
+```
+
+### defineShortcuts
+
+```ts
+defineShortcuts({
+ meta_k: () => openSearch(),
+ escape: () => close(),
+ meta_enter: {
+ handler: () => submit(),
+ whenever: [isFormValid]
+ }
+})
+```
+
+Keys: `meta` (Cmd/Ctrl), `ctrl`, `alt`, `shift`. Separator: `_`.
+
+### extractShortcuts
+
+Wire up keyboard shortcuts from menu items:
+
+```ts
+const items = [
+ { label: 'New file', kbds: ['meta', 'n'], onSelect: () => newFile() },
+ { label: 'Save', kbds: ['meta', 's'], onSelect: () => save() }
+]
+
+defineShortcuts(extractShortcuts(items))
+```
+
+### Internationalization (i18n)
+
+Nuxt UI supports 50+ locales. Set the locale on `UApp` — all components inherit it.
+
+#### Static locale
+
+```vue
+
+
+
+
+
+
+
+```
+
+#### Extend a built-in locale
+
+`extendLocale` is auto-imported. Override specific messages or the `code` (affects date/time formatting in Calendar, InputDate, InputTime):
+
+```ts
+import { en } from '@nuxt/ui/locale'
+
+const locale = extendLocale(en, {
+ code: 'en-AU',
+ messages: {
+ commandPalette: { placeholder: 'Search a component...' }
+ }
+})
+```
+
+#### Custom locale from scratch
+
+```ts
+import type { Messages } from '@nuxt/ui'
+
+const locale = defineLocale({
+ name: 'My locale',
+ code: 'en',
+ dir: 'ltr',
+ messages: {
+ // all component message keys
+ }
+})
+```
+
+#### Dynamic locale with @nuxtjs/i18n
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ modules: ['@nuxt/ui', '@nuxtjs/i18n'],
+ i18n: {
+ locales: [
+ { code: 'en', name: 'English' },
+ { code: 'fr', name: 'Français' },
+ { code: 'ar', name: 'العربية' }
+ ]
+ }
+})
+```
+
+```vue
+
+
+
+
+
+
+
+```
+
+Each locale has a `dir` property (`'ltr'` or `'rtl'`). `UApp` uses it to set directionality on all components. Use `useHead` to propagate `lang` and `dir` to the `` element.
+
+## Color mode
+
+Nuxt UI registers `@nuxtjs/color-mode` automatically. Built-in components for switching:
+- `UColorModeButton` — single button toggle (light/dark)
+- `UColorModeSwitch` — toggle switch
+- `UColorModeSelect` — dropdown with system/light/dark options
+- `UColorModeAvatar` — displays different avatar per mode
+- `UColorModeImage` — displays different image per mode
+
+For custom color mode UI, use `useColorMode` with `ClientOnly` to avoid hydration mismatch:
+
+```vue
+
+
+
+
+
+
+
+
+
+
+```
+
+## Official templates
+
+Bootstrap a project from a template instead of starting from scratch:
+
+```bash
+npx nuxi@latest init -t ui # Starter
+npx nuxi@latest init -t ui/dashboard # Dashboard
+npx nuxi@latest init -t ui/docs # Docs (Nuxt Content)
+npx nuxi@latest init -t ui/landing # Landing page
+npx nuxi@latest init -t ui/saas # SaaS (landing + pricing + docs + blog)
+npx nuxi@latest init -t ui/chat # AI chat (Vercel AI SDK)
+npx nuxi@latest init -t ui/editor # Rich text editor
+npx nuxi@latest init -t ui/portfolio # Portfolio
+npx nuxi@latest init -t ui/changelog # Changelog
+npx nuxi@latest init -t ui/calendar # Calendar
+```
+
+## Responsive patterns
+
+- Dashboard sidebar hides on mobile, shows a slideover/drawer via `UDashboardSidebar` `mode` prop
+- `UHeader` body slot is the mobile menu content (shown when hamburger is tapped)
+- Most components handle responsiveness automatically — avoid manual breakpoint classes unless needed
+- Use `UPageAside` for sidebars that should hide below `lg` breakpoint
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/design-system.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/design-system.md
new file mode 100644
index 00000000..561dc411
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/design-system.md
@@ -0,0 +1,378 @@
+# Design System
+
+## Semantic colors
+
+Nuxt UI uses 7 semantic colors. Never use raw Tailwind palette colors in components — always use these semantic names.
+
+| Color | Default | When to use |
+|---|---|---|
+| `primary` | green | CTAs, active states, brand accent, links |
+| `secondary` | blue | Secondary actions, complementary highlights |
+| `success` | green | Success messages, confirmations, positive states |
+| `info` | blue | Informational alerts, tips, neutral highlights |
+| `warning` | yellow | Warnings, caution states, pending actions |
+| `error` | red | Errors, destructive actions, validation failures |
+| `neutral` | slate | Text, borders, backgrounds, disabled states, chrome |
+
+### Choosing colors for components
+
+- **Primary action** on a page (submit, save, confirm) → `color="primary"`
+- **Secondary actions** (cancel, back, alternative) → `color="neutral"` with `variant="outline"` or `"ghost"`
+- **Destructive actions** (delete, remove) → `color="error"`
+- **Status indicators** → match the semantic meaning: `success`, `warning`, `error`, `info`
+- **Navigation and chrome** → `color="neutral"`
+
+### Configuring colors
+
+```ts
+// Nuxt — app.config.ts
+export default defineAppConfig({
+ ui: {
+ colors: {
+ primary: 'indigo',
+ secondary: 'violet',
+ success: 'emerald',
+ error: 'rose',
+ neutral: 'zinc'
+ }
+ }
+})
+```
+
+```ts
+// Vue — vite.config.ts
+ui({
+ ui: {
+ colors: { primary: 'indigo', secondary: 'violet', neutral: 'zinc' }
+ }
+})
+```
+
+Only colors that exist in your theme work — either Tailwind's defaults or custom colors defined with `@theme`.
+
+Available color palettes:
+- **Standard Tailwind**: red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose
+- **Neutral palettes** (for `neutral` key — pick one that matches the aesthetic):
+ - `slate` — cool blue-gray, professional (default)
+ - `gray` — true neutral, clean
+ - `zinc` — slightly cool, modern, techy
+ - `neutral` — perfectly balanced
+ - `stone` — warm gray, earthy
+ - `taupe` — warm brown-gray, sophisticated
+ - `mauve` — purple-tinted gray, elegant
+ - `mist` — soft blue-gray, airy
+ - `olive` — green-tinted gray, natural
+
+### Adding custom brand colors
+
+1. Define all 11 shades in CSS:
+
+```css
+/* app/assets/css/main.css */
+@theme static {
+ --color-brand-50: #fef2f2;
+ --color-brand-100: #fee2e2;
+ --color-brand-200: #fecaca;
+ --color-brand-300: #fca5a5;
+ --color-brand-400: #f87171;
+ --color-brand-500: #ef4444;
+ --color-brand-600: #dc2626;
+ --color-brand-700: #b91c1c;
+ --color-brand-800: #991b1b;
+ --color-brand-900: #7f1d1d;
+ --color-brand-950: #450a0a;
+}
+```
+
+2. Assign it: `ui: { colors: { primary: 'brand' } }`
+
+### Extending with new semantic color names
+
+To add a color beyond the 7 defaults (e.g., `tertiary`), register it in `theme.colors`:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ ui: {
+ theme: {
+ colors: ['primary', 'secondary', 'tertiary', 'info', 'success', 'warning', 'error']
+ }
+ }
+})
+```
+
+## Semantic utility classes
+
+Use these everywhere instead of raw palette colors:
+
+### Text
+- `text-default` — primary body text
+- `text-muted` — secondary text (descriptions, hints)
+- `text-toned` — medium-emphasis text (between muted and default)
+- `text-dimmed` — tertiary text (placeholders, disabled)
+- `text-highlighted` — emphasized text (headings, important labels)
+- `text-inverted` — text on inverted backgrounds (pair with `bg-inverted`)
+
+### Backgrounds
+- `bg-default` — page background
+- `bg-muted` — subtle backgrounds (hover states, alternating rows)
+- `bg-elevated` — raised surfaces (cards, dropdowns)
+- `bg-accented` — accent backgrounds (active states, selected items)
+- `bg-inverted` — inverse background (dark on light, light on dark)
+
+### Borders
+- `border-default` — standard borders
+- `border-muted` — subtle borders (dividers, separators)
+- `border-accented` — accent borders (active states)
+- `border-inverted` — inverse borders
+
+## Variants
+
+Most components accept a `variant` prop. Choose based on visual weight:
+
+| Variant | Weight | When to use |
+|---|---|---|
+| `solid` | Highest | Primary actions, main CTAs |
+| `outline` | Medium | Secondary actions, form fields |
+| `soft` | Medium-low | Tags, badges, subtle buttons |
+| `subtle` | Low | Background highlights, less prominent actions |
+| `ghost` | Lowest | Inline actions, icon buttons, navigation items |
+| `link` | Lowest | Text-only links inside content |
+
+### Rules
+
+- **One solid primary button per view** — everything else should be lower weight
+- **Destructive buttons** use `color="error"` but not necessarily `variant="solid"` — use `variant="soft"` or `"outline"` unless it's the primary action on a confirmation dialog
+- **Button groups** should use consistent variants — don't mix `solid` and `outline` siblings
+
+## Customizing components
+
+### `ui` prop
+
+Override theme **slots** on a single instance — wins over global config and variants.
+
+```vue
+
+
+```
+
+Rules for `ui` overrides:
+- **Prefer `defaultVariants`** over slot class overrides when possible (e.g., changing default button variant/size).
+- **Don't duplicate default classes** — check the generated theme file first to see what's already there.
+- Border radius defaults come from `--ui-radius`, but you can override with `rounded-*` classes in `ui` or `class` when you need a specific radius on a component.
+
+### `class` prop
+
+Override the **root** (or `base`) slot only — simpler than `ui` for single-slot changes.
+
+```vue
+
+```
+
+### Finding slot names
+
+Read the generated theme file for any component:
+- **Nuxt**: `.nuxt/ui/.ts`
+- **Vue**: `node_modules/.nuxt-ui/ui/.ts`
+
+These files show every available slot name, variant combination, and default class.
+
+### Global config
+
+Override `slots`, `variants`, `compoundVariants`, and `defaultVariants` globally in `app.config.ts` (Nuxt) or `vite.config.ts` (Vue):
+
+```ts
+// Nuxt — app.config.ts
+export default defineAppConfig({
+ ui: {
+ button: {
+ slots: {
+ base: 'font-bold'
+ },
+ compoundVariants: [{
+ color: 'neutral',
+ variant: 'outline',
+ class: 'ring-default hover:bg-accented'
+ }],
+ defaultVariants: {
+ color: 'neutral',
+ variant: 'outline'
+ }
+ }
+ }
+})
+```
+
+Tailwind Variants uses `tailwind-merge` under the hood — conflicting classes are resolved automatically.
+
+### Replace instead of merge
+
+Classes from the `ui` prop, the `class` prop, and global config are merged onto the component defaults. To replace them instead, set the slot to a function, which receives the default classes as its argument so you can reuse part of them.
+
+In global config it replaces the slot's own classes, so `variants` and `compoundVariants` still apply on top. In the `ui` and `class` props it runs after the variants, so it replaces the resolved classes, variants included.
+
+```vue
+
+```
+
+```ts
+// app.config.ts, applies to every instance
+export default defineAppConfig({
+ ui: {
+ button: {
+ slots: {
+ label: () => 'text-base font-bold'
+ }
+ }
+ }
+})
+```
+
+### Theme component
+
+Override theme for a section of the component tree without affecting the rest of the app. Renders no DOM element — uses `provide`/`inject`:
+
+```vue
+
+
+
+
+```
+
+### Global `defaultVariants`
+
+Override default `size` and `color` for **all** components at once:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ ui: {
+ theme: {
+ defaultVariants: {
+ size: 'lg',
+ color: 'neutral'
+ }
+ }
+ }
+})
+```
+
+### `theme.transitions`
+
+Controls whether interactive components get `transition-colors`. Enabled by default.
+
+```ts
+// nuxt.config.ts — disable transitions
+export default defineNuxtConfig({
+ ui: {
+ theme: {
+ transitions: false
+ }
+ }
+})
+```
+
+### `theme.prefix`
+
+When using Tailwind CSS with a prefix, configure the same prefix in Nuxt UI so component classes match:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ ui: {
+ theme: {
+ prefix: 'tw'
+ }
+ }
+})
+```
+
+```css
+/* app/assets/css/main.css */
+@import "tailwindcss" prefix(tw);
+@import "@nuxt/ui";
+```
+
+### Tree-shaking with `experimental.componentDetection`
+
+Enable automatic component detection to only generate CSS for components you actually use:
+
+```ts
+// nuxt.config.ts
+export default defineNuxtConfig({
+ ui: {
+ experimental: {
+ componentDetection: true
+ }
+ }
+})
+```
+
+For dynamic components (e.g., ``), pass an array of component names to guarantee they're included:
+
+```ts
+componentDetection: ['Modal', 'Dropdown', 'Popover']
+```
+
+## CSS `@theme` customization
+
+Customize Tailwind design tokens in `main.css`:
+
+### Fonts
+
+```css
+@theme {
+ --font-sans: 'Public Sans', system-ui, sans-serif;
+ --font-mono: 'JetBrains Mono', monospace;
+}
+```
+
+In Nuxt, fonts defined here are automatically loaded by `@nuxt/fonts`.
+
+### Breakpoints
+
+```css
+@theme {
+ --breakpoint-3xl: 1920px;
+}
+```
+
+## CSS variables
+
+Nuxt UI exposes CSS variables you can override in `main.css`:
+
+```css
+:root {
+ --ui-radius: 0.25rem;
+ --ui-container: 80rem;
+ --ui-header-height: 4rem;
+}
+```
+
+### Color shade overrides
+
+Each semantic color defaults to shade 500 in light mode, 400 in dark mode. Override per-mode:
+
+```css
+:root {
+ --ui-primary: var(--ui-color-primary-700);
+}
+.dark {
+ --ui-primary: var(--ui-color-primary-200);
+}
+```
+
+You can use `var(--ui-color--)` to reference shades from the active palette (e.g., `var(--ui-color-neutral-800)` maps to whichever neutral palette is configured).
+
+### Black/white as primary
+
+`black` and `white` have no shades, so they can't be used in config. Set them directly:
+
+```css
+:root {
+ --ui-primary: black;
+}
+.dark {
+ --ui-primary: white;
+}
+```
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/forms.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/forms.md
new file mode 100644
index 00000000..2a3eda14
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/guidelines/forms.md
@@ -0,0 +1,233 @@
+# Forms
+
+## Basic pattern
+
+Nuxt UI forms use `UForm` + `UFormField` + Standard Schema validation (Zod, Valibot, Yup, or Joi).
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Key rules
+
+- Always use `UFormField` around inputs — it connects validation errors via the `name` prop
+- The `name` prop on `UFormField` must match the schema field name exactly
+- Use `reactive>({})` for state — `Partial` allows empty initial values
+- `@submit` only fires when validation passes
+- For nested objects, use dot notation: `name="address.city"`
+
+## UFormField props
+
+| Prop | Purpose |
+|---|---|
+| `name` | Links to schema field for validation errors |
+| `label` | Visible label text |
+| `description` | Help text below the input |
+| `hint` | Right-aligned hint text (e.g., "Optional") |
+| `required` | Shows required indicator |
+| `size` | Inherits to child input |
+
+## Field layout patterns
+
+### Vertical stack (default)
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+### Inline fields with UFieldGroup
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+### Grid layout
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Common field patterns
+
+### Select
+
+```vue
+
+
+
+```
+
+### Checkbox
+
+```vue
+
+
+
+```
+
+### Radio group
+
+```vue
+
+
+
+```
+
+### Switch
+
+```vue
+
+
+
+```
+
+### Textarea
+
+```vue
+
+
+
+```
+
+### File upload
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+### Date
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+## Programmatic validation
+
+```vue
+
+
+
+
+
+
+
+```
+
+## Form in a modal
+
+Use `#footer="{ close }"` scoped slot for cancel/submit actions. Wrap the modal body in `UForm` with a `type="submit"` button in the footer so validation runs on submit.
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/chat.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/chat.md
new file mode 100644
index 00000000..5ba3b6c8
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/chat.md
@@ -0,0 +1,263 @@
+# Chat Layout
+
+Build AI chat interfaces with message streams, reasoning, tool calling, and Vercel AI SDK integration.
+
+## When to use
+
+- AI chatbot interfaces
+- Customer support chat
+- Any conversational UI with streaming responses
+
+## Setup
+
+### Install dependencies
+
+**Nuxt:**
+
+```bash
+pnpm add ai @ai-sdk/gateway @ai-sdk/vue @comark/nuxt
+```
+
+**Vue (Vite):**
+
+```bash
+pnpm add ai @ai-sdk/gateway @ai-sdk/vue @comark/vue
+```
+
+### Register Comark module
+
+**Nuxt:**
+
+```ts [nuxt.config.ts]
+export default defineNuxtConfig({
+ modules: [
+ '@nuxt/ui',
+ '@comark/nuxt'
+ ]
+})
+```
+
+**Vue (Vite):** No module registration needed, import directly from `@comark/vue`.
+
+> `@comark/nuxt` (or `@comark/vue` for Vue projects) provides the `Comark` component used to render AI responses as streaming Markdown, it incrementally renders tokens as they arrive and automatically enables Nuxt UI's prose components.
+
+### Dark mode for syntax highlighting
+
+When using the `highlight` plugin, add the following CSS to your stylesheet:
+
+```css [main.css]
+html.dark .shiki span {
+ color: var(--shiki-dark) !important;
+ background-color: var(--shiki-dark-bg) !important;
+ font-style: var(--shiki-dark-font-style) !important;
+ font-weight: var(--shiki-dark-font-weight) !important;
+ text-decoration: var(--shiki-dark-text-decoration) !important;
+}
+```
+
+### Server endpoint
+
+Using [Vercel AI Gateway](https://vercel.com/ai-gateway) (recommended):
+
+```ts [server/api/chat.post.ts]
+import { streamText, convertToModelMessages, toUIMessageStream, createUIMessageStreamResponse } from 'ai'
+import { gateway } from '@ai-sdk/gateway'
+
+export default defineEventHandler(async (event) => {
+ const { messages } = await readBody(event)
+
+ const result = streamText({
+ model: gateway('anthropic/claude-sonnet-5'),
+ instructions: 'You are a helpful assistant.',
+ messages: await convertToModelMessages(messages)
+ })
+
+ const stream = toUIMessageStream({ stream: result.stream })
+ return createUIMessageStreamResponse({ stream })
+})
+```
+
+Or with a direct provider (e.g., `pnpm add @ai-sdk/openai`):
+
+```ts [server/api/chat.post.ts]
+import { streamText, convertToModelMessages, toUIMessageStream, createUIMessageStreamResponse } from 'ai'
+import { openai } from '@ai-sdk/openai'
+
+export default defineEventHandler(async (event) => {
+ const { messages } = await readBody(event)
+
+ const result = streamText({
+ model: openai('gpt-5-nano'),
+ instructions: 'You are a helpful assistant.',
+ messages: await convertToModelMessages(messages)
+ })
+
+ const stream = toUIMessageStream({ stream: result.stream })
+ return createUIMessageStreamResponse({ stream })
+})
+```
+
+## Component tree
+
+```
+UDashboardPanel
+├── #header → UDashboardNavbar
+├── #body → UContainer → UChatMessages
+│ ├── #content → UChatReasoning, UChatTool, Comark
+│ └── #indicator (loading)
+└── #footer → UContainer → UChatPrompt
+ └── UChatPromptSubmit
+```
+
+## Full page chat
+
+```vue [pages/chat/[id].vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ part.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Key components
+
+- `UChatMessages` — scrollable message list with auto-scroll. Props: `messages`, `status`. Slots: `#content` (per message), `#actions`, `#indicator`.
+- `UChatMessage` — individual bubble. Props: `message`, `side` (`'left'`/`'right'`).
+- `UChatReasoning` — collapsible reasoning block. Auto-opens during streaming, auto-closes when done. Use `isPartStreaming(part)` from `@nuxt/ui/utils/ai`.
+- `UChatTool` — tool invocation status. Use `isToolStreaming(part)`. Variants: `'inline'` (default), `'card'`.
+- `UChatPrompt` — enhanced textarea. Accepts all Textarea props + `error` prop.
+- `UChatPromptSubmit` — submit button with automatic status handling (send/stop/reload).
+- `UChatPalette` — layout wrapper for chat inside overlays.
+
+## Chat in a modal
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## With model selector
+
+```vue
+
+
+
+
+
+
+
+```
+
+## Conversation sidebar
+
+Combine with dashboard layout for a ChatGPT-like interface:
+
+```vue [layouts/dashboard.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/dashboard.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/dashboard.md
new file mode 100644
index 00000000..10d99548
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/dashboard.md
@@ -0,0 +1,233 @@
+# Dashboard Layout
+
+Build admin interfaces with resizable sidebars, multi-panel layouts, and toolbars.
+
+## When to use
+
+- Admin panels, back-office UIs
+- Email clients, project management tools
+- Any app with a persistent sidebar and content panels
+- Combine with chat or editor layouts for specialized dashboards
+
+## Component tree
+
+```
+UApp
+└── NuxtLayout (dashboard)
+ └── UDashboardGroup
+ ├── UDashboardSidebar
+ │ ├── #header (logo, search button)
+ │ ├── #default (navigation) — receives { collapsed } slot prop
+ │ └── #footer (user menu)
+ └── NuxtPage
+ └── UDashboardPanel
+ ├── #header → UDashboardNavbar + UDashboardToolbar
+ ├── #body (scrollable content)
+ └── #footer (optional)
+```
+
+## Layout
+
+```vue [layouts/dashboard.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Page
+
+```vue [pages/dashboard/index.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### Common mistakes
+
+- Forgetting `definePageMeta({ layout: 'dashboard' })` — the page won't use the dashboard layout without it.
+- Putting content directly in `UDashboardPanel` without using `#body` slot — content won't scroll properly.
+- Not handling the `collapsed` slot prop — sidebar content should adapt when collapsed (hide labels, center icons).
+
+## Key components
+
+### DashboardGroup
+
+Root wrapper. Manages sidebar state and persistence.
+
+| Prop | Default | Purpose |
+|---|---|---|
+| `storage` | `'cookie'` | `'cookie'`, `'localStorage'`, `false` |
+| `storage-key` | `'dashboard'` | Storage key name |
+
+### DashboardSidebar
+
+Resizable, collapsible sidebar. Must be inside `DashboardGroup`.
+
+| Prop | Default | Purpose |
+|---|---|---|
+| `resizable` | `false` | Drag to resize |
+| `collapsible` | `false` | Collapse when dragged to edge |
+| `side` | `'left'` | `'left'` or `'right'` |
+| `mode` | `'slideover'` | Mobile: `'modal'`, `'slideover'`, `'drawer'` |
+
+All slots receive `{ collapsed, collapse }` — `collapsed` is the boolean state, `collapse(value)` toggles it programmatically. Use `v-model:collapsed` and `v-model:open` (mobile) for state control.
+
+### DashboardPanel
+
+Content panel with `#header`, `#body` (scrollable), `#footer`, and `#default` (raw, no scroll) slots.
+
+### DashboardNavbar / DashboardToolbar
+
+Navbar: `#leading`, `#left`, `#default`, `#right` slots + `title` prop. Use `UDashboardSidebarCollapse` in `#leading` to toggle sidebar on mobile.
+Toolbar: same slots, sits below navbar for filters/actions.
+
+### UNavigationMenu in sidebar
+
+Always pass `:collapsed="collapsed"` to `UNavigationMenu` inside a collapsible sidebar — it auto-hides labels and centers icons. Use `NavigationMenuItem[][]` (array of arrays) for separate groups (main nav + footer links).
+
+## Multi-panel (list-detail)
+
+```vue [pages/dashboard/inbox.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## With toolbar
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## With search
+
+```vue [layouts/dashboard.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Right sidebar
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/docs.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/docs.md
new file mode 100644
index 00000000..e539897e
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/docs.md
@@ -0,0 +1,152 @@
+# Docs Layout
+
+Build documentation sites with sidebar navigation, table of contents, and surround links.
+
+## When to use
+
+- Technical documentation sites
+- Knowledge bases, help centers
+- Any content-heavy site with hierarchical navigation
+
+> Requires `@nuxt/content` — see [conventions](../guidelines/conventions.md#content-module-integration) for setup (module order + `@source`).
+
+## Component tree
+
+```
+UApp
+├── UHeader
+├── UMain
+│ └── NuxtLayout (docs)
+│ └── UPage
+│ ├── #left → UPageAside → UContentNavigation
+│ └── NuxtPage
+│ ├── UPageHeader
+│ ├── UPageBody → ContentRenderer + UContentSurround
+│ └── #right → UContentToc
+└── UFooter
+```
+
+## App shell
+
+```vue [app.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Layout
+
+```vue [layouts/docs.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Page
+
+```vue [pages/docs/[...slug].vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### How nesting works
+
+The outer `UPage` in the layout handles the **left sidebar**. The inner `UPage` in the page handles the **right sidebar**. They nest correctly — this is intentional.
+
+### Common mistakes
+
+- Not providing navigation via `provide`/`inject` — the layout needs it from the app shell.
+- Forgetting `UContentSearch` in app.vue — search won't work without it.
+- Using `UContentSearchButton` without `UContentSearch` — the button opens search, but the search component must exist.
+
+## Key components
+
+- `UPage` — multi-column grid with `#left`, `#default`, `#right` slots
+- `UPageAside` — sticky sidebar wrapper (visible from `lg` breakpoint)
+- `UContentNavigation` — sidebar navigation tree from Nuxt Content
+- `UContentToc` — table of contents from page headings
+- `UContentSurround` — prev/next links
+- `UContentSearch` / `UContentSearchButton` — search command palette
+- `UPageAnchors` — simpler alternative to full TOC
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/editor.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/editor.md
new file mode 100644
index 00000000..eb224a66
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/editor.md
@@ -0,0 +1,153 @@
+# Editor Layout
+
+Build a rich text editor with toolbars, slash commands, mentions, and drag-and-drop.
+
+## When to use
+
+- Note-taking apps, CMS editors
+- Collaborative editing interfaces
+- Any rich text editing need (supports JSON, HTML, and Markdown)
+
+## Component tree
+
+```
+UEditor
+├── UEditorToolbar (fixed / bubble / floating)
+├── UEditorDragHandle
+├── UEditorSuggestionMenu
+├── UEditorMentionMenu
+└── UEditorEmojiMenu
+```
+
+## Basic editor
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
+
+> If you encounter prosemirror-related errors, add prosemirror packages to `vite.optimizeDeps.include` in `nuxt.config.ts`.
+
+## Key components
+
+- `UEditor` — rich text editor. `v-model` accepts JSON (default), HTML, or Markdown via `content-type` prop. Default slot provides `{ editor, handlers }` — `editor` is the Tiptap instance, `handlers` contains action functions for toolbar/menus.
+- `UEditorToolbar` — toolbar with `layout`: `'fixed'` (default), `'bubble'` (on selection), `'floating'` (on empty lines).
+- `UEditorDragHandle` — block drag-and-drop handle.
+- `UEditorSuggestionMenu` — slash command menu (type `/` to open).
+- `UEditorMentionMenu` — `@` mention menu.
+- `UEditorEmojiMenu` — emoji picker (type `:` to open).
+
+## Toolbar modes
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+## Content types
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+## With document sidebar
+
+Combine with Dashboard layout for a multi-document editor:
+
+```vue [layouts/editor.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```vue [pages/editor/[id].vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/landing.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/landing.md
new file mode 100644
index 00000000..a0d231ad
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/layouts/landing.md
@@ -0,0 +1,185 @@
+# Landing Page Layout
+
+Build public-facing pages — landing, blog, changelog, pricing — using the Header + Main + Footer shell with Page components.
+
+## When to use
+
+- Marketing sites, product pages, company sites
+- Blog and content pages
+- Pricing, changelog, portfolio pages
+- Any public-facing page that isn't a dashboard or documentation
+
+## App shell
+
+```vue [app.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copyright © {{ new Date().getFullYear() }}
+
+
+
+
+
+
+
+```
+
+### Common mistakes
+
+- Forgetting the `#body` slot on `UHeader` — this is the mobile menu content. Without it, mobile users have no navigation.
+- Using `variant="solid"` for both header and hero buttons — the header button should be lower weight than the hero CTA.
+
+## Landing page
+
+```vue [pages/index.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Key components
+
+- `UPageHero` — hero with title, description, links, and optional media. Use `orientation="horizontal"` for side-by-side layout.
+- `UPageSection` — content section with headline, title, description, and `features` grid. Use `id` for anchor links.
+- `UPageCTA` — call to action block.
+- `UPageGrid` / `UPageCard` — card grid for features, testimonials, etc.
+- `UPageFeature` — individual feature item.
+- `UPageLogos` — logo wall for social proof.
+- `UPricingPlans` / `UPricingTable` — pricing cards and comparison tables.
+- `UFooterColumns` — multi-column footer with link groups (used inside `UFooter`).
+
+## Variations
+
+### Alternating feature sections
+
+```vue
+
+
+
+
+
+
+
+```
+
+### Blog listing
+
+```vue [pages/blog/index.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### Changelog
+
+```vue [pages/changelog.vue]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/auth.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/auth.md
new file mode 100644
index 00000000..57d2bdc0
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/auth.md
@@ -0,0 +1,162 @@
+# Auth Forms
+
+## UAuthForm (recommended)
+
+`UAuthForm` provides a complete auth form with fields, providers, validation, and submit — no manual `UForm` + `UFormField` wiring needed. Wrap it in `UPageCard` for a polished look.
+
+```vue [pages/login.vue]
+
+
+
+
+
+
+
+ Forgot password?
+
+
+ Don't have an account? Sign up.
+
+
+
+
+
+```
+
+### UAuthForm key props
+
+| Prop | Purpose |
+|---|---|
+| `title`, `description`, `icon` | Header content |
+| `fields` | `AuthFormField[]` — each has `name`, `type`, `label`, `placeholder`, `required` |
+| `providers` | `ButtonProps[]` — social login buttons shown above/below the form |
+| `schema` | Zod/Valibot schema for validation |
+| `submit` | Customize submit button: `{ label: 'Sign in', block: true }` |
+| `separator` | Text between providers and fields (default: `'or'`) |
+
+### UAuthForm key slots
+
+| Slot | Purpose |
+|---|---|
+| `#description` | Override description (e.g., add sign-up link) |
+| `#password-hint` | "Forgot password?" link on password field |
+| `#validation` | Custom error display (e.g., `UAlert`) |
+| `#footer` | Terms of service, sign-up link |
+| `#-field` | Override a specific field's rendering |
+
+## Custom auth layout
+
+For layouts where `UAuthForm` is too opinionated, use `UCard` + `UForm` + `UFormField` directly.
+
+```vue [pages/login.vue]
+
+
+
+
+
+
+
+
Welcome back
+
Sign in to your account
+
+
+
+
+
+
+
+
+
+
+ Forgot password?
+
+
+
+
+
+
+
+
+
+ Don't have an account?
+ Sign up
+
+
+
+
+
+```
+
+## Tips
+
+- Prefer `UAuthForm` with `UPageCard` for standard auth pages — handles layout, providers, validation, and submit
+- Use `import * as z from 'zod'` and `z.email()` (Zod 4 syntax)
+- Type the submit handler: `function onSubmit(event: FormSubmitEvent)` — access validated data via `event.data`
+- Center auth forms with `flex min-h-dvh items-center justify-center`
+- Place "Forgot password?" link as `#password-hint` slot on `UAuthForm`, or `#hint` slot on `UFormField`
+- Social login buttons: use `providers` prop on `UAuthForm`, or add manually with ``
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/data-tables.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/data-tables.md
new file mode 100644
index 00000000..f5c81f86
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/data-tables.md
@@ -0,0 +1,225 @@
+# Data Tables
+
+Complete patterns for displaying and managing tabular data.
+
+## Basic table
+
+```vue
+
+
+
+
+
+```
+
+## With search and filters (dashboard)
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## With row selection
+
+Row selection uses TanStack Table's `rowSelection` state — a `Record` keyed by row index.
+
+```vue
+
+
+
+
+
+
+ {{ table?.tableApi?.getFilteredSelectedRowModel().rows.length || 0 }} of
+ {{ table?.tableApi?.getFilteredRowModel().rows.length || 0 }} row(s) selected.
+
+
+```
+
+Add a checkbox column using the `h` function. Use tri-state `modelValue` (`true`, `false`, or `'indeterminate'`) for the "select all" header:
+
+```ts
+import { h } from 'vue'
+
+const UCheckbox = resolveComponent('UCheckbox')
+
+const columns: TableColumn[] = [{
+ id: 'select',
+ header: ({ table }) => h(UCheckbox, {
+ 'modelValue': table.getIsSomePageRowsSelected() ? 'indeterminate' : table.getIsAllPageRowsSelected(),
+ 'onUpdate:modelValue': (value: boolean | 'indeterminate') => table.toggleAllPageRowsSelected(!!value),
+ 'aria-label': 'Select all'
+ }),
+ cell: ({ row }) => h(UCheckbox, {
+ 'modelValue': row.getIsSelected(),
+ 'onUpdate:modelValue': (value: boolean | 'indeterminate') => row.toggleSelected(!!value),
+ 'aria-label': 'Select row'
+ })
+},
+// ... other columns
+]
+```
+
+## With pagination
+
+Use `v-model:pagination` on `UTable` with TanStack's `getPaginationRowModel`, then wire `UPagination` to the table API. `UPagination`'s `total` is total **items** (not pages) — it calculates page count from `total / items-per-page`.
+
+```vue
+
+
+
+
+
+
+ table?.tableApi?.setPageIndex(p - 1)"
+ />
+
+
+```
+
+## With async data (Nuxt)
+
+Use `status === 'pending' || status === 'idle'` for loading state — `idle` covers the initial render before `useLazyFetch` starts.
+
+```vue
+
+
+
+
+
+```
+
+For server-side pagination:
+
+```vue
+
+
+
+
+
+
+
+
+
+```
+
+## Tips
+
+- Table is built on [TanStack Table v8](https://tanstack.com/table/v8) — columns use `ColumnDef` format with `accessorKey`, `header`, `cell`
+- Use `#-cell` and `#-header` template slots to customize rendering with Vue templates
+- Alternatively, use the `h` function inside `header` and `cell` column properties for inline rendering
+- Row data in slots is accessed via `row.original` (not `row` directly)
+- Use `v-model:row-selection` for selection, `v-model:sorting` for sort state
+- Wrap tables in `UDashboardPanel` with `#header` toolbar for the dashboard pattern
+- For empty states, use the `#empty` slot
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/navigation.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/navigation.md
new file mode 100644
index 00000000..ef71a988
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/navigation.md
@@ -0,0 +1,90 @@
+# Navigation
+
+Patterns for headers, sidebars, breadcrumbs, and tab navigation.
+
+## Header with mobile menu
+
+`UHeader` default slot is desktop nav, `#body` is the mobile menu. Without `#body`, mobile users have no navigation.
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+> Full app shell example in [landing layout](../layouts/landing.md).
+
+## Sidebar navigation (dashboard)
+
+See [dashboard layout](../layouts/dashboard.md) for the full sidebar pattern with `UDashboardSidebar` + `UNavigationMenu`. Key points:
+- Pass `:collapsed="collapsed"` to `UNavigationMenu` inside collapsible sidebars
+- Use `NavigationMenuItem[][]` (nested arrays) for separate nav groups
+- Use `#footer` slot for user menu with `UDropdownMenu`
+
+## Breadcrumbs
+
+```vue
+
+
+
+
+
+```
+
+## Tab navigation (within a page)
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
diff --git a/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/overlays.md b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/overlays.md
new file mode 100644
index 00000000..597def75
--- /dev/null
+++ b/code/link-site/link-nuxt/.claude/skills/nuxt-ui/references/recipes/overlays.md
@@ -0,0 +1,173 @@
+# Overlays
+
+Patterns for modals, slideovers, drawers, and command palettes.
+
+## Confirmation dialog
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Programmatic confirmation (useOverlay)
+
+Reusable pattern — no template state needed at the call site.
+
+```vue [components/ConfirmModal.vue]
+
+
+
+
+
+
+
+
+
+
+```
+
+```ts
+// Usage anywhere
+const overlay = useOverlay()
+const confirm = overlay.create(ConfirmModal)
+
+async function deleteItem(item) {
+ const instance = confirm.open({
+ title: 'Delete item',
+ description: `Are you sure you want to delete "${item.name}"?`
+ })
+
+ if (await instance.result) {
+ // user confirmed
+ }
+}
+```
+
+## Form in a slideover
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Command palette
+
+```vue
+
+
+
+
+
+
+
+```
+
+## Drawer (bottom sheet)
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
diff --git a/code/link-site/link-nuxt/.editorconfig b/code/link-site/link-nuxt/.editorconfig
new file mode 100644
index 00000000..91422397
--- /dev/null
+++ b/code/link-site/link-nuxt/.editorconfig
@@ -0,0 +1,13 @@
+# editorconfig.org
+root = true
+
+[*]
+indent_size = 2
+indent_style = space
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/code/link-site/link-nuxt/.github/workflows/ci.yml b/code/link-site/link-nuxt/.github/workflows/ci.yml
new file mode 100644
index 00000000..7b6a2418
--- /dev/null
+++ b/code/link-site/link-nuxt/.github/workflows/ci.yml
@@ -0,0 +1,34 @@
+name: ci
+
+on: push
+
+jobs:
+ ci:
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ matrix:
+ os: [ubuntu-latest]
+ node: [22]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v7
+
+ - name: Install pnpm
+ uses: pnpm/action-setup@v6
+
+ - name: Install node
+ uses: actions/setup-node@v7
+ with:
+ node-version: ${{ matrix.node }}
+ cache: pnpm
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Lint
+ run: pnpm run lint
+
+ - name: Typecheck
+ run: pnpm run typecheck
diff --git a/code/link-site/link-nuxt/.gitignore b/code/link-site/link-nuxt/.gitignore
new file mode 100644
index 00000000..4a7f73a2
--- /dev/null
+++ b/code/link-site/link-nuxt/.gitignore
@@ -0,0 +1,24 @@
+# Nuxt dev/build outputs
+.output
+.data
+.nuxt
+.nitro
+.cache
+dist
+
+# Node dependencies
+node_modules
+
+# Logs
+logs
+*.log
+
+# Misc
+.DS_Store
+.fleet
+.idea
+
+# Local env files
+.env
+.env.*
+!.env.example
diff --git a/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T12-50-58-825Z.yml b/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T12-50-58-825Z.yml
new file mode 100644
index 00000000..607e3490
--- /dev/null
+++ b/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T12-50-58-825Z.yml
@@ -0,0 +1,158 @@
+- generic [ref=f10e3]:
+ - banner [ref=f10e4]:
+ - generic [ref=f10e5]:
+ - generic [ref=f10e6]:
+ - link "链通物流":
+ - /url: /
+ - link "链通物流" [ref=f10e7] [cursor=pointer]:
+ - /url: /
+ - navigation [ref=f10e11]:
+ - list [ref=f10e13]:
+ - listitem [ref=f10e14]:
+ - link "首页" [ref=f10e15] [cursor=pointer]:
+ - /url: /
+ - listitem [ref=f10e18]:
+ - link "企业目录" [ref=f10e19] [cursor=pointer]:
+ - /url: /directory
+ - listitem [ref=f10e22]:
+ - link "资讯" [ref=f10e23] [cursor=pointer]:
+ - /url: /news
+ - generic [ref=f10e26]:
+ - button "切换到深色模式" [ref=f10e27]
+ - textbox "搜索企业" [ref=f10e30]:
+ - /placeholder: 搜索企业…
+ - button "消息(示例阶段未开放)" [disabled] [ref=f10e33]
+ - link "入驻平台" [ref=f10e35] [cursor=pointer]:
+ - /url: /directory
+ - main [ref=f10e38]:
+ - generic [ref=f10e39]:
+ - navigation "breadcrumb" [ref=f10e42]:
+ - list [ref=f10e43]:
+ - listitem [ref=f10e44]:
+ - link "链通物流" [ref=f10e45] [cursor=pointer]:
+ - /url: /
+ - listitem [ref=f10e47]
+ - listitem [ref=f10e49]:
+ - link "企业目录" [ref=f10e50] [cursor=pointer]:
+ - /url: /directory
+ - listitem [ref=f10e52]
+ - listitem [ref=f10e54]:
+ - generic [ref=f10e55]: 环洋国际货运代理(上海)有限公司
+ - generic [ref=f10e59]:
+ - generic [ref=f10e60]: 环
+ - generic [ref=f10e61]:
+ - generic [ref=f10e62]:
+ - heading "环洋国际货运代理(上海)有限公司" [level=1] [ref=f10e63]
+ - generic [ref=f10e64]: 平台认证
+ - paragraph [ref=f10e66]: 让全球贸易更简单
+ - generic [ref=f10e67]:
+ - generic [ref=f10e68]: 上海
+ - generic [ref=f10e70]: ·
+ - generic [ref=f10e71]: 成立于 2008
+ - generic [ref=f10e72]: ·
+ - generic [ref=f10e73]: 120-200 人
+ - generic [ref=f10e74]:
+ - generic [ref=f10e75]: 美线
+ - generic [ref=f10e76]: 欧线
+ - link "在线沟通" [ref=f10e78] [cursor=pointer]:
+ - /url: /company/huanyang/contact
+ - navigation [ref=f10e83]:
+ - link "主页" [ref=f10e84] [cursor=pointer]:
+ - /url: /company/huanyang
+ - link "关于" [ref=f10e85] [cursor=pointer]:
+ - /url: /company/huanyang/about
+ - link "文章" [ref=f10e86] [cursor=pointer]:
+ - /url: /company/huanyang/articles
+ - link "服务" [ref=f10e87] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - link "联系" [ref=f10e88] [cursor=pointer]:
+ - /url: /company/huanyang/contact
+ - generic [ref=f10e89]:
+ - generic [ref=f10e91]:
+ - generic [ref=f10e92]:
+ - paragraph [ref=f10e93]: 关于我们 / ABOUT US
+ - heading "环洋国际货运代理(上海)有限公司" [level=2] [ref=f10e94]
+ - paragraph [ref=f10e95]: 环洋国际货运代理(上海)有限公司成立于 2008 年,总部位于上海,在宁波、青岛、深圳设有分公司,是一家以欧美远洋航线为核心的国际货运代理企业。
+ - generic [ref=f10e96]:
+ - generic [ref=f10e97]: 成立于 2008 年
+ - generic [ref=f10e99]: 120-200 人
+ - generic [ref=f10e101]: 上海
+ - link "了解更多" [ref=f10e103] [cursor=pointer]:
+ - /url: /company/huanyang/about
+ - generic [ref=f10e106]:
+ - generic [ref=f10e107]:
+ - paragraph [ref=f10e108]: 海运整箱
+ - paragraph [ref=f10e109]: 主营服务
+ - generic [ref=f10e110]:
+ - paragraph [ref=f10e111]: 海运拼箱
+ - paragraph [ref=f10e112]: 主营服务
+ - generic [ref=f10e113]:
+ - paragraph [ref=f10e114]: 报关报检
+ - paragraph [ref=f10e115]: 主营服务
+ - generic [ref=f10e117]:
+ - generic [ref=f10e118]:
+ - paragraph [ref=f10e119]: 主营业务 / SERVICES
+ - heading "服务项目" [level=2] [ref=f10e120]
+ - generic [ref=f10e121]:
+ - link [ref=f10e122] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "海运整箱(FCL)" [level=3] [ref=f10e125]
+ - paragraph [ref=f10e126]: 美西 / 美东 / 北欧 / 地中海基本港及内陆点整箱运输,20GP / 40GP / 40HQ / 45HQ 全柜型。
+ - link [ref=f10e127] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "海运拼箱(LCL)" [level=3] [ref=f10e130]
+ - paragraph [ref=f10e131]: 欧美主要港口每周固定拼箱航班,最低 1CBM 起运,目的港网络覆盖 40+ 城市。
+ - link [ref=f10e132] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "报关报检" [level=3] [ref=f10e135]
+ - paragraph [ref=f10e136]: 一般贸易、跨境电商出口报关,产地证、危包证等配套单证代办。
+ - link [ref=f10e137] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "门到门物流" [level=3] [ref=f10e140]
+ - paragraph [ref=f10e141]: 起运地提货、仓储装箱、港口操作、目的国清关派送一站式服务。
+ - generic [ref=f10e142]:
+ - generic [ref=f10e143]:
+ - paragraph [ref=f10e144]: 为什么选择我们 / WHY US
+ - heading "核心优势" [level=2] [ref=f10e145]
+ - generic [ref=f10e146]:
+ - generic [ref=f10e147]:
+ - heading "欧美航线直约" [level=3] [ref=f10e150]
+ - paragraph [ref=f10e151]: 与主流船司直签长约,美线 / 欧线运价与舱位双保障。
+ - generic [ref=f10e152]:
+ - heading "自建报关团队" [level=3] [ref=f10e155]
+ - paragraph [ref=f10e156]: 上海、宁波口岸全品类报关报检,单证当日出单。
+ - generic [ref=f10e157]:
+ - heading "全流程可视化" [level=3] [ref=f10e160]
+ - paragraph [ref=f10e161]: 订舱、装箱、进港、开船、到港节点在线可查。
+ - generic [ref=f10e163]:
+ - generic [ref=f10e164]:
+ - generic [ref=f10e165]:
+ - paragraph [ref=f10e166]: 公司动态 / NEWS
+ - heading "新闻资讯" [level=2] [ref=f10e167]
+ - link "更多文章" [ref=f10e168] [cursor=pointer]:
+ - /url: /company/huanyang/articles
+ - generic [ref=f10e171]:
+ - link "行业资讯 2026-08-26 5 分钟 红海局势缓和后的欧线运价走势:旺季前还能涨多少? 欧线即期运价在连续两个月回落后企稳,舱位利用率回升至九成。我们结合三大船司的排舱数据,分析旺季前欧线的运价区间与订舱窗口建议。" [ref=f10e172] [cursor=pointer]:
+ - /url: /news/red-sea-rerouting-2026
+ - generic [ref=f10e173]:
+ - generic [ref=f10e174]: 行业资讯
+ - generic [ref=f10e175]: 2026-08-26
+ - generic [ref=f10e177]: 5 分钟
+ - heading "红海局势缓和后的欧线运价走势:旺季前还能涨多少?" [level=3] [ref=f10e179]
+ - paragraph [ref=f10e180]: 欧线即期运价在连续两个月回落后企稳,舱位利用率回升至九成。我们结合三大船司的排舱数据,分析旺季前欧线的运价区间与订舱窗口建议。
+ - link "行业资讯 2026-08-22 4 分钟 美西长滩港劳工谈判落地,塞港风险解除? 劳资协议达成后,长滩 / 洛杉矶港的等泊时间已回落至 2 天以内。但旺季叠加返校季出货,工会换班效率与铁路疏运仍是两大变量。" [ref=f10e181] [cursor=pointer]:
+ - /url: /news/us-west-lcr-2026
+ - generic [ref=f10e182]:
+ - generic [ref=f10e183]: 行业资讯
+ - generic [ref=f10e184]: 2026-08-22
+ - generic [ref=f10e186]: 4 分钟
+ - heading "美西长滩港劳工谈判落地,塞港风险解除?" [level=3] [ref=f10e188]
+ - paragraph [ref=f10e189]: 劳资协议达成后,长滩 / 洛杉矶港的等泊时间已回落至 2 天以内。但旺季叠加返校季出货,工会换班效率与铁路疏运仍是两大变量。
+ - contentinfo [ref=f10e190]:
+ - generic [ref=f10e191]:
+ - generic [ref=f10e192]:
+ - link "企业目录" [ref=f10e193] [cursor=pointer]:
+ - /url: /directory
+ - link "行业资讯" [ref=f10e195] [cursor=pointer]:
+ - /url: /news
+ - paragraph [ref=f10e198]: 链通物流 · 物流企业连接平台 © 2026
\ No newline at end of file
diff --git a/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T12-57-42-004Z.yml b/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T12-57-42-004Z.yml
new file mode 100644
index 00000000..10b158b9
--- /dev/null
+++ b/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T12-57-42-004Z.yml
@@ -0,0 +1,148 @@
+- generic [ref=f13e3]:
+ - banner [ref=f13e4]:
+ - generic [ref=f13e6]:
+ - link "链通物流" [ref=f13e7] [cursor=pointer]:
+ - /url: /
+ - navigation [ref=f13e10]:
+ - link "首页" [ref=f13e11] [cursor=pointer]:
+ - /url: /
+ - link "企业目录" [ref=f13e12] [cursor=pointer]:
+ - /url: /directory
+ - link "资讯" [ref=f13e13] [cursor=pointer]:
+ - /url: /news
+ - generic [ref=f13e14]:
+ - textbox "搜索企业…" [ref=f13e16]
+ - link "入驻平台" [ref=f13e19] [cursor=pointer]:
+ - /url: /directory
+ - main [ref=f13e22]:
+ - generic [ref=f13e23]:
+ - navigation "breadcrumb" [ref=f13e26]:
+ - list [ref=f13e27]:
+ - listitem [ref=f13e28]:
+ - link "链通物流" [ref=f13e29] [cursor=pointer]:
+ - /url: /
+ - listitem [ref=f13e31]
+ - listitem [ref=f13e33]:
+ - link "企业目录" [ref=f13e34] [cursor=pointer]:
+ - /url: /directory
+ - listitem [ref=f13e36]
+ - listitem [ref=f13e38]:
+ - generic [ref=f13e39]: 环洋国际货运代理(上海)有限公司
+ - generic [ref=f13e44]:
+ - generic [ref=f13e45]: 环
+ - generic [ref=f13e46]:
+ - generic [ref=f13e47]:
+ - heading "环洋国际货运代理(上海)有限公司" [level=1] [ref=f13e48]
+ - generic [ref=f13e49]: 平台认证
+ - paragraph [ref=f13e51]: 让全球贸易更简单
+ - generic [ref=f13e52]:
+ - generic [ref=f13e53]: 上海
+ - generic [ref=f13e55]: ·
+ - generic [ref=f13e56]: 成立于 2008
+ - generic [ref=f13e57]: ·
+ - generic [ref=f13e58]: 120-200 人
+ - generic [ref=f13e59]:
+ - generic [ref=f13e60]: 美线
+ - generic [ref=f13e61]: 欧线
+ - link "在线沟通" [ref=f13e63] [cursor=pointer]:
+ - /url: /company/huanyang/contact
+ - navigation [ref=f13e68]:
+ - link "主页" [ref=f13e69] [cursor=pointer]:
+ - /url: /company/huanyang
+ - link "关于" [ref=f13e70] [cursor=pointer]:
+ - /url: /company/huanyang/about
+ - link "文章" [ref=f13e71] [cursor=pointer]:
+ - /url: /company/huanyang/articles
+ - link "服务" [ref=f13e72] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - link "联系" [ref=f13e73] [cursor=pointer]:
+ - /url: /company/huanyang/contact
+ - generic [ref=f13e74]:
+ - generic [ref=f13e76]:
+ - generic [ref=f13e77]:
+ - paragraph [ref=f13e78]: 关于我们 / ABOUT US
+ - heading "环洋国际货运代理(上海)有限公司" [level=2] [ref=f13e79]
+ - paragraph [ref=f13e80]: 环洋国际货运代理(上海)有限公司成立于 2008 年,总部位于上海,在宁波、青岛、深圳设有分公司,是一家以欧美远洋航线为核心的国际货运代理企业。
+ - generic [ref=f13e81]:
+ - generic [ref=f13e82]: 成立于 2008 年
+ - generic [ref=f13e84]: 120-200 人
+ - generic [ref=f13e86]: 上海
+ - link "了解更多" [ref=f13e88] [cursor=pointer]:
+ - /url: /company/huanyang/about
+ - generic [ref=f13e91]:
+ - generic [ref=f13e92]:
+ - paragraph [ref=f13e93]: 海运整箱
+ - paragraph [ref=f13e94]: 主营服务
+ - generic [ref=f13e95]:
+ - paragraph [ref=f13e96]: 海运拼箱
+ - paragraph [ref=f13e97]: 主营服务
+ - generic [ref=f13e98]:
+ - paragraph [ref=f13e99]: 报关报检
+ - paragraph [ref=f13e100]: 主营服务
+ - generic [ref=f13e102]:
+ - generic [ref=f13e103]:
+ - paragraph [ref=f13e104]: 主营业务 / SERVICES
+ - heading "服务项目" [level=2] [ref=f13e105]
+ - generic [ref=f13e106]:
+ - link [ref=f13e107] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "海运整箱(FCL)" [level=3] [ref=f13e110]
+ - paragraph [ref=f13e111]: 美西 / 美东 / 北欧 / 地中海基本港及内陆点整箱运输,20GP / 40GP / 40HQ / 45HQ 全柜型。
+ - link [ref=f13e112] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "海运拼箱(LCL)" [level=3] [ref=f13e115]
+ - paragraph [ref=f13e116]: 欧美主要港口每周固定拼箱航班,最低 1CBM 起运,目的港网络覆盖 40+ 城市。
+ - link [ref=f13e117] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "报关报检" [level=3] [ref=f13e120]
+ - paragraph [ref=f13e121]: 一般贸易、跨境电商出口报关,产地证、危包证等配套单证代办。
+ - link [ref=f13e122] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "门到门物流" [level=3] [ref=f13e125]
+ - paragraph [ref=f13e126]: 起运地提货、仓储装箱、港口操作、目的国清关派送一站式服务。
+ - generic [ref=f13e127]:
+ - generic [ref=f13e128]:
+ - paragraph [ref=f13e129]: 为什么选择我们 / WHY US
+ - heading "核心优势" [level=2] [ref=f13e130]
+ - generic [ref=f13e131]:
+ - generic [ref=f13e132]:
+ - heading "欧美航线直约" [level=3] [ref=f13e135]
+ - paragraph [ref=f13e136]: 与主流船司直签长约,美线 / 欧线运价与舱位双保障。
+ - generic [ref=f13e137]:
+ - heading "自建报关团队" [level=3] [ref=f13e140]
+ - paragraph [ref=f13e141]: 上海、宁波口岸全品类报关报检,单证当日出单。
+ - generic [ref=f13e142]:
+ - heading "全流程可视化" [level=3] [ref=f13e145]
+ - paragraph [ref=f13e146]: 订舱、装箱、进港、开船、到港节点在线可查。
+ - generic [ref=f13e148]:
+ - generic [ref=f13e149]:
+ - generic [ref=f13e150]:
+ - paragraph [ref=f13e151]: 公司动态 / NEWS
+ - heading "新闻资讯" [level=2] [ref=f13e152]
+ - link "更多文章" [ref=f13e153] [cursor=pointer]:
+ - /url: /company/huanyang/articles
+ - generic [ref=f13e156]:
+ - link "行业资讯 2026-08-26 5 分钟 红海局势缓和后的欧线运价走势:旺季前还能涨多少? 欧线即期运价在连续两个月回落后企稳,舱位利用率回升至九成。我们结合三大船司的排舱数据,分析旺季前欧线的运价区间与订舱窗口建议。" [ref=f13e157] [cursor=pointer]:
+ - /url: /news/red-sea-rerouting-2026
+ - generic [ref=f13e158]:
+ - generic [ref=f13e159]: 行业资讯
+ - generic [ref=f13e160]: 2026-08-26
+ - generic [ref=f13e162]: 5 分钟
+ - heading "红海局势缓和后的欧线运价走势:旺季前还能涨多少?" [level=3] [ref=f13e164]
+ - paragraph [ref=f13e165]: 欧线即期运价在连续两个月回落后企稳,舱位利用率回升至九成。我们结合三大船司的排舱数据,分析旺季前欧线的运价区间与订舱窗口建议。
+ - link "行业资讯 2026-08-22 4 分钟 美西长滩港劳工谈判落地,塞港风险解除? 劳资协议达成后,长滩 / 洛杉矶港的等泊时间已回落至 2 天以内。但旺季叠加返校季出货,工会换班效率与铁路疏运仍是两大变量。" [ref=f13e166] [cursor=pointer]:
+ - /url: /news/us-west-lcr-2026
+ - generic [ref=f13e167]:
+ - generic [ref=f13e168]: 行业资讯
+ - generic [ref=f13e169]: 2026-08-22
+ - generic [ref=f13e171]: 4 分钟
+ - heading "美西长滩港劳工谈判落地,塞港风险解除?" [level=3] [ref=f13e173]
+ - paragraph [ref=f13e174]: 劳资协议达成后,长滩 / 洛杉矶港的等泊时间已回落至 2 天以内。但旺季叠加返校季出货,工会换班效率与铁路疏运仍是两大变量。
+ - contentinfo [ref=f13e175]:
+ - generic [ref=f13e176]:
+ - generic [ref=f13e177]:
+ - link "企业目录" [ref=f13e178] [cursor=pointer]:
+ - /url: /directory
+ - link "行业资讯" [ref=f13e180] [cursor=pointer]:
+ - /url: /news
+ - paragraph [ref=f13e183]: 链通物流 · 物流企业连接平台 © 2026
\ No newline at end of file
diff --git a/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T13-24-59-639Z.yml b/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T13-24-59-639Z.yml
new file mode 100644
index 00000000..f22a21fb
--- /dev/null
+++ b/code/link-site/link-nuxt/.playwright-cli/page-2026-08-31T13-24-59-639Z.yml
@@ -0,0 +1,124 @@
+- generic [ref=f14e3]:
+ - main [ref=f14e4]:
+ - generic [ref=f14e5]:
+ - generic [ref=f14e8]:
+ - link "链通物流" [ref=f14e10] [cursor=pointer]:
+ - /url: /
+ - navigation [ref=f14e13]:
+ - link "主页" [ref=f14e14] [cursor=pointer]:
+ - /url: /company/huanyang
+ - link "关于" [ref=f14e15] [cursor=pointer]:
+ - /url: /company/huanyang/about
+ - link "服务" [ref=f14e16] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - link "新闻" [ref=f14e17] [cursor=pointer]:
+ - /url: /company/huanyang/articles
+ - link "联系" [ref=f14e18] [cursor=pointer]:
+ - /url: /company/huanyang/contact
+ - generic [ref=f14e22]:
+ - generic [ref=f14e23]: 环
+ - generic [ref=f14e24]:
+ - generic [ref=f14e25]:
+ - heading "环洋国际货运代理(上海)有限公司" [level=1] [ref=f14e26]
+ - generic [ref=f14e27]: 平台认证
+ - paragraph [ref=f14e29]: 让全球贸易更简单
+ - generic [ref=f14e30]:
+ - generic [ref=f14e31]: 上海
+ - generic [ref=f14e33]: ·
+ - generic [ref=f14e34]: 成立于 2008
+ - generic [ref=f14e35]: ·
+ - generic [ref=f14e36]: 120-200 人
+ - generic [ref=f14e37]:
+ - generic [ref=f14e38]: 美线
+ - generic [ref=f14e39]: 欧线
+ - link "在线咨询" [ref=f14e41] [cursor=pointer]:
+ - /url: /company/huanyang/contact
+ - generic [ref=f14e44]:
+ - generic [ref=f14e46]:
+ - generic [ref=f14e47]:
+ - paragraph [ref=f14e48]: 关于我们 / ABOUT US
+ - heading "环洋国际货运代理(上海)有限公司" [level=2] [ref=f14e49]
+ - paragraph [ref=f14e50]: 环洋国际货运代理(上海)有限公司成立于 2008 年,总部位于上海,在宁波、青岛、深圳设有分公司,是一家以欧美远洋航线为核心的国际货运代理企业。
+ - generic [ref=f14e51]:
+ - generic [ref=f14e52]: 成立于 2008 年
+ - generic [ref=f14e54]: 120-200 人
+ - generic [ref=f14e56]: 上海
+ - link "了解更多" [ref=f14e58] [cursor=pointer]:
+ - /url: /company/huanyang/about
+ - generic [ref=f14e61]:
+ - generic [ref=f14e62]:
+ - paragraph [ref=f14e63]: 海运整箱
+ - paragraph [ref=f14e64]: 主营服务
+ - generic [ref=f14e65]:
+ - paragraph [ref=f14e66]: 海运拼箱
+ - paragraph [ref=f14e67]: 主营服务
+ - generic [ref=f14e68]:
+ - paragraph [ref=f14e69]: 报关报检
+ - paragraph [ref=f14e70]: 主营服务
+ - generic [ref=f14e72]:
+ - generic [ref=f14e73]:
+ - paragraph [ref=f14e74]: 主营业务 / SERVICES
+ - heading "服务项目" [level=2] [ref=f14e75]
+ - generic [ref=f14e76]:
+ - link [ref=f14e77] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "海运整箱(FCL)" [level=3] [ref=f14e80]
+ - paragraph [ref=f14e81]: 美西 / 美东 / 北欧 / 地中海基本港及内陆点整箱运输,20GP / 40GP / 40HQ / 45HQ 全柜型。
+ - link [ref=f14e82] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "海运拼箱(LCL)" [level=3] [ref=f14e85]
+ - paragraph [ref=f14e86]: 欧美主要港口每周固定拼箱航班,最低 1CBM 起运,目的港网络覆盖 40+ 城市。
+ - link [ref=f14e87] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "报关报检" [level=3] [ref=f14e90]
+ - paragraph [ref=f14e91]: 一般贸易、跨境电商出口报关,产地证、危包证等配套单证代办。
+ - link [ref=f14e92] [cursor=pointer]:
+ - /url: /company/huanyang/services
+ - heading "门到门物流" [level=3] [ref=f14e95]
+ - paragraph [ref=f14e96]: 起运地提货、仓储装箱、港口操作、目的国清关派送一站式服务。
+ - generic [ref=f14e97]:
+ - generic [ref=f14e98]:
+ - paragraph [ref=f14e99]: 为什么选择我们 / WHY US
+ - heading "核心优势" [level=2] [ref=f14e100]
+ - generic [ref=f14e101]:
+ - generic [ref=f14e102]:
+ - heading "欧美航线直约" [level=3] [ref=f14e105]
+ - paragraph [ref=f14e106]: 与主流船司直签长约,美线 / 欧线运价与舱位双保障。
+ - generic [ref=f14e107]:
+ - heading "自建报关团队" [level=3] [ref=f14e110]
+ - paragraph [ref=f14e111]: 上海、宁波口岸全品类报关报检,单证当日出单。
+ - generic [ref=f14e112]:
+ - heading "全流程可视化" [level=3] [ref=f14e115]
+ - paragraph [ref=f14e116]: 订舱、装箱、进港、开船、到港节点在线可查。
+ - generic [ref=f14e118]:
+ - generic [ref=f14e119]:
+ - generic [ref=f14e120]:
+ - paragraph [ref=f14e121]: 公司动态 / NEWS
+ - heading "新闻资讯" [level=2] [ref=f14e122]
+ - link "更多文章" [ref=f14e123] [cursor=pointer]:
+ - /url: /company/huanyang/articles
+ - generic [ref=f14e126]:
+ - link "行业资讯 2026-08-26 5 分钟 红海局势缓和后的欧线运价走势:旺季前还能涨多少? 欧线即期运价在连续两个月回落后企稳,舱位利用率回升至九成。我们结合三大船司的排舱数据,分析旺季前欧线的运价区间与订舱窗口建议。" [ref=f14e127] [cursor=pointer]:
+ - /url: /news/red-sea-rerouting-2026
+ - generic [ref=f14e128]:
+ - generic [ref=f14e129]: 行业资讯
+ - generic [ref=f14e130]: 2026-08-26
+ - generic [ref=f14e132]: 5 分钟
+ - heading "红海局势缓和后的欧线运价走势:旺季前还能涨多少?" [level=3] [ref=f14e134]
+ - paragraph [ref=f14e135]: 欧线即期运价在连续两个月回落后企稳,舱位利用率回升至九成。我们结合三大船司的排舱数据,分析旺季前欧线的运价区间与订舱窗口建议。
+ - link "行业资讯 2026-08-22 4 分钟 美西长滩港劳工谈判落地,塞港风险解除? 劳资协议达成后,长滩 / 洛杉矶港的等泊时间已回落至 2 天以内。但旺季叠加返校季出货,工会换班效率与铁路疏运仍是两大变量。" [ref=f14e136] [cursor=pointer]:
+ - /url: /news/us-west-lcr-2026
+ - generic [ref=f14e137]:
+ - generic [ref=f14e138]: 行业资讯
+ - generic [ref=f14e139]: 2026-08-22
+ - generic [ref=f14e141]: 4 分钟
+ - heading "美西长滩港劳工谈判落地,塞港风险解除?" [level=3] [ref=f14e143]
+ - paragraph [ref=f14e144]: 劳资协议达成后,长滩 / 洛杉矶港的等泊时间已回落至 2 天以内。但旺季叠加返校季出货,工会换班效率与铁路疏运仍是两大变量。
+ - contentinfo [ref=f14e145]:
+ - generic [ref=f14e146]:
+ - generic [ref=f14e147]:
+ - link "企业目录" [ref=f14e148] [cursor=pointer]:
+ - /url: /directory
+ - link "行业资讯" [ref=f14e150] [cursor=pointer]:
+ - /url: /news
+ - paragraph [ref=f14e153]: 链通物流 · 物流企业连接平台 © 2026
\ No newline at end of file
diff --git a/code/link-site/link-nuxt/CLAUDE.md b/code/link-site/link-nuxt/CLAUDE.md
new file mode 100644
index 00000000..c9201ba2
--- /dev/null
+++ b/code/link-site/link-nuxt/CLAUDE.md
@@ -0,0 +1,28 @@
+# CLAUDE.md
+
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
+
+## Project
+
+A Nuxt 4 application built on Nuxt UI v4 (Tailwind CSS v4, TypeScript). Currently the Nuxt UI starter template with a single landing page (`app/pages/index.vue`); the repo is named `link-nuxt` under `link-site`.
+
+## Commands
+
+```bash
+pnpm install # install dependencies (runs `nuxt prepare` via postinstall)
+pnpm dev # dev server on http://localhost:3000
+pnpm build # production build
+pnpm preview # preview production build
+pnpm lint # ESLint over the whole repo
+pnpm typecheck # nuxt typecheck (vue-tsc)
+```
+
+There is no test setup. CI (`.github/workflows/ci.yml`) runs lint + typecheck on Node 22 with pnpm — both must pass before a change is considered done.
+
+## Architecture
+
+- Nuxt 4 directory structure: app code lives in `app/` (`app.vue` shell, `app/pages/`, `app/components/`, `app/assets/css/main.css`, `app/app.config.ts`).
+- UI is entirely Nuxt UI v4 components (`UApp`, `UHeader`, `UPageHero`, etc.). The `nuxt-ui` skill in `.claude/skills/` is the reference for component usage, selection guidelines, and layout recipes — consult it before building UI.
+- Theming: primary/neutral colors set in `app/app.config.ts` (`ui.colors`); the primary `green` palette is overridden in `app/assets/css/main.css` via `@theme static` (Tailwind v4 CSS-first config — no `tailwind.config` file).
+- `nuxt.config.ts` prerenders `/` (SSG) and pins ESLint stylistic rules: no trailing commas, 1tbs braces. Keep new code consistent with this.
+- `tsconfig.json` only references generated configs under `.nuxt/` — don't edit it directly; run `pnpm install` or `nuxt prepare` to regenerate.
diff --git a/code/link-site/link-nuxt/LICENSE b/code/link-site/link-nuxt/LICENSE
new file mode 100644
index 00000000..3a3b2d24
--- /dev/null
+++ b/code/link-site/link-nuxt/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Nuxt UI Templates
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/code/link-site/link-nuxt/README.md b/code/link-site/link-nuxt/README.md
new file mode 100644
index 00000000..caf51f47
--- /dev/null
+++ b/code/link-site/link-nuxt/README.md
@@ -0,0 +1,64 @@
+# Nuxt Starter Template
+
+[](https://ui.nuxt.com)
+
+Use this template to get started with [Nuxt UI](https://ui.nuxt.com) quickly.
+
+- [Live demo](https://starter-template.nuxt.dev/)
+- [Documentation](https://ui.nuxt.com/docs/getting-started/installation/nuxt)
+
+
+
+
+
+
+
+
+
+> The starter template for Vue is on https://github.com/nuxt-ui-templates/starter-vue.
+
+## Quick Start
+
+```bash [Terminal]
+npm create nuxt@latest -- -t ui
+```
+
+## Deploy your own
+
+[](https://vercel.com/new/clone?repository-name=starter&repository-url=https%3A%2F%2Fgithub.com%2Fnuxt-ui-templates%2Fstarter&demo-image=https%3A%2F%2Fui.nuxt.com%2Fassets%2Ftemplates%2Fnuxt%2Fstarter-dark.png&demo-url=https%3A%2F%2Fstarter-template.nuxt.dev%2F&demo-title=Nuxt%20Starter%20Template&demo-description=A%20minimal%20template%20to%20get%20started%20with%20Nuxt%20UI.)
+
+## Setup
+
+Make sure to install the dependencies:
+
+```bash
+pnpm install
+```
+
+## Development Server
+
+Start the development server on `http://localhost:3000`:
+
+```bash
+pnpm dev
+```
+
+## Production
+
+Build the application for production:
+
+```bash
+pnpm build
+```
+
+Locally preview production build:
+
+```bash
+pnpm preview
+```
+
+Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
+
+## Renovate integration
+
+Install [Renovate GitHub app](https://github.com/apps/renovate/installations/select_target) on your repository and you are good to go.
diff --git a/code/link-site/link-nuxt/app/app.config.ts b/code/link-site/link-nuxt/app/app.config.ts
new file mode 100644
index 00000000..d1a42c74
--- /dev/null
+++ b/code/link-site/link-nuxt/app/app.config.ts
@@ -0,0 +1,8 @@
+export default defineAppConfig({
+ ui: {
+ colors: {
+ primary: 'blue',
+ neutral: 'slate'
+ }
+ }
+})
diff --git a/code/link-site/link-nuxt/app/app.vue b/code/link-site/link-nuxt/app/app.vue
new file mode 100644
index 00000000..1629cff4
--- /dev/null
+++ b/code/link-site/link-nuxt/app/app.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/assets/css/main.css b/code/link-site/link-nuxt/app/assets/css/main.css
new file mode 100644
index 00000000..11ba1d0b
--- /dev/null
+++ b/code/link-site/link-nuxt/app/assets/css/main.css
@@ -0,0 +1,6 @@
+@import "tailwindcss";
+@import "@nuxt/ui";
+
+@theme static {
+ --font-sans: 'Public Sans', 'PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', sans-serif;
+}
diff --git a/code/link-site/link-nuxt/app/components/ArticleCard.vue b/code/link-site/link-nuxt/app/components/ArticleCard.vue
new file mode 100644
index 00000000..6586add5
--- /dev/null
+++ b/code/link-site/link-nuxt/app/components/ArticleCard.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ {{ article.category }}
+
+
+
+ {{ article.date }}
+
+
+
+ {{ article.readMinutes }} 分钟
+
+
+
+
+ {{ article.title }}
+
+
+ {{ article.summary }}
+
+
+
+ {{ company.name }}
+
+
+
diff --git a/code/link-site/link-nuxt/app/components/CompanyCard.vue b/code/link-site/link-nuxt/app/components/CompanyCard.vue
new file mode 100644
index 00000000..a0bb84a1
--- /dev/null
+++ b/code/link-site/link-nuxt/app/components/CompanyCard.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+ {{ company.name }}
+
+
+
+
{{ company.slogan }} · {{ company.city }}
+
+
+
+ {{ company.description }}
+
+
+
+ {{ route }}
+
+
+ {{ service }}
+
+
+
+
+ 成立于 {{ company.established }} 年 · {{ company.employees }}
+
+ 查看主页
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/components/CompanyIdentityHeader.vue b/code/link-site/link-nuxt/app/components/CompanyIdentityHeader.vue
new file mode 100644
index 00000000..d0811507
--- /dev/null
+++ b/code/link-site/link-nuxt/app/components/CompanyIdentityHeader.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ company.name }}
+
+
+
+ 平台认证
+
+
+
+
+ {{ company.slogan }}
+
+
+
+
+
+ {{ company.city }}
+
+ ·
+ 成立于 {{ company.established }}
+ ·
+ {{ company.employees }}
+
+
+
+
+ {{ route }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/components/CompanyLogo.vue b/code/link-site/link-nuxt/app/components/CompanyLogo.vue
new file mode 100644
index 00000000..98eacea5
--- /dev/null
+++ b/code/link-site/link-nuxt/app/components/CompanyLogo.vue
@@ -0,0 +1,39 @@
+
+
+
+
+ {{ initial }}
+
+
diff --git a/code/link-site/link-nuxt/app/components/CompanyPageBanner.vue b/code/link-site/link-nuxt/app/components/CompanyPageBanner.vue
new file mode 100644
index 00000000..91ca8286
--- /dev/null
+++ b/code/link-site/link-nuxt/app/components/CompanyPageBanner.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/components/CompanyPageTabs.vue b/code/link-site/link-nuxt/app/components/CompanyPageTabs.vue
new file mode 100644
index 00000000..955260a1
--- /dev/null
+++ b/code/link-site/link-nuxt/app/components/CompanyPageTabs.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/data/mock.ts b/code/link-site/link-nuxt/app/data/mock.ts
new file mode 100644
index 00000000..e46a12c8
--- /dev/null
+++ b/code/link-site/link-nuxt/app/data/mock.ts
@@ -0,0 +1,414 @@
+// ─────────────────────────────────────────────────────────────
+// Mock 数据(示例阶段,未接后端)
+// 对应《需求分析.md》中的字典 / 企业空间 / 资讯流模型
+// ─────────────────────────────────────────────────────────────
+
+export interface Company {
+ slug: string
+ name: string
+ slogan: string
+ verified: boolean
+ region: string
+ city: string
+ routes: string[]
+ services: string[]
+ established: number
+ employees: string
+ color: string
+ description: string
+ about: string[]
+ strengths: { title: string, description: string, icon: string }[]
+ servicesDetail: { name: string, description: string }[]
+ contact: {
+ phone: string
+ email: string
+ address: string
+ hours: string
+ }
+}
+
+export interface Article {
+ id: string
+ companySlug: string
+ category: string
+ title: string
+ summary: string
+ content: string[]
+ date: string
+ readMinutes: number
+}
+
+// ── 平台运营字典 ──────────────────────────────────────────────
+
+export const routeOptions = ['美线', '欧线', '东南亚线', '中东线', '日韩线', '非洲线', '澳新线', '中南美线']
+
+export const serviceOptions = ['海运整箱', '海运拼箱', '空运', '铁路联运', '公路运输', '报关报检', '仓储服务', '跨境电商物流']
+
+export const regionOptions = ['华东', '华南', '华北', '西北', '西南', '东北']
+
+export const articleCategories = ['行业资讯', '公司动态', '案例分享']
+
+// ── 企业数据 ──────────────────────────────────────────────────
+
+export const companies: Company[] = [
+ {
+ slug: 'huanyang',
+ name: '环洋国际货运代理(上海)有限公司',
+ slogan: '让全球贸易更简单',
+ verified: true,
+ region: '华东',
+ city: '上海',
+ routes: ['美线', '欧线'],
+ services: ['海运整箱', '海运拼箱', '报关报检'],
+ established: 2008,
+ employees: '120-200 人',
+ color: 'blue',
+ description: '深耕欧美航线十七年,提供海运整箱、拼箱及全套报关报检服务,上海港月均出货 2000+ TEU。',
+ about: [
+ '环洋国际货运代理(上海)有限公司成立于 2008 年,总部位于上海,在宁波、青岛、深圳设有分公司,是一家以欧美远洋航线为核心的国际货运代理企业。',
+ '公司持有 NVOCC 无船承运人资质,与多家主流船公司签订长期运价协议,美西、美东及北欧基本港舱位稳定,旺季保障能力强。',
+ '自建报关行与单证团队,覆盖上海、宁波口岸的全品类报关报检,跨境电商 9610 / 9710 出口申报经验丰富。'
+ ],
+ strengths: [
+ { title: '欧美航线直约', description: '与主流船司直签长约,美线 / 欧线运价与舱位双保障。', icon: 'i-lucide-ship' },
+ { title: '自建报关团队', description: '上海、宁波口岸全品类报关报检,单证当日出单。', icon: 'i-lucide-file-check' },
+ { title: '全流程可视化', description: '订舱、装箱、进港、开船、到港节点在线可查。', icon: 'i-lucide-radar' }
+ ],
+ servicesDetail: [
+ { name: '海运整箱(FCL)', description: '美西 / 美东 / 北欧 / 地中海基本港及内陆点整箱运输,20GP / 40GP / 40HQ / 45HQ 全柜型。' },
+ { name: '海运拼箱(LCL)', description: '欧美主要港口每周固定拼箱航班,最低 1CBM 起运,目的港网络覆盖 40+ 城市。' },
+ { name: '报关报检', description: '一般贸易、跨境电商出口报关,产地证、危包证等配套单证代办。' },
+ { name: '门到门物流', description: '起运地提货、仓储装箱、港口操作、目的国清关派送一站式服务。' }
+ ],
+ contact: {
+ phone: '021-6600 XXXX',
+ email: 'sales@huanyang-logistics.example.com',
+ address: '上海市浦东新区世纪大道 1200 号 XX 大厦 15 层',
+ hours: '周一至周五 09:00 - 18:00'
+ }
+ },
+ {
+ slug: 'pengcheng',
+ name: '鹏城跨境供应链(深圳)有限公司',
+ slogan: '跨境电商物流专家',
+ verified: true,
+ region: '华南',
+ city: '深圳',
+ routes: ['东南亚线', '美线'],
+ services: ['跨境电商物流', '海运拼箱', '仓储服务'],
+ established: 2014,
+ employees: '80-120 人',
+ color: 'orange',
+ description: '专注东南亚及美国跨境电商物流,海外仓 + 专线小包双轨服务,深圳日均处理订单 3 万+。',
+ about: [
+ '鹏城跨境供应链成立于 2014 年,总部深圳,依托珠三角制造产业带,专注跨境电商物流解决方案。',
+ '公司在深圳、东莞运营两个共 4 万平米的集货仓,提供贴标、质检、拍照等增值服务;在美国洛杉矶、东南亚多国布局合作海外仓。',
+ '主营 Shopee / Lazada / TikTok / Amazon 平台头程及海外仓履约,专线小包时效稳定,尾程渠道资源丰富。'
+ ],
+ strengths: [
+ { title: '东南亚专线', description: '新加坡 / 马来 / 泰国 / 越南专线,6-10 天妥投。', icon: 'i-lucide-globe' },
+ { title: '海外仓网络', description: '洛杉矶 + 东南亚多国仓储,一件代发当日出库。', icon: 'i-lucide-warehouse' },
+ { title: '电商系统对接', description: '主流 ERP / 平台 API 直连,订单自动流转。', icon: 'i-lucide-plug' }
+ ],
+ servicesDetail: [
+ { name: '跨境电商专线', description: '东南亚六国专线小包、美国 FBA 头程海派 / 空派,全程轨迹可查。' },
+ { name: '集货仓服务', description: '深圳 / 东莞 4 万平集货仓,收货、质检、贴标、打包一体化。' },
+ { name: '海外仓履约', description: '洛杉矶及东南亚海外仓,一件代发、退换货换标、中转服务。' },
+ { name: '海运拼箱', description: '东南亚各基本港每周航班,整柜 / 拼箱灵活搭配。' }
+ ],
+ contact: {
+ phone: '0755-8800 XXXX',
+ email: 'service@pc-crossborder.example.com',
+ address: '深圳市宝安区西乡街道 XX 创新园 B 栋 6 层',
+ hours: '周一至周六 09:00 - 19:00'
+ }
+ },
+ {
+ slug: 'jifeng',
+ name: '极风航空货运代理(北京)有限公司',
+ slogan: '时效即承诺',
+ verified: true,
+ region: '华北',
+ city: '北京',
+ routes: ['欧线', '中东线'],
+ services: ['空运', '报关报检'],
+ established: 2016,
+ employees: '50-80 人',
+ color: 'violet',
+ description: '国际空运包板代理,欧洲、中东航线当日订舱次日起飞,鲜活冷链与紧急件操作经验丰富。',
+ about: [
+ '极风航空货运代理成立于 2016 年,总部北京,在郑州、乌鲁木齐设操作点,专注国际航空货运。',
+ '公司为国航、南航、汉莎、阿联酋航空等多家航司的包板代理,欧洲和中东主要机场舱位直采,旺季不甩货。',
+ '具备危险品(含锂电池)、鲜活冷链、AOG 紧急航材等特种货物操作资质与经验。'
+ ],
+ strengths: [
+ { title: '包板直采', description: '欧洲 / 中东主要机场包板舱位,运价与舱位直采。', icon: 'i-lucide-plane' },
+ { title: '特种货操作', description: '锂电池、鲜活冷链、AOG 航材等特种货合规操作。', icon: 'i-lucide-thermometer-snowflake' },
+ { title: '极速响应', description: '当日订舱、次日起飞,紧急件 2 小时内出方案。', icon: 'i-lucide-timer' }
+ ],
+ servicesDetail: [
+ { name: '国际空运', description: '欧洲、中东、北美主要机场进出港空运,普货 / 特种货全覆盖。' },
+ { name: '包机与包板', description: '临时包机、长期包板方案定制,大货量出运成本最优。' },
+ { name: '冷链空运', description: '主动 / 被动温控方案,鲜活、医药冷链全程温湿度记录。' },
+ { name: '报关报检', description: '北京首都 / 大兴机场口岸报关,快件 / 一般贸易双通道。' }
+ ],
+ contact: {
+ phone: '010-5200 XXXX',
+ email: 'ops@jifeng-air.example.com',
+ address: '北京市顺义区天竺综保区 XX 楼 3 层',
+ hours: '周一至周日 08:30 - 20:00'
+ }
+ },
+ {
+ slug: 'silu',
+ name: '丝路铁联物流(西安)有限公司',
+ slogan: '钢铁驼队,联通欧亚',
+ verified: true,
+ region: '西北',
+ city: '西安',
+ routes: ['欧线', '中东线'],
+ services: ['铁路联运', '公路运输', '仓储服务'],
+ established: 2015,
+ employees: '80-120 人',
+ color: 'emerald',
+ description: '中欧班列(西安)核心订舱代理,长安号欧洲全境 15 天直达,中亚五国全线覆盖。',
+ about: [
+ '丝路铁联物流成立于 2015 年,扎根西安国际港务区,是中欧班列长安号的核心订舱代理之一。',
+ '公司运营西安至杜伊斯堡、汉堡、马拉舍维奇、塔什干等 10 余条线路,欧洲全境 15 天左右直达。',
+ '提供整列 / 集拼双模式,配套口岸换装追踪、境外段铁路延伸服务及堆场仓储。'
+ ],
+ strengths: [
+ { title: '长安号核心代理', description: '中欧班列长安号核心订舱代理,整列 / 集拼双模式。', icon: 'i-lucide-train' },
+ { title: '中亚全线覆盖', description: '中亚五国全线直达,塔什干 / 阿拉木图固定发车。', icon: 'i-lucide-map' },
+ { title: '口岸换装追踪', description: '阿拉山口 / 霍尔果斯口岸换装节点实时追踪。', icon: 'i-lucide-radar' }
+ ],
+ servicesDetail: [
+ { name: '中欧班列', description: '西安至杜伊斯堡 / 汉堡 / 马拉等线路,全程 15 天左右直达。' },
+ { name: '中亚班列', description: '中亚五国全线直达,塔什干、阿拉木图每周固定发车。' },
+ { name: '公路跨境运输', description: 'TIR 公路运输及国内段拖车短驳,门到门灵活衔接。' },
+ { name: '堆场仓储', description: '国际港务区内堆场,装箱、加固、暂存一站式操作。' }
+ ],
+ contact: {
+ phone: '029-9900 XXXX',
+ email: 'booking@silu-rail.example.com',
+ address: '西安市国际港务区港务大道 XX 号',
+ hours: '周一至周五 08:30 - 18:00'
+ }
+ },
+ {
+ slug: 'bluewhale',
+ name: '蓝鲸国际物流(青岛)有限公司',
+ slogan: '日韩航线的贴身管家',
+ verified: false,
+ region: '华东',
+ city: '青岛',
+ routes: ['日韩线', '美线'],
+ services: ['海运整箱', '海运拼箱'],
+ established: 2019,
+ employees: '20-50 人',
+ color: 'sky',
+ description: '聚焦日韩近洋航线,青岛 / 上海出运日本基本港 3 天直达,拼箱每周三班。',
+ about: [
+ '蓝鲸国际物流成立于 2019 年,总部青岛,是一家聚焦日韩近洋航线的年轻货代团队。',
+ '公司与山东海运及多家日本线船司合作,大阪、东京、釜山等基本港拼箱每周三班,整箱即订即走。',
+ '团队核心成员均来自一线船公司,擅长近洋航线的快速响应与灵活操作。'
+ ],
+ strengths: [
+ { title: '日韩专线', description: '日本基本港 3 天直达,拼箱每周三班。', icon: 'i-lucide-ship' },
+ { title: '快速响应', description: '核心成员来自一线船司,询价 30 分钟内回复。', icon: 'i-lucide-zap' },
+ { title: '灵活操作', description: '小货量、异形货、近洋临时补货均可承接。', icon: 'i-lucide-package' }
+ ],
+ servicesDetail: [
+ { name: '日本航线', description: '大阪、东京、横滨、名古屋整箱及拼箱,3 天直达。' },
+ { name: '韩国航线', description: '釜山、仁川整箱及拼箱,周班稳定,可接 DDP。' },
+ { name: '近洋拼箱', description: '日韩基本港每周三班,1CBM 起运,仓库免费暂存 7 天。' }
+ ],
+ contact: {
+ phone: '0532-8800 XXXX',
+ email: 'hr@bluewhale-log.example.com',
+ address: '青岛市市南区香港中路 XX 号 XX 大厦 21 层',
+ hours: '周一至周五 08:30 - 17:30'
+ }
+ },
+ {
+ slug: 'junda',
+ name: '骏达港航物流(广州)有限公司',
+ slogan: '非洲航线的老朋友',
+ verified: true,
+ region: '华南',
+ city: '广州',
+ routes: ['东南亚线', '非洲线'],
+ services: ['海运整箱', '报关报检', '仓储服务'],
+ established: 2011,
+ employees: '120-200 人',
+ color: 'amber',
+ description: '华南至非洲航线深耕十四年,拉各斯 / 蒙巴萨 / 德班直达,工程物流与项目货经验丰富。',
+ about: [
+ '骏达港航物流成立于 2011 年,总部广州,在佛山、东莞设仓库,专注非洲及东南亚航线。',
+ '公司与多家非洲航线船司长期合作,拉各斯、蒙巴萨、德班等主要港口直达服务稳定,工程车辆、水泥厂设备等项目货操作经验丰富。',
+ '配套白云机场及南沙港报关资源,提供仓储、装柜、绑扎加固等全流程地面服务。'
+ ],
+ strengths: [
+ { title: '非洲直达', description: '拉各斯 / 蒙巴萨 / 德班直达航线,西非东非双覆盖。', icon: 'i-lucide-ship' },
+ { title: '项目货经验', description: '工程车辆、成套设备等大件项目货方案定制。', icon: 'i-lucide-container' },
+ { title: '地面一体化', description: '仓储、装柜、绑扎加固、报关全流程自营。', icon: 'i-lucide-warehouse' }
+ ],
+ servicesDetail: [
+ { name: '非洲航线整箱', description: '西非 / 东非 / 南非主要港口整箱直达,可接特种柜。' },
+ { name: '项目物流', description: '工程车辆、成套设备大件运输方案设计与现场操作。' },
+ { name: '仓储装柜', description: '广州 / 佛山仓储装柜,出口免熏蒸托盘及绑扎加固。' },
+ { name: '报关报检', description: '南沙港、白云机场口岸报关,产地证代办。' }
+ ],
+ contact: {
+ phone: '020-3700 XXXX',
+ email: 'gd@junda-shipping.example.com',
+ address: '广州市黄埔区港湾路 XX 号 XX 大厦 9 层',
+ hours: '周一至周六 08:30 - 18:00'
+ }
+ }
+]
+
+// ── 文章数据 ──────────────────────────────────────────────────
+
+export const articles: Article[] = [
+ {
+ id: 'red-sea-rerouting-2026',
+ companySlug: 'huanyang',
+ category: '行业资讯',
+ title: '红海局势缓和后的欧线运价走势:旺季前还能涨多少?',
+ summary: '欧线即期运价在连续两个月回落后企稳,舱位利用率回升至九成。我们结合三大船司的排舱数据,分析旺季前欧线的运价区间与订舱窗口建议。',
+ content: [
+ '经历年初的红海绕行高峰后,欧线即期运价自二季度起持续回落,上海出口至北欧基本港运价较年内高点回落约四成,最近三周开始企稳。',
+ '从舱位利用率看,主流船司欧线周度舱位利用率已回升至 90% 左右,部分航次出现满舱。这一方面是旺季出货的前置,另一方面也是船司主动控制运力投放的结果。',
+ '我们认为,短期内欧线运价将以稳为主、结构性上涨为辅:基本港运价波动有限,但旺季附加费(PSS)已在部分航次开征;内陆点因中转拥堵,涨幅会更明显。',
+ '订舱建议:若货量在 5 个高柜以上,建议提前两周锁定舱位;中小货量可关注拼箱渠道,当前拼箱价格相对整箱更具性价比。'
+ ],
+ date: '2026-08-26',
+ readMinutes: 5
+ },
+ {
+ id: 'us-west-lcr-2026',
+ companySlug: 'huanyang',
+ category: '行业资讯',
+ title: '美西长滩港劳工谈判落地,塞港风险解除?',
+ summary: '劳资协议达成后,长滩 / 洛杉矶港的等泊时间已回落至 2 天以内。但旺季叠加返校季出货,工会换班效率与铁路疏运仍是两大变量。',
+ content: [
+ '持续一年多的美西港口劳工谈判正式落地,新的六年期劳资协议覆盖了从码头到仓储的 2 万余名工人。',
+ '协议达成后,长滩、洛杉矶两大港的等泊时间快速回落,目前在锚地等泊时间已降至 2 天以内,码头作业效率恢复至正常水平的九成以上。',
+ '但需要提醒的是:暑期出货旺季叠加返校季补货,未来两个月美西港口吞吐量预计环比上升 15% 以上。工会新协议下的换班效率、内陆铁路疏运能力,仍是影响提柜速度的两大变量。',
+ '对于计划在四季度出货的客户,我们建议将提货与派送计划各预留 3-5 天弹性,或考虑美东 / 墨西哥湾港口分流。'
+ ],
+ date: '2026-08-22',
+ readMinutes: 4
+ },
+ {
+ id: 'seafood-cold-chain-case',
+ companySlug: 'jifeng',
+ category: '案例分享',
+ title: '48 小时跨半球:一批挪威三文鱼的空运冷链实操',
+ summary: '奥斯陆起飞、北京落地,全程温控记录 2-8℃ 零偏差。拆解这批 12 吨三文鱼的舱位申请、温控方案与清关节点。',
+ content: [
+ '上个月,我们承接了一批 12 吨挪威冰鲜三文鱼的空运业务:奥斯陆起飞、经停后直达北京首都机场,全程地面 + 空中冷链不断链。',
+ '方案设计上,采用主动温控集装箱(RKN e1)搭配备用冰袋方案,出发前在奥斯陆机场完成 4 小时预冷,装载温度严格控制在 2-8℃ 区间。',
+ '清关节点提前与首都机场口岸沟通,鲜活产品走绿色通道,落地后 90 分钟内完成通关放行,较常规流程缩短一半以上。',
+ '最终全程温控记录零偏差,货主损耗率低于 0.5%。冷链空运的核心不只是硬件,更是每个节点的分钟级衔接。'
+ ],
+ date: '2026-08-20',
+ readMinutes: 6
+ },
+ {
+ id: 'china-europe-train-q3',
+ companySlug: 'silu',
+ category: '行业资讯',
+ title: '中欧班列三季度运行数据:西安开行量为何持续领先?',
+ summary: '三季度长安号开行量同比增长 12%,欧洲全境时效稳定在 15 天左右。从集结中心模式看西安枢纽的护城河。',
+ content: [
+ '三季度中欧班列整体开行量保持增长,其中长安号同比增长 12%,继续稳居全国前列,欧洲全境运输时效稳定在 15 天左右。',
+ '西安领先的核心在于「集结中心」模式:货源地集拼 + 本地报关 + 一站式场站操作,把原本分散在各口岸的环节前置,压缩了口岸滞留时间。',
+ '从货类结构看,光伏组件、新能源汽车、家电仍是主力货类,合计占比过半;回程班列的欧洲二手车、粮油货量增长明显,去回程比已优化至接近 1:0.9。',
+ '对于时效敏感但成本预算有限、货量在中欧之间的客户,班列 + 公路门到门的组合方案,性价比正在持续改善。'
+ ],
+ date: '2026-08-18',
+ readMinutes: 5
+ },
+ {
+ id: 'sea-erp-upgrade',
+ companySlug: 'pengcheng',
+ category: '公司动态',
+ title: '鹏城跨境 WMS 3.0 上线:集货仓处理能力提升 40%',
+ summary: '新的仓储管理系统全面接入 AI 面单识别与自动分拣线,深圳仓日均处理订单能力从 3 万提升至 4.2 万单。',
+ content: [
+ '经过三个月的灰度运行,鹏城跨境自研 WMS 3.0 已在深圳、东莞两仓全面上线。',
+ '新系统的核心变化:面单 AI 识别准确率提升至 99.6%,自动分拣线接入后,单件包裹的平均处理时长从 26 秒压缩至 15 秒。',
+ '两仓合并的日均处理订单能力从 3 万单提升至 4.2 万单,大促期间不再需要临时外仓分流。',
+ '下一阶段我们将开放 WMS 的标准 API 给核心客户,实现库存与订单数据的实时双向同步。'
+ ],
+ date: '2026-08-15',
+ readMinutes: 3
+ },
+ {
+ id: 'aog-emergency-case',
+ companySlug: 'jifeng',
+ category: '案例分享',
+ title: 'AOG 紧急航材运输:从接到电话到起飞 11 小时',
+ summary: '一架外航宽体机滞留浦东,急需更换件 2.4 吨。我们如何在一夜之间完成提货、报关、订舱与装载。',
+ content: [
+ '凌晨 0:40,值班手机响起:某外航一架宽体客机因液压部件故障滞留浦东,AOG 紧急航材在苏州工厂,2.4 吨,需要当天装机运回。',
+ '1:20 派车从苏州提货;4:30 货物抵达浦东机场货站;6:00 完成出口报关与安检(航材需民航鉴定,我们提前备好了资质文件)。',
+ '8:30 与航司确认舱位,利用当天上午一班的腹舱空间装机;11:50 飞机起飞。从接到电话到起飞,全程 11 小时。',
+ 'AOG 业务的价值在于预案:航材运输的资质、鉴定文件、货站通道,都需要在平时准备好,紧急时刻才跑得起来。'
+ ],
+ date: '2026-08-12',
+ readMinutes: 4
+ },
+ {
+ id: 'africa-project-cargo-case',
+ companySlug: 'junda',
+ category: '案例分享',
+ title: '30 台工程车是怎么运到拉各斯的:一个项目货的完整拆解',
+ summary: '滚装 + 框架柜组合方案,从广州到拉各斯 38 天。项目货的难点从来不是运输本身,而是方案设计与节点控制。',
+ content: [
+ '客户需求很直接:30 台自卸工程车,交期 45 天内到拉各斯,预算有限。',
+ '方案设计上,我们拆成了滚装船 + 框架柜两段:18 台走滚装船直航拉各斯,12 台因船期错配改用框架柜班轮,两条腿走路分散风险。',
+ '难点在细节:工程车需要拆解后视镜与排气管、断电处理、断电后的固定加固,每台车的绑扎方案都要单独确认;框架柜那批还涉及超限申请与港口吊装协调。',
+ '最终滚装批次 32 天到达、框架柜批次 38 天到达,全部在交期内。项目货的核心能力是「把不确定性拆解成节点」,然后逐个节点盯死。'
+ ],
+ date: '2026-08-08',
+ readMinutes: 6
+ },
+ {
+ id: 'jp-lcl-schedule-update',
+ companySlug: 'bluewhale',
+ category: '公司动态',
+ title: '日本线拼箱加开周三班:大阪 / 东京 / 名古屋全覆盖',
+ summary: '9 月起日本线拼箱加开周三班次,三大基本港每周两班,1CBM 起运,仓库免费暂存 7 天。',
+ content: [
+ '感谢各位客户的支持,我们的日本线拼箱货量持续增长,9 月起加开周三班次。',
+ '调整后,大阪、东京、名古屋三大基本港拼箱均为每周两班(周三 / 周六),截关时间分别为周一 12:00 与周四 12:00。',
+ '拼箱最低 1CBM 起运,仓库免费暂存 7 天,支持异地送货与上门提货。',
+ '新班次首航舱位有限,欢迎通过平台私信或来电提前订舱。'
+ ],
+ date: '2026-08-05',
+ readMinutes: 2
+ }
+]
+
+// ── 数据访问 ──────────────────────────────────────────────────
+
+export function getCompany(slug: string): Company | undefined {
+ return companies.find(c => c.slug === slug)
+}
+
+export function getCompanyArticles(slug: string): Article[] {
+ return articles
+ .filter(a => a.companySlug === slug)
+ .sort((a, b) => b.date.localeCompare(a.date))
+}
+
+export function getArticle(id: string): Article | undefined {
+ return articles.find(a => a.id === id)
+}
+
+export function getLatestArticles(limit = 6): Article[] {
+ return [...articles].sort((a, b) => b.date.localeCompare(a.date)).slice(0, limit)
+}
diff --git a/code/link-site/link-nuxt/app/layouts/company.vue b/code/link-site/link-nuxt/app/layouts/company.vue
new file mode 100644
index 00000000..20b0ac87
--- /dev/null
+++ b/code/link-site/link-nuxt/app/layouts/company.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+ 链通物流 · 物流企业连接平台 © {{ new Date().getFullYear() }}
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/layouts/default.vue b/code/link-site/link-nuxt/app/layouts/default.vue
new file mode 100644
index 00000000..98221dea
--- /dev/null
+++ b/code/link-site/link-nuxt/app/layouts/default.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+ 链通物流
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 链通物流 · 物流企业连接平台 © {{ new Date().getFullYear() }}
+
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/company/[slug].vue b/code/link-site/link-nuxt/app/pages/company/[slug].vue
new file mode 100644
index 00000000..76c7a71c
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/company/[slug].vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/company/[slug]/about.vue b/code/link-site/link-nuxt/app/pages/company/[slug]/about.vue
new file mode 100644
index 00000000..77f3d821
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/company/[slug]/about.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ company.established }}
+
成立年份
+
+
+
{{ company.employees.split(' ')[0] }}
+
企业规模
+
+
+
{{ company.routes.length }}+
+
主营航线
+
+
+
{{ company.services.length }}+
+
服务类型
+
+
+
+
+
+
+ 资质证书
+
+
+
+
+
+
+
{{ qualification.name }}
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/company/[slug]/articles.vue b/code/link-site/link-nuxt/app/pages/company/[slug]/articles.vue
new file mode 100644
index 00000000..80187fd8
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/company/[slug]/articles.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/company/[slug]/contact.vue b/code/link-site/link-nuxt/app/pages/company/[slug]/contact.vue
new file mode 100644
index 00000000..7cfff5aa
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/company/[slug]/contact.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+ 联系方式
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+
+
+ 在线沟通
+
+
+ 登录后可通过站内私信与该企业直接沟通,咨询航线报价、服务方案与合作事宜。
+
+
+ 示例阶段未开放
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/company/[slug]/index.vue b/code/link-site/link-nuxt/app/pages/company/[slug]/index.vue
new file mode 100644
index 00000000..27682478
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/company/[slug]/index.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
关于我们 / ABOUT US
+
+ {{ company.name }}
+
+
+ {{ company.about[0] }}
+
+
+
+
+ 成立于 {{ company.established }} 年
+
+
+
+ {{ company.employees }}
+
+
+
+ {{ company.city }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
主营业务 / SERVICES
+
+ 服务项目
+
+
+
+
+
+
+
+
+
+ {{ service.name }}
+
+
+ {{ service.description }}
+
+
+
+
+
+
+
+
+
+
为什么选择我们 / WHY US
+
+ 核心优势
+
+
+
+
+
+
+
+
+
+ {{ strength.title }}
+
+
+ {{ strength.description }}
+
+
+
+
+
+
+
+
+
+
+
公司动态 / NEWS
+
+ 新闻资讯
+
+
+
+
+
+
+
+ 暂无新闻动态
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/company/[slug]/services.vue b/code/link-site/link-nuxt/app/pages/company/[slug]/services.vue
new file mode 100644
index 00000000..db7374e9
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/company/[slug]/services.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+ {{ service.name }}
+
+
+ 在营
+
+
+
+ {{ service.description }}
+
+
+
+
+
+
+
+ 覆盖航线
+
+
+
+ {{ route }}
+
+
+
+ 需要该企业的航线报价或服务方案?
+
+ 联系他们 →
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/directory.vue b/code/link-site/link-nuxt/app/pages/directory.vue
new file mode 100644
index 00000000..f5eae89e
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/directory.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 共找到 {{ filtered.length }} 家企业
+
+
+
+
+
+
+
+
+
+
+ 没有符合条件的企业,试试放宽筛选条件
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/index.vue b/code/link-site/link-nuxt/app/pages/index.vue
new file mode 100644
index 00000000..46a90bfd
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/index.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+ {{ stat.value }}
+ {{ stat.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/news/[id].vue b/code/link-site/link-nuxt/app/pages/news/[id].vue
new file mode 100644
index 00000000..ecf92bbc
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/news/[id].vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ article.category }}
+
+
+
+ {{ article.date }}
+
+
+
+ {{ article.readMinutes }} 分钟阅读
+
+
+
+
+ {{ article.title }}
+
+
+
+
+
+
+
+
+
+
+
+
发布自
+
{{ company.name }}
+
+
+ 认证企业
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/app/pages/news/index.vue b/code/link-site/link-nuxt/app/pages/news/index.vue
new file mode 100644
index 00000000..718057fd
--- /dev/null
+++ b/code/link-site/link-nuxt/app/pages/news/index.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/link-site/link-nuxt/company-final.png b/code/link-site/link-nuxt/company-final.png
new file mode 100644
index 00000000..00c0a88d
Binary files /dev/null and b/code/link-site/link-nuxt/company-final.png differ
diff --git a/code/link-site/link-nuxt/company-new.png b/code/link-site/link-nuxt/company-new.png
new file mode 100644
index 00000000..a71c1431
Binary files /dev/null and b/code/link-site/link-nuxt/company-new.png differ
diff --git a/code/link-site/link-nuxt/current-company.png b/code/link-site/link-nuxt/current-company.png
new file mode 100644
index 00000000..ff999825
Binary files /dev/null and b/code/link-site/link-nuxt/current-company.png differ
diff --git a/code/link-site/link-nuxt/eslint.config.mjs b/code/link-site/link-nuxt/eslint.config.mjs
new file mode 100644
index 00000000..934c3a1d
--- /dev/null
+++ b/code/link-site/link-nuxt/eslint.config.mjs
@@ -0,0 +1,6 @@
+// @ts-check
+import withNuxt from './.nuxt/eslint.config.mjs'
+
+export default withNuxt(
+ // Your custom configs here
+)
diff --git a/code/link-site/link-nuxt/nuxt.config.ts b/code/link-site/link-nuxt/nuxt.config.ts
new file mode 100644
index 00000000..bd5bf3e6
--- /dev/null
+++ b/code/link-site/link-nuxt/nuxt.config.ts
@@ -0,0 +1,28 @@
+// https://nuxt.com/docs/api/configuration/nuxt-config
+export default defineNuxtConfig({
+ modules: [
+ '@nuxt/eslint',
+ '@nuxt/ui'
+ ],
+
+ devtools: {
+ enabled: true
+ },
+
+ css: ['~/assets/css/main.css'],
+
+ routeRules: {
+ '/': { prerender: true }
+ },
+
+ compatibilityDate: '2026-06-30',
+
+ eslint: {
+ config: {
+ stylistic: {
+ commaDangle: 'never',
+ braceStyle: '1tbs'
+ }
+ }
+ }
+})
diff --git a/code/link-site/link-nuxt/package.json b/code/link-site/link-nuxt/package.json
new file mode 100644
index 00000000..da068b65
--- /dev/null
+++ b/code/link-site/link-nuxt/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "link-nuxt",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "nuxt build",
+ "dev": "nuxt dev",
+ "preview": "nuxt preview",
+ "postinstall": "nuxt prepare",
+ "lint": "eslint .",
+ "typecheck": "nuxt typecheck"
+ },
+ "dependencies": {
+ "@iconify-json/lucide": "^1.2.127",
+ "@iconify-json/simple-icons": "^1.2.94",
+ "@nuxt/ui": "^4.11.0",
+ "nuxt": "^4.5.2",
+ "tailwindcss": "^4.3.3"
+ },
+ "devDependencies": {
+ "@nuxt/eslint": "^1.17.0",
+ "eslint": "^10.9.1",
+ "typescript": "^6.0.3",
+ "vue-tsc": "^3.3.11"
+ },
+ "packageManager": "pnpm@11.24.0"
+}
diff --git a/code/link-site/link-nuxt/pnpm-lock.yaml b/code/link-site/link-nuxt/pnpm-lock.yaml
new file mode 100644
index 00000000..0ddfb385
--- /dev/null
+++ b/code/link-site/link-nuxt/pnpm-lock.yaml
@@ -0,0 +1,11072 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@iconify-json/lucide':
+ specifier: ^1.2.127
+ version: 1.2.127
+ '@iconify-json/simple-icons':
+ specifier: ^1.2.94
+ version: 1.2.94
+ '@nuxt/ui':
+ specifier: ^4.11.0
+ version: 4.11.0(2cb0382fb94ddb82dc3bbb00dab71962)
+ nuxt:
+ specifier: ^4.5.2
+ version: 4.5.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(@parcel/watcher@2.5.6)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(@vue/compiler-sfc@3.5.40)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.1)(rollup@4.60.4))(rollup@4.60.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.47.1)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0)
+ tailwindcss:
+ specifier: ^4.3.3
+ version: 4.3.3
+ devDependencies:
+ '@nuxt/eslint':
+ specifier: ^1.17.0
+ version: 1.17.0(@typescript-eslint/utils@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.40)(esbuild@0.28.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(srvx@0.11.22)(supports-color@10.2.2)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ eslint:
+ specifier: ^10.9.1
+ version: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ typescript:
+ specifier: ^6.0.3
+ version: 6.0.3
+ vue-tsc:
+ specifier: ^3.3.11
+ version: 3.3.11(typescript@6.0.3)
+
+packages:
+
+ '@alloc/quick-lru@5.2.0':
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
+ '@antfu/install-pkg@1.1.0':
+ resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
+
+ '@antfu/install-pkg@2.0.1':
+ resolution: {integrity: sha512-iCKVQcIC0e3oDxEfs3SHQGW+ovhBMZmS1TE+bTk50rVyMCBmCfClv7Qi3HQKlumYwvjb/iIMeWCW2i67q6kFfQ==}
+
+ '@apidevtools/json-schema-ref-parser@14.2.1':
+ resolution: {integrity: sha512-HmdFw9CDYqM6B25pqGBpNeLCKvGPlIx1EbLrVL0zPvj50CJQUHyBNBw45Muk0kEIkogo1VZvOKHajdMuAzSxRg==}
+ engines: {node: '>= 20'}
+ peerDependencies:
+ '@types/json-schema': ^7.0.15
+
+ '@babel/code-frame@7.29.7':
+ resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.29.3':
+ resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.29.0':
+ resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.29.7':
+ resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@8.0.0':
+ resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==}
+ engines: {node: ^22.18.0 || >=24.11.0}
+
+ '@babel/helper-annotate-as-pure@7.29.7':
+ resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.28.6':
+ resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-create-class-features-plugin@7.29.7':
+ resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-globals@7.29.7':
+ resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-member-expression-to-functions@7.29.7':
+ resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.28.6':
+ resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.28.6':
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-optimise-call-expression@7.29.7':
+ resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.29.7':
+ resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-replace-supers@7.29.7':
+ resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.29.7':
+ resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.29.7':
+ resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@8.0.0':
+ resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==}
+ engines: {node: ^22.18.0 || >=24.11.0}
+
+ '@babel/helper-validator-identifier@7.29.7':
+ resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@8.0.4':
+ resolution: {integrity: sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==}
+ engines: {node: ^22.18.0 || >=24.11.0}
+
+ '@babel/helper-validator-option@7.27.1':
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.29.2':
+ resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.29.7':
+ resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/parser@8.0.4':
+ resolution: {integrity: sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==}
+ engines: {node: ^22.18.0 || >=24.11.0}
+ hasBin: true
+
+ '@babel/plugin-syntax-jsx@7.28.6':
+ resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.29.7':
+ resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.29.7':
+ resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/template@7.29.7':
+ resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.29.7':
+ resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.29.7':
+ resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@8.0.4':
+ resolution: {integrity: sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==}
+ engines: {node: ^22.18.0 || >=24.11.0}
+
+ '@bomb.sh/tab@0.0.19':
+ resolution: {integrity: sha512-dTRfo9Q9B+lbLG3JCu8a/AGQSfD2XXcFcnakQzVjSOX+VvR/s9zpsH8TlqV3iHqazniRn1Ypwd1hcRlXcu/4BA==}
+ hasBin: true
+ peerDependencies:
+ cac: ^6.7.14
+ citty: ^0.1.6 || ^0.2.0
+ commander: ^13.1.0 || ^14.0.0 || ^15.0.0
+ peerDependenciesMeta:
+ cac:
+ optional: true
+ citty:
+ optional: true
+ commander:
+ optional: true
+
+ '@capsizecss/unpack@4.0.0':
+ resolution: {integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==}
+ engines: {node: '>=18'}
+
+ '@clack/core@1.4.3':
+ resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==}
+ engines: {node: '>= 20.12.0'}
+
+ '@clack/prompts@1.7.0':
+ resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==}
+ engines: {node: '>= 20.12.0'}
+
+ '@cloudflare/kv-asset-handler@0.4.2':
+ resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@colordx/core@5.4.3':
+ resolution: {integrity: sha512-kIxYSfA5T8HXjav55UaaH/o/cKivF6jCCGIb8eqtcsfI46wsvlSiT8jMDyrl779qLec3c2c2oHBZo4oAhvbjrQ==}
+
+ '@devframes/hub@0.7.15':
+ resolution: {integrity: sha512-g2aUJZAsmBsWARqvA2nhT5F9v2usJ/uiavstsWA7FZaXU6+2LYx/OafqDlFNUa+PxGUWwEZe/qzwAuRoZjv8uA==}
+ peerDependencies:
+ devframe: 0.7.15
+
+ '@devframes/json-render@0.7.15':
+ resolution: {integrity: sha512-IB1EsAHKK313yuslrEyAl7z6347YeV+eT5EtNQwjLcoYh1sD6er/eqdj4Aeicovpg49U7tmlFZHicDxVl1W89A==}
+ peerDependencies:
+ '@devframes/hub': 0.7.15
+ devframe: 0.7.15
+ peerDependenciesMeta:
+ '@devframes/hub':
+ optional: true
+
+ '@dxup/nuxt@0.5.6':
+ resolution: {integrity: sha512-uZjAFoocWtWHr7YP9jm6FqwI8kjX2QN9bjcncoZt0GS+zExIAP3Ewv6EqEUvVP7w9pjZE+T19QxLHeoacN/MNg==}
+
+ '@dxup/unimport@0.1.2':
+ resolution: {integrity: sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==}
+
+ '@emnapi/core@1.10.0':
+ resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
+
+ '@emnapi/core@1.11.2':
+ resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==}
+
+ '@emnapi/core@2.0.0-alpha.3':
+ resolution: {integrity: sha512-AZypUeJ/yByuxyS7BlSNRDOMLMlROYtjYdIAuBmJssVz1UJDSeYxLrdizhXCFYhedC5bqd/ASy8EuNXbVVXp9g==}
+
+ '@emnapi/runtime@1.10.0':
+ resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
+
+ '@emnapi/runtime@1.11.2':
+ resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==}
+
+ '@emnapi/runtime@2.0.0-alpha.3':
+ resolution: {integrity: sha512-hFPAhMUjJD9BSyCANEISPOogeXC9Zo9ZQl7L6vKnaVsMkCtzznaW/naYypeyl0Gv5rYfWYsZbpixTMpjDJzQeA==}
+
+ '@emnapi/wasi-threads@1.2.1':
+ resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
+
+ '@emnapi/wasi-threads@1.2.2':
+ resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==}
+
+ '@emnapi/wasi-threads@2.0.1':
+ resolution: {integrity: sha512-9DsSk+o5NBX0CCJT8s0EROGSGxjR/tKu6aBTaVyq+SjAEQH4XcdcRxPBRzsBLizTTJ49MJjF+jgu3qnO9GLQcQ==}
+
+ '@es-joy/jsdoccomment@0.91.0':
+ resolution: {integrity: sha512-vgqlMGNNhZxwDYbUNIHj3Hskb4R28iqdXx90ufHyt/NeuTQkeqjTDslAs9I0/GCAfbxP5BpH5WsL1R1fht5Lxg==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@es-joy/resolve.exports@1.2.0':
+ resolution: {integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==}
+ engines: {node: '>=10'}
+
+ '@esbuild/aix-ppc64@0.27.7':
+ resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/aix-ppc64@0.28.0':
+ resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.27.7':
+ resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.28.0':
+ resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.27.7':
+ resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.28.0':
+ resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.27.7':
+ resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/android-x64@0.28.0':
+ resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.27.7':
+ resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-arm64@0.28.0':
+ resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.27.7':
+ resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.28.0':
+ resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.27.7':
+ resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-arm64@0.28.0':
+ resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.27.7':
+ resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.28.0':
+ resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.27.7':
+ resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm64@0.28.0':
+ resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.27.7':
+ resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.28.0':
+ resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.27.7':
+ resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.28.0':
+ resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.27.7':
+ resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.28.0':
+ resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.27.7':
+ resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.28.0':
+ resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.27.7':
+ resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.28.0':
+ resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.27.7':
+ resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.28.0':
+ resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.27.7':
+ resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.28.0':
+ resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.27.7':
+ resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.28.0':
+ resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-arm64@0.27.7':
+ resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-arm64@0.28.0':
+ resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.27.7':
+ resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.28.0':
+ resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.27.7':
+ resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-arm64@0.28.0':
+ resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.27.7':
+ resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.28.0':
+ resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.27.7':
+ resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/openharmony-arm64@0.28.0':
+ resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/sunos-x64@0.27.7':
+ resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/sunos-x64@0.28.0':
+ resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.27.7':
+ resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-arm64@0.28.0':
+ resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.27.7':
+ resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.28.0':
+ resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.27.7':
+ resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.28.0':
+ resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@eslint-community/eslint-utils@4.9.1':
+ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.12.2':
+ resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/compat@2.1.0':
+ resolution: {integrity: sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ peerDependencies:
+ eslint: ^8.40 || 9 || 10
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+
+ '@eslint/config-array@0.23.5':
+ resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@eslint/config-helpers@0.5.5':
+ resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@eslint/config-helpers@0.7.0':
+ resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@eslint/config-inspector@3.2.0':
+ resolution: {integrity: sha512-kylJhcii8eDOiRFPANNUHOyDebBIOt+nqYXt8q6W9FbhYzFJAXjLzJz6KFNzY0WvIyOBKdbSQdwdPNrkMh05tg==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ hasBin: true
+ peerDependencies:
+ eslint: ^8.50.0 || ^9.0.0 || ^10.0.0
+
+ '@eslint/core@1.2.1':
+ resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@eslint/css-tree@4.0.5':
+ resolution: {integrity: sha512-iPmijIAq4hlIJB86PYmY/fcZORHtjphSqICDbwuw32A/JmkhZQ/K/6TjHE03zqf3n5yABpVcbRAMG8Mi9ojy8g==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@eslint/js@10.0.1':
+ resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ peerDependencies:
+ eslint: ^10.0.0
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+
+ '@eslint/object-schema@3.0.5':
+ resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@eslint/plugin-kit@0.7.2':
+ resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@floating-ui/core@1.8.0':
+ resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==}
+
+ '@floating-ui/dom@1.8.0':
+ resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==}
+
+ '@floating-ui/utils@0.2.12':
+ resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==}
+
+ '@floating-ui/vue@1.1.11':
+ resolution: {integrity: sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==}
+
+ '@humanfs/core@0.19.2':
+ resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/node@0.16.8':
+ resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/types@0.15.0':
+ resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/retry@0.4.3':
+ resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
+ engines: {node: '>=18.18'}
+
+ '@iconify-json/lucide@1.2.127':
+ resolution: {integrity: sha512-7KuCCpkly00kefna4wEnCr8l2HFRkbn4mD4zRib8wCSbrBmnR/l57ExpU6j5jv/Bo+qHpWuHpDtcqceQ0ptArw==}
+
+ '@iconify-json/simple-icons@1.2.94':
+ resolution: {integrity: sha512-l8UWzVxKaqZd9ABsE/M/9p6NyGkQnmCnOoZyhQmjlXCtY5PuL2rcWxOFk2l9pk7ux3ERMPkTLE4jl6kQpTkwxA==}
+
+ '@iconify/collections@1.0.727':
+ resolution: {integrity: sha512-n+ipAqz5A6TWExnndwdT6qVX7KfXiw5GNDSxO2otXs6rxFWdHqizHTW1WvmWmT6m2BqQ8lhzUyWSJvm4M3nMAg==}
+
+ '@iconify/types@2.0.0':
+ resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+
+ '@iconify/utils@3.1.4':
+ resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==}
+
+ '@iconify/vue@5.0.1':
+ resolution: {integrity: sha512-aumwwooJlFJ5H5qYWB6ZTAyM0C8hpfcSVLB9/a3qnH1GGvIJ+FEbpEs4s/HfErYe/M5qZeLjwmESR5fFm3lXEw==}
+ peerDependencies:
+ vue: '>=3.0.0'
+
+ '@internationalized/date@3.12.1':
+ resolution: {integrity: sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ==}
+
+ '@internationalized/number@3.6.6':
+ resolution: {integrity: sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ==}
+
+ '@ioredis/commands@1.5.1':
+ resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==}
+
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
+ '@isaacs/fs-minipass@4.0.1':
+ resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
+ engines: {node: '>=18.0.0'}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.11':
+ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@json-render/core@0.19.0':
+ resolution: {integrity: sha512-vvcyZ+10EDZKbEyB1J2kXOGfDaiZR2LurZGSqi2r5STHyKr+Te85DWaBxTwRGgM7U1LtIvNx85BzzjElRKoAIg==}
+ peerDependencies:
+ zod: ^4.0.0
+
+ '@kwsites/file-exists@1.1.1':
+ resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==}
+
+ '@kwsites/promise-deferred@1.1.1':
+ resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==}
+
+ '@mapbox/node-pre-gyp@2.0.3':
+ resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ '@napi-rs/wasm-runtime@1.2.0':
+ resolution: {integrity: sha512-kDoONqMa+VnZ4vvvu/ZUurpJ4gkZU57e7g69qpNgWhYcZFPUHZM2CEMKm+cG6ufDVALbjMvfmMjFVqaK7uEMnA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0}
+ peerDependencies:
+ '@emnapi/core': ^2.0.0-alpha.3
+ '@emnapi/runtime': ^2.0.0-alpha.3
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@nuxt/cli@3.37.0':
+ resolution: {integrity: sha512-Zj9NwHjEBzVrgezsgMFjpMhNqwNgROk9DzNi/dyfk1mCbXIRigV11br2xOl0Satek30bmv7oZAfMtCnDe6Ip0Q==}
+ engines: {node: ^16.14.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ '@nuxt/schema': ^4.4.6
+ peerDependenciesMeta:
+ '@nuxt/schema':
+ optional: true
+
+ '@nuxt/devalue@2.0.2':
+ resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==}
+
+ '@nuxt/devtools-kit@3.4.1':
+ resolution: {integrity: sha512-6ltPm2yUW8GvDdf3VJna7+flLi+ej7xRfSr+S4ovevKt/CuPf9EqYOn1jW7Kw/U1MXt/71zkn+/O2vu3G6O9Hg==}
+ peerDependencies:
+ vite: '>=6.0'
+
+ '@nuxt/devtools-wizard@3.4.1':
+ resolution: {integrity: sha512-taGeuTnkHsZVjgD9r6NXvvHaBzB2j4mCgOmlmkz3ntsqgh1SJfmsD11Tmtl7FVAxJS8Wuvuzgt0GyTlADBW9Wg==}
+ hasBin: true
+
+ '@nuxt/devtools@3.4.1':
+ resolution: {integrity: sha512-20zZs6k/zAdi+PM7s1BwxE3hanZ+R1OGi5DWCKPyzSnhUUeeNebvWNgec7Rwnx6iKLkJfK4WFIZ+FL2QurG/ZQ==}
+ hasBin: true
+ peerDependencies:
+ '@vitejs/devtools': '*'
+ vite: '>=6.0'
+ peerDependenciesMeta:
+ '@vitejs/devtools':
+ optional: true
+
+ '@nuxt/eslint-config@1.17.0':
+ resolution: {integrity: sha512-5lHecnGvi7RxGsR3Amvnl47bxb3F4wFD9KQgbbmhd6prz3OAAbgQio9EK88tPyNHt7+dxIFFOnCH6TJNl/QbqQ==}
+ peerDependencies:
+ eslint: ^9.0.0 || ^10.0.0
+ eslint-plugin-format: '*'
+ peerDependenciesMeta:
+ eslint-plugin-format:
+ optional: true
+
+ '@nuxt/eslint-plugin@1.17.0':
+ resolution: {integrity: sha512-h/fn4K09tA5tvdLj9Zlu5mb3TOVO2zLAetCsfJ1/LLVm2XWtgDVhfSB+Sm93cF1rCGxahmHZd4RJz2nAsWTDvg==}
+ peerDependencies:
+ eslint: ^9.0.0 || ^10.0.0
+
+ '@nuxt/eslint@1.17.0':
+ resolution: {integrity: sha512-54aD2xJvI2QJnHvQwN22hEgE/izF5ez+diPE7yLCJskKQ0tqPrNJCcRjBtuFQmQMQjTfHESsfuFdLfwMGUz8bw==}
+ peerDependencies:
+ eslint: ^9.0.0 || ^10.0.0
+ eslint-webpack-plugin: ^4.1.0
+ vite-plugin-eslint2: ^5.0.0
+ peerDependenciesMeta:
+ eslint-webpack-plugin:
+ optional: true
+ vite-plugin-eslint2:
+ optional: true
+
+ '@nuxt/fonts@0.14.0':
+ resolution: {integrity: sha512-4uXQl9fa5F4ibdgU8zomoOcyMdnwgdem+Pi8JEqeDYI5yPR32Kam6HnuRr47dTb97CstaepAvXPWQUUHMtjsFQ==}
+
+ '@nuxt/icon@2.5.0':
+ resolution: {integrity: sha512-EBczSfd3QmAD7GoSmJ5jCPvQ5zzNaPPuWPU9DSMcBuBM10A3JIvjaMLEOEniHQRz4iVPb05cJRO/JdC60oiiwg==}
+
+ '@nuxt/kit@4.5.2':
+ resolution: {integrity: sha512-l66LU9DcJYjmNwqwAj2I5UGRrUbnG2DOKGChnN70zIGtn0eq/z87gi/FRgha6eMb9/FmB1PFHgtx6PWVml1C2Q==}
+ engines: {node: '>=18.12.0'}
+
+ '@nuxt/nitro-server@4.5.2':
+ resolution: {integrity: sha512-sx/vtT8D1WIRUOMuKQz/9z8nZb7jgVWc6HWwlkXKDjYZ84otPFtYCozKqhXWv6xf3JxJvge/RUAOwh9Z7P4nQQ==}
+ engines: {node: ^22.19.0 || ^24.11.0 || >=26.0.0}
+ peerDependencies:
+ '@babel/plugin-proposal-decorators': ^7.25.0 || ^8.0.0
+ '@babel/plugin-syntax-typescript': ^7.25.0 || ^8.0.0
+ '@rollup/plugin-babel': ^6.0.0 || ^7.0.0
+ nuxt: ^4.5.2
+ peerDependenciesMeta:
+ '@babel/plugin-proposal-decorators':
+ optional: true
+ '@babel/plugin-syntax-typescript':
+ optional: true
+ '@rollup/plugin-babel':
+ optional: true
+
+ '@nuxt/schema@4.5.2':
+ resolution: {integrity: sha512-h9g1kt9O2iU9nX6HDFu9gvwtpn+8oSJX0RSTWRBnEx/Pkz+WlOHtjuS0SbkTAXw5aT1+H1GysWVwNTjJfBY/0w==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+
+ '@nuxt/telemetry@2.8.0':
+ resolution: {integrity: sha512-zAwXY24KYvpLTmiV+osagd2EHkfs5IF+7oDZYTQoit5r0kPlwaCNlzHp5I/wUAWT4LBw6lG8gZ6bWidAdv/erQ==}
+ engines: {node: '>=18.12.0'}
+ hasBin: true
+ peerDependencies:
+ '@nuxt/kit': '>=3.0.0'
+
+ '@nuxt/ui@4.11.0':
+ resolution: {integrity: sha512-gDs67/fWk3kipcEV4Pc5h1VnZD1glfWfINmJU7s3qpkxxRTkfkPxnUszXG664whNWcoqucS1WgZ/rNjZa3pTMw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@inertiajs/vue3': ^2.0.7 || ^3.0.0
+ '@internationalized/date': ^3.0.0
+ '@internationalized/number': ^3.0.0
+ '@nuxt/content': ^3.0.0
+ '@tiptap/core': ^3
+ '@tiptap/extension-bubble-menu': ^3
+ '@tiptap/extension-code': ^3
+ '@tiptap/extension-collaboration': ^3
+ '@tiptap/extension-drag-handle': ^3
+ '@tiptap/extension-drag-handle-vue-3': ^3
+ '@tiptap/extension-floating-menu': ^3
+ '@tiptap/extension-horizontal-rule': ^3
+ '@tiptap/extension-image': ^3
+ '@tiptap/extension-mention': ^3
+ '@tiptap/extension-node-range': ^3
+ '@tiptap/extension-placeholder': ^3
+ '@tiptap/markdown': ^3
+ '@tiptap/pm': ^3
+ '@tiptap/starter-kit': ^3
+ '@tiptap/suggestion': ^3
+ '@tiptap/vue-3': ^3
+ ai: ^6 || ^7
+ joi: ^18.0.0
+ superstruct: ^2.0.0
+ tailwindcss: ^4.0.0
+ typescript: ^5.6.3 || ^6.0.0 || ^7.0.0
+ valibot: ^1.0.0
+ vue-router: ^4.5.0 || ^5.0.0
+ yup: ^1.7.0
+ zod: ^3.24.0 || ^4.0.0
+ peerDependenciesMeta:
+ '@inertiajs/vue3':
+ optional: true
+ '@internationalized/date':
+ optional: true
+ '@internationalized/number':
+ optional: true
+ '@nuxt/content':
+ optional: true
+ ai:
+ optional: true
+ joi:
+ optional: true
+ superstruct:
+ optional: true
+ valibot:
+ optional: true
+ vue-router:
+ optional: true
+ yup:
+ optional: true
+ zod:
+ optional: true
+
+ '@nuxt/vite-builder@4.5.2':
+ resolution: {integrity: sha512-fC8KUs5F1VpSEjTIjmx5pdflciMlp3FDCubx3AXElvRPLtBAPmyB69kmqVFjRnVQ8+vRHNyI7iBHUg9Se8srLA==}
+ engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0}
+ peerDependencies:
+ '@babel/plugin-proposal-decorators': ^7.25.0 || ^8.0.0
+ '@babel/plugin-syntax-jsx': ^7.25.0 || ^8.0.0
+ nuxt: 4.5.2
+ rolldown: ^1.0.0
+ rollup-plugin-visualizer: ^6.0.0 || ^7.0.1
+ vue: ^3.3.4
+ peerDependenciesMeta:
+ '@babel/plugin-proposal-decorators':
+ optional: true
+ '@babel/plugin-syntax-jsx':
+ optional: true
+ rolldown:
+ optional: true
+ rollup-plugin-visualizer:
+ optional: true
+
+ '@nuxtjs/color-mode@4.0.1':
+ resolution: {integrity: sha512-eiA7hWXi5zNHaYKyJFCGF6i0wFZtuvR7KDXZ6jiSvwxjCpRFwphrw0MOSmNfArTSSsT1wpW+/2H92cejeVfUlg==}
+
+ '@oxc-parser/binding-android-arm-eabi@0.140.0':
+ resolution: {integrity: sha512-ZfjDZ422mo7eo3b3VltqNsV9kmv1qt/sPEAMSl64iOSwhVfd0eIZ9LB79Mbs1xYXJnk7WSROwzBCKDIiVxPTvQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@oxc-parser/binding-android-arm64@0.140.0':
+ resolution: {integrity: sha512-Ia8jSvikUX6Sf+Ht+KOCUF/k1HpR0VlmqIYymubmWDebOEGtsyliHDR6JxsZ4IX3/c/GbrB1uh09aVGQv/LQmQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxc-parser/binding-darwin-arm64@0.140.0':
+ resolution: {integrity: sha512-G6VK0nK61pH0d0mBjUqSZbVxGqqO5uzeginLDQj+gOO6ObfJjXRwgkD/ol0w1INcnFeAb6YGGO7qc3ueGHaycQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-parser/binding-darwin-x64@0.140.0':
+ resolution: {integrity: sha512-HazBOuZzd2pO1C2uMmp8Gv7mhzMHqKSKDS1OZfcLEvpIcgA+48J92HEtNanVHDIzRD9PRPCV6aS6fkZIWOVl8Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-parser/binding-freebsd-x64@0.140.0':
+ resolution: {integrity: sha512-9hSUU+HmTUyOe4JzMHxNGgLWNY7rrO+6ShicZwImNJacEAACDMIkuEQQkvXSL+WJN50jaNtLYJv8s4OcBdpyUQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.140.0':
+ resolution: {integrity: sha512-RAEuQsYtS0KcDFqN0ABTjyyNlokS91JeuDuoW9tEbG0JTbRNXnpQUdbYc/16JoA6Z/2ALbNrE3KmxtqDiuIjCQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-arm-musleabihf@0.140.0':
+ resolution: {integrity: sha512-c4CkHvPvqfojouredJ0w3e6+jiBq0SbFyhH61kr/zPb/7XsaYTNKQ54vmlSsopfdQbNDX40ZeK9Abs2Qet6wcw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-arm64-gnu@0.140.0':
+ resolution: {integrity: sha512-yrjmLj8ixPB25yqvPGr28meGjb+keed7m1GqqY/0uqkhZIoT4t9zmfwUgFEtC33C7dtE+UQ7TU0IaVxf97SWJg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-arm64-musl@0.140.0':
+ resolution: {integrity: sha512-ggGMQTN8Agwxp2WiLMpdY671dt0qTDJWiWlJeig3HnUwTnerRl0J2JdGVghWBeDcss2D9S2V2Js6dZHEiVabVA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-parser/binding-linux-ppc64-gnu@0.140.0':
+ resolution: {integrity: sha512-IgTs8xYAFgAUGNmR65tIqjlJ8vKgrfXzC515e9goSdfMyKQV4aJpd2pUUudU4u51G64H0/DSEJEXKOraxm9ZCA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-riscv64-gnu@0.140.0':
+ resolution: {integrity: sha512-A1x+PMWZmSGaFVOx2YeNTFau8uD+QO14/vLP4GrcuvUPs3+nBkUOjy9Lus86ftHsDojjYMbvBelmKc3F7Rv08g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-riscv64-musl@0.140.0':
+ resolution: {integrity: sha512-zBqpfRo2myWPrPo5xUjeZqlnPXPXsX8BcWtWff66/eGRQdbPjhzPgXa/F+AtxT2afUViPxbuDlwscMKzQ5tg+g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-parser/binding-linux-s390x-gnu@0.140.0':
+ resolution: {integrity: sha512-2M1DPm/8w9I//YzFlFC9qXw+r2tJFh5CYwRlYTq2vUJQS7qoQftEDeCZ8EnN7KHtvSiXvYj8mZI5pR7DpXmcEw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-x64-gnu@0.140.0':
+ resolution: {integrity: sha512-8aRDbZ/U/jO8N7go1MO72jtbpb4uswV8d7vOkMvt/BPgZiyEYvl1VIWK4ESxZZhnJ4tqwVldgX7dNiP/eB1Jdg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-x64-musl@0.140.0':
+ resolution: {integrity: sha512-xRqpeI8U2sQQS1W5BMWRyMTxtagkuLG2dEWruet5lFsWHTvBth11/TpSaJatHdqVVwHN0q3uuoS9zRsGinq8hg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-parser/binding-openharmony-arm64@0.140.0':
+ resolution: {integrity: sha512-GbGRe26MqAKciFRvXeHNQJ6VAHYs9R4miP89sEAncysM3n+f4lnyLWgsa9kklJNpfnxdq2yRoNYHFqwBckVimw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxc-parser/binding-wasm32-wasi@0.140.0':
+ resolution: {integrity: sha512-vFiC1hqys+hkX1GnQkIoiTQJNiUm43Z0lO35ETKXTw0YtpW7+cN58YRRXFAQQ+TgpkIi3lrhcxdlnqz+Oi3ptQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [wasm32]
+
+ '@oxc-parser/binding-win32-arm64-msvc@0.140.0':
+ resolution: {integrity: sha512-fGSQldwEYKhM+H8uLt76Op8hh5+FYaR6lvvQ1Txw3Mhn86DyQXLcI0fi1EkFlTK7F+46OCk/j0AJMzZQm6g5Xg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-parser/binding-win32-ia32-msvc@0.140.0':
+ resolution: {integrity: sha512-sDS2Bai+g3ZWYwfZqmosiSuFDBcVnZ3Ta6pszzsiJoLMqsJEWKcxXXbGa7b7yXr++W2lQNPb3ZRJ8czseqL7RA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@oxc-parser/binding-win32-x64-msvc@0.140.0':
+ resolution: {integrity: sha512-kHbE1zWyb5OQgJA6/5P4WjiuB01sYdQwtZnSSyE58FQEXDAMnyeeq4vj7KgN75i5SlBzOs8A5MrtlD3gOlDKqQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@oxc-project/types@0.140.0':
+ resolution: {integrity: sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==}
+
+ '@oxc-project/types@0.142.0':
+ resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==}
+
+ '@parcel/watcher-android-arm64@2.5.6':
+ resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ '@parcel/watcher-darwin-arm64@2.5.6':
+ resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@parcel/watcher-darwin-x64@2.5.6':
+ resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@parcel/watcher-freebsd-x64@2.5.6':
+ resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@parcel/watcher-linux-arm-glibc@2.5.6':
+ resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ '@parcel/watcher-linux-arm-musl@2.5.6':
+ resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: [musl]
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.6':
+ resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@parcel/watcher-linux-arm64-musl@2.5.6':
+ resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@parcel/watcher-linux-x64-glibc@2.5.6':
+ resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@parcel/watcher-linux-x64-musl@2.5.6':
+ resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@parcel/watcher-wasm@2.5.6':
+ resolution: {integrity: sha512-byAiBZ1t3tXQvc8dMD/eoyE7lTXYorhn+6uVW5AC+JGI1KtJC/LvDche5cfUE+qiefH+Ybq0bUCJU0aB1cSHUA==}
+ engines: {node: '>= 10.0.0'}
+ bundledDependencies:
+ - napi-wasm
+
+ '@parcel/watcher-win32-arm64@2.5.6':
+ resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@parcel/watcher-win32-ia32@2.5.6':
+ resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@parcel/watcher-win32-x64@2.5.6':
+ resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ '@parcel/watcher@2.5.6':
+ resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==}
+ engines: {node: '>= 10.0.0'}
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@polka/url@1.0.0-next.29':
+ resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
+
+ '@poppinss/colors@4.1.6':
+ resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==}
+
+ '@poppinss/dumper@0.7.0':
+ resolution: {integrity: sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==}
+
+ '@poppinss/exception@1.2.3':
+ resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==}
+
+ '@rolldown/binding-android-arm64@1.2.1':
+ resolution: {integrity: sha512-02hOeOSryYxVrOIphmLAsqnCJWxwlzFk+pEt/N/i6OgT3lShHO7xGCU5cpgchRDHboAEbSjzgGh+O/u1GswQmA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.2.1':
+ resolution: {integrity: sha512-fMsTOnN0OjFm3CyppWPitKnc8UlliVARUULW6cfU6AIqjdtgmSFWSk9vecHzZduv/yMWIHDlRhM1e8Iff9uAfA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.2.1':
+ resolution: {integrity: sha512-1wjKdz/XLGKHaTNHjQveQ/B23TKx4ItAqm1JbyVuvNPc4Ze0Fb48s49TAd/2zcplPl8okE/UbTgmlVfwT7eFeQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@1.2.1':
+ resolution: {integrity: sha512-Fa0jHR07E7YBN4vOEsbVf2briYNsuOowfLJaXULZM0ldMlaCaj2LJgLMbMe4iacRyZmvR8efFhgR9wKuGclQUg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.1':
+ resolution: {integrity: sha512-pzkgu1SSHGgRRyRZ4fbmSgmajbVt+epaLP99NDjFft69v/ypfTi6swBMiVdh2EkQ0OSnHE1lZDM7DRGkyAzUpA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@1.2.1':
+ resolution: {integrity: sha512-QI5SEDY8cbiYWHx0VO4vIc3UlS6a32vXHjU8Qy/17adEmZIPuByJg13UEvo9c/UCiUkdcVWY83C+b+JrwnNyUg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-arm64-musl@1.2.1':
+ resolution: {integrity: sha512-Sm41FyCeXqmYcERoYOCbGIL5hNfd8w9LQ7Y61Bev48HkcjaJqV/iiVOaiDxjVTRMS+QKrZmD8cfPt4uMVnvM+A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-linux-ppc64-gnu@1.2.1':
+ resolution: {integrity: sha512-2x+WhXTGl9yJYPbltW/BSEPTVz9OIWQyER4N+gJEDWkkn904eRcBzELqh/Hf7K0w/ubGbKNMv0ZC+94QK/IFEg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-s390x-gnu@1.2.1':
+ resolution: {integrity: sha512-eEjmQpuRQayHPWWnywaWHkFT3ToPbP3RYy42VVd/B9aBGDA+Ol25EIWHxKQST3IiWJjikCWUF7KtbfqwZrzVwQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-gnu@1.2.1':
+ resolution: {integrity: sha512-/Orga1fZYkLc/56jBICcHrKchl8Z2UKdDSr3LG9ToWO1lQ6a4Livk9Xz+9WN91zsz5QR3XQz2NNoSDEvP6qadw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-musl@1.2.1':
+ resolution: {integrity: sha512-xxBJRL+0q0Kce7orznGWLuylHDY65vuARXZRpX+hPdv+DqK2c3NlCsVA98tlWzWNEE7yPqA/1NQ5nnCrj49Y5A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-openharmony-arm64@1.2.1':
+ resolution: {integrity: sha512-M6AdXIXw3s+/8XpKMzdGDEXGS1S7kwUsy+rcTIUIOx5Ge4nXKCtAFHFV9YKkXvGcC5WMoTjAteLzlsQROVI0Yw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-wasm32-wasi@1.2.1':
+ resolution: {integrity: sha512-/TX0SoRGojHzSAHpfVBbavRVSazg5U3h3Y3VXfcc0cdugq6kxdqw8LPGFiPr+/7gE/60zRcsOY2Vi9b9eT0jww==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0}
+
+ '@rolldown/binding-win32-arm64-msvc@1.2.1':
+ resolution: {integrity: sha512-EvRrivJieyHG+AO9lleZWgq+g0+S7oV2C51yuqlcyU/R9net+sI4Pj0F+lUoP2bEr6TWX3SqFaaS0SzfLxSzkw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.2.1':
+ resolution: {integrity: sha512-Z4eCmn5QJ/5+azF9knpLWKfVd9aidn0mAe9TpJgvBLId9Ax3t0+JVxBmT25Bv7NBbVW1TZyKjQjQReouMeH5UQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/pluginutils@1.0.1':
+ resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
+
+ '@rollup/plugin-alias@6.0.0':
+ resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ rollup: '>=4.0.0'
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-commonjs@29.0.2':
+ resolution: {integrity: sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg==}
+ engines: {node: '>=16.0.0 || 14 >= 14.17'}
+ peerDependencies:
+ rollup: ^2.68.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-inject@5.0.5':
+ resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-json@6.1.0':
+ resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-node-resolve@16.0.3':
+ resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.78.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-replace@6.0.3':
+ resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-terser@1.0.0':
+ resolution: {integrity: sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ rollup: ^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/pluginutils@5.3.0':
+ resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/rollup-android-arm-eabi@4.60.4':
+ resolution: {integrity: sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.60.4':
+ resolution: {integrity: sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.60.4':
+ resolution: {integrity: sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.60.4':
+ resolution: {integrity: sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.60.4':
+ resolution: {integrity: sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.60.4':
+ resolution: {integrity: sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.60.4':
+ resolution: {integrity: sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.60.4':
+ resolution: {integrity: sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==}
+ cpu: [arm]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-arm64-gnu@4.60.4':
+ resolution: {integrity: sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-arm64-musl@4.60.4':
+ resolution: {integrity: sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-loong64-gnu@4.60.4':
+ resolution: {integrity: sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==}
+ cpu: [loong64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-loong64-musl@4.60.4':
+ resolution: {integrity: sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==}
+ cpu: [loong64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.60.4':
+ resolution: {integrity: sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-ppc64-musl@4.60.4':
+ resolution: {integrity: sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.60.4':
+ resolution: {integrity: sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-riscv64-musl@4.60.4':
+ resolution: {integrity: sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-s390x-gnu@4.60.4':
+ resolution: {integrity: sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-x64-gnu@4.60.4':
+ resolution: {integrity: sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-x64-musl@4.60.4':
+ resolution: {integrity: sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-openbsd-x64@4.60.4':
+ resolution: {integrity: sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@rollup/rollup-openharmony-arm64@4.60.4':
+ resolution: {integrity: sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rollup/rollup-win32-arm64-msvc@4.60.4':
+ resolution: {integrity: sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.60.4':
+ resolution: {integrity: sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-gnu@4.60.4':
+ resolution: {integrity: sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.60.4':
+ resolution: {integrity: sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==}
+ cpu: [x64]
+ os: [win32]
+
+ '@simple-git/args-pathspec@1.0.3':
+ resolution: {integrity: sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==}
+
+ '@simple-git/argv-parser@1.1.1':
+ resolution: {integrity: sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==}
+
+ '@sindresorhus/base62@1.0.0':
+ resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==}
+ engines: {node: '>=18'}
+
+ '@sindresorhus/is@7.2.0':
+ resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==}
+ engines: {node: '>=18'}
+
+ '@sindresorhus/merge-streams@4.0.0':
+ resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
+ engines: {node: '>=18'}
+
+ '@speed-highlight/core@1.2.15':
+ resolution: {integrity: sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==}
+
+ '@standard-schema/spec@1.1.0':
+ resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
+
+ '@stylistic/eslint-plugin@5.10.0':
+ resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^9.0.0 || ^10.0.0
+
+ '@swc/helpers@0.5.21':
+ resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==}
+
+ '@tailwindcss/node@4.3.3':
+ resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==}
+
+ '@tailwindcss/oxide-android-arm64@4.3.3':
+ resolution: {integrity: sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [android]
+
+ '@tailwindcss/oxide-darwin-arm64@4.3.3':
+ resolution: {integrity: sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-darwin-x64@4.3.3':
+ resolution: {integrity: sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-freebsd-x64@4.3.3':
+ resolution: {integrity: sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3':
+ resolution: {integrity: sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.3.3':
+ resolution: {integrity: sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.3.3':
+ resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.3.3':
+ resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tailwindcss/oxide-linux-x64-musl@4.3.3':
+ resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@tailwindcss/oxide-wasm32-wasi@4.3.3':
+ resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==}
+ 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-win32-arm64-msvc@4.3.3':
+ resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.3.3':
+ resolution: {integrity: sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [win32]
+
+ '@tailwindcss/oxide@4.3.3':
+ resolution: {integrity: sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==}
+ engines: {node: '>= 20'}
+
+ '@tailwindcss/postcss@4.3.3':
+ resolution: {integrity: sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==}
+
+ '@tailwindcss/vite@4.3.3':
+ resolution: {integrity: sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==}
+ peerDependencies:
+ vite: ^5.2.0 || ^6 || ^7 || ^8
+
+ '@tanstack/table-core@8.21.3':
+ resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==}
+ engines: {node: '>=12'}
+
+ '@tanstack/virtual-core@3.17.8':
+ resolution: {integrity: sha512-BfEvehNpOT75r5Ksc5xW6NZuXujTfb7nlSEyVu4XHG3gdxNg1KqXruWbDewXOUaUYIo4oRbSfkjIajz4MAT8tA==}
+
+ '@tanstack/vue-table@8.21.3':
+ resolution: {integrity: sha512-rusRyd77c5tDPloPskctMyPLFEQUeBzxdQ+2Eow4F7gDPlPOB1UnnhzfpdvqZ8ZyX2rRNGmqNnQWm87OI2OQPw==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ vue: '>=3.2'
+
+ '@tanstack/vue-virtual@3.13.36':
+ resolution: {integrity: sha512-gKpExv4RbB9luVG+SucTXoqPZv/gzu/Yvz6BNO+8kpNxJ2x+I/ulryzl5W9BRciahZGp5Tls3Dp5XP1ztVGbMw==}
+ peerDependencies:
+ vue: ^2.7.0 || ^3.0.0
+
+ '@tiptap/core@3.24.0':
+ resolution: {integrity: sha512-GTAsXAI32p4hEZgPzvUv2RPrObxamy9AFhmhG10fXSvN/cDUs8naEYVIqDV3Sh99jMwQEbTFKW1E1mcspsY6ow==}
+ peerDependencies:
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-blockquote@3.24.0':
+ resolution: {integrity: sha512-DgwEEJ1GbDQcT054ynxoaZGmB9apGeUklPrinq9o6xdLHpdg+bO9HCQzggdB8n21VLLglb8jfAEWsVNwh3eASQ==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-bold@3.24.0':
+ resolution: {integrity: sha512-CujogYaynasklFKHADUseuvj8X2FnWktTCCo3Hl+nlyRvBTmm5TK2aqiamg3v2P4dBh3O6a70mo8BfRJPuiR1g==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-bubble-menu@3.24.0':
+ resolution: {integrity: sha512-jRXD+JPu9ayvq78g8hsCxx4q/qUFtrdfIYirRSf5YUseuuUbtfrq83AsGabcygpUTefjJkMQoXNITkh6294Ggw==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-bullet-list@3.24.0':
+ resolution: {integrity: sha512-IOpAm5c4XVVVvkOef+V9XYMVpea+3MgBpCQgn83UQRlwO9eIMwmcyxOznu7gQPQVShTEpkt4T6uK+ZN9o8meIA==}
+ peerDependencies:
+ '@tiptap/extension-list': 3.24.0
+
+ '@tiptap/extension-code-block@3.24.0':
+ resolution: {integrity: sha512-NZglw4oHoH6oJ5+HvxxQCYk+wODJmsxzUpRQdsOmje08sekQH+Zt9i4UKimBhg4urpd5r+dKXTslab9a5eQ86w==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-code@3.24.0':
+ resolution: {integrity: sha512-MAQtrPRQ+HRmcGotWbksdIGeH1gqayFAdvi4lNGeFT7taHXP1o1XD7CQp7iYIKmg8IU4/MQ+RdetSfuC1A9edQ==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-collaboration@3.24.0':
+ resolution: {integrity: sha512-PF9rFZrZtgr7xemnzQaU1uScUz4GwDjE+vLMosugUJxaoz/zSsHRXQ00dHM32MKxBzbWg3A4ZQTHB7YzAtyl3Q==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+ '@tiptap/y-tiptap': ^3.0.4
+ yjs: ^13
+
+ '@tiptap/extension-document@3.24.0':
+ resolution: {integrity: sha512-yxgM3+yXy2XZzEwH43y2Kp8D1BkblxEWLXqo0YCoAKtxyKCcEaT8kdlf70kS7D0+VSzYU4D0iN7VdQIYHcL2mA==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-drag-handle-vue-3@3.24.0':
+ resolution: {integrity: sha512-tk9yKgGPYMRAKeCtEdza532EZzbIID7pO6sSLqmteyDH3MxuaJZLhi6tqRheWm55SlPTTJzAUZuY8EchzPpC7g==}
+ peerDependencies:
+ '@tiptap/extension-drag-handle': 3.24.0
+ '@tiptap/pm': 3.24.0
+ '@tiptap/vue-3': 3.24.0
+ vue: ^3.0.0
+
+ '@tiptap/extension-drag-handle@3.24.0':
+ resolution: {integrity: sha512-DMW2Dx89aS28+FXlpl5nlkZT4dhqdaAO6W76qXVUPIHFvO5yWP0q5UzAPGW5JEBOI+LxWj0AkTDMrX0XrLw9oA==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/extension-collaboration': 3.24.0
+ '@tiptap/extension-node-range': 3.24.0
+ '@tiptap/pm': 3.24.0
+ '@tiptap/y-tiptap': ^3.0.2
+
+ '@tiptap/extension-dropcursor@3.24.0':
+ resolution: {integrity: sha512-Dbv1c5LnvG3PT+yEbCNroyOeeUkHq9wcir2pbC7wri7g7d2sCi0+HvKH0MAxLwY3j5NJJSiSyG2ypMaXOAs4sg==}
+ peerDependencies:
+ '@tiptap/extensions': 3.24.0
+
+ '@tiptap/extension-floating-menu@3.24.0':
+ resolution: {integrity: sha512-7QEbf3mUzFAkejjQGX9f0L507oMtnOBRwHt2skUTR+9yXgudsN8zaDBSSRHLeMWGk9b7L293ZMA6zCRrZaHrfA==}
+ peerDependencies:
+ '@floating-ui/dom': ^1.0.0
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-gapcursor@3.24.0':
+ resolution: {integrity: sha512-CzCP5/jni5RFwW9jCfBO6auh83GbaioMTpSk6tyR3sd+CbwlBcUdsJFGJkbaRdiSS9dgIyi+6hRbhjpYdHcp+w==}
+ peerDependencies:
+ '@tiptap/extensions': 3.24.0
+
+ '@tiptap/extension-hard-break@3.24.0':
+ resolution: {integrity: sha512-T/ZEBiHQPMyTqDvXG0tiqBToNeuSemIPmNtdoGSgBN/degVl7VJZqQIrLIvOUHfjf3QkRs7TE/mcqTJsIboO/g==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-heading@3.24.0':
+ resolution: {integrity: sha512-GCSgapIzQPqEGNcVGE0/Pcjg5wITMLYJlrS3GGVw7BPmECJwgexcoOsEwkxtzJnXT/HpFXbvOFW43sM0KeHSjg==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-horizontal-rule@3.24.0':
+ resolution: {integrity: sha512-DFzWJTrb23x+qssLLs85vEyho8ItUGp3RY9XUsVTIAGZn5IsoUw8wMsvIBlH1ux4Ch7gLchtcD6kpTdMdrL9kw==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-image@3.24.0':
+ resolution: {integrity: sha512-mH+bvsX2cPKuZzV7YMQi4FV2YbDP+Kmq36bY+Bwi/x4mYUc8u0cjQxcu8RzLO7GtsgUJPxGMwfkQxmDqXFLZvw==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-italic@3.24.0':
+ resolution: {integrity: sha512-mf3cbNlbMPUNj3IyUkIke+o3ZpOUrtVeY5Yqs5IM/VhkUUh/PdIzqw74VuqEAJ0Z4oZ6nNDHeYLrl3Be1j99lQ==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-link@3.24.0':
+ resolution: {integrity: sha512-MwMoNGG2mL5XGFV1tEGunBRglwsIbW+ZOB2QnKiv+Mcbi2JCWMrorndJZBqpVPR5nM+Bef2KnpchEJmYlQLvKQ==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-list-item@3.24.0':
+ resolution: {integrity: sha512-zl/U3viJiV9OzkKM37AHIUN1af1TSLrcbHUUoNLkfJ33Nq+NlpaXpCVK0rKRqiLFJf7zk/a5KWG5CrOy9TxjKA==}
+ peerDependencies:
+ '@tiptap/extension-list': 3.24.0
+
+ '@tiptap/extension-list-keymap@3.24.0':
+ resolution: {integrity: sha512-69fKcrngYGEKWNn4R5oLwl0YuV3FY4kufEValVcjnihUmqJTE1vx+fwctYoTsOGnIuNGpUIQ7f9YDD/0w34qBw==}
+ peerDependencies:
+ '@tiptap/extension-list': 3.24.0
+
+ '@tiptap/extension-list@3.24.0':
+ resolution: {integrity: sha512-GcxDVMMmDGj7OFTBrV7JpVgr5wxlr2vmjwH7U8QxZX7OJI5vrsMYl/U6KRTvUpG8wP+Zmo5jRlLM+BbL+a/W3g==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-mention@3.24.0':
+ resolution: {integrity: sha512-c68AYrEoHJ4vlBvt5stBUTveKXiNwt5BxaQxgq2R4OXjc3VMoh+XJqo1bBbMNHEJfuGMNpcdfZ2zf09jnBf8/A==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+ '@tiptap/suggestion': 3.24.0
+
+ '@tiptap/extension-node-range@3.24.0':
+ resolution: {integrity: sha512-JUrhuKD5raii6IsARETNq3seAXUB9UpQGjeSJKBKBOv10PBAq0RLKlI0lbv7t9FR4vfZE7is/XpvoZ0v2Vr9kw==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-ordered-list@3.24.0':
+ resolution: {integrity: sha512-buRa6bmBDw0TztH+rAcusIye14DiLDS+yGheo6GiNCTD7kKJnksXagBdxvip3jhW5sx7gyAKvoBmvGSg1BbsGA==}
+ peerDependencies:
+ '@tiptap/extension-list': 3.24.0
+
+ '@tiptap/extension-paragraph@3.24.0':
+ resolution: {integrity: sha512-wD06aB6hO7LgcrlhGiw7I64k2tus9kNoICX5R+UecBSB1DVJdzKvXoXL2kPNv4DqYvljHdkIeK/OpuOTQd6MJA==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-placeholder@3.24.0':
+ resolution: {integrity: sha512-3jfYYCIuwMADhvZ92vB6c80YiTmgTSFR23JqyLps8qkQtV59Va5CBYpwJtSs1+VrbCVnNxhZBHhVXusZO3uRkA==}
+ peerDependencies:
+ '@tiptap/extensions': 3.24.0
+
+ '@tiptap/extension-strike@3.24.0':
+ resolution: {integrity: sha512-sfN1iQs6Fdlorrfe8wipDkTPwu/Egx3s2fkY7TAWusTGFHwlovuRUGFKqCL9dI4N3u6uqUMpEuWmQNgv+aQGjQ==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-text@3.24.0':
+ resolution: {integrity: sha512-Im7keLPEihxm3+LyF+drYCoaOY5hlq35lvHAp/el6M8pJ/scts88HrYpdR1Yc4BtpZBIhfHSyWgPaupI4qwdeg==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extension-underline@3.24.0':
+ resolution: {integrity: sha512-D4W4X3UMq9dLVIOfPB9+UodQ4eAJ8yDcm8qFWAwq0a15YWH6bnwulCuIdV+U5dEG+yaRxN8haB9GrrID9jmrSA==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+
+ '@tiptap/extensions@3.24.0':
+ resolution: {integrity: sha512-z6gRYzy2ucJp07OQ0F2W07NxyhMTxPYH1ia2eGiQkWax1i56oExpjMsDHP8THWlg8Tb7NnbfKpkfh881EsmofA==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/markdown@3.24.0':
+ resolution: {integrity: sha512-EIEQmH8tOIWAxVnRpYSALIQCU8dVaGQoEVvmsa6B2B/zZeIsBSEZzcVVE2yGEVZtShf3ag37Szr6Lu7lTor3sw==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/pm@3.24.0':
+ resolution: {integrity: sha512-QQP/78ryOZDN99gNBV7dgh69/8AYaOYQYFklq/iR+ZRFaaL3+qqHFvPVJapGkzPdymBgNJ34xjFM8n5pJ4QmMg==}
+
+ '@tiptap/starter-kit@3.24.0':
+ resolution: {integrity: sha512-Ef4PCP96vcY2GonXN9J0M8iC6zvxPTmQlL/QZiCwuYqqnH/hNpYIjNSQdTndiDpxRKofa32Sr2HWktgEnL32Bg==}
+
+ '@tiptap/suggestion@3.24.0':
+ resolution: {integrity: sha512-UlLIij1fxFy7tbCmqUoInWRijzsi8hsbaXKCx6L3KvLXtxHb4hMnDhd6W++rOk9Q1hDpmNf8qNIX498q/ZNstw==}
+ peerDependencies:
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/vue-3@3.24.0':
+ resolution: {integrity: sha512-B7H630A5kGRHPrj60FMLbKC8EBWFvGeP8EytaKqxfByEFW6I2mYeZV4BzDptx6Hgy7h5oTXJ1yjc8DH1Q80WYA==}
+ peerDependencies:
+ '@floating-ui/dom': ^1.0.0
+ '@tiptap/core': 3.24.0
+ '@tiptap/pm': 3.24.0
+ vue: ^3.0.0
+
+ '@tiptap/y-tiptap@3.0.7':
+ resolution: {integrity: sha512-3VG01F7i2JDghWsBZSBKi7ypMiN5UVVSyD18IwoXx7ilm0ZynrTS+XNpmgxfuiSBjdauWk7tUlP04xfM8Bw4Vw==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+ peerDependencies:
+ prosemirror-model: ^1.7.1
+ prosemirror-state: ^1.2.3
+ prosemirror-view: ^1.9.10
+ y-protocols: ^1.0.1
+ yjs: ^13.5.38
+
+ '@tybys/wasm-util@0.10.3':
+ resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==}
+
+ '@types/esrecurse@4.3.1':
+ resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==}
+
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
+ '@types/jsesc@2.5.1':
+ resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/resolve@1.20.2':
+ resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
+
+ '@types/web-bluetooth@0.0.20':
+ resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
+
+ '@types/web-bluetooth@0.0.21':
+ resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
+
+ '@typescript-eslint/eslint-plugin@8.66.0':
+ resolution: {integrity: sha512-p088eaGrzYz1s+7cov0aMOCkNGTJlVxF4jgubf28c8L0Cv9Rloj8YBHnv4hXLq6IIEE1AsjNWavO+k+8kP2Y0A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.66.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/parser@8.66.0':
+ resolution: {integrity: sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/project-service@8.66.0':
+ resolution: {integrity: sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/scope-manager@8.66.0':
+ resolution: {integrity: sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/tsconfig-utils@8.66.0':
+ resolution: {integrity: sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/type-utils@8.66.0':
+ resolution: {integrity: sha512-LG2dWfjZQQp0ADtAu/EWJVayefGL2UEZ3CDeI44D9v3rXB/WYUqE/jpO28KrEKul5AySrmI+Zh1v6v+xW2U9+g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/types@8.66.0':
+ resolution: {integrity: sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/typescript-estree@8.66.0':
+ resolution: {integrity: sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/utils@8.66.0':
+ resolution: {integrity: sha512-jasearZPolBw5NJNYGMwxzHMF83niVWmMU1VdHzG1CyfI2VS7f7nZltnKtHcg20hW+7Uo5GfK4MeDPoU3qI8EA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/visitor-keys@8.66.0':
+ resolution: {integrity: sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@unhead/bundler@3.4.0':
+ resolution: {integrity: sha512-RnsCYynvDiUwmZ/U7TkFwFLr6yTRXVFJlZFj3ehi+m6M4f+GWL/O+6BTQzaHdz59zg2UHHejQvwuXvcL7dj0Dw==}
+ peerDependencies:
+ '@unhead/cli': ^3.4.0
+ '@vitejs/devtools-kit': ^0.4.1
+ esbuild: '>=0.17.0'
+ lightningcss: '>=1.20.0'
+ oxc-parser: '>=0.98.0'
+ rolldown: '>=1.0.0'
+ unhead: ^3.4.0
+ vite: '>=6.4.2'
+ webpack: '>=5.0.0'
+ peerDependenciesMeta:
+ '@unhead/cli':
+ optional: true
+ '@vitejs/devtools-kit':
+ optional: true
+ esbuild:
+ optional: true
+ lightningcss:
+ optional: true
+ oxc-parser:
+ optional: true
+ rolldown:
+ optional: true
+ vite:
+ optional: true
+ webpack:
+ optional: true
+
+ '@unhead/vue@3.4.0':
+ resolution: {integrity: sha512-fSnDS9d++bqR4t1z6+zFN7bQB5F0+5nwvE4yHW7BGRfEmssCP4fel0GprooUgoLkzx+FcAWMwVIakyaeErSRBA==}
+ peerDependencies:
+ vite: '>=6.4.2'
+ vue: '>=3.5.18'
+ webpack: '>=5.0.0'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+ webpack:
+ optional: true
+
+ '@unrs/resolver-binding-android-arm-eabi@1.12.2':
+ resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==}
+ cpu: [arm]
+ os: [android]
+
+ '@unrs/resolver-binding-android-arm64@1.12.2':
+ resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==}
+ cpu: [arm64]
+ os: [android]
+
+ '@unrs/resolver-binding-darwin-arm64@1.12.2':
+ resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@unrs/resolver-binding-darwin-x64@1.12.2':
+ resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@unrs/resolver-binding-freebsd-x64@1.12.2':
+ resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2':
+ resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==}
+ cpu: [arm]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2':
+ resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==}
+ cpu: [arm]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm64-gnu@1.12.2':
+ resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-arm64-musl@1.12.2':
+ resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@unrs/resolver-binding-linux-loong64-gnu@1.12.2':
+ resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==}
+ cpu: [loong64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-loong64-musl@1.12.2':
+ resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==}
+ cpu: [loong64]
+ os: [linux]
+ libc: [musl]
+
+ '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2':
+ resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2':
+ resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-riscv64-musl@1.12.2':
+ resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@unrs/resolver-binding-linux-s390x-gnu@1.12.2':
+ resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-x64-gnu@1.12.2':
+ resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-x64-musl@1.12.2':
+ resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@unrs/resolver-binding-openharmony-arm64@1.12.2':
+ resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@unrs/resolver-binding-wasm32-wasi@1.12.2':
+ resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@unrs/resolver-binding-win32-arm64-msvc@1.12.2':
+ resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@unrs/resolver-binding-win32-ia32-msvc@1.12.2':
+ resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@unrs/resolver-binding-win32-x64-msvc@1.12.2':
+ resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==}
+ cpu: [x64]
+ os: [win32]
+
+ '@valibot/to-json-schema@1.7.1':
+ resolution: {integrity: sha512-3qkmU6KXWh8GIThEAW3kuRHPQBMjWkKy+Ppz3WkUucx53DTpOa6siMn4xDGSOhlVyMrDaJTCTMLYPZVAIk1P0A==}
+ peerDependencies:
+ valibot: ^1.4.0
+
+ '@vercel/nft@1.5.0':
+ resolution: {integrity: sha512-IWTDeIoWhQ7ZtRO/JRKH+jhmeQvZYhtGPmzw/QGDY+wDCQqfm25P9yIdoAFagu4fWsK4IwZXDFIjrmp5rRm/sA==}
+ engines: {node: '>=20'}
+ hasBin: true
+
+ '@vitejs/devtools-kit@0.4.10':
+ resolution: {integrity: sha512-jaA4FQKlUa5vKrCLSZSJWcZ9DpHSl8j4R7Dq4kPeOmtXngb5eap/ZdumY8f5soCPWarjDKdPi23sAkiLH6VT/g==}
+ peerDependencies:
+ vite: '*'
+
+ '@vitejs/plugin-vue-jsx@5.1.6':
+ resolution: {integrity: sha512-YXvi4as2clxt6DFw5+a0tTA97ntiQXm/raR8ofNj3aNwwdlVGTiG2gp7EvfZW17P50acL/9bP0ccF4XnqNmlgA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+ vue: ^3.0.0
+
+ '@vitejs/plugin-vue@6.0.8':
+ resolution: {integrity: sha512-0ZjgOg7oO6farnNGup7yvoM/YXZV84OZxHAwtflItNa/6zzQyVb5LNxyea3FEKEX2XlagIKzrlH7wwxkKgtiew==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+ vue: ^3.2.25
+
+ '@volar/language-core@2.4.28':
+ resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==}
+
+ '@volar/source-map@2.4.28':
+ resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==}
+
+ '@volar/typescript@2.4.28':
+ resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@vue-macros/common@3.1.4':
+ resolution: {integrity: sha512-/5Fv+6DgIcM9ajY05ZmKBv+LMX1M9A0X+IUwDRVdt67ciw8OV9bvG2r34p3RiEadlsQybjhKPRKNXDC8Bp23cw==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ vue: ^2.7.0 || ^3.2.25
+ peerDependenciesMeta:
+ vue:
+ optional: true
+
+ '@vue/babel-helper-vue-transform-on@2.0.1':
+ resolution: {integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==}
+
+ '@vue/babel-plugin-jsx@2.0.1':
+ resolution: {integrity: sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+
+ '@vue/babel-plugin-resolve-type@2.0.1':
+ resolution: {integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@vue/compiler-core@3.5.40':
+ resolution: {integrity: sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==}
+
+ '@vue/compiler-dom@3.5.40':
+ resolution: {integrity: sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==}
+
+ '@vue/compiler-sfc@3.5.40':
+ resolution: {integrity: sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==}
+
+ '@vue/compiler-ssr@3.5.40':
+ resolution: {integrity: sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==}
+
+ '@vue/devtools-api@8.2.1':
+ resolution: {integrity: sha512-6u4vXBlIBAC1wMplIZgpyPn7uh/s4Bf6F5bMzvLv+EdJ0aHs/+4B7Ygv864EStQSjRbsRzTko/kUG1A1IejQ3A==}
+
+ '@vue/devtools-core@8.2.1':
+ resolution: {integrity: sha512-s/VfAY9oDTb/kFEWmy461jaFde2MIV1RO/gi1vwM+PAZBZ/Pc2Ndu3BNBdZUze8QDUuyYvElbEEGA83syjJfzA==}
+ peerDependencies:
+ vue: ^3.0.0
+
+ '@vue/devtools-kit@8.2.1':
+ resolution: {integrity: sha512-FIGIuq3AWReEpbAHY/cRGeHDfI0qOb8OCQ3YjbEAX04uaxIDbGc9rhkbVcG7rnfHPXE3RsU5KrWOu9V/okd8AQ==}
+
+ '@vue/devtools-shared@8.2.1':
+ resolution: {integrity: sha512-Fkac7lUdGReh6pVOi3AYPRGe82LQqRmAfThW7RRligOAP0ZA/Z1z9XLHDM9dv34pV2HRc79DK8uKPeG2fLnA/g==}
+
+ '@vue/language-core@3.3.11':
+ resolution: {integrity: sha512-QJmpliwAVpC/OxubIByPAhNzsQPRc8/gxlN2qnVzVfIMjMDz/9RnXRFoetjz5yEgXVXyp4LqhXq3V53PjmNzFw==}
+
+ '@vue/reactivity@3.5.40':
+ resolution: {integrity: sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==}
+
+ '@vue/runtime-core@3.5.40':
+ resolution: {integrity: sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==}
+
+ '@vue/runtime-dom@3.5.40':
+ resolution: {integrity: sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==}
+
+ '@vue/server-renderer@3.5.40':
+ resolution: {integrity: sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==}
+
+ '@vue/shared@3.5.40':
+ resolution: {integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==}
+
+ '@vueuse/core@10.11.1':
+ resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==}
+
+ '@vueuse/core@14.4.0':
+ resolution: {integrity: sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==}
+ peerDependencies:
+ vue: ^3.5.0
+
+ '@vueuse/integrations@14.4.0':
+ resolution: {integrity: sha512-oJz9qTgczvA7L1nXQFRU7h8tQbOCoiceqvMMhT9XYMyOGTqLJ2rEa09PON+nD2t48sZUfeOmg4eaWJXV4sZb/w==}
+ peerDependencies:
+ async-validator: ^4
+ axios: ^1
+ change-case: ^5
+ drauu: ^0.4
+ focus-trap: ^7 || ^8
+ fuse.js: ^7
+ idb-keyval: ^6
+ jwt-decode: ^4
+ nprogress: ^0.2
+ qrcode: ^1.5
+ sortablejs: ^1
+ universal-cookie: ^7 || ^8
+ vue: ^3.5.0
+ peerDependenciesMeta:
+ async-validator:
+ optional: true
+ axios:
+ optional: true
+ change-case:
+ optional: true
+ drauu:
+ optional: true
+ focus-trap:
+ optional: true
+ fuse.js:
+ optional: true
+ idb-keyval:
+ optional: true
+ jwt-decode:
+ optional: true
+ nprogress:
+ optional: true
+ qrcode:
+ optional: true
+ sortablejs:
+ optional: true
+ universal-cookie:
+ optional: true
+
+ '@vueuse/metadata@10.11.1':
+ resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==}
+
+ '@vueuse/metadata@14.4.0':
+ resolution: {integrity: sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==}
+
+ '@vueuse/shared@10.11.1':
+ resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==}
+
+ '@vueuse/shared@14.4.0':
+ resolution: {integrity: sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==}
+ peerDependencies:
+ vue: ^3.5.0
+
+ abbrev@3.0.1:
+ resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==}
+ engines: {node: ^18.17.0 || >=20.5.0}
+
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
+ acorn-import-attributes@1.9.5:
+ resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
+ peerDependencies:
+ acorn: ^8
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.18.0:
+ resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ agent-base@7.1.4:
+ resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
+ engines: {node: '>= 14'}
+
+ ajv@6.15.0:
+ resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
+
+ alien-signals@3.2.1:
+ resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.2.2:
+ resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
+ engines: {node: '>=12'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@6.2.3:
+ resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
+ engines: {node: '>=12'}
+
+ ansis@4.3.1:
+ resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==}
+ engines: {node: '>=14'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ archiver-utils@5.0.2:
+ resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==}
+ engines: {node: '>= 14'}
+
+ archiver@7.0.1:
+ resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==}
+ engines: {node: '>= 14'}
+
+ are-docs-informative@0.0.2:
+ resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==}
+ engines: {node: '>=14'}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ aria-hidden@1.2.6:
+ resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
+ engines: {node: '>=10'}
+
+ ast-kit@2.2.0:
+ resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==}
+ engines: {node: '>=20.19.0'}
+
+ ast-walker-scope@0.9.0:
+ resolution: {integrity: sha512-IJdzo2vLiElBxKzwS36VsCue/62d6IdWjnPB2v3nuPKeWGynp6FF/CYoLa5i/3jXH/z97ZDdsXz6abpgM6w07A==}
+ engines: {node: '>=20.19.0'}
+
+ async-sema@3.1.1:
+ resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
+
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ autoprefixer@10.5.4:
+ resolution: {integrity: sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ b4a@1.8.1:
+ resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==}
+ peerDependencies:
+ react-native-b4a: '*'
+ peerDependenciesMeta:
+ react-native-b4a:
+ optional: true
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ balanced-match@4.0.4:
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
+
+ bare-events@2.8.3:
+ resolution: {integrity: sha512-HdUm8EMQBLaJvGUdidNNbqpA1kYkwNcb+MYxkxCLAPJGQzlv9J0C24h8V65Z4c5GLd/JEALDvpFCQgpLJqc0zw==}
+ peerDependencies:
+ bare-abort-controller: '*'
+ peerDependenciesMeta:
+ bare-abort-controller:
+ optional: true
+
+ bare-fs@4.7.1:
+ resolution: {integrity: sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==}
+ engines: {bare: '>=1.16.0'}
+ peerDependencies:
+ bare-buffer: '*'
+ peerDependenciesMeta:
+ bare-buffer:
+ optional: true
+
+ bare-os@3.9.1:
+ resolution: {integrity: sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ==}
+ engines: {bare: '>=1.14.0'}
+
+ bare-path@3.0.0:
+ resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
+
+ bare-stream@2.13.1:
+ resolution: {integrity: sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow==}
+ peerDependencies:
+ bare-abort-controller: '*'
+ bare-buffer: '*'
+ bare-events: '*'
+ peerDependenciesMeta:
+ bare-abort-controller:
+ optional: true
+ bare-buffer:
+ optional: true
+ bare-events:
+ optional: true
+
+ bare-url@2.4.3:
+ resolution: {integrity: sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ baseline-browser-mapping@2.11.7:
+ resolution: {integrity: sha512-APw5YuIQAg6L9w4sHDI6j26DGFJI6RpYOhnkMPdC9lWbkKvsyPHzDsve1yd73lk21yz7Y09Kci8B2Pp9FonzWA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
+ birpc@2.9.0:
+ resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==}
+
+ birpc@4.0.0:
+ resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==}
+
+ boolbase@1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+
+ brace-expansion@2.1.0:
+ resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==}
+
+ brace-expansion@5.0.6:
+ resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==}
+ engines: {node: 18 || 20 || >=22}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.28.7:
+ resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-crc32@1.0.0:
+ resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==}
+ engines: {node: '>=8.0.0'}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ builtin-modules@5.2.0:
+ resolution: {integrity: sha512-02yxLeyxF4dNl6SlY6/5HfRSrSdZ/sCPoxy2kZNP5dZZX8LSAD9aE2gtJIUgWrsQTiMPl3mxESyrobSwvRGisQ==}
+ engines: {node: '>=18.20'}
+
+ bundle-name@4.1.0:
+ resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
+ engines: {node: '>=18'}
+
+ c12@3.3.4:
+ resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==}
+ peerDependencies:
+ magicast: '*'
+ peerDependenciesMeta:
+ magicast:
+ optional: true
+
+ cac@7.0.0:
+ resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==}
+ engines: {node: '>=20.19.0'}
+
+ caniuse-api@4.0.0:
+ resolution: {integrity: sha512-B0hQ1OLyJuHTQSOWXvwibWqM6DCoqJdvBA6X1S/53bd4XU7LJ1yurIPlrsouol3mw1jh9pGI4ivubSpmJeIqCA==}
+
+ caniuse-lite@1.0.30001806:
+ resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==}
+
+ change-case@5.4.4:
+ resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==}
+
+ chokidar@5.0.0:
+ resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==}
+ engines: {node: '>= 20.19.0'}
+
+ chownr@3.0.0:
+ resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
+ engines: {node: '>=18'}
+
+ ci-info@4.4.0:
+ resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==}
+ engines: {node: '>=8'}
+
+ citty@0.1.6:
+ resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
+
+ citty@0.2.2:
+ resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==}
+
+ cliui@9.0.1:
+ resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}
+ engines: {node: '>=20'}
+
+ cluster-key-slot@1.1.2:
+ resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
+ engines: {node: '>=0.10.0'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ colortranslator@5.0.0:
+ resolution: {integrity: sha512-Z3UPUKasUVDFCDYAjP2fmlVRf1jFHJv1izAmPjiOa0OCIw1W7iC8PZ2GsoDa8uZv+mKyWopxxStT9q05+27h7w==}
+
+ commander@11.1.0:
+ resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+ engines: {node: '>=16'}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ comment-parser@1.4.7:
+ resolution: {integrity: sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==}
+ engines: {node: '>= 12.0.0'}
+
+ commondir@1.0.1:
+ resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+
+ compatx@0.2.0:
+ resolution: {integrity: sha512-6gLRNt4ygsi5NyMVhceOCFv14CIdDFN7fQjX1U4+47qVE/+kjPoXMK65KWK+dWxmFzMTuKazoQ9sch6pM0p5oA==}
+
+ compress-commons@6.0.2:
+ resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==}
+ engines: {node: '>= 14'}
+
+ confbox@0.1.8:
+ resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+
+ confbox@0.2.4:
+ resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==}
+
+ consola@3.4.2:
+ resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+
+ convert-hrtime@5.0.0:
+ resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==}
+ engines: {node: '>=12'}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cookie-es@1.2.3:
+ resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==}
+
+ cookie-es@2.0.1:
+ resolution: {integrity: sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA==}
+
+ cookie-es@3.1.1:
+ resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==}
+
+ core-js-compat@3.49.0:
+ resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ crc-32@1.2.2:
+ resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
+ engines: {node: '>=0.8'}
+ hasBin: true
+
+ crc32-stream@6.0.0:
+ resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==}
+ engines: {node: '>= 14'}
+
+ croner@10.0.1:
+ resolution: {integrity: sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==}
+ engines: {node: '>=18.0'}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ crossws@0.3.5:
+ resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
+
+ crossws@0.4.10:
+ resolution: {integrity: sha512-pz3oubH/dt12KjqsUB0IuXW4nwRDQ583iDsP4555Cpdqx0NoU7pGlWBcayyFI8f/l/idRpgjMEfwuOxSWJYlIA==}
+ peerDependencies:
+ srvx: '>=0.11.5'
+ peerDependenciesMeta:
+ srvx:
+ optional: true
+
+ css-select@5.2.2:
+ resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
+
+ css-tree@2.2.1:
+ resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
+
+ css-tree@3.2.1:
+ resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+
+ css-what@6.2.2:
+ resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+ engines: {node: '>= 6'}
+
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ cssnano-preset-default@8.0.2:
+ resolution: {integrity: sha512-+jQAqIKCqMmBjZs7741XkilU93ITZ/EW8gjAkMmujdCzfDkfjrDBv2VqkSu29Fzeig/0rZ3S9IAwfPLlmXEUfQ==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ cssnano-utils@6.0.1:
+ resolution: {integrity: sha512-zk65GIxA8tCjqVk7nTm1mE+ZKxtnxAvU5JSUaBLXbAr3ZF7IOvz3fbPOnEDvZKhnS7GOIitXTS5BgehLzNoc8Q==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ cssnano@8.0.2:
+ resolution: {integrity: sha512-K+a76gA1v0/CsYgcsE95HGGyIuPKxpQSetwSwz4nHEM8fFXqSkzq2JzEXFL8v5+CCjxzVVVhPcTK3Oo8SaF/xA==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ csso@5.0.5:
+ resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
+
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
+ db0@0.3.4:
+ resolution: {integrity: sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==}
+ peerDependencies:
+ '@electric-sql/pglite': '*'
+ '@libsql/client': '*'
+ better-sqlite3: '*'
+ drizzle-orm: '*'
+ mysql2: '*'
+ sqlite3: '*'
+ peerDependenciesMeta:
+ '@electric-sql/pglite':
+ optional: true
+ '@libsql/client':
+ optional: true
+ better-sqlite3:
+ optional: true
+ drizzle-orm:
+ optional: true
+ mysql2:
+ optional: true
+ sqlite3:
+ optional: true
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ default-browser-id@5.0.1:
+ resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
+ engines: {node: '>=18'}
+
+ default-browser@5.5.0:
+ resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
+ engines: {node: '>=18'}
+
+ define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
+
+ defu@6.1.7:
+ resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==}
+
+ denque@2.1.0:
+ resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
+ engines: {node: '>=0.10'}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ destr@2.0.5:
+ resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
+
+ detect-indent@7.0.2:
+ resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==}
+ engines: {node: '>=12.20'}
+
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
+ devalue@5.9.0:
+ resolution: {integrity: sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A==}
+
+ devframe@0.7.15:
+ resolution: {integrity: sha512-pHcCgDILv9BfF0oqEcpPzsPG/2/TLrhcYIUiWTNmP+YiyTmaGkW0osR/48STotnJNi3O2upj5L/6tpLOl/Ravg==}
+ peerDependencies:
+ '@modelcontextprotocol/sdk': ^1.0.0
+ cac: ^7.0.0
+ peerDependenciesMeta:
+ '@modelcontextprotocol/sdk':
+ optional: true
+ cac:
+ optional: true
+
+ devframe@0.8.2:
+ resolution: {integrity: sha512-oodQXEQnrvufA1so/E058Z3SG3bk9AlUE5+NIAsyx5ZJH9P/oX6WMxjC0bs5PPwtKbS7pBHjxja2AD8EwGE8/Q==}
+ hasBin: true
+ peerDependencies:
+ '@modelcontextprotocol/client': ^2.0.0
+ '@modelcontextprotocol/server': ^2.0.0
+ cac: ^7.0.0
+ peerDependenciesMeta:
+ '@modelcontextprotocol/client':
+ optional: true
+ '@modelcontextprotocol/server':
+ optional: true
+ cac:
+ optional: true
+
+ diff@8.0.4:
+ resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==}
+ engines: {node: '>=0.3.1'}
+
+ dom-serializer@2.0.0:
+ resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
+
+ domelementtype@2.3.0:
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+
+ domhandler@5.0.3:
+ resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
+ engines: {node: '>= 4'}
+
+ domutils@3.2.2:
+ resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
+
+ dot-prop@10.1.0:
+ resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==}
+ engines: {node: '>=20'}
+
+ dotenv@17.4.2:
+ resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==}
+ engines: {node: '>=12'}
+
+ duplexer@0.1.2:
+ resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ electron-to-chromium@1.5.398:
+ resolution: {integrity: sha512-AsvhAxopJGh6museTDMIjn6JpDYOfgu4RLlygomt87MUwBUqTfd/1EiPtx10/LZE8xpTvkP2E9Gafq7lkLtodQ==}
+
+ embla-carousel-auto-height@8.6.0:
+ resolution: {integrity: sha512-/HrJQOEM6aol/oF33gd2QlINcXy3e19fJWvHDuHWp2bpyTa+2dm9tVVJak30m2Qy6QyQ6Fc8DkImtv7pxWOJUQ==}
+ peerDependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-auto-scroll@8.6.0:
+ resolution: {integrity: sha512-WT9fWhNXFpbQ6kP+aS07oF5IHYLZ1Dx4DkwgCY8Hv2ZyYd2KMCPfMV1q/cA3wFGuLO7GMgKiySLX90/pQkcOdQ==}
+ peerDependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-autoplay@8.6.0:
+ resolution: {integrity: sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==}
+ peerDependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-class-names@8.6.0:
+ resolution: {integrity: sha512-l1hm1+7GxQ+zwdU2sea/LhD946on7XO2qk3Xq2XWSwBaWfdgchXdK567yzLtYSHn4sWYdiX+x4nnaj+saKnJkw==}
+ peerDependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-fade@8.6.0:
+ resolution: {integrity: sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==}
+ peerDependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-reactive-utils@8.6.0:
+ resolution: {integrity: sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==}
+ peerDependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-vue@8.6.0:
+ resolution: {integrity: sha512-v8UO5UsyLocZnu/LbfQA7Dn2QHuZKurJY93VUmZYP//QRWoCWOsionmvLLAlibkET3pGPs7++03VhJKbWD7vhQ==}
+ peerDependencies:
+ vue: ^3.2.37
+
+ embla-carousel-wheel-gestures@8.1.0:
+ resolution: {integrity: sha512-J68jkYrxbWDmXOm2n2YHl+uMEXzkGSKjWmjaEgL9xVvPb3HqVmg6rJSKfI3sqIDVvm7mkeTy87wtG/5263XqHQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ embla-carousel: ^8.0.0 || ~8.0.0-rc03
+
+ embla-carousel@8.6.0:
+ resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==}
+
+ emoji-regex@10.6.0:
+ resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ enhanced-resolve@5.24.5:
+ resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==}
+ engines: {node: '>=10.13.0'}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ entities@7.0.1:
+ resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
+ engines: {node: '>=0.12'}
+
+ error-stack-parser-es@1.0.5:
+ resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
+
+ error-stack-parser-es@2.0.1:
+ resolution: {integrity: sha512-J36ntO+rMQVRuR/umlmxmfLi4TpWwtmTnHoJoXTiC2xDNazs0VDPKcX6pbhZMDd2HFtH9isMBJXMdbki+A++Pg==}
+
+ errx@0.1.2:
+ resolution: {integrity: sha512-chfpPHmCerdo/rXr/nNvPZRkV4WwDRwzwnsJ0Uzz3tVi8Z41tDctRjduYy1138ii77AFlts1qvWtX3g/Acg91Q==}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@2.1.0:
+ resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==}
+
+ esbuild@0.27.7:
+ resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ esbuild@0.28.0:
+ resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
+ eslint-config-flat-gitignore@2.3.0:
+ resolution: {integrity: sha512-bg4ZLGgoARg1naWfsINUUb/52Ksw/K22K+T16D38Y8v+/sGwwIYrGvH/JBjOin+RQtxxC9tzNNiy4shnGtGyyQ==}
+ peerDependencies:
+ eslint: ^9.5.0 || ^10.0.0
+
+ eslint-flat-config-utils@3.2.0:
+ resolution: {integrity: sha512-PHgo1X5uqIorJONLVD9BIaOSdoYFD3z/AeJljdqDPlWVRpeCYkDbK9k0AXoYVqqNJr6FEYIEr5Rm2TSktLQcHw==}
+
+ eslint-import-context@0.1.9:
+ resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ unrs-resolver: ^1.0.0
+ peerDependenciesMeta:
+ unrs-resolver:
+ optional: true
+
+ eslint-merge-processors@2.0.0:
+ resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==}
+ peerDependencies:
+ eslint: '*'
+
+ eslint-plugin-import-lite@0.6.0:
+ resolution: {integrity: sha512-80vevx2A7i3H7n1/6pqDO8cc5wRz6OwLDvIyVl9UflBV1N1f46e9Ihzi65IOLYoSxM6YykK2fTw1xm0Ixx6aTQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^9.0.0 || ^10.0.0
+
+ eslint-plugin-import-x@4.17.1:
+ resolution: {integrity: sha512-4cdstYkKCyjumM2Q9NSI03K8D2a9F4Ssz33K2lv2hQa4KmR9jPLwk3uWGtNvclfqBrPGfGuMBwsGMbe6dMRbfg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/utils': ^8.56.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ eslint-import-resolver-node: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/utils':
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+
+ eslint-plugin-jsdoc@63.3.3:
+ resolution: {integrity: sha512-xI4IeVRzRFA2DGHrPLIxF3U+oJHU3FE+P9Zb27fVs5dPHgfcpoAs0PyCbznVhK7pwR+9BPUztFeXSgpw/CL4Yg==}
+ engines: {node: ^22.13.0 || >=24}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0
+
+ eslint-plugin-regexp@3.1.1:
+ resolution: {integrity: sha512-MxR5nqoQCtVWmJwia0D2+NlXX1xzdpkslsVOZLEYQ4PQWEaL65PCZXURxaBc3lPnkNFpNxzMIRmYVxdl8giXRA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ peerDependencies:
+ eslint: '>=9.38.0'
+
+ eslint-plugin-unicorn@73.0.0:
+ resolution: {integrity: sha512-V0YatLe9nkGhXEXKe2Qljb1EY0sJHwDV0HUF1NKFwtsHh/fU7qGHDgv+6fchzZcgU2/7noHo2gdjnmo0P2uDPw==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ eslint: '>=10.4'
+
+ eslint-plugin-vue@10.10.0:
+ resolution: {integrity: sha512-dL9x9rBHqqNcByWiLOHK6L0SB97V82/NC0cZRn9cXPjM7pCuWlpQQP9bFH4vjBv80ej1ZpzAkuD8zWH1o9bZbA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
+ '@typescript-eslint/parser': ^7.0.0 || ^8.0.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ vue-eslint-parser: ^10.3.0
+ peerDependenciesMeta:
+ '@stylistic/eslint-plugin':
+ optional: true
+ '@typescript-eslint/parser':
+ optional: true
+
+ eslint-processor-vue-blocks@2.0.0:
+ resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==}
+ peerDependencies:
+ '@vue/compiler-sfc': ^3.3.0
+ eslint: '>=9.0.0'
+
+ eslint-scope@9.1.2:
+ resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ eslint-typegen@2.3.1:
+ resolution: {integrity: sha512-zVdh8rThBvv2o5T/K524Fr5iy1Jo0q09rHL7y7FbOhgMB177T2gw+shxfC4ChCEqdq6/y6LJA4j8Fbr/Xls9aw==}
+ peerDependencies:
+ eslint: ^9.0.0 || ^10.0.0
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@4.2.1:
+ resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ eslint-visitor-keys@5.0.1:
+ resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ eslint@10.9.1:
+ resolution: {integrity: sha512-9VaAkDURekixUQJy0oJYl2DcN6oKMfxay7XzaGYAWQwsb6qfKf+x76R2k1L8kb1boc+FyCAaTA9GmiKaaiaF+A==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
+
+ espree@10.4.0:
+ resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ espree@11.2.0:
+ resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ esquery@1.7.0:
+ resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ events-universal@1.0.1:
+ resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ execa@8.0.1:
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
+
+ exsolve@1.1.1:
+ resolution: {integrity: sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+
+ fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fast-npm-meta@2.2.0:
+ resolution: {integrity: sha512-99jPl8JkCSCa4VlboNU1XuL98ijm74Pm9CGo6H4BoMVoVh1uhguQcvwLgXDT8Vkl2qj/UEQ0J9gD8beHjTFk1w==}
+ hasBin: true
+
+ fast-string-truncated-width@3.0.3:
+ resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==}
+
+ fast-string-width@3.0.2:
+ resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==}
+
+ fast-wrap-ansi@0.2.0:
+ resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==}
+
+ fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
+
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-up-simple@1.0.1:
+ resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==}
+ engines: {node: '>=18'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ find-up@8.0.0:
+ resolution: {integrity: sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww==}
+ engines: {node: '>=20'}
+
+ flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
+
+ flatted@3.4.2:
+ resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
+
+ fnv1a-64@0.1.2:
+ resolution: {integrity: sha512-mJbcILTPybAR1jdOwt/lVv8N2cffeJFFP+gVbSAwLEx1ujXH27RpPd8Rokec/KX9c76UYIB6Co+H4lQzxPnJfA==}
+
+ fontaine@0.8.0:
+ resolution: {integrity: sha512-eek1GbzOdWIj9FyQH/emqW1aEdfC3lYRCHepzwlFCm5T77fBSRSyNRKE6/antF1/B1M+SfJXVRQTY9GAr7lnDg==}
+ engines: {node: '>=18.12.0'}
+
+ fontkitten@1.0.3:
+ resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==}
+ engines: {node: '>=20'}
+
+ fontless@0.2.1:
+ resolution: {integrity: sha512-mUWZ8w91/mw2KEcZ6gHNoNNmsAq9Wiw2IypIux5lM03nhXm+WSloXGUNuRETNTLqZexMgpt7Aj/v63qqrsWraQ==}
+ engines: {node: '>=18.12.0'}
+ peerDependencies:
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ foreground-child@3.3.1:
+ resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
+ engines: {node: '>=14'}
+
+ fraction.js@5.3.4:
+ resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
+
+ framer-motion@13.1.1:
+ resolution: {integrity: sha512-B/xn2TPS4f61cEBLFjiYlQFnBZUW1YVj/LM+C+N4OP8Rs95VLEI2ot/RlfBg111la/EiyECFaJJi/A3FWA8MUA==}
+ peerDependencies:
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
+ fresh@2.0.0:
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ function-timeout@1.0.2:
+ resolution: {integrity: sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==}
+ engines: {node: '>=18'}
+
+ fuse.js@7.5.0:
+ resolution: {integrity: sha512-sQtrEfA+ez/3G0cCZecF70oqpCRttCexYUG4mUrtWL49ULUzUyxokt5kyqwtKzj1270RaKih+hcP3qLcumccow==}
+ engines: {node: '>=10'}
+
+ fzf@0.5.2:
+ resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==}
+
+ generic-names@4.0.0:
+ resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-east-asian-width@1.6.0:
+ resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
+ engines: {node: '>=18'}
+
+ get-port-please@3.2.0:
+ resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==}
+
+ get-stream@8.0.1:
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+
+ get-tsconfig@4.14.0:
+ resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
+
+ giget@3.3.1:
+ resolution: {integrity: sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==}
+ hasBin: true
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@10.5.0:
+ resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
+ hasBin: true
+
+ glob@13.0.6:
+ resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==}
+ engines: {node: 18 || 20 || >=22}
+
+ global-directory@4.0.1:
+ resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==}
+ engines: {node: '>=18'}
+
+ globals@17.9.0:
+ resolution: {integrity: sha512-m/MvAW61QVU5VDNF1Vj8axt016h8w7L5TU1e9zlab7XIttAT2YAlCwl75K1fOqvMM9apmD7lbCIRhpfkhmxhCg==}
+ engines: {node: '>=18'}
+
+ globby@16.2.0:
+ resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==}
+ engines: {node: '>=20'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ gzip-size@7.0.0:
+ resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ h3@1.15.11:
+ resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==}
+
+ h3@2.0.1-rc.26:
+ resolution: {integrity: sha512-GDxlvDsKxgjRvG5UBRJYyGJTMWLV30CJ4cV+e7QCTgftDHihrvio1fVPbNembhEr6J4WNm8IWy3fookgyTweLw==}
+ engines: {node: '>=20.11.1'}
+ hasBin: true
+ peerDependencies:
+ crossws: ^0.4.9
+ peerDependenciesMeta:
+ crossws:
+ optional: true
+
+ hasown@2.0.3:
+ resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==}
+ engines: {node: '>= 0.4'}
+
+ hey-listen@1.0.8:
+ resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
+
+ hookable@5.5.3:
+ resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
+
+ hookable@6.1.1:
+ resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==}
+
+ html-entities@2.6.0:
+ resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==}
+
+ http-errors@2.0.1:
+ resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+ engines: {node: '>= 0.8'}
+
+ http-shutdown@1.2.2:
+ resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+
+ https-proxy-agent@7.0.6:
+ resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
+ engines: {node: '>= 14'}
+
+ httpxy@0.5.1:
+ resolution: {integrity: sha512-JPhqYiixe1A1I+MXDewWDZqeudBGU8Q9jCHYN8ML+779RQzLjTi78HBvWz4jMxUD6h2/vUL12g4q/mFM0OUw1A==}
+
+ human-signals@5.0.0:
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
+
+ identifier-regex@1.1.0:
+ resolution: {integrity: sha512-SLX4H/vtcYlYnL7XqnuJKHU7Z8517TgsW9nmQiGOgMCjQ8V/deLYu6bEmbGoXe7WMMhc9+EUGyFFneHja8KabA==}
+ engines: {node: '>=18'}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ ignore@7.0.6:
+ resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==}
+ engines: {node: '>= 4'}
+
+ image-meta@0.2.2:
+ resolution: {integrity: sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==}
+
+ import-meta-resolve@4.2.0:
+ resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==}
+
+ impound@1.1.6:
+ resolution: {integrity: sha512-ugavDQkE74SGrBjagNIwNVHNBxX14mmfQnTm4jFGzOoWwYsgihqV698BNr5xwRY9quKK4rEg8bc6ECltllMr+w==}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ indent-string@5.0.0:
+ resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
+ engines: {node: '>=12'}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ini@4.1.1:
+ resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ ioredis@5.10.1:
+ resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==}
+ engines: {node: '>=12.22.0'}
+
+ iron-webcrypto@1.2.1:
+ resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
+
+ is-builtin-module@5.0.0:
+ resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==}
+ engines: {node: '>=18.20'}
+
+ is-core-module@2.16.2:
+ resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==}
+ engines: {node: '>= 0.4'}
+
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-identifier@1.1.0:
+ resolution: {integrity: sha512-NhOds0mDx9lJu+1lBRO0xbwFo5nobA7GCk/0e5xjr6+6XugX985+0OyGX35BNrTkPAsdLcIKg02HUQJOK8D8kw==}
+ engines: {node: '>=18'}
+
+ is-in-ssh@1.0.0:
+ resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==}
+ engines: {node: '>=20'}
+
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
+ is-installed-globally@1.0.0:
+ resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==}
+ engines: {node: '>=18'}
+
+ is-module@1.0.0:
+ resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-path-inside@4.0.0:
+ resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==}
+ engines: {node: '>=12'}
+
+ is-reference@1.2.1:
+ resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ is-wsl@3.1.1:
+ resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==}
+ engines: {node: '>=16'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ isexe@4.0.0:
+ resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==}
+ engines: {node: '>=20'}
+
+ isomorphic.js@0.2.5:
+ resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==}
+
+ jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+
+ jiti@2.7.0:
+ resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
+ hasBin: true
+
+ js-tokens@10.0.0:
+ resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ hasBin: true
+
+ jsdoc-type-pratt-parser@7.2.0:
+ resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==}
+ engines: {node: '>=20.0.0'}
+
+ jsdoc-type-pratt-parser@8.0.0:
+ resolution: {integrity: sha512-uQu/fXVqVaMg6gM8/E5G5+eygVcZ1NV0Z51CvqhNa2bDWxvHMl484ETr6vph4oPyC+KUcbP/w2W2pewfCiR9aQ==}
+ engines: {node: '>=20.0.0'}
+
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-schema-to-typescript-lite@15.0.0:
+ resolution: {integrity: sha512-5mMORSQm9oTLyjM4mWnyNBi2T042Fhg1/0gCIB6X8U/LVpM2A+Nmj2yEyArqVouDmFThDxpEXcnTgSrjkGJRFA==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+
+ klona@2.0.6:
+ resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
+ engines: {node: '>= 8'}
+
+ knitwork@1.3.0:
+ resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==}
+
+ launch-editor@2.14.1:
+ resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==}
+
+ lazystream@1.0.1:
+ resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
+ engines: {node: '>= 0.6.3'}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lib0@0.2.117:
+ resolution: {integrity: sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-android-arm64@1.33.0:
+ resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-arm64@1.33.0:
+ resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.33.0:
+ resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-freebsd-x64@1.33.0:
+ resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-musl@1.33.0:
+ resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
+ lightningcss@1.33.0:
+ resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
+ engines: {node: '>= 12.0.0'}
+
+ lilconfig@3.1.3:
+ resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
+ engines: {node: '>=14'}
+
+ linkifyjs@4.3.3:
+ resolution: {integrity: sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==}
+
+ listhen@1.10.0:
+ resolution: {integrity: sha512-kfz4C0OrC6IpaVMtYDJtf6PFjurxe9NBBoDAh/o2p587INryFOO4DQ9OetbCdDrWFt1m1CJKvYrzkGsuPHw8nQ==}
+ hasBin: true
+
+ loader-utils@3.3.1:
+ resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
+ engines: {node: '>= 12.13.0'}
+
+ local-pkg@1.2.1:
+ resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==}
+ engines: {node: '>=14'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ locate-path@8.0.0:
+ resolution: {integrity: sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg==}
+ engines: {node: '>=20'}
+
+ lodash.defaults@4.2.0:
+ resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
+
+ lodash.isarguments@3.1.0:
+ resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
+
+ lodash@4.18.1:
+ resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
+
+ lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+ lru-cache@11.4.0:
+ resolution: {integrity: sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==}
+ engines: {node: 20 || >=22}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ magic-regexp@0.10.0:
+ resolution: {integrity: sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==}
+
+ magic-string-ast@1.0.3:
+ resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==}
+ engines: {node: '>=20.19.0'}
+
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
+ magic-string@1.2.2:
+ resolution: {integrity: sha512-veT/+7iXrXzT39XnEN4lOxtNl72dMgJ8Lp+5Bd6YcMSWpb0n0MjBM8Uuooi6jgJr8dhUW2swQgBmoZVMni5SVg==}
+
+ magicast@0.5.4:
+ resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==}
+
+ make-asynchronous@1.1.0:
+ resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==}
+ engines: {node: '>=18'}
+
+ marked@17.0.6:
+ resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==}
+ engines: {node: '>= 20'}
+ hasBin: true
+
+ mdn-data@2.0.28:
+ resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
+
+ mdn-data@2.27.1:
+ resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==}
+
+ mdn-data@2.29.0:
+ resolution: {integrity: sha512-pVxQFCcaYUEAH853+v7yoI/qzhxXSq1bTb9obMYGYAN1c3Hen+XDCEvr296XhstrwlSTNgOR7mCSD4JPjbJe5A==}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@3.0.2:
+ resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
+ engines: {node: '>=18'}
+
+ mime@4.1.0:
+ resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+
+ minimatch@10.2.5:
+ resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
+ engines: {node: 18 || 20 || >=22}
+
+ minimatch@5.1.9:
+ resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==}
+ engines: {node: '>=10'}
+
+ minimatch@9.0.9:
+ resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minipass@7.1.3:
+ resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minizlib@3.1.0:
+ resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==}
+ engines: {node: '>= 18'}
+
+ mlly@1.8.2:
+ resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==}
+
+ mocked-exports@0.1.1:
+ resolution: {integrity: sha512-aF7yRQr/Q0O2/4pIXm6PZ5G+jAd7QS4Yu8m+WEeEHGnbo+7mE36CbLSDQiXYV8bVL3NfmdeqPJct0tUlnjVSnA==}
+
+ motion-dom@13.1.1:
+ resolution: {integrity: sha512-XSf8VYWSB6G/0IY3rWVbyLcxWXtAVHkN1PQE2agTaCv3u8RGvbwu56TyyR/MNzBqqNavEBTZzErcxI1TxBrjcA==}
+
+ motion-utils@13.0.0:
+ resolution: {integrity: sha512-7DnN7TmbLcYXcG4RVadXIihWlyuM9afoUww8Y5Agg431kGKiuL2/OMyP4mJ5wLz+pvN3t5ySClLOaVXJ+wekRQ==}
+
+ motion-v@2.4.0:
+ resolution: {integrity: sha512-kRDGMAZk3nvdjEO36Wo6pezSEIStGXGhVFiwo1QkUDsUg8mB5igjYPXyece8wtu2DrHhmFfA6Y1nOz07+5QH4A==}
+ peerDependencies:
+ '@vueuse/core': '>=10.0.0'
+ vue: '>=3.0.0'
+
+ mrmime@2.0.1:
+ resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
+ engines: {node: '>=10'}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ muggle-string@0.4.1:
+ resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
+
+ nanoid@3.3.16:
+ resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ nanotar@0.3.0:
+ resolution: {integrity: sha512-Kv2JYYiCzt16Kt5QwAc9BFG89xfPNBx+oQL4GQXD9nLqPkZBiNaqaCWtwnbk/q7UVsTYevvM1b0UF8zmEI4pCg==}
+
+ napi-postinstall@0.3.4:
+ resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ nitropack@2.13.4:
+ resolution: {integrity: sha512-tX7bT6zxNeMwkc6hxHiZeUoTOjVrcjoh1Z3cmxOlodIqjl4HISgqfGOmkWSayky3Nv9Z5+KQH52F8nmXJY5AAA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ xml2js: ^0.6.2
+ peerDependenciesMeta:
+ xml2js:
+ optional: true
+
+ node-addon-api@7.1.1:
+ resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
+
+ node-fetch-native@1.6.7:
+ resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ node-forge@1.4.0:
+ resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==}
+ engines: {node: '>= 6.13.0'}
+
+ node-gyp-build@4.8.4:
+ resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
+ hasBin: true
+
+ node-mock-http@1.0.4:
+ resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==}
+
+ node-releases@2.0.51:
+ resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==}
+ engines: {node: '>=18'}
+
+ nopt@8.1.0:
+ resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==}
+ engines: {node: ^18.17.0 || >=20.5.0}
+ hasBin: true
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ nostics@1.2.0:
+ resolution: {integrity: sha512-FGqEfhQjrvo1lL8KFifdTQiNwwQHJxC1jtYE1Rc54qF/jxONUNL+kC9gS1krX8Q65PgrQ5fCqH/I4NhWBvdSqg==}
+
+ npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ npm-run-path@6.0.0:
+ resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
+ engines: {node: '>=18'}
+
+ nth-check@2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+
+ nuxt@4.5.2:
+ resolution: {integrity: sha512-tR3fcqeHlHmmkLMpIg3V7Y+1ltr302lW8djMw/iy+myfo7QSSz+BVJDuQhg5j73b9oteSyBfOKTDYTgvMtj6TA==}
+ engines: {node: ^22.19.0 || ^24.11.0 || >=26.0.0}
+ hasBin: true
+ peerDependencies:
+ '@parcel/watcher': ^2.1.0
+ '@types/node': '>=18.12.0'
+ rolldown: ~1.2.1
+ peerDependenciesMeta:
+ '@parcel/watcher':
+ optional: true
+ '@types/node':
+ optional: true
+
+ nypm@0.6.9:
+ resolution: {integrity: sha512-zxlE2yvSWZWmHcNdT3+5zV2lrCogeE9YOklHrR3dFjqutq5wO7GFDYLFDRXLsYnJzwvy/im9fYoxePvS0VTW0w==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ object-deep-merge@2.0.1:
+ resolution: {integrity: sha512-aKttDKcU3pyZqKcCkDhsMn70WmZFG2JGDQLP9EcLyTSIFQRCPWLAmBZRLJnrVUrhPG1jETEEbfdgbNtJf1LyMg==}
+
+ object-identity@0.2.3:
+ resolution: {integrity: sha512-2J8Joz2Tf7aaylhqFvIUJHNgpuGR38Hh75Voq9GzTbStBxJUaOtN0K1aOd3cV5qp+ij1pMqRbPrGCGMOyX303w==}
+
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
+ ofetch@1.5.1:
+ resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
+
+ ofetch@2.0.0-alpha.3:
+ resolution: {integrity: sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA==}
+
+ ohash@2.0.12:
+ resolution: {integrity: sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==}
+
+ on-change@6.0.2:
+ resolution: {integrity: sha512-08+12qcOVEA0fS9g/VxKS27HaT94nRutUT77J2dr8zv/unzXopvhBuF8tNLWsoLQ5IgrQ6eptGeGqUYat82U1w==}
+ engines: {node: '>=20'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+
+ open@11.0.0:
+ resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==}
+ engines: {node: '>=20'}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ orderedmap@2.1.1:
+ resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
+
+ oxc-parser@0.140.0:
+ resolution: {integrity: sha512-h6QFWd6lBMfjESqgQ27GjzrSDb0qbznp7VDQqp2zvgsrWut4vcchyMIzOVXvGQ2GMZgKw9RWrFNWv9WqGL0p7Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+
+ oxc-walker@1.1.1:
+ resolution: {integrity: sha512-Hwd7dq28zu/Er99+bpWp16CGwFrhyalJh0W3JOB7XpPvgWo3MqMi2ksWGKuzzA9zt50mJ2pIUwR5lpAdZ9ACNQ==}
+ peerDependencies:
+ '@oxc-project/types': '>=0.98.0'
+ oxc-parser: '>=0.98.0'
+ rolldown: '>=1.0.0'
+ peerDependenciesMeta:
+ '@oxc-project/types':
+ optional: true
+ oxc-parser:
+ optional: true
+ rolldown:
+ optional: true
+
+ p-event@6.0.1:
+ resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==}
+ engines: {node: '>=16.17'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-limit@4.0.0:
+ resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ p-locate@6.0.0:
+ resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-timeout@6.1.4:
+ resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
+ engines: {node: '>=14.16'}
+
+ package-json-from-dist@1.0.1:
+ resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+
+ package-manager-detector@1.8.0:
+ resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==}
+
+ parse-imports-exports@0.2.4:
+ resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==}
+
+ parse-statements@1.0.11:
+ resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ path-scurry@2.0.2:
+ resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==}
+ engines: {node: 18 || 20 || >=22}
+
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
+ perfect-debounce@2.1.0:
+ resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.2:
+ resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
+ engines: {node: '>=8.6'}
+
+ picomatch@4.0.5:
+ resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
+ engines: {node: '>=12'}
+
+ pkg-types@1.3.1:
+ resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
+
+ pkg-types@2.3.1:
+ resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==}
+
+ pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+
+ postcss-calc@10.1.1:
+ resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==}
+ engines: {node: ^18.12 || ^20.9 || >=22.0}
+ peerDependencies:
+ postcss: ^8.4.38
+
+ postcss-colormin@8.0.1:
+ resolution: {integrity: sha512-qBY4ABQ6d8/mk5RRZHwMllrZMxeMey3azVY2dZUEk+RgiUC4ARdPR3/AITzNqqKTbvW/3y/MJKinDrzwqn8RDQ==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-convert-values@8.0.1:
+ resolution: {integrity: sha512-IdOSIX3BzfMvCc1TAHIha2gfy17xnb5vfML8e2BIKARnFOghksESfaSAB/3CXgyLfMozZAbTRPVQF5dbuKOidw==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-discard-comments@8.0.1:
+ resolution: {integrity: sha512-FDvzm3tXlEsQBO2XQgnta5ugsAqwBrgWH+j5QgXpegEIDYA0VPnZg2aP7LtmWtC49POskeIhXesFiU/k3NyFHA==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-discard-duplicates@8.0.1:
+ resolution: {integrity: sha512-stTDXkI8YkCUfADurQhp03oq5ynsgSx6Qrw5B1swds6oTHtAeOZ9I0SHGK8cY/VpWUsIYFDWMs3IWf9jIEfFvA==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-discard-empty@8.0.1:
+ resolution: {integrity: sha512-Zv4fM1Yfhk71tbt6gfiptbL6jDHi+7apSnaMeaO9n1uET+1embrXQw5m93Zp5x28UyQSuv+AVkFY193jdwZ33w==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-discard-overridden@8.0.1:
+ resolution: {integrity: sha512-ykt4fvrC7yYGzbxKyqBVjDCbsjF/11JgWK8enrdkobRyqqEtb/uDUCbKOGdvrK8X7BrShW8Lv5cCRNbdkNHGkQ==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-merge-longhand@8.0.1:
+ resolution: {integrity: sha512-huTfSYgQ13O81SFvAuOi7GWnO48vvybjj3xF+X3qUoPjzvvaLpJH5DcUqqXcwOEulZUcvaV4s0V9WtWs+IAQPA==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-merge-rules@8.0.1:
+ resolution: {integrity: sha512-o3rk4UpnPNg469tklYwbR/NtvKc/f/wJiVDTnNQ/EFPw/LeiPOHUCvV1GIBQIZHGrBAYdPjToK6a+ojYprsrxQ==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-minify-font-values@8.0.1:
+ resolution: {integrity: sha512-L8Nzs/PRlBSPrLdY/7rAiU5ZN5800+2J/4LRbfyG8SJnPljmgMaXVmQiCklvRS+yObfVRNtvmk/Ean/eoYcSeg==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-minify-gradients@8.0.1:
+ resolution: {integrity: sha512-qf+4s/hZMqTwpWN2teqf6+1yvR/SZK5HgHqXYuACeJXV7ABe7AXtBEomgxagUzcN4bSnmqBh5vnIml0dYqykYg==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-minify-params@8.0.1:
+ resolution: {integrity: sha512-L0h3H59deFfFg0wQN1NVaS/8E/LfGvaMuZKGO7siwlG995zo3OshtQyRkqKdVqcBwAORBvZ1nDZrKPLRapYkQw==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-minify-selectors@8.0.2:
+ resolution: {integrity: sha512-3icdxc/zght5UAizdwqZBDE2KOWHf1jMQCxET6iLACeNlRxfTPyXS0/COpGk8CQ2cECyaEKTRUd/i/k8Gxmz4g==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-charset@8.0.1:
+ resolution: {integrity: sha512-xzqr36F8UeIZOvOHsf3aul+RVJCADvSwuwpMLgizqKjisHZpBfztgW0XFLBfJvz9pJgaStaOXAtGb0zLqT6B0w==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-display-values@8.0.1:
+ resolution: {integrity: sha512-ZDWOijOK1FFMlpgiQCUO9fCNKd7HJ9L7z9HWEq4iyubnUFWzdTSwm/LcrMbNW6iZ1oAtqeLYA0WA3xHszOI08g==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-positions@8.0.1:
+ resolution: {integrity: sha512-uuivan2poSqbE48ST4do20dGaFUeXey9/H8rhHzoyVHB2I6BmkoVLZ/C9+BRjUlpaAFYVOoDY7epkiidzaYbvA==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-repeat-style@8.0.1:
+ resolution: {integrity: sha512-q2hq5fmKxk29K6DjKA3nZ17Q2dtjhLYFNmFweKALmooUqx6UWAHF1bBoWTu/EqlJ88josb82A/J0Atj9LJUmpQ==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-string@8.0.1:
+ resolution: {integrity: sha512-+Wf+kQJhm1WgSGEAuUaswE9rdpR9QbrKRVemcVHs6rhOoOTVIdAbgaicftfYA6vLM346P8onRzkEVbFN29ktKQ==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-timing-functions@8.0.1:
+ resolution: {integrity: sha512-W8/tvwRlm3T+yjGkg0IRTF4bvHj0vILYr/LOogCrJKHz2ey2HFRwfsAA8Bk9N4BGR7z7WmmDu/KzzwhJ6FoGPQ==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-unicode@8.0.1:
+ resolution: {integrity: sha512-Ad0YHNRBp4WHEOYUM/4wL/8MoL2fimEF8se/0q+Rt/owMzYpbxsypC1P8fN/oluwoRmRKdNVX7X2oycEobPWcQ==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-url@8.0.1:
+ resolution: {integrity: sha512-tkYcip6pCDY806xuxpJYqMW2M3/623jzGFJmz3m5Us47q8P28+gbRZxaea3Rr/CmwwLUiVlh+BTGYwQ6gvaP8A==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-normalize-whitespace@8.0.1:
+ resolution: {integrity: sha512-XzORadNfSrKWDZZpgAEHPKINKx8r9r9RIfE9c70g/HThdpbmPHhDYCodHSVESDxmKeySAYw1p4liuBCf7j6LyA==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-ordered-values@8.0.1:
+ resolution: {integrity: sha512-OLXq5lR1yk3KWQ1FPK6aWjFFdktHE9f9kb8cnt4LmIw7w30DnzgD9+sOVYJc5HenkWCX8i1MJhhFwmqc/GYqLg==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-reduce-initial@8.0.1:
+ resolution: {integrity: sha512-+aQsR6+61KRoIfcFNLP3v9RM7+0iYOTtPnjl1wr6JqMW1zx6S+t2ktHRefXwacFdHIDj5+ETG0KY7K3+SGQ4Nw==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-reduce-transforms@8.0.1:
+ resolution: {integrity: sha512-x71slHVykiFi5RuKEXM0wgYpY2PngC78x6R8TnZhHF3lhqt+u/w3MGwYLX+2t5O87ssRiMfEAhQH+3J4QwVzCw==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-selector-parser@7.1.4:
+ resolution: {integrity: sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==}
+ engines: {node: '>=4'}
+
+ postcss-svgo@8.0.1:
+ resolution: {integrity: sha512-HpnvWii7W0/FPrsejJa6ZTi0kNtTJP/Iba7CUMPX0xPV6QpnndOp+SDP74tFtgjA2cYKYNWJPOlmLXMsvi/9yA==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-unique-selectors@8.0.1:
+ resolution: {integrity: sha512-+xvKI5+/Cl8yYQwxDV39Uhuc4WV951xngFvPPjiPj2NIbIfm6vbbRTXblyw0FioLkIoGlw+7qUcY1h2YhaZYgw==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.5.25:
+ resolution: {integrity: sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ powershell-utils@0.1.0:
+ resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==}
+ engines: {node: '>=20'}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ pretty-bytes@7.1.0:
+ resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==}
+ engines: {node: '>=20'}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
+ proper-lockfile@4.1.2:
+ resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==}
+
+ prosemirror-changeset@2.4.1:
+ resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==}
+
+ prosemirror-commands@1.7.1:
+ resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
+
+ prosemirror-dropcursor@1.8.2:
+ resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==}
+
+ prosemirror-gapcursor@1.4.1:
+ resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==}
+
+ prosemirror-history@1.5.0:
+ resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==}
+
+ prosemirror-inputrules@1.5.1:
+ resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==}
+
+ prosemirror-keymap@1.2.3:
+ resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==}
+
+ prosemirror-model@1.25.7:
+ resolution: {integrity: sha512-A79aN8QEFUwI6cax8Yq4Rpcx1TJZ3Kagn+ii7qLo4/V8H3mMiHrhFyhTyHHvpSnOgMPpWiDGSwM3etwrxE50ug==}
+
+ prosemirror-schema-list@1.5.1:
+ resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
+
+ prosemirror-state@1.4.4:
+ resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==}
+
+ prosemirror-tables@1.8.5:
+ resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==}
+
+ prosemirror-transform@1.12.0:
+ resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==}
+
+ prosemirror-view@1.41.8:
+ resolution: {integrity: sha512-TnKDdohEatgyZNGCDWIdccOHXhYloJwbwU+phw/a23KBvJIR9lWQWW7WHHK3vBdOLDNuF7TaX98GObUZOWkOnA==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ quansync@0.2.11:
+ resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ quote-js-string@0.1.0:
+ resolution: {integrity: sha512-Y3NoRtprEEZQD8RfxMCfS0ZTqc4e+i18OrXEXAvpM6TfC/3y+0L5rNbZiSnbBBEkDfFzbpd8o+cE8q3/anjMGA==}
+ engines: {node: '>=22'}
+
+ radix3@1.1.2:
+ resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ rc9@3.0.1:
+ resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readable-stream@4.7.0:
+ resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ readdir-glob@1.1.3:
+ resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
+
+ readdirp@5.0.0:
+ resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==}
+ engines: {node: '>= 20.19.0'}
+
+ redis-errors@1.2.0:
+ resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==}
+ engines: {node: '>=4'}
+
+ redis-parser@3.0.0:
+ resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==}
+ engines: {node: '>=4'}
+
+ refa@0.12.1:
+ resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ regexp-ast-analysis@0.7.1:
+ resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ regexp-tree@0.1.27:
+ resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
+ hasBin: true
+
+ regjsparser@0.13.2:
+ resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==}
+ hasBin: true
+
+ reka-ui@2.10.3:
+ resolution: {integrity: sha512-nJGZbwcha8AcP2wbnjodfzsciTKBqp1mIzepC9Pi2xDI/YK3++ej3vpJOSPyxqrkq1Oorj4K+BdJkbVCV6x6ag==}
+ peerDependencies:
+ vue: '>= 3.4.0'
+
+ reserved-identifiers@1.2.0:
+ resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==}
+ engines: {node: '>=18'}
+
+ resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
+ resolve@1.22.12:
+ resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
+ retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rolldown-string@0.3.1:
+ resolution: {integrity: sha512-dv8GOXkYqUQdI0rsXB8hmzO95pKWSuX2eg5/JSJa9czfEVIFuKNR7ZJDfat8LlmD35RAhWY+evS7/wXXqFDfSg==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ rolldown: '*'
+ peerDependenciesMeta:
+ rolldown:
+ optional: true
+
+ rolldown@1.2.1:
+ resolution: {integrity: sha512-4FKJhg8d3OiyQOA6Q1Q0hoFFpW9/OoX+VsHzpECsdsIZoOArrAK90gl59YK/Z+gnDel45bgJZK03ozH/9bCqEw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
+ rollup-plugin-visualizer@7.0.1:
+ resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==}
+ engines: {node: '>=22'}
+ hasBin: true
+ peerDependencies:
+ rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc
+ rollup: 2.x || 3.x || 4.x
+ peerDependenciesMeta:
+ rolldown:
+ optional: true
+ rollup:
+ optional: true
+
+ rollup@4.60.4:
+ resolution: {integrity: sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ rope-sequence@1.3.4:
+ resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
+
+ rou3@0.9.1:
+ resolution: {integrity: sha512-z/sSmzvtwMDDnxsPVhfWMuG6F6mbmhFDXoVqLmMfbpDD9qfV3GDmSQpf0+W296/ZDIpW2wcMmBfpVFzcnOi/nA==}
+
+ run-applescript@7.1.0:
+ resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
+ engines: {node: '>=18'}
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ sax@1.6.0:
+ resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==}
+ engines: {node: '>=11.0.0'}
+
+ scslre@0.3.0:
+ resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==}
+ engines: {node: ^14.0.0 || >=16.0.0}
+
+ scule@1.3.0:
+ resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.8.5:
+ resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@1.2.1:
+ resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==}
+ engines: {node: '>= 18'}
+
+ serialize-javascript@7.0.5:
+ resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==}
+ engines: {node: '>=20.0.0'}
+
+ seroval@1.6.2:
+ resolution: {integrity: sha512-mPT+SD2TrlB6wvte1KkYOYUkubaTbd6pZ/6Kk3C9nxzrHmCZyhxOO7XGAeL7f+yLKZglzGtM9odUVvg/EhO+vQ==}
+ engines: {node: '>=10'}
+
+ serve-placeholder@2.0.2:
+ resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==}
+
+ serve-static@2.2.1:
+ resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==}
+ engines: {node: '>= 18'}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shell-quote@1.10.0:
+ resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==}
+ engines: {node: '>= 0.4'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ simple-git@3.36.0:
+ resolution: {integrity: sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==}
+
+ sirv@3.0.2:
+ resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
+ engines: {node: '>=18'}
+
+ sisteransi@1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+
+ slash@5.1.0:
+ resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
+ engines: {node: '>=14.16'}
+
+ smob@1.6.2:
+ resolution: {integrity: sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==}
+ engines: {node: '>=20.0.0'}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.7.6:
+ resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ engines: {node: '>= 12'}
+
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@5.0.0:
+ resolution: {integrity: sha512-vngmw3Rgn+o2arXNbnZaj5UtOEBuWBfvaI+Wc8GFfykIhA5/vdK9/Sp/XkLv63dykz2rxKDvKEHupF5P0FORcQ==}
+
+ spdx-license-ids@3.0.23:
+ resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==}
+
+ srvx@0.11.22:
+ resolution: {integrity: sha512-LqZxxBDMKuMAZzFzJnDCkFOrs9MZQZr0LvHiO/SuSZVdQaXD7xQ5UWTUxheJrQPve1qk9MG2B/yttUvJxw8egQ==}
+ engines: {node: '>=20.16.0'}
+ hasBin: true
+
+ srvx@0.12.4:
+ resolution: {integrity: sha512-RixzFlMn3dvzDTpKIAXhXrqL4cy6vScNCP0VVwgVbUBU94o+DiXLsFnAZetbyKAEnK6Ox3hzHXWGsyv/Iibv7g==}
+ engines: {node: '>=20.16.0'}
+ hasBin: true
+
+ stable-hash-x@0.2.0:
+ resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==}
+ engines: {node: '>=12.0.0'}
+
+ standard-as-callback@2.1.0:
+ resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
+
+ statuses@2.0.2:
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
+
+ std-env@4.2.0:
+ resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==}
+
+ streamx@2.25.0:
+ resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ string-width@7.2.0:
+ resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+ engines: {node: '>=18'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.2.0:
+ resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
+ engines: {node: '>=12'}
+
+ strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+
+ strip-indent@4.1.1:
+ resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==}
+ engines: {node: '>=12'}
+
+ strip-literal@4.0.0:
+ resolution: {integrity: sha512-PaqAvfUZKBwc/SLmNZtHmzK+v19Z4O4eS3cKPeGvbIv/U3pnyEq4Tuw3/4v/FwfM8VQaEawsyCcOQ0P+kpwWWw==}
+
+ structured-clone-es@2.0.1:
+ resolution: {integrity: sha512-10ZL5r77LhknxlP1FBiCW+VdnuWOEFLdSS2SKtjyEV+L4qP1hUEIMIZW94LC3jKxRmT/Dj7KkD1mqh/IY6lhKQ==}
+
+ stylehacks@8.0.1:
+ resolution: {integrity: sha512-Gv095oTD0N+BdJALNFDsxZpETHZLTxbOl5RyIO7y6VAE6sR3z0MnV3Nix7N0IATNldNTrkvSASp2KR1Yt526HA==}
+ engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
+ peerDependencies:
+ postcss: ^8.5.15
+
+ super-regex@1.1.0:
+ resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==}
+ engines: {node: '>=18'}
+
+ supports-color@10.2.2:
+ resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
+ engines: {node: '>=18'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ svgo@4.0.1:
+ resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ tagged-tag@1.0.0:
+ resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
+ engines: {node: '>=20'}
+
+ tailwind-merge@3.6.0:
+ resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==}
+
+ tailwind-variants@3.2.2:
+ resolution: {integrity: sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==}
+ engines: {node: '>=16.x', pnpm: '>=7.x'}
+ peerDependencies:
+ tailwind-merge: '>=3.0.0'
+ tailwindcss: '*'
+ peerDependenciesMeta:
+ tailwind-merge:
+ optional: true
+
+ tailwindcss@4.3.3:
+ resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==}
+
+ tapable@2.3.3:
+ resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
+ engines: {node: '>=6'}
+
+ tar-stream@3.2.0:
+ resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==}
+
+ tar@7.5.15:
+ resolution: {integrity: sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==}
+ engines: {node: '>=18'}
+
+ teex@1.0.1:
+ resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==}
+
+ terser@5.47.1:
+ resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ text-decoder@1.2.7:
+ resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==}
+
+ time-span@5.1.0:
+ resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==}
+ engines: {node: '>=12'}
+
+ tiny-inflate@1.0.3:
+ resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
+
+ tiny-invariant@1.3.3:
+ resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
+
+ tinyclip@0.1.15:
+ resolution: {integrity: sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==}
+ engines: {node: ^16.14.0 || >= 17.3.0}
+
+ tinyexec@1.2.4:
+ resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==}
+ engines: {node: '>=18'}
+
+ tinyglobby@0.2.17:
+ resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
+ engines: {node: '>=12.0.0'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ to-valid-identifier@1.0.0:
+ resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==}
+ engines: {node: '>=20'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ ts-api-utils@2.5.0:
+ resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
+ engines: {node: '>=18.12'}
+ peerDependencies:
+ typescript: '>=4.8.4'
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-fest@4.41.0:
+ resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
+ engines: {node: '>=16'}
+
+ type-fest@5.6.0:
+ resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==}
+ engines: {node: '>=20'}
+
+ type-level-regexp@0.1.17:
+ resolution: {integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==}
+
+ typescript@6.0.3:
+ resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ ufo@1.6.4:
+ resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==}
+
+ ultrahtml@1.7.0:
+ resolution: {integrity: sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==}
+
+ uncrypto@0.1.3:
+ resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
+
+ unctx@2.5.0:
+ resolution: {integrity: sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==}
+
+ unctx@3.0.0:
+ resolution: {integrity: sha512-DoXdZVeyi2jyEsn86i8MO5RTItm1kffUkH9/+DQORn3Q688AMOy2551CIl6AdGL2UpwD675wtbNOl75wIQN/uA==}
+ peerDependencies:
+ magic-string: '>=0.30.21'
+ oxc-parser: '>=0.140.0'
+ rolldown: ^1.1.5
+ unplugin: ^3.3.0
+ peerDependenciesMeta:
+ magic-string:
+ optional: true
+ oxc-parser:
+ optional: true
+ rolldown:
+ optional: true
+ unplugin:
+ optional: true
+
+ undici@8.10.0:
+ resolution: {integrity: sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==}
+ engines: {node: '>=22.19.0'}
+
+ unenv@2.0.0-rc.24:
+ resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
+
+ unhead@3.4.0:
+ resolution: {integrity: sha512-OlgpyYjY+NkFyQCaMihg2uTFbbvyr5lZr6TokS68VdFTXJ5jo4JwFtGR8PwKy/wRpjbQYgKF7ZYO+pbRgxtSmw==}
+ peerDependencies:
+ vite: '>=6.4.2'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ unicorn-magic@0.3.0:
+ resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
+ engines: {node: '>=18'}
+
+ unicorn-magic@0.4.0:
+ resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==}
+ engines: {node: '>=20'}
+
+ unifont@0.7.4:
+ resolution: {integrity: sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==}
+
+ unimport@6.4.0:
+ resolution: {integrity: sha512-JJOOuNMFq8b4ZPBKwQUxEcba4MplskDzYI1Lvrf8rJfWphZTWvPNXWa493qsPngHUmub89w6C7j+SeLWTE/UIQ==}
+ engines: {node: '>=18.12.0'}
+ peerDependencies:
+ oxc-parser: '*'
+ rolldown: ^1.0.0
+ peerDependenciesMeta:
+ oxc-parser:
+ optional: true
+ rolldown:
+ optional: true
+
+ unplugin-auto-import@21.1.0:
+ resolution: {integrity: sha512-EzrSqWIBulEqCuP7idADXH+tVKYrbwKlR5+r/lOWik0o+Ksny1kitmtryHGNSv7puzzORlcIwT/x2JStiszlHA==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ '@nuxt/kit': ^4.0.0
+ '@vueuse/core': '*'
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+ '@vueuse/core':
+ optional: true
+
+ unplugin-utils@0.3.2:
+ resolution: {integrity: sha512-xVToRh2CTmLk2HnEG7ac4rl1MJTT3RFkpS8B++/SnB0kXvuaavD+n3m/vrzyWQOdJNSZQACnbz01pnppbwV5BA==}
+ engines: {node: '>=20.19.0'}
+
+ unplugin-vue-components@32.1.0:
+ resolution: {integrity: sha512-YiUkSxuRjab18XFOrX5VsIxXzccrfmHVGsGeJgSgklb829DQmCy9E4vvDUE4tuvZZdxyFJZX0Oc4TPnnxiiMyg==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ '@nuxt/kit': ^3.2.2 || ^4.0.0
+ vue: ^3.0.0
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+
+ unplugin@2.3.11:
+ resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==}
+ engines: {node: '>=18.12.0'}
+
+ unplugin@3.3.0:
+ resolution: {integrity: sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ '@farmfe/core': '*'
+ '@rspack/core': '*'
+ bun-types-no-globals: '*'
+ esbuild: '*'
+ rolldown: '*'
+ rollup: '*'
+ unloader: '*'
+ vite: '*'
+ webpack: '*'
+ peerDependenciesMeta:
+ '@farmfe/core':
+ optional: true
+ '@rspack/core':
+ optional: true
+ bun-types-no-globals:
+ optional: true
+ esbuild:
+ optional: true
+ rolldown:
+ optional: true
+ rollup:
+ optional: true
+ unloader:
+ optional: true
+ vite:
+ optional: true
+ webpack:
+ optional: true
+
+ unrouting@0.2.2:
+ resolution: {integrity: sha512-EoCab68s1o9AWFq9fjKsMEsmjKrPO11SAsvopikks2eEm/KLXgZMCof4cgpVgdy0Vz71OFBJw6DoDqu1oOSFGw==}
+
+ unrs-resolver@1.12.2:
+ resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==}
+
+ unstorage@1.17.5:
+ resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==}
+ peerDependencies:
+ '@azure/app-configuration': ^1.8.0
+ '@azure/cosmos': ^4.2.0
+ '@azure/data-tables': ^13.3.0
+ '@azure/identity': ^4.6.0
+ '@azure/keyvault-secrets': ^4.9.0
+ '@azure/storage-blob': ^12.26.0
+ '@capacitor/preferences': ^6 || ^7 || ^8
+ '@deno/kv': '>=0.9.0'
+ '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0
+ '@planetscale/database': ^1.19.0
+ '@upstash/redis': ^1.34.3
+ '@vercel/blob': '>=0.27.1'
+ '@vercel/functions': ^2.2.12 || ^3.0.0
+ '@vercel/kv': ^1 || ^2 || ^3
+ aws4fetch: ^1.0.20
+ db0: '>=0.2.1'
+ idb-keyval: ^6.2.1
+ ioredis: ^5.4.2
+ uploadthing: ^7.4.4
+ peerDependenciesMeta:
+ '@azure/app-configuration':
+ optional: true
+ '@azure/cosmos':
+ optional: true
+ '@azure/data-tables':
+ optional: true
+ '@azure/identity':
+ optional: true
+ '@azure/keyvault-secrets':
+ optional: true
+ '@azure/storage-blob':
+ optional: true
+ '@capacitor/preferences':
+ optional: true
+ '@deno/kv':
+ optional: true
+ '@netlify/blobs':
+ optional: true
+ '@planetscale/database':
+ optional: true
+ '@upstash/redis':
+ optional: true
+ '@vercel/blob':
+ optional: true
+ '@vercel/functions':
+ optional: true
+ '@vercel/kv':
+ optional: true
+ aws4fetch:
+ optional: true
+ db0:
+ optional: true
+ idb-keyval:
+ optional: true
+ ioredis:
+ optional: true
+ uploadthing:
+ optional: true
+
+ untun@0.1.3:
+ resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==}
+ hasBin: true
+
+ untyped@2.0.0:
+ resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==}
+ hasBin: true
+
+ unwasm@0.5.3:
+ resolution: {integrity: sha512-keBgTSfp3r6+s9ZcSma+0chwxQdmLbB5+dAD9vjtB21UTMYuKAxHXCU1K2CbCtnP09EaWeRvACnXk0EJtUx+hw==}
+
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uqr@0.1.3:
+ resolution: {integrity: sha512-0rjE8iEJe4YmT9TOhwsZtqCMRLc5DXZUI2UEYUUg63ikBkqqE5EYWaI0etFe/5KUcmcYwLih2RND1kq+hrUJXA==}
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ valibot@1.4.2:
+ resolution: {integrity: sha512-gjdCvJ6d3RyHAneqxMYMW9QMCwYMb3jpOO0IyHZV1bnRHFBHrX3VkIILt5XYR0WhwHiH7Mty8ovuPZ/O3gamrg==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ vaul-vue@0.4.1:
+ resolution: {integrity: sha512-A6jOWOZX5yvyo1qMn7IveoWN91mJI5L3BUKsIwkg6qrTGgHs1Sb1JF/vyLJgnbN1rH4OOOxFbtqL9A46bOyGUQ==}
+ peerDependencies:
+ reka-ui: ^2.0.0
+ vue: ^3.3.0
+
+ verkit@0.3.2:
+ resolution: {integrity: sha512-zj/ob3UsvJGN0whEAKFp53REA5X66hvffVqoCtVQAakJKnKlH+/PcOfMoFwIG/o4rElqLv/ycAFlx8ZlXUorCg==}
+ engines: {node: '>=18.12.0'}
+
+ vite-dev-rpc@2.0.0:
+ resolution: {integrity: sha512-yKwbTwdHKSD2k/aGqyWpPHepo45OQc8lH3/6IfT4ZqeKE26ooKvi4WIEKzqWav8v+9Is8u1k8q54hvOmqASazA==}
+ peerDependencies:
+ vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 || ^8.0.0
+
+ vite-hot-client@2.2.0:
+ resolution: {integrity: sha512-76Zs9zrHbH7M7wqeyooGQKdX+yg0pQ0xuQ1PbFp4z5a0Lzn2e5IPFoCswnmqZ4GiwqB4Jo3WcDAMO9jARTJl8w==}
+ peerDependencies:
+ vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0
+
+ vite-node@6.0.0:
+ resolution: {integrity: sha512-oj4PVrT+pDh6GYf5wfUXkcZyekYS8kKPfLPXVl8qe324Ec6l4K2DUKNadRbZ3LQl0qGcDz+PyOo7ZAh00Y+JjQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
+ vite-plugin-checker@0.14.5:
+ resolution: {integrity: sha512-c9lQ92eisUO+F7Fd93aelojmiOS+NQpPgQ1XR2LTQHox1/laZf4yAoQj+L3RA9Vgh10e2nFd9b8r2LLyYZsbpA==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ '@biomejs/biome': '>=2.4.12'
+ eslint: '>=9.39.4'
+ meow: ^13.2.0 || ^14.0.0
+ optionator: ^0.9.4
+ oxlint: '>=1'
+ stylelint: '>=16.26.1'
+ typescript: '*'
+ vite: '>=5.4.21'
+ vue-tsc: ~2.2.10 || ^3.0.0
+ peerDependenciesMeta:
+ '@biomejs/biome':
+ optional: true
+ eslint:
+ optional: true
+ meow:
+ optional: true
+ optionator:
+ optional: true
+ oxlint:
+ optional: true
+ stylelint:
+ optional: true
+ typescript:
+ optional: true
+ vue-tsc:
+ optional: true
+
+ vite-plugin-inspect@11.4.1:
+ resolution: {integrity: sha512-ShOFe2PURXGvRS5OrgmOLZOCwDTD7dEBVt0tMpFPKb9AsvqXKCRGM8QgKrUbRbJYFXScHvDPpGRd28rYidC0tA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@nuxt/kit': '*'
+ vite: ^6.0.0 || ^7.0.0-0 || ^8.0.0-0
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+
+ vite-plugin-vue-tracer@1.4.0:
+ resolution: {integrity: sha512-0tQCjCqZWVSK6UeRW9S4ABbf47lKQ68zvrT2FNvZmiL+alDydCVyH/T3Jlfbdc3T3C2Iuyyl5aVsMbF8IQIoxA==}
+ peerDependencies:
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0
+ vue: ^3.5.0
+
+ vite@8.2.1:
+ resolution: {integrity: sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.4.0
+ esbuild: ^0.27.0 || ^0.28.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ vscode-uri@3.1.0:
+ resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
+
+ vue-bundle-renderer@2.3.1:
+ resolution: {integrity: sha512-7F4LNMopUw5RgYWo4zCmVUHCc6aQRC6dCKHUYkM/n+fux4AUGdL1x6m5A515WWyFysRRN7cx3hBzVqoisfRfzw==}
+
+ vue-component-type-helpers@3.3.11:
+ resolution: {integrity: sha512-LwcxzeliO9fkQcpJG0PoX8X5kmAhKmH9wkpDLxNabwzkQ9Zeib2YVHwFV4pcWmMLfXVfjr/dSV+DaJ3cIPgSNA==}
+
+ vue-demi@0.14.10:
+ resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
+ vue-devtools-stub@0.1.0:
+ resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==}
+
+ vue-eslint-parser@10.4.1:
+ resolution: {integrity: sha512-Gk6gRDj0n/fkRa3C3l0bBheoBckUq/Rs0F/TvMWIS6nzzx67amAViMe9CkNgsP2tXyQONvGiHQESHwFtZ3aYDA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+
+ vue-router@5.2.0:
+ resolution: {integrity: sha512-QAC5i0LEb1GLG0LXDQmHu8L7FX12j0KwU/JTKmLQUJMrn04gQdKP6Du+p0QwpHb3iy71vBlqnHQ8WAfOSAWhqw==}
+ peerDependencies:
+ '@pinia/colada': '>=0.21.2'
+ '@vue/compiler-sfc': ^3.5.34 || ^4.0.0
+ pinia: ^3.0.4 || ^4.0.2
+ vite: ^7.3.0 || ^8.0.0
+ vue: ^3.5.34 || ^4.0.0
+ peerDependenciesMeta:
+ '@pinia/colada':
+ optional: true
+ '@vue/compiler-sfc':
+ optional: true
+ pinia:
+ optional: true
+ vite:
+ optional: true
+
+ vue-tsc@3.3.11:
+ resolution: {integrity: sha512-gOb0B9rtU2+f1dszwPqSH5kAieIF9ReeLhD3kSRNHv5WZZUQz/JdVXW0RTdqhNTMlQkqKzrTTviqKr/4FYZraQ==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5.0.0'
+
+ vue@3.5.40:
+ resolution: {integrity: sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+
+ web-worker@1.5.0:
+ resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==}
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ wheel-gestures@2.2.48:
+ resolution: {integrity: sha512-f+Gy33Oa5Z14XY9679Zze+7VFhbsQfBFXodnU2x589l4kxGM9L5Y8zETTmcMR5pWOPQyRv4Z0lNax6xCO0NSlA==}
+ engines: {node: '>=18'}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ which@6.0.1:
+ resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ wrap-ansi@9.0.2:
+ resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
+ engines: {node: '>=18'}
+
+ ws@8.21.3:
+ resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ wsl-utils@0.3.1:
+ resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==}
+ engines: {node: '>=20'}
+
+ xml-name-validator@5.0.0:
+ resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
+ engines: {node: '>=18'}
+
+ y-protocols@1.0.7:
+ resolution: {integrity: sha512-YSVsLoXxO67J6eE/nV4AtFtT3QEotZf5sK5BHxFBXso7VDUT3Tx07IfA6hsu5Q5OmBdMkQVmFZ9QOA7fikWvnw==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+ peerDependencies:
+ yjs: ^13.0.0
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yallist@5.0.0:
+ resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
+ engines: {node: '>=18'}
+
+ yaml@2.9.0:
+ resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==}
+ engines: {node: '>= 14.6'}
+ hasBin: true
+
+ yargs-parser@22.0.0:
+ resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+
+ yargs@18.0.0:
+ resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+
+ yjs@13.6.30:
+ resolution: {integrity: sha512-vv/9h42eCMC81ZHDFswuu/MKzkl/vyq1BhaNGfHyOonwlG4CJbQF4oiBBJPvfdeCt/PlVDWh7Nov9D34YY09uQ==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+ yocto-queue@1.2.2:
+ resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
+ engines: {node: '>=12.20'}
+
+ youch-core@0.3.3:
+ resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==}
+
+ youch@4.1.1:
+ resolution: {integrity: sha512-mxW3qiSnl+GRxXsaUMzv2Mbada1Y8CDltET9UxejDQe6DBYlSekghl5U5K0ReAikcHDi0G1vKZEmmo/NWAGKLA==}
+
+ zigpty@0.2.1:
+ resolution: {integrity: sha512-MR9JqJx2wf5f4wz8zpx050AlqrmWeIW+1h0SO5iEyhG3HFRjY5luC3szS2ux2EGuPjE5OU9ZAuiCBeMWBTrqZw==}
+
+ zip-stream@6.0.1:
+ resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
+ engines: {node: '>= 14'}
+
+ zod@4.4.3:
+ resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==}
+
+snapshots:
+
+ '@alloc/quick-lru@5.2.0': {}
+
+ '@antfu/install-pkg@1.1.0':
+ dependencies:
+ package-manager-detector: 1.8.0
+ tinyexec: 1.2.4
+
+ '@antfu/install-pkg@2.0.1':
+ dependencies:
+ package-manager-detector: 1.8.0
+ tinyexec: 1.2.4
+
+ '@apidevtools/json-schema-ref-parser@14.2.1(@types/json-schema@7.0.15)':
+ dependencies:
+ '@types/json-schema': 7.0.15
+ js-yaml: 4.1.1
+
+ '@babel/code-frame@7.29.7':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.29.7
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.29.3': {}
+
+ '@babel/core@7.29.0(supports-color@10.2.2)':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helpers': 7.29.2
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3(supports-color@10.2.2)
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.29.7':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+
+ '@babel/generator@8.0.0':
+ dependencies:
+ '@babel/parser': 8.0.4
+ '@babel/types': 8.0.4
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ '@types/jsesc': 2.5.1
+ jsesc: 3.1.0
+
+ '@babel/helper-annotate-as-pure@7.29.7':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@babel/helper-compilation-targets@7.28.6':
+ dependencies:
+ '@babel/compat-data': 7.29.3
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.28.7
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-optimise-call-expression': 7.29.7
+ '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2)
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-globals@7.29.7': {}
+
+ '@babel/helper-member-expression-to-functions@7.29.7(supports-color@10.2.2)':
+ dependencies:
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-imports@7.28.6(supports-color@10.2.2)':
+ dependencies:
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ '@babel/helper-module-imports': 7.28.6(supports-color@10.2.2)
+ '@babel/helper-validator-identifier': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-optimise-call-expression@7.29.7':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@babel/helper-plugin-utils@7.29.7': {}
+
+ '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-optimise-call-expression': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@10.2.2)':
+ dependencies:
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-string-parser@7.29.7': {}
+
+ '@babel/helper-string-parser@8.0.0': {}
+
+ '@babel/helper-validator-identifier@7.29.7': {}
+
+ '@babel/helper-validator-identifier@8.0.4': {}
+
+ '@babel/helper-validator-option@7.27.1': {}
+
+ '@babel/helpers@7.29.2':
+ dependencies:
+ '@babel/template': 7.29.7
+ '@babel/types': 7.29.7
+
+ '@babel/parser@7.29.7':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@babel/parser@8.0.4':
+ dependencies:
+ '@babel/types': 8.0.4
+
+ '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2)
+ '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/template@7.29.7':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+
+ '@babel/traverse@7.29.7(supports-color@10.2.2)':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/helper-globals': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/types': 7.29.7
+ debug: 4.4.3(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.29.7':
+ dependencies:
+ '@babel/helper-string-parser': 7.29.7
+ '@babel/helper-validator-identifier': 7.29.7
+
+ '@babel/types@8.0.4':
+ dependencies:
+ '@babel/helper-string-parser': 8.0.0
+ '@babel/helper-validator-identifier': 8.0.4
+
+ '@bomb.sh/tab@0.0.19(cac@7.0.0)(citty@0.2.2)':
+ optionalDependencies:
+ cac: 7.0.0
+ citty: 0.2.2
+
+ '@capsizecss/unpack@4.0.0':
+ dependencies:
+ fontkitten: 1.0.3
+
+ '@clack/core@1.4.3':
+ dependencies:
+ fast-wrap-ansi: 0.2.0
+ sisteransi: 1.0.5
+
+ '@clack/prompts@1.7.0':
+ dependencies:
+ '@clack/core': 1.4.3
+ fast-string-width: 3.0.2
+ fast-wrap-ansi: 0.2.0
+ sisteransi: 1.0.5
+
+ '@cloudflare/kv-asset-handler@0.4.2': {}
+
+ '@colordx/core@5.4.3': {}
+
+ '@devframes/hub@0.7.15(devframe@0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3))':
+ dependencies:
+ birpc: 4.0.0
+ destr: 2.0.5
+ devframe: 0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)
+ nostics: 1.2.0
+ pathe: 2.0.3
+ perfect-debounce: 2.1.0
+ tinyexec: 1.2.4
+ zigpty: 0.2.1
+ optional: true
+
+ '@devframes/json-render@0.7.15(@devframes/hub@0.7.15(devframe@0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)))(devframe@0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3))':
+ dependencies:
+ '@json-render/core': 0.19.0(zod@4.4.3)
+ devframe: 0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)
+ nostics: 1.2.0
+ zod: 4.4.3
+ optionalDependencies:
+ '@devframes/hub': 0.7.15(devframe@0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3))
+ optional: true
+
+ '@dxup/nuxt@0.5.6(esbuild@0.28.0)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))':
+ dependencies:
+ '@dxup/unimport': 0.1.2
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ '@vue/compiler-dom': 3.5.40
+ chokidar: 5.0.0
+ knitwork: 1.3.0
+ magic-string: 1.2.2
+ pathe: 2.0.3
+ tinyglobby: 0.2.17
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - magicast
+ - oxc-parser
+ - rolldown
+ - rollup
+ - unloader
+ - vite
+ - webpack
+
+ '@dxup/unimport@0.1.2': {}
+
+ '@emnapi/core@1.10.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/core@1.11.2':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.2
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/core@2.0.0-alpha.3':
+ dependencies:
+ '@emnapi/wasi-threads': 2.0.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.10.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.11.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@2.0.0-alpha.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.2.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.2.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@2.0.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@es-joy/jsdoccomment@0.91.0':
+ dependencies:
+ '@types/estree': 1.0.9
+ '@typescript-eslint/types': 8.66.0
+ comment-parser: 1.4.7
+ esquery: 1.7.0
+ jsdoc-type-pratt-parser: 8.0.0
+
+ '@es-joy/resolve.exports@1.2.0': {}
+
+ '@esbuild/aix-ppc64@0.27.7':
+ optional: true
+
+ '@esbuild/aix-ppc64@0.28.0':
+ optional: true
+
+ '@esbuild/android-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/android-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/android-arm@0.27.7':
+ optional: true
+
+ '@esbuild/android-arm@0.28.0':
+ optional: true
+
+ '@esbuild/android-x64@0.27.7':
+ optional: true
+
+ '@esbuild/android-x64@0.28.0':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/darwin-x64@0.27.7':
+ optional: true
+
+ '@esbuild/darwin-x64@0.28.0':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.27.7':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-arm@0.27.7':
+ optional: true
+
+ '@esbuild/linux-arm@0.28.0':
+ optional: true
+
+ '@esbuild/linux-ia32@0.27.7':
+ optional: true
+
+ '@esbuild/linux-ia32@0.28.0':
+ optional: true
+
+ '@esbuild/linux-loong64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-loong64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.27.7':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.28.0':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-s390x@0.27.7':
+ optional: true
+
+ '@esbuild/linux-s390x@0.28.0':
+ optional: true
+
+ '@esbuild/linux-x64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-x64@0.28.0':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.27.7':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.28.0':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.27.7':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.28.0':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/sunos-x64@0.27.7':
+ optional: true
+
+ '@esbuild/sunos-x64@0.28.0':
+ optional: true
+
+ '@esbuild/win32-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/win32-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/win32-ia32@0.27.7':
+ optional: true
+
+ '@esbuild/win32-ia32@0.28.0':
+ optional: true
+
+ '@esbuild/win32-x64@0.27.7':
+ optional: true
+
+ '@esbuild/win32-x64@0.28.0':
+ optional: true
+
+ '@eslint-community/eslint-utils@4.9.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))':
+ dependencies:
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.12.2': {}
+
+ '@eslint/compat@2.1.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))':
+ dependencies:
+ '@eslint/core': 1.2.1
+ optionalDependencies:
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+
+ '@eslint/config-array@0.23.5(supports-color@10.2.2)':
+ dependencies:
+ '@eslint/object-schema': 3.0.5
+ debug: 4.4.3(supports-color@10.2.2)
+ minimatch: 10.2.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/config-helpers@0.5.5':
+ dependencies:
+ '@eslint/core': 1.2.1
+
+ '@eslint/config-helpers@0.7.0':
+ dependencies:
+ '@eslint/core': 1.2.1
+
+ '@eslint/config-inspector@3.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(srvx@0.11.22)':
+ dependencies:
+ ansis: 4.3.1
+ cac: 7.0.0
+ chokidar: 5.0.0
+ devframe: 0.8.2(cac@7.0.0)(srvx@0.11.22)
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ jiti: 2.7.0
+ tinyglobby: 0.2.17
+ transitivePeerDependencies:
+ - '@modelcontextprotocol/client'
+ - '@modelcontextprotocol/server'
+ - srvx
+
+ '@eslint/core@1.2.1':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
+ '@eslint/css-tree@4.0.5':
+ dependencies:
+ mdn-data: 2.29.0
+ source-map-js: 1.2.1
+
+ '@eslint/js@10.0.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))':
+ optionalDependencies:
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+
+ '@eslint/object-schema@3.0.5': {}
+
+ '@eslint/plugin-kit@0.7.2':
+ dependencies:
+ '@eslint/core': 1.2.1
+ levn: 0.4.1
+
+ '@floating-ui/core@1.8.0':
+ dependencies:
+ '@floating-ui/utils': 0.2.12
+
+ '@floating-ui/dom@1.8.0':
+ dependencies:
+ '@floating-ui/core': 1.8.0
+ '@floating-ui/utils': 0.2.12
+
+ '@floating-ui/utils@0.2.12': {}
+
+ '@floating-ui/vue@1.1.11(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@floating-ui/dom': 1.8.0
+ '@floating-ui/utils': 0.2.12
+ vue-demi: 0.14.10(vue@3.5.40(typescript@6.0.3))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@humanfs/core@0.19.2':
+ dependencies:
+ '@humanfs/types': 0.15.0
+
+ '@humanfs/node@0.16.8':
+ dependencies:
+ '@humanfs/core': 0.19.2
+ '@humanfs/types': 0.15.0
+ '@humanwhocodes/retry': 0.4.3
+
+ '@humanfs/types@0.15.0': {}
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/retry@0.4.3': {}
+
+ '@iconify-json/lucide@1.2.127':
+ dependencies:
+ '@iconify/types': 2.0.0
+
+ '@iconify-json/simple-icons@1.2.94':
+ dependencies:
+ '@iconify/types': 2.0.0
+
+ '@iconify/collections@1.0.727':
+ dependencies:
+ '@iconify/types': 2.0.0
+
+ '@iconify/types@2.0.0': {}
+
+ '@iconify/utils@3.1.4':
+ dependencies:
+ '@antfu/install-pkg': 1.1.0
+ '@iconify/types': 2.0.0
+ import-meta-resolve: 4.2.0
+
+ '@iconify/vue@5.0.1(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@iconify/types': 2.0.0
+ vue: 3.5.40(typescript@6.0.3)
+
+ '@internationalized/date@3.12.1':
+ dependencies:
+ '@swc/helpers': 0.5.21
+
+ '@internationalized/number@3.6.6':
+ dependencies:
+ '@swc/helpers': 0.5.21
+
+ '@ioredis/commands@1.5.1': {}
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.2.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@isaacs/fs-minipass@4.0.1':
+ dependencies:
+ minipass: 7.1.3
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/source-map@0.3.11':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@json-render/core@0.19.0(zod@4.4.3)':
+ dependencies:
+ zod: 4.4.3
+ optional: true
+
+ '@kwsites/file-exists@1.1.1(supports-color@10.2.2)':
+ dependencies:
+ debug: 4.4.3(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@kwsites/promise-deferred@1.1.1': {}
+
+ '@mapbox/node-pre-gyp@2.0.3(supports-color@10.2.2)':
+ dependencies:
+ consola: 3.4.2
+ detect-libc: 2.1.2
+ https-proxy-agent: 7.0.6(supports-color@10.2.2)
+ node-fetch: 2.7.0
+ nopt: 8.1.0
+ semver: 7.8.5
+ tar: 7.5.15
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@napi-rs/wasm-runtime@1.2.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
+ '@napi-rs/wasm-runtime@1.2.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)':
+ dependencies:
+ '@emnapi/core': 1.11.2
+ '@emnapi/runtime': 1.11.2
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
+ '@napi-rs/wasm-runtime@1.2.0(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)':
+ dependencies:
+ '@emnapi/core': 2.0.0-alpha.3
+ '@emnapi/runtime': 2.0.0-alpha.3
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.20.1
+
+ '@nuxt/cli@3.37.0(@nuxt/schema@4.5.2)(cac@7.0.0)(magicast@0.5.4)(supports-color@10.2.2)':
+ dependencies:
+ '@bomb.sh/tab': 0.0.19(cac@7.0.0)(citty@0.2.2)
+ '@clack/prompts': 1.7.0
+ c12: 3.3.4(magicast@0.5.4)
+ citty: 0.2.2
+ confbox: 0.2.4
+ consola: 3.4.2
+ debug: 4.4.3(supports-color@10.2.2)
+ defu: 6.1.7
+ exsolve: 1.1.1
+ fuse.js: 7.5.0
+ fzf: 0.5.2
+ giget: 3.3.1
+ jiti: 2.7.0
+ listhen: 1.10.0(srvx@0.11.22)
+ nypm: 0.6.9
+ ofetch: 1.5.1
+ ohash: 2.0.12
+ pathe: 2.0.3
+ perfect-debounce: 2.1.0
+ pkg-types: 2.3.1
+ scule: 1.3.0
+ semver: 7.8.5
+ srvx: 0.11.22
+ std-env: 4.2.0
+ tinyclip: 0.1.15
+ tinyexec: 1.2.4
+ ufo: 1.6.4
+ youch: 4.1.1
+ optionalDependencies:
+ '@nuxt/schema': 4.5.2
+ transitivePeerDependencies:
+ - cac
+ - commander
+ - magicast
+ - supports-color
+
+ '@nuxt/devalue@2.0.2': {}
+
+ '@nuxt/devtools-kit@3.4.1(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))':
+ dependencies:
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ execa: 8.0.1
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - magic-string
+ - magicast
+ - oxc-parser
+ - rolldown
+ - unplugin
+
+ '@nuxt/devtools-wizard@3.4.1':
+ dependencies:
+ '@clack/prompts': 1.7.0
+ consola: 3.4.2
+ diff: 8.0.4
+ execa: 8.0.1
+ magicast: 0.5.4
+ pathe: 2.0.3
+ pkg-types: 2.3.1
+ semver: 7.8.5
+
+ '@nuxt/devtools@3.4.1(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.2.2)(oxc-parser@0.140.0)(rolldown@1.2.1)(supports-color@10.2.2)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@nuxt/devtools-kit': 3.4.1(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ '@nuxt/devtools-wizard': 3.4.1
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ '@vue/devtools-core': 8.2.1(vue@3.5.40(typescript@6.0.3))
+ '@vue/devtools-kit': 8.2.1
+ birpc: 4.0.0
+ consola: 3.4.2
+ destr: 2.0.5
+ error-stack-parser-es: 2.0.1
+ execa: 8.0.1
+ fast-npm-meta: 2.2.0
+ get-port-please: 3.2.0
+ hookable: 6.1.1
+ image-meta: 0.2.2
+ is-installed-globally: 1.0.0
+ launch-editor: 2.14.1
+ local-pkg: 1.2.1
+ magicast: 0.5.4
+ nypm: 0.6.9
+ ohash: 2.0.12
+ pathe: 2.0.3
+ perfect-debounce: 2.1.0
+ pkg-types: 2.3.1
+ semver: 7.8.5
+ simple-git: 3.36.0(supports-color@10.2.2)
+ sirv: 3.0.2
+ structured-clone-es: 2.0.1
+ tinyglobby: 0.2.17
+ unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ vite-plugin-inspect: 11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ vite-plugin-vue-tracer: 1.4.0(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ which: 6.0.1
+ ws: 8.21.3
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - bufferutil
+ - db0
+ - idb-keyval
+ - ioredis
+ - magic-string
+ - oxc-parser
+ - rolldown
+ - supports-color
+ - unplugin
+ - uploadthing
+ - utf-8-validate
+ - vue
+
+ '@nuxt/eslint-config@1.17.0(@typescript-eslint/utils@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.40)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@antfu/install-pkg': 2.0.1
+ '@clack/prompts': 1.7.0
+ '@eslint/js': 10.0.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ '@nuxt/eslint-plugin': 1.17.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@stylistic/eslint-plugin': 5.10.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/parser': 8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ eslint-config-flat-gitignore: 2.3.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-flat-config-utils: 3.2.0
+ eslint-merge-processors: 2.0.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-plugin-import-lite: 0.6.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-plugin-import-x: 4.17.1(@typescript-eslint/utils@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)
+ eslint-plugin-jsdoc: 63.3.3(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)
+ eslint-plugin-regexp: 3.1.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-plugin-unicorn: 73.0.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-plugin-vue: 10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)))(@typescript-eslint/parser@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(vue-eslint-parser@10.4.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2))
+ eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.40)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ globals: 17.9.0
+ local-pkg: 1.2.1
+ pathe: 2.0.3
+ vue-eslint-parser: 10.4.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - '@typescript-eslint/utils'
+ - '@vue/compiler-sfc'
+ - eslint-import-resolver-node
+ - supports-color
+ - typescript
+
+ '@nuxt/eslint-plugin@1.17.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.66.0
+ '@typescript-eslint/utils': 8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@nuxt/eslint@1.17.0(@typescript-eslint/utils@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.40)(esbuild@0.28.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(srvx@0.11.22)(supports-color@10.2.2)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))':
+ dependencies:
+ '@eslint/config-inspector': 3.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(srvx@0.11.22)
+ '@nuxt/devtools-kit': 3.4.1(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ '@nuxt/eslint-config': 1.17.0(@typescript-eslint/utils@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.40)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@nuxt/eslint-plugin': 1.17.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ chokidar: 5.0.0
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ eslint-flat-config-utils: 3.2.0
+ eslint-typegen: 2.3.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ find-up: 8.0.0
+ get-port-please: 3.2.0
+ mlly: 1.8.2
+ pathe: 2.0.3
+ unimport: 6.4.0(esbuild@0.28.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@modelcontextprotocol/client'
+ - '@modelcontextprotocol/server'
+ - '@rspack/core'
+ - '@typescript-eslint/utils'
+ - '@vue/compiler-sfc'
+ - bun-types-no-globals
+ - esbuild
+ - eslint-import-resolver-node
+ - eslint-plugin-format
+ - magic-string
+ - magicast
+ - oxc-parser
+ - rolldown
+ - rollup
+ - srvx
+ - supports-color
+ - typescript
+ - unloader
+ - unplugin
+ - vite
+ - webpack
+
+ '@nuxt/fonts@0.14.0(db0@0.3.4)(esbuild@0.28.0)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))':
+ dependencies:
+ '@nuxt/devtools-kit': 3.4.1(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ consola: 3.4.2
+ defu: 6.1.7
+ fontless: 0.2.1(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ h3: 1.15.11
+ magic-regexp: 0.10.0
+ ofetch: 1.5.1
+ pathe: 2.0.3
+ sirv: 3.0.2
+ tinyglobby: 0.2.17
+ ufo: 1.6.4
+ unifont: 0.7.4
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@farmfe/core'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@rspack/core'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - bun-types-no-globals
+ - db0
+ - esbuild
+ - idb-keyval
+ - ioredis
+ - magic-string
+ - magicast
+ - oxc-parser
+ - rolldown
+ - rollup
+ - unloader
+ - uploadthing
+ - vite
+ - webpack
+
+ '@nuxt/icon@2.5.0(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@iconify/collections': 1.0.727
+ '@iconify/types': 2.0.0
+ '@iconify/utils': 3.1.4
+ '@iconify/vue': 5.0.1(vue@3.5.40(typescript@6.0.3))
+ '@nuxt/devtools-kit': 3.4.1(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ consola: 3.4.2
+ local-pkg: 1.2.1
+ mlly: 1.8.2
+ ohash: 2.0.12
+ picomatch: 4.0.5
+ std-env: 4.2.0
+ tinyglobby: 0.2.17
+ ufo: 1.6.4
+ transitivePeerDependencies:
+ - magic-string
+ - magicast
+ - oxc-parser
+ - rolldown
+ - unplugin
+ - vite
+ - vue
+
+ '@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))':
+ dependencies:
+ c12: 3.3.4(magicast@0.5.4)
+ consola: 3.4.2
+ defu: 6.1.7
+ destr: 2.0.5
+ errx: 0.1.2
+ exsolve: 1.1.1
+ ignore: 7.0.6
+ jiti: 2.7.0
+ klona: 2.0.6
+ mlly: 1.8.2
+ nostics: 1.2.0
+ ohash: 2.0.12
+ pathe: 2.0.3
+ pkg-types: 2.3.1
+ rc9: 3.0.1
+ scule: 1.3.0
+ tinyglobby: 0.2.17
+ ufo: 1.6.4
+ unctx: 3.0.0(magic-string@1.2.2)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ untyped: 2.0.0
+ verkit: 0.3.2
+ transitivePeerDependencies:
+ - magic-string
+ - magicast
+ - oxc-parser
+ - rolldown
+ - unplugin
+
+ '@nuxt/nitro-server@4.5.2(1faf410aca872ebb6f154eab8d23cc95)':
+ dependencies:
+ '@nuxt/devalue': 2.0.2
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ '@unhead/vue': 3.4.0(@oxc-project/types@0.142.0)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(esbuild@0.28.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ '@vue/shared': 3.5.40
+ consola: 3.4.2
+ defu: 6.1.7
+ destr: 2.0.5
+ devalue: 5.9.0
+ errx: 0.1.2
+ escape-string-regexp: 5.0.0
+ exsolve: 1.1.1
+ h3: 1.15.11
+ impound: 1.1.6(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ klona: 2.0.6
+ mocked-exports: 0.1.1
+ nitropack: 2.13.4(oxc-parser@0.140.0)(rolldown@1.2.1)(srvx@0.11.22)(supports-color@10.2.2)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ nostics: 1.2.0
+ nuxt: 4.5.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(@parcel/watcher@2.5.6)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(@vue/compiler-sfc@3.5.40)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.1)(rollup@4.60.4))(rollup@4.60.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.47.1)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0)
+ nypm: 0.6.9
+ ohash: 2.0.12
+ pathe: 2.0.3
+ rou3: 0.9.1
+ std-env: 4.2.0
+ ufo: 1.6.4
+ unctx: 3.0.0(magic-string@1.2.2)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))
+ vue: 3.5.40(typescript@6.0.3)
+ vue-bundle-renderer: 2.3.1
+ vue-devtools-stub: 0.1.0
+ optionalDependencies:
+ '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@farmfe/core'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@oxc-project/types'
+ - '@planetscale/database'
+ - '@rspack/core'
+ - '@unhead/cli'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - '@vitejs/devtools-kit'
+ - aws4fetch
+ - bare-abort-controller
+ - bare-buffer
+ - better-sqlite3
+ - bun-types-no-globals
+ - db0
+ - drizzle-orm
+ - encoding
+ - esbuild
+ - idb-keyval
+ - ioredis
+ - lightningcss
+ - magic-string
+ - magicast
+ - mysql2
+ - oxc-parser
+ - react-native-b4a
+ - rolldown
+ - rollup
+ - sqlite3
+ - srvx
+ - supports-color
+ - typescript
+ - unloader
+ - unplugin
+ - uploadthing
+ - vite
+ - webpack
+ - xml2js
+
+ '@nuxt/schema@4.5.2':
+ dependencies:
+ '@vue/shared': 3.5.40
+ defu: 6.1.7
+ nostics: 1.2.0
+ pathe: 2.0.3
+ pkg-types: 2.3.1
+ std-env: 4.2.0
+
+ '@nuxt/telemetry@2.8.0(@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))))':
+ dependencies:
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ citty: 0.2.2
+ consola: 3.4.2
+ ofetch: 2.0.0-alpha.3
+ rc9: 3.0.1
+ std-env: 4.2.0
+
+ '@nuxt/ui@4.11.0(2cb0382fb94ddb82dc3bbb00dab71962)':
+ dependencies:
+ '@floating-ui/dom': 1.8.0
+ '@iconify/vue': 5.0.1(vue@3.5.40(typescript@6.0.3))
+ '@nuxt/fonts': 0.14.0(db0@0.3.4)(esbuild@0.28.0)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ '@nuxt/icon': 2.5.0(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ '@nuxt/schema': 4.5.2
+ '@nuxtjs/color-mode': 4.0.1(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ '@standard-schema/spec': 1.1.0
+ '@tailwindcss/postcss': 4.3.3
+ '@tailwindcss/vite': 4.3.3(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ '@tanstack/vue-table': 8.21.3(vue@3.5.40(typescript@6.0.3))
+ '@tanstack/vue-virtual': 3.13.36(vue@3.5.40(typescript@6.0.3))
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/extension-bubble-menu': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-code': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-collaboration': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)
+ '@tiptap/extension-drag-handle': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/extension-collaboration@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))
+ '@tiptap/extension-drag-handle-vue-3': 3.24.0(@tiptap/extension-drag-handle@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/extension-collaboration@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)))(@tiptap/pm@3.24.0)(@tiptap/vue-3@3.24.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(vue@3.5.40(typescript@6.0.3)))(vue@3.5.40(typescript@6.0.3))
+ '@tiptap/extension-floating-menu': 3.24.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-horizontal-rule': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-image': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-mention': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/suggestion@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))
+ '@tiptap/extension-node-range': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-placeholder': 3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))
+ '@tiptap/markdown': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+ '@tiptap/starter-kit': 3.24.0
+ '@tiptap/suggestion': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/vue-3': 3.24.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(vue@3.5.40(typescript@6.0.3))
+ '@unhead/vue': 3.4.0(@oxc-project/types@0.142.0)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(esbuild@0.28.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ '@vueuse/core': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ '@vueuse/integrations': 14.4.0(change-case@5.4.4)(fuse.js@7.5.0)(vue@3.5.40(typescript@6.0.3))
+ '@vueuse/shared': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ colortranslator: 5.0.0
+ consola: 3.4.2
+ defu: 6.1.7
+ embla-carousel-auto-height: 8.6.0(embla-carousel@8.6.0)
+ embla-carousel-auto-scroll: 8.6.0(embla-carousel@8.6.0)
+ embla-carousel-autoplay: 8.6.0(embla-carousel@8.6.0)
+ embla-carousel-class-names: 8.6.0(embla-carousel@8.6.0)
+ embla-carousel-fade: 8.6.0(embla-carousel@8.6.0)
+ embla-carousel-vue: 8.6.0(vue@3.5.40(typescript@6.0.3))
+ embla-carousel-wheel-gestures: 8.1.0(embla-carousel@8.6.0)
+ fuse.js: 7.5.0
+ hookable: 6.1.1
+ knitwork: 1.3.0
+ magic-string: 1.2.2
+ mlly: 1.8.2
+ motion-v: 2.4.0(@vueuse/core@14.4.0(vue@3.5.40(typescript@6.0.3)))(vue@3.5.40(typescript@6.0.3))
+ ohash: 2.0.12
+ pathe: 2.0.3
+ reka-ui: 2.10.3(vue@3.5.40(typescript@6.0.3))
+ scule: 1.3.0
+ tailwind-merge: 3.6.0
+ tailwind-variants: 3.2.2(tailwind-merge@3.6.0)(tailwindcss@4.3.3)
+ tailwindcss: 4.3.3
+ tinyglobby: 0.2.17
+ typescript: 6.0.3
+ ufo: 1.6.4
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin-auto-import: 21.1.0(@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))))(@vueuse/core@14.4.0(vue@3.5.40(typescript@6.0.3)))(esbuild@0.28.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin-vue-components: 32.1.0(@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))))(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ vaul-vue: 0.4.1(reka-ui@2.10.3(vue@3.5.40(typescript@6.0.3)))(vue@3.5.40(typescript@6.0.3))
+ vue-component-type-helpers: 3.3.11
+ optionalDependencies:
+ '@internationalized/date': 3.12.1
+ '@internationalized/number': 3.6.6
+ valibot: 1.4.2(typescript@6.0.3)
+ vue-router: 5.2.0(@vue/compiler-sfc@3.5.40)(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ zod: 4.4.3
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@farmfe/core'
+ - '@netlify/blobs'
+ - '@oxc-project/types'
+ - '@planetscale/database'
+ - '@rspack/core'
+ - '@unhead/cli'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - '@vitejs/devtools-kit'
+ - '@vue/composition-api'
+ - async-validator
+ - aws4fetch
+ - axios
+ - bun-types-no-globals
+ - change-case
+ - db0
+ - drauu
+ - embla-carousel
+ - esbuild
+ - focus-trap
+ - idb-keyval
+ - ioredis
+ - jwt-decode
+ - lightningcss
+ - magicast
+ - nprogress
+ - oxc-parser
+ - qrcode
+ - react
+ - react-dom
+ - rolldown
+ - rollup
+ - sortablejs
+ - universal-cookie
+ - unloader
+ - uploadthing
+ - vite
+ - vue
+ - webpack
+
+ '@nuxt/vite-builder@4.5.2(521f6102c765bb8970dc9d69c7b33187)':
+ dependencies:
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ '@vitejs/plugin-vue': 6.0.8(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ '@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ autoprefixer: 10.5.4(postcss@8.5.25)
+ consola: 3.4.2
+ cssnano: 8.0.2(postcss@8.5.25)
+ defu: 6.1.7
+ escape-string-regexp: 5.0.0
+ exsolve: 1.1.1
+ generic-names: 4.0.0
+ get-port-please: 3.2.0
+ jiti: 2.7.0
+ js-tokens: 10.0.0
+ knitwork: 1.3.0
+ mlly: 1.8.2
+ mocked-exports: 0.1.1
+ nuxt: 4.5.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(@parcel/watcher@2.5.6)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(@vue/compiler-sfc@3.5.40)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.1)(rollup@4.60.4))(rollup@4.60.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.47.1)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0)
+ nypm: 0.6.9
+ pathe: 2.0.3
+ pkg-types: 2.3.1
+ postcss: 8.5.25
+ rolldown-string: 0.3.1(rolldown@1.2.1)
+ seroval: 1.6.2
+ std-env: 4.2.0
+ ufo: 1.6.4
+ unenv: 2.0.0-rc.24
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ vite-node: 6.0.0(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ vite-plugin-checker: 0.14.5(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))
+ vue: 3.5.40(typescript@6.0.3)
+ vue-bundle-renderer: 2.3.1
+ optionalDependencies:
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0(supports-color@10.2.2))
+ rolldown: 1.2.1
+ rollup-plugin-visualizer: 7.0.1(rolldown@1.2.1)(rollup@4.60.4)
+ transitivePeerDependencies:
+ - '@biomejs/biome'
+ - '@farmfe/core'
+ - '@rspack/core'
+ - '@types/node'
+ - '@vitejs/devtools'
+ - bun-types-no-globals
+ - esbuild
+ - eslint
+ - less
+ - magic-string
+ - magicast
+ - meow
+ - optionator
+ - oxc-parser
+ - oxlint
+ - rollup
+ - sass
+ - sass-embedded
+ - stylelint
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - typescript
+ - unloader
+ - vue-tsc
+ - webpack
+ - yaml
+
+ '@nuxtjs/color-mode@4.0.1(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))':
+ dependencies:
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ exsolve: 1.1.1
+ pathe: 2.0.3
+ pkg-types: 2.3.1
+ semver: 7.8.5
+ transitivePeerDependencies:
+ - magic-string
+ - magicast
+ - oxc-parser
+ - rolldown
+ - unplugin
+
+ '@oxc-parser/binding-android-arm-eabi@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-android-arm64@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-darwin-arm64@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-darwin-x64@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-freebsd-x64@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm-musleabihf@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm64-gnu@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm64-musl@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-ppc64-gnu@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-riscv64-gnu@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-riscv64-musl@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-s390x-gnu@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-x64-gnu@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-x64-musl@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-openharmony-arm64@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-wasm32-wasi@0.140.0':
+ dependencies:
+ '@emnapi/core': 1.11.2
+ '@emnapi/runtime': 1.11.2
+ '@napi-rs/wasm-runtime': 1.2.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)
+ optional: true
+
+ '@oxc-parser/binding-win32-arm64-msvc@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-win32-ia32-msvc@0.140.0':
+ optional: true
+
+ '@oxc-parser/binding-win32-x64-msvc@0.140.0':
+ optional: true
+
+ '@oxc-project/types@0.140.0':
+ optional: true
+
+ '@oxc-project/types@0.142.0': {}
+
+ '@parcel/watcher-android-arm64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-darwin-arm64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-darwin-x64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-freebsd-x64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-arm-glibc@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-arm-musl@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-musl@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-x64-glibc@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-x64-musl@2.5.6':
+ optional: true
+
+ '@parcel/watcher-wasm@2.5.6':
+ dependencies:
+ is-glob: 4.0.3
+ picomatch: 4.0.5
+
+ '@parcel/watcher-win32-arm64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-win32-ia32@2.5.6':
+ optional: true
+
+ '@parcel/watcher-win32-x64@2.5.6':
+ optional: true
+
+ '@parcel/watcher@2.5.6':
+ dependencies:
+ detect-libc: 2.1.2
+ is-glob: 4.0.3
+ node-addon-api: 7.1.1
+ picomatch: 4.0.5
+ optionalDependencies:
+ '@parcel/watcher-android-arm64': 2.5.6
+ '@parcel/watcher-darwin-arm64': 2.5.6
+ '@parcel/watcher-darwin-x64': 2.5.6
+ '@parcel/watcher-freebsd-x64': 2.5.6
+ '@parcel/watcher-linux-arm-glibc': 2.5.6
+ '@parcel/watcher-linux-arm-musl': 2.5.6
+ '@parcel/watcher-linux-arm64-glibc': 2.5.6
+ '@parcel/watcher-linux-arm64-musl': 2.5.6
+ '@parcel/watcher-linux-x64-glibc': 2.5.6
+ '@parcel/watcher-linux-x64-musl': 2.5.6
+ '@parcel/watcher-win32-arm64': 2.5.6
+ '@parcel/watcher-win32-ia32': 2.5.6
+ '@parcel/watcher-win32-x64': 2.5.6
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@polka/url@1.0.0-next.29': {}
+
+ '@poppinss/colors@4.1.6':
+ dependencies:
+ kleur: 4.1.5
+
+ '@poppinss/dumper@0.7.0':
+ dependencies:
+ '@poppinss/colors': 4.1.6
+ '@sindresorhus/is': 7.2.0
+ supports-color: 10.2.2
+
+ '@poppinss/exception@1.2.3': {}
+
+ '@rolldown/binding-android-arm64@1.2.1':
+ optional: true
+
+ '@rolldown/binding-darwin-arm64@1.2.1':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@1.2.1':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@1.2.1':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.1':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@1.2.1':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@1.2.1':
+ optional: true
+
+ '@rolldown/binding-linux-ppc64-gnu@1.2.1':
+ optional: true
+
+ '@rolldown/binding-linux-s390x-gnu@1.2.1':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@1.2.1':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@1.2.1':
+ optional: true
+
+ '@rolldown/binding-openharmony-arm64@1.2.1':
+ optional: true
+
+ '@rolldown/binding-wasm32-wasi@1.2.1':
+ dependencies:
+ '@emnapi/core': 2.0.0-alpha.3
+ '@emnapi/runtime': 2.0.0-alpha.3
+ '@napi-rs/wasm-runtime': 1.2.0(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@1.2.1':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.2.1':
+ optional: true
+
+ '@rolldown/pluginutils@1.0.1': {}
+
+ '@rollup/plugin-alias@6.0.0(rollup@4.60.4)':
+ optionalDependencies:
+ rollup: 4.60.4
+
+ '@rollup/plugin-commonjs@29.0.2(rollup@4.60.4)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.4)
+ commondir: 1.0.1
+ estree-walker: 2.0.2
+ fdir: 6.5.0(picomatch@4.0.5)
+ is-reference: 1.2.1
+ magic-string: 0.30.21
+ picomatch: 4.0.5
+ optionalDependencies:
+ rollup: 4.60.4
+
+ '@rollup/plugin-inject@5.0.5(rollup@4.60.4)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.4)
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ optionalDependencies:
+ rollup: 4.60.4
+
+ '@rollup/plugin-json@6.1.0(rollup@4.60.4)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.4)
+ optionalDependencies:
+ rollup: 4.60.4
+
+ '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.4)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.4)
+ '@types/resolve': 1.20.2
+ deepmerge: 4.3.1
+ is-module: 1.0.0
+ resolve: 1.22.12
+ optionalDependencies:
+ rollup: 4.60.4
+
+ '@rollup/plugin-replace@6.0.3(rollup@4.60.4)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.4)
+ magic-string: 0.30.21
+ optionalDependencies:
+ rollup: 4.60.4
+
+ '@rollup/plugin-terser@1.0.0(rollup@4.60.4)':
+ dependencies:
+ serialize-javascript: 7.0.5
+ smob: 1.6.2
+ terser: 5.47.1
+ optionalDependencies:
+ rollup: 4.60.4
+
+ '@rollup/pluginutils@5.3.0(rollup@4.60.4)':
+ dependencies:
+ '@types/estree': 1.0.9
+ estree-walker: 2.0.2
+ picomatch: 4.0.5
+ optionalDependencies:
+ rollup: 4.60.4
+
+ '@rollup/rollup-android-arm-eabi@4.60.4':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.60.4':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.60.4':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.60.4':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.60.4':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-gnu@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-musl@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-gnu@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-musl@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.60.4':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.60.4':
+ optional: true
+
+ '@rollup/rollup-openbsd-x64@4.60.4':
+ optional: true
+
+ '@rollup/rollup-openharmony-arm64@4.60.4':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.60.4':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.60.4':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.60.4':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.60.4':
+ optional: true
+
+ '@simple-git/args-pathspec@1.0.3': {}
+
+ '@simple-git/argv-parser@1.1.1':
+ dependencies:
+ '@simple-git/args-pathspec': 1.0.3
+
+ '@sindresorhus/base62@1.0.0': {}
+
+ '@sindresorhus/is@7.2.0': {}
+
+ '@sindresorhus/merge-streams@4.0.0': {}
+
+ '@speed-highlight/core@1.2.15': {}
+
+ '@standard-schema/spec@1.1.0': {}
+
+ '@stylistic/eslint-plugin@5.10.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ '@typescript-eslint/types': 8.66.0
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
+ estraverse: 5.3.0
+ picomatch: 4.0.5
+
+ '@swc/helpers@0.5.21':
+ dependencies:
+ tslib: 2.8.1
+
+ '@tailwindcss/node@4.3.3':
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ enhanced-resolve: 5.24.5
+ jiti: 2.7.0
+ lightningcss: 1.32.0
+ magic-string: 0.30.21
+ source-map-js: 1.2.1
+ tailwindcss: 4.3.3
+
+ '@tailwindcss/oxide-android-arm64@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-arm64@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-x64@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-freebsd-x64@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-musl@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-wasm32-wasi@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide@4.3.3':
+ optionalDependencies:
+ '@tailwindcss/oxide-android-arm64': 4.3.3
+ '@tailwindcss/oxide-darwin-arm64': 4.3.3
+ '@tailwindcss/oxide-darwin-x64': 4.3.3
+ '@tailwindcss/oxide-freebsd-x64': 4.3.3
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.3
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.3.3
+ '@tailwindcss/oxide-linux-arm64-musl': 4.3.3
+ '@tailwindcss/oxide-linux-x64-gnu': 4.3.3
+ '@tailwindcss/oxide-linux-x64-musl': 4.3.3
+ '@tailwindcss/oxide-wasm32-wasi': 4.3.3
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3
+ '@tailwindcss/oxide-win32-x64-msvc': 4.3.3
+
+ '@tailwindcss/postcss@4.3.3':
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ '@tailwindcss/node': 4.3.3
+ '@tailwindcss/oxide': 4.3.3
+ postcss: 8.5.25
+ tailwindcss: 4.3.3
+
+ '@tailwindcss/vite@4.3.3(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))':
+ dependencies:
+ '@tailwindcss/node': 4.3.3
+ '@tailwindcss/oxide': 4.3.3
+ tailwindcss: 4.3.3
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+
+ '@tanstack/table-core@8.21.3': {}
+
+ '@tanstack/virtual-core@3.17.8': {}
+
+ '@tanstack/vue-table@8.21.3(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@tanstack/table-core': 8.21.3
+ vue: 3.5.40(typescript@6.0.3)
+
+ '@tanstack/vue-virtual@3.13.36(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@tanstack/virtual-core': 3.17.8
+ vue: 3.5.40(typescript@6.0.3)
+
+ '@tiptap/core@3.24.0(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-blockquote@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-bold@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-bubble-menu@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@floating-ui/dom': 1.8.0
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-bullet-list@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-code-block@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-code@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-collaboration@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+ '@tiptap/y-tiptap': 3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ yjs: 13.6.30
+
+ '@tiptap/extension-document@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-drag-handle-vue-3@3.24.0(@tiptap/extension-drag-handle@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/extension-collaboration@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)))(@tiptap/pm@3.24.0)(@tiptap/vue-3@3.24.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(vue@3.5.40(typescript@6.0.3)))(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@tiptap/extension-drag-handle': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/extension-collaboration@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))
+ '@tiptap/pm': 3.24.0
+ '@tiptap/vue-3': 3.24.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(vue@3.5.40(typescript@6.0.3))
+ vue: 3.5.40(typescript@6.0.3)
+
+ '@tiptap/extension-drag-handle@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/extension-collaboration@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))':
+ dependencies:
+ '@floating-ui/dom': 1.8.0
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/extension-collaboration': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)
+ '@tiptap/extension-node-range': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+ '@tiptap/y-tiptap': 3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+
+ '@tiptap/extension-dropcursor@3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/extensions': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-floating-menu@3.24.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@floating-ui/dom': 1.8.0
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-gapcursor@3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/extensions': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-hard-break@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-heading@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-horizontal-rule@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-image@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-italic@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-link@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+ linkifyjs: 4.3.3
+
+ '@tiptap/extension-list-item@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-list-keymap@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-mention@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@tiptap/suggestion@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+ '@tiptap/suggestion': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-node-range@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/extension-ordered-list@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-paragraph@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-placeholder@3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/extensions': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-strike@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-text@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extension-underline@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+
+ '@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/markdown@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+ marked: 17.0.6
+
+ '@tiptap/pm@3.24.0':
+ dependencies:
+ prosemirror-changeset: 2.4.1
+ prosemirror-commands: 1.7.1
+ prosemirror-dropcursor: 1.8.2
+ prosemirror-gapcursor: 1.4.1
+ prosemirror-history: 1.5.0
+ prosemirror-inputrules: 1.5.1
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.7
+ prosemirror-schema-list: 1.5.1
+ prosemirror-state: 1.4.4
+ prosemirror-tables: 1.8.5
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+
+ '@tiptap/starter-kit@3.24.0':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/extension-blockquote': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-bold': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-bullet-list': 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))
+ '@tiptap/extension-code': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-code-block': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-document': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-dropcursor': 3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))
+ '@tiptap/extension-gapcursor': 3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))
+ '@tiptap/extension-hard-break': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-heading': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-horizontal-rule': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-italic': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-link': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-list-item': 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))
+ '@tiptap/extension-list-keymap': 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))
+ '@tiptap/extension-ordered-list': 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))
+ '@tiptap/extension-paragraph': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-strike': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-text': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extension-underline': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))
+ '@tiptap/extensions': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/suggestion@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)':
+ dependencies:
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+
+ '@tiptap/vue-3@3.24.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@floating-ui/dom': 1.8.0
+ '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0)
+ '@tiptap/pm': 3.24.0
+ vue: 3.5.40(typescript@6.0.3)
+ optionalDependencies:
+ '@tiptap/extension-bubble-menu': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+ '@tiptap/extension-floating-menu': 3.24.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)
+
+ '@tiptap/y-tiptap@3.0.7(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
+ dependencies:
+ lib0: 0.2.117
+ prosemirror-model: 1.25.7
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.8
+ y-protocols: 1.0.7(yjs@13.6.30)
+ yjs: 13.6.30
+
+ '@tybys/wasm-util@0.10.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@types/esrecurse@4.3.1': {}
+
+ '@types/estree@1.0.8': {}
+
+ '@types/estree@1.0.9': {}
+
+ '@types/jsesc@2.5.1': {}
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/resolve@1.20.2': {}
+
+ '@types/web-bluetooth@0.0.20': {}
+
+ '@types/web-bluetooth@0.0.21': {}
+
+ '@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+ '@typescript-eslint/parser': 8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/scope-manager': 8.66.0
+ '@typescript-eslint/type-utils': 8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/visitor-keys': 8.66.0
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ ignore: 7.0.6
+ natural-compare: 1.4.0
+ ts-api-utils: 2.5.0(typescript@6.0.3)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 8.66.0
+ '@typescript-eslint/types': 8.66.0
+ '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/visitor-keys': 8.66.0
+ debug: 4.4.3(supports-color@10.2.2)
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/project-service@8.66.0(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3)
+ '@typescript-eslint/types': 8.66.0
+ debug: 4.4.3(supports-color@10.2.2)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@8.66.0':
+ dependencies:
+ '@typescript-eslint/types': 8.66.0
+ '@typescript-eslint/visitor-keys': 8.66.0
+
+ '@typescript-eslint/tsconfig-utils@8.66.0(typescript@6.0.3)':
+ dependencies:
+ typescript: 6.0.3
+
+ '@typescript-eslint/type-utils@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.66.0
+ '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ debug: 4.4.3(supports-color@10.2.2)
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ ts-api-utils: 2.5.0(typescript@6.0.3)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@8.66.0': {}
+
+ '@typescript-eslint/typescript-estree@8.66.0(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3)
+ '@typescript-eslint/types': 8.66.0
+ '@typescript-eslint/visitor-keys': 8.66.0
+ debug: 4.4.3(supports-color@10.2.2)
+ minimatch: 10.2.5
+ semver: 7.8.5
+ tinyglobby: 0.2.17
+ ts-api-utils: 2.5.0(typescript@6.0.3)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ '@typescript-eslint/scope-manager': 8.66.0
+ '@typescript-eslint/types': 8.66.0
+ '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/visitor-keys@8.66.0':
+ dependencies:
+ '@typescript-eslint/types': 8.66.0
+ eslint-visitor-keys: 5.0.1
+
+ '@unhead/bundler@3.4.0(@oxc-project/types@0.142.0)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(esbuild@0.28.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(unhead@3.4.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))':
+ dependencies:
+ magic-string: 1.2.2
+ oxc-walker: 1.1.1(@oxc-project/types@0.142.0)(oxc-parser@0.140.0)(rolldown@1.2.1)
+ unhead: 3.4.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ optionalDependencies:
+ '@vitejs/devtools-kit': 0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ esbuild: 0.28.0
+ lightningcss: 1.33.0
+ oxc-parser: 0.140.0
+ rolldown: 1.2.1
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@oxc-project/types'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - rollup
+ - unloader
+
+ '@unhead/vue@3.4.0(@oxc-project/types@0.142.0)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(esbuild@0.28.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@unhead/bundler': 3.4.0(@oxc-project/types@0.142.0)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(esbuild@0.28.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(unhead@3.4.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ hookable: 6.1.1
+ unhead: 3.4.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ vue: 3.5.40(typescript@6.0.3)
+ optionalDependencies:
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@oxc-project/types'
+ - '@rspack/core'
+ - '@unhead/cli'
+ - '@vitejs/devtools-kit'
+ - bun-types-no-globals
+ - esbuild
+ - lightningcss
+ - oxc-parser
+ - rolldown
+ - rollup
+ - unloader
+
+ '@unrs/resolver-binding-android-arm-eabi@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-android-arm64@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-darwin-arm64@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-darwin-x64@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-freebsd-x64@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm64-gnu@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm64-musl@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-loong64-gnu@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-loong64-musl@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-riscv64-musl@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-s390x-gnu@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-x64-gnu@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-linux-x64-musl@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-openharmony-arm64@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-wasm32-wasi@1.12.2':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@napi-rs/wasm-runtime': 1.2.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
+ optional: true
+
+ '@unrs/resolver-binding-win32-arm64-msvc@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-win32-ia32-msvc@1.12.2':
+ optional: true
+
+ '@unrs/resolver-binding-win32-x64-msvc@1.12.2':
+ optional: true
+
+ '@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@6.0.3))':
+ dependencies:
+ valibot: 1.4.2(typescript@6.0.3)
+ optional: true
+
+ '@vercel/nft@1.5.0(rollup@4.60.4)(supports-color@10.2.2)':
+ dependencies:
+ '@mapbox/node-pre-gyp': 2.0.3(supports-color@10.2.2)
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.4)
+ acorn: 8.18.0
+ acorn-import-attributes: 1.9.5(acorn@8.18.0)
+ async-sema: 3.1.1
+ bindings: 1.5.0
+ estree-walker: 2.0.2
+ glob: 13.0.6
+ graceful-fs: 4.2.11
+ node-gyp-build: 4.8.4
+ picomatch: 4.0.5
+ resolve-from: 5.0.0
+ transitivePeerDependencies:
+ - encoding
+ - rollup
+ - supports-color
+
+ '@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))':
+ dependencies:
+ '@devframes/hub': 0.7.15(devframe@0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3))
+ '@devframes/json-render': 0.7.15(@devframes/hub@0.7.15(devframe@0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)))(devframe@0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3))
+ devframe: 0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)
+ local-pkg: 1.2.1
+ mlly: 1.8.2
+ nostics: 1.2.0
+ nypm: 0.6.9
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - '@modelcontextprotocol/sdk'
+ - cac
+ - srvx
+ - typescript
+ optional: true
+
+ '@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))
+ '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)
+ '@rolldown/pluginutils': 1.0.1
+ '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ vue: 3.5.40(typescript@6.0.3)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vitejs/plugin-vue@6.0.8(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@rolldown/pluginutils': 1.0.1
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ vue: 3.5.40(typescript@6.0.3)
+
+ '@volar/language-core@2.4.28':
+ dependencies:
+ '@volar/source-map': 2.4.28
+
+ '@volar/source-map@2.4.28': {}
+
+ '@volar/typescript@2.4.28(typescript@6.0.3)':
+ dependencies:
+ '@volar/language-core': 2.4.28
+ path-browserify: 1.0.1
+ vscode-uri: 3.1.0
+ optionalDependencies:
+ typescript: 6.0.3
+
+ '@vue-macros/common@3.1.4(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@vue/compiler-sfc': 3.5.40
+ ast-kit: 2.2.0
+ local-pkg: 1.2.1
+ magic-string-ast: 1.0.3
+ unplugin-utils: 0.3.2
+ optionalDependencies:
+ vue: 3.5.40(typescript@6.0.3)
+
+ '@vue/babel-helper-vue-transform-on@2.0.1': {}
+
+ '@vue/babel-plugin-jsx@2.0.1(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/helper-module-imports': 7.28.6(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0(supports-color@10.2.2))
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ '@vue/babel-helper-vue-transform-on': 2.0.1
+ '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)
+ '@vue/shared': 3.5.40
+ optionalDependencies:
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/core': 7.29.0(supports-color@10.2.2)
+ '@babel/helper-module-imports': 7.28.6(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/parser': 7.29.7
+ '@vue/compiler-sfc': 3.5.40
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vue/compiler-core@3.5.40':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@vue/shared': 3.5.40
+ entities: 7.0.1
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
+ '@vue/compiler-dom@3.5.40':
+ dependencies:
+ '@vue/compiler-core': 3.5.40
+ '@vue/shared': 3.5.40
+
+ '@vue/compiler-sfc@3.5.40':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@vue/compiler-core': 3.5.40
+ '@vue/compiler-dom': 3.5.40
+ '@vue/compiler-ssr': 3.5.40
+ '@vue/shared': 3.5.40
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ postcss: 8.5.25
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.40':
+ dependencies:
+ '@vue/compiler-dom': 3.5.40
+ '@vue/shared': 3.5.40
+
+ '@vue/devtools-api@8.2.1':
+ dependencies:
+ '@vue/devtools-kit': 8.2.1
+
+ '@vue/devtools-core@8.2.1(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@vue/devtools-kit': 8.2.1
+ '@vue/devtools-shared': 8.2.1
+ vue: 3.5.40(typescript@6.0.3)
+
+ '@vue/devtools-kit@8.2.1':
+ dependencies:
+ '@vue/devtools-shared': 8.2.1
+ birpc: 2.9.0
+ hookable: 5.5.3
+ perfect-debounce: 2.1.0
+
+ '@vue/devtools-shared@8.2.1': {}
+
+ '@vue/language-core@3.3.11':
+ dependencies:
+ '@volar/language-core': 2.4.28
+ '@vue/compiler-dom': 3.5.40
+ '@vue/shared': 3.5.40
+ alien-signals: 3.2.1
+ muggle-string: 0.4.1
+ path-browserify: 1.0.1
+ picomatch: 4.0.5
+
+ '@vue/reactivity@3.5.40':
+ dependencies:
+ '@vue/shared': 3.5.40
+
+ '@vue/runtime-core@3.5.40':
+ dependencies:
+ '@vue/reactivity': 3.5.40
+ '@vue/shared': 3.5.40
+
+ '@vue/runtime-dom@3.5.40':
+ dependencies:
+ '@vue/reactivity': 3.5.40
+ '@vue/runtime-core': 3.5.40
+ '@vue/shared': 3.5.40
+ csstype: 3.2.3
+
+ '@vue/server-renderer@3.5.40':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.40
+ '@vue/runtime-dom': 3.5.40
+ '@vue/shared': 3.5.40
+
+ '@vue/shared@3.5.40': {}
+
+ '@vueuse/core@10.11.1(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@types/web-bluetooth': 0.0.20
+ '@vueuse/metadata': 10.11.1
+ '@vueuse/shared': 10.11.1(vue@3.5.40(typescript@6.0.3))
+ vue-demi: 0.14.10(vue@3.5.40(typescript@6.0.3))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@vueuse/core@14.4.0(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@types/web-bluetooth': 0.0.21
+ '@vueuse/metadata': 14.4.0
+ '@vueuse/shared': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ vue: 3.5.40(typescript@6.0.3)
+
+ '@vueuse/integrations@14.4.0(change-case@5.4.4)(fuse.js@7.5.0)(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ '@vueuse/core': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ '@vueuse/shared': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ vue: 3.5.40(typescript@6.0.3)
+ optionalDependencies:
+ change-case: 5.4.4
+ fuse.js: 7.5.0
+
+ '@vueuse/metadata@10.11.1': {}
+
+ '@vueuse/metadata@14.4.0': {}
+
+ '@vueuse/shared@10.11.1(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ vue-demi: 0.14.10(vue@3.5.40(typescript@6.0.3))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@vueuse/shared@14.4.0(vue@3.5.40(typescript@6.0.3))':
+ dependencies:
+ vue: 3.5.40(typescript@6.0.3)
+
+ abbrev@3.0.1: {}
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ acorn-import-attributes@1.9.5(acorn@8.18.0):
+ dependencies:
+ acorn: 8.18.0
+
+ acorn-jsx@5.3.2(acorn@8.18.0):
+ dependencies:
+ acorn: 8.18.0
+
+ acorn@8.18.0: {}
+
+ agent-base@7.1.4: {}
+
+ ajv@6.15.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ alien-signals@3.2.1: {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.2.2: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@6.2.3: {}
+
+ ansis@4.3.1: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.2
+
+ archiver-utils@5.0.2:
+ dependencies:
+ glob: 10.5.0
+ graceful-fs: 4.2.11
+ is-stream: 2.0.1
+ lazystream: 1.0.1
+ lodash: 4.18.1
+ normalize-path: 3.0.0
+ readable-stream: 4.7.0
+
+ archiver@7.0.1:
+ dependencies:
+ archiver-utils: 5.0.2
+ async: 3.2.6
+ buffer-crc32: 1.0.0
+ readable-stream: 4.7.0
+ readdir-glob: 1.1.3
+ tar-stream: 3.2.0
+ zip-stream: 6.0.1
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+
+ are-docs-informative@0.0.2: {}
+
+ argparse@2.0.1: {}
+
+ aria-hidden@1.2.6:
+ dependencies:
+ tslib: 2.8.1
+
+ ast-kit@2.2.0:
+ dependencies:
+ '@babel/parser': 7.29.7
+ pathe: 2.0.3
+
+ ast-walker-scope@0.9.0:
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ ast-kit: 2.2.0
+
+ async-sema@3.1.1: {}
+
+ async@3.2.6: {}
+
+ autoprefixer@10.5.4(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ caniuse-lite: 1.0.30001806
+ fraction.js: 5.3.4
+ picocolors: 1.1.1
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ b4a@1.8.1: {}
+
+ balanced-match@1.0.2: {}
+
+ balanced-match@4.0.4: {}
+
+ bare-events@2.8.3: {}
+
+ bare-fs@4.7.1:
+ dependencies:
+ bare-events: 2.8.3
+ bare-path: 3.0.0
+ bare-stream: 2.13.1(bare-events@2.8.3)
+ bare-url: 2.4.3
+ fast-fifo: 1.3.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
+ bare-os@3.9.1: {}
+
+ bare-path@3.0.0:
+ dependencies:
+ bare-os: 3.9.1
+
+ bare-stream@2.13.1(bare-events@2.8.3):
+ dependencies:
+ streamx: 2.25.0
+ teex: 1.0.1
+ optionalDependencies:
+ bare-events: 2.8.3
+ transitivePeerDependencies:
+ - react-native-b4a
+
+ bare-url@2.4.3:
+ dependencies:
+ bare-path: 3.0.0
+
+ base64-js@1.5.1: {}
+
+ baseline-browser-mapping@2.11.7: {}
+
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
+ birpc@2.9.0: {}
+
+ birpc@4.0.0: {}
+
+ boolbase@1.0.0: {}
+
+ brace-expansion@2.1.0:
+ dependencies:
+ balanced-match: 1.0.2
+
+ brace-expansion@5.0.6:
+ dependencies:
+ balanced-match: 4.0.4
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.28.7:
+ dependencies:
+ baseline-browser-mapping: 2.11.7
+ caniuse-lite: 1.0.30001806
+ electron-to-chromium: 1.5.398
+ node-releases: 2.0.51
+ update-browserslist-db: 1.2.3(browserslist@4.28.7)
+
+ buffer-crc32@1.0.0: {}
+
+ buffer-from@1.1.2: {}
+
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ builtin-modules@5.2.0: {}
+
+ bundle-name@4.1.0:
+ dependencies:
+ run-applescript: 7.1.0
+
+ c12@3.3.4(magicast@0.5.4):
+ dependencies:
+ chokidar: 5.0.0
+ confbox: 0.2.4
+ defu: 6.1.7
+ dotenv: 17.4.2
+ exsolve: 1.1.1
+ giget: 3.3.1
+ jiti: 2.7.0
+ ohash: 2.0.12
+ pathe: 2.0.3
+ perfect-debounce: 2.1.0
+ pkg-types: 2.3.1
+ rc9: 3.0.1
+ optionalDependencies:
+ magicast: 0.5.4
+
+ cac@7.0.0: {}
+
+ caniuse-api@4.0.0:
+ dependencies:
+ browserslist: 4.28.7
+ caniuse-lite: 1.0.30001806
+
+ caniuse-lite@1.0.30001806: {}
+
+ change-case@5.4.4: {}
+
+ chokidar@5.0.0:
+ dependencies:
+ readdirp: 5.0.0
+
+ chownr@3.0.0: {}
+
+ ci-info@4.4.0: {}
+
+ citty@0.1.6:
+ dependencies:
+ consola: 3.4.2
+
+ citty@0.2.2: {}
+
+ cliui@9.0.1:
+ dependencies:
+ string-width: 7.2.0
+ strip-ansi: 7.2.0
+ wrap-ansi: 9.0.2
+
+ cluster-key-slot@1.1.2: {}
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ colortranslator@5.0.0: {}
+
+ commander@11.1.0: {}
+
+ commander@2.20.3: {}
+
+ comment-parser@1.4.7: {}
+
+ commondir@1.0.1: {}
+
+ compatx@0.2.0: {}
+
+ compress-commons@6.0.2:
+ dependencies:
+ crc-32: 1.2.2
+ crc32-stream: 6.0.0
+ is-stream: 2.0.1
+ normalize-path: 3.0.0
+ readable-stream: 4.7.0
+
+ confbox@0.1.8: {}
+
+ confbox@0.2.4: {}
+
+ consola@3.4.2: {}
+
+ convert-hrtime@5.0.0: {}
+
+ convert-source-map@2.0.0: {}
+
+ cookie-es@1.2.3: {}
+
+ cookie-es@2.0.1: {}
+
+ cookie-es@3.1.1: {}
+
+ core-js-compat@3.49.0:
+ dependencies:
+ browserslist: 4.28.7
+
+ core-util-is@1.0.3: {}
+
+ crc-32@1.2.2: {}
+
+ crc32-stream@6.0.0:
+ dependencies:
+ crc-32: 1.2.2
+ readable-stream: 4.7.0
+
+ croner@10.0.1: {}
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ crossws@0.3.5:
+ dependencies:
+ uncrypto: 0.1.3
+
+ crossws@0.4.10(srvx@0.11.22):
+ optionalDependencies:
+ srvx: 0.11.22
+
+ css-select@5.2.2:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.2.2
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ nth-check: 2.1.1
+
+ css-tree@2.2.1:
+ dependencies:
+ mdn-data: 2.0.28
+ source-map-js: 1.2.1
+
+ css-tree@3.2.1:
+ dependencies:
+ mdn-data: 2.27.1
+ source-map-js: 1.2.1
+
+ css-what@6.2.2: {}
+
+ cssesc@3.0.0: {}
+
+ cssnano-preset-default@8.0.2(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ cssnano-utils: 6.0.1(postcss@8.5.25)
+ postcss: 8.5.25
+ postcss-calc: 10.1.1(postcss@8.5.25)
+ postcss-colormin: 8.0.1(postcss@8.5.25)
+ postcss-convert-values: 8.0.1(postcss@8.5.25)
+ postcss-discard-comments: 8.0.1(postcss@8.5.25)
+ postcss-discard-duplicates: 8.0.1(postcss@8.5.25)
+ postcss-discard-empty: 8.0.1(postcss@8.5.25)
+ postcss-discard-overridden: 8.0.1(postcss@8.5.25)
+ postcss-merge-longhand: 8.0.1(postcss@8.5.25)
+ postcss-merge-rules: 8.0.1(postcss@8.5.25)
+ postcss-minify-font-values: 8.0.1(postcss@8.5.25)
+ postcss-minify-gradients: 8.0.1(postcss@8.5.25)
+ postcss-minify-params: 8.0.1(postcss@8.5.25)
+ postcss-minify-selectors: 8.0.2(postcss@8.5.25)
+ postcss-normalize-charset: 8.0.1(postcss@8.5.25)
+ postcss-normalize-display-values: 8.0.1(postcss@8.5.25)
+ postcss-normalize-positions: 8.0.1(postcss@8.5.25)
+ postcss-normalize-repeat-style: 8.0.1(postcss@8.5.25)
+ postcss-normalize-string: 8.0.1(postcss@8.5.25)
+ postcss-normalize-timing-functions: 8.0.1(postcss@8.5.25)
+ postcss-normalize-unicode: 8.0.1(postcss@8.5.25)
+ postcss-normalize-url: 8.0.1(postcss@8.5.25)
+ postcss-normalize-whitespace: 8.0.1(postcss@8.5.25)
+ postcss-ordered-values: 8.0.1(postcss@8.5.25)
+ postcss-reduce-initial: 8.0.1(postcss@8.5.25)
+ postcss-reduce-transforms: 8.0.1(postcss@8.5.25)
+ postcss-svgo: 8.0.1(postcss@8.5.25)
+ postcss-unique-selectors: 8.0.1(postcss@8.5.25)
+
+ cssnano-utils@6.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+
+ cssnano@8.0.2(postcss@8.5.25):
+ dependencies:
+ cssnano-preset-default: 8.0.2(postcss@8.5.25)
+ lilconfig: 3.1.3
+ postcss: 8.5.25
+
+ csso@5.0.5:
+ dependencies:
+ css-tree: 2.2.1
+
+ csstype@3.2.3: {}
+
+ db0@0.3.4: {}
+
+ debug@4.4.3(supports-color@10.2.2):
+ dependencies:
+ ms: 2.1.3
+ optionalDependencies:
+ supports-color: 10.2.2
+
+ deep-is@0.1.4: {}
+
+ deepmerge@4.3.1: {}
+
+ default-browser-id@5.0.1: {}
+
+ default-browser@5.5.0:
+ dependencies:
+ bundle-name: 4.1.0
+ default-browser-id: 5.0.1
+
+ define-lazy-prop@3.0.0: {}
+
+ defu@6.1.7: {}
+
+ denque@2.1.0: {}
+
+ depd@2.0.0: {}
+
+ destr@2.0.5: {}
+
+ detect-indent@7.0.2: {}
+
+ detect-libc@2.1.2: {}
+
+ devalue@5.9.0: {}
+
+ devframe@0.7.15(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3):
+ dependencies:
+ '@valibot/to-json-schema': 1.7.1(valibot@1.4.2(typescript@6.0.3))
+ birpc: 4.0.0
+ crossws: 0.4.10(srvx@0.11.22)
+ destr: 2.0.5
+ h3: 2.0.1-rc.26(crossws@0.4.10(srvx@0.11.22))
+ mrmime: 2.0.1
+ nostics: 1.2.0
+ pathe: 2.0.3
+ ufo: 1.6.4
+ valibot: 1.4.2(typescript@6.0.3)
+ optionalDependencies:
+ cac: 7.0.0
+ transitivePeerDependencies:
+ - srvx
+ - typescript
+ optional: true
+
+ devframe@0.8.2(cac@7.0.0)(srvx@0.11.22):
+ dependencies:
+ '@standard-schema/spec': 1.1.0
+ birpc: 4.0.0
+ crossws: 0.4.10(srvx@0.11.22)
+ destr: 2.0.5
+ h3: 2.0.1-rc.26(crossws@0.4.10(srvx@0.11.22))
+ mrmime: 2.0.1
+ nostics: 1.2.0
+ pathe: 2.0.3
+ ufo: 1.6.4
+ optionalDependencies:
+ cac: 7.0.0
+ transitivePeerDependencies:
+ - srvx
+
+ diff@8.0.4: {}
+
+ dom-serializer@2.0.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ entities: 4.5.0
+
+ domelementtype@2.3.0: {}
+
+ domhandler@5.0.3:
+ dependencies:
+ domelementtype: 2.3.0
+
+ domutils@3.2.2:
+ dependencies:
+ dom-serializer: 2.0.0
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+
+ dot-prop@10.1.0:
+ dependencies:
+ type-fest: 5.6.0
+
+ dotenv@17.4.2: {}
+
+ duplexer@0.1.2: {}
+
+ eastasianwidth@0.2.0: {}
+
+ ee-first@1.1.1: {}
+
+ electron-to-chromium@1.5.398: {}
+
+ embla-carousel-auto-height@8.6.0(embla-carousel@8.6.0):
+ dependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-auto-scroll@8.6.0(embla-carousel@8.6.0):
+ dependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-autoplay@8.6.0(embla-carousel@8.6.0):
+ dependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-class-names@8.6.0(embla-carousel@8.6.0):
+ dependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-fade@8.6.0(embla-carousel@8.6.0):
+ dependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0):
+ dependencies:
+ embla-carousel: 8.6.0
+
+ embla-carousel-vue@8.6.0(vue@3.5.40(typescript@6.0.3)):
+ dependencies:
+ embla-carousel: 8.6.0
+ embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0)
+ vue: 3.5.40(typescript@6.0.3)
+
+ embla-carousel-wheel-gestures@8.1.0(embla-carousel@8.6.0):
+ dependencies:
+ embla-carousel: 8.6.0
+ wheel-gestures: 2.2.48
+
+ embla-carousel@8.6.0: {}
+
+ emoji-regex@10.6.0: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ encodeurl@2.0.0: {}
+
+ enhanced-resolve@5.24.5:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.3.3
+
+ entities@4.5.0: {}
+
+ entities@7.0.1: {}
+
+ error-stack-parser-es@1.0.5: {}
+
+ error-stack-parser-es@2.0.1: {}
+
+ errx@0.1.2: {}
+
+ es-errors@1.3.0: {}
+
+ es-module-lexer@2.1.0: {}
+
+ esbuild@0.27.7:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.7
+ '@esbuild/android-arm': 0.27.7
+ '@esbuild/android-arm64': 0.27.7
+ '@esbuild/android-x64': 0.27.7
+ '@esbuild/darwin-arm64': 0.27.7
+ '@esbuild/darwin-x64': 0.27.7
+ '@esbuild/freebsd-arm64': 0.27.7
+ '@esbuild/freebsd-x64': 0.27.7
+ '@esbuild/linux-arm': 0.27.7
+ '@esbuild/linux-arm64': 0.27.7
+ '@esbuild/linux-ia32': 0.27.7
+ '@esbuild/linux-loong64': 0.27.7
+ '@esbuild/linux-mips64el': 0.27.7
+ '@esbuild/linux-ppc64': 0.27.7
+ '@esbuild/linux-riscv64': 0.27.7
+ '@esbuild/linux-s390x': 0.27.7
+ '@esbuild/linux-x64': 0.27.7
+ '@esbuild/netbsd-arm64': 0.27.7
+ '@esbuild/netbsd-x64': 0.27.7
+ '@esbuild/openbsd-arm64': 0.27.7
+ '@esbuild/openbsd-x64': 0.27.7
+ '@esbuild/openharmony-arm64': 0.27.7
+ '@esbuild/sunos-x64': 0.27.7
+ '@esbuild/win32-arm64': 0.27.7
+ '@esbuild/win32-ia32': 0.27.7
+ '@esbuild/win32-x64': 0.27.7
+
+ esbuild@0.28.0:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.28.0
+ '@esbuild/android-arm': 0.28.0
+ '@esbuild/android-arm64': 0.28.0
+ '@esbuild/android-x64': 0.28.0
+ '@esbuild/darwin-arm64': 0.28.0
+ '@esbuild/darwin-x64': 0.28.0
+ '@esbuild/freebsd-arm64': 0.28.0
+ '@esbuild/freebsd-x64': 0.28.0
+ '@esbuild/linux-arm': 0.28.0
+ '@esbuild/linux-arm64': 0.28.0
+ '@esbuild/linux-ia32': 0.28.0
+ '@esbuild/linux-loong64': 0.28.0
+ '@esbuild/linux-mips64el': 0.28.0
+ '@esbuild/linux-ppc64': 0.28.0
+ '@esbuild/linux-riscv64': 0.28.0
+ '@esbuild/linux-s390x': 0.28.0
+ '@esbuild/linux-x64': 0.28.0
+ '@esbuild/netbsd-arm64': 0.28.0
+ '@esbuild/netbsd-x64': 0.28.0
+ '@esbuild/openbsd-arm64': 0.28.0
+ '@esbuild/openbsd-x64': 0.28.0
+ '@esbuild/openharmony-arm64': 0.28.0
+ '@esbuild/sunos-x64': 0.28.0
+ '@esbuild/win32-arm64': 0.28.0
+ '@esbuild/win32-ia32': 0.28.0
+ '@esbuild/win32-x64': 0.28.0
+
+ escalade@3.2.0: {}
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ escape-string-regexp@5.0.0: {}
+
+ eslint-config-flat-gitignore@2.3.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)):
+ dependencies:
+ '@eslint/compat': 2.1.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+
+ eslint-flat-config-utils@3.2.0:
+ dependencies:
+ '@eslint/config-helpers': 0.5.5
+ pathe: 2.0.3
+
+ eslint-import-context@0.1.9(unrs-resolver@1.12.2):
+ dependencies:
+ get-tsconfig: 4.14.0
+ stable-hash-x: 0.2.0
+ optionalDependencies:
+ unrs-resolver: 1.12.2
+
+ eslint-merge-processors@2.0.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)):
+ dependencies:
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+
+ eslint-plugin-import-lite@0.6.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)):
+ dependencies:
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+
+ eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2):
+ dependencies:
+ '@typescript-eslint/types': 8.66.0
+ comment-parser: 1.4.7
+ debug: 4.4.3(supports-color@10.2.2)
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ eslint-import-context: 0.1.9(unrs-resolver@1.12.2)
+ is-glob: 4.0.3
+ minimatch: 10.2.5
+ semver: 7.8.5
+ stable-hash-x: 0.2.0
+ unrs-resolver: 1.12.2
+ optionalDependencies:
+ '@typescript-eslint/utils': 8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-jsdoc@63.3.3(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2):
+ dependencies:
+ '@es-joy/jsdoccomment': 0.91.0
+ '@es-joy/resolve.exports': 1.2.0
+ are-docs-informative: 0.0.2
+ comment-parser: 1.4.7
+ debug: 4.4.3(supports-color@10.2.2)
+ escape-string-regexp: 4.0.0
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ espree: 11.2.0
+ esquery: 1.7.0
+ html-entities: 2.6.0
+ object-deep-merge: 2.0.1
+ parse-imports-exports: 0.2.4
+ semver: 7.8.5
+ spdx-expression-parse: 5.0.0
+ to-valid-identifier: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-regexp@3.1.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ '@eslint-community/regexpp': 4.12.2
+ comment-parser: 1.4.7
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ jsdoc-type-pratt-parser: 7.2.0
+ refa: 0.12.1
+ regexp-ast-analysis: 0.7.1
+ scslre: 0.3.0
+
+ eslint-plugin-unicorn@73.0.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ '@eslint/css-tree': 4.0.5
+ browserslist: 4.28.7
+ change-case: 5.4.4
+ ci-info: 4.4.0
+ core-js-compat: 3.49.0
+ detect-indent: 7.0.2
+ entities: 4.5.0
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ find-up-simple: 1.0.1
+ globals: 17.9.0
+ indent-string: 5.0.0
+ is-builtin-module: 5.0.0
+ is-identifier: 1.1.0
+ pluralize: 8.0.0
+ quote-js-string: 0.1.0
+ regjsparser: 0.13.2
+ reserved-identifiers: 1.2.0
+ semver: 7.8.5
+ strip-indent: 4.1.1
+ yaml: 2.9.0
+
+ eslint-plugin-vue@10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)))(@typescript-eslint/parser@8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(vue-eslint-parser@10.4.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ natural-compare: 1.4.0
+ nth-check: 2.1.1
+ postcss-selector-parser: 7.1.4
+ semver: 7.8.5
+ vue-eslint-parser: 10.4.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)
+ xml-name-validator: 5.0.0
+ optionalDependencies:
+ '@stylistic/eslint-plugin': 5.10.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ '@typescript-eslint/parser': 8.66.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+
+ eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.40)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)):
+ dependencies:
+ '@vue/compiler-sfc': 3.5.40
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+
+ eslint-scope@9.1.2:
+ dependencies:
+ '@types/esrecurse': 4.3.1
+ '@types/estree': 1.0.9
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-typegen@2.3.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)):
+ dependencies:
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ json-schema-to-typescript-lite: 15.0.0
+ ohash: 2.0.12
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint-visitor-keys@4.2.1: {}
+
+ eslint-visitor-keys@5.0.1: {}
+
+ eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))
+ '@eslint-community/regexpp': 4.12.2
+ '@eslint/config-array': 0.23.5(supports-color@10.2.2)
+ '@eslint/config-helpers': 0.7.0
+ '@eslint/core': 1.2.1
+ '@eslint/plugin-kit': 0.7.2
+ '@humanfs/node': 0.16.8
+ '@humanwhocodes/module-importer': 1.0.1
+ '@humanwhocodes/retry': 0.4.3
+ '@types/estree': 1.0.9
+ ajv: 6.15.0
+ cross-spawn: 7.0.6
+ debug: 4.4.3(supports-color@10.2.2)
+ escape-string-regexp: 4.0.0
+ eslint-scope: 9.1.2
+ eslint-visitor-keys: 5.0.1
+ espree: 11.2.0
+ esquery: 1.7.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 8.0.0
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ json-stable-stringify-without-jsonify: 1.0.1
+ minimatch: 10.2.5
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ optionalDependencies:
+ jiti: 2.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@10.4.0:
+ dependencies:
+ acorn: 8.18.0
+ acorn-jsx: 5.3.2(acorn@8.18.0)
+ eslint-visitor-keys: 4.2.1
+
+ espree@11.2.0:
+ dependencies:
+ acorn: 8.18.0
+ acorn-jsx: 5.3.2(acorn@8.18.0)
+ eslint-visitor-keys: 5.0.1
+
+ esquery@1.7.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@5.3.0: {}
+
+ estree-walker@2.0.2: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.9
+
+ esutils@2.0.3: {}
+
+ etag@1.8.1: {}
+
+ event-target-shim@5.0.1: {}
+
+ events-universal@1.0.1:
+ dependencies:
+ bare-events: 2.8.3
+ transitivePeerDependencies:
+ - bare-abort-controller
+
+ events@3.3.0: {}
+
+ execa@8.0.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 8.0.1
+ human-signals: 5.0.0
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 4.1.0
+ strip-final-newline: 3.0.0
+
+ exsolve@1.1.1: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-fifo@1.3.2: {}
+
+ fast-glob@3.3.3:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fast-npm-meta@2.2.0:
+ dependencies:
+ cac: 7.0.0
+
+ fast-string-truncated-width@3.0.3: {}
+
+ fast-string-width@3.0.2:
+ dependencies:
+ fast-string-truncated-width: 3.0.3
+
+ fast-wrap-ansi@0.2.0:
+ dependencies:
+ fast-string-width: 3.0.2
+
+ fastq@1.20.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fdir@6.5.0(picomatch@4.0.5):
+ optionalDependencies:
+ picomatch: 4.0.5
+
+ file-entry-cache@8.0.0:
+ dependencies:
+ flat-cache: 4.0.1
+
+ file-uri-to-path@1.0.0: {}
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-up-simple@1.0.1: {}
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ find-up@8.0.0:
+ dependencies:
+ locate-path: 8.0.0
+ unicorn-magic: 0.3.0
+
+ flat-cache@4.0.1:
+ dependencies:
+ flatted: 3.4.2
+ keyv: 4.5.4
+
+ flatted@3.4.2: {}
+
+ fnv1a-64@0.1.2: {}
+
+ fontaine@0.8.0:
+ dependencies:
+ '@capsizecss/unpack': 4.0.0
+ css-tree: 3.2.1
+ magic-regexp: 0.10.0
+ magic-string: 0.30.21
+ pathe: 2.0.3
+ ufo: 1.6.4
+ unplugin: 2.3.11
+
+ fontkitten@1.0.3:
+ dependencies:
+ tiny-inflate: 1.0.3
+
+ fontless@0.2.1(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ consola: 3.4.2
+ css-tree: 3.2.1
+ defu: 6.1.7
+ esbuild: 0.27.7
+ fontaine: 0.8.0
+ jiti: 2.7.0
+ lightningcss: 1.33.0
+ magic-string: 0.30.21
+ ohash: 2.0.12
+ pathe: 2.0.3
+ ufo: 1.6.4
+ unifont: 0.7.4
+ unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))
+ optionalDependencies:
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - db0
+ - idb-keyval
+ - ioredis
+ - uploadthing
+
+ foreground-child@3.3.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ signal-exit: 4.1.0
+
+ fraction.js@5.3.4: {}
+
+ framer-motion@13.1.1:
+ dependencies:
+ motion-dom: 13.1.1
+ motion-utils: 13.0.0
+ tslib: 2.8.1
+
+ fresh@2.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ function-timeout@1.0.2: {}
+
+ fuse.js@7.5.0: {}
+
+ fzf@0.5.2: {}
+
+ generic-names@4.0.0:
+ dependencies:
+ loader-utils: 3.3.1
+
+ gensync@1.0.0-beta.2: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-east-asian-width@1.6.0: {}
+
+ get-port-please@3.2.0: {}
+
+ get-stream@8.0.1: {}
+
+ get-tsconfig@4.14.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ giget@3.3.1: {}
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@10.5.0:
+ dependencies:
+ foreground-child: 3.3.1
+ jackspeak: 3.4.3
+ minimatch: 9.0.9
+ minipass: 7.1.3
+ package-json-from-dist: 1.0.1
+ path-scurry: 1.11.1
+
+ glob@13.0.6:
+ dependencies:
+ minimatch: 10.2.5
+ minipass: 7.1.3
+ path-scurry: 2.0.2
+
+ global-directory@4.0.1:
+ dependencies:
+ ini: 4.1.1
+
+ globals@17.9.0: {}
+
+ globby@16.2.0:
+ dependencies:
+ '@sindresorhus/merge-streams': 4.0.0
+ fast-glob: 3.3.3
+ ignore: 7.0.6
+ is-path-inside: 4.0.0
+ slash: 5.1.0
+ unicorn-magic: 0.4.0
+
+ graceful-fs@4.2.11: {}
+
+ gzip-size@7.0.0:
+ dependencies:
+ duplexer: 0.1.2
+
+ h3@1.15.11:
+ dependencies:
+ cookie-es: 1.2.3
+ crossws: 0.3.5
+ defu: 6.1.7
+ destr: 2.0.5
+ iron-webcrypto: 1.2.1
+ node-mock-http: 1.0.4
+ radix3: 1.1.2
+ ufo: 1.6.4
+ uncrypto: 0.1.3
+
+ h3@2.0.1-rc.26(crossws@0.4.10(srvx@0.11.22)):
+ dependencies:
+ rou3: 0.9.1
+ srvx: 0.12.4
+ optionalDependencies:
+ crossws: 0.4.10(srvx@0.11.22)
+
+ hasown@2.0.3:
+ dependencies:
+ function-bind: 1.1.2
+
+ hey-listen@1.0.8: {}
+
+ hookable@5.5.3: {}
+
+ hookable@6.1.1: {}
+
+ html-entities@2.6.0: {}
+
+ http-errors@2.0.1:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ toidentifier: 1.0.1
+
+ http-shutdown@1.2.2: {}
+
+ https-proxy-agent@7.0.6(supports-color@10.2.2):
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ httpxy@0.5.1: {}
+
+ human-signals@5.0.0: {}
+
+ identifier-regex@1.1.0:
+ dependencies:
+ reserved-identifiers: 1.2.0
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ ignore@7.0.6: {}
+
+ image-meta@0.2.2: {}
+
+ import-meta-resolve@4.2.0: {}
+
+ impound@1.1.6(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ es-module-lexer: 2.1.0
+ pathe: 2.0.3
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin-utils: 0.3.2
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - rolldown
+ - rollup
+ - unloader
+ - vite
+ - webpack
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@5.0.0: {}
+
+ inherits@2.0.4: {}
+
+ ini@4.1.1: {}
+
+ ioredis@5.10.1(supports-color@10.2.2):
+ dependencies:
+ '@ioredis/commands': 1.5.1
+ cluster-key-slot: 1.1.2
+ debug: 4.4.3(supports-color@10.2.2)
+ denque: 2.1.0
+ lodash.defaults: 4.2.0
+ lodash.isarguments: 3.1.0
+ redis-errors: 1.2.0
+ redis-parser: 3.0.0
+ standard-as-callback: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ iron-webcrypto@1.2.1: {}
+
+ is-builtin-module@5.0.0:
+ dependencies:
+ builtin-modules: 5.2.0
+
+ is-core-module@2.16.2:
+ dependencies:
+ hasown: 2.0.3
+
+ is-docker@3.0.0: {}
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-identifier@1.1.0:
+ dependencies:
+ identifier-regex: 1.1.0
+ super-regex: 1.1.0
+
+ is-in-ssh@1.0.0: {}
+
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
+ is-installed-globally@1.0.0:
+ dependencies:
+ global-directory: 4.0.1
+ is-path-inside: 4.0.0
+
+ is-module@1.0.0: {}
+
+ is-number@7.0.0: {}
+
+ is-path-inside@4.0.0: {}
+
+ is-reference@1.2.1:
+ dependencies:
+ '@types/estree': 1.0.9
+
+ is-stream@2.0.1: {}
+
+ is-stream@3.0.0: {}
+
+ is-wsl@3.1.1:
+ dependencies:
+ is-inside-container: 1.0.0
+
+ isarray@1.0.0: {}
+
+ isexe@2.0.0: {}
+
+ isexe@4.0.0: {}
+
+ isomorphic.js@0.2.5: {}
+
+ jackspeak@3.4.3:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ jiti@2.7.0: {}
+
+ js-tokens@10.0.0: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@4.1.1:
+ dependencies:
+ argparse: 2.0.1
+
+ jsdoc-type-pratt-parser@7.2.0: {}
+
+ jsdoc-type-pratt-parser@8.0.0: {}
+
+ jsesc@3.1.0: {}
+
+ json-buffer@3.0.1: {}
+
+ json-schema-to-typescript-lite@15.0.0:
+ dependencies:
+ '@apidevtools/json-schema-ref-parser': 14.2.1(@types/json-schema@7.0.15)
+ '@types/json-schema': 7.0.15
+
+ json-schema-traverse@0.4.1: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json5@2.2.3: {}
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ kleur@4.1.5: {}
+
+ klona@2.0.6: {}
+
+ knitwork@1.3.0: {}
+
+ launch-editor@2.14.1:
+ dependencies:
+ picocolors: 1.1.1
+ shell-quote: 1.10.0
+
+ lazystream@1.0.1:
+ dependencies:
+ readable-stream: 2.3.8
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lib0@0.2.117:
+ dependencies:
+ isomorphic.js: 0.2.5
+
+ lightningcss-android-arm64@1.32.0:
+ optional: true
+
+ lightningcss-android-arm64@1.33.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.33.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.33.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.32.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.33.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ optional: true
+
+ lightningcss@1.32.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
+
+ lightningcss@1.33.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.33.0
+ lightningcss-darwin-arm64: 1.33.0
+ lightningcss-darwin-x64: 1.33.0
+ lightningcss-freebsd-x64: 1.33.0
+ lightningcss-linux-arm-gnueabihf: 1.33.0
+ lightningcss-linux-arm64-gnu: 1.33.0
+ lightningcss-linux-arm64-musl: 1.33.0
+ lightningcss-linux-x64-gnu: 1.33.0
+ lightningcss-linux-x64-musl: 1.33.0
+ lightningcss-win32-arm64-msvc: 1.33.0
+ lightningcss-win32-x64-msvc: 1.33.0
+
+ lilconfig@3.1.3: {}
+
+ linkifyjs@4.3.3: {}
+
+ listhen@1.10.0(srvx@0.11.22):
+ dependencies:
+ '@parcel/watcher': 2.5.6
+ '@parcel/watcher-wasm': 2.5.6
+ citty: 0.2.2
+ consola: 3.4.2
+ crossws: 0.4.10(srvx@0.11.22)
+ defu: 6.1.7
+ get-port-please: 3.2.0
+ h3: 1.15.11
+ http-shutdown: 1.2.2
+ jiti: 2.7.0
+ mlly: 1.8.2
+ node-forge: 1.4.0
+ pathe: 2.0.3
+ std-env: 4.2.0
+ tinyclip: 0.1.15
+ ufo: 1.6.4
+ untun: 0.1.3
+ uqr: 0.1.3
+ transitivePeerDependencies:
+ - srvx
+
+ loader-utils@3.3.1: {}
+
+ local-pkg@1.2.1:
+ dependencies:
+ mlly: 1.8.2
+ pkg-types: 2.3.1
+ quansync: 0.2.11
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ locate-path@8.0.0:
+ dependencies:
+ p-locate: 6.0.0
+
+ lodash.defaults@4.2.0: {}
+
+ lodash.isarguments@3.1.0: {}
+
+ lodash@4.18.1: {}
+
+ lru-cache@10.4.3: {}
+
+ lru-cache@11.4.0: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ magic-regexp@0.10.0:
+ dependencies:
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ mlly: 1.8.2
+ regexp-tree: 0.1.27
+ type-level-regexp: 0.1.17
+ ufo: 1.6.4
+ unplugin: 2.3.11
+
+ magic-string-ast@1.0.3:
+ dependencies:
+ magic-string: 0.30.21
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ magic-string@1.2.2:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ magicast@0.5.4:
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ source-map-js: 1.2.1
+
+ make-asynchronous@1.1.0:
+ dependencies:
+ p-event: 6.0.1
+ type-fest: 4.41.0
+ web-worker: 1.5.0
+
+ marked@17.0.6: {}
+
+ mdn-data@2.0.28: {}
+
+ mdn-data@2.27.1: {}
+
+ mdn-data@2.29.0: {}
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.2
+
+ mime-db@1.54.0: {}
+
+ mime-types@3.0.2:
+ dependencies:
+ mime-db: 1.54.0
+
+ mime@4.1.0: {}
+
+ mimic-fn@4.0.0: {}
+
+ minimatch@10.2.5:
+ dependencies:
+ brace-expansion: 5.0.6
+
+ minimatch@5.1.9:
+ dependencies:
+ brace-expansion: 2.1.0
+
+ minimatch@9.0.9:
+ dependencies:
+ brace-expansion: 2.1.0
+
+ minipass@7.1.3: {}
+
+ minizlib@3.1.0:
+ dependencies:
+ minipass: 7.1.3
+
+ mlly@1.8.2:
+ dependencies:
+ acorn: 8.18.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.4
+
+ mocked-exports@0.1.1: {}
+
+ motion-dom@13.1.1:
+ dependencies:
+ motion-utils: 13.0.0
+
+ motion-utils@13.0.0: {}
+
+ motion-v@2.4.0(@vueuse/core@14.4.0(vue@3.5.40(typescript@6.0.3)))(vue@3.5.40(typescript@6.0.3)):
+ dependencies:
+ '@vueuse/core': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ framer-motion: 13.1.1
+ hey-listen: 1.0.8
+ motion-dom: 13.1.1
+ motion-utils: 13.0.0
+ vue: 3.5.40(typescript@6.0.3)
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
+ mrmime@2.0.1: {}
+
+ ms@2.1.3: {}
+
+ muggle-string@0.4.1: {}
+
+ nanoid@3.3.16: {}
+
+ nanotar@0.3.0: {}
+
+ napi-postinstall@0.3.4: {}
+
+ natural-compare@1.4.0: {}
+
+ nitropack@2.13.4(oxc-parser@0.140.0)(rolldown@1.2.1)(srvx@0.11.22)(supports-color@10.2.2)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ '@cloudflare/kv-asset-handler': 0.4.2
+ '@rollup/plugin-alias': 6.0.0(rollup@4.60.4)
+ '@rollup/plugin-commonjs': 29.0.2(rollup@4.60.4)
+ '@rollup/plugin-inject': 5.0.5(rollup@4.60.4)
+ '@rollup/plugin-json': 6.1.0(rollup@4.60.4)
+ '@rollup/plugin-node-resolve': 16.0.3(rollup@4.60.4)
+ '@rollup/plugin-replace': 6.0.3(rollup@4.60.4)
+ '@rollup/plugin-terser': 1.0.0(rollup@4.60.4)
+ '@vercel/nft': 1.5.0(rollup@4.60.4)(supports-color@10.2.2)
+ archiver: 7.0.1
+ c12: 3.3.4(magicast@0.5.4)
+ chokidar: 5.0.0
+ citty: 0.2.2
+ compatx: 0.2.0
+ confbox: 0.2.4
+ consola: 3.4.2
+ cookie-es: 2.0.1
+ croner: 10.0.1
+ crossws: 0.3.5
+ db0: 0.3.4
+ defu: 6.1.7
+ destr: 2.0.5
+ dot-prop: 10.1.0
+ esbuild: 0.28.0
+ escape-string-regexp: 5.0.0
+ etag: 1.8.1
+ exsolve: 1.1.1
+ globby: 16.2.0
+ gzip-size: 7.0.0
+ h3: 1.15.11
+ hookable: 5.5.3
+ httpxy: 0.5.1
+ ioredis: 5.10.1(supports-color@10.2.2)
+ jiti: 2.7.0
+ klona: 2.0.6
+ knitwork: 1.3.0
+ listhen: 1.10.0(srvx@0.11.22)
+ magic-string: 0.30.21
+ magicast: 0.5.4
+ mime: 4.1.0
+ mlly: 1.8.2
+ node-fetch-native: 1.6.7
+ node-mock-http: 1.0.4
+ ofetch: 1.5.1
+ ohash: 2.0.12
+ pathe: 2.0.3
+ perfect-debounce: 2.1.0
+ pkg-types: 2.3.1
+ pretty-bytes: 7.1.0
+ radix3: 1.1.2
+ rollup: 4.60.4
+ rollup-plugin-visualizer: 7.0.1(rolldown@1.2.1)(rollup@4.60.4)
+ scule: 1.3.0
+ semver: 7.8.5
+ serve-placeholder: 2.0.2
+ serve-static: 2.2.1(supports-color@10.2.2)
+ source-map: 0.7.6
+ std-env: 4.2.0
+ ufo: 1.6.4
+ ultrahtml: 1.7.0
+ uncrypto: 0.1.3
+ unctx: 2.5.0
+ unenv: 2.0.0-rc.24
+ unimport: 6.4.0(esbuild@0.28.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin-utils: 0.3.2
+ unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))
+ untyped: 2.0.0
+ unwasm: 0.5.3
+ youch: 4.1.1
+ youch-core: 0.3.3
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@farmfe/core'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@rspack/core'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - bare-abort-controller
+ - bare-buffer
+ - better-sqlite3
+ - bun-types-no-globals
+ - drizzle-orm
+ - encoding
+ - idb-keyval
+ - mysql2
+ - oxc-parser
+ - react-native-b4a
+ - rolldown
+ - sqlite3
+ - srvx
+ - supports-color
+ - unloader
+ - uploadthing
+ - vite
+ - webpack
+
+ node-addon-api@7.1.1: {}
+
+ node-fetch-native@1.6.7: {}
+
+ node-fetch@2.7.0:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ node-forge@1.4.0: {}
+
+ node-gyp-build@4.8.4: {}
+
+ node-mock-http@1.0.4: {}
+
+ node-releases@2.0.51: {}
+
+ nopt@8.1.0:
+ dependencies:
+ abbrev: 3.0.1
+
+ normalize-path@3.0.0: {}
+
+ nostics@1.2.0: {}
+
+ npm-run-path@5.3.0:
+ dependencies:
+ path-key: 4.0.0
+
+ npm-run-path@6.0.0:
+ dependencies:
+ path-key: 4.0.0
+ unicorn-magic: 0.3.0
+
+ nth-check@2.1.1:
+ dependencies:
+ boolbase: 1.0.0
+
+ nuxt@4.5.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(@parcel/watcher@2.5.6)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(@vue/compiler-sfc@3.5.40)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.1)(rollup@4.60.4))(rollup@4.60.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.47.1)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0):
+ dependencies:
+ '@dxup/nuxt': 0.5.6(esbuild@0.28.0)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ '@nuxt/cli': 3.37.0(@nuxt/schema@4.5.2)(cac@7.0.0)(magicast@0.5.4)(supports-color@10.2.2)
+ '@nuxt/devtools': 3.4.1(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.2.2)(oxc-parser@0.140.0)(rolldown@1.2.1)(supports-color@10.2.2)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ '@nuxt/nitro-server': 4.5.2(1faf410aca872ebb6f154eab8d23cc95)
+ '@nuxt/schema': 4.5.2
+ '@nuxt/telemetry': 2.8.0(@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))))
+ '@nuxt/vite-builder': 4.5.2(521f6102c765bb8970dc9d69c7b33187)
+ '@unhead/vue': 3.4.0(@oxc-project/types@0.142.0)(@vitejs/devtools-kit@0.4.10(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(esbuild@0.28.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ '@vue/shared': 3.5.40
+ chokidar: 5.0.0
+ compatx: 0.2.0
+ consola: 3.4.2
+ cookie-es: 3.1.1
+ defu: 6.1.7
+ devalue: 5.9.0
+ errx: 0.1.2
+ escape-string-regexp: 5.0.0
+ exsolve: 1.1.1
+ fnv1a-64: 0.1.2
+ hookable: 6.1.1
+ ignore: 7.0.6
+ impound: 1.1.6(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ jiti: 2.7.0
+ klona: 2.0.6
+ knitwork: 1.3.0
+ magic-string: 1.2.2
+ mlly: 1.8.2
+ nanotar: 0.3.0
+ nostics: 1.2.0
+ nypm: 0.6.9
+ object-identity: 0.2.3
+ ofetch: 1.5.1
+ ohash: 2.0.12
+ on-change: 6.0.2
+ oxc-walker: 1.1.1(@oxc-project/types@0.142.0)(oxc-parser@0.140.0)(rolldown@1.2.1)
+ pathe: 2.0.3
+ perfect-debounce: 2.1.0
+ picomatch: 4.0.5
+ pkg-types: 2.3.1
+ rolldown: 1.2.1
+ rolldown-string: 0.3.1(rolldown@1.2.1)
+ rou3: 0.9.1
+ scule: 1.3.0
+ std-env: 4.2.0
+ tinyglobby: 0.2.17
+ ufo: 1.6.4
+ ultrahtml: 1.7.0
+ uncrypto: 0.1.3
+ unctx: 3.0.0(magic-string@1.2.2)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ undici: 8.10.0
+ unhead: 3.4.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unimport: 6.4.0(esbuild@0.28.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unrouting: 0.2.2
+ untyped: 2.0.0
+ verkit: 0.3.2
+ vue: 3.5.40(typescript@6.0.3)
+ vue-component-type-helpers: 3.3.11
+ vue-router: 5.2.0(@vue/compiler-sfc@3.5.40)(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3))
+ optionalDependencies:
+ '@parcel/watcher': 2.5.6
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@babel/plugin-proposal-decorators'
+ - '@babel/plugin-syntax-jsx'
+ - '@babel/plugin-syntax-typescript'
+ - '@biomejs/biome'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@farmfe/core'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@oxc-project/types'
+ - '@pinia/colada'
+ - '@planetscale/database'
+ - '@rollup/plugin-babel'
+ - '@rspack/core'
+ - '@unhead/cli'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - '@vitejs/devtools'
+ - '@vitejs/devtools-kit'
+ - '@vue/compiler-sfc'
+ - aws4fetch
+ - bare-abort-controller
+ - bare-buffer
+ - better-sqlite3
+ - bufferutil
+ - bun-types-no-globals
+ - cac
+ - commander
+ - db0
+ - drizzle-orm
+ - encoding
+ - esbuild
+ - eslint
+ - idb-keyval
+ - ioredis
+ - less
+ - lightningcss
+ - magicast
+ - meow
+ - mysql2
+ - optionator
+ - oxc-parser
+ - oxlint
+ - pinia
+ - react-native-b4a
+ - rollup
+ - rollup-plugin-visualizer
+ - sass
+ - sass-embedded
+ - sqlite3
+ - srvx
+ - stylelint
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - typescript
+ - unloader
+ - uploadthing
+ - utf-8-validate
+ - vite
+ - vue-tsc
+ - webpack
+ - xml2js
+ - yaml
+
+ nypm@0.6.9:
+ dependencies:
+ citty: 0.2.2
+ pathe: 2.0.3
+ tinyexec: 1.2.4
+
+ object-deep-merge@2.0.1: {}
+
+ object-identity@0.2.3: {}
+
+ obug@2.1.1: {}
+
+ ofetch@1.5.1:
+ dependencies:
+ destr: 2.0.5
+ node-fetch-native: 1.6.7
+ ufo: 1.6.4
+
+ ofetch@2.0.0-alpha.3: {}
+
+ ohash@2.0.12: {}
+
+ on-change@6.0.2: {}
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ onetime@6.0.0:
+ dependencies:
+ mimic-fn: 4.0.0
+
+ open@11.0.0:
+ dependencies:
+ default-browser: 5.5.0
+ define-lazy-prop: 3.0.0
+ is-in-ssh: 1.0.0
+ is-inside-container: 1.0.0
+ powershell-utils: 0.1.0
+ wsl-utils: 0.3.1
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ orderedmap@2.1.1: {}
+
+ oxc-parser@0.140.0:
+ dependencies:
+ '@oxc-project/types': 0.140.0
+ optionalDependencies:
+ '@oxc-parser/binding-android-arm-eabi': 0.140.0
+ '@oxc-parser/binding-android-arm64': 0.140.0
+ '@oxc-parser/binding-darwin-arm64': 0.140.0
+ '@oxc-parser/binding-darwin-x64': 0.140.0
+ '@oxc-parser/binding-freebsd-x64': 0.140.0
+ '@oxc-parser/binding-linux-arm-gnueabihf': 0.140.0
+ '@oxc-parser/binding-linux-arm-musleabihf': 0.140.0
+ '@oxc-parser/binding-linux-arm64-gnu': 0.140.0
+ '@oxc-parser/binding-linux-arm64-musl': 0.140.0
+ '@oxc-parser/binding-linux-ppc64-gnu': 0.140.0
+ '@oxc-parser/binding-linux-riscv64-gnu': 0.140.0
+ '@oxc-parser/binding-linux-riscv64-musl': 0.140.0
+ '@oxc-parser/binding-linux-s390x-gnu': 0.140.0
+ '@oxc-parser/binding-linux-x64-gnu': 0.140.0
+ '@oxc-parser/binding-linux-x64-musl': 0.140.0
+ '@oxc-parser/binding-openharmony-arm64': 0.140.0
+ '@oxc-parser/binding-wasm32-wasi': 0.140.0
+ '@oxc-parser/binding-win32-arm64-msvc': 0.140.0
+ '@oxc-parser/binding-win32-ia32-msvc': 0.140.0
+ '@oxc-parser/binding-win32-x64-msvc': 0.140.0
+ optional: true
+
+ oxc-walker@1.1.1(@oxc-project/types@0.142.0)(oxc-parser@0.140.0)(rolldown@1.2.1):
+ optionalDependencies:
+ '@oxc-project/types': 0.142.0
+ oxc-parser: 0.140.0
+ rolldown: 1.2.1
+
+ p-event@6.0.1:
+ dependencies:
+ p-timeout: 6.1.4
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-limit@4.0.0:
+ dependencies:
+ yocto-queue: 1.2.2
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-locate@6.0.0:
+ dependencies:
+ p-limit: 4.0.0
+
+ p-timeout@6.1.4: {}
+
+ package-json-from-dist@1.0.1: {}
+
+ package-manager-detector@1.8.0: {}
+
+ parse-imports-exports@0.2.4:
+ dependencies:
+ parse-statements: 1.0.11
+
+ parse-statements@1.0.11: {}
+
+ parseurl@1.3.3: {}
+
+ path-browserify@1.0.1: {}
+
+ path-exists@4.0.0: {}
+
+ path-key@3.1.1: {}
+
+ path-key@4.0.0: {}
+
+ path-parse@1.0.7: {}
+
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.4.3
+ minipass: 7.1.3
+
+ path-scurry@2.0.2:
+ dependencies:
+ lru-cache: 11.4.0
+ minipass: 7.1.3
+
+ pathe@1.1.2: {}
+
+ pathe@2.0.3: {}
+
+ perfect-debounce@2.1.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.2: {}
+
+ picomatch@4.0.5: {}
+
+ pkg-types@1.3.1:
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.8.2
+ pathe: 2.0.3
+
+ pkg-types@2.3.1:
+ dependencies:
+ confbox: 0.2.4
+ exsolve: 1.1.1
+ pathe: 2.0.3
+
+ pluralize@8.0.0: {}
+
+ postcss-calc@10.1.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-selector-parser: 7.1.4
+ postcss-value-parser: 4.2.0
+
+ postcss-colormin@8.0.1(postcss@8.5.25):
+ dependencies:
+ '@colordx/core': 5.4.3
+ browserslist: 4.28.7
+ caniuse-api: 4.0.0
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-convert-values@8.0.1(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-discard-comments@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-selector-parser: 7.1.4
+
+ postcss-discard-duplicates@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+
+ postcss-discard-empty@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+
+ postcss-discard-overridden@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+
+ postcss-merge-longhand@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+ stylehacks: 8.0.1(postcss@8.5.25)
+
+ postcss-merge-rules@8.0.1(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ caniuse-api: 4.0.0
+ cssnano-utils: 6.0.1(postcss@8.5.25)
+ postcss: 8.5.25
+ postcss-selector-parser: 7.1.4
+
+ postcss-minify-font-values@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-minify-gradients@8.0.1(postcss@8.5.25):
+ dependencies:
+ '@colordx/core': 5.4.3
+ cssnano-utils: 6.0.1(postcss@8.5.25)
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-minify-params@8.0.1(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ cssnano-utils: 6.0.1(postcss@8.5.25)
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-minify-selectors@8.0.2(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ caniuse-api: 4.0.0
+ cssesc: 3.0.0
+ postcss: 8.5.25
+ postcss-selector-parser: 7.1.4
+
+ postcss-normalize-charset@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+
+ postcss-normalize-display-values@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-positions@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-repeat-style@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-string@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-timing-functions@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-unicode@8.0.1(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-url@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-whitespace@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-ordered-values@8.0.1(postcss@8.5.25):
+ dependencies:
+ cssnano-utils: 6.0.1(postcss@8.5.25)
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-reduce-initial@8.0.1(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ caniuse-api: 4.0.0
+ postcss: 8.5.25
+
+ postcss-reduce-transforms@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+
+ postcss-selector-parser@7.1.4:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ postcss-svgo@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-value-parser: 4.2.0
+ svgo: 4.0.1
+
+ postcss-unique-selectors@8.0.1(postcss@8.5.25):
+ dependencies:
+ postcss: 8.5.25
+ postcss-selector-parser: 7.1.4
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.5.25:
+ dependencies:
+ nanoid: 3.3.16
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ powershell-utils@0.1.0: {}
+
+ prelude-ls@1.2.1: {}
+
+ pretty-bytes@7.1.0: {}
+
+ process-nextick-args@2.0.1: {}
+
+ process@0.11.10: {}
+
+ proper-lockfile@4.1.2:
+ dependencies:
+ graceful-fs: 4.2.11
+ retry: 0.12.0
+ signal-exit: 3.0.7
+
+ prosemirror-changeset@2.4.1:
+ dependencies:
+ prosemirror-transform: 1.12.0
+
+ prosemirror-commands@1.7.1:
+ dependencies:
+ prosemirror-model: 1.25.7
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+
+ prosemirror-dropcursor@1.8.2:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+
+ prosemirror-gapcursor@1.4.1:
+ dependencies:
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.7
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.8
+
+ prosemirror-history@1.5.0:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+ rope-sequence: 1.3.4
+
+ prosemirror-inputrules@1.5.1:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+
+ prosemirror-keymap@1.2.3:
+ dependencies:
+ prosemirror-state: 1.4.4
+ w3c-keyname: 2.2.8
+
+ prosemirror-model@1.25.7:
+ dependencies:
+ orderedmap: 2.1.1
+
+ prosemirror-schema-list@1.5.1:
+ dependencies:
+ prosemirror-model: 1.25.7
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+
+ prosemirror-state@1.4.4:
+ dependencies:
+ prosemirror-model: 1.25.7
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+
+ prosemirror-tables@1.8.5:
+ dependencies:
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.7
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+
+ prosemirror-transform@1.12.0:
+ dependencies:
+ prosemirror-model: 1.25.7
+
+ prosemirror-view@1.41.8:
+ dependencies:
+ prosemirror-model: 1.25.7
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+
+ punycode@2.3.1: {}
+
+ quansync@0.2.11: {}
+
+ queue-microtask@1.2.3: {}
+
+ quote-js-string@0.1.0: {}
+
+ radix3@1.1.2: {}
+
+ range-parser@1.2.1: {}
+
+ rc9@3.0.1:
+ dependencies:
+ defu: 6.1.7
+ destr: 2.0.5
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readable-stream@4.7.0:
+ dependencies:
+ abort-controller: 3.0.0
+ buffer: 6.0.3
+ events: 3.3.0
+ process: 0.11.10
+ string_decoder: 1.3.0
+
+ readdir-glob@1.1.3:
+ dependencies:
+ minimatch: 5.1.9
+
+ readdirp@5.0.0: {}
+
+ redis-errors@1.2.0: {}
+
+ redis-parser@3.0.0:
+ dependencies:
+ redis-errors: 1.2.0
+
+ refa@0.12.1:
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+
+ regexp-ast-analysis@0.7.1:
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+ refa: 0.12.1
+
+ regexp-tree@0.1.27: {}
+
+ regjsparser@0.13.2:
+ dependencies:
+ jsesc: 3.1.0
+
+ reka-ui@2.10.3(vue@3.5.40(typescript@6.0.3)):
+ dependencies:
+ '@floating-ui/dom': 1.8.0
+ '@floating-ui/vue': 1.1.11(vue@3.5.40(typescript@6.0.3))
+ '@internationalized/date': 3.12.1
+ '@internationalized/number': 3.6.6
+ '@tanstack/vue-virtual': 3.13.36(vue@3.5.40(typescript@6.0.3))
+ '@vueuse/core': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ '@vueuse/shared': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ aria-hidden: 1.2.6
+ defu: 6.1.7
+ ohash: 2.0.12
+ vue: 3.5.40(typescript@6.0.3)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+
+ reserved-identifiers@1.2.0: {}
+
+ resolve-from@5.0.0: {}
+
+ resolve-pkg-maps@1.0.0: {}
+
+ resolve@1.22.12:
+ dependencies:
+ es-errors: 1.3.0
+ is-core-module: 2.16.2
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ retry@0.12.0: {}
+
+ reusify@1.1.0: {}
+
+ rolldown-string@0.3.1(rolldown@1.2.1):
+ dependencies:
+ magic-string: 1.2.2
+ optionalDependencies:
+ rolldown: 1.2.1
+
+ rolldown@1.2.1:
+ dependencies:
+ '@oxc-project/types': 0.142.0
+ '@rolldown/pluginutils': 1.0.1
+ optionalDependencies:
+ '@rolldown/binding-android-arm64': 1.2.1
+ '@rolldown/binding-darwin-arm64': 1.2.1
+ '@rolldown/binding-darwin-x64': 1.2.1
+ '@rolldown/binding-freebsd-x64': 1.2.1
+ '@rolldown/binding-linux-arm-gnueabihf': 1.2.1
+ '@rolldown/binding-linux-arm64-gnu': 1.2.1
+ '@rolldown/binding-linux-arm64-musl': 1.2.1
+ '@rolldown/binding-linux-ppc64-gnu': 1.2.1
+ '@rolldown/binding-linux-s390x-gnu': 1.2.1
+ '@rolldown/binding-linux-x64-gnu': 1.2.1
+ '@rolldown/binding-linux-x64-musl': 1.2.1
+ '@rolldown/binding-openharmony-arm64': 1.2.1
+ '@rolldown/binding-wasm32-wasi': 1.2.1
+ '@rolldown/binding-win32-arm64-msvc': 1.2.1
+ '@rolldown/binding-win32-x64-msvc': 1.2.1
+
+ rollup-plugin-visualizer@7.0.1(rolldown@1.2.1)(rollup@4.60.4):
+ dependencies:
+ open: 11.0.0
+ picomatch: 4.0.5
+ source-map: 0.7.6
+ yargs: 18.0.0
+ optionalDependencies:
+ rolldown: 1.2.1
+ rollup: 4.60.4
+
+ rollup@4.60.4:
+ dependencies:
+ '@types/estree': 1.0.8
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.60.4
+ '@rollup/rollup-android-arm64': 4.60.4
+ '@rollup/rollup-darwin-arm64': 4.60.4
+ '@rollup/rollup-darwin-x64': 4.60.4
+ '@rollup/rollup-freebsd-arm64': 4.60.4
+ '@rollup/rollup-freebsd-x64': 4.60.4
+ '@rollup/rollup-linux-arm-gnueabihf': 4.60.4
+ '@rollup/rollup-linux-arm-musleabihf': 4.60.4
+ '@rollup/rollup-linux-arm64-gnu': 4.60.4
+ '@rollup/rollup-linux-arm64-musl': 4.60.4
+ '@rollup/rollup-linux-loong64-gnu': 4.60.4
+ '@rollup/rollup-linux-loong64-musl': 4.60.4
+ '@rollup/rollup-linux-ppc64-gnu': 4.60.4
+ '@rollup/rollup-linux-ppc64-musl': 4.60.4
+ '@rollup/rollup-linux-riscv64-gnu': 4.60.4
+ '@rollup/rollup-linux-riscv64-musl': 4.60.4
+ '@rollup/rollup-linux-s390x-gnu': 4.60.4
+ '@rollup/rollup-linux-x64-gnu': 4.60.4
+ '@rollup/rollup-linux-x64-musl': 4.60.4
+ '@rollup/rollup-openbsd-x64': 4.60.4
+ '@rollup/rollup-openharmony-arm64': 4.60.4
+ '@rollup/rollup-win32-arm64-msvc': 4.60.4
+ '@rollup/rollup-win32-ia32-msvc': 4.60.4
+ '@rollup/rollup-win32-x64-gnu': 4.60.4
+ '@rollup/rollup-win32-x64-msvc': 4.60.4
+ fsevents: 2.3.3
+
+ rope-sequence@1.3.4: {}
+
+ rou3@0.9.1: {}
+
+ run-applescript@7.1.0: {}
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ sax@1.6.0: {}
+
+ scslre@0.3.0:
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+ refa: 0.12.1
+ regexp-ast-analysis: 0.7.1
+
+ scule@1.3.0: {}
+
+ semver@6.3.1: {}
+
+ semver@7.8.5: {}
+
+ send@1.2.1(supports-color@10.2.2):
+ dependencies:
+ debug: 4.4.3(supports-color@10.2.2)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 2.0.0
+ http-errors: 2.0.1
+ mime-types: 3.0.2
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ serialize-javascript@7.0.5: {}
+
+ seroval@1.6.2: {}
+
+ serve-placeholder@2.0.2:
+ dependencies:
+ defu: 6.1.7
+
+ serve-static@2.2.1(supports-color@10.2.2):
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 1.2.1(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ setprototypeof@1.2.0: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.10.0: {}
+
+ signal-exit@3.0.7: {}
+
+ signal-exit@4.1.0: {}
+
+ simple-git@3.36.0(supports-color@10.2.2):
+ dependencies:
+ '@kwsites/file-exists': 1.1.1(supports-color@10.2.2)
+ '@kwsites/promise-deferred': 1.1.1
+ '@simple-git/args-pathspec': 1.0.3
+ '@simple-git/argv-parser': 1.1.1
+ debug: 4.4.3(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ sirv@3.0.2:
+ dependencies:
+ '@polka/url': 1.0.0-next.29
+ mrmime: 2.0.1
+ totalist: 3.0.1
+
+ sisteransi@1.0.5: {}
+
+ slash@5.1.0: {}
+
+ smob@1.6.2: {}
+
+ source-map-js@1.2.1: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ source-map@0.7.6: {}
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@5.0.0:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.23
+
+ spdx-license-ids@3.0.23: {}
+
+ srvx@0.11.22: {}
+
+ srvx@0.12.4: {}
+
+ stable-hash-x@0.2.0: {}
+
+ standard-as-callback@2.1.0: {}
+
+ statuses@2.0.2: {}
+
+ std-env@4.2.0: {}
+
+ streamx@2.25.0:
+ dependencies:
+ events-universal: 1.0.1
+ fast-fifo: 1.3.2
+ text-decoder: 1.2.7
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.2.0
+
+ string-width@7.2.0:
+ dependencies:
+ emoji-regex: 10.6.0
+ get-east-asian-width: 1.6.0
+ strip-ansi: 7.2.0
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.2.0:
+ dependencies:
+ ansi-regex: 6.2.2
+
+ strip-final-newline@3.0.0: {}
+
+ strip-indent@4.1.1: {}
+
+ strip-literal@4.0.0:
+ dependencies:
+ js-tokens: 10.0.0
+
+ structured-clone-es@2.0.1: {}
+
+ stylehacks@8.0.1(postcss@8.5.25):
+ dependencies:
+ browserslist: 4.28.7
+ postcss: 8.5.25
+ postcss-selector-parser: 7.1.4
+
+ super-regex@1.1.0:
+ dependencies:
+ function-timeout: 1.0.2
+ make-asynchronous: 1.1.0
+ time-span: 5.1.0
+
+ supports-color@10.2.2: {}
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ svgo@4.0.1:
+ dependencies:
+ commander: 11.1.0
+ css-select: 5.2.2
+ css-tree: 3.2.1
+ css-what: 6.2.2
+ csso: 5.0.5
+ picocolors: 1.1.1
+ sax: 1.6.0
+
+ tagged-tag@1.0.0: {}
+
+ tailwind-merge@3.6.0: {}
+
+ tailwind-variants@3.2.2(tailwind-merge@3.6.0)(tailwindcss@4.3.3):
+ dependencies:
+ tailwindcss: 4.3.3
+ optionalDependencies:
+ tailwind-merge: 3.6.0
+
+ tailwindcss@4.3.3: {}
+
+ tapable@2.3.3: {}
+
+ tar-stream@3.2.0:
+ dependencies:
+ b4a: 1.8.1
+ bare-fs: 4.7.1
+ fast-fifo: 1.3.2
+ streamx: 2.25.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+
+ tar@7.5.15:
+ dependencies:
+ '@isaacs/fs-minipass': 4.0.1
+ chownr: 3.0.0
+ minipass: 7.1.3
+ minizlib: 3.1.0
+ yallist: 5.0.0
+
+ teex@1.0.1:
+ dependencies:
+ streamx: 2.25.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
+ terser@5.47.1:
+ dependencies:
+ '@jridgewell/source-map': 0.3.11
+ acorn: 8.18.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ text-decoder@1.2.7:
+ dependencies:
+ b4a: 1.8.1
+ transitivePeerDependencies:
+ - react-native-b4a
+
+ time-span@5.1.0:
+ dependencies:
+ convert-hrtime: 5.0.0
+
+ tiny-inflate@1.0.3: {}
+
+ tiny-invariant@1.3.3: {}
+
+ tinyclip@0.1.15: {}
+
+ tinyexec@1.2.4: {}
+
+ tinyglobby@0.2.17:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.5)
+ picomatch: 4.0.5
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ to-valid-identifier@1.0.0:
+ dependencies:
+ '@sindresorhus/base62': 1.0.0
+ reserved-identifiers: 1.2.0
+
+ toidentifier@1.0.1: {}
+
+ totalist@3.0.1: {}
+
+ tr46@0.0.3: {}
+
+ ts-api-utils@2.5.0(typescript@6.0.3):
+ dependencies:
+ typescript: 6.0.3
+
+ tslib@2.8.1: {}
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-fest@4.41.0: {}
+
+ type-fest@5.6.0:
+ dependencies:
+ tagged-tag: 1.0.0
+
+ type-level-regexp@0.1.17: {}
+
+ typescript@6.0.3: {}
+
+ ufo@1.6.4: {}
+
+ ultrahtml@1.7.0: {}
+
+ uncrypto@0.1.3: {}
+
+ unctx@2.5.0:
+ dependencies:
+ acorn: 8.18.0
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ unplugin: 2.3.11
+
+ unctx@3.0.0(magic-string@1.2.2)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))):
+ optionalDependencies:
+ magic-string: 1.2.2
+ oxc-parser: 0.140.0
+ rolldown: 1.2.1
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+
+ undici@8.10.0: {}
+
+ unenv@2.0.0-rc.24:
+ dependencies:
+ pathe: 2.0.3
+
+ unhead@3.4.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ hookable: 6.1.1
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ optionalDependencies:
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - rolldown
+ - rollup
+ - unloader
+ - webpack
+
+ unicorn-magic@0.3.0: {}
+
+ unicorn-magic@0.4.0: {}
+
+ unifont@0.7.4:
+ dependencies:
+ css-tree: 3.2.1
+ ofetch: 1.5.1
+ ohash: 2.0.12
+
+ unimport@6.4.0(esbuild@0.28.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ acorn: 8.18.0
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ local-pkg: 1.2.1
+ magic-string: 1.2.2
+ mlly: 1.8.2
+ pathe: 2.0.3
+ picomatch: 4.0.5
+ pkg-types: 2.3.1
+ scule: 1.3.0
+ strip-literal: 4.0.0
+ tinyglobby: 0.2.17
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin-utils: 0.3.2
+ optionalDependencies:
+ oxc-parser: 0.140.0
+ rolldown: 1.2.1
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - rollup
+ - unloader
+ - vite
+ - webpack
+
+ unplugin-auto-import@21.1.0(@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))))(@vueuse/core@14.4.0(vue@3.5.40(typescript@6.0.3)))(esbuild@0.28.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ local-pkg: 1.2.1
+ magic-string: 1.2.2
+ picomatch: 4.0.5
+ unimport: 6.4.0(esbuild@0.28.0)(oxc-parser@0.140.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin-utils: 0.3.2
+ optionalDependencies:
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ '@vueuse/core': 14.4.0(vue@3.5.40(typescript@6.0.3))
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - oxc-parser
+ - rolldown
+ - rollup
+ - unloader
+ - vite
+ - webpack
+
+ unplugin-utils@0.3.2:
+ dependencies:
+ pathe: 2.0.3
+ picomatch: 4.0.5
+
+ unplugin-vue-components@32.1.0(@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))))(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3)):
+ dependencies:
+ chokidar: 5.0.0
+ local-pkg: 1.2.1
+ magic-string: 0.30.21
+ mlly: 1.8.2
+ obug: 2.1.1
+ picomatch: 4.0.5
+ tinyglobby: 0.2.17
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin-utils: 0.3.2
+ vue: 3.5.40(typescript@6.0.3)
+ optionalDependencies:
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - rolldown
+ - rollup
+ - unloader
+ - vite
+ - webpack
+
+ unplugin@2.3.11:
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ acorn: 8.18.0
+ picomatch: 4.0.5
+ webpack-virtual-modules: 0.6.2
+
+ unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ picomatch: 4.0.5
+ webpack-virtual-modules: 0.6.2
+ optionalDependencies:
+ esbuild: 0.28.0
+ rolldown: 1.2.1
+ rollup: 4.60.4
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+
+ unrouting@0.2.2:
+ dependencies:
+ escape-string-regexp: 5.0.0
+ ufo: 1.6.4
+
+ unrs-resolver@1.12.2:
+ dependencies:
+ napi-postinstall: 0.3.4
+ optionalDependencies:
+ '@unrs/resolver-binding-android-arm-eabi': 1.12.2
+ '@unrs/resolver-binding-android-arm64': 1.12.2
+ '@unrs/resolver-binding-darwin-arm64': 1.12.2
+ '@unrs/resolver-binding-darwin-x64': 1.12.2
+ '@unrs/resolver-binding-freebsd-x64': 1.12.2
+ '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2
+ '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2
+ '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2
+ '@unrs/resolver-binding-linux-arm64-musl': 1.12.2
+ '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2
+ '@unrs/resolver-binding-linux-loong64-musl': 1.12.2
+ '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2
+ '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2
+ '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2
+ '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2
+ '@unrs/resolver-binding-linux-x64-gnu': 1.12.2
+ '@unrs/resolver-binding-linux-x64-musl': 1.12.2
+ '@unrs/resolver-binding-openharmony-arm64': 1.12.2
+ '@unrs/resolver-binding-wasm32-wasi': 1.12.2
+ '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2
+ '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2
+ '@unrs/resolver-binding-win32-x64-msvc': 1.12.2
+
+ unstorage@1.17.5(db0@0.3.4)(ioredis@5.10.1(supports-color@10.2.2)):
+ dependencies:
+ anymatch: 3.1.3
+ chokidar: 5.0.0
+ destr: 2.0.5
+ h3: 1.15.11
+ lru-cache: 11.4.0
+ node-fetch-native: 1.6.7
+ ofetch: 1.5.1
+ ufo: 1.6.4
+ optionalDependencies:
+ db0: 0.3.4
+ ioredis: 5.10.1(supports-color@10.2.2)
+
+ untun@0.1.3:
+ dependencies:
+ citty: 0.1.6
+ consola: 3.4.2
+ pathe: 1.1.2
+
+ untyped@2.0.0:
+ dependencies:
+ citty: 0.1.6
+ defu: 6.1.7
+ jiti: 2.7.0
+ knitwork: 1.3.0
+ scule: 1.3.0
+
+ unwasm@0.5.3:
+ dependencies:
+ exsolve: 1.1.1
+ knitwork: 1.3.0
+ magic-string: 0.30.21
+ mlly: 1.8.2
+ pathe: 2.0.3
+ pkg-types: 2.3.1
+
+ update-browserslist-db@1.2.3(browserslist@4.28.7):
+ dependencies:
+ browserslist: 4.28.7
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ uqr@0.1.3: {}
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ util-deprecate@1.0.2: {}
+
+ valibot@1.4.2(typescript@6.0.3):
+ optionalDependencies:
+ typescript: 6.0.3
+ optional: true
+
+ vaul-vue@0.4.1(reka-ui@2.10.3(vue@3.5.40(typescript@6.0.3)))(vue@3.5.40(typescript@6.0.3)):
+ dependencies:
+ '@vueuse/core': 10.11.1(vue@3.5.40(typescript@6.0.3))
+ reka-ui: 2.10.3(vue@3.5.40(typescript@6.0.3))
+ vue: 3.5.40(typescript@6.0.3)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+
+ verkit@0.3.2: {}
+
+ vite-dev-rpc@2.0.0(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ birpc: 4.0.0
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ vite-hot-client: 2.2.0(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+
+ vite-hot-client@2.2.0(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+
+ vite-node@6.0.0(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0):
+ dependencies:
+ cac: 7.0.0
+ es-module-lexer: 2.1.0
+ obug: 2.1.1
+ pathe: 2.0.3
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - '@vitejs/devtools'
+ - esbuild
+ - jiti
+ - less
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - terser
+ - tsx
+ - yaml
+
+ vite-plugin-checker@0.14.5(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3)):
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ chokidar: 5.0.0
+ npm-run-path: 6.0.0
+ picocolors: 1.1.1
+ picomatch: 4.0.5
+ proper-lockfile: 4.1.2
+ tiny-invariant: 1.3.3
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ optionalDependencies:
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ optionator: 0.9.4
+ typescript: 6.0.3
+ vue-tsc: 3.3.11(typescript@6.0.3)
+
+ vite-plugin-inspect@11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))))(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)):
+ dependencies:
+ ansis: 4.3.1
+ error-stack-parser-es: 1.0.5
+ obug: 2.1.1
+ ohash: 2.0.12
+ open: 11.0.0
+ perfect-debounce: 2.1.0
+ sirv: 3.0.2
+ unplugin-utils: 0.3.2
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ vite-dev-rpc: 2.0.0(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ optionalDependencies:
+ '@nuxt/kit': 4.5.2(magic-string@1.2.2)(magicast@0.5.4)(oxc-parser@0.140.0)(rolldown@1.2.1)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))
+
+ vite-plugin-vue-tracer@1.4.0(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3)):
+ dependencies:
+ estree-walker: 3.0.3
+ exsolve: 1.1.1
+ magic-string: 0.30.21
+ pathe: 2.0.3
+ source-map-js: 1.2.1
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ vue: 3.5.40(typescript@6.0.3)
+
+ vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0):
+ dependencies:
+ lightningcss: 1.33.0
+ picomatch: 4.0.5
+ postcss: 8.5.25
+ rolldown: 1.2.1
+ tinyglobby: 0.2.17
+ optionalDependencies:
+ esbuild: 0.28.0
+ fsevents: 2.3.3
+ jiti: 2.7.0
+ terser: 5.47.1
+ yaml: 2.9.0
+
+ vscode-uri@3.1.0: {}
+
+ vue-bundle-renderer@2.3.1:
+ dependencies:
+ ufo: 1.6.4
+
+ vue-component-type-helpers@3.3.11: {}
+
+ vue-demi@0.14.10(vue@3.5.40(typescript@6.0.3)):
+ dependencies:
+ vue: 3.5.40(typescript@6.0.3)
+
+ vue-devtools-stub@0.1.0: {}
+
+ vue-eslint-parser@10.4.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2):
+ dependencies:
+ debug: 4.4.3(supports-color@10.2.2)
+ eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2)
+ eslint-scope: 9.1.2
+ eslint-visitor-keys: 5.0.1
+ espree: 11.2.0
+ esquery: 1.7.0
+ semver: 7.8.5
+ transitivePeerDependencies:
+ - supports-color
+
+ vue-router@5.2.0(@vue/compiler-sfc@3.5.40)(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))(vue@3.5.40(typescript@6.0.3)):
+ dependencies:
+ '@babel/generator': 8.0.0
+ '@vue-macros/common': 3.1.4(vue@3.5.40(typescript@6.0.3))
+ '@vue/devtools-api': 8.2.1
+ ast-walker-scope: 0.9.0
+ chokidar: 5.0.0
+ json5: 2.2.3
+ local-pkg: 1.2.1
+ magic-string: 0.30.21
+ mlly: 1.8.2
+ muggle-string: 0.4.1
+ nostics: 1.2.0
+ pathe: 2.0.3
+ picomatch: 4.0.5
+ scule: 1.3.0
+ tinyglobby: 0.2.17
+ unplugin: 3.3.0(esbuild@0.28.0)(rolldown@1.2.1)(rollup@4.60.4)(vite@8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
+ unplugin-utils: 0.3.2
+ vue: 3.5.40(typescript@6.0.3)
+ yaml: 2.9.0
+ optionalDependencies:
+ '@vue/compiler-sfc': 3.5.40
+ vite: 8.2.1(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - rolldown
+ - rollup
+ - unloader
+ - webpack
+
+ vue-tsc@3.3.11(typescript@6.0.3):
+ dependencies:
+ '@volar/typescript': 2.4.28(typescript@6.0.3)
+ '@vue/language-core': 3.3.11
+ typescript: 6.0.3
+
+ vue@3.5.40(typescript@6.0.3):
+ dependencies:
+ '@vue/compiler-dom': 3.5.40
+ '@vue/compiler-sfc': 3.5.40
+ '@vue/runtime-dom': 3.5.40
+ '@vue/server-renderer': 3.5.40
+ '@vue/shared': 3.5.40
+ optionalDependencies:
+ typescript: 6.0.3
+
+ w3c-keyname@2.2.8: {}
+
+ web-worker@1.5.0: {}
+
+ webidl-conversions@3.0.1: {}
+
+ webpack-virtual-modules@0.6.2: {}
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ wheel-gestures@2.2.48: {}
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ which@6.0.1:
+ dependencies:
+ isexe: 4.0.0
+
+ word-wrap@1.2.5: {}
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.3
+ string-width: 5.1.2
+ strip-ansi: 7.2.0
+
+ wrap-ansi@9.0.2:
+ dependencies:
+ ansi-styles: 6.2.3
+ string-width: 7.2.0
+ strip-ansi: 7.2.0
+
+ ws@8.21.3: {}
+
+ wsl-utils@0.3.1:
+ dependencies:
+ is-wsl: 3.1.1
+ powershell-utils: 0.1.0
+
+ xml-name-validator@5.0.0: {}
+
+ y-protocols@1.0.7(yjs@13.6.30):
+ dependencies:
+ lib0: 0.2.117
+ yjs: 13.6.30
+
+ y18n@5.0.8: {}
+
+ yallist@3.1.1: {}
+
+ yallist@5.0.0: {}
+
+ yaml@2.9.0: {}
+
+ yargs-parser@22.0.0: {}
+
+ yargs@18.0.0:
+ dependencies:
+ cliui: 9.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ string-width: 7.2.0
+ y18n: 5.0.8
+ yargs-parser: 22.0.0
+
+ yjs@13.6.30:
+ dependencies:
+ lib0: 0.2.117
+
+ yocto-queue@0.1.0: {}
+
+ yocto-queue@1.2.2: {}
+
+ youch-core@0.3.3:
+ dependencies:
+ '@poppinss/exception': 1.2.3
+ error-stack-parser-es: 1.0.5
+
+ youch@4.1.1:
+ dependencies:
+ '@poppinss/colors': 4.1.6
+ '@poppinss/dumper': 0.7.0
+ '@speed-highlight/core': 1.2.15
+ cookie-es: 3.1.1
+ youch-core: 0.3.3
+
+ zigpty@0.2.1:
+ optional: true
+
+ zip-stream@6.0.1:
+ dependencies:
+ archiver-utils: 5.0.2
+ compress-commons: 6.0.2
+ readable-stream: 4.7.0
+
+ zod@4.4.3:
+ optional: true
diff --git a/code/link-site/link-nuxt/pnpm-workspace.yaml b/code/link-site/link-nuxt/pnpm-workspace.yaml
new file mode 100644
index 00000000..92640afe
--- /dev/null
+++ b/code/link-site/link-nuxt/pnpm-workspace.yaml
@@ -0,0 +1,6 @@
+allowBuilds:
+ '@parcel/watcher': false
+ '@tailwindcss/oxide': false
+ esbuild: false
+ unrs-resolver: false
+ vue-demi: false
diff --git a/code/link-site/link-nuxt/public/favicon.ico b/code/link-site/link-nuxt/public/favicon.ico
new file mode 100644
index 00000000..18993ad9
Binary files /dev/null and b/code/link-site/link-nuxt/public/favicon.ico differ
diff --git a/code/link-site/link-nuxt/renovate.json b/code/link-site/link-nuxt/renovate.json
new file mode 100644
index 00000000..1342f21a
--- /dev/null
+++ b/code/link-site/link-nuxt/renovate.json
@@ -0,0 +1,4 @@
+{
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": ["github>nuxt/renovate-config-nuxt"]
+}
diff --git a/code/link-site/link-nuxt/skills-lock.json b/code/link-site/link-nuxt/skills-lock.json
new file mode 100644
index 00000000..8f4e43e6
--- /dev/null
+++ b/code/link-site/link-nuxt/skills-lock.json
@@ -0,0 +1,11 @@
+{
+ "version": 1,
+ "skills": {
+ "nuxt-ui": {
+ "source": "nuxt/ui",
+ "sourceType": "github",
+ "skillPath": "skills/nuxt-ui/SKILL.md",
+ "computedHash": "08c32bda980ee1ba0c520cbfe9c452098391b8011d4b85f6c5b84ad9a00bcec4"
+ }
+ }
+}
diff --git a/code/link-site/link-nuxt/tsconfig.json b/code/link-site/link-nuxt/tsconfig.json
new file mode 100644
index 00000000..103ec507
--- /dev/null
+++ b/code/link-site/link-nuxt/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ // https://nuxt.com/docs/guide/concepts/typescript
+ "files": [],
+ "references": [
+ { "path": "./.nuxt/tsconfig.app.json" },
+ { "path": "./.nuxt/tsconfig.server.json" },
+ { "path": "./.nuxt/tsconfig.shared.json" },
+ { "path": "./.nuxt/tsconfig.node.json" }
+ ]
+}
diff --git a/code/link-site/需求分析.md b/code/link-site/需求分析.md
new file mode 100644
index 00000000..a237f455
--- /dev/null
+++ b/code/link-site/需求分析.md
@@ -0,0 +1,210 @@
+# 需求分析 — 物流企业连接平台
+
+> 状态:需求梳理阶段(v1.0,2026-08-31,按新定位重写)
+> 说明:本文档为项目需求基线,后续数据库设计、API 设计、开发排期均以此为基础。
+
+## 一、项目定位
+
+> **物流行业的 B2B 企业连接平台。** 各物流企业在平台内建立自己的企业空间(主页、关于、文章、服务等),平台提供企业目录、搜索发现、资讯内容和企业间沟通(私信、行业群聊)能力,帮助企业找到彼此、建立联系、开展业务交流。
+
+一句话概括:**物流企业目录 + 企业内容社区 + 企业间沟通网络**。
+
+关键认知:平台是主角,企业是平台内的成员。企业页面**不是独立官网**,而是平台内的标准化企业空间——产品的核心价值是「连接」(企业越多、越容易找到对方,平台越有价值),而非「建站」。
+
+### 1.1 与建站 SaaS 的关系
+
+本项目一期**不做**自由建站:企业空间采用固定页面结构的标准化模板,企业只填表单、发内容。块级可视化编辑作为**二期付费增强能力**预留(见 6.2),数据模型上预留页面配置的扩展点。
+
+## 二、核心模式
+
+```text
+ 物流连接平台 www.demo.com
+ │
+ ┌───────────┬───────┴───────┬────────────┐
+ ↓ ↓ ↓ ↓
+ 企业目录 资讯流 搜索 消息(IM)
+ │ │ │ │
+ └─────┬─────┴───────┬───────┘ │
+ ↓ ↓ │
+ /company/abc /company/xyz ← 企业空间 │
+ │ │ │
+ └─────────────┴────────────────────┘
+ 企业间私信 / 行业群聊
+```
+
+- 企业空间是企业对外展示的窗口(模板化主页 + 内容);
+- 目录、搜索、资讯流负责「发现」,IM 负责「连接」;
+- 平台导航全站常驻,企业空间是平台内的子区域,不是独立网站。
+
+## 三、用户角色
+
+| 角色 | 说明 | 主要诉求 |
+|---|---|---|
+| 个人用户 | 注册登录的平台账号,可归属于某企业(成员/管理员)或独立存在 | 浏览、搜索、关注、聊天、(企业成员)维护本企业空间 |
+| 企业管理员 | 企业空间的管理者(企业认证通过后获得) | 维护企业信息、发布文章、管理成员、处理消息 |
+| 平台管理员 | 平台运营方 | 企业审核认证、内容审核、群组管理、行业数据维护 |
+| 访客 / 搜索引擎 | 未登录访问者 | 浏览企业空间与文章;搜索引擎收录 |
+
+## 四、功能需求
+
+### 4.1 企业目录与搜索(流量入口)
+
+- 企业列表页:按**地区、航线/线路(美线/欧线/东南亚…)、服务类型(海运/空运/陆运/报关/仓储…)、认证状态**等维度筛选与排序;
+- 关键词搜索:企业名、服务、线路(二期可扩展文章全文搜索);
+- 企业详情卡片:Logo、名称、认证标识、主营线路、服务标签、地区。
+
+> 目录的检索维度(线路、服务类型)是物流平台最有价值的检索轴,筛选器的数据模型需要可运营维护(平台管理员维护线路/服务字典)。
+
+### 4.2 企业空间(标准化模板)
+
+固定页面结构,企业通过表单配置内容:
+
+```text
+/company/abc
+├── 主页:企业封面、简介、主营服务、优势线路、最新文章
+├── 关于:公司介绍、资质证照、发展历程、团队
+├── 文章:企业发布的资讯/案例(列表 + 详情)
+├── 服务:服务项目与线路明细
+└── 联系:联系方式、地址、地图、(登录后)在线沟通入口
+```
+
+- 页面结构一期固定,企业只填内容(文字、图片、标签选择);
+- 数据模型上为页面配置预留结构化扩展点(JSON 配置字段),二期接入块编辑器时平滑升级;
+- 企业空间内导航为页内 tab(非独立导航栏),平台导航全站常驻。
+
+### 4.3 用户体系与认证
+
+- 个人账号注册/登录(手机号/邮箱);
+- 个人可申请绑定企业成为成员,企业管理员可邀请/管理成员与角色;
+- **企业认证**:提交营业执照等材料,平台管理员审核;认证通过后获得认证标识并可管理企业空间;
+- 个人侧「我的」:个人资料、我的消息、我的企业、浏览/关注记录。
+
+### 4.4 企业间交流(IM)
+
+- **一对一私信**:用户(企业成员)之间的点对点聊天;
+- **行业群聊**:按线路/航线/服务主题建群(如「美线交流群」「华南拖车群」),支持平台建群(官方群)与企业用户建群;
+- 消息能力:文字、图片(一期);未读提醒、离线消息、消息记录;
+- 会话入口:企业空间「在线沟通」按钮、目录卡片、消息中心;
+- 内容安全:消息与文章需可审计(平台管理员可依规处置违规内容)。
+
+> 结构化询价/报价单(起运地→目的地、柜型、时效)未列入一期,作为后续业务化方向在 6.2 预留。
+
+### 4.5 资讯流
+
+- 各企业发布文章的聚合流,按时间/标签浏览;
+- 文章类型:行业资讯、公司动态、案例分享(可由平台设定分类字典);
+- 平台管理员可置顶/推荐文章。
+
+### 4.6 SEO(平台级能力)
+
+- 企业空间页、文章详情页 SSR 渲染,搜索引擎可见完整 HTML;
+- 平台自动生成每页 Title/Description/Open Graph;企业名、线路类关键词(如「美线 海运 物流公司」)是天然长尾流量来源;
+- `/sitemap.xml` 聚合企业空间与文章页;robots.txt 自动生成。
+
+### 4.7 管理端(平台运营后台)
+
+- 企业管理与认证审核
+- 用户管理
+- 内容(文章)审核与管理
+- 群组管理与违规处置
+- 字典维护:线路/航线、服务类型、文章分类等运营数据
+- 平台数据看板(企业数、活跃、消息量)
+
+管理端形态:Vue 3 + Vite 独立后台,对接 Spring Boot API。
+
+## 五、总体布局与信息架构
+
+```text
+┌─────────────────────────────────────────┐
+│ 平台导航(全站常驻) │
+│ 首页 / 企业目录 / 资讯 / [搜索框] / 消息 / 我的 │
+├─────────────────────────────────────────┤
+│ │
+│ 当前页面内容 │
+│ · 平台页面:首页、目录、资讯流、搜索结果 │
+│ · 企业空间 /company/abc: │
+│ 企业头部(封面/Logo/名称/认证/关注/沟通) │
+│ 页内 tab:主页 | 关于 | 文章 | 服务 | 联系 │
+│ │
+├─────────────────────────────────────────┤
+│ 平台页脚 │
+└─────────────────────────────────────────┘
+```
+
+原则:
+
+- **一个平台,一套导航**。平台导航不因进入企业空间而消失——访客始终知道自己在哪,搜索、消息入口随时可达;
+- 企业空间的「企业头部 + tab 页签」承载企业识别,不做第二套全站导航栏;
+- 企业空间主色调等轻量主题可配置,但整体视觉框架与平台一致。
+
+## 六、总体技术架构
+
+```text
+ 用户 / 搜索引擎
+ │
+ www.demo.com
+ │
+ ┌───────┴────────┐
+ │ Nuxt 4 │
+ │ 企业空间 SSR │
+ │ SEO / 目录/资讯 │
+ └───────┬────────┘
+ │
+ API Server(Spring Boot)
+ │
+ ┌───────────────┼───────────────┐
+ ↓ ↓ ↓
+ Database Redis OSS
+ │ │ │
+ 用户/企业/认证 会话/缓存 图片素材
+ 文章/字典数据 IM 在线状态
+ │
+ IM 服务(WebSocket,Spring 生态内实现或独立网关)
+ 私信 / 群聊 / 离线消息 / 未读推送
+```
+
+| 层 | 技术选型 | 职责 |
+|---|---|---|
+| 网站端 | Nuxt 4 + Nuxt UI v4(本仓库 `link-nuxt`) | 平台门户、目录、资讯、企业空间 SSR、SEO |
+| 管理端 | Vue 3 + Vite | 平台运营后台 |
+| API 层 | Spring Boot | 业务接口、认证鉴权、审核流 |
+| IM 层 | Spring 生态 WebSocket(或独立网关) | 私信、群聊、消息存储与推送 |
+| 数据层 | Database / Redis / OSS | 业务数据、缓存与在线状态、素材 |
+
+架构要点:
+
+- 企业空间页面为**运行时 SSR**(数据在库、构建时不可知),部署形态为 Node 服务器或支持 SSR 的运行时;
+- IM 与业务 API 分离部署,长连接不占用业务请求线程;消息先落库再推送,保证可靠性与离线消息;
+- Redis 承担会话缓存、IM 在线状态、热门目录/文章缓存。
+
+## 七、边界与非目标(一期)
+
+| 事项 | 一期决策 | 说明 |
+|---|---|---|
+| 可视化建站(块编辑器) | 不做,二期付费增强 | 一期标准化模板 + 表单;数据模型预留 JSON 配置扩展点 |
+| 自定义域名 | 不做 | 企业空间始终在平台域名下,无独立域名诉求 |
+| 询价/报价单 | 不做,预留 | 私信中先以文字沟通,结构化询价为后续业务化方向 |
+| 文章全文搜索 | 不做,预留 | 一期关键词匹配,后续接入搜索引擎(如 ES) |
+| 多语言 / 国际化 | 不做 | 视运营需要后置 |
+
+## 八、建议实施顺序
+
+1. **基础链路**:用户/企业数据模型 + 企业空间标准化模板页,跑通 `/company/abc` 的 SSR 渲染;
+2. **目录与搜索**:企业列表、筛选器、线路/服务字典;
+3. **用户体系**:注册登录、企业认证流、成员角色;
+4. **资讯流与文章**:企业发文、聚合流、文章详情 SSR + SEO(sitemap/meta);
+5. **IM**:私信 → 群聊 → 离线/未读,独立 WebSocket 服务;
+6. **管理端**:审核流、字典维护、数据看板;
+7. **二期**:块级可视化编辑器(付费)、结构化询价、全文搜索。
+
+## 九、术语表
+
+| 术语 | 含义 |
+|---|---|
+| 企业空间(Company Space) | 企业在平台内的展示空间:主页/关于/文章/服务/联系,URL 为 `/company/{slug}` |
+| 企业认证 | 企业提交营业执照等材料、平台审核后获得认证标识与空间管理权 |
+| 目录(Directory) | 企业列表与筛选检索,平台的流量入口 |
+| 字典 | 平台运营维护的枚举数据:线路/航线、服务类型、文章分类等 |
+| IM | 站内即时通讯:一对一私信与行业群聊 |
+| 行业群 | 按线路/服务主题组建的群聊,官方或用户创建 |
+| SEO 层 | 平台自动为企业空间与文章生成的 meta、sitemap 等收录能力 |