From f4725983078d1f770ac5096b77ecc3d4dafdaf7a Mon Sep 17 00:00:00 2001 From: null-crafter <163591881+null-crafter@users.noreply.github.com> Date: Thu, 16 Jul 2026 20:49:46 +0000 Subject: [PATCH 1/3] feat: apply ui example integration --- app/apply/page.tsx | 24 ++++++++++++++ components/apply-navbar.tsx | 64 +++++++++++++++++++++++++++++++++++++ package.json | 2 +- pnpm-lock.yaml | 52 +++++++++++++++--------------- providers/index.tsx | 5 ++- 5 files changed, 119 insertions(+), 28 deletions(-) create mode 100644 app/apply/page.tsx create mode 100644 components/apply-navbar.tsx diff --git a/app/apply/page.tsx b/app/apply/page.tsx new file mode 100644 index 00000000..8a82eca1 --- /dev/null +++ b/app/apply/page.tsx @@ -0,0 +1,24 @@ +'use client'; + +import { ApplyWizard } from '@iblai/iblai-js/web-containers'; + +import { ApplyNavbar } from '@/components/apply-navbar'; +import { useCurrentTenant } from '@/hooks/use-user'; + +export default function ApplyPage() { + const { currentTenant } = useCurrentTenant(); + const orgName = + currentTenant?.platform_name || + currentTenant?.name || + 'American Faith Academy'; + + return ( +
+ +
+ {/* The navbar provides the top chrome, so the wizard hides its own. */} + +
+
+ ); +} diff --git a/components/apply-navbar.tsx b/components/apply-navbar.tsx new file mode 100644 index 00000000..77ec61c3 --- /dev/null +++ b/components/apply-navbar.tsx @@ -0,0 +1,64 @@ +'use client'; + +import { useRouter } from 'next/navigation'; +import { useCallback } from 'react'; + +import { NotificationDropdown } from '@iblai/iblai-js/web-containers'; +import { UserProfile } from '@/app/platform/[tenantKey]/[mentorId]/_components/nav-bar/user-profile'; +import { useCurrentTenant, useIsAdmin, useUsername } from '@/hooks/use-user'; + +/** + * Top navigation bar for the standalone /apply flow. Shows the tenant name + * (text, NOT the tenant logo) on the left, and the notification bell + profile + * dropdown from the ibl.ai SDK on the right. Tenant/user context comes from + * local storage, so it renders on a top-level route with no tenant/mentor + * URL segments. + */ +export function ApplyNavbar() { + const router = useRouter(); + const username = useUsername(); + const isAdmin = useIsAdmin(); + const { currentTenant } = useCurrentTenant(); + const tenantKey = currentTenant?.key ?? ''; + const orgName = + currentTenant?.platform_name || + currentTenant?.name || + 'American Faith Academy'; + + const handleViewNotifications = useCallback( + (notificationId?: string) => { + if (!tenantKey) return; + router.push( + `/platform/${tenantKey}/notifications/${notificationId ?? ''}`, + ); + }, + [router, tenantKey], + ); + + return ( +
+
+ {/* Left: tenant name + context (no logo) */} +
+ + {orgName} + + Application +
+ + {/* Right: notification bell + profile dropdown */} +
+ {username && ( + + )} + +
+
+
+ ); +} diff --git a/package.json b/package.json index 5333fea0..a6d655a7 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "dependencies": { "@iblai/agent-ai": "2.5.2", "@iblai/iblai-api": "4.166.0-ai", - "@iblai/iblai-js": "1.25.1", + "@iblai/iblai-js": "1.25.2", "@iblai/iblai-web-mentor": "1.3.4", "@livekit/components-react": "2.8.1", "@livekit/components-styles": "1.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2d70507..74afd9c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,8 +44,8 @@ importers: specifier: 4.166.0-ai version: 4.166.0-ai '@iblai/iblai-js': - specifier: 1.25.1 - version: 1.25.1(09ad73cc8de68f3b29da137077ebeb71) + specifier: 1.25.2-applyui-1.2 + version: 1.25.2-applyui-1.2(09ad73cc8de68f3b29da137077ebeb71) '@iblai/iblai-web-mentor': specifier: 1.3.4 version: 1.3.4(@babel/core@7.29.7)(@types/babel__core@7.20.5)(rollup@4.62.2)(typescript@5.9.3) @@ -857,8 +857,8 @@ packages: react: 19.1.0 react-dom: 19.1.0 - '@iblai/data-layer@1.9.2': - resolution: {integrity: sha512-z7XNYNb+XoahIhzld9yBVqAnf/WfpUddCAi/5QmJeP6FkYecm/GRKsPx4RwIB9vw2Uk64iJxn1DCcfEc1p3A+g==} + '@iblai/data-layer@1.9.2-applyui-1.2': + resolution: {integrity: sha512-sdqCPQMFIYaYJNgP/EVqZFkSuQ8ENCv2K5jGDj6lSqzmldZOQExrymPFbUn6s4ol0CuYoOXUCtUL92zaMze0cw==} engines: {node: 25.3.0} peerDependencies: '@reduxjs/toolkit': 2.7.0 @@ -869,8 +869,8 @@ packages: '@iblai/iblai-api@4.166.0-ai': resolution: {integrity: sha512-dY9Jv+CkXEyTxRsOQFay5YvYe8K2LSQluJJvtssGQV2RbrxPPzONaKfnhcyarDs7Ft35Xqk1fuErjhUwNG3OIg==} - '@iblai/iblai-js@1.25.1': - resolution: {integrity: sha512-7CPx9gpxQ057xVPXgCh4MX8goaa6AWeugVIKObi8DSEwDaawByCs7Pi02Ubymzd4R5Z74DeW1iibPjEwe0csMQ==} + '@iblai/iblai-js@1.25.2-applyui-1.2': + resolution: {integrity: sha512-7Pu2PYvLuq9+ZOBJF1gvmF2WSDSyV13EThkBcodmqrZzSv/vPRax6U+l62fRi1s7OqzG+PungEsOxzyIhqY/Ug==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: @@ -894,18 +894,18 @@ packages: '@iblai/iblai-web-mentor@1.3.4': resolution: {integrity: sha512-w0K22cQl/LquXDDnVi7DgiOeuS+iha85poZxuLCtJqvwyCxAMLch1DWN3LbNCxw+YGhrV7BOEENp8s7bZ+7ZGw==} - '@iblai/mcp@1.8.0': - resolution: {integrity: sha512-5B8TbJ2V73F4/l+iNsDgkaKUJqASutH+QVu/DffpdolYZH3peEDmxbwCdK/p4Qaf+Hl0AdVzrm+N5Q9VUyw+AA==} + '@iblai/mcp@1.8.0-applyui-1.2': + resolution: {integrity: sha512-UIjyyTrBr/R/klw4X5fGRSch0Vx7xCP1yEOi3pwpzjJu2Fu7j0AT3/d98jEoufatOA5HJA1h8S29jw9Ggp8EIA==} engines: {node: '>=20.0.0'} hasBin: true - '@iblai/web-containers@1.14.0': - resolution: {integrity: sha512-RqtcQHHgT4hR3jnj+E5LVXmgQWkatV2fP3Wbgf7u2+sdaXP5KBFNVnWIIdB2cLhRHCrvp/RbS9BBeplU14Nv9g==} + '@iblai/web-containers@1.14.0-applyui-1.2': + resolution: {integrity: sha512-/VdmQ4e3Nu9r3/z6P06rUomIJbvzU5DCAnVg6pu7IZq8Mskr10U+cPNSKSbJAK+O7zVM9SukgeTwl9ySWwf+SA==} engines: {node: 25.3.0} peerDependencies: - '@iblai/data-layer': 1.9.2 + '@iblai/data-layer': 1.9.2-applyui-1.2 '@iblai/iblai-api': 4.166.0-ai - '@iblai/web-utils': 1.11.12 + '@iblai/web-utils': 1.12.1-applyui-1.2 '@livekit/components-react': 2.8.1 '@radix-ui/react-dialog': ^1.1.7 '@reduxjs/toolkit': 2.7.0 @@ -925,8 +925,8 @@ packages: sonner: optional: true - '@iblai/web-utils@1.12.0': - resolution: {integrity: sha512-qXJZgSt3DgbUx9jhujsYOx/Vpn52RgaRr8RYd9hOYHkTfBZNjznHylvqY3xYBprGTuCLyVBnzyHbVnBi4Yez+A==} + '@iblai/web-utils@1.12.1-applyui-1.2': + resolution: {integrity: sha512-3QN31AJV4yCqYcX6UzYxVV071ELpNmVVeJCp8voAS5jzMEodaRjfna570ke440OiFaOY+lJHILGdOLaIY9EHvA==} engines: {node: 25.3.0} peerDependencies: '@iblai/data-layer': ^1.1.2 @@ -9916,7 +9916,7 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@iblai/data-layer@1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0)': + '@iblai/data-layer@1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0)': dependencies: '@iblai/iblai-api': 4.166.0-ai '@reduxjs/toolkit': 2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) @@ -9930,13 +9930,13 @@ snapshots: dependencies: tslib: 2.8.1 - '@iblai/iblai-js@1.25.1(09ad73cc8de68f3b29da137077ebeb71)': + '@iblai/iblai-js@1.25.2-applyui-1.2(09ad73cc8de68f3b29da137077ebeb71)': dependencies: - '@iblai/data-layer': 1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) + '@iblai/data-layer': 1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) '@iblai/iblai-api': 4.166.0-ai - '@iblai/mcp': 1.8.0 - '@iblai/web-containers': 1.14.0(a376d4385c5552c3b69558293701dc09) - '@iblai/web-utils': 1.12.0(@iblai/data-layer@1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + '@iblai/mcp': 1.8.0-applyui-1.2 + '@iblai/web-containers': 1.14.0-applyui-1.2(7a9308d74a3f4d4feeb1459fd6a9d6cb) + '@iblai/web-utils': 1.12.1-applyui-1.2(@iblai/data-layer@1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@radix-ui/react-dialog': 1.1.7(@types/react-dom@19.2.1(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@reduxjs/toolkit': 2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) axios: 1.18.1 @@ -9977,7 +9977,7 @@ snapshots: - supports-color - typescript - '@iblai/mcp@1.8.0': + '@iblai/mcp@1.8.0-applyui-1.2': dependencies: '@modelcontextprotocol/sdk': 1.27.1(zod@4.3.6) zod: 4.3.6 @@ -9985,11 +9985,11 @@ snapshots: - '@cfworker/json-schema' - supports-color - '@iblai/web-containers@1.14.0(a376d4385c5552c3b69558293701dc09)': + '@iblai/web-containers@1.14.0-applyui-1.2(7a9308d74a3f4d4feeb1459fd6a9d6cb)': dependencies: - '@iblai/data-layer': 1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) + '@iblai/data-layer': 1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) '@iblai/iblai-api': 4.166.0-ai - '@iblai/web-utils': 1.12.0(@iblai/data-layer@1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + '@iblai/web-utils': 1.12.1-applyui-1.2(@iblai/data-layer@1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@radix-ui/react-accordion': 1.2.8(@types/react-dom@19.2.1(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-avatar': 1.1.7(@types/react-dom@19.2.1(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-checkbox': 1.2.3(@types/react-dom@19.2.1(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -10073,9 +10073,9 @@ snapshots: - supports-color - vinxi - '@iblai/web-utils@1.12.0(@iblai/data-layer@1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + '@iblai/web-utils@1.12.1-applyui-1.2(@iblai/data-layer@1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': dependencies: - '@iblai/data-layer': 1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) + '@iblai/data-layer': 1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) '@iblai/iblai-api': 4.166.0-ai '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) axios: 1.18.1 diff --git a/providers/index.tsx b/providers/index.tsx index ab911af6..b67a81e6 100644 --- a/providers/index.tsx +++ b/providers/index.tsx @@ -239,9 +239,12 @@ export default function Providers({ children }: { children: React.ReactNode }) { // check. Match the index path only — the project chat route // (/platform//projects//) still needs the mentor check. const isProjectsIndexPage = /\/projects\/?$/.test(pathname); + // The top-level /apply route renders the application wizard and has no mentor in + // its URL, so MentorProvider would otherwise redirect it to a default mentor. + const isApplyPage = /^\/apply(\/|$)/.test(pathname); // Pages that own their mentor context and must not be redirected away when the // URL has no mentorId segment. - const skipMentorCheck = isWorkflowPage || isProjectsIndexPage; + const skipMentorCheck = isWorkflowPage || isProjectsIndexPage || isApplyPage; // Use the same offline check (already computed above) const isTauriOffline = isTauriOfflineEarly; From 448fae11662b801ee80b0731e8341aae49ebb485 Mon Sep 17 00:00:00 2001 From: null-crafter <163591881+null-crafter@users.noreply.github.com> Date: Tue, 21 Jul 2026 16:13:43 +0000 Subject: [PATCH 2/3] chore: fix translations and tests --- components/__tests__/apply-navbar.test.tsx | 50 ++++++++++++++++++++++ components/apply-navbar.tsx | 4 +- messages/en.json | 3 ++ messages/es.json | 3 ++ messages/fr.json | 3 ++ messages/zh.json | 3 ++ 6 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 components/__tests__/apply-navbar.test.tsx diff --git a/components/__tests__/apply-navbar.test.tsx b/components/__tests__/apply-navbar.test.tsx new file mode 100644 index 00000000..37acf561 --- /dev/null +++ b/components/__tests__/apply-navbar.test.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { render, screen, cleanup } from '@testing-library/react'; + +let mockTenant: { key?: string; name?: string; platform_name?: string } | null = { + key: 'acme', + name: 'Acme', + platform_name: 'Acme Academy', +}; + +vi.mock('next/navigation', () => ({ + useRouter: () => ({ push: vi.fn() }), +})); + +vi.mock('@/hooks/use-user', () => ({ + useCurrentTenant: () => ({ currentTenant: mockTenant }), + useIsAdmin: () => false, + useUsername: () => 'tester', +})); + +// Heavy SDK/nav children are exercised elsewhere; stub them here. +vi.mock('@iblai/iblai-js/web-containers', () => ({ + NotificationDropdown: () =>
, +})); + +vi.mock( + '@/app/platform/[tenantKey]/[mentorId]/_components/nav-bar/user-profile', + () => ({ UserProfile: () =>
}), +); + +import { ApplyNavbar } from '../apply-navbar'; + +beforeEach(() => { + mockTenant = { key: 'acme', name: 'Acme', platform_name: 'Acme Academy' }; +}); +afterEach(cleanup); + +describe('ApplyNavbar', () => { + it('shows the tenant name and the translated "Application" label', () => { + render(); + expect(screen.getByText('Acme Academy')).toBeInTheDocument(); + expect(screen.getByText('Application')).toBeInTheDocument(); + }); + + it('falls back to the default brand name when no tenant is present', () => { + mockTenant = null; + render(); + expect(screen.getByText('American Faith Academy')).toBeInTheDocument(); + }); +}); diff --git a/components/apply-navbar.tsx b/components/apply-navbar.tsx index 77ec61c3..4a0ebe55 100644 --- a/components/apply-navbar.tsx +++ b/components/apply-navbar.tsx @@ -1,6 +1,7 @@ 'use client'; import { useRouter } from 'next/navigation'; +import { useTranslations } from 'next-intl'; import { useCallback } from 'react'; import { NotificationDropdown } from '@iblai/iblai-js/web-containers'; @@ -15,6 +16,7 @@ import { useCurrentTenant, useIsAdmin, useUsername } from '@/hooks/use-user'; * URL segments. */ export function ApplyNavbar() { + const t = useTranslations('componentsApplyNavbar'); const router = useRouter(); const username = useUsername(); const isAdmin = useIsAdmin(); @@ -43,7 +45,7 @@ export function ApplyNavbar() { {orgName} - Application + {t('application')}
{/* Right: notification bell + profile dropdown */} diff --git a/messages/en.json b/messages/en.json index 37a051ba..bb526259 100644 --- a/messages/en.json +++ b/messages/en.json @@ -515,6 +515,9 @@ "monthlyRevenue": "Monthly Revenue", "revenueLabel": "Revenue" }, + "componentsApplyNavbar": { + "application": "Application" + }, "componentsChartWithTooltip": { "monthlyPerformance": "Monthly Performance", "valueLabel": "Value" diff --git a/messages/es.json b/messages/es.json index f1d4fbb9..0d73814a 100644 --- a/messages/es.json +++ b/messages/es.json @@ -515,6 +515,9 @@ "monthlyRevenue": "Ingresos mensuales", "revenueLabel": "Ingresos" }, + "componentsApplyNavbar": { + "application": "Solicitud" + }, "componentsChartWithTooltip": { "monthlyPerformance": "Rendimiento mensual", "valueLabel": "Valor" diff --git a/messages/fr.json b/messages/fr.json index 70840261..4fba5151 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -515,6 +515,9 @@ "monthlyRevenue": "Revenus mensuels", "revenueLabel": "Revenus" }, + "componentsApplyNavbar": { + "application": "Candidature" + }, "componentsChartWithTooltip": { "monthlyPerformance": "Performance mensuelle", "valueLabel": "Valeur" diff --git a/messages/zh.json b/messages/zh.json index c98ecaa2..a4d2b7bc 100644 --- a/messages/zh.json +++ b/messages/zh.json @@ -515,6 +515,9 @@ "monthlyRevenue": "月度收入", "revenueLabel": "收入" }, + "componentsApplyNavbar": { + "application": "申请" + }, "componentsChartWithTooltip": { "monthlyPerformance": "月度绩效", "valueLabel": "数值" From ad6068a07ae41adc22ac95b7a54700ede57b656a Mon Sep 17 00:00:00 2001 From: null-crafter <163591881+null-crafter@users.noreply.github.com> Date: Tue, 21 Jul 2026 16:52:55 +0000 Subject: [PATCH 3/3] chore: update deps --- pnpm-lock.yaml | 62 ++++++++++++++++++++++----------------------- pnpm-workspace.yaml | 5 +++- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 74afd9c1..1835335e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,7 +22,7 @@ overrides: fast-uri: '>=3.1.2' ip-address: '>=10.1.1' brace-expansion: '>=5.0.6' - minimatch@^9>brace-expansion: 2.0.3 + minimatch@^9>brace-expansion: '>=2.1.2 <3' postcss: '>=8.5.10' ws: '>=8.20.1' qs: '>=6.15.2' @@ -44,8 +44,8 @@ importers: specifier: 4.166.0-ai version: 4.166.0-ai '@iblai/iblai-js': - specifier: 1.25.2-applyui-1.2 - version: 1.25.2-applyui-1.2(09ad73cc8de68f3b29da137077ebeb71) + specifier: 1.25.2 + version: 1.25.2(09ad73cc8de68f3b29da137077ebeb71) '@iblai/iblai-web-mentor': specifier: 1.3.4 version: 1.3.4(@babel/core@7.29.7)(@types/babel__core@7.20.5)(rollup@4.62.2)(typescript@5.9.3) @@ -857,8 +857,8 @@ packages: react: 19.1.0 react-dom: 19.1.0 - '@iblai/data-layer@1.9.2-applyui-1.2': - resolution: {integrity: sha512-sdqCPQMFIYaYJNgP/EVqZFkSuQ8ENCv2K5jGDj6lSqzmldZOQExrymPFbUn6s4ol0CuYoOXUCtUL92zaMze0cw==} + '@iblai/data-layer@1.9.2': + resolution: {integrity: sha512-z7XNYNb+XoahIhzld9yBVqAnf/WfpUddCAi/5QmJeP6FkYecm/GRKsPx4RwIB9vw2Uk64iJxn1DCcfEc1p3A+g==} engines: {node: 25.3.0} peerDependencies: '@reduxjs/toolkit': 2.7.0 @@ -869,8 +869,8 @@ packages: '@iblai/iblai-api@4.166.0-ai': resolution: {integrity: sha512-dY9Jv+CkXEyTxRsOQFay5YvYe8K2LSQluJJvtssGQV2RbrxPPzONaKfnhcyarDs7Ft35Xqk1fuErjhUwNG3OIg==} - '@iblai/iblai-js@1.25.2-applyui-1.2': - resolution: {integrity: sha512-7Pu2PYvLuq9+ZOBJF1gvmF2WSDSyV13EThkBcodmqrZzSv/vPRax6U+l62fRi1s7OqzG+PungEsOxzyIhqY/Ug==} + '@iblai/iblai-js@1.25.2': + resolution: {integrity: sha512-nFSL7xcuIDp9T7OYHRlOswJlsdgoWSUATAFBuLYSqpbqWDW+iDrW3EZV0iayYH3vCaC5ic3qwr11lDYtUy3DFQ==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: @@ -894,18 +894,18 @@ packages: '@iblai/iblai-web-mentor@1.3.4': resolution: {integrity: sha512-w0K22cQl/LquXDDnVi7DgiOeuS+iha85poZxuLCtJqvwyCxAMLch1DWN3LbNCxw+YGhrV7BOEENp8s7bZ+7ZGw==} - '@iblai/mcp@1.8.0-applyui-1.2': - resolution: {integrity: sha512-UIjyyTrBr/R/klw4X5fGRSch0Vx7xCP1yEOi3pwpzjJu2Fu7j0AT3/d98jEoufatOA5HJA1h8S29jw9Ggp8EIA==} + '@iblai/mcp@1.8.0': + resolution: {integrity: sha512-5B8TbJ2V73F4/l+iNsDgkaKUJqASutH+QVu/DffpdolYZH3peEDmxbwCdK/p4Qaf+Hl0AdVzrm+N5Q9VUyw+AA==} engines: {node: '>=20.0.0'} hasBin: true - '@iblai/web-containers@1.14.0-applyui-1.2': - resolution: {integrity: sha512-/VdmQ4e3Nu9r3/z6P06rUomIJbvzU5DCAnVg6pu7IZq8Mskr10U+cPNSKSbJAK+O7zVM9SukgeTwl9ySWwf+SA==} + '@iblai/web-containers@1.14.0': + resolution: {integrity: sha512-RqtcQHHgT4hR3jnj+E5LVXmgQWkatV2fP3Wbgf7u2+sdaXP5KBFNVnWIIdB2cLhRHCrvp/RbS9BBeplU14Nv9g==} engines: {node: 25.3.0} peerDependencies: - '@iblai/data-layer': 1.9.2-applyui-1.2 + '@iblai/data-layer': 1.9.2 '@iblai/iblai-api': 4.166.0-ai - '@iblai/web-utils': 1.12.1-applyui-1.2 + '@iblai/web-utils': 1.11.12 '@livekit/components-react': 2.8.1 '@radix-ui/react-dialog': ^1.1.7 '@reduxjs/toolkit': 2.7.0 @@ -925,8 +925,8 @@ packages: sonner: optional: true - '@iblai/web-utils@1.12.1-applyui-1.2': - resolution: {integrity: sha512-3QN31AJV4yCqYcX6UzYxVV071ELpNmVVeJCp8voAS5jzMEodaRjfna570ke440OiFaOY+lJHILGdOLaIY9EHvA==} + '@iblai/web-utils@1.12.1': + resolution: {integrity: sha512-71snmynkUlJqN0uBdgVp8TtJpRHKGUjgUHlCQ9oSPw04O++mgJggdiIj61W5Tw5aP0NFs5nsdJv1Rka46eVwsg==} engines: {node: 25.3.0} peerDependencies: '@iblai/data-layer': ^1.1.2 @@ -4943,8 +4943,8 @@ packages: resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==} engines: {node: '>=18'} - brace-expansion@2.0.3: - resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} + brace-expansion@2.1.2: + resolution: {integrity: sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==} brace-expansion@5.0.7: resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} @@ -9916,7 +9916,7 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@iblai/data-layer@1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0)': + '@iblai/data-layer@1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0)': dependencies: '@iblai/iblai-api': 4.166.0-ai '@reduxjs/toolkit': 2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) @@ -9930,13 +9930,13 @@ snapshots: dependencies: tslib: 2.8.1 - '@iblai/iblai-js@1.25.2-applyui-1.2(09ad73cc8de68f3b29da137077ebeb71)': + '@iblai/iblai-js@1.25.2(09ad73cc8de68f3b29da137077ebeb71)': dependencies: - '@iblai/data-layer': 1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) + '@iblai/data-layer': 1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) '@iblai/iblai-api': 4.166.0-ai - '@iblai/mcp': 1.8.0-applyui-1.2 - '@iblai/web-containers': 1.14.0-applyui-1.2(7a9308d74a3f4d4feeb1459fd6a9d6cb) - '@iblai/web-utils': 1.12.1-applyui-1.2(@iblai/data-layer@1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + '@iblai/mcp': 1.8.0 + '@iblai/web-containers': 1.14.0(7a2b4ed299cd2791f88087d325c9df05) + '@iblai/web-utils': 1.12.1(@iblai/data-layer@1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@radix-ui/react-dialog': 1.1.7(@types/react-dom@19.2.1(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@reduxjs/toolkit': 2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) axios: 1.18.1 @@ -9977,7 +9977,7 @@ snapshots: - supports-color - typescript - '@iblai/mcp@1.8.0-applyui-1.2': + '@iblai/mcp@1.8.0': dependencies: '@modelcontextprotocol/sdk': 1.27.1(zod@4.3.6) zod: 4.3.6 @@ -9985,11 +9985,11 @@ snapshots: - '@cfworker/json-schema' - supports-color - '@iblai/web-containers@1.14.0-applyui-1.2(7a9308d74a3f4d4feeb1459fd6a9d6cb)': + '@iblai/web-containers@1.14.0(7a2b4ed299cd2791f88087d325c9df05)': dependencies: - '@iblai/data-layer': 1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) + '@iblai/data-layer': 1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) '@iblai/iblai-api': 4.166.0-ai - '@iblai/web-utils': 1.12.1-applyui-1.2(@iblai/data-layer@1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + '@iblai/web-utils': 1.12.1(@iblai/data-layer@1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@radix-ui/react-accordion': 1.2.8(@types/react-dom@19.2.1(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-avatar': 1.1.7(@types/react-dom@19.2.1(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-checkbox': 1.2.3(@types/react-dom@19.2.1(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -10073,9 +10073,9 @@ snapshots: - supports-color - vinxi - '@iblai/web-utils@1.12.1-applyui-1.2(@iblai/data-layer@1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + '@iblai/web-utils@1.12.1(@iblai/data-layer@1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(@iblai/iblai-api@4.166.0-ai)(@tauri-apps/api@2.11.0)(@tauri-apps/plugin-os@2.3.2)(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(redux@5.0.1)(sonner@2.0.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': dependencies: - '@iblai/data-layer': 1.9.2-applyui-1.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) + '@iblai/data-layer': 1.9.2(@reduxjs/toolkit@2.7.0(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) '@iblai/iblai-api': 4.166.0-ai '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.1.17)(react@19.1.0)(redux@5.0.1))(react@19.1.0) axios: 1.18.1 @@ -13969,7 +13969,7 @@ snapshots: transitivePeerDependencies: - supports-color - brace-expansion@2.0.3: + brace-expansion@2.1.2: dependencies: balanced-match: 1.0.2 @@ -16862,7 +16862,7 @@ snapshots: minimatch@9.0.9: dependencies: - brace-expansion: 2.0.3 + brace-expansion: 2.1.2 minimist@1.2.8: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5ce99f09..e13b7899 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -34,7 +34,10 @@ overrides: fast-uri: '>=3.1.2' ip-address: '>=10.1.1' brace-expansion: '>=5.0.6' - 'minimatch@^9>brace-expansion': '2.0.3' + # Keep minimatch@9 (glob@10 in the vitest coverage tooling) on the CommonJS 2.x + # line — the 5.x major above is incompatible — but at the patched release. + # 2.0.3 was vulnerable to GHSA-3jxr-9vmj-r5cp (ReDoS); >=2.1.2 fixes it. + 'minimatch@^9>brace-expansion': '>=2.1.2 <3' postcss: '>=8.5.10' ws: '>=8.20.1' qs: '>=6.15.2'