@hjmds/design-contracts 0.8.2

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 (353) hide show
  1. package/README.md +208 -0
  2. package/dist/alert-dialog.d.ts +102 -0
  3. package/dist/alert-dialog.d.ts.map +1 -0
  4. package/dist/alert-dialog.js +136 -0
  5. package/dist/alert-dialog.js.map +1 -0
  6. package/dist/base-recipes.d.ts +184 -0
  7. package/dist/base-recipes.d.ts.map +1 -0
  8. package/dist/base-recipes.js +129 -0
  9. package/dist/base-recipes.js.map +1 -0
  10. package/dist/behaviors.d.ts +1254 -0
  11. package/dist/behaviors.d.ts.map +1 -0
  12. package/dist/behaviors.js +972 -0
  13. package/dist/behaviors.js.map +1 -0
  14. package/dist/bottom-navigation-defaults.d.ts +13 -0
  15. package/dist/bottom-navigation-defaults.d.ts.map +1 -0
  16. package/dist/bottom-navigation-defaults.js +10 -0
  17. package/dist/bottom-navigation-defaults.js.map +1 -0
  18. package/dist/bottom-navigation.d.ts +114 -0
  19. package/dist/bottom-navigation.d.ts.map +1 -0
  20. package/dist/bottom-navigation.js +223 -0
  21. package/dist/bottom-navigation.js.map +1 -0
  22. package/dist/breadcrumb.d.ts +97 -0
  23. package/dist/breadcrumb.d.ts.map +1 -0
  24. package/dist/breadcrumb.js +99 -0
  25. package/dist/breadcrumb.js.map +1 -0
  26. package/dist/calendar.d.ts +285 -0
  27. package/dist/calendar.d.ts.map +1 -0
  28. package/dist/calendar.js +297 -0
  29. package/dist/calendar.js.map +1 -0
  30. package/dist/card.d.ts +39 -0
  31. package/dist/card.d.ts.map +1 -0
  32. package/dist/card.js +50 -0
  33. package/dist/card.js.map +1 -0
  34. package/dist/carousel.d.ts +180 -0
  35. package/dist/carousel.d.ts.map +1 -0
  36. package/dist/carousel.js +172 -0
  37. package/dist/carousel.js.map +1 -0
  38. package/dist/catalog.d.ts +7158 -0
  39. package/dist/catalog.d.ts.map +1 -0
  40. package/dist/catalog.js +220 -0
  41. package/dist/catalog.js.map +1 -0
  42. package/dist/collection.d.ts +123 -0
  43. package/dist/collection.d.ts.map +1 -0
  44. package/dist/collection.js +211 -0
  45. package/dist/collection.js.map +1 -0
  46. package/dist/color-references.d.ts +46 -0
  47. package/dist/color-references.d.ts.map +1 -0
  48. package/dist/color-references.js +39 -0
  49. package/dist/color-references.js.map +1 -0
  50. package/dist/colors.d.ts +56 -0
  51. package/dist/colors.d.ts.map +1 -0
  52. package/dist/colors.js +90 -0
  53. package/dist/colors.js.map +1 -0
  54. package/dist/command-palette.d.ts +240 -0
  55. package/dist/command-palette.d.ts.map +1 -0
  56. package/dist/command-palette.js +97 -0
  57. package/dist/command-palette.js.map +1 -0
  58. package/dist/component-contracts.d.ts +137 -0
  59. package/dist/component-contracts.d.ts.map +1 -0
  60. package/dist/component-contracts.js +53 -0
  61. package/dist/component-contracts.js.map +1 -0
  62. package/dist/component-definitions.d.ts +135 -0
  63. package/dist/component-definitions.d.ts.map +1 -0
  64. package/dist/component-definitions.js +142 -0
  65. package/dist/component-definitions.js.map +1 -0
  66. package/dist/component-recipes.d.ts +3583 -0
  67. package/dist/component-recipes.d.ts.map +1 -0
  68. package/dist/component-recipes.js +1503 -0
  69. package/dist/component-recipes.js.map +1 -0
  70. package/dist/component-references.d.ts +416 -0
  71. package/dist/component-references.d.ts.map +1 -0
  72. package/dist/component-references.js +140 -0
  73. package/dist/component-references.js.map +1 -0
  74. package/dist/content-state.d.ts +104 -0
  75. package/dist/content-state.d.ts.map +1 -0
  76. package/dist/content-state.js +116 -0
  77. package/dist/content-state.js.map +1 -0
  78. package/dist/counter-badge-recipe.d.ts +80 -0
  79. package/dist/counter-badge-recipe.d.ts.map +1 -0
  80. package/dist/counter-badge-recipe.js +44 -0
  81. package/dist/counter-badge-recipe.js.map +1 -0
  82. package/dist/counter-badge.d.ts +12 -0
  83. package/dist/counter-badge.d.ts.map +1 -0
  84. package/dist/counter-badge.js +21 -0
  85. package/dist/counter-badge.js.map +1 -0
  86. package/dist/data-table.d.ts +203 -0
  87. package/dist/data-table.d.ts.map +1 -0
  88. package/dist/data-table.js +182 -0
  89. package/dist/data-table.js.map +1 -0
  90. package/dist/date-picker.d.ts +268 -0
  91. package/dist/date-picker.d.ts.map +1 -0
  92. package/dist/date-picker.js +168 -0
  93. package/dist/date-picker.js.map +1 -0
  94. package/dist/description-list.d.ts +68 -0
  95. package/dist/description-list.d.ts.map +1 -0
  96. package/dist/description-list.js +85 -0
  97. package/dist/description-list.js.map +1 -0
  98. package/dist/design-system-provider.d.ts +80 -0
  99. package/dist/design-system-provider.d.ts.map +1 -0
  100. package/dist/design-system-provider.js +147 -0
  101. package/dist/design-system-provider.js.map +1 -0
  102. package/dist/evidence.d.ts +49 -0
  103. package/dist/evidence.d.ts.map +1 -0
  104. package/dist/evidence.js +133 -0
  105. package/dist/evidence.js.map +1 -0
  106. package/dist/file-picker.d.ts +183 -0
  107. package/dist/file-picker.d.ts.map +1 -0
  108. package/dist/file-picker.js +224 -0
  109. package/dist/file-picker.js.map +1 -0
  110. package/dist/floating-action-button.d.ts +143 -0
  111. package/dist/floating-action-button.d.ts.map +1 -0
  112. package/dist/floating-action-button.js +149 -0
  113. package/dist/floating-action-button.js.map +1 -0
  114. package/dist/form.d.ts +143 -0
  115. package/dist/form.d.ts.map +1 -0
  116. package/dist/form.js +206 -0
  117. package/dist/form.js.map +1 -0
  118. package/dist/foundations.d.ts +300 -0
  119. package/dist/foundations.d.ts.map +1 -0
  120. package/dist/foundations.js +238 -0
  121. package/dist/foundations.js.map +1 -0
  122. package/dist/grid.d.ts +75 -0
  123. package/dist/grid.d.ts.map +1 -0
  124. package/dist/grid.js +133 -0
  125. package/dist/grid.js.map +1 -0
  126. package/dist/icon-button-recipe.d.ts +99 -0
  127. package/dist/icon-button-recipe.d.ts.map +1 -0
  128. package/dist/icon-button-recipe.js +53 -0
  129. package/dist/icon-button-recipe.js.map +1 -0
  130. package/dist/icon.d.ts +41 -0
  131. package/dist/icon.d.ts.map +1 -0
  132. package/dist/icon.js +147 -0
  133. package/dist/icon.js.map +1 -0
  134. package/dist/image.d.ts +82 -0
  135. package/dist/image.d.ts.map +1 -0
  136. package/dist/image.js +100 -0
  137. package/dist/image.js.map +1 -0
  138. package/dist/index.d.ts +58 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +66 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/layout.d.ts +118 -0
  143. package/dist/layout.d.ts.map +1 -0
  144. package/dist/layout.js +118 -0
  145. package/dist/layout.js.map +1 -0
  146. package/dist/link.d.ts +57 -0
  147. package/dist/link.d.ts.map +1 -0
  148. package/dist/link.js +142 -0
  149. package/dist/link.js.map +1 -0
  150. package/dist/load-more.d.ts +64 -0
  151. package/dist/load-more.d.ts.map +1 -0
  152. package/dist/load-more.js +124 -0
  153. package/dist/load-more.js.map +1 -0
  154. package/dist/mentions.d.ts +67 -0
  155. package/dist/mentions.d.ts.map +1 -0
  156. package/dist/mentions.js +107 -0
  157. package/dist/mentions.js.map +1 -0
  158. package/dist/number-field.d.ts +208 -0
  159. package/dist/number-field.d.ts.map +1 -0
  160. package/dist/number-field.js +247 -0
  161. package/dist/number-field.js.map +1 -0
  162. package/dist/otp-field.d.ts +152 -0
  163. package/dist/otp-field.d.ts.map +1 -0
  164. package/dist/otp-field.js +117 -0
  165. package/dist/otp-field.js.map +1 -0
  166. package/dist/pagination.d.ts +181 -0
  167. package/dist/pagination.d.ts.map +1 -0
  168. package/dist/pagination.js +226 -0
  169. package/dist/pagination.js.map +1 -0
  170. package/dist/password-field.d.ts +187 -0
  171. package/dist/password-field.d.ts.map +1 -0
  172. package/dist/password-field.js +120 -0
  173. package/dist/password-field.js.map +1 -0
  174. package/dist/popover.d.ts +152 -0
  175. package/dist/popover.d.ts.map +1 -0
  176. package/dist/popover.js +137 -0
  177. package/dist/popover.js.map +1 -0
  178. package/dist/progress-recipe.d.ts +43 -0
  179. package/dist/progress-recipe.d.ts.map +1 -0
  180. package/dist/progress-recipe.js +16 -0
  181. package/dist/progress-recipe.js.map +1 -0
  182. package/dist/recipes.d.ts +31 -0
  183. package/dist/recipes.d.ts.map +1 -0
  184. package/dist/recipes.js +46 -0
  185. package/dist/recipes.js.map +1 -0
  186. package/dist/responsive.d.ts +27 -0
  187. package/dist/responsive.d.ts.map +1 -0
  188. package/dist/responsive.js +66 -0
  189. package/dist/responsive.js.map +1 -0
  190. package/dist/result.d.ts +111 -0
  191. package/dist/result.d.ts.map +1 -0
  192. package/dist/result.js +97 -0
  193. package/dist/result.js.map +1 -0
  194. package/dist/selection-helpers.d.ts +16 -0
  195. package/dist/selection-helpers.d.ts.map +1 -0
  196. package/dist/selection-helpers.js +52 -0
  197. package/dist/selection-helpers.js.map +1 -0
  198. package/dist/semantic-colors.d.ts +275 -0
  199. package/dist/semantic-colors.d.ts.map +1 -0
  200. package/dist/semantic-colors.js +84 -0
  201. package/dist/semantic-colors.js.map +1 -0
  202. package/dist/sheet.d.ts +51 -0
  203. package/dist/sheet.d.ts.map +1 -0
  204. package/dist/sheet.js +69 -0
  205. package/dist/sheet.js.map +1 -0
  206. package/dist/showcase.d.ts +153 -0
  207. package/dist/showcase.d.ts.map +1 -0
  208. package/dist/showcase.js +210 -0
  209. package/dist/showcase.js.map +1 -0
  210. package/dist/side-panel.d.ts +199 -0
  211. package/dist/side-panel.d.ts.map +1 -0
  212. package/dist/side-panel.js +111 -0
  213. package/dist/side-panel.js.map +1 -0
  214. package/dist/slider.d.ts +138 -0
  215. package/dist/slider.d.ts.map +1 -0
  216. package/dist/slider.js +150 -0
  217. package/dist/slider.js.map +1 -0
  218. package/dist/splitter.d.ts +113 -0
  219. package/dist/splitter.d.ts.map +1 -0
  220. package/dist/splitter.js +99 -0
  221. package/dist/splitter.js.map +1 -0
  222. package/dist/statistic.d.ts +41 -0
  223. package/dist/statistic.d.ts.map +1 -0
  224. package/dist/statistic.js +76 -0
  225. package/dist/statistic.js.map +1 -0
  226. package/dist/steps.d.ts +196 -0
  227. package/dist/steps.d.ts.map +1 -0
  228. package/dist/steps.js +160 -0
  229. package/dist/steps.js.map +1 -0
  230. package/dist/tag.d.ts +128 -0
  231. package/dist/tag.d.ts.map +1 -0
  232. package/dist/tag.js +93 -0
  233. package/dist/tag.js.map +1 -0
  234. package/dist/timeline.d.ts +147 -0
  235. package/dist/timeline.d.ts.map +1 -0
  236. package/dist/timeline.js +127 -0
  237. package/dist/timeline.js.map +1 -0
  238. package/dist/toast.d.ts +164 -0
  239. package/dist/toast.d.ts.map +1 -0
  240. package/dist/toast.js +529 -0
  241. package/dist/toast.js.map +1 -0
  242. package/dist/tokens.d.ts +9 -0
  243. package/dist/tokens.d.ts.map +1 -0
  244. package/dist/tokens.js +9 -0
  245. package/dist/tokens.js.map +1 -0
  246. package/dist/tooltip.d.ts +44 -0
  247. package/dist/tooltip.d.ts.map +1 -0
  248. package/dist/tooltip.js +88 -0
  249. package/dist/tooltip.js.map +1 -0
  250. package/dist/tour.d.ts +218 -0
  251. package/dist/tour.d.ts.map +1 -0
  252. package/dist/tour.js +211 -0
  253. package/dist/tour.js.map +1 -0
  254. package/dist/transfer-list.d.ts +207 -0
  255. package/dist/transfer-list.d.ts.map +1 -0
  256. package/dist/transfer-list.js +193 -0
  257. package/dist/transfer-list.js.map +1 -0
  258. package/dist/tree-select.d.ts +78 -0
  259. package/dist/tree-select.d.ts.map +1 -0
  260. package/dist/tree-select.js +132 -0
  261. package/dist/tree-select.js.map +1 -0
  262. package/dist/tree.d.ts +206 -0
  263. package/dist/tree.d.ts.map +1 -0
  264. package/dist/tree.js +223 -0
  265. package/dist/tree.js.map +1 -0
  266. package/dist/upload-item.d.ts +173 -0
  267. package/dist/upload-item.d.ts.map +1 -0
  268. package/dist/upload-item.js +156 -0
  269. package/dist/upload-item.js.map +1 -0
  270. package/dist/version.d.ts +3 -0
  271. package/dist/version.d.ts.map +1 -0
  272. package/dist/version.js +3 -0
  273. package/dist/version.js.map +1 -0
  274. package/docs/affix.md +63 -0
  275. package/docs/anchor.md +59 -0
  276. package/docs/ant-design-coverage.md +119 -0
  277. package/docs/app-provider.md +50 -0
  278. package/docs/app-rn-adoption.md +227 -0
  279. package/docs/architecture.md +320 -0
  280. package/docs/authoring-brief.md +87 -0
  281. package/docs/border-beam.md +66 -0
  282. package/docs/bottom-navigation.md +127 -0
  283. package/docs/breadcrumb.md +82 -0
  284. package/docs/calendar.md +154 -0
  285. package/docs/carousel.md +130 -0
  286. package/docs/cascader.md +93 -0
  287. package/docs/catalog-decision-status.md +306 -0
  288. package/docs/color-picker.md +72 -0
  289. package/docs/command-palette.md +116 -0
  290. package/docs/confirm-popover.md +93 -0
  291. package/docs/consistency-audit.md +383 -0
  292. package/docs/consumer-release-gate.md +90 -0
  293. package/docs/content-state.md +156 -0
  294. package/docs/context-panel.md +88 -0
  295. package/docs/cross-platform-core-normalization.md +118 -0
  296. package/docs/data-table.md +79 -0
  297. package/docs/date-picker.md +84 -0
  298. package/docs/description-list.md +75 -0
  299. package/docs/design-system-provider.md +139 -0
  300. package/docs/dropdown.md +78 -0
  301. package/docs/expansion-roadmap.md +285 -0
  302. package/docs/file-picker.md +59 -0
  303. package/docs/floating-action-button.md +111 -0
  304. package/docs/form.md +134 -0
  305. package/docs/generated/component-maturity.md +103 -0
  306. package/docs/generated/renderer-evidence.json +5597 -0
  307. package/docs/generated/renderer-evidence.md +132 -0
  308. package/docs/generated/showcase-manifest.json +3732 -0
  309. package/docs/icon.md +22 -0
  310. package/docs/identity.md +121 -0
  311. package/docs/image.md +84 -0
  312. package/docs/implementation-0.5.md +85 -0
  313. package/docs/layout-primitives.md +107 -0
  314. package/docs/layout.md +83 -0
  315. package/docs/library-reference-decisions.md +123 -0
  316. package/docs/link.md +67 -0
  317. package/docs/load-more.md +31 -0
  318. package/docs/mentions.md +82 -0
  319. package/docs/migration-0.2.md +108 -0
  320. package/docs/migration-0.3.md +72 -0
  321. package/docs/migration-0.5.md +82 -0
  322. package/docs/migration-0.6.md +197 -0
  323. package/docs/notification.md +54 -0
  324. package/docs/number-field.md +82 -0
  325. package/docs/otp-field.md +103 -0
  326. package/docs/pagination.md +139 -0
  327. package/docs/password-field.md +98 -0
  328. package/docs/popover.md +124 -0
  329. package/docs/promotion-candidates.md +169 -0
  330. package/docs/qr-code.md +69 -0
  331. package/docs/rating.md +58 -0
  332. package/docs/responsive-grid.md +90 -0
  333. package/docs/result.md +96 -0
  334. package/docs/showcase.md +97 -0
  335. package/docs/side-panel.md +71 -0
  336. package/docs/slider.md +79 -0
  337. package/docs/splitter.md +55 -0
  338. package/docs/statistic.md +16 -0
  339. package/docs/steps.md +115 -0
  340. package/docs/tag.md +57 -0
  341. package/docs/time-picker.md +88 -0
  342. package/docs/timeline.md +146 -0
  343. package/docs/toast.md +127 -0
  344. package/docs/tooltip.md +58 -0
  345. package/docs/tour.md +136 -0
  346. package/docs/transfer-list.md +94 -0
  347. package/docs/tree-select.md +101 -0
  348. package/docs/tree.md +123 -0
  349. package/docs/upload-item.md +68 -0
  350. package/docs/utility.md +53 -0
  351. package/docs/virtual-list.md +70 -0
  352. package/docs/watermark.md +58 -0
  353. package/package.json +402 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../src/date-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ColorReference } from \"./color-references.js\";\nimport type { BehaviorContract } from \"./behaviors.js\";\nimport {\n assertIsoCalendarDate,\n validateCalendarGridDescriptor,\n type CalendarGridDescriptor,\n type CalendarMonthNavigation,\n type ComposeCalendarAccessibleName,\n type ResolvedCalendarGridCell,\n resolveCalendarGridDescriptor,\n validateCalendarMonthNavigation,\n} from \"./calendar.js\";\nimport { fieldFrameContract, floatingSurfaceContract, focusIndicatorContract, formSupportContract } from \"./component-contracts.js\";\nimport { control, spacing, type GlyphSize, type TextVariant } from \"./foundations.js\";\nimport { semanticColors } from \"./semantic-colors.js\";\n\nfunction assertNonEmpty(value: string, field: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`DatePicker ${field} must not be empty`);\n }\n}\n\n/**\n * Mirrors `SelectLabel` by shape rather than importing it: Select's type\n * lives in `collection.ts` for Select/Combobox/Menu's shared collection\n * story, and DatePicker's date grid deliberately does not adopt that\n * collection contract (see docs/calendar.md). Repeating the small, obvious\n * \"visible label or accessibility label\" shape here keeps this module\n * self-sufficient while staying consistent with the rest of the system.\n */\nexport type DatePickerLabel =\n | Readonly<{ label: string; accessibilityLabel?: string }>\n | Readonly<{ label?: never; accessibilityLabel: string }>;\n\nexport type DatePickerOpenChangeReason =\n | \"trigger\"\n | \"keyboard\"\n | \"selection\"\n | \"clear\"\n | \"escape\"\n | \"outside\"\n | \"blur\"\n | \"programmatic\";\n\nexport type DatePickerOpenState =\n | Readonly<{\n open: boolean;\n defaultOpen?: never;\n onOpenChange(open: boolean, reason: DatePickerOpenChangeReason): void;\n }>\n | Readonly<{\n open?: never;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean, reason: DatePickerOpenChangeReason) => void;\n }>;\n\n/**\n * A committed date closes the popover/sheet the same way Select's\n * `selection-requests-close-and-restores-trigger-focus` scenario works.\n * `clear` commits `null` without reopening — this is the field's only\n * \"empty\" affordance; there is no separate disallow-empty configuration\n * because an optional date field is the common case (unlike Select, which\n * more often names a required option).\n */\nexport type DatePickerSelection =\n | Readonly<{\n selectedDate: string | null;\n defaultSelectedDate?: never;\n onSelectionChange(date: string | null, reason: \"activate\" | \"clear\"): void;\n }>\n | Readonly<{\n selectedDate?: never;\n defaultSelectedDate?: string | null;\n onSelectionChange?: (date: string | null, reason: \"activate\" | \"clear\") => void;\n }>;\n\nexport function validateDatePickerSelection(selection: DatePickerSelection): void {\n const selected = selection.selectedDate ?? selection.defaultSelectedDate;\n if (selected != null) assertIsoCalendarDate(selected, \"selectedDate\");\n}\n\n/**\n * Field + grid + adaptive overlay. The grid itself is the exact\n * `CalendarGridDescriptor` from `calendar.ts` — Web renders it inside an\n * anchored popover, Native inside a Sheet (the `Select` adaptive split:\n * `adaptive: { web: \"popover\", native: \"sheet\" }`), but neither renderer\n * reinterprets the grid's cells, navigation, or accessible-name contract.\n */\nexport type DatePickerDescriptor<Content = unknown> = Readonly<{\n grid: CalendarGridDescriptor<Content>;\n /** Product-formatted trigger copy for the committed date (\"2026년 8월 19일\"); DatePicker never formats a date itself. */\n displayValue: string | null;\n placeholder: string;\n disabled?: boolean;\n readOnly?: boolean;\n invalid?: boolean;\n}> &\n DatePickerLabel &\n DatePickerOpenState &\n DatePickerSelection &\n CalendarMonthNavigation;\n\nexport function validateDatePickerDescriptor<Content>(\n descriptor: DatePickerDescriptor<Content>,\n): void {\n validateCalendarGridDescriptor(descriptor.grid);\n assertNonEmpty(descriptor.placeholder, \"placeholder\");\n if (descriptor.displayValue !== null) {\n assertNonEmpty(descriptor.displayValue, \"displayValue\");\n }\n const label = descriptor.label ?? descriptor.accessibilityLabel;\n assertNonEmpty(label as string, \"label or accessibilityLabel\");\n validateDatePickerSelection(descriptor);\n validateCalendarMonthNavigation(descriptor);\n}\n\n/** Trigger copy is the committed display value, or the placeholder when nothing is selected yet. */\nexport function resolveDatePickerTriggerText(\n descriptor: Pick<DatePickerDescriptor, \"displayValue\" | \"placeholder\">,\n): string {\n if (descriptor.displayValue !== null) assertNonEmpty(descriptor.displayValue, \"displayValue\");\n assertNonEmpty(descriptor.placeholder, \"placeholder\");\n return descriptor.displayValue ?? descriptor.placeholder;\n}\n\n/**\n * Resolves the popover/sheet content: the exact same cell shape, today/\n * selected marks, and accessible names Calendar renders inline. DatePicker\n * adds no per-cell semantics of its own — only the surrounding field/overlay\n * lifecycle is new.\n */\nexport function resolveDatePickerGrid<Content>(\n descriptor: DatePickerDescriptor<Content>,\n options: Readonly<{ composeAccessibleName: ComposeCalendarAccessibleName<Content> }>,\n): readonly ResolvedCalendarGridCell<Content>[] {\n validateDatePickerDescriptor(descriptor);\n const selectedDate = descriptor.selectedDate ?? descriptor.defaultSelectedDate ?? null;\n return resolveCalendarGridDescriptor(descriptor.grid, selectedDate, options);\n}\n\nexport type DatePickerSize = \"medium\" | \"large\";\n\n/**\n * Reuses `fieldFrameContract`/`formSupportContract` verbatim, exactly like\n * NumberField and Select each do independently — a second field frame would\n * drift the first time either one's border or height changes. `calendar`\n * anatomy is intentionally not re-declared here: the popover/sheet mounts\n * `calendarRecipe` unchanged, so this recipe only owns the field/trigger and\n * the overlay frame around it.\n */\nexport const datePickerRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"trigger\",\n \"leading\",\n \"value\",\n \"placeholder\",\n \"clear\",\n \"indicator\",\n \"description\",\n \"error\",\n \"popover\",\n ] as const,\n defaults: { size: \"medium\" },\n adaptive: { web: \"popover\", native: \"sheet\" },\n frame: fieldFrameContract,\n sizes: {\n medium: {\n minHeight: fieldFrameContract.minHeight,\n paddingHorizontal: fieldFrameContract.paddingHorizontal,\n textVariant: \"body\",\n glyph: \"sm\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.lg,\n textVariant: \"bodyLarge\",\n glyph: \"md\",\n },\n },\n support: formSupportContract,\n value: {\n color: semanticColors.content.body,\n placeholderColor: semanticColors.content.secondary,\n },\n leading: { color: semanticColors.content.secondary, icon: \"calendar\" as const },\n indicator: { color: semanticColors.content.secondary },\n clear: {\n diameter: control.buttonHeight.small,\n hitSlop: control.buttonHitSlop.small,\n glyph: \"xs\" as const,\n color: semanticColors.content.secondary,\n },\n popover: {\n ...floatingSurfaceContract,\n minWidth: 300,\n maxWidth: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n },\n states: {\n focus: focusIndicatorContract,\n invalidBorder: semanticColors.border.danger,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { size: DatePickerSize };\n adaptive: { web: \"popover\"; native: \"sheet\" };\n frame: typeof fieldFrameContract;\n sizes: Record<\n DatePickerSize,\n { minHeight: number; paddingHorizontal: number; textVariant: TextVariant; glyph: GlyphSize }\n >;\n support: typeof formSupportContract;\n value: { color: ColorReference; placeholderColor: ColorReference };\n leading: { color: ColorReference; icon: \"calendar\" };\n indicator: { color: ColorReference };\n clear: { diameter: number; hitSlop: number; glyph: GlyphSize; color: ColorReference };\n popover: typeof floatingSurfaceContract & {\n minWidth: number;\n maxWidth: number;\n sideOffset: number;\n collisionPadding: number;\n };\n states: { focus: typeof focusIndicatorContract; invalidBorder: ColorReference };\n};\n\n/**\n * Web mounts the grid as a real focus-bearing `dialog` (APG's Date Picker\n * Dialog pattern moves actual DOM focus through gridcells via roving\n * tabindex, unlike Select's `activeDescendant` listbox where focus stays on\n * the trigger). Native mounts the same grid inside a Sheet. Both close on a\n * committed selection or `clear` and restore trigger focus, matching\n * Select's own dismiss-and-restore scenario.\n */\nexport const datePickerBehavior = {\n controlled: [\n \"selectedDate\",\n \"defaultSelectedDate\",\n \"onSelectionChange\",\n \"open\",\n \"defaultOpen\",\n \"onOpenChange\",\n ],\n inputs: [\"grid\", \"displayValue\", \"focusedMonth\", \"defaultFocusedMonth\"],\n stateAxes: {\n availability: [\"enabled\", \"disabled\", \"readOnly\", \"busy\"],\n value: [\"empty\", \"selected\", \"open\"],\n validation: [\"valid\", \"invalid\"],\n },\n web: {\n roles: [\"button\", \"dialog\", \"grid\", \"row\", \"gridcell\"],\n keyboard: [\n \"Tab\",\n \"Enter\",\n \"Space\",\n \"Escape\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Home\",\n \"End\",\n ],\n focus: \"roving\",\n dismiss: [\"selection\", \"escape\", \"outside\", \"blur\"],\n },\n native: {\n roles: [\"button\", \"dialog\"],\n states: [\"disabled\", \"expanded\"],\n actions: [\"activate\", \"dismiss\"],\n dismiss: [\"selection\", \"back\", \"outside\"],\n },\n scenarios: [\n \"visible-label-or-accessibility-label-names-trigger\",\n \"trigger-shows-the-product-formatted-display-value-or-placeholder\",\n \"popover-and-sheet-content-reuse-the-calendar-grid-contract-unchanged\",\n \"activating-an-enabled-date-commits-selection-and-closes\",\n \"disabled-dates-remain-focusable-but-never-commit-or-close\",\n \"clear-commits-null-and-closes-without-reopening\",\n \"escape-closes-without-commit-and-restores-trigger-focus\",\n \"outside-press-closes-without-commit\",\n \"controlled-owner-may-defer-a-selection-close-request\",\n \"changing-the-focused-month-never-changes-or-clears-the-selection\",\n \"range-selection-is-not-part-of-the-contract\",\n ],\n} as const satisfies BehaviorContract;\n"]}
@@ -0,0 +1,68 @@
1
+ import type { DesignSystemTextScale } from "./design-system-provider.js";
2
+ export type DescriptionListColumns = 1 | 2;
3
+ /**
4
+ * One label-value pair. Like Statistic, DescriptionList never formats the
5
+ * value itself — products own locale, unit, and domain formatting and pass
6
+ * the finished string.
7
+ */
8
+ export type DescriptionItemDescriptor<Id extends string = string> = Readonly<{
9
+ id: Id;
10
+ label: string;
11
+ value: string;
12
+ }>;
13
+ export type DescriptionListDescriptor<Id extends string = string> = Readonly<{
14
+ items: readonly DescriptionItemDescriptor<Id>[];
15
+ /** Renderer preference; the resolver may still collapse this to 1. */
16
+ columns?: DescriptionListColumns;
17
+ }>;
18
+ export declare const descriptionListDefaults: {
19
+ readonly columns: 2;
20
+ };
21
+ export type ResolvedDescriptionListDescriptor<Id extends string = string> = Readonly<{
22
+ items: readonly DescriptionItemDescriptor<Id>[];
23
+ columns: DescriptionListColumns;
24
+ }>;
25
+ export declare function validateDescriptionItem<Id extends string>(item: DescriptionItemDescriptor<Id>): void;
26
+ export declare function validateDescriptionList<Id extends string>(descriptor: DescriptionListDescriptor<Id>): void;
27
+ export declare function resolveDescriptionListDescriptor<Id extends string>(descriptor: DescriptionListDescriptor<Id>): ResolvedDescriptionListDescriptor<Id>;
28
+ export declare const descriptionListRecipe: {
29
+ readonly slots: readonly ["root", "group", "item", "label", "value"];
30
+ readonly defaults: {
31
+ readonly columns: 2;
32
+ };
33
+ readonly group: {
34
+ readonly gap: 12;
35
+ readonly minItemWidth: 160;
36
+ readonly columns: readonly [1, 2];
37
+ };
38
+ readonly item: {
39
+ readonly gap: 4;
40
+ };
41
+ readonly label: {
42
+ readonly textVariant: "label";
43
+ readonly color: Readonly<{
44
+ source: "theme";
45
+ key: "textMuted";
46
+ alpha?: number;
47
+ }>;
48
+ };
49
+ readonly value: {
50
+ readonly textVariant: "body";
51
+ readonly color: Readonly<{
52
+ source: "theme";
53
+ key: "text";
54
+ alpha?: number;
55
+ }>;
56
+ readonly maxLines: null;
57
+ };
58
+ };
59
+ /**
60
+ * Owns the large-text reflow so products stop re-deriving a per-screen
61
+ * `textScale >= 1.6` guard (five screens missed it in the last review). The
62
+ * minimum item width grows with `textScale`, so at a fixed `availableWidth`
63
+ * the same formula that reflows for narrow screens also reflows for large
64
+ * text — mirrors `resolveStatisticColumnCount`'s shape in the Yajalal app-rn
65
+ * renderer contract.
66
+ */
67
+ export declare function resolveDescriptionListColumnCount(availableWidth: number, requestedColumns: DescriptionListColumns, textScale?: DesignSystemTextScale): DescriptionListColumns;
68
+ //# sourceMappingURL=description-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description-list.d.ts","sourceRoot":"","sources":["../src/description-list.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAC3E,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAC3E,KAAK,EAAE,SAAS,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;IAChD,sEAAsE;IACtE,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC,CAAC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;CAE8B,CAAC;AAEnE,MAAM,MAAM,iCAAiC,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IACtE,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;IAChD,OAAO,EAAE,sBAAsB,CAAC;CACjC,CAAC,CAAC;AAQL,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,MAAM,EACvD,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,GAClC,IAAI,CASN;AAED,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,MAAM,EACvD,UAAU,EAAE,yBAAyB,CAAC,EAAE,CAAC,GACxC,IAAI,CAmBN;AAED,wBAAgB,gCAAgC,CAAC,EAAE,SAAS,MAAM,EAChE,UAAU,EAAE,yBAAyB,CAAC,EAAE,CAAC,GACxC,iCAAiC,CAAC,EAAE,CAAC,CAMvC;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBxB,CAAC;AAEX;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,sBAAsB,EACxC,SAAS,GAAE,qBAAyB,GACnC,sBAAsB,CAexB"}
@@ -0,0 +1,85 @@
1
+ import { semanticColors } from "./semantic-colors.js";
2
+ import { spacing } from "./foundations.js";
3
+ export const descriptionListDefaults = {
4
+ columns: 2,
5
+ };
6
+ function assertCopy(value, field) {
7
+ if (value.trim().length === 0) {
8
+ throw new TypeError(`DescriptionList ${field} must not be empty`);
9
+ }
10
+ }
11
+ export function validateDescriptionItem(item) {
12
+ assertCopy(item.id, "id");
13
+ if (item.id !== item.id.trim()) {
14
+ throw new TypeError("DescriptionList item id must not start or end with whitespace");
15
+ }
16
+ assertCopy(item.label, `item ${item.id} label`);
17
+ assertCopy(item.value, `item ${item.id} value`);
18
+ }
19
+ export function validateDescriptionList(descriptor) {
20
+ if (descriptor.items.length === 0) {
21
+ throw new TypeError("DescriptionList must contain at least one item");
22
+ }
23
+ if (descriptor.columns !== undefined &&
24
+ descriptor.columns !== 1 &&
25
+ descriptor.columns !== 2) {
26
+ throw new RangeError("DescriptionList columns must be 1 or 2");
27
+ }
28
+ const ids = new Set();
29
+ for (const item of descriptor.items) {
30
+ validateDescriptionItem(item);
31
+ if (ids.has(item.id)) {
32
+ throw new TypeError(`Duplicate DescriptionList item id: ${item.id}`);
33
+ }
34
+ ids.add(item.id);
35
+ }
36
+ }
37
+ export function resolveDescriptionListDescriptor(descriptor) {
38
+ validateDescriptionList(descriptor);
39
+ return {
40
+ items: descriptor.items,
41
+ columns: descriptor.columns ?? descriptionListDefaults.columns,
42
+ };
43
+ }
44
+ export const descriptionListRecipe = {
45
+ slots: ["root", "group", "item", "label", "value"],
46
+ defaults: descriptionListDefaults,
47
+ group: {
48
+ gap: spacing.sm,
49
+ minItemWidth: 160,
50
+ columns: [1, 2],
51
+ },
52
+ item: {
53
+ gap: spacing.xxs,
54
+ },
55
+ label: { textVariant: "label", color: semanticColors.content.secondary },
56
+ value: {
57
+ textVariant: "body",
58
+ color: semanticColors.content.primary,
59
+ maxLines: null,
60
+ },
61
+ };
62
+ /**
63
+ * Owns the large-text reflow so products stop re-deriving a per-screen
64
+ * `textScale >= 1.6` guard (five screens missed it in the last review). The
65
+ * minimum item width grows with `textScale`, so at a fixed `availableWidth`
66
+ * the same formula that reflows for narrow screens also reflows for large
67
+ * text — mirrors `resolveStatisticColumnCount`'s shape in the Yajalal app-rn
68
+ * renderer contract.
69
+ */
70
+ export function resolveDescriptionListColumnCount(availableWidth, requestedColumns, textScale = 1) {
71
+ if (!Number.isFinite(availableWidth) || availableWidth <= 0) {
72
+ return requestedColumns;
73
+ }
74
+ const scale = Number.isFinite(textScale) ? Math.max(textScale, 1) : 1;
75
+ const minItemWidth = descriptionListRecipe.group.minItemWidth * scale;
76
+ for (let columns = requestedColumns; columns >= 1; columns -= 1) {
77
+ const itemWidth = (availableWidth - descriptionListRecipe.group.gap * (columns - 1)) /
78
+ columns;
79
+ if (itemWidth >= minItemWidth) {
80
+ return columns;
81
+ }
82
+ }
83
+ return 1;
84
+ }
85
+ //# sourceMappingURL=description-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description-list.js","sourceRoot":"","sources":["../src/description-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAsB3C,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO,EAAE,CAAC;CACsD,CAAC;AAQnE,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa;IAC9C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,mBAAmB,KAAK,oBAAoB,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAmC;IAEnC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1B,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CACjB,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChD,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAAyC;IAEzC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IACD,IACE,UAAU,CAAC,OAAO,KAAK,SAAS;QAChC,UAAU,CAAC,OAAO,KAAK,CAAC;QACxB,UAAU,CAAC,OAAO,KAAK,CAAC,EACxB,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAM,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,sCAAsC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,UAAyC;IAEzC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACpC,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,uBAAuB,CAAC,OAAO;KAC/D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU;IAC3D,QAAQ,EAAE,uBAAuB;IACjC,KAAK,EAAE;QACL,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,YAAY,EAAE,GAAG;QACjB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAU;KACzB;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB;IACD,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE;IACxE,KAAK,EAAE;QACL,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACrC,QAAQ,EAAE,IAAI;KACf;CACO,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,UAAU,iCAAiC,CAC/C,cAAsB,EACtB,gBAAwC,EACxC,YAAmC,CAAC;IAEpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACtE,KAAK,IAAI,OAAO,GAAG,gBAAgB,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,SAAS,GACb,CAAC,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC;QACV,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;YAC9B,OAAO,OAAiC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC","sourcesContent":["import { semanticColors } from \"./semantic-colors.js\";\nimport { spacing } from \"./foundations.js\";\nimport type { DesignSystemTextScale } from \"./design-system-provider.js\";\n\nexport type DescriptionListColumns = 1 | 2;\n\n/**\n * One label-value pair. Like Statistic, DescriptionList never formats the\n * value itself — products own locale, unit, and domain formatting and pass\n * the finished string.\n */\nexport type DescriptionItemDescriptor<Id extends string = string> = Readonly<{\n id: Id;\n label: string;\n value: string;\n}>;\n\nexport type DescriptionListDescriptor<Id extends string = string> = Readonly<{\n items: readonly DescriptionItemDescriptor<Id>[];\n /** Renderer preference; the resolver may still collapse this to 1. */\n columns?: DescriptionListColumns;\n}>;\n\nexport const descriptionListDefaults = {\n columns: 2,\n} as const satisfies Readonly<{ columns: DescriptionListColumns }>;\n\nexport type ResolvedDescriptionListDescriptor<Id extends string = string> =\n Readonly<{\n items: readonly DescriptionItemDescriptor<Id>[];\n columns: DescriptionListColumns;\n }>;\n\nfunction assertCopy(value: string, field: string): void {\n if (value.trim().length === 0) {\n throw new TypeError(`DescriptionList ${field} must not be empty`);\n }\n}\n\nexport function validateDescriptionItem<Id extends string>(\n item: DescriptionItemDescriptor<Id>,\n): void {\n assertCopy(item.id, \"id\");\n if (item.id !== item.id.trim()) {\n throw new TypeError(\n \"DescriptionList item id must not start or end with whitespace\",\n );\n }\n assertCopy(item.label, `item ${item.id} label`);\n assertCopy(item.value, `item ${item.id} value`);\n}\n\nexport function validateDescriptionList<Id extends string>(\n descriptor: DescriptionListDescriptor<Id>,\n): void {\n if (descriptor.items.length === 0) {\n throw new TypeError(\"DescriptionList must contain at least one item\");\n }\n if (\n descriptor.columns !== undefined &&\n descriptor.columns !== 1 &&\n descriptor.columns !== 2\n ) {\n throw new RangeError(\"DescriptionList columns must be 1 or 2\");\n }\n const ids = new Set<Id>();\n for (const item of descriptor.items) {\n validateDescriptionItem(item);\n if (ids.has(item.id)) {\n throw new TypeError(`Duplicate DescriptionList item id: ${item.id}`);\n }\n ids.add(item.id);\n }\n}\n\nexport function resolveDescriptionListDescriptor<Id extends string>(\n descriptor: DescriptionListDescriptor<Id>,\n): ResolvedDescriptionListDescriptor<Id> {\n validateDescriptionList(descriptor);\n return {\n items: descriptor.items,\n columns: descriptor.columns ?? descriptionListDefaults.columns,\n };\n}\n\nexport const descriptionListRecipe = {\n slots: [\"root\", \"group\", \"item\", \"label\", \"value\"] as const,\n defaults: descriptionListDefaults,\n group: {\n gap: spacing.sm,\n minItemWidth: 160,\n columns: [1, 2] as const,\n },\n item: {\n gap: spacing.xxs,\n },\n label: { textVariant: \"label\", color: semanticColors.content.secondary },\n value: {\n textVariant: \"body\",\n color: semanticColors.content.primary,\n maxLines: null,\n },\n} as const;\n\n/**\n * Owns the large-text reflow so products stop re-deriving a per-screen\n * `textScale >= 1.6` guard (five screens missed it in the last review). The\n * minimum item width grows with `textScale`, so at a fixed `availableWidth`\n * the same formula that reflows for narrow screens also reflows for large\n * text — mirrors `resolveStatisticColumnCount`'s shape in the Yajalal app-rn\n * renderer contract.\n */\nexport function resolveDescriptionListColumnCount(\n availableWidth: number,\n requestedColumns: DescriptionListColumns,\n textScale: DesignSystemTextScale = 1,\n): DescriptionListColumns {\n if (!Number.isFinite(availableWidth) || availableWidth <= 0) {\n return requestedColumns;\n }\n const scale = Number.isFinite(textScale) ? Math.max(textScale, 1) : 1;\n const minItemWidth = descriptionListRecipe.group.minItemWidth * scale;\n for (let columns = requestedColumns; columns >= 1; columns -= 1) {\n const itemWidth =\n (availableWidth - descriptionListRecipe.group.gap * (columns - 1)) /\n columns;\n if (itemWidth >= minItemWidth) {\n return columns as DescriptionListColumns;\n }\n }\n return 1;\n}\n"]}
@@ -0,0 +1,80 @@
1
+ import type { ColorReferencePalette } from "./color-references.js";
2
+ import { type ResolvedTheme, type ThemePreference } from "./colors.js";
3
+ /**
4
+ * Canonical logical direction. Existing public component-specific names stay
5
+ * source-compatible as aliases of this type instead of redeclaring the union.
6
+ */
7
+ export type DesignSystemDirection = "ltr" | "rtl";
8
+ /**
9
+ * A continuous OS/user font-scale multiplier (iOS Dynamic Type, Android font
10
+ * size, browser zoom) — not `ShowcaseTextScale`'s closed `1 | 1.5 | 2`, which
11
+ * only names Showcase's five fixture stories, or `description-list.ts`'s
12
+ * local layout clamp. This is the single upstream signal both now consume.
13
+ */
14
+ export type DesignSystemTextScale = number;
15
+ export type DesignSystemEnvironmentInput = Readonly<{
16
+ theme?: ThemePreference;
17
+ direction?: DesignSystemDirection;
18
+ textScale?: DesignSystemTextScale;
19
+ reducedMotion?: boolean;
20
+ }>;
21
+ export declare const designSystemEnvironmentDefaults: {
22
+ readonly theme: "system";
23
+ readonly direction: "ltr";
24
+ readonly textScale: 1;
25
+ readonly reducedMotion: false;
26
+ };
27
+ export type ResolvedDesignSystemEnvironment = Readonly<{
28
+ theme: ResolvedTheme;
29
+ direction: DesignSystemDirection;
30
+ textScale: DesignSystemTextScale;
31
+ reducedMotion: boolean;
32
+ }>;
33
+ export type ResolveDesignSystemEnvironmentOptions = Readonly<{
34
+ /**
35
+ * The platform's current OS-level scheme, consulted only when `theme`
36
+ * resolves to `"system"`. Renderers detect this themselves
37
+ * (`Appearance.getColorScheme()`, `matchMedia('(prefers-color-scheme)')`)
38
+ * — this package never queries the OS.
39
+ */
40
+ systemTheme: ResolvedTheme;
41
+ /** Optional OS/renderer signals used when neither input nor a parent supplies the axis. */
42
+ systemDirection?: DesignSystemDirection;
43
+ systemTextScale?: DesignSystemTextScale;
44
+ systemReducedMotion?: boolean;
45
+ /** A nested renderer inherits the already-resolved parent before consulting OS defaults. */
46
+ parent?: ResolvedDesignSystemEnvironment;
47
+ }>;
48
+ export type DesignSystemProviderValue = Readonly<{
49
+ environment: ResolvedDesignSystemEnvironment;
50
+ /** Palette consumed directly by `resolveColorReference`. */
51
+ palette: ColorReferencePalette;
52
+ }>;
53
+ /**
54
+ * Runtime boundary for reviewed full product palettes supplied to a renderer.
55
+ * Partial token overrides remain unsupported: every semantic role required by
56
+ * a recipe must be present, and alpha composition requires six-digit hex.
57
+ */
58
+ export declare function validateDesignSystemProviderValue(value: DesignSystemProviderValue): void;
59
+ export declare function validateDesignSystemEnvironmentInput(input: DesignSystemEnvironmentInput): void;
60
+ /**
61
+ * A parent has already crossed the system-preference boundary. Unlike the
62
+ * partial input validator, this rejects `"system"`, missing axes, and every
63
+ * malformed resolved value instead of silently resolving them again.
64
+ */
65
+ export declare function validateResolvedDesignSystemEnvironment(environment: ResolvedDesignSystemEnvironment): void;
66
+ /**
67
+ * Merges partial signals with safe defaults and resolves `"system"` against
68
+ * the renderer-supplied `systemTheme`. This — not a React/RN context, which
69
+ * this package cannot own — is the entire portable contract behind antd
70
+ * `ConfigProvider`: see docs/design-system-provider.md for what was
71
+ * deliberately left to the renderer.
72
+ */
73
+ export declare function resolveDesignSystemEnvironment(input: DesignSystemEnvironmentInput, options: ResolveDesignSystemEnvironmentOptions): ResolvedDesignSystemEnvironment;
74
+ /**
75
+ * Resolves the portable Provider value without owning React/RN Context. A
76
+ * renderer stores this object in its own context and feeds `palette` directly
77
+ * to recipe color resolution.
78
+ */
79
+ export declare function resolveDesignSystemProviderValue(input: DesignSystemEnvironmentInput, options: ResolveDesignSystemEnvironmentOptions): DesignSystemProviderValue;
80
+ //# sourceMappingURL=design-system-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-system-provider.d.ts","sourceRoot":"","sources":["../src/design-system-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;CAU1C,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,QAAQ,CAAC;IACrD,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,qBAAqB,CAAC;IACjC,SAAS,EAAE,qBAAqB,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,qCAAqC,GAAG,QAAQ,CAAC;IAC3D;;;;;OAKG;IACH,WAAW,EAAE,aAAa,CAAC;IAC3B,2FAA2F;IAC3F,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,4FAA4F;IAC5F,MAAM,CAAC,EAAE,+BAA+B,CAAC;CAC1C,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,WAAW,EAAE,+BAA+B,CAAC;IAC7C,4DAA4D;IAC5D,OAAO,EAAE,qBAAqB,CAAC;CAChC,CAAC,CAAC;AAyBH;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,yBAAyB,GAC/B,IAAI,CAuBN;AAsBD,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,4BAA4B,GAClC,IAAI,CAmBN;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,WAAW,EAAE,+BAA+B,GAC3C,IAAI,CASN;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,4BAA4B,EACnC,OAAO,EAAE,qCAAqC,GAC7C,+BAA+B,CAsCjC;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,4BAA4B,EACnC,OAAO,EAAE,qCAAqC,GAC7C,yBAAyB,CAY3B"}
@@ -0,0 +1,147 @@
1
+ import { ACCENTS, THEMES, accentFill, isThemePreference, } from "./colors.js";
2
+ export const designSystemEnvironmentDefaults = {
3
+ theme: "system",
4
+ direction: "ltr",
5
+ textScale: 1,
6
+ reducedMotion: false,
7
+ };
8
+ const themeColorKeys = Object.keys(THEMES.light);
9
+ const accentColorKeys = Object.keys(ACCENTS.light);
10
+ const sixDigitHexColor = /^#[0-9a-f]{6}$/i;
11
+ function assertColorRecord(value, keys, field) {
12
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
13
+ throw new TypeError(`DesignSystemProviderValue ${field} must be a color record`);
14
+ }
15
+ const record = value;
16
+ for (const key of keys) {
17
+ const color = record[key];
18
+ if (typeof color !== "string" || !sixDigitHexColor.test(color)) {
19
+ throw new TypeError(`DesignSystemProviderValue ${field}.${key} must be a six-digit hex color`);
20
+ }
21
+ }
22
+ }
23
+ /**
24
+ * Runtime boundary for reviewed full product palettes supplied to a renderer.
25
+ * Partial token overrides remain unsupported: every semantic role required by
26
+ * a recipe must be present, and alpha composition requires six-digit hex.
27
+ */
28
+ export function validateDesignSystemProviderValue(value) {
29
+ if (value === null || typeof value !== "object") {
30
+ throw new TypeError("DesignSystemProviderValue must be an object");
31
+ }
32
+ if (value.environment === null || typeof value.environment !== "object") {
33
+ throw new TypeError("DesignSystemProviderValue environment must be an object");
34
+ }
35
+ validateResolvedDesignSystemEnvironment(value.environment);
36
+ const palette = value.palette;
37
+ if (palette === null || typeof palette !== "object") {
38
+ throw new TypeError("DesignSystemProviderValue palette must be an object");
39
+ }
40
+ assertColorRecord(palette.theme, themeColorKeys, "palette.theme");
41
+ assertColorRecord(palette.statusAccents, accentColorKeys, "palette.statusAccents");
42
+ assertColorRecord(palette.statusAccentFills, accentColorKeys, "palette.statusAccentFills");
43
+ }
44
+ function assertBoolean(value, field) {
45
+ if (typeof value !== "boolean") {
46
+ throw new TypeError(`DesignSystemEnvironment ${field} must be a boolean`);
47
+ }
48
+ }
49
+ function assertDirection(value, field) {
50
+ if (value !== "ltr" && value !== "rtl") {
51
+ throw new TypeError(`Unsupported DesignSystemEnvironment ${field}: ${String(value)}`);
52
+ }
53
+ }
54
+ function assertTextScale(value, field) {
55
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
56
+ throw new RangeError(`DesignSystemEnvironment ${field} must be a finite number greater than 0`);
57
+ }
58
+ }
59
+ export function validateDesignSystemEnvironmentInput(input) {
60
+ if (input.theme !== undefined && !isThemePreference(input.theme)) {
61
+ throw new TypeError(`Unsupported DesignSystemEnvironment theme: ${String(input.theme)}`);
62
+ }
63
+ if (input.direction !== undefined &&
64
+ input.direction !== "ltr" &&
65
+ input.direction !== "rtl") {
66
+ throw new TypeError(`Unsupported DesignSystemEnvironment direction: ${String(input.direction)}`);
67
+ }
68
+ if (input.textScale !== undefined) {
69
+ assertTextScale(input.textScale, "textScale");
70
+ }
71
+ if (input.reducedMotion !== undefined) {
72
+ assertBoolean(input.reducedMotion, "reducedMotion");
73
+ }
74
+ }
75
+ /**
76
+ * A parent has already crossed the system-preference boundary. Unlike the
77
+ * partial input validator, this rejects `"system"`, missing axes, and every
78
+ * malformed resolved value instead of silently resolving them again.
79
+ */
80
+ export function validateResolvedDesignSystemEnvironment(environment) {
81
+ if (environment.theme !== "light" && environment.theme !== "dark") {
82
+ throw new TypeError(`Unsupported ResolvedDesignSystemEnvironment theme: ${String(environment.theme)}`);
83
+ }
84
+ assertDirection(environment.direction, "parent direction");
85
+ assertTextScale(environment.textScale, "parent textScale");
86
+ assertBoolean(environment.reducedMotion, "parent reducedMotion");
87
+ }
88
+ /**
89
+ * Merges partial signals with safe defaults and resolves `"system"` against
90
+ * the renderer-supplied `systemTheme`. This — not a React/RN context, which
91
+ * this package cannot own — is the entire portable contract behind antd
92
+ * `ConfigProvider`: see docs/design-system-provider.md for what was
93
+ * deliberately left to the renderer.
94
+ */
95
+ export function resolveDesignSystemEnvironment(input, options) {
96
+ validateDesignSystemEnvironmentInput(input);
97
+ if (options.systemTheme !== "light" && options.systemTheme !== "dark") {
98
+ throw new TypeError(`Unsupported DesignSystemEnvironment systemTheme: ${String(options.systemTheme)}`);
99
+ }
100
+ if (options.systemDirection !== undefined) {
101
+ assertDirection(options.systemDirection, "systemDirection");
102
+ }
103
+ if (options.systemTextScale !== undefined) {
104
+ assertTextScale(options.systemTextScale, "systemTextScale");
105
+ }
106
+ if (options.systemReducedMotion !== undefined) {
107
+ assertBoolean(options.systemReducedMotion, "systemReducedMotion");
108
+ }
109
+ if (options.parent !== undefined) {
110
+ validateResolvedDesignSystemEnvironment(options.parent);
111
+ }
112
+ const theme = input.theme ?? options.parent?.theme ?? designSystemEnvironmentDefaults.theme;
113
+ return {
114
+ theme: theme === "system" ? options.systemTheme : theme,
115
+ direction: input.direction ??
116
+ options.parent?.direction ??
117
+ options.systemDirection ??
118
+ designSystemEnvironmentDefaults.direction,
119
+ textScale: input.textScale ??
120
+ options.parent?.textScale ??
121
+ options.systemTextScale ??
122
+ designSystemEnvironmentDefaults.textScale,
123
+ reducedMotion: input.reducedMotion ??
124
+ options.parent?.reducedMotion ??
125
+ options.systemReducedMotion ??
126
+ designSystemEnvironmentDefaults.reducedMotion,
127
+ };
128
+ }
129
+ /**
130
+ * Resolves the portable Provider value without owning React/RN Context. A
131
+ * renderer stores this object in its own context and feeds `palette` directly
132
+ * to recipe color resolution.
133
+ */
134
+ export function resolveDesignSystemProviderValue(input, options) {
135
+ const environment = resolveDesignSystemEnvironment(input, options);
136
+ const value = {
137
+ environment,
138
+ palette: {
139
+ theme: THEMES[environment.theme],
140
+ statusAccents: ACCENTS[environment.theme],
141
+ statusAccentFills: accentFill,
142
+ },
143
+ };
144
+ validateDesignSystemProviderValue(value);
145
+ return value;
146
+ }
147
+ //# sourceMappingURL=design-system-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-system-provider.js","sourceRoot":"","sources":["../src/design-system-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ColorReferencePalette } from \"./color-references.js\";\nimport {\n ACCENTS,\n THEMES,\n accentFill,\n isThemePreference,\n type ResolvedTheme,\n type ThemePreference,\n} from \"./colors.js\";\n\n/**\n * Canonical logical direction. Existing public component-specific names stay\n * source-compatible as aliases of this type instead of redeclaring the union.\n */\nexport type DesignSystemDirection = \"ltr\" | \"rtl\";\n\n/**\n * A continuous OS/user font-scale multiplier (iOS Dynamic Type, Android font\n * size, browser zoom) — not `ShowcaseTextScale`'s closed `1 | 1.5 | 2`, which\n * only names Showcase's five fixture stories, or `description-list.ts`'s\n * local layout clamp. This is the single upstream signal both now consume.\n */\nexport type DesignSystemTextScale = number;\n\nexport type DesignSystemEnvironmentInput = Readonly<{\n theme?: ThemePreference;\n direction?: DesignSystemDirection;\n textScale?: DesignSystemTextScale;\n reducedMotion?: boolean;\n}>;\n\nexport const designSystemEnvironmentDefaults = {\n theme: \"system\",\n direction: \"ltr\",\n textScale: 1,\n reducedMotion: false,\n} as const satisfies Readonly<{\n theme: ThemePreference;\n direction: DesignSystemDirection;\n textScale: DesignSystemTextScale;\n reducedMotion: boolean;\n}>;\n\nexport type ResolvedDesignSystemEnvironment = Readonly<{\n theme: ResolvedTheme;\n direction: DesignSystemDirection;\n textScale: DesignSystemTextScale;\n reducedMotion: boolean;\n}>;\n\nexport type ResolveDesignSystemEnvironmentOptions = Readonly<{\n /**\n * The platform's current OS-level scheme, consulted only when `theme`\n * resolves to `\"system\"`. Renderers detect this themselves\n * (`Appearance.getColorScheme()`, `matchMedia('(prefers-color-scheme)')`)\n * — this package never queries the OS.\n */\n systemTheme: ResolvedTheme;\n /** Optional OS/renderer signals used when neither input nor a parent supplies the axis. */\n systemDirection?: DesignSystemDirection;\n systemTextScale?: DesignSystemTextScale;\n systemReducedMotion?: boolean;\n /** A nested renderer inherits the already-resolved parent before consulting OS defaults. */\n parent?: ResolvedDesignSystemEnvironment;\n}>;\n\nexport type DesignSystemProviderValue = Readonly<{\n environment: ResolvedDesignSystemEnvironment;\n /** Palette consumed directly by `resolveColorReference`. */\n palette: ColorReferencePalette;\n}>;\n\nconst themeColorKeys = Object.keys(THEMES.light) as readonly (keyof typeof THEMES.light)[];\nconst accentColorKeys = Object.keys(ACCENTS.light) as readonly (keyof typeof ACCENTS.light)[];\nconst sixDigitHexColor = /^#[0-9a-f]{6}$/i;\n\nfunction assertColorRecord(\n value: unknown,\n keys: readonly string[],\n field: string,\n): asserts value is Readonly<Record<string, string>> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new TypeError(`DesignSystemProviderValue ${field} must be a color record`);\n }\n const record = value as Readonly<Record<string, unknown>>;\n for (const key of keys) {\n const color = record[key];\n if (typeof color !== \"string\" || !sixDigitHexColor.test(color)) {\n throw new TypeError(\n `DesignSystemProviderValue ${field}.${key} must be a six-digit hex color`,\n );\n }\n }\n}\n\n/**\n * Runtime boundary for reviewed full product palettes supplied to a renderer.\n * Partial token overrides remain unsupported: every semantic role required by\n * a recipe must be present, and alpha composition requires six-digit hex.\n */\nexport function validateDesignSystemProviderValue(\n value: DesignSystemProviderValue,\n): void {\n if (value === null || typeof value !== \"object\") {\n throw new TypeError(\"DesignSystemProviderValue must be an object\");\n }\n if (value.environment === null || typeof value.environment !== \"object\") {\n throw new TypeError(\"DesignSystemProviderValue environment must be an object\");\n }\n validateResolvedDesignSystemEnvironment(value.environment);\n const palette = value.palette;\n if (palette === null || typeof palette !== \"object\") {\n throw new TypeError(\"DesignSystemProviderValue palette must be an object\");\n }\n assertColorRecord(palette.theme, themeColorKeys, \"palette.theme\");\n assertColorRecord(\n palette.statusAccents,\n accentColorKeys,\n \"palette.statusAccents\",\n );\n assertColorRecord(\n palette.statusAccentFills,\n accentColorKeys,\n \"palette.statusAccentFills\",\n );\n}\n\nfunction assertBoolean(value: boolean, field: string): void {\n if (typeof value !== \"boolean\") {\n throw new TypeError(`DesignSystemEnvironment ${field} must be a boolean`);\n }\n}\n\nfunction assertDirection(value: DesignSystemDirection, field: string): void {\n if (value !== \"ltr\" && value !== \"rtl\") {\n throw new TypeError(`Unsupported DesignSystemEnvironment ${field}: ${String(value)}`);\n }\n}\n\nfunction assertTextScale(value: DesignSystemTextScale, field: string): void {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) {\n throw new RangeError(\n `DesignSystemEnvironment ${field} must be a finite number greater than 0`,\n );\n }\n}\n\nexport function validateDesignSystemEnvironmentInput(\n input: DesignSystemEnvironmentInput,\n): void {\n if (input.theme !== undefined && !isThemePreference(input.theme)) {\n throw new TypeError(`Unsupported DesignSystemEnvironment theme: ${String(input.theme)}`);\n }\n if (\n input.direction !== undefined &&\n input.direction !== \"ltr\" &&\n input.direction !== \"rtl\"\n ) {\n throw new TypeError(\n `Unsupported DesignSystemEnvironment direction: ${String(input.direction)}`,\n );\n }\n if (input.textScale !== undefined) {\n assertTextScale(input.textScale, \"textScale\");\n }\n if (input.reducedMotion !== undefined) {\n assertBoolean(input.reducedMotion, \"reducedMotion\");\n }\n}\n\n/**\n * A parent has already crossed the system-preference boundary. Unlike the\n * partial input validator, this rejects `\"system\"`, missing axes, and every\n * malformed resolved value instead of silently resolving them again.\n */\nexport function validateResolvedDesignSystemEnvironment(\n environment: ResolvedDesignSystemEnvironment,\n): void {\n if (environment.theme !== \"light\" && environment.theme !== \"dark\") {\n throw new TypeError(\n `Unsupported ResolvedDesignSystemEnvironment theme: ${String(environment.theme)}`,\n );\n }\n assertDirection(environment.direction, \"parent direction\");\n assertTextScale(environment.textScale, \"parent textScale\");\n assertBoolean(environment.reducedMotion, \"parent reducedMotion\");\n}\n\n/**\n * Merges partial signals with safe defaults and resolves `\"system\"` against\n * the renderer-supplied `systemTheme`. This — not a React/RN context, which\n * this package cannot own — is the entire portable contract behind antd\n * `ConfigProvider`: see docs/design-system-provider.md for what was\n * deliberately left to the renderer.\n */\nexport function resolveDesignSystemEnvironment(\n input: DesignSystemEnvironmentInput,\n options: ResolveDesignSystemEnvironmentOptions,\n): ResolvedDesignSystemEnvironment {\n validateDesignSystemEnvironmentInput(input);\n if (options.systemTheme !== \"light\" && options.systemTheme !== \"dark\") {\n throw new TypeError(`Unsupported DesignSystemEnvironment systemTheme: ${String(options.systemTheme)}`);\n }\n if (options.systemDirection !== undefined) {\n assertDirection(options.systemDirection, \"systemDirection\");\n }\n if (options.systemTextScale !== undefined) {\n assertTextScale(options.systemTextScale, \"systemTextScale\");\n }\n if (options.systemReducedMotion !== undefined) {\n assertBoolean(options.systemReducedMotion, \"systemReducedMotion\");\n }\n if (options.parent !== undefined) {\n validateResolvedDesignSystemEnvironment(options.parent);\n }\n\n const theme =\n input.theme ?? options.parent?.theme ?? designSystemEnvironmentDefaults.theme;\n return {\n theme: theme === \"system\" ? options.systemTheme : theme,\n direction:\n input.direction ??\n options.parent?.direction ??\n options.systemDirection ??\n designSystemEnvironmentDefaults.direction,\n textScale:\n input.textScale ??\n options.parent?.textScale ??\n options.systemTextScale ??\n designSystemEnvironmentDefaults.textScale,\n reducedMotion:\n input.reducedMotion ??\n options.parent?.reducedMotion ??\n options.systemReducedMotion ??\n designSystemEnvironmentDefaults.reducedMotion,\n };\n}\n\n/**\n * Resolves the portable Provider value without owning React/RN Context. A\n * renderer stores this object in its own context and feeds `palette` directly\n * to recipe color resolution.\n */\nexport function resolveDesignSystemProviderValue(\n input: DesignSystemEnvironmentInput,\n options: ResolveDesignSystemEnvironmentOptions,\n): DesignSystemProviderValue {\n const environment = resolveDesignSystemEnvironment(input, options);\n const value = {\n environment,\n palette: {\n theme: THEMES[environment.theme],\n statusAccents: ACCENTS[environment.theme],\n statusAccentFills: accentFill,\n },\n };\n validateDesignSystemProviderValue(value);\n return value;\n}\n"]}
@@ -0,0 +1,49 @@
1
+ import { type ShowcaseComponentEntry, type ShowcaseCoverageEntry, type ShowcaseEvidenceEntry, type ShowcaseScenarioId, type ShowcaseSurface } from "./showcase.js";
2
+ export declare const designSystemEvidenceSchemaVersion: 1;
3
+ export type DesignSystemEvidenceSourceKind = "storybook" | "interaction-test" | "accessibility-audit" | "visual-regression" | "device-test" | "contract-test";
4
+ export type DesignSystemEvidenceSource = Readonly<{
5
+ /** Stable repository or product identifier, for example `burntok-web`. */
6
+ id: string;
7
+ /** Human-readable owner shown in generated reports. */
8
+ product: string;
9
+ surface: ShowcaseSurface;
10
+ kind: DesignSystemEvidenceSourceKind;
11
+ /** Optional immutable Git revision or release identifier. */
12
+ revision?: string;
13
+ }>;
14
+ export type DesignSystemEvidenceItem = Readonly<{
15
+ /** Canonical `category/component-id` from `showcaseManifest`. */
16
+ storyId: string;
17
+ scenarios: readonly ShowcaseScenarioId[];
18
+ /** Product Storybook id when it differs from the canonical HJM id. */
19
+ storybookStoryId?: string;
20
+ }>;
21
+ export type DesignSystemEvidenceManifest = Readonly<{
22
+ schemaVersion: typeof designSystemEvidenceSchemaVersion;
23
+ designSystemVersion: string;
24
+ source: DesignSystemEvidenceSource;
25
+ entries: readonly DesignSystemEvidenceItem[];
26
+ }>;
27
+ export type ShowcaseStoryIdComparison = Readonly<{
28
+ surface: ShowcaseSurface;
29
+ expected: readonly string[];
30
+ actual: readonly string[];
31
+ missing: readonly string[];
32
+ unexpected: readonly string[];
33
+ duplicates: readonly string[];
34
+ complete: boolean;
35
+ }>;
36
+ /**
37
+ * Returns the canonical component story ids that currently require evidence on
38
+ * one surface. Consumers use this instead of maintaining hard-coded lists.
39
+ */
40
+ export declare function getShowcaseStoryIdsForSurface(surface: ShowcaseSurface, manifest?: readonly ShowcaseComponentEntry[]): readonly string[];
41
+ /** Compares a product Storybook inventory with the pinned contract package. */
42
+ export declare function compareShowcaseStoryIds(surface: ShowcaseSurface, storyIds: readonly string[], manifest?: readonly ShowcaseComponentEntry[]): ShowcaseStoryIdComparison;
43
+ export declare function assertShowcaseStoryIds(surface: ShowcaseSurface, storyIds: readonly string[], manifest?: readonly ShowcaseComponentEntry[]): void;
44
+ /** Runtime validation for evidence artifacts submitted by product repositories. */
45
+ export declare function defineDesignSystemEvidence(input: DesignSystemEvidenceManifest, manifest?: readonly ShowcaseComponentEntry[]): DesignSystemEvidenceManifest;
46
+ export declare function createDesignSystemEvidence(source: DesignSystemEvidenceSource, entries: readonly DesignSystemEvidenceItem[]): DesignSystemEvidenceManifest;
47
+ export declare function toShowcaseEvidenceEntries(evidence: readonly DesignSystemEvidenceManifest[]): readonly ShowcaseEvidenceEntry[];
48
+ export declare function createDesignSystemEvidenceCoverage(evidence: readonly DesignSystemEvidenceManifest[], manifest?: readonly ShowcaseComponentEntry[]): readonly ShowcaseCoverageEntry[];
49
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,iCAAiC,EAAG,CAAU,CAAC;AAE5D,MAAM,MAAM,8BAA8B,GACtC,WAAW,GACX,kBAAkB,GAClB,qBAAqB,GACrB,mBAAmB,GACnB,aAAa,GACb,eAAe,CAAC;AAEpB,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,EAAE,8BAA8B,CAAC;IACrC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,aAAa,EAAE,OAAO,iCAAiC,CAAC;IACxD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,0BAA0B,CAAC;IACnC,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC9C,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAiBH;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,eAAe,EACxB,QAAQ,GAAE,SAAS,sBAAsB,EAAqB,GAC7D,SAAS,MAAM,EAAE,CAInB;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,GAAE,SAAS,sBAAsB,EAAqB,GAC7D,yBAAyB,CAqB3B;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,GAAE,SAAS,sBAAsB,EAAqB,GAC7D,IAAI,CAWN;AAED,mFAAmF;AACnF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,4BAA4B,EACnC,QAAQ,GAAE,SAAS,sBAAsB,EAAqB,GAC7D,4BAA4B,CA0D9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,0BAA0B,EAClC,OAAO,EAAE,SAAS,wBAAwB,EAAE,GAC3C,4BAA4B,CAO9B;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,4BAA4B,EAAE,GAChD,SAAS,qBAAqB,EAAE,CAIlC;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,SAAS,4BAA4B,EAAE,EACjD,QAAQ,GAAE,SAAS,sBAAsB,EAAqB,GAC7D,SAAS,qBAAqB,EAAE,CAGlC"}