From ac3e9c504541736aabe661270429ba5d318615a6 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 4 Feb 2026 09:07:36 +0000 Subject: [PATCH 1/4] feat: replace glassmorphic package and class with tailwind utilities - Removed 'glassmorphic' npm package and CSS import. - Replaced '.glassmorphic' class with Tailwind 'backdrop-blur-md', theme-aware semi-transparent backgrounds, and borders in 'components/search-results-image.tsx'. - Updated nested Card components to be transparent to ensure the glassmorphic effect is visible. - Re-synced 'bun.lock' after removing the dependency. Co-authored-by: ngoiyaeric <115367894+ngoiyaeric@users.noreply.github.com> --- bun.lock | 3 --- components/search-results-image.tsx | 7 +++---- package.json | 1 - 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/bun.lock b/bun.lock index a3de9819..ce2e7dd1 100644 --- a/bun.lock +++ b/bun.lock @@ -55,7 +55,6 @@ "exa-js": "^1.6.13", "framer-motion": "^12.23.24", "geotiff": "^2.1.4-beta.1", - "glassmorphic": "^0.0.3", "katex": "^0.16.22", "lodash": "^4.17.21", "lottie-react": "^2.4.1", @@ -1521,8 +1520,6 @@ "gl-matrix": ["gl-matrix@3.4.4", "", {}, "sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ=="], - "glassmorphic": ["glassmorphic@0.0.3", "", {}, "sha512-sbobZNaKuyup+X450P1brVofyXvl7flXdPGj8UyjvXdT3YXNYTWm3idk/dTcK0YxzhY0igk9t8e1UITP/vNAAw=="], - "glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], diff --git a/components/search-results-image.tsx b/components/search-results-image.tsx index 50229d01..53009ac9 100644 --- a/components/search-results-image.tsx +++ b/components/search-results-image.tsx @@ -21,7 +21,6 @@ import { import { useEffect, useState } from 'react' import { PlusCircle } from 'lucide-react' import { motion } from 'framer-motion' -import 'glassmorphic/glassmorphic.css' interface SearchResultsImageSectionProps { images: string[] @@ -67,12 +66,12 @@ export const SearchResultsImageSection: React.FC< setSelectedIndex(index)} whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} > - + {image ? ( - + Search Images {query} diff --git a/package.json b/package.json index cdf8a7e3..c3df5a38 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,6 @@ "exa-js": "^1.6.13", "framer-motion": "^12.23.24", "geotiff": "^2.1.4-beta.1", - "glassmorphic": "^0.0.3", "katex": "^0.16.22", "lodash": "^4.17.21", "lottie-react": "^2.4.1", From 789e2fb9dbb4b14690346882b5c676bdda722b36 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 4 Feb 2026 09:20:33 +0000 Subject: [PATCH 2/4] feat: replace glassmorphic package and class with tailwind utilities (synced with main) - Removed 'glassmorphic' npm package and CSS import. - Replaced '.glassmorphic' class with Tailwind 'backdrop-blur-md', theme-aware semi-transparent backgrounds, and borders in 'components/search-results-image.tsx'. - Updated nested Card components to be transparent to ensure the glassmorphic effect is visible. - Re-synced 'bun.lock' after removing the dependency. - Merged latest changes from origin/main. Co-authored-by: ngoiyaeric <115367894+ngoiyaeric@users.noreply.github.com> --- CC BY-NC 4.0.docx | Bin 0 -> 11099 bytes app/actions.tsx | 14 +-- app/layout.tsx | 52 ++++++----- components/chat-panel.tsx | 2 +- components/chat.tsx | 7 +- components/conditional-lottie.tsx | 4 +- components/header-search-button.tsx | 1 - components/header.tsx | 55 ++++++++---- components/history-sidebar.tsx | 35 ++++++++ components/history-toggle-context.tsx | 30 +++++++ components/history.tsx | 52 +++-------- components/map/mapbox-map.tsx | 38 ++++++-- components/mobile-icons-bar.tsx | 2 +- components/profile-toggle-context.tsx | 7 +- components/profile-toggle.tsx | 18 ++-- components/purchase-credits-popup.tsx | 73 ++++++++++++++++ components/sidebar/chat-history-client.tsx | 39 ++++++++- components/usage-toggle-context.tsx | 30 +++++++ components/usage-view.tsx | 96 +++++++++++++++++++++ tests/map.spec.ts | 5 ++ 20 files changed, 456 insertions(+), 104 deletions(-) create mode 100644 CC BY-NC 4.0.docx create mode 100644 components/history-sidebar.tsx create mode 100644 components/history-toggle-context.tsx create mode 100644 components/purchase-credits-popup.tsx create mode 100644 components/usage-toggle-context.tsx create mode 100644 components/usage-view.tsx diff --git a/CC BY-NC 4.0.docx b/CC BY-NC 4.0.docx new file mode 100644 index 0000000000000000000000000000000000000000..0d8f7d559328446c99bded42597b2e03fbd0f6c4 GIT binary patch literal 11099 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 Z{l5XJBnt)o&nvJWJNO6FqSXIf{U0 { } break case 'assistant': - const answer = createStreamableValue() - answer.done(content) + const answer = createStreamableValue(content as string) + answer.done(content as string) switch (type) { case 'response': return { @@ -682,7 +682,9 @@ export const getUIStateFromAIState = (aiState: AIState): UIState => { ) } case 'related': - const relatedQueries = createStreamableValue() + const relatedQueries = createStreamableValue({ + items: [] + }) relatedQueries.done(JSON.parse(content as string)) return { id, @@ -721,7 +723,7 @@ export const getUIStateFromAIState = (aiState: AIState): UIState => { case 'tool': try { const toolOutput = JSON.parse(content as string) - const isCollapsed = createStreamableValue() + const isCollapsed = createStreamableValue(true) isCollapsed.done(true) if ( @@ -735,7 +737,9 @@ export const getUIStateFromAIState = (aiState: AIState): UIState => { } } - const searchResults = createStreamableValue() + const searchResults = createStreamableValue( + JSON.stringify(toolOutput) + ) searchResults.done(JSON.stringify(toolOutput)) switch (name) { case 'search': diff --git a/app/layout.tsx b/app/layout.tsx index a092d4fe..bddadc19 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -12,7 +12,10 @@ import { SpeedInsights } from "@vercel/speed-insights/next" import { Toaster } from '@/components/ui/sonner' import { MapToggleProvider } from '@/components/map-toggle-context' import { ProfileToggleProvider } from '@/components/profile-toggle-context' +import { UsageToggleProvider } from '@/components/usage-toggle-context' import { CalendarToggleProvider } from '@/components/calendar-toggle-context' +import { HistoryToggleProvider } from '@/components/history-toggle-context' +import { HistorySidebar } from '@/components/history-sidebar' import { MapLoadingProvider } from '@/components/map-loading-context'; import ConditionalLottie from '@/components/conditional-lottie'; import { MapProvider as MapContextProvider } from '@/components/map/map-context' @@ -70,28 +73,33 @@ export default function RootLayout({ )} > - - - - - -
- - {children} - -