@mitcsutt/kiln-ui 0.1.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 (742) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/assets/fonts/big-shoulders-latin-ext-standard-normal.woff2 +0 -0
  4. package/dist/assets/fonts/big-shoulders-latin-standard-normal.woff2 +0 -0
  5. package/dist/assets/fonts/bricolage-grotesque-latin-ext-standard-normal.woff2 +0 -0
  6. package/dist/assets/fonts/bricolage-grotesque-latin-standard-normal.woff2 +0 -0
  7. package/dist/assets/fonts/licenses/big-shoulders.txt +93 -0
  8. package/dist/assets/fonts/licenses/bricolage-grotesque.txt +93 -0
  9. package/dist/assets/fonts/licenses/martian-mono.txt +93 -0
  10. package/dist/assets/fonts/licenses/newsreader.txt +93 -0
  11. package/dist/assets/fonts/licenses/schibsted-grotesk.txt +93 -0
  12. package/dist/assets/fonts/martian-mono-latin-ext-standard-normal.woff2 +0 -0
  13. package/dist/assets/fonts/martian-mono-latin-standard-normal.woff2 +0 -0
  14. package/dist/assets/fonts/newsreader-latin-ext-standard-italic.woff2 +0 -0
  15. package/dist/assets/fonts/newsreader-latin-ext-standard-normal.woff2 +0 -0
  16. package/dist/assets/fonts/newsreader-latin-standard-italic.woff2 +0 -0
  17. package/dist/assets/fonts/newsreader-latin-standard-normal.woff2 +0 -0
  18. package/dist/assets/fonts/schibsted-grotesk-latin-ext-wght-italic.woff2 +0 -0
  19. package/dist/assets/fonts/schibsted-grotesk-latin-ext-wght-normal.woff2 +0 -0
  20. package/dist/assets/fonts/schibsted-grotesk-latin-wght-italic.woff2 +0 -0
  21. package/dist/assets/fonts/schibsted-grotesk-latin-wght-normal.woff2 +0 -0
  22. package/dist/components/actions/Button/Button.d.ts +26 -0
  23. package/dist/components/actions/Button/Button.js +47 -0
  24. package/dist/components/actions/Button/Button.js.map +1 -0
  25. package/dist/components/actions/Button/Button.module.js +10 -0
  26. package/dist/components/actions/Button/Button.module.js.map +1 -0
  27. package/dist/components/actions/Button/index.d.ts +2 -0
  28. package/dist/components/actions/ChipGroup/ChipGroup.d.ts +50 -0
  29. package/dist/components/actions/ChipGroup/ChipGroup.js +104 -0
  30. package/dist/components/actions/ChipGroup/ChipGroup.js.map +1 -0
  31. package/dist/components/actions/ChipGroup/ChipGroup.module.js +6 -0
  32. package/dist/components/actions/ChipGroup/ChipGroup.module.js.map +1 -0
  33. package/dist/components/actions/ChipGroup/index.d.ts +2 -0
  34. package/dist/components/actions/IconButton/IconButton.d.ts +28 -0
  35. package/dist/components/actions/IconButton/IconButton.js +28 -0
  36. package/dist/components/actions/IconButton/IconButton.js.map +1 -0
  37. package/dist/components/actions/IconButton/IconButton.module.js +9 -0
  38. package/dist/components/actions/IconButton/IconButton.module.js.map +1 -0
  39. package/dist/components/actions/IconButton/index.d.ts +2 -0
  40. package/dist/components/actions/ModeToggle/ModeToggle.d.ts +28 -0
  41. package/dist/components/actions/ModeToggle/ModeToggle.js +63 -0
  42. package/dist/components/actions/ModeToggle/ModeToggle.js.map +1 -0
  43. package/dist/components/actions/ModeToggle/index.d.ts +2 -0
  44. package/dist/components/actions/SegmentedControl/SegmentedControl.d.ts +46 -0
  45. package/dist/components/actions/SegmentedControl/SegmentedControl.js +109 -0
  46. package/dist/components/actions/SegmentedControl/SegmentedControl.js.map +1 -0
  47. package/dist/components/actions/SegmentedControl/SegmentedControl.module.js +13 -0
  48. package/dist/components/actions/SegmentedControl/SegmentedControl.module.js.map +1 -0
  49. package/dist/components/actions/SegmentedControl/index.d.ts +2 -0
  50. package/dist/components/actions/ToggleChip/ToggleChip.d.ts +19 -0
  51. package/dist/components/actions/ToggleChip/ToggleChip.js +34 -0
  52. package/dist/components/actions/ToggleChip/ToggleChip.js.map +1 -0
  53. package/dist/components/actions/ToggleChip/chip.module.js +10 -0
  54. package/dist/components/actions/ToggleChip/chip.module.js.map +1 -0
  55. package/dist/components/actions/ToggleChip/index.d.ts +2 -0
  56. package/dist/components/display/Avatar/Avatar.d.ts +27 -0
  57. package/dist/components/display/Avatar/Avatar.js +39 -0
  58. package/dist/components/display/Avatar/Avatar.js.map +1 -0
  59. package/dist/components/display/Avatar/Avatar.module.js +10 -0
  60. package/dist/components/display/Avatar/Avatar.module.js.map +1 -0
  61. package/dist/components/display/Avatar/AvatarContext.d.ts +3 -0
  62. package/dist/components/display/Avatar/AvatarContext.js +7 -0
  63. package/dist/components/display/Avatar/AvatarContext.js.map +1 -0
  64. package/dist/components/display/Avatar/avatarUtils.d.ts +10 -0
  65. package/dist/components/display/Avatar/avatarUtils.js +14 -0
  66. package/dist/components/display/Avatar/avatarUtils.js.map +1 -0
  67. package/dist/components/display/Avatar/index.d.ts +5 -0
  68. package/dist/components/display/AvatarGroup/AvatarGroup.d.ts +16 -0
  69. package/dist/components/display/AvatarGroup/AvatarGroup.js +33 -0
  70. package/dist/components/display/AvatarGroup/AvatarGroup.js.map +1 -0
  71. package/dist/components/display/AvatarGroup/AvatarGroup.module.js +9 -0
  72. package/dist/components/display/AvatarGroup/AvatarGroup.module.js.map +1 -0
  73. package/dist/components/display/AvatarGroup/index.d.ts +2 -0
  74. package/dist/components/display/Badge/Badge.d.ts +18 -0
  75. package/dist/components/display/Badge/Badge.js +23 -0
  76. package/dist/components/display/Badge/Badge.js.map +1 -0
  77. package/dist/components/display/Badge/Badge.module.js +9 -0
  78. package/dist/components/display/Badge/Badge.module.js.map +1 -0
  79. package/dist/components/display/Badge/index.d.ts +2 -0
  80. package/dist/components/display/Card/Card.d.ts +46 -0
  81. package/dist/components/display/Card/Card.js +78 -0
  82. package/dist/components/display/Card/Card.js.map +1 -0
  83. package/dist/components/display/Card/Card.module.js +15 -0
  84. package/dist/components/display/Card/Card.module.js.map +1 -0
  85. package/dist/components/display/Card/index.d.ts +2 -0
  86. package/dist/components/display/CodeBlock/CodeBlock.d.ts +26 -0
  87. package/dist/components/display/CodeBlock/CodeBlock.js +85 -0
  88. package/dist/components/display/CodeBlock/CodeBlock.js.map +1 -0
  89. package/dist/components/display/CodeBlock/CodeBlock.module.js +16 -0
  90. package/dist/components/display/CodeBlock/CodeBlock.module.js.map +1 -0
  91. package/dist/components/display/CodeBlock/index.d.ts +2 -0
  92. package/dist/components/display/DataList/DataList.d.ts +19 -0
  93. package/dist/components/display/DataList/DataList.js +31 -0
  94. package/dist/components/display/DataList/DataList.js.map +1 -0
  95. package/dist/components/display/DataList/DataList.module.js +11 -0
  96. package/dist/components/display/DataList/DataList.module.js.map +1 -0
  97. package/dist/components/display/DataList/index.d.ts +2 -0
  98. package/dist/components/display/Delta/Delta.d.ts +23 -0
  99. package/dist/components/display/Delta/Delta.js +42 -0
  100. package/dist/components/display/Delta/Delta.js.map +1 -0
  101. package/dist/components/display/Delta/Delta.module.js +9 -0
  102. package/dist/components/display/Delta/Delta.module.js.map +1 -0
  103. package/dist/components/display/Delta/index.d.ts +2 -0
  104. package/dist/components/display/EmptyState/EmptyState.d.ts +28 -0
  105. package/dist/components/display/EmptyState/EmptyState.js +42 -0
  106. package/dist/components/display/EmptyState/EmptyState.js.map +1 -0
  107. package/dist/components/display/EmptyState/EmptyState.module.js +14 -0
  108. package/dist/components/display/EmptyState/EmptyState.module.js.map +1 -0
  109. package/dist/components/display/EmptyState/index.d.ts +2 -0
  110. package/dist/components/display/List/List.d.ts +33 -0
  111. package/dist/components/display/List/List.js +64 -0
  112. package/dist/components/display/List/List.js.map +1 -0
  113. package/dist/components/display/List/List.module.js +14 -0
  114. package/dist/components/display/List/List.module.js.map +1 -0
  115. package/dist/components/display/List/index.d.ts +2 -0
  116. package/dist/components/display/Marquee/Marquee.d.ts +46 -0
  117. package/dist/components/display/Marquee/Marquee.js +95 -0
  118. package/dist/components/display/Marquee/Marquee.js.map +1 -0
  119. package/dist/components/display/Marquee/Marquee.module.js +19 -0
  120. package/dist/components/display/Marquee/Marquee.module.js.map +1 -0
  121. package/dist/components/display/Marquee/index.d.ts +2 -0
  122. package/dist/components/display/Media/Media.d.ts +30 -0
  123. package/dist/components/display/Media/Media.js +47 -0
  124. package/dist/components/display/Media/Media.js.map +1 -0
  125. package/dist/components/display/Media/Media.module.js +12 -0
  126. package/dist/components/display/Media/Media.module.js.map +1 -0
  127. package/dist/components/display/Media/index.d.ts +2 -0
  128. package/dist/components/display/Meter/Meter.d.ts +32 -0
  129. package/dist/components/display/Meter/Meter.js +56 -0
  130. package/dist/components/display/Meter/Meter.js.map +1 -0
  131. package/dist/components/display/Meter/Meter.module.js +14 -0
  132. package/dist/components/display/Meter/Meter.module.js.map +1 -0
  133. package/dist/components/display/Meter/index.d.ts +4 -0
  134. package/dist/components/display/Meter/meterTone.d.ts +15 -0
  135. package/dist/components/display/Meter/meterTone.js +9 -0
  136. package/dist/components/display/Meter/meterTone.js.map +1 -0
  137. package/dist/components/display/Progress/Progress.d.ts +27 -0
  138. package/dist/components/display/Progress/Progress.js +45 -0
  139. package/dist/components/display/Progress/Progress.js.map +1 -0
  140. package/dist/components/display/Progress/Progress.module.js +14 -0
  141. package/dist/components/display/Progress/Progress.module.js.map +1 -0
  142. package/dist/components/display/Progress/index.d.ts +2 -0
  143. package/dist/components/display/Skeleton/Skeleton.d.ts +31 -0
  144. package/dist/components/display/Skeleton/Skeleton.js +60 -0
  145. package/dist/components/display/Skeleton/Skeleton.js.map +1 -0
  146. package/dist/components/display/Skeleton/Skeleton.module.js +12 -0
  147. package/dist/components/display/Skeleton/Skeleton.module.js.map +1 -0
  148. package/dist/components/display/Skeleton/index.d.ts +2 -0
  149. package/dist/components/display/Stamp/Stamp.d.ts +25 -0
  150. package/dist/components/display/Stamp/Stamp.js +21 -0
  151. package/dist/components/display/Stamp/Stamp.js.map +1 -0
  152. package/dist/components/display/Stamp/Stamp.module.js +6 -0
  153. package/dist/components/display/Stamp/Stamp.module.js.map +1 -0
  154. package/dist/components/display/Stamp/index.d.ts +2 -0
  155. package/dist/components/display/Stat/Stat.d.ts +40 -0
  156. package/dist/components/display/Stat/Stat.js +46 -0
  157. package/dist/components/display/Stat/Stat.js.map +1 -0
  158. package/dist/components/display/Stat/Stat.module.js +13 -0
  159. package/dist/components/display/Stat/Stat.module.js.map +1 -0
  160. package/dist/components/display/Stat/index.d.ts +2 -0
  161. package/dist/components/display/Table/Table.d.ts +64 -0
  162. package/dist/components/display/Table/Table.js +124 -0
  163. package/dist/components/display/Table/Table.js.map +1 -0
  164. package/dist/components/display/Table/Table.module.js +18 -0
  165. package/dist/components/display/Table/Table.module.js.map +1 -0
  166. package/dist/components/display/Table/index.d.ts +2 -0
  167. package/dist/components/display/Tag/Tag.d.ts +21 -0
  168. package/dist/components/display/Tag/Tag.js +36 -0
  169. package/dist/components/display/Tag/Tag.js.map +1 -0
  170. package/dist/components/display/Tag/Tag.module.js +10 -0
  171. package/dist/components/display/Tag/Tag.module.js.map +1 -0
  172. package/dist/components/display/Tag/index.d.ts +2 -0
  173. package/dist/components/feedback/Alert/Alert.d.ts +33 -0
  174. package/dist/components/feedback/Alert/Alert.js +62 -0
  175. package/dist/components/feedback/Alert/Alert.js.map +1 -0
  176. package/dist/components/feedback/Alert/Alert.module.js +14 -0
  177. package/dist/components/feedback/Alert/Alert.module.js.map +1 -0
  178. package/dist/components/feedback/Alert/index.d.ts +2 -0
  179. package/dist/components/feedback/LiveIndicator/LiveIndicator.d.ts +22 -0
  180. package/dist/components/feedback/LiveIndicator/LiveIndicator.js +27 -0
  181. package/dist/components/feedback/LiveIndicator/LiveIndicator.js.map +1 -0
  182. package/dist/components/feedback/LiveIndicator/LiveIndicator.module.js +10 -0
  183. package/dist/components/feedback/LiveIndicator/LiveIndicator.module.js.map +1 -0
  184. package/dist/components/feedback/LiveIndicator/index.d.ts +2 -0
  185. package/dist/components/feedback/RelativeTime/RelativeTime.d.ts +24 -0
  186. package/dist/components/feedback/RelativeTime/RelativeTime.js +38 -0
  187. package/dist/components/feedback/RelativeTime/RelativeTime.js.map +1 -0
  188. package/dist/components/feedback/RelativeTime/RelativeTime.module.js +6 -0
  189. package/dist/components/feedback/RelativeTime/RelativeTime.module.js.map +1 -0
  190. package/dist/components/feedback/RelativeTime/format.d.ts +10 -0
  191. package/dist/components/feedback/RelativeTime/format.js +57 -0
  192. package/dist/components/feedback/RelativeTime/format.js.map +1 -0
  193. package/dist/components/feedback/RelativeTime/index.d.ts +4 -0
  194. package/dist/components/feedback/Spinner/Spinner.d.ts +8 -0
  195. package/dist/components/feedback/Spinner/Spinner.js +25 -0
  196. package/dist/components/feedback/Spinner/Spinner.js.map +1 -0
  197. package/dist/components/feedback/Spinner/Spinner.module.js +10 -0
  198. package/dist/components/feedback/Spinner/Spinner.module.js.map +1 -0
  199. package/dist/components/feedback/Spinner/index.d.ts +2 -0
  200. package/dist/components/feedback/StatusDot/StatusDot.d.ts +13 -0
  201. package/dist/components/feedback/StatusDot/StatusDot.js +26 -0
  202. package/dist/components/feedback/StatusDot/StatusDot.js.map +1 -0
  203. package/dist/components/feedback/StatusDot/StatusDot.module.js +11 -0
  204. package/dist/components/feedback/StatusDot/StatusDot.module.js.map +1 -0
  205. package/dist/components/feedback/StatusDot/index.d.ts +2 -0
  206. package/dist/components/inputs/AmountField/AmountField.d.ts +11 -0
  207. package/dist/components/inputs/AmountField/AmountField.js +26 -0
  208. package/dist/components/inputs/AmountField/AmountField.js.map +1 -0
  209. package/dist/components/inputs/AmountField/index.d.ts +2 -0
  210. package/dist/components/inputs/AmountInput/AmountInput.d.ts +38 -0
  211. package/dist/components/inputs/AmountInput/AmountInput.js +99 -0
  212. package/dist/components/inputs/AmountInput/AmountInput.js.map +1 -0
  213. package/dist/components/inputs/AmountInput/amountFormat.d.ts +5 -0
  214. package/dist/components/inputs/AmountInput/amountFormat.js +15 -0
  215. package/dist/components/inputs/AmountInput/amountFormat.js.map +1 -0
  216. package/dist/components/inputs/AmountInput/index.d.ts +2 -0
  217. package/dist/components/inputs/Checkbox/Checkbox.d.ts +18 -0
  218. package/dist/components/inputs/Checkbox/Checkbox.js +42 -0
  219. package/dist/components/inputs/Checkbox/Checkbox.js.map +1 -0
  220. package/dist/components/inputs/Checkbox/Checkbox.module.js +12 -0
  221. package/dist/components/inputs/Checkbox/Checkbox.module.js.map +1 -0
  222. package/dist/components/inputs/Checkbox/index.d.ts +2 -0
  223. package/dist/components/inputs/CheckboxField/CheckboxField.d.ts +19 -0
  224. package/dist/components/inputs/CheckboxField/CheckboxField.js +69 -0
  225. package/dist/components/inputs/CheckboxField/CheckboxField.js.map +1 -0
  226. package/dist/components/inputs/CheckboxField/CheckboxField.module.js +12 -0
  227. package/dist/components/inputs/CheckboxField/CheckboxField.module.js.map +1 -0
  228. package/dist/components/inputs/CheckboxField/index.d.ts +2 -0
  229. package/dist/components/inputs/CheckboxGroup/CheckboxGroup.d.ts +43 -0
  230. package/dist/components/inputs/CheckboxGroup/CheckboxGroup.js +159 -0
  231. package/dist/components/inputs/CheckboxGroup/CheckboxGroup.js.map +1 -0
  232. package/dist/components/inputs/CheckboxGroup/CheckboxGroup.module.js +13 -0
  233. package/dist/components/inputs/CheckboxGroup/CheckboxGroup.module.js.map +1 -0
  234. package/dist/components/inputs/CheckboxGroup/choice.d.ts +33 -0
  235. package/dist/components/inputs/CheckboxGroup/choice.js +41 -0
  236. package/dist/components/inputs/CheckboxGroup/choice.js.map +1 -0
  237. package/dist/components/inputs/CheckboxGroup/index.d.ts +2 -0
  238. package/dist/components/inputs/CheckboxGroupField/CheckboxGroupField.d.ts +12 -0
  239. package/dist/components/inputs/CheckboxGroupField/CheckboxGroupField.js +24 -0
  240. package/dist/components/inputs/CheckboxGroupField/CheckboxGroupField.js.map +1 -0
  241. package/dist/components/inputs/CheckboxGroupField/index.d.ts +2 -0
  242. package/dist/components/inputs/ChipGroupField/ChipGroupField.d.ts +12 -0
  243. package/dist/components/inputs/ChipGroupField/ChipGroupField.js +24 -0
  244. package/dist/components/inputs/ChipGroupField/ChipGroupField.js.map +1 -0
  245. package/dist/components/inputs/ChipGroupField/index.d.ts +2 -0
  246. package/dist/components/inputs/ChoiceCards/ChoiceCards.d.ts +50 -0
  247. package/dist/components/inputs/ChoiceCards/ChoiceCards.js +130 -0
  248. package/dist/components/inputs/ChoiceCards/ChoiceCards.js.map +1 -0
  249. package/dist/components/inputs/ChoiceCards/ChoiceCards.module.js +15 -0
  250. package/dist/components/inputs/ChoiceCards/ChoiceCards.module.js.map +1 -0
  251. package/dist/components/inputs/ChoiceCards/index.d.ts +2 -0
  252. package/dist/components/inputs/ChoiceCardsField/ChoiceCardsField.d.ts +12 -0
  253. package/dist/components/inputs/ChoiceCardsField/ChoiceCardsField.js +24 -0
  254. package/dist/components/inputs/ChoiceCardsField/ChoiceCardsField.js.map +1 -0
  255. package/dist/components/inputs/ChoiceCardsField/index.d.ts +2 -0
  256. package/dist/components/inputs/ColorField/ColorField.d.ts +12 -0
  257. package/dist/components/inputs/ColorField/ColorField.js +26 -0
  258. package/dist/components/inputs/ColorField/ColorField.js.map +1 -0
  259. package/dist/components/inputs/ColorField/index.d.ts +2 -0
  260. package/dist/components/inputs/ColorInput/ColorInput.d.ts +30 -0
  261. package/dist/components/inputs/ColorInput/ColorInput.js +149 -0
  262. package/dist/components/inputs/ColorInput/ColorInput.js.map +1 -0
  263. package/dist/components/inputs/ColorInput/ColorInput.module.js +13 -0
  264. package/dist/components/inputs/ColorInput/ColorInput.module.js.map +1 -0
  265. package/dist/components/inputs/ColorInput/colorFormat.d.ts +2 -0
  266. package/dist/components/inputs/ColorInput/colorFormat.js +10 -0
  267. package/dist/components/inputs/ColorInput/colorFormat.js.map +1 -0
  268. package/dist/components/inputs/ColorInput/index.d.ts +2 -0
  269. package/dist/components/inputs/Combobox/Combobox.d.ts +74 -0
  270. package/dist/components/inputs/Combobox/Combobox.js +394 -0
  271. package/dist/components/inputs/Combobox/Combobox.js.map +1 -0
  272. package/dist/components/inputs/Combobox/Combobox.module.js +28 -0
  273. package/dist/components/inputs/Combobox/Combobox.module.js.map +1 -0
  274. package/dist/components/inputs/Combobox/index.d.ts +2 -0
  275. package/dist/components/inputs/Combobox/storyData.d.ts +7 -0
  276. package/dist/components/inputs/Combobox/useControllableState.d.ts +8 -0
  277. package/dist/components/inputs/Combobox/useControllableState.js +13 -0
  278. package/dist/components/inputs/Combobox/useControllableState.js.map +1 -0
  279. package/dist/components/inputs/ComboboxField/ComboboxField.d.ts +17 -0
  280. package/dist/components/inputs/ComboboxField/ComboboxField.js +26 -0
  281. package/dist/components/inputs/ComboboxField/ComboboxField.js.map +1 -0
  282. package/dist/components/inputs/ComboboxField/index.d.ts +2 -0
  283. package/dist/components/inputs/DateRangeField/DateRangeField.d.ts +37 -0
  284. package/dist/components/inputs/DateRangeField/DateRangeField.js +87 -0
  285. package/dist/components/inputs/DateRangeField/DateRangeField.js.map +1 -0
  286. package/dist/components/inputs/DateRangeField/DateRangeField.module.js +10 -0
  287. package/dist/components/inputs/DateRangeField/DateRangeField.module.js.map +1 -0
  288. package/dist/components/inputs/DateRangeField/index.d.ts +2 -0
  289. package/dist/components/inputs/Field/Field.d.ts +79 -0
  290. package/dist/components/inputs/Field/Field.js +100 -0
  291. package/dist/components/inputs/Field/Field.js.map +1 -0
  292. package/dist/components/inputs/Field/Field.module.js +12 -0
  293. package/dist/components/inputs/Field/Field.module.js.map +1 -0
  294. package/dist/components/inputs/Field/index.d.ts +4 -0
  295. package/dist/components/inputs/Fieldset/Fieldset.d.ts +48 -0
  296. package/dist/components/inputs/Fieldset/Fieldset.js +83 -0
  297. package/dist/components/inputs/Fieldset/Fieldset.js.map +1 -0
  298. package/dist/components/inputs/Fieldset/Fieldset.module.js +12 -0
  299. package/dist/components/inputs/Fieldset/Fieldset.module.js.map +1 -0
  300. package/dist/components/inputs/Fieldset/index.d.ts +2 -0
  301. package/dist/components/inputs/FileDrop/FileDrop.d.ts +60 -0
  302. package/dist/components/inputs/FileDrop/FileDrop.js +189 -0
  303. package/dist/components/inputs/FileDrop/FileDrop.js.map +1 -0
  304. package/dist/components/inputs/FileDrop/FileDrop.module.js +21 -0
  305. package/dist/components/inputs/FileDrop/FileDrop.module.js.map +1 -0
  306. package/dist/components/inputs/FileDrop/fileUtils.d.ts +11 -0
  307. package/dist/components/inputs/FileDrop/fileUtils.js +38 -0
  308. package/dist/components/inputs/FileDrop/fileUtils.js.map +1 -0
  309. package/dist/components/inputs/FileDrop/index.d.ts +2 -0
  310. package/dist/components/inputs/FileField/FileField.d.ts +12 -0
  311. package/dist/components/inputs/FileField/FileField.js +26 -0
  312. package/dist/components/inputs/FileField/FileField.js.map +1 -0
  313. package/dist/components/inputs/FileField/index.d.ts +2 -0
  314. package/dist/components/inputs/Input/Input.d.ts +25 -0
  315. package/dist/components/inputs/Input/Input.js +62 -0
  316. package/dist/components/inputs/Input/Input.js.map +1 -0
  317. package/dist/components/inputs/Input/Input.module.js +10 -0
  318. package/dist/components/inputs/Input/Input.module.js.map +1 -0
  319. package/dist/components/inputs/Input/index.d.ts +2 -0
  320. package/dist/components/inputs/NumberField/NumberField.d.ts +11 -0
  321. package/dist/components/inputs/NumberField/NumberField.js +26 -0
  322. package/dist/components/inputs/NumberField/NumberField.js.map +1 -0
  323. package/dist/components/inputs/NumberField/index.d.ts +2 -0
  324. package/dist/components/inputs/NumberInput/NumberInput.d.ts +35 -0
  325. package/dist/components/inputs/NumberInput/NumberInput.js +139 -0
  326. package/dist/components/inputs/NumberInput/NumberInput.js.map +1 -0
  327. package/dist/components/inputs/NumberInput/NumberInput.module.js +6 -0
  328. package/dist/components/inputs/NumberInput/NumberInput.module.js.map +1 -0
  329. package/dist/components/inputs/NumberInput/index.d.ts +2 -0
  330. package/dist/components/inputs/NumberInput/numberFormat.d.ts +24 -0
  331. package/dist/components/inputs/NumberInput/numberFormat.js +48 -0
  332. package/dist/components/inputs/NumberInput/numberFormat.js.map +1 -0
  333. package/dist/components/inputs/OneTimeCodeField/OneTimeCodeField.d.ts +12 -0
  334. package/dist/components/inputs/OneTimeCodeField/OneTimeCodeField.js +26 -0
  335. package/dist/components/inputs/OneTimeCodeField/OneTimeCodeField.js.map +1 -0
  336. package/dist/components/inputs/OneTimeCodeField/index.d.ts +2 -0
  337. package/dist/components/inputs/OneTimeCodeInput/OneTimeCodeInput.d.ts +35 -0
  338. package/dist/components/inputs/OneTimeCodeInput/OneTimeCodeInput.js +56 -0
  339. package/dist/components/inputs/OneTimeCodeInput/OneTimeCodeInput.js.map +1 -0
  340. package/dist/components/inputs/OneTimeCodeInput/OneTimeCodeInput.module.js +9 -0
  341. package/dist/components/inputs/OneTimeCodeInput/OneTimeCodeInput.module.js.map +1 -0
  342. package/dist/components/inputs/OneTimeCodeInput/index.d.ts +2 -0
  343. package/dist/components/inputs/PasswordField/PasswordField.d.ts +13 -0
  344. package/dist/components/inputs/PasswordField/PasswordField.js +29 -0
  345. package/dist/components/inputs/PasswordField/PasswordField.js.map +1 -0
  346. package/dist/components/inputs/PasswordField/index.d.ts +2 -0
  347. package/dist/components/inputs/PasswordInput/PasswordInput.d.ts +22 -0
  348. package/dist/components/inputs/PasswordInput/PasswordInput.js +75 -0
  349. package/dist/components/inputs/PasswordInput/PasswordInput.js.map +1 -0
  350. package/dist/components/inputs/PasswordInput/PasswordInput.module.js +6 -0
  351. package/dist/components/inputs/PasswordInput/PasswordInput.module.js.map +1 -0
  352. package/dist/components/inputs/PasswordInput/index.d.ts +2 -0
  353. package/dist/components/inputs/RadioGroup/RadioGroup.d.ts +19 -0
  354. package/dist/components/inputs/RadioGroup/RadioGroup.js +68 -0
  355. package/dist/components/inputs/RadioGroup/RadioGroup.js.map +1 -0
  356. package/dist/components/inputs/RadioGroup/RadioGroup.module.js +15 -0
  357. package/dist/components/inputs/RadioGroup/RadioGroup.module.js.map +1 -0
  358. package/dist/components/inputs/RadioGroup/index.d.ts +2 -0
  359. package/dist/components/inputs/RadioGroupField/RadioGroupField.d.ts +16 -0
  360. package/dist/components/inputs/RadioGroupField/RadioGroupField.js +33 -0
  361. package/dist/components/inputs/RadioGroupField/RadioGroupField.js.map +1 -0
  362. package/dist/components/inputs/RadioGroupField/index.d.ts +2 -0
  363. package/dist/components/inputs/RangeSlider/RangeSlider.d.ts +23 -0
  364. package/dist/components/inputs/RangeSlider/RangeSlider.js +63 -0
  365. package/dist/components/inputs/RangeSlider/RangeSlider.js.map +1 -0
  366. package/dist/components/inputs/RangeSlider/index.d.ts +2 -0
  367. package/dist/components/inputs/RangeSliderField/RangeSliderField.d.ts +12 -0
  368. package/dist/components/inputs/RangeSliderField/RangeSliderField.js +24 -0
  369. package/dist/components/inputs/RangeSliderField/RangeSliderField.js.map +1 -0
  370. package/dist/components/inputs/RangeSliderField/index.d.ts +2 -0
  371. package/dist/components/inputs/Rating/Rating.d.ts +31 -0
  372. package/dist/components/inputs/Rating/Rating.js +66 -0
  373. package/dist/components/inputs/Rating/Rating.js.map +1 -0
  374. package/dist/components/inputs/Rating/Rating.module.js +10 -0
  375. package/dist/components/inputs/Rating/Rating.module.js.map +1 -0
  376. package/dist/components/inputs/Rating/index.d.ts +2 -0
  377. package/dist/components/inputs/RatingField/RatingField.d.ts +12 -0
  378. package/dist/components/inputs/RatingField/RatingField.js +24 -0
  379. package/dist/components/inputs/RatingField/RatingField.js.map +1 -0
  380. package/dist/components/inputs/RatingField/index.d.ts +2 -0
  381. package/dist/components/inputs/SegmentedField/SegmentedField.d.ts +12 -0
  382. package/dist/components/inputs/SegmentedField/SegmentedField.js +24 -0
  383. package/dist/components/inputs/SegmentedField/SegmentedField.js.map +1 -0
  384. package/dist/components/inputs/SegmentedField/index.d.ts +2 -0
  385. package/dist/components/inputs/Select/Select.d.ts +66 -0
  386. package/dist/components/inputs/Select/Select.js +165 -0
  387. package/dist/components/inputs/Select/Select.js.map +1 -0
  388. package/dist/components/inputs/Select/Select.module.js +19 -0
  389. package/dist/components/inputs/Select/Select.module.js.map +1 -0
  390. package/dist/components/inputs/Select/index.d.ts +2 -0
  391. package/dist/components/inputs/SelectField/SelectField.d.ts +13 -0
  392. package/dist/components/inputs/SelectField/SelectField.js +26 -0
  393. package/dist/components/inputs/SelectField/SelectField.js.map +1 -0
  394. package/dist/components/inputs/SelectField/index.d.ts +2 -0
  395. package/dist/components/inputs/Slider/Slider.d.ts +40 -0
  396. package/dist/components/inputs/Slider/Slider.js +51 -0
  397. package/dist/components/inputs/Slider/Slider.js.map +1 -0
  398. package/dist/components/inputs/Slider/Slider.module.js +15 -0
  399. package/dist/components/inputs/Slider/Slider.module.js.map +1 -0
  400. package/dist/components/inputs/Slider/SliderBase.d.ts +37 -0
  401. package/dist/components/inputs/Slider/SliderBase.js +85 -0
  402. package/dist/components/inputs/Slider/SliderBase.js.map +1 -0
  403. package/dist/components/inputs/Slider/index.d.ts +2 -0
  404. package/dist/components/inputs/SliderField/SliderField.d.ts +12 -0
  405. package/dist/components/inputs/SliderField/SliderField.js +24 -0
  406. package/dist/components/inputs/SliderField/SliderField.js.map +1 -0
  407. package/dist/components/inputs/SliderField/index.d.ts +2 -0
  408. package/dist/components/inputs/Switch/Switch.d.ts +18 -0
  409. package/dist/components/inputs/Switch/Switch.js +46 -0
  410. package/dist/components/inputs/Switch/Switch.js.map +1 -0
  411. package/dist/components/inputs/Switch/Switch.module.js +11 -0
  412. package/dist/components/inputs/Switch/Switch.module.js.map +1 -0
  413. package/dist/components/inputs/Switch/index.d.ts +2 -0
  414. package/dist/components/inputs/SwitchField/SwitchField.d.ts +13 -0
  415. package/dist/components/inputs/SwitchField/SwitchField.js +73 -0
  416. package/dist/components/inputs/SwitchField/SwitchField.js.map +1 -0
  417. package/dist/components/inputs/SwitchField/SwitchField.module.js +12 -0
  418. package/dist/components/inputs/SwitchField/SwitchField.module.js.map +1 -0
  419. package/dist/components/inputs/SwitchField/index.d.ts +2 -0
  420. package/dist/components/inputs/TagsField/TagsField.d.ts +12 -0
  421. package/dist/components/inputs/TagsField/TagsField.js +26 -0
  422. package/dist/components/inputs/TagsField/TagsField.js.map +1 -0
  423. package/dist/components/inputs/TagsField/index.d.ts +2 -0
  424. package/dist/components/inputs/TagsInput/TagsInput.d.ts +35 -0
  425. package/dist/components/inputs/TagsInput/TagsInput.js +155 -0
  426. package/dist/components/inputs/TagsInput/TagsInput.js.map +1 -0
  427. package/dist/components/inputs/TagsInput/TagsInput.module.js +13 -0
  428. package/dist/components/inputs/TagsInput/TagsInput.module.js.map +1 -0
  429. package/dist/components/inputs/TagsInput/index.d.ts +2 -0
  430. package/dist/components/inputs/TextField/TextField.d.ts +18 -0
  431. package/dist/components/inputs/TextField/TextField.js +40 -0
  432. package/dist/components/inputs/TextField/TextField.js.map +1 -0
  433. package/dist/components/inputs/TextField/index.d.ts +2 -0
  434. package/dist/components/inputs/Textarea/Textarea.d.ts +20 -0
  435. package/dist/components/inputs/Textarea/Textarea.js +61 -0
  436. package/dist/components/inputs/Textarea/Textarea.js.map +1 -0
  437. package/dist/components/inputs/Textarea/Textarea.module.js +6 -0
  438. package/dist/components/inputs/Textarea/Textarea.module.js.map +1 -0
  439. package/dist/components/inputs/Textarea/index.d.ts +2 -0
  440. package/dist/components/inputs/TextareaField/TextareaField.d.ts +18 -0
  441. package/dist/components/inputs/TextareaField/TextareaField.js +40 -0
  442. package/dist/components/inputs/TextareaField/TextareaField.js.map +1 -0
  443. package/dist/components/inputs/TextareaField/index.d.ts +2 -0
  444. package/dist/components/inputs/internal/FieldContext.d.ts +60 -0
  445. package/dist/components/inputs/internal/FieldContext.js +32 -0
  446. package/dist/components/inputs/internal/FieldContext.js.map +1 -0
  447. package/dist/components/inputs/internal/control.module.js +6 -0
  448. package/dist/components/inputs/internal/control.module.js.map +1 -0
  449. package/dist/components/inputs/internal/errors.d.ts +5 -0
  450. package/dist/components/inputs/internal/errors.js +11 -0
  451. package/dist/components/inputs/internal/errors.js.map +1 -0
  452. package/dist/components/inputs/internal/fieldProps.d.ts +12 -0
  453. package/dist/components/inputs/internal/fieldProps.js +25 -0
  454. package/dist/components/inputs/internal/fieldProps.js.map +1 -0
  455. package/dist/components/inputs/internal/filterOptions.d.ts +23 -0
  456. package/dist/components/inputs/internal/filterOptions.js +28 -0
  457. package/dist/components/inputs/internal/filterOptions.js.map +1 -0
  458. package/dist/components/inputs/internal/messages.d.ts +40 -0
  459. package/dist/components/inputs/internal/messages.js +58 -0
  460. package/dist/components/inputs/internal/messages.js.map +1 -0
  461. package/dist/components/inputs/internal/messages.module.js +18 -0
  462. package/dist/components/inputs/internal/messages.module.js.map +1 -0
  463. package/dist/components/inputs/internal/refs.d.ts +7 -0
  464. package/dist/components/inputs/internal/refs.js +19 -0
  465. package/dist/components/inputs/internal/refs.js.map +1 -0
  466. package/dist/components/inputs/internal/storyData.d.ts +4 -0
  467. package/dist/components/inputs/internal/useLatest.d.ts +7 -0
  468. package/dist/components/inputs/internal/useLatest.js +13 -0
  469. package/dist/components/inputs/internal/useLatest.js.map +1 -0
  470. package/dist/components/layout/ActionBar/ActionBar.d.ts +30 -0
  471. package/dist/components/layout/ActionBar/ActionBar.js +25 -0
  472. package/dist/components/layout/ActionBar/ActionBar.js.map +1 -0
  473. package/dist/components/layout/ActionBar/ActionBar.module.js +6 -0
  474. package/dist/components/layout/ActionBar/ActionBar.module.js.map +1 -0
  475. package/dist/components/layout/ActionBar/index.d.ts +2 -0
  476. package/dist/components/layout/AppShell/AppShell.d.ts +33 -0
  477. package/dist/components/layout/AppShell/AppShell.js +70 -0
  478. package/dist/components/layout/AppShell/AppShell.js.map +1 -0
  479. package/dist/components/layout/AppShell/AppShell.module.js +14 -0
  480. package/dist/components/layout/AppShell/AppShell.module.js.map +1 -0
  481. package/dist/components/layout/AppShell/index.d.ts +2 -0
  482. package/dist/components/layout/AspectRatio/AspectRatio.d.ts +14 -0
  483. package/dist/components/layout/AspectRatio/AspectRatio.js +18 -0
  484. package/dist/components/layout/AspectRatio/AspectRatio.js.map +1 -0
  485. package/dist/components/layout/AspectRatio/AspectRatio.module.js +6 -0
  486. package/dist/components/layout/AspectRatio/AspectRatio.module.js.map +1 -0
  487. package/dist/components/layout/AspectRatio/index.d.ts +2 -0
  488. package/dist/components/layout/Box/Box.d.ts +29 -0
  489. package/dist/components/layout/Box/Box.js +26 -0
  490. package/dist/components/layout/Box/Box.js.map +1 -0
  491. package/dist/components/layout/Box/Box.module.js +6 -0
  492. package/dist/components/layout/Box/Box.module.js.map +1 -0
  493. package/dist/components/layout/Box/index.d.ts +2 -0
  494. package/dist/components/layout/Container/Container.d.ts +21 -0
  495. package/dist/components/layout/Container/Container.js +22 -0
  496. package/dist/components/layout/Container/Container.js.map +1 -0
  497. package/dist/components/layout/Container/Container.module.js +6 -0
  498. package/dist/components/layout/Container/Container.module.js.map +1 -0
  499. package/dist/components/layout/Container/index.d.ts +2 -0
  500. package/dist/components/layout/Divider/Divider.d.ts +28 -0
  501. package/dist/components/layout/Divider/Divider.js +35 -0
  502. package/dist/components/layout/Divider/Divider.js.map +1 -0
  503. package/dist/components/layout/Divider/Divider.module.js +9 -0
  504. package/dist/components/layout/Divider/Divider.module.js.map +1 -0
  505. package/dist/components/layout/Divider/index.d.ts +2 -0
  506. package/dist/components/layout/Grid/Grid.d.ts +50 -0
  507. package/dist/components/layout/Grid/Grid.js +35 -0
  508. package/dist/components/layout/Grid/Grid.js.map +1 -0
  509. package/dist/components/layout/Grid/Grid.module.js +9 -0
  510. package/dist/components/layout/Grid/Grid.module.js.map +1 -0
  511. package/dist/components/layout/Grid/index.d.ts +2 -0
  512. package/dist/components/layout/Inline/Inline.d.ts +24 -0
  513. package/dist/components/layout/Inline/Inline.js +25 -0
  514. package/dist/components/layout/Inline/Inline.js.map +1 -0
  515. package/dist/components/layout/Inline/Inline.module.js +6 -0
  516. package/dist/components/layout/Inline/Inline.module.js.map +1 -0
  517. package/dist/components/layout/Inline/index.d.ts +2 -0
  518. package/dist/components/layout/Section/Section.d.ts +30 -0
  519. package/dist/components/layout/Section/Section.js +25 -0
  520. package/dist/components/layout/Section/Section.js.map +1 -0
  521. package/dist/components/layout/Section/Section.module.js +6 -0
  522. package/dist/components/layout/Section/Section.module.js.map +1 -0
  523. package/dist/components/layout/Section/index.d.ts +2 -0
  524. package/dist/components/layout/Split/Split.d.ts +32 -0
  525. package/dist/components/layout/Split/Split.js +26 -0
  526. package/dist/components/layout/Split/Split.js.map +1 -0
  527. package/dist/components/layout/Split/Split.module.js +6 -0
  528. package/dist/components/layout/Split/Split.module.js.map +1 -0
  529. package/dist/components/layout/Split/index.d.ts +2 -0
  530. package/dist/components/layout/Stack/Stack.d.ts +21 -0
  531. package/dist/components/layout/Stack/Stack.js +25 -0
  532. package/dist/components/layout/Stack/Stack.js.map +1 -0
  533. package/dist/components/layout/Stack/Stack.module.js +6 -0
  534. package/dist/components/layout/Stack/Stack.module.js.map +1 -0
  535. package/dist/components/layout/Stack/index.d.ts +2 -0
  536. package/dist/components/layout/VisuallyHidden/VisuallyHidden.d.ts +20 -0
  537. package/dist/components/layout/VisuallyHidden/VisuallyHidden.js +17 -0
  538. package/dist/components/layout/VisuallyHidden/VisuallyHidden.js.map +1 -0
  539. package/dist/components/layout/VisuallyHidden/VisuallyHidden.module.js +6 -0
  540. package/dist/components/layout/VisuallyHidden/VisuallyHidden.module.js.map +1 -0
  541. package/dist/components/layout/VisuallyHidden/index.d.ts +2 -0
  542. package/dist/components/navigation/Accordion/Accordion.d.ts +35 -0
  543. package/dist/components/navigation/Accordion/Accordion.js +68 -0
  544. package/dist/components/navigation/Accordion/Accordion.js.map +1 -0
  545. package/dist/components/navigation/Accordion/Accordion.module.js +17 -0
  546. package/dist/components/navigation/Accordion/Accordion.module.js.map +1 -0
  547. package/dist/components/navigation/Accordion/index.d.ts +2 -0
  548. package/dist/components/navigation/BottomNav/BottomNav.d.ts +42 -0
  549. package/dist/components/navigation/BottomNav/BottomNav.js +67 -0
  550. package/dist/components/navigation/BottomNav/BottomNav.js.map +1 -0
  551. package/dist/components/navigation/BottomNav/BottomNav.module.js +16 -0
  552. package/dist/components/navigation/BottomNav/BottomNav.module.js.map +1 -0
  553. package/dist/components/navigation/BottomNav/index.d.ts +2 -0
  554. package/dist/components/navigation/NavLinks/NavLinks.d.ts +32 -0
  555. package/dist/components/navigation/NavLinks/NavLinks.js +57 -0
  556. package/dist/components/navigation/NavLinks/NavLinks.js.map +1 -0
  557. package/dist/components/navigation/NavLinks/NavLinks.module.js +11 -0
  558. package/dist/components/navigation/NavLinks/NavLinks.module.js.map +1 -0
  559. package/dist/components/navigation/NavLinks/index.d.ts +2 -0
  560. package/dist/components/navigation/Stepper/Stepper.d.ts +45 -0
  561. package/dist/components/navigation/Stepper/Stepper.js +93 -0
  562. package/dist/components/navigation/Stepper/Stepper.js.map +1 -0
  563. package/dist/components/navigation/Stepper/Stepper.module.js +19 -0
  564. package/dist/components/navigation/Stepper/Stepper.module.js.map +1 -0
  565. package/dist/components/navigation/Stepper/index.d.ts +2 -0
  566. package/dist/components/navigation/Tabs/Tabs.d.ts +31 -0
  567. package/dist/components/navigation/Tabs/Tabs.js +47 -0
  568. package/dist/components/navigation/Tabs/Tabs.js.map +1 -0
  569. package/dist/components/navigation/Tabs/Tabs.module.js +11 -0
  570. package/dist/components/navigation/Tabs/Tabs.module.js.map +1 -0
  571. package/dist/components/navigation/Tabs/index.d.ts +2 -0
  572. package/dist/components/overlays/Dialog/Dialog.d.ts +49 -0
  573. package/dist/components/overlays/Dialog/Dialog.js +97 -0
  574. package/dist/components/overlays/Dialog/Dialog.js.map +1 -0
  575. package/dist/components/overlays/Dialog/Dialog.module.js +17 -0
  576. package/dist/components/overlays/Dialog/Dialog.module.js.map +1 -0
  577. package/dist/components/overlays/Dialog/index.d.ts +2 -0
  578. package/dist/components/overlays/DropdownMenu/DropdownMenu.d.ts +62 -0
  579. package/dist/components/overlays/DropdownMenu/DropdownMenu.js +172 -0
  580. package/dist/components/overlays/DropdownMenu/DropdownMenu.js.map +1 -0
  581. package/dist/components/overlays/DropdownMenu/DropdownMenu.module.js +19 -0
  582. package/dist/components/overlays/DropdownMenu/DropdownMenu.module.js.map +1 -0
  583. package/dist/components/overlays/DropdownMenu/index.d.ts +2 -0
  584. package/dist/components/overlays/OverlayClose.d.ts +7 -0
  585. package/dist/components/overlays/OverlayClose.js +20 -0
  586. package/dist/components/overlays/OverlayClose.js.map +1 -0
  587. package/dist/components/overlays/OverlayClose.module.js +6 -0
  588. package/dist/components/overlays/OverlayClose.module.js.map +1 -0
  589. package/dist/components/overlays/Popover/Popover.d.ts +31 -0
  590. package/dist/components/overlays/Popover/Popover.js +75 -0
  591. package/dist/components/overlays/Popover/Popover.js.map +1 -0
  592. package/dist/components/overlays/Popover/Popover.module.js +13 -0
  593. package/dist/components/overlays/Popover/Popover.module.js.map +1 -0
  594. package/dist/components/overlays/Popover/index.d.ts +2 -0
  595. package/dist/components/overlays/Sheet/Sheet.d.ts +56 -0
  596. package/dist/components/overlays/Sheet/Sheet.js +105 -0
  597. package/dist/components/overlays/Sheet/Sheet.js.map +1 -0
  598. package/dist/components/overlays/Sheet/Sheet.module.js +20 -0
  599. package/dist/components/overlays/Sheet/Sheet.module.js.map +1 -0
  600. package/dist/components/overlays/Sheet/index.d.ts +2 -0
  601. package/dist/components/overlays/Tooltip/Tooltip.d.ts +35 -0
  602. package/dist/components/overlays/Tooltip/Tooltip.js +64 -0
  603. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -0
  604. package/dist/components/overlays/Tooltip/Tooltip.module.js +11 -0
  605. package/dist/components/overlays/Tooltip/Tooltip.module.js.map +1 -0
  606. package/dist/components/overlays/Tooltip/index.d.ts +2 -0
  607. package/dist/components/overlays/usePortalTheme.d.ts +44 -0
  608. package/dist/components/overlays/usePortalTheme.js +62 -0
  609. package/dist/components/overlays/usePortalTheme.js.map +1 -0
  610. package/dist/components/typography/Amount/Amount.d.ts +27 -0
  611. package/dist/components/typography/Amount/Amount.js +67 -0
  612. package/dist/components/typography/Amount/Amount.js.map +1 -0
  613. package/dist/components/typography/Amount/Amount.module.js +6 -0
  614. package/dist/components/typography/Amount/Amount.module.js.map +1 -0
  615. package/dist/components/typography/Amount/index.d.ts +2 -0
  616. package/dist/components/typography/Code/Code.d.ts +13 -0
  617. package/dist/components/typography/Code/Code.js +18 -0
  618. package/dist/components/typography/Code/Code.js.map +1 -0
  619. package/dist/components/typography/Code/Code.module.js +6 -0
  620. package/dist/components/typography/Code/Code.module.js.map +1 -0
  621. package/dist/components/typography/Code/index.d.ts +2 -0
  622. package/dist/components/typography/Heading/Heading.d.ts +34 -0
  623. package/dist/components/typography/Heading/Heading.js +46 -0
  624. package/dist/components/typography/Heading/Heading.js.map +1 -0
  625. package/dist/components/typography/Heading/Heading.module.js +6 -0
  626. package/dist/components/typography/Heading/Heading.module.js.map +1 -0
  627. package/dist/components/typography/Heading/index.d.ts +4 -0
  628. package/dist/components/typography/Heading/sizes.d.ts +4 -0
  629. package/dist/components/typography/Heading/sizes.js +13 -0
  630. package/dist/components/typography/Heading/sizes.js.map +1 -0
  631. package/dist/components/typography/Kbd/Kbd.d.ts +11 -0
  632. package/dist/components/typography/Kbd/Kbd.js +18 -0
  633. package/dist/components/typography/Kbd/Kbd.js.map +1 -0
  634. package/dist/components/typography/Kbd/Kbd.module.js +6 -0
  635. package/dist/components/typography/Kbd/Kbd.module.js.map +1 -0
  636. package/dist/components/typography/Kbd/index.d.ts +2 -0
  637. package/dist/components/typography/Link/Link.d.ts +26 -0
  638. package/dist/components/typography/Link/Link.js +32 -0
  639. package/dist/components/typography/Link/Link.js.map +1 -0
  640. package/dist/components/typography/Link/Link.module.js +11 -0
  641. package/dist/components/typography/Link/Link.module.js.map +1 -0
  642. package/dist/components/typography/Link/index.d.ts +2 -0
  643. package/dist/components/typography/Numeral/Numeral.d.ts +29 -0
  644. package/dist/components/typography/Numeral/Numeral.js +41 -0
  645. package/dist/components/typography/Numeral/Numeral.js.map +1 -0
  646. package/dist/components/typography/Numeral/Numeral.module.js +9 -0
  647. package/dist/components/typography/Numeral/Numeral.module.js.map +1 -0
  648. package/dist/components/typography/Numeral/format.d.ts +16 -0
  649. package/dist/components/typography/Numeral/format.js +30 -0
  650. package/dist/components/typography/Numeral/format.js.map +1 -0
  651. package/dist/components/typography/Numeral/index.d.ts +4 -0
  652. package/dist/components/typography/Prose/Prose.d.ts +16 -0
  653. package/dist/components/typography/Prose/Prose.js +17 -0
  654. package/dist/components/typography/Prose/Prose.js.map +1 -0
  655. package/dist/components/typography/Prose/Prose.module.js +6 -0
  656. package/dist/components/typography/Prose/Prose.module.js.map +1 -0
  657. package/dist/components/typography/Prose/index.d.ts +2 -0
  658. package/dist/components/typography/Quote/Quote.d.ts +20 -0
  659. package/dist/components/typography/Quote/Quote.js +34 -0
  660. package/dist/components/typography/Quote/Quote.js.map +1 -0
  661. package/dist/components/typography/Quote/Quote.module.js +11 -0
  662. package/dist/components/typography/Quote/Quote.module.js.map +1 -0
  663. package/dist/components/typography/Quote/index.d.ts +2 -0
  664. package/dist/components/typography/SectionHeader/SectionHeader.d.ts +33 -0
  665. package/dist/components/typography/SectionHeader/SectionHeader.js +42 -0
  666. package/dist/components/typography/SectionHeader/SectionHeader.js.map +1 -0
  667. package/dist/components/typography/SectionHeader/SectionHeader.module.js +13 -0
  668. package/dist/components/typography/SectionHeader/SectionHeader.module.js.map +1 -0
  669. package/dist/components/typography/SectionHeader/index.d.ts +2 -0
  670. package/dist/components/typography/Text/Text.d.ts +35 -0
  671. package/dist/components/typography/Text/Text.js +27 -0
  672. package/dist/components/typography/Text/Text.js.map +1 -0
  673. package/dist/components/typography/Text/Text.module.js +6 -0
  674. package/dist/components/typography/Text/Text.module.js.map +1 -0
  675. package/dist/components/typography/Text/index.d.ts +2 -0
  676. package/dist/icons/Icon.d.ts +14 -0
  677. package/dist/icons/Icon.js +30 -0
  678. package/dist/icons/Icon.js.map +1 -0
  679. package/dist/icons/Icon.module.js +6 -0
  680. package/dist/icons/Icon.module.js.map +1 -0
  681. package/dist/icons/icons.d.ts +26 -0
  682. package/dist/icons/icons.js +63 -0
  683. package/dist/icons/icons.js.map +1 -0
  684. package/dist/icons/index.d.ts +3 -0
  685. package/dist/index.d.ts +225 -0
  686. package/dist/index.js +117 -0
  687. package/dist/styles.css +2 -0
  688. package/dist/stylesheets.d.ts +10 -0
  689. package/dist/theme/ThemeProvider.d.ts +52 -0
  690. package/dist/theme/ThemeProvider.js +86 -0
  691. package/dist/theme/ThemeProvider.js.map +1 -0
  692. package/dist/theme/context.d.ts +20 -0
  693. package/dist/theme/context.js +19 -0
  694. package/dist/theme/context.js.map +1 -0
  695. package/dist/theme/index.d.ts +6 -0
  696. package/dist/theme/themes.d.ts +31 -0
  697. package/dist/theme/themes.js +36 -0
  698. package/dist/theme/themes.js.map +1 -0
  699. package/dist/themes/fiesta.css +1 -0
  700. package/dist/themes/ledger.css +1 -0
  701. package/dist/themes/monograph.css +1 -0
  702. package/dist/utils/cx.d.ts +5 -0
  703. package/dist/utils/cx.js +8 -0
  704. package/dist/utils/cx.js.map +1 -0
  705. package/dist/utils/heading.d.ts +13 -0
  706. package/dist/utils/heading.js +16 -0
  707. package/dist/utils/heading.js.map +1 -0
  708. package/dist/utils/index.d.ts +7 -0
  709. package/dist/utils/responsive.d.ts +28 -0
  710. package/dist/utils/responsive.js +40 -0
  711. package/dist/utils/responsive.js.map +1 -0
  712. package/dist/utils/tokens.d.ts +18 -0
  713. package/dist/utils/tokens.js +6 -0
  714. package/dist/utils/tokens.js.map +1 -0
  715. package/dist/utils/visibility.d.ts +14 -0
  716. package/dist/utils/visibility.js +21 -0
  717. package/dist/utils/visibility.js.map +1 -0
  718. package/dist/utils/visibility.module.js +16 -0
  719. package/dist/utils/visibility.module.js.map +1 -0
  720. package/package.json +91 -0
  721. package/skills/custom-theme/SKILL.md +293 -0
  722. package/skills/custom-theme/references/colour.md +55 -0
  723. package/skills/custom-theme/references/motion.md +39 -0
  724. package/skills/custom-theme/references/tokens.md +199 -0
  725. package/skills/custom-theme/references/type.md +61 -0
  726. package/skills/design-rules/SKILL.md +74 -0
  727. package/skills/layout-composition/SKILL.md +498 -0
  728. package/skills/layout-composition/references/action-bar.md +59 -0
  729. package/skills/layout-composition/references/app-shell.md +141 -0
  730. package/skills/layout-composition/references/aspect-ratio.md +49 -0
  731. package/skills/layout-composition/references/box.md +49 -0
  732. package/skills/layout-composition/references/checkout.md +124 -0
  733. package/skills/layout-composition/references/container.md +59 -0
  734. package/skills/layout-composition/references/dashboard.md +163 -0
  735. package/skills/layout-composition/references/divider.md +59 -0
  736. package/skills/layout-composition/references/settings.md +134 -0
  737. package/skills/layout-composition/references/visually-hidden.md +41 -0
  738. package/skills/setup-and-theming/SKILL.md +197 -0
  739. package/skills/setup-and-theming/references/fiesta.md +32 -0
  740. package/skills/setup-and-theming/references/ledger.md +32 -0
  741. package/skills/setup-and-theming/references/monograph.md +39 -0
  742. package/skills/setup-and-theming/references/paper.md +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.js","names":["styles","List_module_default","ListRoot","forwardRef","Comp","rest","cx","className","divided","density","ListItem","Row","asChild","Slot","interactive","selected","highlighted","ListLeading","ListContent","ListDescription","ListTrailing","List"],"sources":["../../../../src/components/display/List/List.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type LiHTMLAttributes, type ReactNode } from 'react'\nimport { Slot } from 'radix-ui'\nimport { cx } from '#utils/cx'\nimport styles from './List.module.css'\n\nexport type ListDensity = 'compact' | 'regular'\nexport type ListElement = 'ul' | 'ol'\n\nexport interface ListProps extends HTMLAttributes<HTMLUListElement> {\n /** Hairline rules between rows. Default `true`. */\n divided?: boolean\n /** Row height. Default `regular`. */\n density?: ListDensity\n /** `ol` when order is the content (a leaderboard). Default `ul`. */\n as?: ListElement\n}\n\n/**\n * The workhorse row list: leaderboards, team members, invoices, recent work. Rows are\n * `Leading · Content · Trailing`, divided by hairlines, never boxed in cards.\n *\n * <List><List.Item><List.Leading>1</List.Leading><List.Content>…</List.Content></List.Item></List>\n */\nconst ListRoot = forwardRef<HTMLUListElement, ListProps>(function List(\n { divided = true, density = 'regular', as: Comp = 'ul', className, ...rest },\n ref,\n) {\n return (\n <Comp\n // @ts-expect-error — ul/ol share HTMLOListElement-compatible attributes; ref type differs only nominally\n ref={ref}\n role=\"list\"\n className={cx(styles.list, className)}\n data-divided={divided || undefined}\n data-density={density}\n {...rest}\n />\n )\n})\n\nexport interface ListItemProps extends LiHTMLAttributes<HTMLLIElement> {\n /** Hover affordance. Implied by `asChild`. */\n interactive?: boolean\n /**\n * Make the whole row one link or button: the single child becomes the row, so there\n * is exactly one interactive element and no nested anchors.\n * `<List.Item asChild><a href=\"/projects/atlas\">…slots…</a></List.Item>`\n */\n asChild?: boolean\n /** The current item (accent-soft fill) — e.g. the open page in a list of links. */\n selected?: boolean\n /** Draw attention to a row with `--color-highlight` — typically \"you\". */\n highlighted?: boolean\n children?: ReactNode\n}\n\nconst ListItem = forwardRef<HTMLLIElement, ListItemProps>(function ListItem(\n {\n interactive = false,\n asChild = false,\n selected = false,\n highlighted = false,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const Row = asChild ? Slot.Root : 'div'\n return (\n <li\n ref={ref}\n className={cx(styles.item, className)}\n data-interactive={interactive || asChild || undefined}\n data-selected={selected || undefined}\n data-highlighted={highlighted || undefined}\n {...rest}\n >\n <Row className={styles.row}>{children}</Row>\n </li>\n )\n})\n\n/** Rank, avatar or icon at the start of the row. Numbers are tabular and right-aligned. */\nconst ListLeading = forwardRef<HTMLSpanElement, HTMLAttributes<HTMLSpanElement>>(\n function ListLeading({ className, ...rest }, ref) {\n return <span ref={ref} className={cx(styles.leading, className)} {...rest} />\n },\n)\n\n/** Title (the direct text) and an optional `List.Description` below it. */\nconst ListContent = forwardRef<HTMLSpanElement, HTMLAttributes<HTMLSpanElement>>(\n function ListContent({ className, ...rest }, ref) {\n return <span ref={ref} className={cx(styles.content, className)} {...rest} />\n },\n)\n\nconst ListDescription = forwardRef<HTMLSpanElement, HTMLAttributes<HTMLSpanElement>>(\n function ListDescription({ className, ...rest }, ref) {\n return <span ref={ref} className={cx(styles.description, className)} {...rest} />\n },\n)\n\n/** Value, meta or actions at the end of the row. Numbers are tabular. */\nconst ListTrailing = forwardRef<HTMLSpanElement, HTMLAttributes<HTMLSpanElement>>(\n function ListTrailing({ className, ...rest }, ref) {\n return <span ref={ref} className={cx(styles.trailing, className)} {...rest} />\n },\n)\n\nexport const List = Object.assign(ListRoot, {\n Item: ListItem,\n Leading: ListLeading,\n Content: ListContent,\n Description: ListDescription,\n Trailing: ListTrailing,\n})\n"],"mappings":";;;;;;AAuBA,IAAME,IAAWC,EAAwC,SACvD,EAAE,aAAU,IAAM,aAAU,WAAW,IAAIC,IAAO,MAAM,cAAW,GAAGC,KACtE,GACA;CACA,OACE,kBAACD,GAAD;EAEO;EACL,MAAK;EACL,WAAWE,EAAGN,EAAO,MAAMO,CAAS;EACpC,gBAAcC,KAAW,KAAA;EACzB,gBAAcC;EACd,GAAIJ;CACL,CAAA;AAEL,CAAC,GAkBKK,IAAWP,EAAyC,SACxD,EACE,iBAAc,IACd,aAAU,IACV,cAAW,IACX,iBAAc,IACd,cACA,aACA,GAAGE,KAEL,GACA;CACA,IAAMM,IAAMC,IAAUC,EAAK,OAAO;CAClC,OACE,kBAAC,MAAD;EACO;EACL,WAAWP,EAAGN,EAAO,MAAMO,CAAS;EACpC,oBAAkBO,KAAeF,KAAW,KAAA;EAC5C,iBAAeG,KAAY,KAAA;EAC3B,oBAAkBC,KAAe,KAAA;EACjC,GAAIX;EAEJ,UAAA,kBAACM,GAAD;GAAK,WAAWX,EAAO;GAAM;EAAc,CAAA;CACzC,CAAA;AAER,CAAC,GAGKiB,IAAcd,EAClB,SAAqB,EAAE,cAAW,GAAGE,KAAQ,GAAK;CAChD,OAAO,kBAAC,QAAD;EAAW;EAAK,WAAWC,EAAGN,EAAO,SAASO,CAAS;EAAG,GAAIF;CAAO,CAAA;AAC9E,CACF,GAGMa,IAAcf,EAClB,SAAqB,EAAE,cAAW,GAAGE,KAAQ,GAAK;CAChD,OAAO,kBAAC,QAAD;EAAW;EAAK,WAAWC,EAAGN,EAAO,SAASO,CAAS;EAAG,GAAIF;CAAO,CAAA;AAC9E,CACF,GAEMc,IAAkBhB,EACtB,SAAyB,EAAE,cAAW,GAAGE,KAAQ,GAAK;CACpD,OAAO,kBAAC,QAAD;EAAW;EAAK,WAAWC,EAAGN,EAAO,aAAaO,CAAS;EAAG,GAAIF;CAAO,CAAA;AAClF,CACF,GAGMe,IAAejB,EACnB,SAAsB,EAAE,cAAW,GAAGE,KAAQ,GAAK;CACjD,OAAO,kBAAC,QAAD;EAAW;EAAK,WAAWC,EAAGN,EAAO,UAAUO,CAAS;EAAG,GAAIF;CAAO,CAAA;AAC/E,CACF,GAEagB,IAAO,OAAO,OAAOnB,GAAU;CAC1C,MAAMQ;CACN,SAASO;CACT,SAASC;CACT,aAAaC;CACb,UAAUC;AACZ,CAAC"}
@@ -0,0 +1,14 @@
1
+ //#region src/components/display/List/List.module.css
2
+ var e = "kiln-List__list", t = "kiln-List__item", n = "kiln-List__row", r = "kiln-List__leading", i = "kiln-List__content", a = "kiln-List__description", o = "kiln-List__trailing", s = {
3
+ list: e,
4
+ item: t,
5
+ row: n,
6
+ leading: r,
7
+ content: i,
8
+ description: a,
9
+ trailing: o
10
+ };
11
+ //#endregion
12
+ export { i as content, s as default, a as description, t as item, r as leading, e as list, n as row, o as trailing };
13
+
14
+ //# sourceMappingURL=List.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.module.js","names":["list","item","row","leading","content","description","trailing","List_module_default"],"sources":["../../../../src/components/display/List/List.module.css"],"sourcesContent":["/*\n * Component tokens (themes may set any of these on [data-theme]):\n * --list-inset default var(--space-2) — row padding-inline (room for fills)\n * --list-row-radius default var(--radius-field) — hover/selected/highlighted fill\n * --list-trailing-size default: the row's text size (same as the title)\n * --highlight-tone-{positive,caution,critical,info}-text, --highlight-accent-text\n * tone text inside a highlighted row (shared with Table)\n *\n * Structure: li.item > .row (a div, or the asChild link/button) > slots. The row carries\n * padding, hover and focus so a linked row is one target edge to edge. Slots are spans,\n * valid inside <a> and <button>.\n */\n.list {\n display: flex;\n flex-direction: column;\n margin: 0;\n padding: 0;\n list-style: none;\n font-family: var(--font-text);\n color: var(--color-ink);\n}\n\n.item {\n --_py: var(--space-3);\n --_fill: transparent;\n --_fill-ink: inherit;\n\n position: relative;\n min-inline-size: 0;\n}\n.list[data-density='compact'] > .item {\n --_py: var(--space-2);\n}\n\n.list[data-divided] > .item + .item {\n border-block-start: var(--border-width) solid var(--color-line);\n}\n/* A filled row doesn't need rules either side — the fill is its edge. */\n.list[data-divided] > .item:is([data-highlighted], [data-selected]),\n.list[data-divided] > .item:is([data-highlighted], [data-selected]) + .item {\n border-block-start-color: transparent;\n}\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--space-3);\n inline-size: 100%;\n min-inline-size: 0;\n margin: 0;\n padding-block: var(--_py);\n padding-inline: var(--list-inset, var(--space-2));\n border: 0;\n border-radius: var(--list-row-radius, var(--radius-field));\n background: var(--_fill);\n color: var(--_fill-ink);\n font: inherit;\n text-align: start;\n text-decoration: none;\n transition: background-color var(--dur-1) var(--ease-out);\n}\n\n.item[data-selected] {\n --_fill: var(--color-accent-soft);\n --_fill-ink: var(--color-ink);\n}\n.item[data-highlighted] {\n --_fill: var(--color-highlight);\n --_fill-ink: var(--color-highlight-ink);\n --_band-positive: var(\n --highlight-tone-positive-text,\n color-mix(in oklab, var(--tone-positive-text) 75%, var(--color-highlight-ink))\n );\n --_band-caution: var(\n --highlight-tone-caution-text,\n color-mix(in oklab, var(--tone-caution-text) 75%, var(--color-highlight-ink))\n );\n --_band-critical: var(\n --highlight-tone-critical-text,\n color-mix(in oklab, var(--tone-critical-text) 75%, var(--color-highlight-ink))\n );\n --_band-info: var(\n --highlight-tone-info-text,\n color-mix(in oklab, var(--tone-info-text) 75%, var(--color-highlight-ink))\n );\n --_band-accent: var(\n --highlight-accent-text,\n color-mix(in oklab, var(--color-accent-text) 75%, var(--color-highlight-ink))\n );\n}\n\n/*\n * A filled row re-points the colour roles for its content, so a muted description, a\n * tone-coloured Numeral or a LiveIndicator stays legible on the fill (gold in Fiesta\n * night). The item publishes fill/ink under private names and the row swaps the roles —\n * redefining a role from itself on one element would be a var() cycle (see Section).\n */\n.item:is([data-highlighted], [data-selected]) > .row {\n --color-ink: var(--_fill-ink);\n --color-ink-muted: color-mix(in oklab, var(--_fill-ink), var(--_fill) 25%);\n --color-ink-subtle: color-mix(in oklab, var(--_fill-ink), var(--_fill) 35%);\n}\n.item[data-highlighted] > .row {\n --tone-positive-text: var(--_band-positive);\n --tone-caution-text: var(--_band-caution);\n --tone-critical-text: var(--_band-critical);\n --tone-info-text: var(--_band-info);\n --color-accent-text: var(--_band-accent);\n}\n\n.item[data-interactive] > .row {\n cursor: pointer;\n}\n@media (hover: hover) {\n .item[data-interactive]:not([data-highlighted], [data-selected]) > .row:hover {\n background: var(--color-surface-sunken);\n }\n .item[data-interactive]:is([data-highlighted], [data-selected]) > .row:hover {\n background: color-mix(in oklch, var(--_fill) 88%, var(--color-ink));\n }\n}\n.row:focus-visible {\n outline: 2px solid var(--color-focus);\n outline-offset: -2px;\n}\n\n/* ── Slots ───────────────────────────────────────────────────────────────── */\n\n.leading {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: flex-end;\n min-inline-size: 2ch;\n color: var(--color-ink-muted);\n font-family: var(--font-numeric);\n font-stretch: var(--numeric-stretch);\n font-weight: var(--label-weight);\n font-variant-numeric: tabular-nums lining-nums;\n font-size: var(--text-md);\n}\n.item[data-highlighted] .leading {\n color: inherit;\n}\n\n.content {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: calc(var(--space-1) / 2);\n min-inline-size: 0;\n font-size: var(--text-md);\n font-weight: var(--label-weight);\n line-height: var(--leading-snug);\n overflow-wrap: anywhere;\n}\n\n.description {\n color: var(--color-ink-muted);\n font-size: var(--text-sm);\n font-weight: 400;\n}\n\n.trailing {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: flex-end;\n gap: var(--space-2);\n margin-inline-start: auto;\n text-align: end;\n /*\n * The row's text face and size, with tabular figures: a bare \"7 tasks\" sits level with the\n * title instead of looming in the numeric face. Put a <Numeral>/<Amount> here for figures\n * that should carry the numeric face (receipt mono in Ledger).\n */\n font-variant-numeric: tabular-nums lining-nums;\n font-size: var(--list-trailing-size, var(--text-md));\n font-weight: var(--label-weight);\n line-height: var(--leading-snug);\n white-space: nowrap;\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { List } from './List.js';
2
+ export type { ListProps, ListItemProps, ListDensity, ListElement } from './List.js';
@@ -0,0 +1,46 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ import { type Space } from '../../../utils/tokens.js';
3
+ export type MarqueeSpeed = 'slow' | 'normal' | 'fast';
4
+ export type MarqueeDirection = 'left' | 'right';
5
+ export type MarqueeSurface = 'plain' | 'inverse' | 'accent';
6
+ export interface MarqueeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
7
+ /**
8
+ * The things that scroll. Pass an array (or several children) — each entry becomes
9
+ * one item with a separator after it, so the loop is seamless.
10
+ */
11
+ items?: ReactNode[];
12
+ /** Alternative to `items`: each direct child is one item. */
13
+ children?: ReactNode;
14
+ /** Accessible name for the region, e.g. "Deploy status". Required: a ticker needs a name. */
15
+ label: string;
16
+ /** Travel speed. Measured in px/s once mounted, so long and short tickers feel the same. */
17
+ speed?: MarqueeSpeed;
18
+ /** Which way the content travels. Default `left`. */
19
+ direction?: MarqueeDirection;
20
+ /** Pause while hovered or while anything inside has focus. Default `true`. */
21
+ pauseOnHover?: boolean;
22
+ /**
23
+ * Show a pause/play button at the end of the band (WCAG 2.2.2: moving content needs a
24
+ * way to stop it that works for keyboard and touch). Default `true`.
25
+ */
26
+ pauseControl?: boolean;
27
+ /** Space between an item and its separator, as a step on the space scale. Default 5. */
28
+ gap?: Space;
29
+ /**
30
+ * Replaces the separator drawn between items. The default is a slanted hairline
31
+ * themed through `--marquee-separator-*`. Pass `null` for none.
32
+ */
33
+ separator?: ReactNode;
34
+ /** Band colour. `plain` sits on the page between hairlines; `inverse` and `accent` fill. */
35
+ surface?: MarqueeSurface;
36
+ }
37
+ /**
38
+ * A horizontal ticker: live status, a features strip, a top-accounts summary.
39
+ *
40
+ * The content is rendered twice for a seamless loop; the copy is `aria-hidden` and
41
+ * `inert`, so screen readers and the tab order see it once. Under
42
+ * `prefers-reduced-motion` the band stops and becomes a scrollable row.
43
+ *
44
+ * <Marquee label="Deploy status" items={[<>Atlas 2.4 deploying</>, …]} surface="inverse" />
45
+ */
46
+ export declare const Marquee: import("react").ForwardRefExoticComponent<MarqueeProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,95 @@
1
+ import { cx as e } from "../../../utils/cx.js";
2
+ import { createIcon as t } from "../../../icons/Icon.js";
3
+ import { mergeStyles as n } from "../../../utils/responsive.js";
4
+ import { space as r } from "../../../utils/tokens.js";
5
+ import i from "./Marquee.module.js";
6
+ import { Children as a, forwardRef as o, isValidElement as s, useCallback as c, useEffect as l, useRef as u, useState as d } from "react";
7
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
8
+ //#region src/components/display/Marquee/Marquee.tsx
9
+ var m = {
10
+ slow: 28,
11
+ normal: 48,
12
+ fast: 84
13
+ }, h = {
14
+ slow: 7,
15
+ normal: 4.5,
16
+ fast: 2.5
17
+ }, g = t("PauseIcon", /* @__PURE__ */ f("path", { d: "M7.5 5.5v9M12.5 5.5v9" })), _ = t("PlayIcon", /* @__PURE__ */ f("path", { d: "M7 5.25v9.5L14.75 10z" })), v = o(function({ items: t, children: o, label: v, speed: y = "normal", direction: b = "left", pauseOnHover: x = !0, pauseControl: S = !0, gap: C = 5, separator: w, surface: T = "plain", className: E, style: D, ...O }, k) {
18
+ let A = (t ?? a.toArray(o)).filter((e) => e != null && e !== !1), [j, M] = d(!1), [N, P] = d(null), F = u(null);
19
+ l(() => {
20
+ let e = F.current;
21
+ if (!e || typeof ResizeObserver > "u") return;
22
+ let t = () => {
23
+ let t = e.getBoundingClientRect().width;
24
+ t > 0 && P(t / m[y]);
25
+ };
26
+ t();
27
+ let n = new ResizeObserver(t);
28
+ return n.observe(e), () => {
29
+ n.disconnect();
30
+ };
31
+ }, [y]);
32
+ let I = c((e) => {
33
+ e?.setAttribute("inert", "");
34
+ }, []), L = N ?? Math.max(A.length, 1) * h[y], R = () => w === void 0 ? /* @__PURE__ */ f("span", { className: i.rule }) : w === null ? null : /* @__PURE__ */ f("span", {
35
+ className: i.custom,
36
+ children: w
37
+ }), z = () => A.map((e, t) => /* @__PURE__ */ p("li", {
38
+ className: i.item,
39
+ children: [/* @__PURE__ */ f("span", {
40
+ className: i.content,
41
+ children: e
42
+ }), /* @__PURE__ */ f("span", {
43
+ className: i.separator,
44
+ "aria-hidden": "true",
45
+ children: R()
46
+ })]
47
+ }, s(e) && e.key !== null ? e.key : t));
48
+ return /* @__PURE__ */ p("div", {
49
+ ref: k,
50
+ role: "region",
51
+ "aria-label": v,
52
+ className: e(i.marquee, E),
53
+ "data-surface": T,
54
+ "data-direction": b,
55
+ "data-speed": y,
56
+ "data-pause-on-hover": x || void 0,
57
+ "data-paused": j || void 0,
58
+ style: n({
59
+ "--marquee-gap": r(C),
60
+ "--marquee-duration": `${L.toFixed(2)}s`
61
+ }, D),
62
+ ...O,
63
+ children: [/* @__PURE__ */ f("div", {
64
+ className: i.viewport,
65
+ children: /* @__PURE__ */ p("div", {
66
+ className: i.track,
67
+ children: [/* @__PURE__ */ f("ul", {
68
+ ref: F,
69
+ role: "list",
70
+ className: i.group,
71
+ children: z()
72
+ }), /* @__PURE__ */ f("ul", {
73
+ ref: I,
74
+ role: "list",
75
+ className: e(i.group, i.copy),
76
+ "aria-hidden": "true",
77
+ children: z()
78
+ })]
79
+ })
80
+ }), S ? /* @__PURE__ */ f("button", {
81
+ type: "button",
82
+ className: i.control,
83
+ "aria-pressed": j,
84
+ "aria-label": `Pause ${v}`,
85
+ onClick: () => {
86
+ M((e) => !e);
87
+ },
88
+ children: f(j ? _ : g, {})
89
+ }) : null]
90
+ });
91
+ });
92
+ //#endregion
93
+ export { v as Marquee };
94
+
95
+ //# sourceMappingURL=Marquee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Marquee.js","names":["styles","Marquee_module_default","SPEED","FALLBACK_PER_ITEM","PauseIcon","createIcon","PlayIcon","Marquee","forwardRef","rest","list","items","Children","children","item","paused","setPaused","useState","duration","setDuration","groupRef","useRef","group","measure","width","speed","observer","inertRef","useCallback","seconds","renderSeparator","separator","renderGroup","isValidElement","i","label","cx","className","surface","direction","pauseOnHover","mergeStyles","space","gap","style","pauseControl","p","jsx"],"sources":["../../../../src/components/display/Marquee/Marquee.tsx"],"sourcesContent":["import {\n Children,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { createIcon } from '#icons'\nimport { cx } from '#utils/cx'\nimport { mergeStyles } from '#utils/responsive'\nimport { space, type Space } from '#utils/tokens'\nimport styles from './Marquee.module.css'\n\nexport type MarqueeSpeed = 'slow' | 'normal' | 'fast'\nexport type MarqueeDirection = 'left' | 'right'\nexport type MarqueeSurface = 'plain' | 'inverse' | 'accent'\n\nexport interface MarqueeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /**\n * The things that scroll. Pass an array (or several children) — each entry becomes\n * one item with a separator after it, so the loop is seamless.\n */\n items?: ReactNode[]\n /** Alternative to `items`: each direct child is one item. */\n children?: ReactNode\n /** Accessible name for the region, e.g. \"Deploy status\". Required: a ticker needs a name. */\n label: string\n /** Travel speed. Measured in px/s once mounted, so long and short tickers feel the same. */\n speed?: MarqueeSpeed\n /** Which way the content travels. Default `left`. */\n direction?: MarqueeDirection\n /** Pause while hovered or while anything inside has focus. Default `true`. */\n pauseOnHover?: boolean\n /**\n * Show a pause/play button at the end of the band (WCAG 2.2.2: moving content needs a\n * way to stop it that works for keyboard and touch). Default `true`.\n */\n pauseControl?: boolean\n /** Space between an item and its separator, as a step on the space scale. Default 5. */\n gap?: Space\n /**\n * Replaces the separator drawn between items. The default is a slanted hairline\n * themed through `--marquee-separator-*`. Pass `null` for none.\n */\n separator?: ReactNode\n /** Band colour. `plain` sits on the page between hairlines; `inverse` and `accent` fill. */\n surface?: MarqueeSurface\n}\n\n/* Pixels per second. Tuned so text stays readable at a glance. */\nconst SPEED: Record<MarqueeSpeed, number> = { slow: 28, normal: 48, fast: 84 }\n/* Seconds per item, used before the track has been measured (and on the server). */\nconst FALLBACK_PER_ITEM: Record<MarqueeSpeed, number> = { slow: 7, normal: 4.5, fast: 2.5 }\n\nconst PauseIcon = createIcon('PauseIcon', <path d=\"M7.5 5.5v9M12.5 5.5v9\" />)\nconst PlayIcon = createIcon('PlayIcon', <path d=\"M7 5.25v9.5L14.75 10z\" />)\n\n/**\n * A horizontal ticker: live status, a features strip, a top-accounts summary.\n *\n * The content is rendered twice for a seamless loop; the copy is `aria-hidden` and\n * `inert`, so screen readers and the tab order see it once. Under\n * `prefers-reduced-motion` the band stops and becomes a scrollable row.\n *\n * <Marquee label=\"Deploy status\" items={[<>Atlas 2.4 deploying</>, …]} surface=\"inverse\" />\n */\nexport const Marquee = forwardRef<HTMLDivElement, MarqueeProps>(function Marquee(\n {\n items,\n children,\n label,\n speed = 'normal',\n direction = 'left',\n pauseOnHover = true,\n pauseControl = true,\n gap = 5,\n separator,\n surface = 'plain',\n className,\n style,\n ...rest\n },\n ref,\n) {\n const list = (items ?? Children.toArray(children)).filter(\n (item) => item !== null && item !== undefined && item !== false,\n )\n const [paused, setPaused] = useState(false)\n const [duration, setDuration] = useState<number | null>(null)\n const groupRef = useRef<HTMLUListElement>(null)\n\n // Measure one copy of the content and derive the loop duration from a constant speed.\n useEffect(() => {\n const group = groupRef.current\n if (!group || typeof ResizeObserver === 'undefined') return\n const measure = () => {\n const width = group.getBoundingClientRect().width\n if (width > 0) setDuration(width / SPEED[speed])\n }\n measure()\n const observer = new ResizeObserver(measure)\n observer.observe(group)\n return () => {\n observer.disconnect()\n }\n }, [speed])\n\n // `inert` is only a known prop in React 19, so set the attribute directly (works in 18 too).\n const inertRef = useCallback((node: HTMLUListElement | null) => {\n node?.setAttribute('inert', '')\n }, [])\n\n const seconds = duration ?? Math.max(list.length, 1) * FALLBACK_PER_ITEM[speed]\n\n const renderSeparator = () =>\n separator === undefined ? (\n <span className={styles.rule} />\n ) : separator === null ? null : (\n <span className={styles.custom}>{separator}</span>\n )\n\n const renderGroup = () =>\n list.map((item, i) => (\n <li key={isValidElement(item) && item.key !== null ? item.key : i} className={styles.item}>\n <span className={styles.content}>{item}</span>\n <span className={styles.separator} aria-hidden=\"true\">\n {renderSeparator()}\n </span>\n </li>\n ))\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={label}\n className={cx(styles.marquee, className)}\n data-surface={surface}\n data-direction={direction}\n data-speed={speed}\n data-pause-on-hover={pauseOnHover || undefined}\n data-paused={paused || undefined}\n style={mergeStyles(\n {\n '--marquee-gap': space(gap),\n '--marquee-duration': `${seconds.toFixed(2)}s`,\n } as CSSProperties,\n style,\n )}\n {...rest}\n >\n <div className={styles.viewport}>\n <div className={styles.track}>\n <ul ref={groupRef} role=\"list\" className={styles.group}>\n {renderGroup()}\n </ul>\n <ul\n ref={inertRef}\n role=\"list\"\n className={cx(styles.group, styles.copy)}\n aria-hidden=\"true\"\n >\n {renderGroup()}\n </ul>\n </div>\n </div>\n {pauseControl ? (\n <button\n type=\"button\"\n className={styles.control}\n aria-pressed={paused}\n aria-label={`Pause ${label}`}\n onClick={() => {\n setPaused((p) => !p)\n }}\n >\n {paused ? <PlayIcon /> : <PauseIcon />}\n </button>\n ) : null}\n </div>\n )\n})\n"],"mappings":";;;;;;;;AAuDA,IAAME,IAAsC;CAAE,MAAM;CAAI,QAAQ;CAAI,MAAM;AAAG,GAEvEC,IAAkD;CAAE,MAAM;CAAG,QAAQ;CAAK,MAAM;AAAI,GAEpFC,IAAYC,EAAW,aAAa,kBAAC,QAAD,EAAM,GAAE,wBAAyB,CAAA,CAAC,GACtEC,IAAWD,EAAW,YAAY,kBAAC,QAAD,EAAM,GAAE,wBAAyB,CAAA,CAAC,GAW7DE,IAAUC,EAAyC,SAC9D,EACE,UACA,aACA,UACA,WAAQ,UACR,eAAY,QACZ,kBAAe,IACf,kBAAe,IACf,SAAM,GACN,cACA,aAAU,SACV,cACA,UACA,GAAGC,KAEL,GACA;CACA,IAAMC,KAAQC,KAASC,EAAS,QAAQC,CAAQ,EAAA,CAAG,QAChD,MAASC,KAAS,QAA8BA,MAAS,EAC5D,GACM,CAACC,GAAQC,KAAaC,EAAS,EAAK,GACpC,CAACC,GAAUC,KAAeF,EAAwB,IAAI,GACtDG,IAAWC,EAAyB,IAAI;CAG9C,QAAgB;EACd,IAAMC,IAAQF,EAAS;EACvB,IAAI,CAACE,KAAS,OAAO,iBAAmB,KAAa;EACrD,IAAMC,UAAgB;GACpB,IAAMC,IAAQF,EAAM,sBAAsB,CAAC,CAAC;GAC5C,AAAIE,IAAQ,KAAGL,EAAYK,IAAQtB,EAAMuB,EAAM;EACjD;EACA,EAAQ;EACR,IAAMC,IAAW,IAAI,eAAeH,CAAO;EAE3C,OADAG,EAAS,QAAQJ,CAAK,SACT;GACX,EAAS,WAAW;EACtB;CACF,GAAG,CAACG,CAAK,CAAC;CAGV,IAAME,IAAWC,GAAa,MAAkC;EAC9D,GAAM,aAAa,SAAS,EAAE;CAChC,GAAG,CAAC,CAAC,GAECC,IAAUX,KAAY,KAAK,IAAIR,EAAK,QAAQ,CAAC,IAAIP,EAAkBsB,IAEnEK,UACJC,MAAc,KAAA,IACZ,kBAAC,QAAD,EAAM,WAAW/B,EAAO,KAAO,CAAA,IAC7B+B,MAAc,OAAO,OACvB,kBAAC,QAAD;EAAM,WAAW/B,EAAO;EAAS,UAAA+B;CAAgB,CAAA,GAG/CC,UACJtB,EAAK,KAAK,GAAM,MACd,kBAAC,MAAD;EAAmE,WAAWV,EAAO;EAArF,UAAA,CACE,kBAAC,QAAD;GAAM,WAAWA,EAAO;GAAU,UAAAc;EAAW,CAAA,GAC7C,kBAAC,QAAD;GAAM,WAAWd,EAAO;GAAW,eAAY;GAC5C,UAAA8B,EAAgB;EACb,CAAA,CACJ;CALK,GAAAG,EAAenB,CAAI,KAAKA,EAAK,QAAQ,OAAOA,EAAK,MAAMoB,CAK5D,CACL;CAEH,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAYC;EACZ,WAAWC,EAAGpC,EAAO,SAASqC,CAAS;EACvC,gBAAcC;EACd,kBAAgBC;EAChB,cAAYd;EACZ,uBAAqBe,KAAgB,KAAA;EACrC,eAAazB,KAAU,KAAA;EACvB,OAAO0B,EACL;GACE,iBAAiBC,EAAMC,CAAG;GAC1B,sBAAsB,GAAGd,EAAQ,QAAQ,CAAC,EAAE;EAC9C,GACAe,CACF;EACA,GAAInC;EAjBN,UAAA,CAmBE,kBAAC,OAAD;GAAK,WAAWT,EAAO;GACrB,UAAA,kBAAC,OAAD;IAAK,WAAWA,EAAO;IAAvB,UAAA,CACE,kBAAC,MAAD;KAAI,KAAKoB;KAAU,MAAK;KAAO,WAAWpB,EAAO;KAC9C,UAAAgC,EAAY;IACX,CAAA,GACJ,kBAAC,MAAD;KACE,KAAKL;KACL,MAAK;KACL,WAAWS,EAAGpC,EAAO,OAAOA,EAAO,IAAI;KACvC,eAAY;KAEX,UAAAgC,EAAY;IACX,CAAA,CACD;;EACF,CAAA,GACJa,IACC,kBAAC,UAAD;GACE,MAAK;GACL,WAAW7C,EAAO;GAClB,gBAAce;GACd,cAAY,SAASoB;GACrB,eAAe;IACb,GAAW,MAAM,CAACW,CAAC;GACrB;GAEC,UAASC,EAAThC,IAAUT,IAAeF,GAAhB,CAAW,CAAgB;EAC/B,CAAA,IACN,IACD;;AAET,CAAC"}
@@ -0,0 +1,19 @@
1
+ //#region src/components/display/Marquee/Marquee.module.css
2
+ var e = "kiln-Marquee__marquee", t = "kiln-Marquee__viewport", n = "kiln-Marquee__track", r = "kiln-Marquee__scroll", i = "kiln-Marquee__group", a = "kiln-Marquee__item", o = "kiln-Marquee__content", s = "kiln-Marquee__separator", c = "kiln-Marquee__rule", l = "kiln-Marquee__custom", u = "kiln-Marquee__control", d = "kiln-Marquee__copy", f = {
3
+ marquee: e,
4
+ viewport: t,
5
+ track: n,
6
+ scroll: r,
7
+ group: i,
8
+ item: a,
9
+ content: o,
10
+ separator: s,
11
+ rule: c,
12
+ custom: l,
13
+ control: u,
14
+ copy: d
15
+ };
16
+ //#endregion
17
+ export { o as content, u as control, d as copy, l as custom, f as default, i as group, a as item, e as marquee, c as rule, r as scroll, s as separator, n as track, t as viewport };
18
+
19
+ //# sourceMappingURL=Marquee.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Marquee.module.js","names":["marquee","viewport","track","scroll","group","item","content","separator","rule","custom","control","copy","Marquee_module_default"],"sources":["../../../../src/components/display/Marquee/Marquee.module.css"],"sourcesContent":["/*\n * Component tokens (themes may set any of these on [data-theme]):\n * --marquee-font default var(--font-text)\n * --marquee-size default var(--text-sm)\n * --marquee-padding block padding of the band, default var(--space-3)\n * --marquee-edge rules above/below the plain band, default var(--color-line)\n * --marquee-separator-color default currentColor\n * --marquee-separator-opacity default 0.5\n * --marquee-separator-width default var(--border-width)\n * --marquee-separator-height default 1.1em\n * --marquee-separator-rotate default 18deg (a slanted rule; 0deg = upright bar)\n * --marquee-separator-radius default 0 (set width = height + a radius for a dot)\n *\n * Written by the component: --marquee-gap, --marquee-duration.\n */\n.marquee {\n --_bg: transparent;\n --_ink: var(--color-ink-muted);\n --_edge: var(--marquee-edge, var(--color-line));\n\n display: flex;\n align-items: stretch;\n min-inline-size: 0;\n background: var(--_bg);\n color: var(--_ink);\n border-block: var(--border-width) solid var(--_edge);\n font-family: var(--marquee-font, var(--font-text));\n font-size: var(--marquee-size, var(--text-sm));\n font-weight: var(--label-weight);\n line-height: var(--leading-snug);\n font-variant-numeric: tabular-nums lining-nums;\n}\n\n.marquee:not([data-surface='plain']) {\n /* Tone text colours are tuned for the page, not for a filled band: let nested\n indicators follow the band's ink. */\n --live-label-color: currentColor;\n}\n\n.marquee[data-surface='inverse'] {\n --_bg: var(--color-surface-inverse);\n --_ink: var(--color-ink-inverse);\n --_edge: var(--color-surface-inverse);\n}\n.marquee[data-surface='accent'] {\n --_bg: var(--color-accent);\n --_ink: var(--color-accent-ink);\n --_edge: var(--color-line-strong);\n}\n\n.viewport {\n flex: 1;\n min-inline-size: 0;\n overflow: hidden;\n}\n\n.track {\n display: flex;\n inline-size: max-content;\n padding-block: var(--marquee-padding, var(--space-3));\n animation: scroll var(--marquee-duration) linear infinite;\n}\n\n.marquee[data-direction='right'] .track {\n animation-direction: reverse;\n}\n\n.marquee[data-paused] .track,\n.marquee[data-pause-on-hover]:focus-within .track {\n animation-play-state: paused;\n}\n@media (hover: hover) {\n .marquee[data-pause-on-hover]:hover .track {\n animation-play-state: paused;\n }\n}\n\n.group {\n display: flex;\n flex: none;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.item {\n display: flex;\n align-items: center;\n gap: var(--marquee-gap, var(--space-5));\n padding-inline-end: var(--marquee-gap, var(--space-5));\n white-space: nowrap;\n}\n\n.content {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n}\n\n.separator {\n display: inline-flex;\n align-items: center;\n color: var(--marquee-separator-color, currentColor);\n}\n\n.rule {\n display: block;\n inline-size: var(--marquee-separator-width, var(--border-width));\n block-size: var(--marquee-separator-height, 1.1em);\n border-radius: var(--marquee-separator-radius, 0);\n background: currentColor;\n opacity: var(--marquee-separator-opacity, 0.5);\n rotate: var(--marquee-separator-rotate, 18deg);\n}\n\n.custom {\n display: inline-flex;\n opacity: var(--marquee-separator-opacity, 0.5);\n}\n\n/* Pause / play — quiet, but always reachable. */\n.control {\n flex: none;\n display: grid;\n place-items: center;\n inline-size: var(--control-sm);\n margin: 0;\n padding: 0;\n border: 0;\n border-inline-start: var(--border-width) solid var(--_edge);\n background: var(--_bg);\n color: inherit;\n font-size: var(--text-md);\n opacity: 0.8;\n cursor: pointer;\n transition: opacity var(--dur-1) var(--ease-out);\n}\n.marquee[data-surface='inverse'] .control {\n border-inline-start-color: color-mix(in oklch, var(--_ink) 25%, transparent);\n}\n@media (hover: hover) {\n .control:hover {\n opacity: 1;\n }\n}\n.control:focus-visible {\n outline: 2px solid var(--color-focus);\n outline-offset: -4px;\n opacity: 1;\n}\n.marquee:not([data-surface='plain']) .control:focus-visible {\n outline-color: currentColor;\n}\n\n@keyframes scroll {\n from {\n translate: 0 0;\n }\n to {\n translate: -50% 0;\n }\n}\n\n/* Reduced motion: no travel — a static row the reader scrolls themselves. */\n@media (prefers-reduced-motion: reduce) {\n .viewport {\n overflow-x: auto;\n scrollbar-width: thin;\n }\n .track {\n animation: none;\n padding-inline: var(--space-4);\n }\n .copy,\n .control {\n display: none;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { Marquee } from './Marquee.js';
2
+ export type { MarqueeProps, MarqueeSpeed, MarqueeDirection, MarqueeSurface } from './Marquee.js';
@@ -0,0 +1,30 @@
1
+ import { type HTMLAttributes, type ImgHTMLAttributes, type ReactNode } from 'react';
2
+ export type MediaRatio = '1/1' | '4/3' | '3/2' | '16/9' | '21/9' | '3/4' | '2/3' | 'auto';
3
+ export type MediaFit = 'cover' | 'contain';
4
+ export type MediaRadius = 'none' | 'media' | 'surface';
5
+ export interface MediaProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {
6
+ src: string;
7
+ /** Required. Describe the image; pass `""` only when it's purely decorative. */
8
+ alt: string;
9
+ /** Frame ratio. The image is fitted inside. Default `auto` (the image's own ratio). */
10
+ ratio?: MediaRatio;
11
+ /** Default `cover`. Use `contain` for logos, diagrams and screenshots that must not crop. */
12
+ fit?: MediaFit;
13
+ /** Corner role. Default `media`. */
14
+ radius?: MediaRadius;
15
+ /** Renders a `<figure>` with this as its `<figcaption>`. */
16
+ caption?: ReactNode;
17
+ /** Shown inside the frame if the image fails to load. Default: an empty sunken frame. */
18
+ fallback?: ReactNode;
19
+ /** Default `lazy`. Use `eager` for the image above the fold. */
20
+ loading?: 'lazy' | 'eager';
21
+ /** Extra attributes for the `<img>` (srcSet, sizes, width/height, fetchPriority). */
22
+ imgProps?: Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt' | 'loading'>;
23
+ }
24
+ /**
25
+ * A framed image: fixed ratio, fitted, lazy by default, with a caption and a graceful
26
+ * failure state. Screenshots, company logos, scanned documents.
27
+ *
28
+ * <Media src="/images/dashboard.png" alt="Revenue dashboard, September" ratio="16/9" caption="Dashboard, 2026" />
29
+ */
30
+ export declare const Media: import("react").ForwardRefExoticComponent<MediaProps & import("react").RefAttributes<HTMLElement>>;
@@ -0,0 +1,47 @@
1
+ import { cx as e } from "../../../utils/cx.js";
2
+ import t from "./Media.module.js";
3
+ import { forwardRef as n, useEffect as r, useRef as i, useState as a } from "react";
4
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ //#region src/components/display/Media/Media.tsx
6
+ var c = n(function({ src: n, alt: c, ratio: l = "auto", fit: u = "cover", radius: d = "media", caption: f, fallback: p, loading: m = "lazy", imgProps: h, className: g, ..._ }, v) {
7
+ let [y, b] = a(!1), x = i(null);
8
+ return r(() => {
9
+ let e = x.current;
10
+ b(!!(e?.complete && e.naturalWidth === 0 && typeof e.currentSrc == "string" && e.currentSrc !== ""));
11
+ }, [n]), /* @__PURE__ */ s(f === void 0 ? "div" : "figure", {
12
+ ref: v,
13
+ className: e(t.media, g),
14
+ "data-ratio": l,
15
+ "data-fit": u,
16
+ "data-radius": d,
17
+ "data-failed": y || void 0,
18
+ ..._,
19
+ children: [/* @__PURE__ */ o("div", {
20
+ className: t.frame,
21
+ children: y ? /* @__PURE__ */ o("div", {
22
+ className: t.fallback,
23
+ role: c ? "img" : void 0,
24
+ "aria-label": c || void 0,
25
+ children: p
26
+ }) : /* @__PURE__ */ o("img", {
27
+ ref: x,
28
+ className: t.image,
29
+ src: n,
30
+ alt: c,
31
+ loading: m,
32
+ decoding: "async",
33
+ onError: () => {
34
+ b(!0);
35
+ },
36
+ ...h
37
+ })
38
+ }), f === void 0 ? null : /* @__PURE__ */ o("figcaption", {
39
+ className: t.caption,
40
+ children: f
41
+ })]
42
+ });
43
+ });
44
+ //#endregion
45
+ export { c as Media };
46
+
47
+ //# sourceMappingURL=Media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Media.js","names":["styles","Media_module_default","Media","forwardRef","rest","failed","setFailed","useState","imgRef","useRef","useEffect","img","src","caption","cx","className","ratio","fit","radius","alt","fallback","imgProps"],"sources":["../../../../src/components/display/Media/Media.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ImgHTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { cx } from '#utils/cx'\nimport styles from './Media.module.css'\n\nexport type MediaRatio = '1/1' | '4/3' | '3/2' | '16/9' | '21/9' | '3/4' | '2/3' | 'auto'\nexport type MediaFit = 'cover' | 'contain'\nexport type MediaRadius = 'none' | 'media' | 'surface'\n\nexport interface MediaProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n src: string\n /** Required. Describe the image; pass `\"\"` only when it's purely decorative. */\n alt: string\n /** Frame ratio. The image is fitted inside. Default `auto` (the image's own ratio). */\n ratio?: MediaRatio\n /** Default `cover`. Use `contain` for logos, diagrams and screenshots that must not crop. */\n fit?: MediaFit\n /** Corner role. Default `media`. */\n radius?: MediaRadius\n /** Renders a `<figure>` with this as its `<figcaption>`. */\n caption?: ReactNode\n /** Shown inside the frame if the image fails to load. Default: an empty sunken frame. */\n fallback?: ReactNode\n /** Default `lazy`. Use `eager` for the image above the fold. */\n loading?: 'lazy' | 'eager'\n /** Extra attributes for the `<img>` (srcSet, sizes, width/height, fetchPriority). */\n imgProps?: Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt' | 'loading'>\n}\n\n/**\n * A framed image: fixed ratio, fitted, lazy by default, with a caption and a graceful\n * failure state. Screenshots, company logos, scanned documents.\n *\n * <Media src=\"/images/dashboard.png\" alt=\"Revenue dashboard, September\" ratio=\"16/9\" caption=\"Dashboard, 2026\" />\n */\nexport const Media = forwardRef<HTMLElement, MediaProps>(function Media(\n {\n src,\n alt,\n ratio = 'auto',\n fit = 'cover',\n radius = 'media',\n caption,\n fallback,\n loading = 'lazy',\n imgProps,\n className,\n ...rest\n },\n ref,\n) {\n const [failed, setFailed] = useState(false)\n const imgRef = useRef<HTMLImageElement>(null)\n\n // Reset when the source changes; also catch an error that fired before hydration.\n useEffect(() => {\n const img = imgRef.current\n setFailed(\n Boolean(\n img?.complete &&\n img.naturalWidth === 0 &&\n typeof img.currentSrc === 'string' &&\n img.currentSrc !== '',\n ),\n )\n }, [src])\n\n const Root = caption !== undefined ? 'figure' : 'div'\n return (\n <Root\n // @ts-expect-error — polymorphic ref across figure/div is safe here\n ref={ref}\n className={cx(styles.media, className)}\n data-ratio={ratio}\n data-fit={fit}\n data-radius={radius}\n data-failed={failed || undefined}\n {...rest}\n >\n <div className={styles.frame}>\n {failed ? (\n <div\n className={styles.fallback}\n role={alt ? 'img' : undefined}\n aria-label={alt || undefined}\n >\n {fallback}\n </div>\n ) : (\n <img\n ref={imgRef}\n className={styles.image}\n src={src}\n alt={alt}\n loading={loading}\n decoding=\"async\"\n onError={() => {\n setFailed(true)\n }}\n {...imgProps}\n />\n )}\n </div>\n {caption !== undefined ? <figcaption className={styles.caption}>{caption}</figcaption> : null}\n </Root>\n )\n})\n"],"mappings":";;;;;AA0CA,IAAaE,IAAQC,EAAoC,SACvD,EACE,QACA,QACA,WAAQ,QACR,SAAM,SACN,YAAS,SACT,YACA,aACA,aAAU,QACV,aACA,cACA,GAAGC,KAEL,GACA;CACA,IAAM,CAACC,GAAQC,KAAaC,EAAS,EAAK,GACpCC,IAASC,EAAyB,IAAI;CAgB5C,OAbAC,QAAgB;EACd,IAAMC,IAAMH,EAAO;EACnB,EACE,GACEG,GAAK,YACLA,EAAI,iBAAiB,KACrB,OAAOA,EAAI,cAAe,YAC1BA,EAAI,eAAe,GAEvB;CACF,GAAG,CAACC,CAAG,CAAC,GAIN,kBAFWC,MAAY,KAAA,IAAuB,QAAX,UAEnC;EAEO;EACL,WAAWC,EAAGd,EAAO,OAAOe,CAAS;EACrC,cAAYC;EACZ,YAAUC;EACV,eAAaC;EACb,eAAab,KAAU,KAAA;EACvB,GAAID;EARN,UAAA,CAUE,kBAAC,OAAD;GAAK,WAAWJ,EAAO;GACpB,UAAAK,IACC,kBAAC,OAAD;IACE,WAAWL,EAAO;IAClB,MAAMmB,IAAM,QAAQ,KAAA;IACpB,cAAYA,KAAO,KAAA;IAElB,UAAAC;GACE,CAAA,IAEL,kBAAC,OAAD;IACE,KAAKZ;IACL,WAAWR,EAAO;IACb;IACA;IACI;IACT,UAAS;IACT,eAAe;KACb,EAAU,EAAI;IAChB;IACA,GAAIqB;GACL,CAAA;EAEA,CAAA,GACJR,MAAY,KAAA,IAA4E,OAAhE,kBAAC,cAAD;GAAY,WAAWb,EAAO;GAAU,UAAAa;EAAoB,CAAA,CACjF;;AAEV,CAAC"}
@@ -0,0 +1,12 @@
1
+ //#region src/components/display/Media/Media.module.css
2
+ var e = "kiln-Media__media", t = "kiln-Media__frame", n = "kiln-Media__image", r = "kiln-Media__fallback", i = "kiln-Media__caption", a = {
3
+ media: e,
4
+ frame: t,
5
+ image: n,
6
+ fallback: r,
7
+ caption: i
8
+ };
9
+ //#endregion
10
+ export { i as caption, a as default, r as fallback, t as frame, n as image, e as media };
11
+
12
+ //# sourceMappingURL=Media.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Media.module.js","names":["media","frame","image","fallback","caption","Media_module_default"],"sources":["../../../../src/components/display/Media/Media.module.css"],"sourcesContent":["/*\n * Component tokens (themes may set any of these on [data-theme]):\n * --media-bg default var(--color-surface-sunken) — the frame while loading / on failure\n */\n.media {\n --_radius: var(--radius-media);\n\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n min-inline-size: 0;\n margin: 0;\n}\n.media[data-radius='none'] {\n --_radius: 0;\n}\n.media[data-radius='surface'] {\n --_radius: var(--radius-surface);\n}\n\n.frame {\n position: relative;\n overflow: hidden;\n border-radius: var(--_radius);\n background: var(--media-bg, var(--color-surface-sunken));\n}\n/* A hairline inside the frame so light images don't dissolve into light canvases. */\n.frame::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--color-ink) 8%, transparent);\n pointer-events: none;\n}\n\n.media[data-ratio='1/1'] .frame {\n aspect-ratio: 1;\n}\n.media[data-ratio='4/3'] .frame {\n aspect-ratio: 4 / 3;\n}\n.media[data-ratio='3/2'] .frame {\n aspect-ratio: 3 / 2;\n}\n.media[data-ratio='16/9'] .frame {\n aspect-ratio: 16 / 9;\n}\n.media[data-ratio='21/9'] .frame {\n aspect-ratio: 21 / 9;\n}\n.media[data-ratio='3/4'] .frame {\n aspect-ratio: 3 / 4;\n}\n.media[data-ratio='2/3'] .frame {\n aspect-ratio: 2 / 3;\n}\n\n.image {\n display: block;\n inline-size: 100%;\n block-size: auto;\n}\n.media:not([data-ratio='auto']) .image {\n position: absolute;\n inset: 0;\n block-size: 100%;\n object-fit: cover;\n}\n.media[data-fit='contain'] .image {\n object-fit: contain;\n}\n\n.fallback {\n display: grid;\n place-items: center;\n inline-size: 100%;\n block-size: 100%;\n min-block-size: var(--space-9);\n padding: var(--space-4);\n color: var(--color-ink-subtle);\n font-family: var(--font-text);\n font-size: var(--text-sm);\n text-align: center;\n}\n.media:not([data-ratio='auto']) .fallback {\n position: absolute;\n inset: 0;\n min-block-size: 0;\n}\n\n.caption {\n color: var(--color-ink-muted);\n font-family: var(--font-text);\n font-size: var(--text-sm);\n line-height: var(--leading-snug);\n text-wrap: pretty;\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { Media } from './Media.js';
2
+ export type { MediaProps, MediaRatio, MediaFit, MediaRadius } from './Media.js';
@@ -0,0 +1,32 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ import type { Size, Tone } from '../../../utils/tokens.js';
3
+ import { type MeterThresholds } from './meterTone.js';
4
+ export type MeterTone = Extract<Tone, 'positive' | 'caution' | 'critical' | 'accent' | 'neutral' | 'info'>;
5
+ export interface MeterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'>, MeterThresholds {
6
+ /** The measured amount. May exceed `max` (a quota that has run over): the bar fills and `data-over` is set. */
7
+ value: number;
8
+ /** Visible label; also the accessible name. */
9
+ label?: ReactNode;
10
+ /** Replaces the default percentage, visibly and as `aria-valuetext`: "578.4 GB of 680 GB". */
11
+ valueLabel?: string;
12
+ /** Show the value text in the label row. Default `true`. */
13
+ showValue?: boolean;
14
+ /**
15
+ * Force a tone. By default it's derived from `low`/`high`/`optimum` exactly like HTML
16
+ * `<meter>` (optimum → positive, one region off → caution, two off → critical), or
17
+ * `accent` when no thresholds are given.
18
+ */
19
+ tone?: MeterTone;
20
+ /** Divide the track into this many segments with ticks. */
21
+ segments?: number;
22
+ size?: Size;
23
+ }
24
+ /**
25
+ * A measurement against a known range: usage vs quota, storage used, revenue vs target.
26
+ * Tone follows the thresholds, so 40% of the storage quota is calm, 85% is a warning
27
+ * and 110% is critical without the app deciding colours.
28
+ *
29
+ * <Meter label="Storage" value={578.4} max={680} low={510} high={680} optimum={0}
30
+ * valueLabel="578.4 GB of 680 GB" />
31
+ */
32
+ export declare const Meter: import("react").ForwardRefExoticComponent<MeterProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,56 @@
1
+ import { cx as e } from "../../../utils/cx.js";
2
+ import { mergeStyles as t } from "../../../utils/responsive.js";
3
+ import { meterTone as n } from "./meterTone.js";
4
+ import r from "./Meter.module.js";
5
+ import { forwardRef as i, useId as a } from "react";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
+ //#region src/components/display/Meter/Meter.tsx
8
+ var c = i(function({ value: i, min: c = 0, max: l = 1, low: u, high: d, optimum: f, label: p, valueLabel: m, showValue: h = !0, tone: g, segments: _, size: v = "md", className: y, style: b, "aria-label": x, ...S }, C) {
9
+ let w = a(), T = l - c || 1, E = Math.min(Math.max(i, c), l), D = (E - c) / T, O = g ?? (u !== void 0 || d !== void 0 || f !== void 0 ? n(i, {
10
+ min: c,
11
+ max: l,
12
+ low: u,
13
+ high: d,
14
+ optimum: f
15
+ }) : "accent"), k = m ?? `${String(Math.round((i - c) / T * 100))}%`, A = _ && _ > 1 ? Array.from({ length: _ - 1 }, (e, t) => (t + 1) / _) : [];
16
+ return /* @__PURE__ */ s("div", {
17
+ ref: C,
18
+ role: "meter",
19
+ "aria-valuemin": c,
20
+ "aria-valuemax": l,
21
+ "aria-valuenow": E,
22
+ "aria-valuetext": k,
23
+ "aria-label": x,
24
+ "aria-labelledby": p && !x ? w : void 0,
25
+ className: e(r.meter, y),
26
+ "data-tone": O,
27
+ "data-size": v,
28
+ "data-over": i > l || void 0,
29
+ "data-segmented": A.length ? "" : void 0,
30
+ style: t({ "--meter-fraction": D }, b),
31
+ ...S,
32
+ children: [p || h ? /* @__PURE__ */ s("div", {
33
+ className: r.header,
34
+ children: [p ? /* @__PURE__ */ o("span", {
35
+ id: w,
36
+ className: r.label,
37
+ children: p
38
+ }) : null, h ? /* @__PURE__ */ o("span", {
39
+ className: r.value,
40
+ "aria-hidden": "true",
41
+ children: k
42
+ }) : null]
43
+ }) : null, /* @__PURE__ */ s("div", {
44
+ className: r.track,
45
+ "aria-hidden": "true",
46
+ children: [/* @__PURE__ */ o("div", { className: r.fill }), A.map((e) => /* @__PURE__ */ o("span", {
47
+ className: r.tick,
48
+ style: { "--meter-tick": e }
49
+ }, e))]
50
+ })]
51
+ });
52
+ });
53
+ //#endregion
54
+ export { c as Meter };
55
+
56
+ //# sourceMappingURL=Meter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Meter.js","names":["styles","Meter_module_default","Meter","forwardRef","ariaLabel","rest","labelId","useId","range","max","min","clamped","value","fraction","resolvedTone","tone","low","high","optimum","meterTone","text","valueLabel","ticks","segments","i","label","cx","className","size","mergeStyles","style","showValue","at"],"sources":["../../../../src/components/display/Meter/Meter.tsx"],"sourcesContent":["import { forwardRef, useId, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { cx } from '#utils/cx'\nimport { mergeStyles } from '#utils/responsive'\nimport type { Size, Tone } from '#utils/tokens'\nimport { meterTone, type MeterThresholds } from './meterTone'\nimport styles from './Meter.module.css'\n\nexport type MeterTone = Extract<\n Tone,\n 'positive' | 'caution' | 'critical' | 'accent' | 'neutral' | 'info'\n>\n\nexport interface MeterProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'children'>, MeterThresholds {\n /** The measured amount. May exceed `max` (a quota that has run over): the bar fills and `data-over` is set. */\n value: number\n /** Visible label; also the accessible name. */\n label?: ReactNode\n /** Replaces the default percentage, visibly and as `aria-valuetext`: \"578.4 GB of 680 GB\". */\n valueLabel?: string\n /** Show the value text in the label row. Default `true`. */\n showValue?: boolean\n /**\n * Force a tone. By default it's derived from `low`/`high`/`optimum` exactly like HTML\n * `<meter>` (optimum → positive, one region off → caution, two off → critical), or\n * `accent` when no thresholds are given.\n */\n tone?: MeterTone\n /** Divide the track into this many segments with ticks. */\n segments?: number\n size?: Size\n}\n\n/**\n * A measurement against a known range: usage vs quota, storage used, revenue vs target.\n * Tone follows the thresholds, so 40% of the storage quota is calm, 85% is a warning\n * and 110% is critical without the app deciding colours.\n *\n * <Meter label=\"Storage\" value={578.4} max={680} low={510} high={680} optimum={0}\n * valueLabel=\"578.4 GB of 680 GB\" />\n */\nexport const Meter = forwardRef<HTMLDivElement, MeterProps>(function Meter(\n {\n value,\n min = 0,\n max = 1,\n low,\n high,\n optimum,\n label,\n valueLabel,\n showValue = true,\n tone,\n segments,\n size = 'md',\n className,\n style,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref,\n) {\n const labelId = useId()\n const range = max - min || 1\n const clamped = Math.min(Math.max(value, min), max)\n const fraction = (clamped - min) / range\n const hasThresholds = low !== undefined || high !== undefined || optimum !== undefined\n const resolvedTone: MeterTone =\n tone ?? (hasThresholds ? meterTone(value, { min, max, low, high, optimum }) : 'accent')\n const text = valueLabel ?? `${String(Math.round(((value - min) / range) * 100))}%`\n const ticks =\n segments && segments > 1\n ? Array.from({ length: segments - 1 }, (_, i) => (i + 1) / segments)\n : []\n\n return (\n <div\n ref={ref}\n role=\"meter\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={clamped}\n aria-valuetext={text}\n aria-label={ariaLabel}\n aria-labelledby={label && !ariaLabel ? labelId : undefined}\n className={cx(styles.meter, className)}\n data-tone={resolvedTone}\n data-size={size}\n data-over={value > max || undefined}\n data-segmented={ticks.length ? '' : undefined}\n style={mergeStyles({ '--meter-fraction': fraction } as CSSProperties, style)}\n {...rest}\n >\n {label || showValue ? (\n <div className={styles.header}>\n {label ? (\n <span id={labelId} className={styles.label}>\n {label}\n </span>\n ) : null}\n {showValue ? (\n <span className={styles.value} aria-hidden=\"true\">\n {text}\n </span>\n ) : null}\n </div>\n ) : null}\n <div className={styles.track} aria-hidden=\"true\">\n <div className={styles.fill} />\n {ticks.map((at) => (\n <span key={at} className={styles.tick} style={{ '--meter-tick': at } as CSSProperties} />\n ))}\n </div>\n </div>\n )\n})\n"],"mappings":";;;;;;;AAyCA,IAAaE,IAAQC,EAAuC,SAC1D,EACE,UACA,SAAM,GACN,SAAM,GACN,QACA,SACA,YACA,UACA,eACA,eAAY,IACZ,SACA,aACA,UAAO,MACP,cACA,UACA,cAAcC,GACd,GAAGC,KAEL,GACA;CACA,IAAMC,IAAUC,EAAM,GAChBC,IAAQC,IAAMC,KAAO,GACrBC,IAAU,KAAK,IAAI,KAAK,IAAIC,GAAOF,CAAG,GAAGD,CAAG,GAC5CI,KAAYF,IAAUD,KAAOF,GAE7BM,IACJC,MAFoBC,MAAQ,KAAA,KAAaC,MAAS,KAAA,KAAaC,MAAY,KAAA,IAElDC,EAAUP,GAAO;EAAE;EAAK;EAAK;EAAK;EAAM;CAAQ,CAAC,IAAI,WAC1EQ,IAAOC,KAAc,GAAG,OAAO,KAAK,OAAQT,IAAQF,KAAOF,IAAS,GAAG,CAAC,EAAE,IAC1Ec,IACJC,KAAYA,IAAW,IACnB,MAAM,KAAK,EAAE,QAAQA,IAAW,EAAE,IAAI,GAAG,OAAOC,IAAI,KAAKD,CAAQ,IACjE,CAAC;CAEP,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,iBAAeb;EACf,iBAAeD;EACf,iBAAeE;EACf,kBAAgBS;EAChB,cAAYhB;EACZ,mBAAiBqB,KAAS,CAACrB,IAAYE,IAAU,KAAA;EACjD,WAAWoB,EAAG1B,EAAO,OAAO2B,CAAS;EACrC,aAAWb;EACX,aAAWc;EACX,aAAWhB,IAAQH,KAAO,KAAA;EAC1B,kBAAgBa,EAAM,SAAS,KAAK,KAAA;EACpC,OAAOO,EAAY,EAAE,oBAAoBhB,EAAS,GAAoBiB,CAAK;EAC3E,GAAIzB;EAfN,UAAA,CAiBGoB,KAASM,IACR,kBAAC,OAAD;GAAK,WAAW/B,EAAO;GAAvB,UAAA,CACGyB,IACC,kBAAC,QAAD;IAAM,IAAInB;IAAS,WAAWN,EAAO;IAClC,UAAAyB;GACG,CAAA,IACJ,MACHM,IACC,kBAAC,QAAD;IAAM,WAAW/B,EAAO;IAAO,eAAY;IACxC,UAAAoB;GACG,CAAA,IACJ,IACD;EACH,CAAA,IAAA,MACJ,kBAAC,OAAD;GAAK,WAAWpB,EAAO;GAAO,eAAY;GAA1C,UAAA,CACE,kBAAC,OAAD,EAAK,WAAWA,EAAO,KAAO,CAAA,GAC7BsB,EAAM,KAAK,MACV,kBAAC,QAAD;IAAe,WAAWtB,EAAO;IAAM,OAAO,EAAE,gBAAgBgC,EAAG;GAAqB,GAA7EA,CAA6E,CACzF,CACE;EACF,CAAA,CAAA;;AAET,CAAC"}
@@ -0,0 +1,14 @@
1
+ //#region src/components/display/Meter/Meter.module.css
2
+ var e = "kiln-Meter__meter", t = "kiln-Meter__header", n = "kiln-Meter__label", r = "kiln-Meter__value", i = "kiln-Meter__track", a = "kiln-Meter__fill", o = "kiln-Meter__tick", s = {
3
+ meter: e,
4
+ header: t,
5
+ label: n,
6
+ value: r,
7
+ track: i,
8
+ fill: a,
9
+ tick: o
10
+ };
11
+ //#endregion
12
+ export { s as default, a as fill, t as header, n as label, e as meter, o as tick, i as track, r as value };
13
+
14
+ //# sourceMappingURL=Meter.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Meter.module.js","names":["meter","header","label","value","track","fill","tick","Meter_module_default"],"sources":["../../../../src/components/display/Meter/Meter.module.css"],"sourcesContent":["/*\n * Component tokens (themes may set any of these on [data-theme]):\n * --meter-radius default var(--radius-chip)\n * --meter-track track fill, default var(--color-surface-sunken)\n * --meter-track-edge track keyline, default var(--color-line-strong)\n * --meter-tick-color segment ticks, default var(--color-canvas)\n * --meter-neutral fill for tone=\"neutral\", default var(--color-ink-subtle)\n *\n * Written by the component: --meter-fraction (0–1) on the root, --meter-tick on each tick.\n */\n.meter {\n --_c: var(--color-accent);\n --_text: var(--color-ink-muted);\n --_h: var(--space-2);\n\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n min-inline-size: 0;\n font-family: var(--font-text);\n}\n\n.meter[data-size='sm'] {\n --_h: var(--space-1);\n}\n.meter[data-size='lg'] {\n --_h: var(--space-3);\n}\n\n/* Neutral is a quiet grey, not solid ink: it's the \"nothing to report\" bar (≥ 3:1 on the track). */\n.meter[data-tone='neutral'] {\n --_c: var(--meter-neutral, var(--color-ink-subtle));\n}\n.meter[data-tone='info'] {\n --_c: var(--tone-info);\n}\n.meter[data-tone='positive'] {\n --_c: var(--tone-positive);\n}\n.meter[data-tone='caution'] {\n --_c: var(--tone-caution);\n --_text: var(--tone-caution-text);\n}\n.meter[data-tone='critical'] {\n --_c: var(--tone-critical);\n --_text: var(--tone-critical-text);\n}\n\n.header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--space-3);\n font-size: var(--text-sm);\n line-height: var(--leading-snug);\n}\n\n.label {\n min-inline-size: 0;\n color: var(--color-ink);\n font-weight: var(--label-weight);\n letter-spacing: var(--label-tracking);\n text-transform: var(--label-transform);\n}\n\n.value {\n margin-inline-start: auto;\n color: var(--_text);\n font-family: var(--font-numeric);\n font-weight: var(--label-weight);\n font-stretch: var(--numeric-stretch);\n font-variant-numeric: tabular-nums lining-nums;\n white-space: nowrap;\n}\n\n.track {\n position: relative;\n overflow: hidden;\n block-size: calc(var(--_h) + var(--border-width) * 2);\n border: var(--border-width) solid var(--meter-track-edge, var(--color-line-strong));\n border-radius: var(--meter-radius, var(--radius-chip));\n background: var(--meter-track, var(--color-surface-sunken));\n}\n\n.fill {\n block-size: 100%;\n inline-size: 100%;\n background: var(--_c);\n transform-origin: left;\n scale: var(--meter-fraction, 0) 1;\n transition:\n scale var(--dur-3) var(--ease-out),\n background-color var(--dur-2) var(--ease-out);\n}\n.fill:dir(rtl) {\n transform-origin: right;\n}\n\n.tick {\n position: absolute;\n inset-block: 0;\n inset-inline-start: calc(var(--meter-tick) * 100%);\n inline-size: calc(var(--border-width) * 2);\n translate: -50% 0;\n background: var(--meter-tick-color, var(--color-canvas));\n}\n"],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export { Meter } from './Meter.js';
2
+ export { meterTone } from './meterTone.js';
3
+ export type { MeterProps, MeterTone } from './Meter.js';
4
+ export type { MeterThresholds } from './meterTone.js';
@@ -0,0 +1,15 @@
1
+ export interface MeterThresholds {
2
+ min?: number;
3
+ max?: number;
4
+ /** Upper bound of the "low" region. */
5
+ low?: number;
6
+ /** Lower bound of the "high" region. */
7
+ high?: number;
8
+ /** Where the good value lives. Below `low` = less is better (a quota); above `high` = more is better (a revenue target). */
9
+ optimum?: number;
10
+ }
11
+ /**
12
+ * The tone `<meter>` would pick. Unlike the element, a value past `max` still counts as
13
+ * being in the region past `high` — a quota that has run over must not read as "fine".
14
+ */
15
+ export declare function meterTone(value: number, t?: MeterThresholds): 'positive' | 'caution' | 'critical';
@@ -0,0 +1,9 @@
1
+ //#region src/components/display/Meter/meterTone.ts
2
+ function e(e, t = {}) {
3
+ let n = t.min ?? 0, r = Math.max(t.max ?? 1, n), i = Math.min(Math.max(t.low ?? n, n), r), a = Math.min(Math.max(t.high ?? r, i), r), o = Math.min(Math.max(t.optimum ?? (n + r) / 2, n), r), s = (e) => e < i ? 0 : e > a ? 2 : 1, c = Math.abs(s(e) - s(o));
4
+ return c === 0 ? "positive" : c === 1 ? "caution" : "critical";
5
+ }
6
+ //#endregion
7
+ export { e as meterTone };
8
+
9
+ //# sourceMappingURL=meterTone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meterTone.js","names":["meterTone","min","max","low","high","optimum","region","v","distance","value"],"sources":["../../../../src/components/display/Meter/meterTone.ts"],"sourcesContent":["export interface MeterThresholds {\n min?: number\n max?: number\n /** Upper bound of the \"low\" region. */\n low?: number\n /** Lower bound of the \"high\" region. */\n high?: number\n /** Where the good value lives. Below `low` = less is better (a quota); above `high` = more is better (a revenue target). */\n optimum?: number\n}\n\n/**\n * The tone `<meter>` would pick. Unlike the element, a value past `max` still counts as\n * being in the region past `high` — a quota that has run over must not read as \"fine\".\n */\nexport function meterTone(\n value: number,\n t: MeterThresholds = {},\n): 'positive' | 'caution' | 'critical' {\n const min = t.min ?? 0\n const max = Math.max(t.max ?? 1, min)\n const low = Math.min(Math.max(t.low ?? min, min), max)\n const high = Math.min(Math.max(t.high ?? max, low), max)\n const optimum = Math.min(Math.max(t.optimum ?? (min + max) / 2, min), max)\n\n const region = (v: number) => (v < low ? 0 : v > high ? 2 : 1)\n const distance = Math.abs(region(value) - region(optimum))\n return distance === 0 ? 'positive' : distance === 1 ? 'caution' : 'critical'\n}\n"],"mappings":";AAeA,SAAgBA,EACd,GACA,IAAqB,CAAC,GACe;CACrC,IAAMC,IAAM,EAAE,OAAO,GACfC,IAAM,KAAK,IAAI,EAAE,OAAO,GAAGD,CAAG,GAC9BE,IAAM,KAAK,IAAI,KAAK,IAAI,EAAE,OAAOF,GAAKA,CAAG,GAAGC,CAAG,GAC/CE,IAAO,KAAK,IAAI,KAAK,IAAI,EAAE,QAAQF,GAAKC,CAAG,GAAGD,CAAG,GACjDG,IAAU,KAAK,IAAI,KAAK,IAAI,EAAE,YAAYJ,IAAMC,KAAO,GAAGD,CAAG,GAAGC,CAAG,GAEnEI,KAAU,MAAeC,IAAIJ,IAAM,IAAII,IAAIH,IAAO,IAAI,GACtDI,IAAW,KAAK,IAAIF,EAAOG,CAAK,IAAIH,EAAOD,CAAO,CAAC;CACzD,OAAOG,MAAa,IAAI,aAAaA,MAAa,IAAI,YAAY;AACpE"}
@@ -0,0 +1,27 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
2
+ import { Progress as ProgressPrimitive } from 'radix-ui';
3
+ import type { Size, Tone } from '../../../utils/tokens.js';
4
+ export interface ProgressProps extends Omit<ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>, 'value' | 'max' | 'children'> {
5
+ /** Current value. `null` or omitted = indeterminate (working, amount unknown). */
6
+ value?: number | null;
7
+ /** Default 100. */
8
+ max?: number;
9
+ /** Default `accent`. */
10
+ tone?: Tone;
11
+ /** Bar thickness. */
12
+ size?: Size;
13
+ /** Visible label above the bar; also its accessible name. */
14
+ label?: ReactNode;
15
+ /** Show the value at the end of the label row. */
16
+ showValue?: boolean;
17
+ /** Formats the visible value and `aria-valuetext`. Default: whole percent. */
18
+ formatValue?: (value: number, max: number) => string;
19
+ }
20
+ /**
21
+ * How far along a task is: an upload, an import, a sync in progress.
22
+ * For a quantity against a limit (usage vs quota) use `Meter` instead.
23
+ *
24
+ * `ref` and native/ARIA props land on the `progressbar` element; `className` and `style`
25
+ * on the outer wrapper (label row + track).
26
+ */
27
+ export declare const Progress: import("react").ForwardRefExoticComponent<ProgressProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,45 @@
1
+ import { cx as e } from "../../../utils/cx.js";
2
+ import { mergeStyles as t } from "../../../utils/responsive.js";
3
+ import n from "./Progress.module.js";
4
+ import { forwardRef as r, useId as i } from "react";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
+ import { Progress as s } from "radix-ui";
7
+ //#region src/components/display/Progress/Progress.tsx
8
+ var c = (e, t) => `${String(Math.round(e / t * 100))}%`, l = r(function({ value: r = null, max: l = 100, tone: u = "accent", size: d = "md", label: f, showValue: p = !1, formatValue: m = c, className: h, style: g, "aria-label": _, ...v }, y) {
9
+ let b = i(), x = r !== null && Number.isFinite(r), S = x ? Math.min(Math.max(r, 0), l) : 0, C = x ? m(S, l) : void 0;
10
+ return /* @__PURE__ */ o("div", {
11
+ className: e(n.progress, h),
12
+ style: g,
13
+ "data-tone": u,
14
+ "data-size": d,
15
+ children: [f || p && x ? /* @__PURE__ */ o("div", {
16
+ className: n.header,
17
+ children: [f ? /* @__PURE__ */ a("span", {
18
+ id: b,
19
+ className: n.label,
20
+ children: f
21
+ }) : null, p && x ? /* @__PURE__ */ a("span", {
22
+ className: n.value,
23
+ "aria-hidden": "true",
24
+ children: C
25
+ }) : null]
26
+ }) : null, /* @__PURE__ */ a(s.Root, {
27
+ ref: y,
28
+ className: n.track,
29
+ value: x ? S : null,
30
+ max: l,
31
+ getValueLabel: (e, t) => m(e, t),
32
+ "aria-label": _,
33
+ "aria-labelledby": f && !_ ? b : void 0,
34
+ ...v,
35
+ children: /* @__PURE__ */ a(s.Indicator, {
36
+ className: n.indicator,
37
+ style: t(x ? { "--progress-fraction": S / l } : void 0)
38
+ })
39
+ })]
40
+ });
41
+ });
42
+ //#endregion
43
+ export { l as Progress };
44
+
45
+ //# sourceMappingURL=Progress.js.map