Rocky_Mountain_Vending/.pnpm-store/v10/files/e0/2e430f4e55ca2b59b7b9091d8373444f437dc585026bf764d9f182eea8ef0d1035e54a6b6c28da021d8118301535c835bbc47be8f2b3f61790a0dde421619d
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

106 lines
2.9 KiB
Text

/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import {FunctionComponent} from 'preact';
import {ReportUtils} from '../../../report/renderer/report-utils.js';
import {Separator} from '../common';
import {useI18n, useLocalizedStrings} from '../i18n/i18n';
import {CpuIcon, EnvIcon, NetworkIcon, SummaryIcon} from '../icons';
import {classNames, useHashState, useFlowResult} from '../util';
import {SidebarFlow} from './flow';
const SidebarSummary: FunctionComponent = () => {
const hashState = useHashState();
const strings = useLocalizedStrings();
return (
<a
href="#"
className={classNames('SidebarSummary', {'Sidebar--current': hashState === null})}
data-testid="SidebarSummary"
>
<div className="SidebarSummary__icon">
<SummaryIcon/>
</div>
<div className="SidebarSummary__label">{strings.summary}</div>
</a>
);
};
const SidebarRuntimeSettings: FunctionComponent<{settings: LH.ConfigSettings}> =
({settings}) => {
const strings = useLocalizedStrings();
const env = ReportUtils.getEmulationDescriptions(settings);
const deviceEmulationString = env.screenEmulation ?
`${env.deviceEmulation} - ${env.screenEmulation}` :
env.deviceEmulation;
return (
<div className="SidebarRuntimeSettings">
<div className="SidebarRuntimeSettings__item" title={strings.runtimeSettingsDevice}>
<div className="SidebarRuntimeSettings__item--icon">
<EnvIcon/>
</div>
{
deviceEmulationString
}
</div>
<div
className="SidebarRuntimeSettings__item"
title={strings.runtimeSettingsNetworkThrottling}
>
<div className="SidebarRuntimeSettings__item--icon">
<NetworkIcon/>
</div>
{
env.summary
}
</div>
<div className="SidebarRuntimeSettings__item" title={strings.runtimeSettingsCPUThrottling}>
<div className="SidebarRuntimeSettings__item--icon">
<CpuIcon/>
</div>
{
`${settings.throttling.cpuSlowdownMultiplier}x slowdown`
}
</div>
</div>
);
};
const SidebarHeader: FunctionComponent<{title: string, date: string}> = ({title, date}) => {
const i18n = useI18n();
return (
<div className="SidebarHeader">
<div className="SidebarHeader__title">{title}</div>
<div className="SidebarHeader__date">{i18n.formatter.formatDateTime(date)}</div>
</div>
);
};
const Sidebar: FunctionComponent = () => {
const flowResult = useFlowResult();
const firstLhr = flowResult.steps[0].lhr;
return (
<div className="Sidebar">
<SidebarHeader title={flowResult.name} date={firstLhr.fetchTime}/>
<Separator/>
<SidebarSummary/>
<Separator/>
<SidebarFlow/>
<Separator/>
<SidebarRuntimeSettings settings={firstLhr.configSettings}/>
</div>
);
};
export {
SidebarSummary,
SidebarRuntimeSettings,
SidebarHeader,
Sidebar,
};