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 (
+
+ );
+}
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'