@hirobius/design-system 0.14.0 → 0.15.0

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.
Files changed (47) hide show
  1. package/dist/chunks/TokenDisplayContext-B3gxyQN7.js +1 -0
  2. package/dist/chunks/form-DnGRy27o.js +1 -0
  3. package/dist/contexts.js +1 -0
  4. package/dist/form.js +1 -0
  5. package/dist/hirobius-ui.js +81 -71
  6. package/dist/manifest.js +1 -1
  7. package/dist/scroll.js +1 -0
  8. package/dist/types/src/app/components/alert.d.ts +1 -1
  9. package/dist/types/src/app/components/asset-img.d.ts +1 -1
  10. package/dist/types/src/app/components/bleed.d.ts +1 -1
  11. package/dist/types/src/app/components/card.d.ts +3 -3
  12. package/dist/types/src/app/components/center.d.ts +1 -1
  13. package/dist/types/src/app/components/checkbox.d.ts +1 -2
  14. package/dist/types/src/app/components/cinematic-link.d.ts +1 -2
  15. package/dist/types/src/app/components/cluster.d.ts +1 -1
  16. package/dist/types/src/app/components/code-block.d.ts +1 -1
  17. package/dist/types/src/app/components/container.d.ts +1 -1
  18. package/dist/types/src/app/components/cover.d.ts +1 -1
  19. package/dist/types/src/app/components/disclosure.d.ts +1 -1
  20. package/dist/types/src/app/components/doc-link-card.d.ts +1 -1
  21. package/dist/types/src/app/components/error-boundary.d.ts +1 -1
  22. package/dist/types/src/app/components/error-pattern.d.ts +1 -2
  23. package/dist/types/src/app/components/frame.d.ts +1 -1
  24. package/dist/types/src/app/components/grid.d.ts +2 -2
  25. package/dist/types/src/app/components/heading-stack.d.ts +1 -1
  26. package/dist/types/src/app/components/icon-button.d.ts +1 -2
  27. package/dist/types/src/app/components/image-lightbox.d.ts +1 -2
  28. package/dist/types/src/app/components/inline-code.d.ts +1 -1
  29. package/dist/types/src/app/components/inline-link.d.ts +1 -2
  30. package/dist/types/src/app/components/nav-group.d.ts +1 -1
  31. package/dist/types/src/app/components/nav-item.d.ts +1 -1
  32. package/dist/types/src/app/components/page.d.ts +1 -1
  33. package/dist/types/src/app/components/pin.d.ts +1 -2
  34. package/dist/types/src/app/components/radio.d.ts +1 -2
  35. package/dist/types/src/app/components/reveal.d.ts +1 -2
  36. package/dist/types/src/app/components/segmented-control.d.ts +1 -1
  37. package/dist/types/src/app/components/sidebar.d.ts +1 -1
  38. package/dist/types/src/app/components/slider.d.ts +1 -2
  39. package/dist/types/src/app/components/stack.d.ts +1 -1
  40. package/dist/types/src/app/components/stepper-field.d.ts +1 -2
  41. package/dist/types/src/app/components/surface.d.ts +1 -1
  42. package/dist/types/src/app/components/switcher.d.ts +1 -1
  43. package/dist/types/src/app/components/toggle.d.ts +1 -2
  44. package/dist/types/src/app/components/token.d.ts +1 -1
  45. package/dist/types/src/app/layouts/CaseStudyLayout.d.ts +2 -3
  46. package/package.json +3 -3
  47. package/public/hds-manifest.json +3 -3
package/dist/scroll.js CHANGED
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  import { jsx as o, Fragment as d } from "react/jsx-runtime";
2
3
  import * as c from "react";
3
4
  import { ReactLenis as i } from "lenis/react";
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react';
8
8
  type AlertTone = 'success' | 'danger' | 'warning' | 'info';
9
- interface AlertProps {
9
+ export interface AlertProps {
10
10
  /** Feedback tone that controls icon, border, and surface treatment. */
11
11
  tone?: AlertTone;
12
12
  /** Optional heading shown above the body copy. */
@@ -7,7 +7,7 @@
7
7
  import { CSSProperties } from 'react';
8
8
  import type React from 'react';
9
9
  type AssetImgContext = 'default' | 'lightbox' | 'detail';
10
- interface AssetImgProps {
10
+ export interface AssetImgProps {
11
11
  /** Image source path. */
12
12
  src: string;
13
13
  /** Accessible alt text. */
@@ -20,7 +20,7 @@
20
20
  import React from 'react';
21
21
  type LayoutGap = 'tight' | 'normal' | 'inset' | 'spacious';
22
22
  type BleedAxis = 'x' | 'y' | 'both';
23
- interface BleedProps {
23
+ export interface BleedProps {
24
24
  /** Bleed content. */
25
25
  children: React.ReactNode;
26
26
  /** Semantic space step to negate. Defaults to 'normal'. */
@@ -89,7 +89,7 @@ interface CardComponent extends React.ForwardRefExoticComponent<CardProps & Reac
89
89
  Progress: typeof CardProgress;
90
90
  Metric: typeof CardMetric;
91
91
  }
92
- interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
92
+ export interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
93
93
  /** Top-of-card metadata zone — status badges, tags, eyebrow labels.
94
94
  * Accepts <Badge>, <Tag>, or compound nodes. NEVER pass raw spans
95
95
  * with status colors here; use the proper primitive so tone, padding,
@@ -104,7 +104,7 @@ declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HT
104
104
  declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
105
105
  declare const CardBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
106
106
  declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
107
- interface CardProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'aria-valuemin' | 'aria-valuemax' | 'aria-valuenow'> {
107
+ export interface CardProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'aria-valuemin' | 'aria-valuemax' | 'aria-valuenow'> {
108
108
  /** Current value (0..max). */
109
109
  value: number;
110
110
  /** Maximum value. Defaults to 100. */
@@ -118,7 +118,7 @@ interface CardProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>, '
118
118
  tone?: CardTone;
119
119
  }
120
120
  declare const CardProgress: React.ForwardRefExoticComponent<CardProgressProps & React.RefAttributes<HTMLDivElement>>;
121
- interface CardMetricProps extends React.HTMLAttributes<HTMLDivElement> {
121
+ export interface CardMetricProps extends React.HTMLAttributes<HTMLDivElement> {
122
122
  /** Uppercase eyebrow label (e.g. "Retainer", "Open tasks"). */
123
123
  label: React.ReactNode;
124
124
  /** Big value (e.g. "$3,500", "12", "67%"). Rendered at h2 weight. */
@@ -17,7 +17,7 @@
17
17
  import React from 'react';
18
18
  type CenterMaxWidth = 'content' | 'max';
19
19
  type LayoutGap = 'tight' | 'normal' | 'inset' | 'spacious';
20
- interface CenterProps {
20
+ export interface CenterProps {
21
21
  /** Center content. */
22
22
  children: React.ReactNode;
23
23
  /** Max width: 'content' (760px prose) | 'max' (1200px full layouts). Defaults to 'content'. */
@@ -7,7 +7,7 @@
7
7
  import type { InputHTMLAttributes } from 'react';
8
8
  /** HdsCheckbox — custom-drawn checkbox with check / indeterminate glyph. */
9
9
  export type HdsCheckboxDemoState = 'rest' | 'hover' | 'focused' | 'pressed' | 'disabled';
10
- interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'onChange'> {
10
+ export interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'onChange'> {
11
11
  /** Checkbox label displayed next to the control. */
12
12
  label: string;
13
13
  /** Current checked state. */
@@ -18,4 +18,3 @@ interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'typ
18
18
  indeterminate?: boolean;
19
19
  }
20
20
  export declare const HdsCheckbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLInputElement>>;
21
- export {};
@@ -4,10 +4,9 @@
4
4
  * @tier primitive
5
5
  */
6
6
  import React from 'react';
7
- interface CinematicLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {
7
+ export interface CinematicLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {
8
8
  href: string;
9
9
  children: string;
10
10
  }
11
11
  /** @public */
12
12
  export declare function CinematicLink({ href, children, style, className, ...rest }: CinematicLinkProps): import("react/jsx-runtime").JSX.Element;
13
- export {};
@@ -18,7 +18,7 @@ import React from 'react';
18
18
  type LayoutGap = 'tight' | 'normal' | 'inset' | 'spacious';
19
19
  type ClusterAlign = 'start' | 'center' | 'end' | 'stretch';
20
20
  type ClusterJustify = 'start' | 'center' | 'end' | 'space-between';
21
- interface ClusterProps {
21
+ export interface ClusterProps {
22
22
  /** Cluster content — items that wrap as a unit. */
23
23
  children: React.ReactNode;
24
24
  /** Gap token applied to both axes (row and column). Defaults to 'tight'. */
@@ -21,7 +21,7 @@ declare const blockCodeTextVariants: (props?: import("class-variance-authority/d
21
21
  declare const prePanelVariants: (props?: {
22
22
  panelBackground?: boolean;
23
23
  } & import("class-variance-authority/dist/types").ClassProp) => string;
24
- interface CodeBlockProps {
24
+ export interface CodeBlockProps {
25
25
  /** Code string displayed in the block. */
26
26
  code: string;
27
27
  /** Visual presentation mode for block snippets vs inline single-line code. */
@@ -24,7 +24,7 @@
24
24
  */
25
25
  import type { ReactNode, CSSProperties } from 'react';
26
26
  type MaxWidthOption = 'content' | 'max';
27
- interface ContainerProps {
27
+ export interface ContainerProps {
28
28
  /** Container content. */
29
29
  children: ReactNode;
30
30
  /** Max width: 'content' (760px for prose) | 'max' (1200px for full layouts). Defaults to 'max'. */
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import React from 'react';
20
20
  type LayoutGap = 'tight' | 'normal' | 'inset' | 'spacious';
21
- interface CoverProps {
21
+ export interface CoverProps {
22
22
  /** The centered main region — takes the remaining space via auto margins. Also available as `centerSlot`. */
23
23
  children?: React.ReactNode;
24
24
  /** Alias for `children` — the centered main region. If both are set, `centerSlot` wins. */
@@ -9,7 +9,7 @@ type DisclosureVariant = 'panel' | 'nav' | 'card';
9
9
  declare const disclosureTriggerVariants: (props?: {
10
10
  variant?: "nav" | "panel" | "card";
11
11
  } & import("class-variance-authority/dist/types").ClassProp) => string;
12
- type DisclosureProps = {
12
+ export type DisclosureProps = {
13
13
  /** Summary label rendered in the disclosure trigger. Accepts a string or ReactNode for icon+label combos. */
14
14
  label: ReactNode;
15
15
  /** Whether the disclosure starts in the open state. */
@@ -1,5 +1,5 @@
1
1
  import { type LucideIcon } from 'lucide-react';
2
- interface DocLinkCardProps {
2
+ export interface DocLinkCardProps {
3
3
  /** Primary title displayed in the card. */
4
4
  title: string;
5
5
  /** Supporting body copy shown below the title. */
@@ -6,7 +6,7 @@
6
6
  * @doc-exempt: runtime safety infra, not an LLM-facing layout primitive
7
7
  */
8
8
  import { Component, type ErrorInfo, type ReactNode } from 'react';
9
- interface ErrorBoundaryProps {
9
+ export interface ErrorBoundaryProps {
10
10
  children: ReactNode;
11
11
  slotLabel?: string;
12
12
  minHeight?: string;
@@ -1,4 +1,4 @@
1
- type ErrorPatternProps = {
1
+ export type ErrorPatternProps = {
2
2
  /** Large recovery headline rendered through the animated cascade treatment. */
3
3
  displayText?: string;
4
4
  /** Supporting message explaining the recovery state to the user. */
@@ -6,4 +6,3 @@ type ErrorPatternProps = {
6
6
  };
7
7
  /** @public */
8
8
  export declare function ErrorPattern({ displayText, message, }: ErrorPatternProps): import("react/jsx-runtime").JSX.Element;
9
- export {};
@@ -19,7 +19,7 @@
19
19
  */
20
20
  import React from 'react';
21
21
  type FrameRadius = 'none' | 'sm' | 'md' | 'full';
22
- interface FrameProps {
22
+ export interface FrameProps {
23
23
  /** Media rendered inside the locked-ratio, clipped frame. */
24
24
  children: React.ReactNode;
25
25
  /** Desired width-to-height ratio, e.g. `16 / 9`. Defaults to `16 / 9`. */
@@ -27,7 +27,7 @@
27
27
  import React, { type ReactNode, type CSSProperties } from 'react';
28
28
  type SemanticGap = 'tight' | 'normal' | 'inset' | 'spacious';
29
29
  type GridLayout = 'fixed' | 'auto-fit';
30
- interface GridProps {
30
+ export interface GridProps {
31
31
  /** Grid content. */
32
32
  children: ReactNode;
33
33
  /** Grid layout mode: 'fixed' (responsive) or 'auto-fit' (card wrapping). Defaults to 'fixed'. */
@@ -45,7 +45,7 @@ interface GridProps {
45
45
  /** Element rendered as the outer wrapper. Defaults to 'div'. */
46
46
  as?: React.ElementType;
47
47
  }
48
- interface GridItemProps {
48
+ export interface GridItemProps {
49
49
  children: ReactNode;
50
50
  /** Number of columns this item spans (out of the grid's column count). */
51
51
  colSpan?: number;
@@ -30,7 +30,7 @@ type HdsHeadingLevel = NonNullable<HeadingStackLevelVariantProps['level']>;
30
30
  type HdsHeadingGap = NonNullable<HeadingStackGapVariantProps['gap']>;
31
31
  type HdsHeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
32
32
  type HdsSupportingTag = 'p' | 'div' | 'span';
33
- interface HeadingStackProps {
33
+ export interface HeadingStackProps {
34
34
  /** The heading content (string). */
35
35
  heading: string;
36
36
  /** The supporting copy rendered beneath the heading. */
@@ -1,7 +1,7 @@
1
1
  import type { LucideIcon } from 'lucide-react';
2
2
  import { ButtonProps } from './button.js';
3
3
  import { IconSize } from './icon.js';
4
- interface IconButtonProps extends Omit<ButtonProps, 'iconOnly' | 'children' | 'size'> {
4
+ export interface IconButtonProps extends Omit<ButtonProps, 'iconOnly' | 'children' | 'size'> {
5
5
  /** Lucide icon rendered inside the button. */
6
6
  icon: LucideIcon;
7
7
  /** Size token for the button itself. */
@@ -20,4 +20,3 @@ interface IconButtonProps extends Omit<ButtonProps, 'iconOnly' | 'children' | 's
20
20
  */
21
21
  /** @public */
22
22
  export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
23
- export {};
@@ -1,4 +1,4 @@
1
- interface LightboxProps {
1
+ export interface LightboxProps {
2
2
  open: boolean;
3
3
  onClose: () => void;
4
4
  src: string;
@@ -10,4 +10,3 @@ interface LightboxProps {
10
10
  captionLabel?: string;
11
11
  }
12
12
  export declare function Lightbox({ open, onClose, src, alt, naturalWidth, naturalHeight, caption, captionHref, captionLabel, }: LightboxProps): import("react/jsx-runtime").JSX.Element;
13
- export {};
@@ -4,7 +4,7 @@ declare const inlineCodeVariants: (props?: {
4
4
  density?: "compact" | "comfortable";
5
5
  } & import("class-variance-authority/dist/types").ClassProp) => string;
6
6
  type InlineCodeVariantProps = VariantProps<typeof inlineCodeVariants>;
7
- type InlineCodeProps = {
7
+ export type InlineCodeProps = {
8
8
  children: ReactNode;
9
9
  style?: CSSProperties;
10
10
  /** Layout density. `compact` tightens vertical rhythm for dense body copy and table prose. Defaults to `comfortable`. */
@@ -5,7 +5,7 @@
5
5
  * @figma https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-161
6
6
  */
7
7
  import React from 'react';
8
- interface InlineLinkProps {
8
+ export interface InlineLinkProps {
9
9
  /** Destination route or URL. */
10
10
  href: string;
11
11
  /** Inline label or content to render inside the link. */
@@ -15,4 +15,3 @@ interface InlineLinkProps {
15
15
  }
16
16
  /** @public */
17
17
  export declare function InlineLink({ href, children, externalIcon }: InlineLinkProps): import("react/jsx-runtime").JSX.Element;
18
- export {};
@@ -10,7 +10,7 @@ type NavGroupVariant = 'side' | 'toc';
10
10
  declare const navGroupLabelVariants: (props?: {
11
11
  variant?: "side" | "toc";
12
12
  } & import("class-variance-authority/dist/types").ClassProp) => string;
13
- type NavGroupProps = {
13
+ export type NavGroupProps = {
14
14
  label?: string;
15
15
  variant?: NavGroupVariant;
16
16
  level?: NavLevel;
@@ -11,7 +11,7 @@ declare const navIndicatorVariants: (props?: {
11
11
  type NavItemVariantProps = VariantProps<typeof navItemVariants>;
12
12
  type NavVariant = NonNullable<NavItemVariantProps['variant']>;
13
13
  type NavNativeProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'children' | 'onClick'>;
14
- interface NavProps extends NavNativeProps {
14
+ export interface NavProps extends NavNativeProps {
15
15
  /** Visual layout variant for side nav or table of contents usage. */
16
16
  variant?: NavVariant;
17
17
  /** Text label displayed inside the navigation row. */
@@ -28,7 +28,7 @@
28
28
  import type { ReactNode, CSSProperties } from 'react';
29
29
  type MaxWidth = 'content' | 'max';
30
30
  type PaddingY = 'default' | 'compact' | 'none';
31
- interface PageProps {
31
+ export interface PageProps {
32
32
  children: ReactNode;
33
33
  /** Max width: 'content' (760px for prose) | 'max' (1200px). Defaults to 'max'. */
34
34
  maxWidth?: MaxWidth;
@@ -13,7 +13,7 @@
13
13
  * `@hirobius/design-system/scroll`. See ADR-021.
14
14
  */
15
15
  import React from 'react';
16
- interface PinProps {
16
+ export interface PinProps {
17
17
  /** Content pinned within the scroll region. */
18
18
  children: React.ReactNode;
19
19
  /** Sticky offset from the top of the scroll region (CSS length). Defaults to '0'. */
@@ -27,4 +27,3 @@ interface PinProps {
27
27
  }
28
28
  /** @public */
29
29
  export declare const Pin: React.ForwardRefExoticComponent<PinProps & React.RefAttributes<HTMLDivElement>>;
30
- export {};
@@ -7,7 +7,7 @@
7
7
  import type { InputHTMLAttributes } from 'react';
8
8
  /** HdsRadio — radio button with animated selection indicator. */
9
9
  export type HdsRadioDemoState = 'rest' | 'hover' | 'focused' | 'pressed' | 'disabled';
10
- interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'onChange'> {
10
+ export interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'onChange'> {
11
11
  /** Radio label displayed next to the control. */
12
12
  label: string;
13
13
  /** Current checked state. */
@@ -16,4 +16,3 @@ interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'
16
16
  onChange: (v: boolean) => void;
17
17
  }
18
18
  export declare const HdsRadio: import("react").ForwardRefExoticComponent<RadioProps & import("react").RefAttributes<HTMLInputElement>>;
19
- export {};
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import React from 'react';
16
16
  export type RevealAnimation = 'fade' | 'fade-up' | 'fade-down' | 'scale';
17
- interface RevealProps {
17
+ export interface RevealProps {
18
18
  /** Content revealed as it scrolls into view. */
19
19
  children: React.ReactNode;
20
20
  /** Entrance animation. Defaults to 'fade-up'. */
@@ -28,4 +28,3 @@ interface RevealProps {
28
28
  }
29
29
  /** @public */
30
30
  export declare const Reveal: React.ForwardRefExoticComponent<RevealProps & React.RefAttributes<HTMLDivElement>>;
31
- export {};
@@ -39,7 +39,7 @@ interface HdsSegmentedOption {
39
39
  /** Optional supporting description shown below the label. */
40
40
  description?: string;
41
41
  }
42
- interface SegmentedControlProps {
42
+ export interface SegmentedControlProps {
43
43
  /** Accessible label for the control. */
44
44
  label?: string;
45
45
  /** Accessible label when no visible label should be rendered. */
@@ -22,7 +22,7 @@
22
22
  import React from 'react';
23
23
  type SidebarSide = 'start' | 'end';
24
24
  type LayoutGap = 'tight' | 'normal' | 'inset' | 'spacious';
25
- interface SidebarProps {
25
+ export interface SidebarProps {
26
26
  /** Exactly two children: the rail first, the fluid content second (DOM order — `side` only changes visual order). */
27
27
  children: [React.ReactNode, React.ReactNode];
28
28
  /** Which visual edge the rail renders on. Defaults to 'start'. */
@@ -5,7 +5,7 @@
5
5
  * @figma https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-265
6
6
  */
7
7
  /** HdsSlider — range slider with label and value display. */
8
- interface SliderProps {
8
+ export interface SliderProps {
9
9
  /** Slider label. */
10
10
  label: string;
11
11
  /** Minimum value in the range. */
@@ -20,4 +20,3 @@ interface SliderProps {
20
20
  onChange: (v: number) => void;
21
21
  }
22
22
  export declare const HdsSlider: import("react").ForwardRefExoticComponent<SliderProps & import("react").RefAttributes<HTMLInputElement>>;
23
- export {};
@@ -14,7 +14,7 @@ type SectionGap = 'stack';
14
14
  type GapOption = SemanticGap | ComponentGap | SubgridGap | SectionGap | keyof typeof hds.space;
15
15
  type FlexAlign = 'start' | 'center' | 'end' | 'stretch';
16
16
  type FlexJustify = 'start' | 'center' | 'end' | 'space-between';
17
- interface StackProps {
17
+ export interface StackProps {
18
18
  /** Stack content rendered inside the flex wrapper. */
19
19
  children: React.ReactNode;
20
20
  /** Flex direction for the stack. */
@@ -1,4 +1,4 @@
1
- interface StepperFieldProps {
1
+ export interface StepperFieldProps {
2
2
  label: string;
3
3
  value: number;
4
4
  min: number;
@@ -10,4 +10,3 @@ interface StepperFieldProps {
10
10
  }
11
11
  /** @public */
12
12
  export declare function StepperField({ label, value, min, max, step, onChange, inputStep, precision, }: StepperFieldProps): import("react/jsx-runtime").JSX.Element;
13
- export {};
@@ -6,7 +6,7 @@ declare const surfaceVariants: (props?: {
6
6
  shadow?: boolean;
7
7
  } & import("class-variance-authority/dist/types").ClassProp) => string;
8
8
  type SurfaceVariantProps = VariantProps<typeof surfaceVariants>;
9
- interface SurfaceProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'className'>, Omit<SurfaceVariantProps, 'shadow'> {
9
+ export interface SurfaceProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'className'>, Omit<SurfaceVariantProps, 'shadow'> {
10
10
  /** Surface content. */
11
11
  children?: ReactNode;
12
12
  /** Padding: 'component' (24px, default) | 'item' (16px) | primitive px values | 'none' (0px). */
@@ -20,7 +20,7 @@
20
20
  */
21
21
  import React from 'react';
22
22
  type LayoutGap = 'tight' | 'normal' | 'inset' | 'spacious';
23
- interface SwitcherProps {
23
+ export interface SwitcherProps {
24
24
  /** Switcher content — peer items that flip between row and column as a unit. */
25
25
  children: React.ReactNode;
26
26
  /** Container width below which items stack vertically (CSS length, e.g. '30rem'). Defaults to '30rem'. */
@@ -7,7 +7,7 @@
7
7
  import type { InputHTMLAttributes } from 'react';
8
8
  /** HdsToggle — boolean on/off toggle with animated thumb. */
9
9
  export type HdsToggleDemoState = 'rest' | 'hover' | 'focused' | 'pressed' | 'disabled';
10
- interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'onChange'> {
10
+ export interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'onChange'> {
11
11
  /** Toggle label displayed next to the control. */
12
12
  label: string;
13
13
  /** Current checked state. */
@@ -16,4 +16,3 @@ interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'
16
16
  onChange: (v: boolean) => void;
17
17
  }
18
18
  export declare const HdsToggle: import("react").ForwardRefExoticComponent<ToggleProps & import("react").RefAttributes<HTMLInputElement>>;
19
- export {};
@@ -69,7 +69,7 @@ type TokenDiagramProps = TokenBaseProps & {
69
69
  rawValue?: React.ReactNode;
70
70
  onClick?: () => void;
71
71
  };
72
- type TokenProps = TokenNodeSurfaceProps | TokenDiagramProps;
72
+ export type TokenProps = TokenNodeSurfaceProps | TokenDiagramProps;
73
73
  /**
74
74
  * Token - unified token component.
75
75
  *
@@ -10,12 +10,11 @@
10
10
  * contentSlot → full-width (maxWidth="max") — chapters, galleries, learnings
11
11
  */
12
12
  import type { ReactNode } from 'react';
13
- interface CaseStudyLayoutProps {
13
+ export interface CaseStudyLayoutProps {
14
14
  heroSlot: ReactNode;
15
15
  introSlot: ReactNode;
16
16
  metricsSlot?: ReactNode;
17
17
  contentSlot: ReactNode;
18
18
  }
19
19
  /** @public */
20
- export declare function CaseStudyLayout({ heroSlot, introSlot, metricsSlot, contentSlot }: CaseStudyLayoutProps): import("react/jsx-runtime").JSX.Element;
21
- export {};
20
+ export declare function CaseStudyLayout({ heroSlot, introSlot, metricsSlot, contentSlot, }: CaseStudyLayoutProps): import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "license": "SEE LICENSE IN NOTICE.md",
21
21
  "private": false,
22
- "version": "0.14.0",
22
+ "version": "0.15.0",
23
23
  "engines": {
24
24
  "node": ">=20",
25
25
  "pnpm": ">=8"
@@ -333,13 +333,13 @@
333
333
  "manifest:generate": "node scripts/generate-manifest.mjs && node scripts/generate-component-api.mjs && node scripts/enrich-manifest.mjs",
334
334
  "manifest:project": "node scripts/generate-manifest-projection.mjs",
335
335
  "prebuild:lib": "node scripts/generate-component-api.mjs",
336
- "pretest": "node scripts/validate-manifest.mjs && node scripts/check-manifest-drift.mjs && node scripts/check-manifest-schema-semver.mjs && node scripts/audit-component-integrity.mjs --completeness && node scripts/check-source-canon.mjs && node scripts/check-binding-drift.mjs && node scripts/check-registry.mjs && node scripts/check-tenant-tokens.mjs && knip --no-exit-code",
336
+ "pretest": "node scripts/validate-manifest.mjs && node scripts/check-manifest-drift.mjs && node scripts/check-manifest-schema-semver.mjs && node scripts/audit-component-integrity.mjs --completeness && node scripts/check-source-canon.mjs && node scripts/check-binding-drift.mjs && node scripts/check-registry.mjs && node scripts/check-tenant-tokens.mjs && node scripts/check-props-exports.mjs && knip --no-exit-code",
337
337
  "promote": "node scripts/promote.mjs",
338
338
  "hds:new": "node scripts/scaffold-component.mjs",
339
339
  "scaffold:component": "node scripts/scaffold-component.mjs",
340
340
  "scaffold:tenant": "node scripts/scaffold-tenant.mjs",
341
341
  "size-limit": "size-limit --config .size-limit.cjs",
342
- "smoke:consumer": "node scripts/smoke-consumer.mjs && node scripts/check-published-types.mjs",
342
+ "smoke:consumer": "node scripts/smoke-consumer.mjs && node scripts/check-published-types.mjs && node scripts/check-rsc-directives.mjs",
343
343
  "sync": "node scripts/build-tokens.mjs && node scripts/audit-tokens.mjs --forbidden && node scripts/build-handoff.mjs && node scripts/build-design-md.mjs && node scripts/build-figma-variables.mjs",
344
344
  "sync:health": "node scripts/generate-manifest.mjs && node scripts/generate-component-api.mjs && node scripts/enrich-manifest.mjs && node scripts/build-tokens.mjs && node scripts/audit-tokens.mjs --report-only && node scripts/build-design-md.mjs",
345
345
  "test": "vitest run --passWithNoTests",
@@ -2,7 +2,7 @@
2
2
  "name": "Hirobius Design System",
3
3
  "description": "Three-tier design token system for Adrian Milsap's portfolio site. Tokens flow primitive → semantic → component. All visual decisions trace back to hirobius.tokens.json.",
4
4
  "version": "1",
5
- "generated": "2026-09-21T02:18:05.720Z",
5
+ "generated": "2026-09-23T02:51:22.454Z",
6
6
  "source": "hirobius.tokens.json",
7
7
  "format": "W3C DTCG 2025.10",
8
8
  "docs": "https://adrianmilsap.com/hds",
@@ -28,8 +28,8 @@
28
28
  "consumeTypography": "hds.typeStyles.h1 (inline style object) — never Tailwind font classes"
29
29
  },
30
30
  "brand": {
31
- "primaryColor": "#1E2EFD",
32
- "primaryColorToken": "primitive.color.blue.500",
31
+ "primaryColor": "#111111",
32
+ "primaryColorToken": "semantic.accent.rest",
33
33
  "font": "Satoshi variable 100–900, self-hosted",
34
34
  "spacingBase": "4px",
35
35
  "buttonBorderRadius": "0px",