@hirobius/design-system 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE/main.tsx +21 -0
- package/README.md +124 -0
- package/dist/chunks/TokenDisplayContext-B3gxyQN7.js +95 -0
- package/dist/chunks/form-DnGRy27o.js +63 -0
- package/dist/cn.js +8 -0
- package/dist/contexts.js +133 -0
- package/dist/form.js +62 -0
- package/dist/hirobius-ui.js +5611 -0
- package/dist/manifest.js +28 -0
- package/dist/tokens.css +1 -0
- package/dist/tokens.js +693 -0
- package/dist/types/src/app/components/activity-feed.d.ts +43 -0
- package/dist/types/src/app/components/alert.d.ts +18 -0
- package/dist/types/src/app/components/asset-img.d.ts +54 -0
- package/dist/types/src/app/components/avatar.d.ts +23 -0
- package/dist/types/src/app/components/badge.d.ts +20 -0
- package/dist/types/src/app/components/breadcrumb.d.ts +26 -0
- package/dist/types/src/app/components/button.d.ts +37 -0
- package/dist/types/src/app/components/callout.d.ts +23 -0
- package/dist/types/src/app/components/card.d.ts +119 -0
- package/dist/types/src/app/components/checkbox.d.ts +20 -0
- package/dist/types/src/app/components/cinematic-link.d.ts +13 -0
- package/dist/types/src/app/components/code-block.d.ts +29 -0
- package/dist/types/src/app/components/combobox.d.ts +46 -0
- package/dist/types/src/app/components/component-instance-matrix.d.ts +21 -0
- package/dist/types/src/app/components/container.d.ts +31 -0
- package/dist/types/src/app/components/dialog.d.ts +73 -0
- package/dist/types/src/app/components/disclosure.d.ts +32 -0
- package/dist/types/src/app/components/divider.d.ts +21 -0
- package/dist/types/src/app/components/doc-link-card.d.ts +26 -0
- package/dist/types/src/app/components/empty-state.d.ts +24 -0
- package/dist/types/src/app/components/error-boundary.d.ts +25 -0
- package/dist/types/src/app/components/error-pattern.d.ts +9 -0
- package/dist/types/src/app/components/field.d.ts +25 -0
- package/dist/types/src/app/components/form.d.ts +106 -0
- package/dist/types/src/app/components/foundation-swatch.d.ts +39 -0
- package/dist/types/src/app/components/grid.d.ts +65 -0
- package/dist/types/src/app/components/heading-stack.d.ts +42 -0
- package/dist/types/src/app/components/history-card.d.ts +12 -0
- package/dist/types/src/app/components/icon-button.d.ts +23 -0
- package/dist/types/src/app/components/icon.d.ts +30 -0
- package/dist/types/src/app/components/info-page.d.ts +10 -0
- package/dist/types/src/app/components/inline-code.d.ts +12 -0
- package/dist/types/src/app/components/inline-link.d.ts +17 -0
- package/dist/types/src/app/components/input.d.ts +46 -0
- package/dist/types/src/app/components/lab/tokenUtils.d.ts +38 -0
- package/dist/types/src/app/components/menu.d.ts +56 -0
- package/dist/types/src/app/components/nav-group.d.ts +24 -0
- package/dist/types/src/app/components/nav-item.d.ts +21 -0
- package/dist/types/src/app/components/not-found-pattern.d.ts +1 -0
- package/dist/types/src/app/components/page.d.ts +43 -0
- package/dist/types/src/app/components/pagination.d.ts +24 -0
- package/dist/types/src/app/components/popover.d.ts +44 -0
- package/dist/types/src/app/components/progress.d.ts +25 -0
- package/dist/types/src/app/components/radio.d.ts +18 -0
- package/dist/types/src/app/components/segmented-control.d.ts +33 -0
- package/dist/types/src/app/components/skeleton.d.ts +25 -0
- package/dist/types/src/app/components/sketch.d.ts +13 -0
- package/dist/types/src/app/components/slider.d.ts +22 -0
- package/dist/types/src/app/components/spinner.d.ts +20 -0
- package/dist/types/src/app/components/stack.d.ts +39 -0
- package/dist/types/src/app/components/stat.d.ts +24 -0
- package/dist/types/src/app/components/status-list-item.d.ts +25 -0
- package/dist/types/src/app/components/status-tile.d.ts +22 -0
- package/dist/types/src/app/components/stepper-field.d.ts +13 -0
- package/dist/types/src/app/components/surface-padding.d.ts +18 -0
- package/dist/types/src/app/components/surface.d.ts +30 -0
- package/dist/types/src/app/components/table.d.ts +40 -0
- package/dist/types/src/app/components/tabs.d.ts +27 -0
- package/dist/types/src/app/components/tag.d.ts +32 -0
- package/dist/types/src/app/components/text-lockup.d.ts +38 -0
- package/dist/types/src/app/components/text.d.ts +26 -0
- package/dist/types/src/app/components/tile-grid.d.ts +17 -0
- package/dist/types/src/app/components/toast.d.ts +56 -0
- package/dist/types/src/app/components/toggle.d.ts +18 -0
- package/dist/types/src/app/components/token.d.ts +59 -0
- package/dist/types/src/app/components/tooltip.d.ts +33 -0
- package/dist/types/src/app/context/DemoStateContext.d.ts +21 -0
- package/dist/types/src/app/context/FontContext.d.ts +4 -0
- package/dist/types/src/app/context/LanguageContext.d.ts +23 -0
- package/dist/types/src/app/context/RouterContext.d.ts +61 -0
- package/dist/types/src/app/context/TenantContext.d.ts +29 -0
- package/dist/types/src/app/context/ThemeContext.d.ts +18 -0
- package/dist/types/src/app/context/TokenDisplayContext.d.ts +11 -0
- package/dist/types/src/app/context/index.d.ts +19 -0
- package/dist/types/src/app/data/manifest-types.d.ts +128 -0
- package/dist/types/src/app/design-system/generated-token-refs.d.ts +586 -0
- package/dist/types/src/app/design-system/generated-token-values.d.ts +223 -0
- package/dist/types/src/app/design-system/theme.d.ts +32 -0
- package/dist/types/src/app/design-system/tokens.d.ts +333 -0
- package/dist/types/src/app/hooks/useFocusVisible.d.ts +9 -0
- package/dist/types/src/app/hooks/useInteractionState.d.ts +27 -0
- package/dist/types/src/app/layouts/CaseStudyLayout.d.ts +21 -0
- package/dist/types/src/app/layouts/DocLayout.d.ts +16 -0
- package/dist/types/src/app/layouts/EmbeddedDocLayoutContext.d.ts +6 -0
- package/dist/types/src/app/lib/nav-active.d.ts +16 -0
- package/dist/types/src/app/lib/navLevels.d.ts +4 -0
- package/dist/types/src/app/pages/hds/HdsSystemDocLayout.d.ts +7 -0
- package/dist/types/src/form/hds-form.d.ts +61 -0
- package/dist/types/src/form/index.d.ts +30 -0
- package/dist/types/src/form/use-hds-form.d.ts +23 -0
- package/dist/types/src/index.d.ts +2276 -0
- package/dist/types/src/lib/deprecation.d.ts +4 -0
- package/dist/types/src/lib/manifest-entry.d.ts +3 -0
- package/dist/types/src/lib/utils.d.ts +3 -0
- package/dist/variables.css +461 -0
- package/hirobius.tokens.json +2220 -0
- package/package.json +366 -0
- package/protocol/envelope.mjs +201 -0
- package/protocol/figma-snapshot.schema.json +190 -0
- package/public/hds-manifest.json +11230 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Divider — semantic separator between content regions.
|
|
3
|
+
* @category Layout
|
|
4
|
+
* @tier primitive
|
|
5
|
+
*/
|
|
6
|
+
import type { CSSProperties } from 'react';
|
|
7
|
+
interface DividerProps {
|
|
8
|
+
/** Divider orientation. */
|
|
9
|
+
orientation?: 'horizontal' | 'vertical';
|
|
10
|
+
/** Perpendicular spacing around the divider. */
|
|
11
|
+
spacing?: string | number;
|
|
12
|
+
/** Increase the stroke weight for stronger separation. */
|
|
13
|
+
strong?: boolean;
|
|
14
|
+
/** Optional inline styles for one-off layout adjustments. */
|
|
15
|
+
style?: CSSProperties;
|
|
16
|
+
/** Optional class hook for parent-level styling. */
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
/** @public */
|
|
20
|
+
export declare function Divider({ orientation, spacing, strong, style, className, }: DividerProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type LucideIcon } from 'lucide-react';
|
|
2
|
+
interface DocLinkCardProps {
|
|
3
|
+
/** Primary title displayed in the card. */
|
|
4
|
+
title: string;
|
|
5
|
+
/** Supporting body copy shown below the title. */
|
|
6
|
+
description?: string;
|
|
7
|
+
/** Destination route or URL. */
|
|
8
|
+
href: string;
|
|
9
|
+
/** Icon rendered in the card header. */
|
|
10
|
+
icon: LucideIcon;
|
|
11
|
+
/** Optional metadata label rendered above the title. */
|
|
12
|
+
meta?: string;
|
|
13
|
+
/** Typography style used for the meta label. */
|
|
14
|
+
metaStyle?: 'caption' | 'ui';
|
|
15
|
+
/** Tint the card surface for emphasis. */
|
|
16
|
+
accent?: boolean;
|
|
17
|
+
/** Card layout variant. */
|
|
18
|
+
variant?: 'feature' | 'pager';
|
|
19
|
+
/** Disable navigation and reduce contrast. */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/** Directional affordance for the header icon. */
|
|
22
|
+
affordance?: 'up-right' | 'right' | 'left';
|
|
23
|
+
}
|
|
24
|
+
/** @public */
|
|
25
|
+
export declare function DocLinkCard({ title, description, href, icon: CardIcon, meta, metaStyle, accent, variant, disabled, affordance, }: DocLinkCardProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EmptyState — consistent no-data placeholder for lists, grids, and sections.
|
|
3
|
+
* @category Display
|
|
4
|
+
* @tier primitive
|
|
5
|
+
* @ai-intent Inline empty-state placeholder so any list, grid, or section can
|
|
6
|
+
* communicate "no data yet" with consistent muted typography instead of agents
|
|
7
|
+
* inventing one-off `<p>No items.</p>` lines.
|
|
8
|
+
* @ai-rules Use only for inline empty states inside an existing section. Do NOT
|
|
9
|
+
* use for full-page errors (use ErrorPage) or for loading states (use a
|
|
10
|
+
* skeleton). Do NOT wrap in Surface or Card — the empty state is a
|
|
11
|
+
* typographic message, not a chrome-bearing container.
|
|
12
|
+
*/
|
|
13
|
+
import * as React from 'react';
|
|
14
|
+
/** @public */
|
|
15
|
+
export interface EmptyStateProps {
|
|
16
|
+
/** Primary message. Sentence-case, no trailing period required. */
|
|
17
|
+
title: React.ReactNode;
|
|
18
|
+
/** Optional supporting line. */
|
|
19
|
+
description?: React.ReactNode;
|
|
20
|
+
/** Escape hatch for layout adjustments — token-only, no business logic. */
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
/** @public */
|
|
24
|
+
export declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** @internal — utility-tier component; not part of @hirobius/design-system public API. */
|
|
2
|
+
/**
|
|
3
|
+
* ErrorBoundary — slot-scoped recovery surface for runtime render failures.
|
|
4
|
+
* @category Feedback
|
|
5
|
+
* @tier utility
|
|
6
|
+
* @doc-exempt: runtime safety infra, not an LLM-facing layout primitive
|
|
7
|
+
*/
|
|
8
|
+
import { Component, type ErrorInfo, type ReactNode } from 'react';
|
|
9
|
+
interface ErrorBoundaryProps {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
slotLabel?: string;
|
|
12
|
+
minHeight?: string;
|
|
13
|
+
}
|
|
14
|
+
interface ErrorBoundaryState {
|
|
15
|
+
error: Error | null;
|
|
16
|
+
retryNonce: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
19
|
+
state: ErrorBoundaryState;
|
|
20
|
+
static getDerivedStateFromError(error: Error): Pick<ErrorBoundaryState, 'error'>;
|
|
21
|
+
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
22
|
+
private handleRetry;
|
|
23
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ErrorPatternProps = {
|
|
2
|
+
/** Large recovery headline rendered through the animated cascade treatment. */
|
|
3
|
+
displayText?: string;
|
|
4
|
+
/** Supporting message explaining the recovery state to the user. */
|
|
5
|
+
message?: string;
|
|
6
|
+
};
|
|
7
|
+
/** @public */
|
|
8
|
+
export declare function ErrorPattern({ displayText, message, }: ErrorPatternProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @category Display
|
|
3
|
+
* @tier primitive
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
declare const VALUE_TONE: {
|
|
7
|
+
readonly default: "text-foreground";
|
|
8
|
+
readonly success: "text-[var(--semantic-color-feedback-success)]";
|
|
9
|
+
readonly warning: "text-[var(--semantic-color-feedback-warning)]";
|
|
10
|
+
readonly danger: "text-[var(--semantic-color-feedback-error)]";
|
|
11
|
+
};
|
|
12
|
+
export type FieldTone = keyof typeof VALUE_TONE;
|
|
13
|
+
/** @public */
|
|
14
|
+
export interface FieldProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
15
|
+
label: string;
|
|
16
|
+
value?: React.ReactNode;
|
|
17
|
+
tone?: FieldTone;
|
|
18
|
+
mono?: boolean;
|
|
19
|
+
children?: React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Caption label paired with a value — used in metadata grids and read-only forms.
|
|
23
|
+
*/
|
|
24
|
+
export declare const Field: React.ForwardRefExoticComponent<FieldProps & React.RefAttributes<HTMLDivElement>>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form + FormField — validation-agnostic form layout + field-wiring seam.
|
|
3
|
+
* @category Inputs
|
|
4
|
+
* @tier pattern
|
|
5
|
+
* @doc-exempt: no Inputs/forms doc page yet — add demo when created
|
|
6
|
+
*
|
|
7
|
+
* HDS does not depend on a form/validation library. `FormField` owns the a11y
|
|
8
|
+
* wiring (label↔control association, aria-invalid, aria-describedby for
|
|
9
|
+
* description + error) and accepts a plain `error` string — so the validation
|
|
10
|
+
* SOURCE is whatever the consumer brings: native constraint validation,
|
|
11
|
+
* react-hook-form, zod, Formik, etc. (Mirrors the router-adapter philosophy:
|
|
12
|
+
* works with zero deps; richer when you inject your own.)
|
|
13
|
+
*
|
|
14
|
+
* <Form onSubmit={…}>
|
|
15
|
+
* <FormField label="Full name" error={errors.name} required>
|
|
16
|
+
* <input className="…" /> // bare / native or any control
|
|
17
|
+
* </FormField>
|
|
18
|
+
* <Button type="submit">Save</Button>
|
|
19
|
+
* </Form>
|
|
20
|
+
*
|
|
21
|
+
* NOTE: the HDS `Input` already self-wires its own label/error/aria via its
|
|
22
|
+
* `label` + `error` + `errorMessage` props — use those directly rather than
|
|
23
|
+
* wrapping `Input` in `FormField` (which would double-wire). `FormField` is for
|
|
24
|
+
* controls that don't self-wire: native inputs, `Select`, `Combobox`, checkboxes.
|
|
25
|
+
*
|
|
26
|
+
* `FormField` cloneElement-wires its single child. That clone is incompatible
|
|
27
|
+
* with controls that carry a callback ref managed elsewhere (e.g.
|
|
28
|
+
* react-hook-form's `useController` field.ref — re-cloning detaches it). For
|
|
29
|
+
* that case use `useFieldWiring` + `FormFieldShell` to wire a control you render
|
|
30
|
+
* directly (no clone); the `@hirobius/design-system/form` adapter does exactly this.
|
|
31
|
+
*/
|
|
32
|
+
import * as React from 'react';
|
|
33
|
+
/** @public */
|
|
34
|
+
export type FormProps = React.FormHTMLAttributes<HTMLFormElement>;
|
|
35
|
+
/** Styled `<form>` with consistent vertical field rhythm. */
|
|
36
|
+
export declare const Form: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<HTMLFormElement>>;
|
|
37
|
+
/** @public */
|
|
38
|
+
export interface FieldWiringInput {
|
|
39
|
+
/** Explicit control id. Defaults to a generated id. */
|
|
40
|
+
htmlFor?: string;
|
|
41
|
+
/** The control's own id, if it brings one. */
|
|
42
|
+
childId?: string;
|
|
43
|
+
/** Present when the field has helper text. */
|
|
44
|
+
description?: string;
|
|
45
|
+
/** Present when the field has an error. */
|
|
46
|
+
error?: string;
|
|
47
|
+
}
|
|
48
|
+
/** @public */
|
|
49
|
+
export interface FieldWiring {
|
|
50
|
+
/** Id shared by the label's htmlFor and the control. */
|
|
51
|
+
controlId: string;
|
|
52
|
+
descriptionId: string;
|
|
53
|
+
errorId: string;
|
|
54
|
+
/** Combined aria-describedby (description + error ids), or undefined. */
|
|
55
|
+
describedBy?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Computes the stable ids + `aria-describedby` linking a label, helper text, and
|
|
59
|
+
* error to a single control. Shared by `FormField` (clone path) and consumers
|
|
60
|
+
* that render their control directly (e.g. the form adapter's `HdsFormField`).
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
export declare function useFieldWiring({ htmlFor, childId, description, error, }: FieldWiringInput): FieldWiring;
|
|
64
|
+
/** @public */
|
|
65
|
+
export interface FormFieldShellProps {
|
|
66
|
+
/** Id of the control rendered as `children` (drives the label's htmlFor). */
|
|
67
|
+
controlId: string;
|
|
68
|
+
label: string;
|
|
69
|
+
description?: string;
|
|
70
|
+
error?: string;
|
|
71
|
+
required?: boolean;
|
|
72
|
+
className?: string;
|
|
73
|
+
/** The already-rendered control (already carrying its own id/aria props). */
|
|
74
|
+
children: React.ReactNode;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Presentational label + control slot + helper/error markup. Renders `children`
|
|
78
|
+
* verbatim — it does NOT clone — so it is safe to use with controls that own a
|
|
79
|
+
* callback ref. Pair it with `useFieldWiring` to apply ids/aria yourself.
|
|
80
|
+
* @public
|
|
81
|
+
*/
|
|
82
|
+
export declare const FormFieldShell: React.ForwardRefExoticComponent<FormFieldShellProps & React.RefAttributes<HTMLDivElement>>;
|
|
83
|
+
/** @public */
|
|
84
|
+
export interface FormFieldProps {
|
|
85
|
+
/** Field label, associated to the control via htmlFor/id. */
|
|
86
|
+
label: string;
|
|
87
|
+
/** The single form control (native input, Select, Combobox, …). */
|
|
88
|
+
children: React.ReactElement;
|
|
89
|
+
/** Explicit control id. Defaults to a generated id. */
|
|
90
|
+
htmlFor?: string;
|
|
91
|
+
/** Helper text below the control; linked via aria-describedby. */
|
|
92
|
+
description?: string;
|
|
93
|
+
/** Error message; when set, marks the control aria-invalid and links it. */
|
|
94
|
+
error?: string;
|
|
95
|
+
/** Adds a required marker and sets `required` on the control. */
|
|
96
|
+
required?: boolean;
|
|
97
|
+
className?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Label + description + error wrapper that wires the a11y relationships onto its
|
|
101
|
+
* single child control via cloneElement. Validation-library agnostic — pass
|
|
102
|
+
* `error` from whatever you use. For controls with an externally-managed callback
|
|
103
|
+
* ref (e.g. react-hook-form), use `FormFieldShell` + `useFieldWiring` instead.
|
|
104
|
+
* @public
|
|
105
|
+
*/
|
|
106
|
+
export declare const FormField: React.ForwardRefExoticComponent<FormFieldProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FoundationSwatch - governed foundation specimen for color and semantic role previews.
|
|
3
|
+
* @category Utilities
|
|
4
|
+
* @tier pattern
|
|
5
|
+
*/
|
|
6
|
+
import type { ReactNode } from 'react';
|
|
7
|
+
type FoundationSwatchPreviewPosition = 'bottom-left' | 'top-left' | 'center';
|
|
8
|
+
type FoundationSwatchTokenDisplayPreset = 'depth1' | 'depth2' | 'full';
|
|
9
|
+
/** @public */
|
|
10
|
+
export type FoundationSwatchProps = {
|
|
11
|
+
/** Primary label rendered inside or below the swatch. */
|
|
12
|
+
label: string;
|
|
13
|
+
/** Whether to hide the preview label inside the swatch specimen. */
|
|
14
|
+
hidePreviewLabel?: boolean;
|
|
15
|
+
/** Optional token path rendered as a condensed node inside the swatch surface. */
|
|
16
|
+
tokenPath?: string;
|
|
17
|
+
/** Shorthand preset for how the token path renders inside the specimen. */
|
|
18
|
+
tokenDisplayPreset?: FoundationSwatchTokenDisplayPreset;
|
|
19
|
+
/** Placement of the specimen content inside the swatch surface. */
|
|
20
|
+
previewPosition?: FoundationSwatchPreviewPosition;
|
|
21
|
+
/** Background fill or tone shown by the specimen. */
|
|
22
|
+
background: string;
|
|
23
|
+
/** Optional text/value line shown inside the specimen. */
|
|
24
|
+
value?: string;
|
|
25
|
+
/** Optional supporting lines shown inside the specimen. */
|
|
26
|
+
details?: string[];
|
|
27
|
+
/** Foreground color used for text inside the specimen. */
|
|
28
|
+
foreground?: string;
|
|
29
|
+
/** Custom specimen content rendered inside card-style swatches. */
|
|
30
|
+
specimen?: ReactNode;
|
|
31
|
+
/** Optional note rendered below card-style swatches. */
|
|
32
|
+
note?: ReactNode;
|
|
33
|
+
/** Whether to show a bordered specimen surface. */
|
|
34
|
+
bordered?: boolean;
|
|
35
|
+
/** Explicit color value (hex or CSS var name) to pin the token chip's swatch square, overriding auto-resolution from tokenPath. */
|
|
36
|
+
swatchVar?: string;
|
|
37
|
+
};
|
|
38
|
+
export declare function FoundationSwatch({ label, hidePreviewLabel, tokenPath, tokenDisplayPreset, previewPosition, background, value, details, foreground, specimen, note, bordered, swatchVar, }: FoundationSwatchProps): import("react/jsx-runtime").JSX.Element;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grid — responsive grid composition primitive.
|
|
3
|
+
* @category Layout
|
|
4
|
+
* @tier primitive
|
|
5
|
+
* @ai-intent Solves multi-column layout and repeatable alignment with token-governed gaps, responsive column collapse, and a first-class subgrid escape hatch for nested structure.
|
|
6
|
+
* @ai-rules Use Grid for spatial layout, not for surface styling or content padding. Do NOT apply background, border, or internal padding directly to Grid to mimic a card. Do NOT use arbitrary CSS grid templates when fixed, auto-fit, or subgrid modes already express the layout. Do NOT use Grid for simple one-dimensional stacks where Stack is sufficient.
|
|
7
|
+
*
|
|
8
|
+
* Enforces semantic gap and column values. No arbitrary CSS grid.
|
|
9
|
+
* - layout='fixed': responsive base (collapses via CSS at tablet/mobile).
|
|
10
|
+
* `columns` sets desktop count (default 12). Tablet/mobile
|
|
11
|
+
* clamp to min(8, cols) and min(4, cols) respectively.
|
|
12
|
+
* - layout='auto-fit': responsive card wrapping via auto-fit.
|
|
13
|
+
* - subgrid=true: sets gridTemplateColumns:'subgrid' for nested alignment.
|
|
14
|
+
*
|
|
15
|
+
* Usage (default responsive 12-col):
|
|
16
|
+
* <Grid>
|
|
17
|
+
* <Grid.Item colSpan={6}>…</Grid.Item>
|
|
18
|
+
* <Grid.Item colSpan={6}>…</Grid.Item>
|
|
19
|
+
* </Grid>
|
|
20
|
+
*
|
|
21
|
+
* Usage (responsive auto-fit):
|
|
22
|
+
* <Grid layout="auto-fit">
|
|
23
|
+
* <Card />
|
|
24
|
+
* <Card />
|
|
25
|
+
* </Grid>
|
|
26
|
+
*/
|
|
27
|
+
import React, { type ReactNode, type CSSProperties } from 'react';
|
|
28
|
+
type SemanticGap = 'tight' | 'normal' | 'inset' | 'spacious';
|
|
29
|
+
type GridLayout = 'fixed' | 'auto-fit';
|
|
30
|
+
interface GridProps {
|
|
31
|
+
/** Grid content. */
|
|
32
|
+
children: ReactNode;
|
|
33
|
+
/** Grid layout mode: 'fixed' (responsive) or 'auto-fit' (card wrapping). Defaults to 'fixed'. */
|
|
34
|
+
layout?: GridLayout;
|
|
35
|
+
/** Desktop column count for layout='fixed'. Tablet clamps to min(8,n), mobile to min(4,n). Defaults to 12. */
|
|
36
|
+
columns?: number;
|
|
37
|
+
/** Gap between grid items: semantic only. Defaults to 'inset' (32px). */
|
|
38
|
+
gap?: SemanticGap;
|
|
39
|
+
/** If true, sets gridTemplateColumns:'subgrid' for nested grid alignment. */
|
|
40
|
+
subgrid?: boolean;
|
|
41
|
+
/** Escape hatch: only use for narrow layout adjustments that do not belong in the primitive API. */
|
|
42
|
+
style?: CSSProperties;
|
|
43
|
+
/** Escape hatch: only use when tokenized props cannot express the required wrapper class. */
|
|
44
|
+
className?: string;
|
|
45
|
+
/** Element rendered as the outer wrapper. Defaults to 'div'. */
|
|
46
|
+
as?: React.ElementType;
|
|
47
|
+
}
|
|
48
|
+
interface GridItemProps {
|
|
49
|
+
children: ReactNode;
|
|
50
|
+
/** Number of columns this item spans (out of the grid's column count). */
|
|
51
|
+
colSpan?: number;
|
|
52
|
+
/** Starting column position (1-based). */
|
|
53
|
+
colOffset?: number;
|
|
54
|
+
/** Escape hatch: only use for item-level adjustments that do not belong in the primitive API. */
|
|
55
|
+
style?: CSSProperties;
|
|
56
|
+
/** Escape hatch: only use when tokenized props cannot express the required wrapper class. */
|
|
57
|
+
className?: string;
|
|
58
|
+
/** Element rendered as the grid item wrapper. */
|
|
59
|
+
as?: React.ElementType;
|
|
60
|
+
}
|
|
61
|
+
/** @public */
|
|
62
|
+
export declare const Grid: React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLDivElement>> & {
|
|
63
|
+
Item: React.ForwardRefExoticComponent<GridItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
64
|
+
};
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HeadingStack — enforced vertical rhythm for heading + subheading pairs.
|
|
3
|
+
*
|
|
4
|
+
* Automatically handles gap and secondary color, preventing manual stacking.
|
|
5
|
+
* - Heading level: 'heading1' | 'heading2' | 'heading3'
|
|
6
|
+
* - Gap: px4 (tight) | px8 (default)
|
|
7
|
+
* - Subheading color: always var(--semantic-color-content-secondary)
|
|
8
|
+
*
|
|
9
|
+
* GUARDRAIL: Never manually stack headings using Stack. Always use HeadingStack.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* <HeadingStack level="heading1" heading="Main Title" subheading="Subtitle text" />
|
|
13
|
+
* <HeadingStack level="heading2" heading="Section" subheading="Description" gap="px4" />
|
|
14
|
+
*
|
|
15
|
+
* @category Typography
|
|
16
|
+
* @tier primitive
|
|
17
|
+
* @doc-exempt: internal typography lockup utility, documented through page composition rather than a standalone component page
|
|
18
|
+
*/
|
|
19
|
+
import React, { type ElementType } from 'react';
|
|
20
|
+
type HdsHeadingLevel = 'heading1' | 'heading2' | 'heading3';
|
|
21
|
+
type HdsHeadingGap = 'px4' | 'px8';
|
|
22
|
+
type HdsHeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
23
|
+
type HdsSupportingTag = 'p' | 'div' | 'span';
|
|
24
|
+
interface HeadingStackProps {
|
|
25
|
+
/** The heading content (string). */
|
|
26
|
+
heading: string;
|
|
27
|
+
/** The supporting copy rendered beneath the heading. */
|
|
28
|
+
subheading: string;
|
|
29
|
+
/** Semantic heading level: heading1 | heading2 | heading3. */
|
|
30
|
+
level: HdsHeadingLevel;
|
|
31
|
+
/** Gap between heading and subheading: px4 (tight) | px8 (default). */
|
|
32
|
+
gap?: HdsHeadingGap;
|
|
33
|
+
/** Override the root semantic wrapper while preserving the governed layout styles. */
|
|
34
|
+
as?: ElementType;
|
|
35
|
+
/** Override the heading tag without altering the applied typography style. */
|
|
36
|
+
headingAs?: HdsHeadingTag;
|
|
37
|
+
/** Override the supporting-copy tag. */
|
|
38
|
+
subheadingAs?: HdsSupportingTag;
|
|
39
|
+
}
|
|
40
|
+
/** @public */
|
|
41
|
+
export declare const HeadingStack: React.ForwardRefExoticComponent<HeadingStackProps & React.RefAttributes<HTMLElement>>;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @public */
|
|
2
|
+
export type HistoryCardCommit = {
|
|
3
|
+
hash: string | null;
|
|
4
|
+
date: string;
|
|
5
|
+
message: string;
|
|
6
|
+
displayMessage?: string;
|
|
7
|
+
};
|
|
8
|
+
export interface HistoryCardProps {
|
|
9
|
+
commit: HistoryCardCommit;
|
|
10
|
+
href: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function HistoryCard({ commit, href }: HistoryCardProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { LucideIcon } from 'lucide-react';
|
|
2
|
+
import { ButtonProps } from './button';
|
|
3
|
+
import { IconSize } from './icon';
|
|
4
|
+
interface IconButtonProps extends Omit<ButtonProps, 'iconOnly' | 'children' | 'size'> {
|
|
5
|
+
/** Lucide icon rendered inside the button. */
|
|
6
|
+
icon: LucideIcon;
|
|
7
|
+
/** Size token for the button itself. */
|
|
8
|
+
size?: 'sm' | 'md' | 'lg';
|
|
9
|
+
/** Override the inner icon size; defaults to the matching button ramp size. */
|
|
10
|
+
iconSize?: IconSize;
|
|
11
|
+
/** Override the inner icon color. */
|
|
12
|
+
iconColor?: string;
|
|
13
|
+
/** Accessible label for the icon button. */
|
|
14
|
+
label?: string;
|
|
15
|
+
/** Accessible label fallback for backward compatibility. */
|
|
16
|
+
'aria-label'?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* IconButton — compact icon-only action surface.
|
|
20
|
+
*/
|
|
21
|
+
/** @public */
|
|
22
|
+
export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Icon — semantic icon wrapper for Lucide icons.
|
|
3
|
+
* @category Display
|
|
4
|
+
* @tier primitive
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { LucideIcon } from 'lucide-react';
|
|
8
|
+
import hds from '../design-system/tokens';
|
|
9
|
+
/** @public */
|
|
10
|
+
export type IconSize = keyof typeof hds.iconSize | number | string;
|
|
11
|
+
export interface IconProps {
|
|
12
|
+
/** Lucide icon component to render. */
|
|
13
|
+
icon: LucideIcon;
|
|
14
|
+
/** Size token from `hds.iconSize`. */
|
|
15
|
+
size?: IconSize;
|
|
16
|
+
/** CSS color value or token, such as `var(--semantic-color-content-secondary)`. */
|
|
17
|
+
color?: string;
|
|
18
|
+
/** Optional class hook for layout or utility styling (rotation, transition, etc.). */
|
|
19
|
+
className?: string;
|
|
20
|
+
/** Optional inline styles for rare rotation, transition, or layout tweaks. */
|
|
21
|
+
style?: React.CSSProperties;
|
|
22
|
+
/**
|
|
23
|
+
* Stroke weight shim for backward compatibility with former Phosphor weight prop.
|
|
24
|
+
* Maps to Lucide's `strokeWidth` (thin=1, light=1.5, regular=2, bold=2.5).
|
|
25
|
+
*/
|
|
26
|
+
weight?: 'thin' | 'light' | 'regular' | 'bold' | 'fill' | 'duotone';
|
|
27
|
+
/** `aria-hidden` defaults to true because HDS icons are decorative by default. */
|
|
28
|
+
'aria-hidden'?: boolean | 'true' | 'false';
|
|
29
|
+
}
|
|
30
|
+
export declare const Icon: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<SVGSVGElement>>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @public */
|
|
2
|
+
export interface InfoPageProps {
|
|
3
|
+
/** Theme flag retained for route-wrapper parity; tokenized CSS drives the actual theme swap. */
|
|
4
|
+
isDark: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* InfoPage - branded profile surface used for the portfolio landing page.
|
|
8
|
+
* @category Branding
|
|
9
|
+
*/
|
|
10
|
+
export declare function InfoPage({ isDark: _isDark }: InfoPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
type InlineCodeProps = {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
style?: CSSProperties;
|
|
5
|
+
/** Compact mode is tuned for dense body copy and table prose. */
|
|
6
|
+
compact?: boolean;
|
|
7
|
+
/** Show a copy-to-clipboard button. children must be a string when true. */
|
|
8
|
+
copyable?: boolean;
|
|
9
|
+
};
|
|
10
|
+
/** @public */
|
|
11
|
+
export declare function InlineCode({ children, style, compact, copyable }: InlineCodeProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InlineLink ” inline navigation and external-link primitive for body copy.
|
|
3
|
+
* @category Navigation
|
|
4
|
+
* @tier primitive
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
interface InlineLinkProps {
|
|
8
|
+
/** Destination route or URL. */
|
|
9
|
+
href: string;
|
|
10
|
+
/** Inline label or content to render inside the link. */
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
/** Append the external-link icon for non-internal URLs. */
|
|
13
|
+
externalIcon?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** @public */
|
|
16
|
+
export declare function InlineLink({ href, children, externalIcon }: InlineLinkProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input — text field primitive with label, helper, and error slots.
|
|
3
|
+
* @category Inputs
|
|
4
|
+
* @tier primitive
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
8
|
+
declare const inputVariants: (props?: {
|
|
9
|
+
size?: "sm" | "md" | "lg";
|
|
10
|
+
textStyle?: "body" | "mono";
|
|
11
|
+
invalid?: boolean;
|
|
12
|
+
} & import("class-variance-authority/dist/types").ClassProp) => string;
|
|
13
|
+
type InputFieldType = 'text' | 'email' | 'password' | 'search' | 'tel' | 'url' | 'number';
|
|
14
|
+
/** @public */
|
|
15
|
+
export type InputSize = NonNullable<VariantProps<typeof inputVariants>['size']>;
|
|
16
|
+
export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'disabled' | 'size'> {
|
|
17
|
+
/** Native input type. */
|
|
18
|
+
type?: InputFieldType;
|
|
19
|
+
/** Field height tier. */
|
|
20
|
+
size?: InputSize;
|
|
21
|
+
/** Body (sans) or mono text style for the value. */
|
|
22
|
+
textStyle?: 'body' | 'mono';
|
|
23
|
+
/** Field label rendered above the input. */
|
|
24
|
+
label?: string;
|
|
25
|
+
/** Supporting helper text rendered below the input when not in error. */
|
|
26
|
+
helperText?: string;
|
|
27
|
+
/** Optional leading visual rendered inside the input shell. */
|
|
28
|
+
leadingVisual?: React.ReactNode;
|
|
29
|
+
/** Optional trailing visual rendered inside the input shell. */
|
|
30
|
+
trailingVisual?: React.ReactNode;
|
|
31
|
+
/** Disable interaction. */
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
/** Mark the field as invalid (sets aria-invalid + destructive border). */
|
|
34
|
+
error?: boolean;
|
|
35
|
+
/** Error message rendered below the input when `error` is true. */
|
|
36
|
+
errorMessage?: string;
|
|
37
|
+
/** Show busy indicator and disable interaction. */
|
|
38
|
+
loading?: boolean;
|
|
39
|
+
/** Class hook for the outer wrapper. */
|
|
40
|
+
className?: string;
|
|
41
|
+
/** Class hook for the input element itself. */
|
|
42
|
+
inputClassName?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
45
|
+
/** @internal — CVA variant helper; compose via Input props instead. */
|
|
46
|
+
export { inputVariants };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tokenUtils — flatten hirobius.tokens.json into a searchable list
|
|
3
|
+
* and trace alias chains through the three-tier hierarchy.
|
|
4
|
+
*/
|
|
5
|
+
export type Tier = 'primitive' | 'semantic' | 'component';
|
|
6
|
+
export interface FlatToken {
|
|
7
|
+
path: string;
|
|
8
|
+
cssVar: string;
|
|
9
|
+
tier: Tier;
|
|
10
|
+
type: string;
|
|
11
|
+
category: string;
|
|
12
|
+
rawValue: unknown;
|
|
13
|
+
isAlias: boolean;
|
|
14
|
+
description?: string;
|
|
15
|
+
lightAlias?: string | number;
|
|
16
|
+
darkAlias?: string | number;
|
|
17
|
+
composite?: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
export declare function formatCategoryLabel(category: string): string;
|
|
20
|
+
export declare const allTokens: FlatToken[];
|
|
21
|
+
export declare function getTokensByTier(tier: Tier): FlatToken[];
|
|
22
|
+
export declare function getTierCategories(tier: Tier): string[];
|
|
23
|
+
export declare function formatTokenValue(rawValue: unknown): string;
|
|
24
|
+
/** Follow a token reference string to its FlatToken. Returns null if not found. */
|
|
25
|
+
export declare function resolveAlias(ref: unknown): FlatToken | null;
|
|
26
|
+
/**
|
|
27
|
+
* Resolves a token reference to a CSS variable string.
|
|
28
|
+
* Returns the original string when no token is found so callers can fail safely.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveAliasCssVar(ref: unknown): string;
|
|
31
|
+
/**
|
|
32
|
+
* Resolves a token reference to its concrete authored value.
|
|
33
|
+
* Useful for contrast math and other places that need literal colors,
|
|
34
|
+
* while the UI may still consume CSS vars end-to-end.
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveTokenLiteralValue(ref: unknown, mode?: 'light' | 'dark', depth?: number): string | null;
|
|
37
|
+
/** Group a flat token list by category (second segment). */
|
|
38
|
+
export declare function groupByCategory(tokens: FlatToken[]): Record<string, FlatToken[]>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Menu — dropdown menu (shadcn baseline, compound parts).
|
|
3
|
+
* @category Overlays
|
|
4
|
+
* @tier primitive
|
|
5
|
+
* @doc-exempt: no Overlays doc page yet — add demo when the overlays page is created
|
|
6
|
+
*
|
|
7
|
+
* Radix DropdownMenu (@radix-ui/react-dropdown-menu) themed with the overlay
|
|
8
|
+
* role tokens to match Dialog/Popover. Provides roving focus, type-ahead,
|
|
9
|
+
* keyboard nav, checkbox/radio items, submenus, outside-click + ESC dismissal,
|
|
10
|
+
* and portal mounting out of the box.
|
|
11
|
+
*
|
|
12
|
+
* <Menu>
|
|
13
|
+
* <Menu.Trigger asChild><Button>Actions</Button></Menu.Trigger>
|
|
14
|
+
* <Menu.Content>
|
|
15
|
+
* <Menu.Label>Account</Menu.Label>
|
|
16
|
+
* <Menu.Item onSelect={…}>Profile</Menu.Item>
|
|
17
|
+
* <Menu.Separator />
|
|
18
|
+
* <Menu.Item disabled>Sign out</Menu.Item>
|
|
19
|
+
* </Menu.Content>
|
|
20
|
+
* </Menu>
|
|
21
|
+
*/
|
|
22
|
+
import * as React from 'react';
|
|
23
|
+
import * as MenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
24
|
+
declare const MenuTrigger: React.ForwardRefExoticComponent<MenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
25
|
+
declare const MenuGroup: React.ForwardRefExoticComponent<MenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
declare const MenuRadioGroup: React.ForwardRefExoticComponent<MenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
27
|
+
declare const MenuSub: React.FC<MenuPrimitive.DropdownMenuSubProps>;
|
|
28
|
+
declare const MenuContent: React.ForwardRefExoticComponent<Omit<MenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
29
|
+
declare const MenuItem: React.ForwardRefExoticComponent<Omit<MenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
30
|
+
declare const MenuCheckboxItem: React.ForwardRefExoticComponent<Omit<MenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
31
|
+
declare const MenuRadioItem: React.ForwardRefExoticComponent<Omit<MenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
32
|
+
declare const MenuLabel: React.ForwardRefExoticComponent<Omit<MenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
33
|
+
declare const MenuSeparator: React.ForwardRefExoticComponent<Omit<MenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
34
|
+
declare const MenuSubTrigger: React.ForwardRefExoticComponent<Omit<MenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
35
|
+
declare const MenuSubContent: React.ForwardRefExoticComponent<Omit<MenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
36
|
+
interface MenuComponent extends React.FC<React.ComponentProps<typeof MenuPrimitive.Root>> {
|
|
37
|
+
Trigger: typeof MenuTrigger;
|
|
38
|
+
Content: typeof MenuContent;
|
|
39
|
+
Item: typeof MenuItem;
|
|
40
|
+
CheckboxItem: typeof MenuCheckboxItem;
|
|
41
|
+
RadioGroup: typeof MenuRadioGroup;
|
|
42
|
+
RadioItem: typeof MenuRadioItem;
|
|
43
|
+
Label: typeof MenuLabel;
|
|
44
|
+
Separator: typeof MenuSeparator;
|
|
45
|
+
Group: typeof MenuGroup;
|
|
46
|
+
Sub: typeof MenuSub;
|
|
47
|
+
SubTrigger: typeof MenuSubTrigger;
|
|
48
|
+
SubContent: typeof MenuSubContent;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Menu root + parts. Controlled via `open`/`onOpenChange`, or uncontrolled with
|
|
52
|
+
* `defaultOpen`.
|
|
53
|
+
* @public
|
|
54
|
+
*/
|
|
55
|
+
declare const Menu: MenuComponent;
|
|
56
|
+
export { Menu };
|