Skip to content

feat: bluehivemind portal component additions and refinements - #184

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

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

Conversation

@wreiske

@wreiske wreiske commented Apr 22, 2026

Copy link
Copy Markdown
Member

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.

Merge with main

  • The branch has been brought up to date with origin/main (796 commits) as a true two-parent merge commit. 167 conflicts were resolved: all 12 branch-only components are preserved and exported, while shared infra and existing components/stories/tests take main's canonical version (branch-side changes to those were pure prettier/import-order reformatting). mapbox-gl peer/dev deps were re-added for ProviderMap, and integration breakages surfaced by tsc were fixed (ProviderSearchFilters export alignment; keeping the branch's ThemeProvider + useTheme(defaultTheme) pair).
  • The formatPhoneNumber ambiguity has been resolved: the canonical version lives in src/utils/phone.ts (used by PhoneInput); the component-local version remains importable directly from ./PhoneNumber.

Notes

  • Validation after the merge: pnpm typecheck clean, pnpm test 196/196 passing, pnpm build succeeds.
  • pnpm lint reports 17 errors, all in the new branch-only components (e.g. browser-global no-undef for alert/ImageData/ResizeObserver, a few exhaustive-deps). These are unchanged from the pre-merge branch tip — the merge introduced none — but they need a cleanup pass before CI lint is green.

- 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 lite review requested due to automatic review settings April 22, 2026 08:02
@cloudflare-workers-and-pages

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

Copy link
Copy Markdown

Deploying ui with  Cloudflare Pages  Cloudflare Pages

Latest commit: 5134a89
Status: ✅  Deploy successful!
Preview URL: https://b20f37a5.ui-6d0.pages.dev
Branch Preview URL: https://feat-bluehivemind-integratio.ui-6d0.pages.dev

View logs

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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)

Copilot AI Apr 22, 2026

Copy link

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)

Copilot AI Apr 22, 2026

Copy link

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:

Copilot AI Apr 22, 2026

Copy link

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
Comment thread src/components/ActivityFeed/ActivityFeed.stories.tsx Fixed
@wreiske

wreiske commented Apr 22, 2026

Copy link
Copy Markdown
Member Author

@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.

Copilot AI commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

@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.

Comment thread src/components/Modal/Modal.tsx Fixed
Comment thread src/components/ProviderMap/ProviderMap.tsx Fixed
Comment thread src/components/WorkspaceSwitcher/WorkspaceSwitcher.stories.tsx Fixed
SidebarNavItem.handleClick now calls preventDefault() on plain left-clicks
so client-side router navigation is used instead of a full document load,
while still honoring modifier/middle clicks for new tabs.
Copilot AI review requested due to automatic review settings June 4, 2026 19:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Keeps the icon chip from shrinking (shrink-0), top-aligns the icon with the title (items-start), lets cards fill equal height in a grid (h-full), prevents long content from overflowing (min-w-0), and tightens the description spacing/line-height.
@wreiske

wreiske commented Jun 9, 2026

Copy link
Copy Markdown
Member Author

@copilot resolve the merge conflicts in this pull request

…egration

# Conflicts:
#	.github/workflows/ci.yml
#	.github/workflows/release.yml
#	.gitmodules
#	.storybook/main.ts
#	.storybook/preview.tsx
#	.storybook/public/enterprise-health/logo-dm.svg
#	.storybook/public/enterprise-health/logo-lm.svg
#	.storybook/public/waggleline/icon.svg
#	.storybook/public/waggleline/logo-dm.svg
#	.storybook/public/webchart/icon.svg
#	.storybook/public/webchart/logo-dm.svg
#	.storybook/public/webchart/logo-lm.svg
#	lessons/README.md
#	package-lock.json
#	package.json
#	pnpm-lock.yaml
#	src/Branding.mdx
#	src/Introduction.mdx
#	src/brands/bluehive.css
#	src/brands/logos/enterprise-health/logo-dm.svg
#	src/brands/logos/enterprise-health/logo-lm.svg
#	src/brands/logos/waggleline/icon.svg
#	src/brands/logos/waggleline/logo-dm.svg
#	src/brands/logos/webchart/icon.svg
#	src/brands/logos/webchart/logo-dm.svg
#	src/brands/logos/webchart/logo-lm.svg
#	src/brands/mieweb.css
#	src/brands/ozwell.css
#	src/brands/ozwell.ts
#	src/brands/webchart.css
#	src/components/AGGrid/CellRenderers.tsx
#	src/components/AGGrid/brand-theme-utils.ts
#	src/components/AI/AI.stories.tsx
#	src/components/AI/AIChat.tsx
#	src/components/AI/AIMessage.tsx
#	src/components/AI/MCPToolCall.tsx
#	src/components/Address/Address.tsx
#	src/components/Alert/Alert.stories.tsx
#	src/components/AppHeader/AppHeader.stories.tsx
#	src/components/AppHeader/AppHeader.tsx
#	src/components/AudioPlayer/AudioPlayer.stories.tsx
#	src/components/AudioPlayer/AudioPlayer.tsx
#	src/components/AudioRecorder/AudioRecorder.stories.tsx
#	src/components/AudioRecorder/AudioRecorder.tsx
#	src/components/AuthDialog/AuthDialog.stories.tsx
#	src/components/AuthDialog/AuthDialog.tsx
#	src/components/BookingDialog/BookingDialog.tsx
#	src/components/Breadcrumb/Breadcrumb.stories.tsx
#	src/components/BusinessHours/BusinessHours.tsx
#	src/components/BusinessHoursEditor/BusinessHoursEditor.tsx
#	src/components/CSVColumnMapper/CSVColumnMapper.tsx
#	src/components/Card/index.ts
#	src/components/Checkbox/Checkbox.tsx
#	src/components/CheckrIntegration/CheckrIntegration.tsx
#	src/components/ClaimProviderForm/ClaimProviderForm.tsx
#	src/components/Colors/Colors.stories.tsx
#	src/components/CommandPalette/CommandPalette.stories.tsx
#	src/components/CommandPalette/CommandPalette.tsx
#	src/components/ConnectionStatus/ConnectionStatus.tsx
#	src/components/CookieConsent/CookieConsent.tsx
#	src/components/CountBadge/CountBadge.tsx
#	src/components/CountryCodeDropdown/CountryCodeDropdown.tsx
#	src/components/CreateInvoiceModal/CreateInvoiceModal.tsx
#	src/components/CreateReferralModal/CreateReferralModal.tsx
#	src/components/Dashboard/Dashboard.stories.tsx
#	src/components/Dashboard/DashboardWidgets.stories.tsx
#	src/components/DashboardWidget/DashboardWidget.tsx
#	src/components/DataVisNITRO/DataVisNITRO.stories.tsx
#	src/components/DateInput/DateInput.tsx
#	src/components/DateRangePicker/DateRangePicker.tsx
#	src/components/DateRangePicker/index.ts
#	src/components/DocumentScanner/DocumentScanner.tsx
#	src/components/DocumentScanner/DropZone.tsx
#	src/components/Dropdown/Dropdown.tsx
#	src/components/EmployeeForm/EmployeeForm.tsx
#	src/components/EmployeeProfile/EmployeeProfile.tsx
#	src/components/EmployerList/EmployerList.tsx
#	src/components/EmployerPricingCard/EmployerPricingCard.tsx
#	src/components/EmployerServiceModal/EmployerServiceModal.tsx
#	src/components/EmployerView/EmployerView.tsx
#	src/components/ErrorPage/ErrorPage.tsx
#	src/components/FileManager/FileManager.tsx
#	src/components/HRISProviderSelector/HRISProviderSelector.tsx
#	src/components/Icons/Icons.stories.tsx
#	src/components/Input/Input.tsx
#	src/components/InventoryManager/InventoryManager.tsx
#	src/components/InvoiceList/InvoiceList.tsx
#	src/components/InvoicePaymentPage/InvoicePaymentPage.tsx
#	src/components/InvoiceView/InvoiceView.tsx
#	src/components/LanguageSelector/LanguageSelector.tsx
#	src/components/LoadingPage/LoadingPage.tsx
#	src/components/Messaging/AttachmentPicker.tsx
#	src/components/Messaging/ConversationHeader.tsx
#	src/components/Messaging/MessageBubble.tsx
#	src/components/Messaging/MessageComposer.tsx
#	src/components/Messaging/MessageList.tsx
#	src/components/NotificationCenter/NotificationCenter.tsx
#	src/components/OnboardingWizard/OnboardingWizard.tsx
#	src/components/OrderCard/OrderCard.tsx
#	src/components/OrderConfirmationWizard/OrderConfirmationWizard.tsx
#	src/components/OrderList/OrderList.tsx
#	src/components/OrderLookupForm/OrderLookupForm.tsx
#	src/components/OrderSidebar/OrderSidebar.tsx
#	src/components/PageHeader/PageHeader.tsx
#	src/components/Pagination/Pagination.stories.tsx
#	src/components/PatientHeader/PatientHeader.tsx
#	src/components/PaymentHistoryTable/PaymentHistoryTable.tsx
#	src/components/PaymentMethod/PaymentMethod.tsx
#	src/components/PendingClaimsTable/PendingClaimsTable.tsx
#	src/components/PermissionsEditor/PermissionsEditor.stories.tsx
#	src/components/PermissionsEditor/PermissionsEditor.tsx
#	src/components/PhoneInput/PhoneInput.tsx
#	src/components/ProductVersion/ProductVersion.tsx
#	src/components/Progress/Progress.tsx
#	src/components/ProviderCard/ProviderCard.tsx
#	src/components/ProviderDetailHeader/ProviderDetailHeader.stories.tsx
#	src/components/ProviderDetailHeader/ProviderDetailHeader.tsx
#	src/components/ProviderOverview/ProviderOverview.tsx
#	src/components/ProviderSearchFilters/ProviderSearchFilters.tsx
#	src/components/ProviderSelector/ProviderSelector.tsx
#	src/components/ProviderSettings/ProviderSettings.tsx
#	src/components/QuickAction/QuickAction.tsx
#	src/components/QuickLinksCard/QuickLinksCard.tsx
#	src/components/Radio/Radio.tsx
#	src/components/RecurringServiceCard/RecurringServiceCard.tsx
#	src/components/RejectionModal/RejectionModal.tsx
#	src/components/ReportDashboard/ReportDashboard.tsx
#	src/components/ResultsEntryForm/ResultsEntryForm.tsx
#	src/components/SSOConfigForm/SSOConfigForm.tsx
#	src/components/ScheduleCalendar/ScheduleCalendar.tsx
#	src/components/SchedulePicker/SchedulePicker.tsx
#	src/components/Select/Select.stories.tsx
#	src/components/Select/Select.tsx
#	src/components/ServiceAccordion/ServiceAccordion.stories.tsx
#	src/components/ServiceAccordion/ServiceAccordion.tsx
#	src/components/ServiceCard/ServiceCard.tsx
#	src/components/ServiceGeneralSettings/ServiceGeneralSettings.tsx
#	src/components/ServiceGrid/ServiceGrid.tsx
#	src/components/ServicePicker/ServicePicker.tsx
#	src/components/ServicePricingManager/ServicePricingManager.tsx
#	src/components/ServiceShippingSettings/ServiceShippingSettings.tsx
#	src/components/SetupServiceModal/SetupServiceModal.tsx
#	src/components/Sidebar/Sidebar.stories.tsx
#	src/components/Sidebar/Sidebar.tsx
#	src/components/SiteFooter/SiteFooter.stories.tsx
#	src/components/SiteFooter/SiteFooter.tsx
#	src/components/SiteHeader/SiteHeader.stories.tsx
#	src/components/SiteHeader/SiteHeader.tsx
#	src/components/Slider/Slider.stories.tsx
#	src/components/Slider/Slider.tsx
#	src/components/StepIndicator/StepIndicator.tsx
#	src/components/TableOfContents/TableOfContents.tsx
#	src/components/Textarea/Textarea.tsx
#	src/components/Timeline/Timeline.stories.tsx
#	src/components/Timeline/Timeline.tsx
#	src/components/Toast/Toast.stories.tsx
#	src/components/Toast/Toast.tsx
#	src/components/VisuallyHidden/VisuallyHidden.stories.tsx
#	src/components/WebsiteInput/WebsiteInput.tsx
#	src/index.ts
#	src/styles/base.css
#	src/styles/condensed-view.css
#	src/styles/init.css
#	src/tailwind-preset.ts
#	src/utils/index.ts
#	tsup.config.ts
#	vitest.config.ts
Copilot AI review requested due to automatic review settings June 9, 2026 07:30
@wreiske
wreiske removed the request for review from Copilot June 9, 2026 07:30

Copilot AI commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Resolved in 9101c02 — a true two-parent merge of origin/main (796 commits) into this branch.

How conflicts were resolved (167 total: 136 both-modified, 30 added-by-both, 1 delete):

  • All 12 branch-only components preserved & exported — Accordion, ActivityFeed, ConfirmDialog, HeroActionCard, LiveOrderTracker, NearbyProviderCard, PhoneNumber, PortalShell, ProviderMap, StatCard, UserAvatar, WorkspaceSwitcher (verified present in dist).
  • Shared infra → main's canonical version, then branch-unique pieces layered back in: src/index.ts (took main's barrel + re-inserted the 12 component exports, with HelpSupportPanel's FAQItem aliased to avoid the Accordion collision); package.json (took main v0.6.1 + added mapbox-gl peer/dev deps for ProviderMap); tailwind-preset, utils, tsup/vitest/storybook config, .gitmodules (main is a strict superset of each).
  • Existing components/stories/tests → main's version — diffed every branch change vs. the fork point and they were pure prettier/import-order reformatting; main carries the substantive evolution.
  • Integration fixes caught by typecheck: aligned ProviderSearchFilters/index.ts to main (branch re-exported a removed LocationSuggestion); kept the branch's ThemeProvider + useTheme(defaultTheme) pair together (main's useTheme() is 0-arg and would break the provider); AddressForm/Dropdown/ProviderSearchFilters stories taken from main.
  • src/components/AI/AI.stories.tsx — accepted main's deletion.

Validation: pnpm typecheck clean · pnpm test 196/196 · pnpm build succeeds.

One heads-up: pnpm lint reports 17 errors, all in the new branch-only components (e.g. browser-global no-undef for alert/ImageData/ResizeObserver, a few exhaustive-deps). These are byte-identical to the pre-merge branch tip — the merge introduced zero new lint errors — but they'll need a cleanup pass before CI lint is green.

Copilot AI review requested due to automatic review settings June 19, 2026 17:37
Comment thread src/components/ActivityFeed/ActivityFeed.stories.tsx Fixed
Comment thread src/components/ProviderMap/ProviderMap.tsx Fixed
Comment thread src/components/WorkspaceSwitcher/WorkspaceSwitcher.stories.tsx Fixed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 292 out of 294 changed files in this pull request and generated 11 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

Comment thread src/hooks/useTheme.ts
Comment on lines 59 to 63
useEffect(() => {
const stored = getStoredTheme();
setThemeState(stored);
const initial = stored ?? defaultTheme;
setThemeState(initial);

Comment on lines +132 to +138
// Reset state whenever the dialog is reopened or the default changes.
React.useEffect(() => {
if (open) {
setMessage(fieldOpts?.defaultValue ?? '');
setValidationError(null);
}
}, [open]);
Comment on lines 111 to 115
// Cleanup preview URLs on unmount
React.useEffect(() => {
return () => {
files.forEach((f) => URL.revokeObjectURL(f.previewUrl));
};
});
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [open, permission]);
detection.stopDetection();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isReady, autoDetectEnabled, capturedFile]);
Comment thread src/components/Accordion/Accordion.tsx Outdated
Comment on lines +219 to +224
<button
type="button"
onClick={() => toggleItem(itemId)}
aria-expanded={isExpanded}
aria-controls={`accordion-content-${itemId}`}
className={cn(accordionTriggerVariants({ size, variant }), className)}
Comment thread src/components/Accordion/Accordion.tsx Outdated
Comment on lines +278 to +287
React.useEffect(() => {
if (!contentRef.current) return;
const resizeObserver = new ResizeObserver(() => {
if (isExpanded) {
setHeight(contentRef.current?.scrollHeight);
}
});
resizeObserver.observe(contentRef.current);
return () => resizeObserver.disconnect();
}, [isExpanded]);
Comment thread src/components/PhoneNumber/PhoneNumber.stories.tsx
Comment thread src/components/StatCard/StatCard.stories.tsx Outdated
Comment thread eslint.config.js
Comment on lines 2 to 6
import tseslint from '@typescript-eslint/eslint-plugin';
import tsparser from '@typescript-eslint/parser';
import jsxA11yPlugin from 'eslint-plugin-jsx-a11y';
import reactPlugin from 'eslint-plugin-react';
import reactHooksPlugin from 'eslint-plugin-react-hooks';
Copilot AI review requested due to automatic review settings June 22, 2026 20:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

wreiske added 2 commits June 24, 2026 14:06
Pre-fill the service form from defaultValues when the modal opens (edit mode) and reset to a blank form on close. defaultValues is intentionally excluded from the effect deps so the form isn't reset on every parent re-render.
Wires the existing useReadReceipts IntersectionObserver hook into
MessageList via an optional onReadReceipt prop (plus a configurable
readReceiptThreshold), so consumers can send read receipts as unread
incoming messages scroll into view. Message bubbles already render the
sent/delivered/read indicators from message.status.

Also includes UserBadge component and SchedulePicker refinements.
Copilot AI review requested due to automatic review settings July 6, 2026 18:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Copilot AI review requested due to automatic review settings July 10, 2026 00:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Copilot AI review requested due to automatic review settings July 14, 2026 07:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Renders a small label next to the service name (e.g. "Questionnaire" for
alwaysAvailable services in the portal order wizard). Story updated with a
badged example.
Copilot AI review requested due to automatic review settings August 25, 2026 17:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 300 out of 315 changed files in this pull request and generated 3 comments.

Comment thread src/index.ts Outdated
export * from './components/HelpSupportPanel';
// HelpSupportPanel exports FAQItem which conflicts with Accordion
export {
type FAQItem as HelpFAQItem,

/* eslint-disable no-undef */
import { describe, it, expect } from 'vitest';
import { describe, expect, it } from 'vitest';
Comment on lines +23 to +27
brand: [
'bg-gradient-brand text-white shadow-glow',
'hover:-translate-y-0.5 hover:shadow-glow-hover',
'active:translate-y-0 active:shadow-glow',
],
Runs on blur and again on submit; an error message from the callback shows
inline under Postal Code and blocks saving (network failures never block).
Lets host apps plug in a ZIP dataset check (employer #2152) without forking
the form. Adds postalCode/checkingPostalCode labels and a story.
Copilot AI review requested due to automatic review settings September 3, 2026 15:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 300 out of 317 changed files in this pull request and generated no new comments.

Suppressed comments (4)

src/components/DocumentScanner/WebcamModal.tsx:302

  • This effect calls detection.startDetection() / detection.stopDetection() but those dependencies are not declared, and the prior react-hooks/exhaustive-deps suppression was removed. This is likely to trigger lint errors (and can lead to stale behavior if the detection callbacks ever change).
    src/components/DocumentScanner/useDocumentDetection.test.ts:7
  • Removing the no-undef suppression here can cause ESLint failures because this test file references DOM globals like ImageData and Uint8ClampedArray without declaring them. Either declare them as globals for this file or restore the prior suppression.
    src/components/Button/Button.tsx:27
  • The new brand variant introduces new Tailwind class strings (bg-gradient-brand, shadow-glow, shadow-glow-hover, etc.). For Tailwind CSS 3 consumers who don’t scan node_modules, these should be added to miewebUISafelist (see src/tailwind-preset.ts safelist guidance) so the styles aren’t purged.
    src/components/DocumentScanner/WebcamModal.tsx:293
  • The “Start camera and detection when modal opens” effect uses startCamera, stopCamera, and detection.stopDetection() but its dependency list is only [open, permission], and the prior react-hooks/exhaustive-deps suppression was removed. This is likely to reintroduce lint failures and makes correctness depend on those functions never changing.

Conflicts resolved:
- src/index.ts, package.json: union of both sides (mapbox-gl peer/dev dep kept,
  katex from main); FAQItem alias dropped because main's Accordion replaces
  the branch's FAQ accordion (unused by consumers).
- Accordion/*: main's reviewed implementation wins.
- *_/index.ts, cn.ts, useClickOutside.ts, AGGrid/Radio stories: main's
  versions (branch side was alphabetised re-exports only).
- pnpm-lock.yaml regenerated (adds mapbox-gl).
- DocumentScanner/*: restore main's files (the branch had only re-sorted imports
  and lost the eslint-disable directives in the process).
- ProviderMap: drop unused fullscreen state/listener, use the address in the
  static-map title, document the intentional mapStyle omission.
- ConfirmDialog: reset on default-message changes too (exhaustive-deps).
- useTheme: document the mount-only default read.
- Stories: window.alert, drop unused React imports.
Copilot AI review requested due to automatic review settings September 3, 2026 20:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 290 out of 292 changed files in this pull request and generated 4 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file
Suppressed comments (1)

src/components/Button/Button.tsx:28

  • The new brand variant uses bg-gradient-brand and shadow-glow* utilities, but these don’t appear to be provided by the Tailwind preset (e.g. theme.extend.backgroundImage / theme.extend.boxShadow) or added to miewebUISafelist for Tailwind 3 consumers. As-is, Tailwind 3 consumers (and any setup relying on the preset) will likely ship without the intended gradient/shadow styling.

Comment on lines +10 to +13
variant: {
/** Brand gradient fill with a soft glow — for hero / auth moments */
gradient: 'bg-gradient-brand text-white shadow-glow',
/** Solid brand fill */
Comment on lines +468 to +472
// Read receipts — observe unread incoming messages as they scroll into view.
const { observeMessage } = useReadReceipts({
messages,
currentUserId: currentUser.id,
onMarkRead: onReadReceipt,
Comment thread src/styles/base.css
Comment on lines +474 to +484
/* ============================================
Brand Gradient Utilities
============================================ */

@utility bg-gradient-brand {
background-image: var(--mieweb-gradient-brand);
}

@utility bg-gradient-brand-strong {
background-image: var(--mieweb-gradient-brand-strong);
}
Comment thread src/styles/init.css
Comment on lines +399 to +406
/* ── Brand Gradient Utilities ──────────────────────────────────── */
@utility bg-gradient-brand {
background-image: var(--mieweb-gradient-brand);
}

@utility bg-gradient-brand-strong {
background-image: var(--mieweb-gradient-brand-strong);
}
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