@hirobius/design-system 0.19.1 → 0.21.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 (175) hide show
  1. package/AGENTS.md +123 -0
  2. package/CONSUMING.md +11 -6
  3. package/DESIGN.md +34 -21
  4. package/NOTICE.md +1 -1
  5. package/README.md +48 -13
  6. package/codemods/hds-prefix.mjs +231 -0
  7. package/codemods/jsx-fold.mjs +515 -0
  8. package/codemods/not-found-pattern.mjs +71 -0
  9. package/codemods/patterns-subpath.mjs +242 -81
  10. package/codemods/patterns-subpath.names.json +41 -15
  11. package/codemods/removed-0.20.json +194 -0
  12. package/codemods/tile-grid.mjs +283 -0
  13. package/codemods/unrewritable.mjs +291 -0
  14. package/dist/chunks/DemoStateContext-Cz5TmrYu.js +32 -0
  15. package/dist/chunks/empty-state-DNoThgfV.js +1227 -0
  16. package/dist/chunks/form-By82qZcC.js +66 -0
  17. package/dist/contexts.js +157 -78
  18. package/dist/fonts/geist-mono-400.woff2 +0 -0
  19. package/dist/fonts/satoshi-400.woff2 +0 -0
  20. package/dist/fonts/satoshi-500.woff2 +0 -0
  21. package/dist/fonts/satoshi-700.woff2 +0 -0
  22. package/dist/fonts.css +53 -0
  23. package/dist/form.js +1 -1
  24. package/dist/hirobius-ui.js +1600 -5354
  25. package/dist/manifest.js +12 -13
  26. package/dist/patterns.js +796 -510
  27. package/dist/styles.css +2 -2
  28. package/dist/tokens.css +1 -1
  29. package/dist/tokens.js +165 -65
  30. package/dist/types/src/app/components/alert-dialog.d.ts +5 -0
  31. package/dist/types/src/app/components/asset-img.d.ts +1 -0
  32. package/dist/types/src/app/components/avatar-group.d.ts +2 -2
  33. package/dist/types/src/app/components/badge.d.ts +8 -3
  34. package/dist/types/src/app/components/blockquote.d.ts +2 -2
  35. package/dist/types/src/app/components/box-sx.d.ts +110 -13
  36. package/dist/types/src/app/components/box.d.ts +6 -3
  37. package/dist/types/src/app/components/breadcrumb.d.ts +0 -5
  38. package/dist/types/src/app/components/button.d.ts +35 -4
  39. package/dist/types/src/app/components/card.d.ts +10 -10
  40. package/dist/types/src/app/components/combobox.d.ts +47 -11
  41. package/dist/types/src/app/components/container.d.ts +2 -2
  42. package/dist/types/src/app/components/data-table-section.d.ts +2 -1
  43. package/dist/types/src/app/components/destructive-section.d.ts +1 -0
  44. package/dist/types/src/app/components/dialog.d.ts +8 -1
  45. package/dist/types/src/app/components/disclosure.d.ts +1 -5
  46. package/dist/types/src/app/components/error-pattern.d.ts +6 -1
  47. package/dist/types/src/app/components/field.d.ts +1 -2
  48. package/dist/types/src/app/components/form-actions.d.ts +1 -0
  49. package/dist/types/src/app/components/form-control.d.ts +10 -0
  50. package/dist/types/src/app/components/grid.d.ts +15 -6
  51. package/dist/types/src/app/components/hds-tooltip.d.ts +12 -2
  52. package/dist/types/src/app/components/icon.d.ts +1 -0
  53. package/dist/types/src/app/components/inline-code.d.ts +1 -2
  54. package/dist/types/src/app/components/input.d.ts +8 -5
  55. package/dist/types/src/app/components/kbd.d.ts +2 -2
  56. package/dist/types/src/app/components/metadata-list.d.ts +2 -2
  57. package/dist/types/src/app/components/metric-tiles.d.ts +1 -0
  58. package/dist/types/src/app/components/page-header.d.ts +0 -2
  59. package/dist/types/src/app/components/popover.d.ts +8 -0
  60. package/dist/types/src/app/components/progress.d.ts +33 -6
  61. package/dist/types/src/app/components/segmented-control.d.ts +2 -26
  62. package/dist/types/src/app/components/select.d.ts +10 -1
  63. package/dist/types/src/app/components/skeleton.d.ts +3 -4
  64. package/dist/types/src/app/components/spinner.d.ts +1 -2
  65. package/dist/types/src/app/components/stack.d.ts +4 -1
  66. package/dist/types/src/app/components/stat.d.ts +5 -5
  67. package/dist/types/src/app/components/status-list-item.d.ts +1 -2
  68. package/dist/types/src/app/components/status-tile.d.ts +3 -2
  69. package/dist/types/src/app/components/surface.d.ts +2 -3
  70. package/dist/types/src/app/components/switcher.d.ts +1 -1
  71. package/dist/types/src/app/components/table.d.ts +6 -15
  72. package/dist/types/src/app/components/tag.d.ts +0 -6
  73. package/dist/types/src/app/components/text.d.ts +54 -8
  74. package/dist/types/src/app/components/textarea.d.ts +1 -2
  75. package/dist/types/src/app/components/timestamp.d.ts +1 -0
  76. package/dist/types/src/app/components/toast.d.ts +1 -2
  77. package/dist/types/src/app/components/tooltip.d.ts +1 -1
  78. package/dist/types/src/app/context/DemoStateContext.d.ts +1 -1
  79. package/dist/types/src/app/context/RouterContext.d.ts +5 -5
  80. package/dist/types/src/app/data/manifest-types.d.ts +10 -5
  81. package/dist/types/src/app/design-system/generated-token-refs.d.ts +45 -28
  82. package/dist/types/src/app/design-system/generated-token-values.d.ts +4 -0
  83. package/dist/types/src/app/design-system/tokens.d.ts +139 -18
  84. package/dist/types/src/icons.d.ts +1 -1
  85. package/dist/types/src/index.d.ts +76 -164
  86. package/dist/types/src/patterns.d.ts +20 -25
  87. package/dist/variables.css +47 -33
  88. package/docs/CONSUMING.md +80 -48
  89. package/hirobius.tokens.json +125 -88
  90. package/llms.txt +166 -59
  91. package/mcp/catalog.mjs +366 -0
  92. package/mcp/guide.mjs +315 -0
  93. package/mcp/hds-mcp.mjs +49 -0
  94. package/mcp/server.mjs +94 -0
  95. package/package.json +48 -27
  96. package/public/hds-manifest.json +2667 -6705
  97. package/public/llms/components.txt +45 -426
  98. package/public/llms/layout.txt +5 -5
  99. package/public/llms-full.txt +245 -506
  100. package/public/llms.txt +166 -59
  101. package/scripts/eslint-plugin-hds/index.d.mts +29 -0
  102. package/scripts/eslint-plugin-hds/index.mjs +55 -0
  103. package/scripts/eslint-plugin-hds/package.json +30 -0
  104. package/scripts/eslint-plugin-hds/rules/no-raw-controls.mjs +47 -0
  105. package/scripts/eslint-plugin-hds/rules/no-raw-hex.mjs +70 -0
  106. package/scripts/eslint-plugin-hds/rules/no-raw-px-spacing.mjs +125 -0
  107. package/scripts/eslint-plugin-hds/rules/prefer-hds-layout-primitive.mjs +54 -0
  108. package/scripts/eslint-plugin-hds/rules/sx-token-first.mjs +111 -0
  109. package/scripts/eslint-plugin-hds/rules/utils.mjs +66 -0
  110. package/src/app/data/component-api.json +1082 -2913
  111. package/dist/chunks/LanguageContext-BxdCwiFg.js +0 -95
  112. package/dist/chunks/TokenDisplayContext-DKYJMVWk.js +0 -26
  113. package/dist/chunks/activity-feed-BGQ6v3wc.js +0 -22040
  114. package/dist/chunks/form-COP3vK9_.js +0 -66
  115. package/dist/types/src/app/components/activity-feed.d.ts +0 -73
  116. package/dist/types/src/app/components/app-shell.d.ts +0 -40
  117. package/dist/types/src/app/components/aspect-ratio.d.ts +0 -25
  118. package/dist/types/src/app/components/bleed.d.ts +0 -39
  119. package/dist/types/src/app/components/button-group.d.ts +0 -22
  120. package/dist/types/src/app/components/calendar.d.ts +0 -22
  121. package/dist/types/src/app/components/carousel.d.ts +0 -26
  122. package/dist/types/src/app/components/center.d.ts +0 -36
  123. package/dist/types/src/app/components/cinematic-link.d.ts +0 -18
  124. package/dist/types/src/app/components/circular-progress.d.ts +0 -28
  125. package/dist/types/src/app/components/cluster.d.ts +0 -39
  126. package/dist/types/src/app/components/command-palette.d.ts +0 -46
  127. package/dist/types/src/app/components/component-instance-matrix.d.ts +0 -27
  128. package/dist/types/src/app/components/context-menu.d.ts +0 -78
  129. package/dist/types/src/app/components/cover.d.ts +0 -43
  130. package/dist/types/src/app/components/date-input.d.ts +0 -31
  131. package/dist/types/src/app/components/date-range-input.d.ts +0 -34
  132. package/dist/types/src/app/components/date-time-input.d.ts +0 -30
  133. package/dist/types/src/app/components/doc-link-card.d.ts +0 -32
  134. package/dist/types/src/app/components/error-boundary.d.ts +0 -25
  135. package/dist/types/src/app/components/file-input.d.ts +0 -30
  136. package/dist/types/src/app/components/foundation-swatch.d.ts +0 -45
  137. package/dist/types/src/app/components/frame.d.ts +0 -38
  138. package/dist/types/src/app/components/heading-stack.d.ts +0 -52
  139. package/dist/types/src/app/components/history-card.d.ts +0 -12
  140. package/dist/types/src/app/components/hover-card.d.ts +0 -46
  141. package/dist/types/src/app/components/icon-button.d.ts +0 -22
  142. package/dist/types/src/app/components/image-lightbox.d.ts +0 -14
  143. package/dist/types/src/app/components/input-group.d.ts +0 -23
  144. package/dist/types/src/app/components/multi-selector.d.ts +0 -40
  145. package/dist/types/src/app/components/nav-group.d.ts +0 -29
  146. package/dist/types/src/app/components/nav-item.d.ts +0 -33
  147. package/dist/types/src/app/components/not-found-pattern.d.ts +0 -1
  148. package/dist/types/src/app/components/overflow-list.d.ts +0 -21
  149. package/dist/types/src/app/components/selectable-card.d.ts +0 -29
  150. package/dist/types/src/app/components/side-nav.d.ts +0 -23
  151. package/dist/types/src/app/components/sketch.d.ts +0 -19
  152. package/dist/types/src/app/components/stacked-card-rail.d.ts +0 -32
  153. package/dist/types/src/app/components/status-dot.d.ts +0 -25
  154. package/dist/types/src/app/components/stepper-field.d.ts +0 -12
  155. package/dist/types/src/app/components/stepper.d.ts +0 -33
  156. package/dist/types/src/app/components/text-lockup.d.ts +0 -38
  157. package/dist/types/src/app/components/tile-grid.d.ts +0 -17
  158. package/dist/types/src/app/components/time-input.d.ts +0 -24
  159. package/dist/types/src/app/components/toggle-button.d.ts +0 -32
  160. package/dist/types/src/app/components/token.d.ts +0 -90
  161. package/dist/types/src/app/components/tokenUtils.d.ts +0 -38
  162. package/dist/types/src/app/components/tokenizer.d.ts +0 -24
  163. package/dist/types/src/app/components/toolbar.d.ts +0 -36
  164. package/dist/types/src/app/components/top-nav.d.ts +0 -23
  165. package/dist/types/src/app/components/tree-list.d.ts +0 -30
  166. package/dist/types/src/app/data/nav-model.d.ts +0 -39
  167. package/dist/types/src/app/hooks/useFocusVisible.d.ts +0 -9
  168. package/dist/types/src/app/layouts/CaseStudyLayout.d.ts +0 -20
  169. package/dist/types/src/app/layouts/DocLayout.d.ts +0 -14
  170. package/dist/types/src/app/layouts/EmbeddedDocLayoutContext.d.ts +0 -6
  171. package/dist/types/src/app/layouts/HdsDocsShell.d.ts +0 -72
  172. package/dist/types/src/app/layouts/HdsSystemDocLayout.d.ts +0 -14
  173. package/dist/types/src/app/lib/hds-search.d.ts +0 -45
  174. package/dist/types/src/app/lib/nav-active.d.ts +0 -16
  175. package/dist/types/src/app/lib/navLevels.d.ts +0 -4
@@ -11,14 +11,14 @@
11
11
  import * as React from 'react';
12
12
  import { type VariantProps } from 'class-variance-authority';
13
13
  declare const skeletonVariants: (props?: ({
14
- variant?: "text" | "rectangular" | "circular" | null | undefined;
14
+ variant?: "text" | "circular" | "rectangular" | null | undefined;
15
15
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
16
16
  type SkeletonVariantProps = VariantProps<typeof skeletonVariants>;
17
17
  /** @public */
18
18
  export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement>, SkeletonVariantProps {
19
19
  /** Explicit width (number → px, or any CSS length). */
20
20
  width?: number | string;
21
- /** Explicit height (number → px, or any CSS length). For `text`, defaults to 1em. */
21
+ /** Explicit height (number → px, or any CSS length). For `text`, defaults to 1em; for `rectangular`, 5rem. */
22
22
  height?: number | string;
23
23
  }
24
24
  /**
@@ -26,5 +26,4 @@ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement>, Ske
26
26
  * state on the surrounding region (e.g. aria-busy) rather than per skeleton.
27
27
  */
28
28
  export declare const Skeleton: React.ForwardRefExoticComponent<SkeletonProps & React.RefAttributes<HTMLDivElement>>;
29
- /** @internal — CVA variant helper; compose via Skeleton props instead. */
30
- export { skeletonVariants };
29
+ export {};
@@ -21,5 +21,4 @@ export interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement>, Spi
21
21
  }
22
22
  /** Indeterminate spinner. Inherits the surrounding text color via currentColor. */
23
23
  export declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLSpanElement>>;
24
- /** @internal — CVA variant helper; compose via Spinner props instead. */
25
- export { spinnerVariants };
24
+ export {};
@@ -23,7 +23,10 @@ export interface StackProps {
23
23
  children: React.ReactNode;
24
24
  /** Flex direction for the stack. */
25
25
  direction?: 'row' | 'column';
26
- /** Gap token: semantic (tight, normal, inset, spacious) or primitive (px4, px8, etc). Defaults to 'tight' (16px). */
26
+ /**
27
+ * Gap token: semantic (tight, normal, inset, spacious) or primitive (px4, px8, etc). Defaults to 'tight' (16px).
28
+ * Not the t-shirt scale: Stack's 'xs' is the 2px subgrid step, while Box `sx` 'xs' is scale.xs (8px), until the 1.0 rename (hds#206).
29
+ */
27
30
  gap?: GapOption;
28
31
  /** Cross-axis alignment: start | center | end | stretch. */
29
32
  align?: FlexAlign;
@@ -16,12 +16,12 @@ export interface StatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'c
16
16
  sub?: React.ReactNode;
17
17
  }
18
18
  /**
19
- * Headline metric — large value, uppercase caption label, optional sub-line.
20
- * @usage Show one standalone headline figure with its label and an optional sub-line.
21
- * @whenNot A figure inside a Card, or a status with a trailing badge.
19
+ * Headline metric — large value, caption label, optional sub-line.
20
+ * @usage Show one headline figure inline, inside prose or a dense list, with its label and an optional sub-line.
21
+ * @whenNot A row of headline numbers on a screen, a figure inside a Card, or a status with a trailing badge.
22
+ * @useInstead MetricTiles a row of headline numbers (one MetricTile per number)
22
23
  * @useInstead Card.Metric a figure inside a Card (hds#254 folds Stat into the Card slot)
23
24
  * @useInstead StatusTile a titled status with notes and a trailing badge
24
25
  */
25
26
  export declare const Stat: React.ForwardRefExoticComponent<StatProps & React.RefAttributes<HTMLDivElement>>;
26
- /** @internal — CVA variant helper; compose via Stat props instead. */
27
- export { statVariants };
27
+ export {};
@@ -21,5 +21,4 @@ export interface StatusListItemProps extends Omit<React.HTMLAttributes<HTMLDivEl
21
21
  * Status dot + title row with optional muted notes and trailing slot (e.g. badge).
22
22
  */
23
23
  export declare const StatusListItem: React.ForwardRefExoticComponent<StatusListItemProps & React.RefAttributes<HTMLDivElement>>;
24
- /** @internal — CVA variant helper; compose via StatusListItem props instead. */
25
- export { statusListItemDotVariants };
24
+ export {};
@@ -20,8 +20,9 @@ export interface StatusTileProps extends Omit<React.HTMLAttributes<HTMLDivElemen
20
20
  * — every tile should look the same so feedback signals stay reserved for
21
21
  * genuinely interrupting states.
22
22
  * @usage Show a titled status block with optional notes and a trailing badge or affordance.
23
- * @whenNot A single headline figure, or a row inside a list.
24
- * @useInstead Card.Metric a headline figure (hds#254 folds StatusTile into the Card slot)
23
+ * @whenNot A headline number (never a value), or a row inside a list.
24
+ * @useInstead MetricTiles a row of headline numbers
25
+ * @useInstead Card.Metric a headline figure inside a Card (hds#254 folds StatusTile into the Card slot)
25
26
  * @useInstead StatusListItem a status row inside a list
26
27
  */
27
28
  export declare const StatusTile: React.ForwardRefExoticComponent<StatusTileProps & React.RefAttributes<HTMLDivElement>>;
@@ -2,7 +2,7 @@ import React, { type CSSProperties, type HTMLAttributes, type ReactNode } from '
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  import type { PaddingOption } from './surface-padding.js';
4
4
  declare const surfaceVariants: (props?: ({
5
- padding?: "none" | "item" | "px16" | "px24" | "component" | null | undefined;
5
+ padding?: "none" | "item" | "component" | "px16" | "px24" | null | undefined;
6
6
  shadow?: boolean | null | undefined;
7
7
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
8
8
  type SurfaceVariantProps = VariantProps<typeof surfaceVariants>;
@@ -26,5 +26,4 @@ export interface SurfaceProps extends Omit<HTMLAttributes<HTMLDivElement>, 'styl
26
26
  }
27
27
  /** @public */
28
28
  export declare const Surface: React.ForwardRefExoticComponent<SurfaceProps & React.RefAttributes<HTMLDivElement>>;
29
- /** @internal — CVA variant helper; compose via Surface props instead. */
30
- export { surfaceVariants };
29
+ export {};
@@ -14,7 +14,7 @@
14
14
  * (column) layout once there are more than `limit` children, regardless of
15
15
  * container width — use it to stop a row from thinning out into an
16
16
  * unreadable N-up strip. Do NOT use Switcher for content that should always
17
- * wrap in place — use Cluster.
17
+ * wrap in place — use Stack with `direction="row"` and `wrap="wrap"`.
18
18
  *
19
19
  * Every Layout reference: https://every-layout.dev/layouts/the-switcher/
20
20
  */
@@ -9,19 +9,6 @@
9
9
  * @figma https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-300
10
10
  */
11
11
  import { type ReactNode } from 'react';
12
- declare const tableHeaderCellVariants: (props?: ({
13
- align?: "center" | "left" | "right" | null | undefined;
14
- density?: "compact" | "comfortable" | "follow" | null | undefined;
15
- sticky?: boolean | null | undefined;
16
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
17
- declare const tableSortButtonVariants: (props?: ({
18
- align?: "center" | "left" | "right" | null | undefined;
19
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
20
- declare const tableDataCellVariants: (props?: ({
21
- align?: "center" | "left" | "right" | null | undefined;
22
- density?: "compact" | "comfortable" | "follow" | null | undefined;
23
- divider?: boolean | null | undefined;
24
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
25
12
  /** @public */
26
13
  export type TableColumnAlign = 'left' | 'center' | 'right';
27
14
  /** @public */
@@ -88,8 +75,12 @@ export declare function Table({ columns, rows, caption, captionAction, descripti
88
75
  * default, compact inside `[data-density="compact"]`); pass a value to fix it.
89
76
  */
90
77
  density?: TableDensity;
78
+ /**
79
+ * Drop the scroll region's own inset. On by default: every cell already carries the
80
+ * surface inset, so a padded region doubled it (48px at the edges, hds#522). Pass
81
+ * `flush={false}` to restore the extra region padding.
82
+ */
91
83
  flush?: boolean;
92
84
  stickyHeader?: boolean;
93
85
  }): import("react/jsx-runtime").JSX.Element;
94
- /** @internal — CVA variant helpers; compose via Table props instead. */
95
- export { tableHeaderCellVariants, tableDataCellVariants, tableSortButtonVariants };
86
+ export {};
@@ -20,10 +20,6 @@
20
20
  * contract expects, just keyed by selection instead of tone/size/density.
21
21
  */
22
22
  import * as React from 'react';
23
- declare const tagButtonVariants: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
24
- declare const tagPillVariants: (props?: ({
25
- selected?: boolean | null | undefined;
26
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
27
23
  /** @public */
28
24
  export interface TagProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
29
25
  /** Tag content displayed inside the pill. */
@@ -33,5 +29,3 @@ export interface TagProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElem
33
29
  }
34
30
  /** @public */
35
31
  export declare const Tag: React.ForwardRefExoticComponent<TagProps & React.RefAttributes<HTMLButtonElement>>;
36
- /** @internal — CVA variant helpers; compose via Tag props instead. */
37
- export { tagButtonVariants, tagPillVariants };
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * @category Typography
5
5
  * @tier primitive
6
+ * @figma https://www.figma.com/design/2VgBbVpKiDnu0aftJEVyBQ/HDS-Tokens-Components-Copy?node-id=2022-31
6
7
  * @usage Set any text on the type ramp, with the element chosen by `as`.
7
8
  * @whenNot Navigation links, or a keyboard hint.
8
9
  * @useInstead InlineLink a link inside body copy
@@ -10,12 +11,58 @@
10
11
  * @doc-exempt: typography primitive is documented through the Typography ramp page (TypographyPage), not as a standalone component card
11
12
  */
12
13
  import { type CSSProperties, type ElementType, type HTMLAttributes, type ReactNode } from 'react';
13
- import { type VariantProps } from 'class-variance-authority';
14
- declare const textVariants: (props?: ({
15
- variant?: "display" | "caption" | "body" | "heading1" | "heading2" | "heading3" | "ui" | "eyebrow" | "technical" | "badge" | "docLede" | "docBody" | "docSmall" | "docCode" | null | undefined;
16
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
17
- type TextVariantProps = VariantProps<typeof textVariants>;
18
- type TextVariant = NonNullable<TextVariantProps['variant']>;
14
+ /** The six roles of the type ramp, plus the deprecated names that still resolve. */
15
+ export type TextVariant = 'display' | 'title' | 'body' | 'ui' | 'caption' | 'mono'
16
+ /**
17
+ * @deprecated hds#483 — use `title`.
18
+ * @removeIn 1.0.0
19
+ */
20
+ | 'heading1'
21
+ /**
22
+ * @deprecated hds#483 — use `title`.
23
+ * @removeIn 1.0.0
24
+ */
25
+ | 'heading2'
26
+ /**
27
+ * @deprecated hds#483 — use `title`.
28
+ * @removeIn 1.0.0
29
+ */
30
+ | 'heading3'
31
+ /**
32
+ * @deprecated hds#483 — use `mono`.
33
+ * @removeIn 1.0.0
34
+ */
35
+ | 'technical'
36
+ /**
37
+ * @deprecated hds#483 — use `caption`.
38
+ * @removeIn 1.0.0
39
+ */
40
+ | 'eyebrow'
41
+ /**
42
+ * @deprecated hds#483 — use `caption`.
43
+ * @removeIn 1.0.0
44
+ */
45
+ | 'badge'
46
+ /**
47
+ * @deprecated hds#483 — use `body`.
48
+ * @removeIn 1.0.0
49
+ */
50
+ | 'docLede'
51
+ /**
52
+ * @deprecated hds#483 — use `body`.
53
+ * @removeIn 1.0.0
54
+ */
55
+ | 'docBody'
56
+ /**
57
+ * @deprecated hds#483 — use `ui`.
58
+ * @removeIn 1.0.0
59
+ */
60
+ | 'docSmall'
61
+ /**
62
+ * @deprecated hds#483 — use `mono`.
63
+ * @removeIn 1.0.0
64
+ */
65
+ | 'docCode';
19
66
  type TextTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div';
20
67
  /** @public */
21
68
  export type TextProps = {
@@ -32,5 +79,4 @@ export declare const Text: import("react").ForwardRefExoticComponent<{
32
79
  className?: string;
33
80
  style?: CSSProperties;
34
81
  } & HTMLAttributes<HTMLElement> & import("react").RefAttributes<HTMLElement>>;
35
- /** @internal — CVA variant helper; compose via Text props instead. */
36
- export { textVariants };
82
+ export {};
@@ -38,5 +38,4 @@ export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTex
38
38
  textareaClassName?: string;
39
39
  }
40
40
  export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
41
- /** @internal — CVA variant helper; compose via Textarea props instead. */
42
- export { textareaVariants };
41
+ export {};
@@ -2,6 +2,7 @@
2
2
  * Timestamp — renders a date/time as a semantic <time> element.
3
3
  * @category Display
4
4
  * @tier primitive
5
+ * @figma https://www.figma.com/design/2VgBbVpKiDnu0aftJEVyBQ/HDS-Tokens-Components-Copy?node-id=2031-11
5
6
  */
6
7
  import * as React from 'react';
7
8
  /** @public */
@@ -63,5 +63,4 @@ export interface ToastProviderProps {
63
63
  * @public
64
64
  */
65
65
  export declare function ToastProvider({ children, duration, swipeDirection, }: ToastProviderProps): import("react/jsx-runtime").JSX.Element;
66
- /** @internal — CVA variant helper; compose via ToastOptions.tone instead. */
67
- export { toastIconVariants };
66
+ export {};
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * ExpandTooltip — HDS image interaction tooltip
7
7
  *
8
- * A pill-shaped label (brand blue / white text) that indicates an image
8
+ * A pill-shaped label (accent fill / onAccent text) that indicates an image
9
9
  * is expandable. Supports two render modes:
10
10
  *
11
11
  * 'cursor' — fixed-positioned portal tracking the mouse cursor.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * DemoStateContext — React context for freezing HDS component demos into a fixed visual state.
3
3
  *
4
- * Replaces the forceHover/forceFocus/forcePressed prop trio on Button and NavItem.
4
+ * Replaces the forceHover/forceFocus/forcePressed prop trio on Button.
5
5
  * Wrap any demo with <FreezeState state="hover"> and every HDS component inside will
6
6
  * render that visual state without wiring individual force props.
7
7
  *
@@ -8,17 +8,17 @@
8
8
  * falls back to window.location. Drop-in for apps with no router
9
9
  * (e.g. job-hunt, a plain Vite/React app).
10
10
  * 2. react-router consumers — wrap the app once in <HdsRouterProvider> with an
11
- * adapter that bridges useNavigate()/useLocation()/<Link>. The docs site
12
- * does this internally via ReactRouterBridge (NOT exported).
11
+ * adapter that bridges useNavigate()/useLocation()/<Link>.
13
12
  * 3. Next.js / other routers — same seam: provide an adapter mapping to that
14
13
  * router's navigation + Link.
15
14
  *
16
15
  * IMPORTANT: this module MUST NOT import react-router (or any router). It is the
17
16
  * router-free contract every consumer can satisfy.
18
17
  *
19
- * @doc-ignore — provider/hook seam (like ThemeProvider et al.), not a visual
20
- * component; it carries no Figma specimen or docs page, so manifest discovery
21
- * must skip it despite the Hds* name prefix.
18
+ * @category Theming
19
+ * @tier primitive
20
+ * @usage Wrap the app root once so HDS links and navigation use your client router; with no provider they stay plain anchors.
21
+ * @doc-exempt: provider/hook seam like HdsThemeProvider, not a visual component; no Figma node or docs page, documented in README.md and docs/CONSUMING.md
22
22
  */
23
23
  import { type AnchorHTMLAttributes, type ReactNode } from 'react';
24
24
  /** Options forwarded to a router's navigate call (state preserved for SPA nav). */
@@ -78,6 +78,8 @@ export type ManifestComponentSpec = {
78
78
  hidden?: boolean;
79
79
  docExempt?: boolean;
80
80
  tier?: string;
81
+ /** In the ratified core set (hds#254, ADR-031). Present only as `true`; independent of `tier`. */
82
+ core?: true;
81
83
  stability?: 'stable' | 'beta';
82
84
  consumers?: string[];
83
85
  tokenMapping?: Record<string, string>;
@@ -93,12 +95,13 @@ export type ManifestComponentSpec = {
93
95
  usage?: ManifestUsage;
94
96
  keyboard?: ManifestKeyboardEntry[];
95
97
  aiRules?: string;
98
+ /** Deprecation notice from the component's `@deprecated` JSDoc tag (hds#390). */
99
+ deprecated?: string;
100
+ /** Release that removes the deprecated component, from `@removeIn`. */
101
+ removeIn?: string;
102
+ /** Replacement for the deprecated component, from `@useInstead` in the same block. */
103
+ useInstead?: string;
96
104
  };
97
- /**
98
- * Alias of ManifestComponentSpec for hds-search.ts back-compat.
99
- * @deprecated Use ManifestComponentSpec directly in new code.
100
- */
101
- export type ManifestSpec = ManifestComponentSpec;
102
105
  /** The root SystemManifest shape (virtual:hds-manifest). */
103
106
  export type SystemManifest = {
104
107
  name?: string;
@@ -128,6 +131,8 @@ export type ManifestApiComponent = {
128
131
  hidden?: boolean;
129
132
  figmaUrl?: string | null;
130
133
  description?: string;
134
+ /** In the ratified core set (hds#254, ADR-031). Present only as `true`. */
135
+ core?: true;
131
136
  usage?: ManifestUsage;
132
137
  keyboard?: ManifestKeyboardEntry[];
133
138
  aiRules?: string;
@@ -148,6 +148,7 @@ export declare const tokenRefs: {
148
148
  readonly "4xl": "var(--primitive-typography-size-4xl)";
149
149
  readonly "5xl": "var(--primitive-typography-size-5xl)";
150
150
  readonly "6xl": "var(--primitive-typography-size-6xl)";
151
+ readonly code: "var(--primitive-typography-size-code)";
151
152
  };
152
153
  readonly weight: {
153
154
  readonly regular: "var(--primitive-typography-weight-regular)";
@@ -161,6 +162,8 @@ export declare const tokenRefs: {
161
162
  readonly snug: "var(--primitive-typography-lineHeight-snug)";
162
163
  readonly normal: "var(--primitive-typography-lineHeight-normal)";
163
164
  readonly relaxed: "var(--primitive-typography-lineHeight-relaxed)";
165
+ readonly display: "var(--primitive-typography-lineHeight-display)";
166
+ readonly body: "var(--primitive-typography-lineHeight-body)";
164
167
  };
165
168
  readonly letterSpacing: {
166
169
  readonly tight: "var(--primitive-typography-letterSpacing-tight)";
@@ -203,6 +206,7 @@ export declare const tokenRefs: {
203
206
  readonly "64": "var(--primitive-size-64)";
204
207
  readonly "80": "var(--primitive-size-80)";
205
208
  readonly "96": "var(--primitive-size-96)";
209
+ readonly "120": "var(--primitive-size-120)";
206
210
  readonly interactive: {
207
211
  readonly min: "var(--primitive-size-interactive-min)";
208
212
  readonly minCompact: "var(--primitive-size-interactive-minCompact)";
@@ -304,6 +308,11 @@ export declare const tokenRefs: {
304
308
  readonly inProgress: "var(--semantic-color-feedback-bg-inProgress)";
305
309
  };
306
310
  };
311
+ readonly state: {
312
+ readonly pressed: {
313
+ readonly overlay: "var(--semantic-color-state-pressed-overlay)";
314
+ };
315
+ };
307
316
  };
308
317
  readonly space: {
309
318
  readonly scale: {
@@ -383,26 +392,12 @@ export declare const tokenRefs: {
383
392
  readonly letterSpacing: "var(--semantic-typography-display-letter-spacing)";
384
393
  readonly lineHeight: "var(--semantic-typography-display-line-height)";
385
394
  };
386
- readonly h1: {
387
- readonly fontFamily: "var(--semantic-typography-h1-font-family)";
388
- readonly fontSize: "var(--semantic-typography-h1-font-size)";
389
- readonly fontWeight: "var(--semantic-typography-h1-font-weight)";
390
- readonly letterSpacing: "var(--semantic-typography-h1-letter-spacing)";
391
- readonly lineHeight: "var(--semantic-typography-h1-line-height)";
392
- };
393
- readonly h2: {
394
- readonly fontFamily: "var(--semantic-typography-h2-font-family)";
395
- readonly fontSize: "var(--semantic-typography-h2-font-size)";
396
- readonly fontWeight: "var(--semantic-typography-h2-font-weight)";
397
- readonly letterSpacing: "var(--semantic-typography-h2-letter-spacing)";
398
- readonly lineHeight: "var(--semantic-typography-h2-line-height)";
399
- };
400
- readonly h3: {
401
- readonly fontFamily: "var(--semantic-typography-h3-font-family)";
402
- readonly fontSize: "var(--semantic-typography-h3-font-size)";
403
- readonly fontWeight: "var(--semantic-typography-h3-font-weight)";
404
- readonly letterSpacing: "var(--semantic-typography-h3-letter-spacing)";
405
- readonly lineHeight: "var(--semantic-typography-h3-line-height)";
395
+ readonly title: {
396
+ readonly fontFamily: "var(--semantic-typography-title-font-family)";
397
+ readonly fontSize: "var(--semantic-typography-title-font-size)";
398
+ readonly fontWeight: "var(--semantic-typography-title-font-weight)";
399
+ readonly letterSpacing: "var(--semantic-typography-title-letter-spacing)";
400
+ readonly lineHeight: "var(--semantic-typography-title-line-height)";
406
401
  };
407
402
  readonly body: {
408
403
  readonly fontFamily: "var(--semantic-typography-body-font-family)";
@@ -427,14 +422,6 @@ export declare const tokenRefs: {
427
422
  readonly letterSpacing: "var(--semantic-typography-caption-letter-spacing)";
428
423
  readonly lineHeight: "var(--semantic-typography-caption-line-height)";
429
424
  };
430
- readonly eyebrow: {
431
- readonly fontFamily: "var(--semantic-typography-eyebrow-font-family)";
432
- readonly fontSize: "var(--semantic-typography-eyebrow-font-size)";
433
- readonly fontWeight: "var(--semantic-typography-eyebrow-font-weight)";
434
- readonly letterSpacing: "var(--semantic-typography-eyebrow-letter-spacing)";
435
- readonly lineHeight: "var(--semantic-typography-eyebrow-line-height)";
436
- readonly textTransform: "var(--semantic-typography-eyebrow-text-transform)";
437
- };
438
425
  readonly mono: {
439
426
  readonly fontFamily: "var(--semantic-typography-mono-font-family)";
440
427
  readonly fontSize: "var(--semantic-typography-mono-font-size)";
@@ -443,6 +430,34 @@ export declare const tokenRefs: {
443
430
  readonly lineHeight: "var(--semantic-typography-mono-line-height)";
444
431
  readonly maxWidth: "var(--semantic-typography-mono-max-width)";
445
432
  };
433
+ readonly h1: {
434
+ readonly fontFamily: "var(--semantic-typography-h1-font-family)";
435
+ readonly fontSize: "var(--semantic-typography-h1-font-size)";
436
+ readonly fontWeight: "var(--semantic-typography-h1-font-weight)";
437
+ readonly letterSpacing: "var(--semantic-typography-h1-letter-spacing)";
438
+ readonly lineHeight: "var(--semantic-typography-h1-line-height)";
439
+ };
440
+ readonly h2: {
441
+ readonly fontFamily: "var(--semantic-typography-h2-font-family)";
442
+ readonly fontSize: "var(--semantic-typography-h2-font-size)";
443
+ readonly fontWeight: "var(--semantic-typography-h2-font-weight)";
444
+ readonly letterSpacing: "var(--semantic-typography-h2-letter-spacing)";
445
+ readonly lineHeight: "var(--semantic-typography-h2-line-height)";
446
+ };
447
+ readonly h3: {
448
+ readonly fontFamily: "var(--semantic-typography-h3-font-family)";
449
+ readonly fontSize: "var(--semantic-typography-h3-font-size)";
450
+ readonly fontWeight: "var(--semantic-typography-h3-font-weight)";
451
+ readonly letterSpacing: "var(--semantic-typography-h3-letter-spacing)";
452
+ readonly lineHeight: "var(--semantic-typography-h3-line-height)";
453
+ };
454
+ readonly eyebrow: {
455
+ readonly fontFamily: "var(--semantic-typography-eyebrow-font-family)";
456
+ readonly fontSize: "var(--semantic-typography-eyebrow-font-size)";
457
+ readonly fontWeight: "var(--semantic-typography-eyebrow-font-weight)";
458
+ readonly letterSpacing: "var(--semantic-typography-eyebrow-letter-spacing)";
459
+ readonly lineHeight: "var(--semantic-typography-eyebrow-line-height)";
460
+ };
446
461
  readonly lineHeight: {
447
462
  readonly none: "var(--semantic-typography-lineHeight-none)";
448
463
  };
@@ -511,6 +526,7 @@ export declare const tokenRefs: {
511
526
  readonly lg: "var(--semantic-size-icon-lg)";
512
527
  };
513
528
  readonly avatar: "var(--semantic-size-avatar)";
529
+ readonly tile: "var(--semantic-size-tile)";
514
530
  readonly row: {
515
531
  readonly compact: "var(--semantic-size-row-compact)";
516
532
  readonly comfortable: "var(--semantic-size-row-comfortable)";
@@ -641,6 +657,7 @@ export declare const tokenRefs: {
641
657
  readonly "card-foreground": "var(--role-card-foreground)";
642
658
  readonly popover: "var(--role-popover)";
643
659
  readonly scrim: "var(--role-scrim)";
660
+ readonly "pressed-overlay": "var(--role-pressed-overlay)";
644
661
  readonly "popover-foreground": "var(--role-popover-foreground)";
645
662
  readonly primary: "var(--role-primary)";
646
663
  readonly "primary-foreground": "var(--role-primary-foreground)";
@@ -149,6 +149,7 @@ export declare const tokenValues: {
149
149
  readonly "4xl": "36px";
150
150
  readonly "5xl": "48px";
151
151
  readonly "6xl": "60px";
152
+ readonly code: "13px";
152
153
  };
153
154
  readonly weight: {
154
155
  readonly regular: "400";
@@ -162,6 +163,8 @@ export declare const tokenValues: {
162
163
  readonly snug: "1.375";
163
164
  readonly normal: "1.5";
164
165
  readonly relaxed: "1.625";
166
+ readonly display: "1.05";
167
+ readonly body: "1.6";
165
168
  };
166
169
  readonly letterSpacing: {
167
170
  readonly tight: "-0.01em";
@@ -204,6 +207,7 @@ export declare const tokenValues: {
204
207
  readonly "64": "64px";
205
208
  readonly "80": "80px";
206
209
  readonly "96": "96px";
210
+ readonly "120": "120px";
207
211
  readonly interactive: {
208
212
  readonly min: "44px";
209
213
  readonly minCompact: "24px";