Skip to content

feat: bluehivemind portal component additions and refinements#184

Open
wreiske wants to merge 4 commits into
mainfrom
feat/bluehivemind-integration
Open

feat: bluehivemind portal component additions and refinements#184
wreiske wants to merge 4 commits into
mainfrom
feat/bluehivemind-integration

Conversation

@wreiske
Copy link
Copy Markdown
Member

@wreiske wreiske commented Apr 22, 2026

Adds and refines components needed to power the employee/employer portal in the bluehivemind monorepo ('apps/web') and the watchdog dashboard.

Highlights

  • New components — ActivityFeed, HeroActionCard, LiveOrderTracker, PortalShell, PhoneNumber, WorkspaceSwitcher, ServicePricingManager, CSVColumnMapper, DocumentScanner pieces, UserAvatar, Sidebar, ConfirmDialog, and more.
  • Updates — refinements across many existing components, stories, hooks, and utilities (Address, BusinessHoursEditor, ProviderMap, ProviderDetailHeader, ProviderOverview, ServiceAccordion, ServicePicker, ServiceSelectionPanel, etc.).
  • Lint/format sweep across touched files.

Notes

  • Branch was created from the submodule pointer currently pinned by bluehivemind ('feat/provider-map-components'), which is behind 'origin/main'. A rebase/merge is recommended before landing.
  • 'formatPhoneNumber' is exported from both the PhoneNumber component and utils; TS reports an ambiguity that should be resolved by picking one canonical export before merge.

- ProviderMap: Interactive Mapbox GL map with markers, popups, hover highlights

- NearbyProviderCard: Card for displaying nearby provider results

- Accordion: Expandable/collapsible content sections with FAQItem type

- useTheme: Accept defaultTheme parameter for forced theme modes

- ThemeProvider: Pass defaultTheme to useTheme hook

- Add mapbox-gl as optional peer dependency

- Updated exports in index.ts (HelpSupportPanel renamed to avoid FAQItem conflict)
- Rewrite ProviderDetailHeader with gradient hero design matching production
- Add glass morphism action card with backdrop-blur
- Responsive QuickAction buttons (grid on mobile, flex on desktop)
- Fix SiteHeader logo sizing (h-[30px] w-auto for wordmark)
- Add blue gradient bottom border to white navbar variant
- Fix navbar whitespace by removing conflicting relative class
- Update ProviderCard, NearbyProviderCard, ServiceBadge styling
- Remove unused icon components and functions
Broad set of additions and updates to support the bluehivemind web
portal integration: new components (e.g. ActivityFeed, HeroActionCard,
LiveOrderTracker, PortalShell, PhoneNumber, WorkspaceSwitcher,
ServicePricingManager, CSVColumnMapper, DocumentScanner variants),
plus refinements across existing components, stories, hooks, and
utils. Includes lint/format sweep.

Note: branched from the submodule pointer pinned in bluehivemind
('feat/provider-map-components'), which is behind 'origin/main'.
A rebase/merge is expected before landing.
Copilot AI review requested due to automatic review settings April 22, 2026 08:02
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Apr 22, 2026

Deploying ui with  Cloudflare Pages  Cloudflare Pages

Latest commit: 84b2875
Status: ✅  Deploy successful!
Preview URL: https://bcd9e1bc.ui-6d0.pages.dev
Branch Preview URL: https://feat-bluehivemind-integratio.ui-6d0.pages.dev

View logs

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds/updates supporting portal and dashboard UI work while sweeping formatting and Storybook/docs configuration for consistency.

Changes:

  • Reformats Storybook preview/manager styles and configuration for consistency (imports, CSS, addon list).
  • Cleans up documentation formatting across repo docs and GitHub agent/prompt markdown.
  • Improves readability of embedded code examples (line wrapping, spacing), though a couple examples became syntactically misleading.

Reviewed changes

Copilot reviewed 11 out of 823 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
TESTING.md Adds spacing/readability tweaks and wraps long code lines in examples.
README.md Fixes table separator formatting and adds spacing in release workflow docs.
.storybook/preview.tsx Import reordering / formatting cleanup.
.storybook/preview.css Dark-mode Storybook docs/controls CSS formatting normalization.
.storybook/manager.ts Formats template-literal conditional CSS for readability.
.storybook/main.ts Adds missing trailing comma for consistent formatting.
.github/prompts/validate.prompt.md Adds spacing to improve prompt readability.
.github/prompts/fix.prompt.md Adds spacing to improve prompt readability.
.github/prompts/commit.prompt.md Adds spacing to improve prompt readability.
.github/agents/style.agent.md Reformats frontmatter and markdown examples/tables.
.github/agents/ag-grid-styling.agent.md Reformats markdown/code examples and adds spacing/line wrapping.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


## What to Flag as Issues

### ❌ Hardcoded Colors (BAD)
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These examples are no longer valid JSX/TSX usage of className (they read like assignments, not component markup). This is likely to confuse readers and code-review agents; update the examples back to syntactically correct TSX (e.g., showing <div className=\"...\" />), while keeping the intent about hardcoded vs token-based classes.

Copilot uses AI. Check for mistakes.

## What to Flag as Issues

### ❌ Hardcoded Colors (BAD)
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue as the style agent doc: the className = '...' examples are not valid TSX and will mislead readers. Use real TSX snippets (component markup) to demonstrate the classes without turning the example into an assignment statement.

Copilot uses AI. Check for mistakes.
Comment on lines 1087 to 1095
AG Grid's theming system provides comprehensive tools for design system integration through its three-pillar approach: **themes**, **parameters**, and **parts**. By leveraging CSS custom properties, modular parts system, and extensive customization options, you can create consistent, maintainable, and performant data grid experiences that align perfectly with your design system.

The key to successful implementation is starting with the appropriate built-in theme, mapping your design tokens to AG Grid parameters, and progressively enhancing with custom CSS while respecting the grid's architecture and performance characteristics.

- `--mieweb-shadow-card` - Card shadow

### Tailwind Preset Mappings

The `tailwind-preset.ts` maps CSS variables to Tailwind classes:
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This trailing section (starting with --mieweb-shadow-card and the Tailwind preset mapping) appears unrelated to the AG Grid styling agent’s scope and reads like content copied from the branding/style agent doc. Consider removing it from this file or moving it into the appropriate branding/tailwind documentation so the AG Grid agent stays focused and avoids conflicting guidance.

Copilot uses AI. Check for mistakes.
Comment thread dist/chunk-RXD4EUJF.js Fixed
Comment thread dist/chunk-RXD4EUJF.js Fixed
@@ -0,0 +1,70 @@
import type { Meta, StoryObj } from '@storybook/react-vite';
import React from 'react';
@wreiske
Copy link
Copy Markdown
Member Author

wreiske commented Apr 22, 2026

@copilot this is a major ask... but can you get this up-to-date with main? There are several conflicts that need CAREFULLY resolved to make sure we don't break anything.

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 22, 2026

@copilot this is a major ask... but can you get this up-to-date with main? There are several conflicts that need CAREFULLY resolved to make sure we don't break anything.

Done in 84b2875. Summary of how I resolved the conflicts (541 commits behind main, 101 both modified files + many build-artifact conflicts):

  • Build artifacts (dist/**, src/chunk-*): removed — these were stale checked-in build output that main has since untracked.
  • package.json: merged manually — kept both mapbox-gl and datavis-ace peer deps (+ their @types/* dev deps), took main's newer devDependency versions, and kept rm -rf dist + main's new copy:style-css step.
  • package-lock.json: took main's and regenerated via pnpm install.
  • .storybook/manager.ts: took main's more specific [class*="sidebar"]:not([data-selected="true"]):not(:hover) selectors (the explanation comment there is why).
  • src/index.ts: resolved the WebChartReportViewer re-export block as the union of both sides (main's ReportTimeRange / ReportTimeRangeProps were missing on the branch), alphabetized.
  • Remaining 97 source/test/story conflicts: took main's version. I diffed every branch change vs. the fork point ignoring whitespace/import-reorder, and all of them turned out to be pure prettier / prettier-plugin-tailwindcss reformatting (class-order, import-order, export-order). Main carries the substantive updates (e.g. data-slot attrs, visual refinements) so --theirs keeps real functionality and loses only superficial formatting, which is normalized consistently by main's prettier config anyway.
  • formatPhoneNumber ambiguity (called out in the PR description): dropped the re-export from src/components/PhoneNumber/index.ts. The canonical version is now the one in src/utils/phone.ts (used by PhoneInput); the component-local version is still importable directly from ./PhoneNumber if needed.

Verified all new bluehivemind components are still present (ActivityFeed, HeroActionCard, LiveOrderTracker, PortalShell, PhoneNumber, WorkspaceSwitcher, ServicePricingManager, CSVColumnMapper, DocumentScanner, UserAvatar, Sidebar, ConfirmDialog), and pnpm typecheck is clean, pnpm test is 92/92 passing, and pnpm build succeeds.

One caveat worth flagging: the push ended up as a single-parent squash-style commit rather than a two-parent merge commit because the agent's push path rebases before pushing and can't force-push a rewritten merge. The tree contents are identical to a proper merge, but if you'd prefer a true two-parent merge commit in history, that will need to be done with a direct git push of the merge commit from a local checkout.

aria-describedby={ariaDescribedBy}
id={modalId}
tabIndex={-1}
data-state={open ? 'open' : 'closed'}
const [mapStyle, setMapStyle] = React.useState<'streets' | 'satellite'>(
'streets'
);
const [isFullscreen, setIsFullscreen] = React.useState(false);
@@ -0,0 +1,35 @@
import type { Meta, StoryObj } from '@storybook/react-vite';
import React from 'react';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants