chore: initial DSMMG v0.2 — refonte architecturale complète
Release / Release / open changeset PR (push) Has been cancelled
CI / Build, typecheck, test, a11y (push) Has been cancelled

Mise en place du Design System ManageMate Group v0.2 — refonte du
système de tokens (préfixe --mmg-color-*), 9 presets accent
user-themable validés WCAG AA, overlays Radix UI + Floating UI,
Storybook 8 + Vitest + axe-core en CI, doc Astro Starlight,
DESIGN.md (format google-labs-code) et exports tokens DTCG/CSS/
TS/Figma/Tailwind v3 et v4.

- 4 packages monorepo pnpm : @managemate/{tokens,css,react,icons}
- 62 composants React headless-first (Sheet, HoverCard, ContextMenu,
  Slider, ToggleGroup, AvatarGroup, UserCard, ProfileHeader,
  MetricCard, PricingCard, FeatureCard, Text/Display/Eyebrow/Lead…)
- Lint contraste WCAG : 37/37 paires AA, branché CI
- Toast pile Sonner-style avec ResizeObserver
- Theming user (9 presets) sans casser sémantique fixe
- Identité Synapse (rose #D12B6A) préservée

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dinawo
2026-05-04 22:07:57 +02:00
parent 5e019857fc
commit 62317f2ad7
172 changed files with 31397 additions and 1 deletions
+46
View File
@@ -0,0 +1,46 @@
import type { Meta, StoryObj } from "@storybook/react";
import { useState } from "react";
import { Combobox } from "@managemate/react";
const meta = {
title: "Forms/Combobox",
component: Combobox,
tags: ["autodocs"],
parameters: {
docs: {
description: {
component:
"Combobox WAI-ARIA 1.2 (combobox + listbox). Floating UI pour positionnement, aria-activedescendant pour le focus virtuel sur l'option courante.",
},
},
},
} satisfies Meta<typeof Combobox>;
export default meta;
type Story = StoryObj<typeof meta>;
const COUNTRIES = [
{ value: "fr", label: "France" },
{ value: "be", label: "Belgique" },
{ value: "ch", label: "Suisse" },
{ value: "ca", label: "Canada" },
{ value: "lu", label: "Luxembourg" },
{ value: "ma", label: "Maroc" },
{ value: "tn", label: "Tunisie" },
{ value: "sn", label: "Sénégal" },
{ value: "ci", label: "Côte d'Ivoire" },
];
export const Default: Story = {
render: () => {
const [val, setVal] = useState<string | undefined>();
return (
<div style={{ width: 320 }}>
<Combobox label="Pays" options={COUNTRIES} value={val} onChange={setVal} />
<p style={{ marginTop: 12, fontSize: 13, color: "var(--mmg-color-text-tertiary)" }}>
Sélectionné : <strong>{val ?? "—"}</strong>
</p>
</div>
);
},
};