fix: cyrillic fonts, dev certs, page head, and ru-text typography (#67)
🤖 PR generated for branch `fix/cyrillic-fonts-dev-certs-and-page-head`.
### Changes Summary
- **Fonts**: Add Cyrillic glyph subsets for Lato, EB Garamond, and Fira
Code.
- **Dev**: Support remote Root CA and encrypted dev CA key in
`.env.dev`.
- **UI & Kits**: Add size variant to `Breadcrumbs` component and enlarge
`PageHead` breadcrumbs with tuned collapse scroll threshold.
- **ESLint**: Add `no-hanging-particles` i18n & markdown typography rule
with auto-fixer.
- **Content & i18n**: Apply `ru-text` editorial and typography polish
(em dashes, number ranges, «ё» restoration, non-breaking spaces) across
`services/www` and `services/docs`.
This commit is contained in:
1 parent
c6487dc258
commit
b3638f4d63
111 files changed
+2350
-1512
No files matched your search
@@ -76,3 +76,15 @@ export const WithBullets: Story = {
|
||||
</Breadcrumbs>
|
||||
),
|
||||
};
|
||||
|
||||
export const Large: Story = {
|
||||
render: () => (
|
||||
<Breadcrumbs size="l">
|
||||
<Breadcrumbs.Item href="/">Home</Breadcrumbs.Item>
|
||||
<Breadcrumbs.Separator variant="slash" />
|
||||
<Breadcrumbs.Item href="/articles">Articles</Breadcrumbs.Item>
|
||||
<Breadcrumbs.Separator variant="slash" />
|
||||
<Breadcrumbs.Item isCurrent>Deep Learning</Breadcrumbs.Item>
|
||||
</Breadcrumbs>
|
||||
),
|
||||
};
|
||||
@@ -36,6 +36,16 @@ describe('components/Breadcrumbs', () => {
|
||||
expect(ol.className).toContain('text-label-m');
|
||||
});
|
||||
|
||||
it('supports custom size variant', () => {
|
||||
render(
|
||||
<Breadcrumbs size="l">
|
||||
<Breadcrumbs.Item href="/test">Home</Breadcrumbs.Item>
|
||||
</Breadcrumbs>
|
||||
);
|
||||
const ol = screen.getByRole('list');
|
||||
expect(ol.className).toContain('text-label-l');
|
||||
});
|
||||
|
||||
it('supports isCurrent state', () => {
|
||||
render(
|
||||
<Breadcrumbs>
|
||||
|
||||
@@ -16,15 +16,44 @@ import type { ClassNameProps, TestIdProps } from '@ermnvldmr/stl';
|
||||
export interface BreadcrumbsProps extends HStackProps {
|
||||
/** Breadcrumb items and separators */
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* Typography size variant for the breadcrumbs trail.
|
||||
* @default 'm'
|
||||
*/
|
||||
size?: 's' | 'm' | 'l';
|
||||
}
|
||||
|
||||
const breadcrumbsVariants = cva('font-sans font-medium', {
|
||||
variants: {
|
||||
size: {
|
||||
s: 'text-label-s',
|
||||
m: 'text-label-m',
|
||||
l: 'text-label-l',
|
||||
},
|
||||
},
|
||||
defaultVariants: {
|
||||
size: 'm',
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* Root component for hierarchical navigation.
|
||||
*/
|
||||
const BreadcrumbsRoot = memo(function Breadcrumbs({ children, className, ...props }: BreadcrumbsProps) {
|
||||
const BreadcrumbsRoot = memo(function Breadcrumbs({
|
||||
children,
|
||||
className,
|
||||
size = 'm',
|
||||
...props
|
||||
}: BreadcrumbsProps) {
|
||||
return (
|
||||
<nav aria-label="Breadcrumb" className={className}>
|
||||
<HStack align="center" as="ol" className="text-label-m font-sans font-medium" gap={2} {...props}>
|
||||
<nav aria-label="Breadcrumb">
|
||||
<HStack
|
||||
align="center"
|
||||
as="ol"
|
||||
className={cn(breadcrumbsVariants({ size }), className)}
|
||||
gap={2}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
</HStack>
|
||||
</nav>
|
||||
@@ -126,7 +155,7 @@ const BreadcrumbsSeparator = memo(function BreadcrumbsSeparator({
|
||||
const content = {
|
||||
slash: '/',
|
||||
bull: '•',
|
||||
arrow: <ChevronRight className="size-4" />,
|
||||
arrow: <ChevronRight className="size-[1em]" />,
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in new issue
Block a user