@nadicodeai/ui 12.1.164 → 12.1.166

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 (364) hide show
  1. package/AGENTS.md +8 -9
  2. package/README.md +2 -17
  3. package/dist/components/accordion.d.ts.map +1 -1
  4. package/dist/components/accordion.js +2 -1
  5. package/dist/components/account-menu.d.ts.map +1 -1
  6. package/dist/components/account-menu.js +5 -3
  7. package/dist/components/activity-calendar.d.ts.map +1 -1
  8. package/dist/components/activity-calendar.js +3 -2
  9. package/dist/components/agent-card.js +1 -1
  10. package/dist/components/agent-orb.d.ts.map +1 -1
  11. package/dist/components/agent-orb.js +1 -0
  12. package/dist/components/agent-profile.d.ts.map +1 -1
  13. package/dist/components/agent-profile.js +7 -4
  14. package/dist/components/alert-dialog.d.ts +1 -1
  15. package/dist/components/alert-dialog.d.ts.map +1 -1
  16. package/dist/components/alert-dialog.js +3 -3
  17. package/dist/components/app-mark.js +1 -1
  18. package/dist/components/avatar.js +8 -8
  19. package/dist/components/badge.d.ts +11 -16
  20. package/dist/components/badge.d.ts.map +1 -1
  21. package/dist/components/badge.js +7 -43
  22. package/dist/components/breadcrumb.d.ts.map +1 -1
  23. package/dist/components/breadcrumb.js +3 -2
  24. package/dist/components/button.d.ts +5 -21
  25. package/dist/components/button.d.ts.map +1 -1
  26. package/dist/components/button.js +6 -76
  27. package/dist/components/calendar.d.ts +1 -1
  28. package/dist/components/calendar.d.ts.map +1 -1
  29. package/dist/components/calendar.js +3 -3
  30. package/dist/components/card-row.js +1 -1
  31. package/dist/components/card.d.ts +4 -1
  32. package/dist/components/card.d.ts.map +1 -1
  33. package/dist/components/card.js +3 -2
  34. package/dist/components/catalog-drawer.d.ts.map +1 -1
  35. package/dist/components/catalog-drawer.js +3 -2
  36. package/dist/components/chart-axis.d.ts.map +1 -1
  37. package/dist/components/chart-axis.js +0 -2
  38. package/dist/components/chart-bar-horizontal.d.ts.map +1 -1
  39. package/dist/components/chart-bar-horizontal.js +16 -14
  40. package/dist/components/chart-card.d.ts.map +1 -1
  41. package/dist/components/chart-card.js +0 -1
  42. package/dist/components/chart.d.ts.map +1 -1
  43. package/dist/components/chart.js +18 -32
  44. package/dist/components/checkbox.d.ts +3 -2
  45. package/dist/components/checkbox.d.ts.map +1 -1
  46. package/dist/components/checkbox.js +4 -3
  47. package/dist/components/choicebox.d.ts +5 -5
  48. package/dist/components/choicebox.d.ts.map +1 -1
  49. package/dist/components/choicebox.js +6 -5
  50. package/dist/components/clearable-input.d.ts.map +1 -1
  51. package/dist/components/clearable-input.js +2 -2
  52. package/dist/components/code-block.d.ts.map +1 -1
  53. package/dist/components/code-block.js +4 -2
  54. package/dist/components/collapsible.js +1 -1
  55. package/dist/components/collection-filters.d.ts.map +1 -1
  56. package/dist/components/collection-filters.js +1 -0
  57. package/dist/components/collection-page.js +1 -1
  58. package/dist/components/collection-sort.d.ts.map +1 -1
  59. package/dist/components/collection-sort.js +1 -4
  60. package/dist/components/collection-toolbar.js +1 -1
  61. package/dist/components/combobox.js +4 -4
  62. package/dist/components/command.d.ts.map +1 -1
  63. package/dist/components/command.js +1 -1
  64. package/dist/components/confirm-dialog.js +2 -2
  65. package/dist/components/context-menu.d.ts +1 -1
  66. package/dist/components/context-menu.d.ts.map +1 -1
  67. package/dist/components/copy-button.js +1 -1
  68. package/dist/components/data-table.d.ts +11 -3
  69. package/dist/components/data-table.d.ts.map +1 -1
  70. package/dist/components/data-table.js +12 -4
  71. package/dist/components/dialog.d.ts +1 -1
  72. package/dist/components/dialog.d.ts.map +1 -1
  73. package/dist/components/dialog.js +2 -2
  74. package/dist/components/drawer.d.ts +4 -4
  75. package/dist/components/drawer.d.ts.map +1 -1
  76. package/dist/components/drawer.js +14 -15
  77. package/dist/components/dropdown-menu.d.ts +1 -1
  78. package/dist/components/dropdown-menu.d.ts.map +1 -1
  79. package/dist/components/dropdown-menu.js +9 -5
  80. package/dist/components/empty-art.js +1 -1
  81. package/dist/components/empty-state.js +2 -2
  82. package/dist/components/entry-scene.d.ts.map +1 -1
  83. package/dist/components/entry-scene.js +2 -3
  84. package/dist/components/field.js +3 -3
  85. package/dist/components/file-diff.d.ts.map +1 -1
  86. package/dist/components/file-diff.js +5 -2
  87. package/dist/components/footer.d.ts +1 -1
  88. package/dist/components/footer.d.ts.map +1 -1
  89. package/dist/components/footer.js +3 -3
  90. package/dist/components/form-dialog.d.ts.map +1 -1
  91. package/dist/components/form-dialog.js +2 -1
  92. package/dist/components/form-drawer.d.ts +7 -9
  93. package/dist/components/form-drawer.d.ts.map +1 -1
  94. package/dist/components/form-drawer.js +5 -5
  95. package/dist/components/form.d.ts +26 -0
  96. package/dist/components/form.d.ts.map +1 -0
  97. package/dist/components/form.js +29 -0
  98. package/dist/components/gauge.js +2 -2
  99. package/dist/components/heatmap/calendar-heatmap.d.ts.map +1 -1
  100. package/dist/components/heatmap/calendar-heatmap.js +15 -13
  101. package/dist/components/hive-scene.d.ts +3 -3
  102. package/dist/components/hive-scene.d.ts.map +1 -1
  103. package/dist/components/hive-scene.js +4 -2
  104. package/dist/components/hover-card.d.ts +1 -1
  105. package/dist/components/hover-card.d.ts.map +1 -1
  106. package/dist/components/hover-card.js +1 -1
  107. package/dist/components/input-group.d.ts +5 -6
  108. package/dist/components/input-group.d.ts.map +1 -1
  109. package/dist/components/input-group.js +8 -11
  110. package/dist/components/input-otp.d.ts.map +1 -1
  111. package/dist/components/input-otp.js +2 -2
  112. package/dist/components/item.d.ts +1 -1
  113. package/dist/components/item.js +2 -2
  114. package/dist/components/kbd.d.ts +6 -9
  115. package/dist/components/kbd.d.ts.map +1 -1
  116. package/dist/components/kbd.js +7 -3
  117. package/dist/components/message-notice.js +1 -1
  118. package/dist/components/middle-truncate.d.ts.map +1 -1
  119. package/dist/components/middle-truncate.js +1 -0
  120. package/dist/components/model-identity.d.ts +4 -4
  121. package/dist/components/model-identity.d.ts.map +1 -1
  122. package/dist/components/model-identity.js +2 -2
  123. package/dist/components/model-mark.d.ts.map +1 -1
  124. package/dist/components/model-mark.js +4 -2
  125. package/dist/components/multi-select.js +2 -2
  126. package/dist/components/native-select.d.ts.map +1 -1
  127. package/dist/components/native-select.js +2 -6
  128. package/dist/components/notice-banner.js +1 -1
  129. package/dist/components/object-page.js +2 -2
  130. package/dist/components/object-workspace.d.ts.map +1 -1
  131. package/dist/components/object-workspace.js +1 -3
  132. package/dist/components/overview-page.d.ts +1 -1
  133. package/dist/components/overview-page.d.ts.map +1 -1
  134. package/dist/components/overview-page.js +2 -1
  135. package/dist/components/page-actions.d.ts.map +1 -1
  136. package/dist/components/page-actions.js +9 -4
  137. package/dist/components/pairing-code.js +1 -1
  138. package/dist/components/pending-label.d.ts.map +1 -1
  139. package/dist/components/pending-label.js +0 -1
  140. package/dist/components/popover.d.ts +1 -1
  141. package/dist/components/popover.d.ts.map +1 -1
  142. package/dist/components/portal-sidebar-frame.d.ts.map +1 -1
  143. package/dist/components/portal-sidebar-frame.js +1 -1
  144. package/dist/components/product-message.d.ts.map +1 -1
  145. package/dist/components/product-message.js +1 -0
  146. package/dist/components/progress-checklist.d.ts.map +1 -1
  147. package/dist/components/progress-checklist.js +2 -2
  148. package/dist/components/progress.d.ts.map +1 -1
  149. package/dist/components/progress.js +5 -4
  150. package/dist/components/radio-group.js +2 -2
  151. package/dist/components/reading-column.js +1 -1
  152. package/dist/components/record-identity.d.ts.map +1 -1
  153. package/dist/components/record-identity.js +2 -5
  154. package/dist/components/record-list.d.ts.map +1 -1
  155. package/dist/components/record-list.js +4 -3
  156. package/dist/components/record-sheet.js +1 -1
  157. package/dist/components/record-time.d.ts.map +1 -1
  158. package/dist/components/record-time.js +2 -1
  159. package/dist/components/resizable.d.ts.map +1 -1
  160. package/dist/components/resizable.js +1 -1
  161. package/dist/components/row-edit-form.d.ts +2 -1
  162. package/dist/components/row-edit-form.d.ts.map +1 -1
  163. package/dist/components/row-edit-form.js +2 -1
  164. package/dist/components/run-timeline.js +1 -1
  165. package/dist/components/scope-switcher.js +1 -1
  166. package/dist/components/segmented-control.js +1 -1
  167. package/dist/components/select.js +1 -1
  168. package/dist/components/settings-facts.js +1 -1
  169. package/dist/components/settings-section.js +1 -1
  170. package/dist/components/sheet.d.ts +1 -1
  171. package/dist/components/sheet.d.ts.map +1 -1
  172. package/dist/components/sheet.js +1 -1
  173. package/dist/components/sidebar.d.ts +2 -2
  174. package/dist/components/sidebar.d.ts.map +1 -1
  175. package/dist/components/sidebar.js +16 -18
  176. package/dist/components/site-menu.d.ts +28 -0
  177. package/dist/components/site-menu.d.ts.map +1 -0
  178. package/dist/components/site-menu.js +23 -0
  179. package/dist/components/slider.d.ts.map +1 -1
  180. package/dist/components/slider.js +2 -1
  181. package/dist/components/snippet.d.ts +2 -0
  182. package/dist/components/snippet.d.ts.map +1 -1
  183. package/dist/components/snippet.js +13 -6
  184. package/dist/components/sonner.d.ts.map +1 -1
  185. package/dist/components/sonner.js +3 -4
  186. package/dist/components/status-badge.d.ts +1 -1
  187. package/dist/components/status-badge.d.ts.map +1 -1
  188. package/dist/components/switch.js +1 -1
  189. package/dist/components/table-card.js +1 -1
  190. package/dist/components/table.js +4 -4
  191. package/dist/components/tabs-nav.d.ts +52 -0
  192. package/dist/components/tabs-nav.d.ts.map +1 -0
  193. package/dist/components/tabs-nav.js +95 -0
  194. package/dist/components/tabs.d.ts +2 -56
  195. package/dist/components/tabs.d.ts.map +1 -1
  196. package/dist/components/tabs.js +2 -91
  197. package/dist/components/text-link.d.ts +1 -2
  198. package/dist/components/text-link.d.ts.map +1 -1
  199. package/dist/components/text-link.js +1 -2
  200. package/dist/components/textarea.d.ts +5 -2
  201. package/dist/components/textarea.d.ts.map +1 -1
  202. package/dist/components/textarea.js +12 -4
  203. package/dist/components/toast.d.ts +2 -0
  204. package/dist/components/toast.d.ts.map +1 -1
  205. package/dist/components/toast.js +4 -0
  206. package/dist/components/toggle-group.d.ts +3 -1
  207. package/dist/components/toggle-group.d.ts.map +1 -1
  208. package/dist/components/toggle-group.js +3 -6
  209. package/dist/components/toggle.js +1 -1
  210. package/dist/components/tooltip.d.ts +12 -12
  211. package/dist/components/tooltip.d.ts.map +1 -1
  212. package/dist/components/tooltip.js +9 -9
  213. package/dist/components/trend-badge.js +2 -2
  214. package/dist/components/update-card.js +1 -1
  215. package/dist/components/usage-meter.d.ts +1 -1
  216. package/dist/components/usage-meter.d.ts.map +1 -1
  217. package/dist/components/usage-meter.js +9 -7
  218. package/dist/components/waiting-line.js +1 -1
  219. package/dist/index.d.ts +3 -7
  220. package/dist/index.d.ts.map +1 -1
  221. package/dist/index.js +3 -7
  222. package/dist/internal/agent-orb-motion.d.ts +4 -1
  223. package/dist/internal/agent-orb-motion.d.ts.map +1 -1
  224. package/dist/internal/agent-orb-motion.js +9 -7
  225. package/dist/internal/agent-orb.d.ts +4 -1
  226. package/dist/internal/agent-orb.d.ts.map +1 -1
  227. package/dist/internal/agent-orb.js +7 -1
  228. package/dist/internal/assistant-ui/attachment.d.ts.map +1 -1
  229. package/dist/internal/assistant-ui/attachment.js +15 -15
  230. package/dist/internal/assistant-ui/follow-up-suggestions.js +1 -1
  231. package/dist/internal/assistant-ui/markdown-text.js +26 -25
  232. package/dist/internal/assistant-ui/reasoning.d.ts.map +1 -1
  233. package/dist/internal/assistant-ui/reasoning.js +13 -16
  234. package/dist/internal/assistant-ui/thread.d.ts.map +1 -1
  235. package/dist/internal/assistant-ui/thread.js +22 -16
  236. package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -1
  237. package/dist/internal/assistant-ui/tool-fallback.js +29 -21
  238. package/dist/internal/assistant-ui/tool-group.d.ts.map +1 -1
  239. package/dist/internal/assistant-ui/tool-group.js +6 -7
  240. package/dist/internal/assistant-ui/tooltip-icon-button.js +1 -1
  241. package/dist/internal/badge-frame.d.ts +15 -0
  242. package/dist/internal/badge-frame.d.ts.map +1 -0
  243. package/dist/internal/badge-frame.js +44 -0
  244. package/dist/internal/button-classes.d.ts +20 -0
  245. package/dist/internal/button-classes.d.ts.map +1 -0
  246. package/dist/internal/button-classes.js +74 -0
  247. package/dist/internal/catalog-list.d.ts.map +1 -1
  248. package/dist/internal/catalog-list.js +8 -4
  249. package/dist/internal/collection-rail.js +3 -3
  250. package/dist/internal/form-drawer-frame.d.ts +10 -0
  251. package/dist/internal/form-drawer-frame.d.ts.map +1 -0
  252. package/dist/internal/form-drawer-frame.js +9 -0
  253. package/dist/internal/form-submit.d.ts +2 -1
  254. package/dist/internal/form-submit.d.ts.map +1 -1
  255. package/dist/internal/settings-save.d.ts.map +1 -1
  256. package/dist/internal/settings-save.js +4 -2
  257. package/dist/internal/status-mark.d.ts.map +1 -1
  258. package/dist/internal/status-mark.js +4 -1
  259. package/dist/internal/tab-row.d.ts +10 -0
  260. package/dist/internal/tab-row.d.ts.map +1 -0
  261. package/dist/internal/tab-row.js +2 -0
  262. package/dist/internal/table-compact-line.d.ts +1 -1
  263. package/dist/internal/table-compact-line.d.ts.map +1 -1
  264. package/dist/internal/table-compact-line.js +1 -1
  265. package/dist/internal/tooltip-content-frame.d.ts +14 -0
  266. package/dist/internal/tooltip-content-frame.d.ts.map +1 -0
  267. package/dist/internal/tooltip-content-frame.js +11 -0
  268. package/dist/lib/css-variables.d.ts +8 -0
  269. package/dist/lib/css-variables.d.ts.map +1 -0
  270. package/dist/lib/css-variables.js +4 -0
  271. package/dist/lib/merge-tokens.generated.js +1 -1
  272. package/dist/lib/use-copy-to-clipboard.d.ts.map +1 -1
  273. package/dist/lib/use-copy-to-clipboard.js +1 -2
  274. package/dist/showcase/samples.js +1 -1
  275. package/dist/showcase/specimens/choices.d.ts.map +1 -1
  276. package/dist/showcase/specimens/choices.js +3 -2
  277. package/dist/showcase/specimens/compositions.d.ts.map +1 -1
  278. package/dist/showcase/specimens/compositions.js +7 -5
  279. package/dist/showcase/specimens/data.d.ts.map +1 -1
  280. package/dist/showcase/specimens/data.js +1 -1
  281. package/dist/showcase/specimens/feedback.d.ts.map +1 -1
  282. package/dist/showcase/specimens/feedback.js +1 -2
  283. package/dist/showcase/specimens/index.d.ts +2 -0
  284. package/dist/showcase/specimens/index.d.ts.map +1 -1
  285. package/dist/showcase/specimens/inputs.d.ts +1 -0
  286. package/dist/showcase/specimens/inputs.d.ts.map +1 -1
  287. package/dist/showcase/specimens/inputs.js +5 -2
  288. package/dist/showcase/specimens/menus.d.ts +1 -0
  289. package/dist/showcase/specimens/menus.d.ts.map +1 -1
  290. package/dist/showcase/specimens/menus.js +7 -2
  291. package/dist/showcase/specimens/navigation.d.ts.map +1 -1
  292. package/dist/showcase/specimens/navigation.js +6 -5
  293. package/dist/showcase/specimens/status.d.ts.map +1 -1
  294. package/dist/showcase/specimens/status.js +4 -4
  295. package/dist/showcase/usage.generated.d.ts +1 -1
  296. package/dist/showcase/usage.generated.d.ts.map +1 -1
  297. package/dist/showcase/usage.generated.js +39 -17
  298. package/dist/standalone/index.js +1 -1
  299. package/dist/standalone/orb-page.js +10 -8
  300. package/dist/styles/components.css +14 -19
  301. package/package.json +32 -33
  302. package/dist/eslint/index.js +0 -224
  303. package/dist/eslint/rules/badge-is-static-label.js +0 -93
  304. package/dist/eslint/rules/button-icon-slot.js +0 -102
  305. package/dist/eslint/rules/button-link-for-navigation.js +0 -146
  306. package/dist/eslint/rules/button-no-aria-label-with-text.js +0 -75
  307. package/dist/eslint/rules/button-type-roles-only-in-buttons.js +0 -83
  308. package/dist/eslint/rules/choice-control-has-a-name.js +0 -98
  309. package/dist/eslint/rules/choice-group-in-fieldset.js +0 -86
  310. package/dist/eslint/rules/command-shortcut-single-owner.js +0 -118
  311. package/dist/eslint/rules/confirm-dialog-words.js +0 -63
  312. package/dist/eslint/rules/data-table-one-unsized-column.js +0 -96
  313. package/dist/eslint/rules/destructive-action-placement.js +0 -69
  314. package/dist/eslint/rules/disabled-choice-says-why.js +0 -71
  315. package/dist/eslint/rules/disabled-control-appearance.js +0 -75
  316. package/dist/eslint/rules/ellipsis-opens-a-dialog.js +0 -110
  317. package/dist/eslint/rules/empty-state-owner.js +0 -145
  318. package/dist/eslint/rules/input-group-owners.js +0 -155
  319. package/dist/eslint/rules/jsx-class-utility.js +0 -200
  320. package/dist/eslint/rules/kbd-children-no-modifier-text.js +0 -128
  321. package/dist/eslint/rules/literal-text.js +0 -41
  322. package/dist/eslint/rules/menu-owner.js +0 -75
  323. package/dist/eslint/rules/middle-truncate-placement.js +0 -69
  324. package/dist/eslint/rules/no-app-feature-component.js +0 -100
  325. package/dist/eslint/rules/no-bare-button-label.js +0 -55
  326. package/dist/eslint/rules/no-choice-control-wrapper.js +0 -97
  327. package/dist/eslint/rules/no-comment.js +0 -77
  328. package/dist/eslint/rules/no-control-in-read-only-surface.js +0 -106
  329. package/dist/eslint/rules/no-decorative-icon.js +0 -164
  330. package/dist/eslint/rules/no-deprecated-zod-api.js +0 -215
  331. package/dist/eslint/rules/no-global-patch.js +0 -115
  332. package/dist/eslint/rules/no-hand-built-busy.js +0 -104
  333. package/dist/eslint/rules/no-hand-built-theme-picker.js +0 -144
  334. package/dist/eslint/rules/no-hand-built-tile.js +0 -41
  335. package/dist/eslint/rules/no-hand-formatted-date.js +0 -87
  336. package/dist/eslint/rules/no-hand-stacked-avatars.js +0 -67
  337. package/dist/eslint/rules/no-nested-collapse.js +0 -60
  338. package/dist/eslint/rules/no-package-component-redefinition.js +0 -175
  339. package/dist/eslint/rules/no-search-in-form.js +0 -47
  340. package/dist/eslint/rules/no-shadcn-appearance-override.js +0 -305
  341. package/dist/eslint/rules/no-shell-prompt-in-snippet.js +0 -74
  342. package/dist/eslint/rules/no-stock-error-words.js +0 -56
  343. package/dist/eslint/rules/no-subject-derived-expectation.js +0 -183
  344. package/dist/eslint/rules/no-tooltip-around-labelled-field.js +0 -72
  345. package/dist/eslint/rules/no-weight-class-on-strong-in-type-role.js +0 -57
  346. package/dist/eslint/rules/no-write-in-subscription.js +0 -140
  347. package/dist/eslint/rules/one-submenu-level.js +0 -43
  348. package/dist/eslint/rules/one-toast-per-flow.js +0 -91
  349. package/dist/eslint/rules/option-count.js +0 -167
  350. package/dist/eslint/rules/page-command-link-not-render.js +0 -43
  351. package/dist/eslint/rules/page-composition.js +0 -232
  352. package/dist/eslint/rules/progress-needs-name.js +0 -57
  353. package/dist/eslint/rules/rendered-import.js +0 -121
  354. package/dist/eslint/rules/server-action-discipline.js +0 -233
  355. package/dist/eslint/rules/settings-limit-in-footer.js +0 -94
  356. package/dist/eslint/rules/skeleton-in-region.js +0 -80
  357. package/dist/eslint/rules/sortable-heading-uses-sort.js +0 -79
  358. package/dist/eslint/rules/table-cell-inset-owner.js +0 -107
  359. package/dist/eslint/rules/tabs-selection-is-controlled.js +0 -47
  360. package/dist/eslint/rules/test-files-from-one-definition.js +0 -67
  361. package/dist/eslint/rules/tooltip-only-arrow.js +0 -38
  362. package/dist/eslint/rules/tooltip-trigger-accessible-name.js +0 -114
  363. package/dist/eslint/rules/workspace-declares-imports.js +0 -163
  364. package/dist/eslint/strict-design-system.js +0 -250
@@ -4,6 +4,7 @@ import * as React from "react";
4
4
  import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
5
5
  import { holdBackUnsavedDismissal } from "../internal/unsaved-guard.js";
6
6
  import { cn } from "../lib/utils.js";
7
+ import { cssVariables } from "../lib/css-variables.js";
7
8
  const DrawerContext = React.createContext(null);
8
9
  function useDrawer() {
9
10
  const context = React.useContext(DrawerContext);
@@ -41,7 +42,7 @@ function useDrawer() {
41
42
  * visible one uses `DrawerClose`.
42
43
  */
43
44
  function Drawer({ modal = true, showSwipeHandle = false, snapPoints, height, unsaved, onOpenChange, ...props }) {
44
- const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
45
+ const hasSnapPoints = snapPoints !== null && snapPoints !== undefined && snapPoints.length > 0;
45
46
  const contextValue = React.useMemo(() => ({ hasSnapPoints, height, modal, showSwipeHandle }), [hasSnapPoints, height, modal, showSwipeHandle]);
46
47
  return (_jsx(DrawerContext.Provider, { value: contextValue, children: _jsx(DrawerPrimitive.Root, { "data-slot": "drawer", modal: modal, onOpenChange: (open, details) => {
47
48
  if (!holdBackUnsavedDismissal(open, details, unsaved))
@@ -58,20 +59,18 @@ function DrawerClose({ ...props }) {
58
59
  return _jsx(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
59
60
  }
60
61
  function DrawerOverlay({ className, ...props }) {
61
- return (_jsx(DrawerPrimitive.Backdrop, { "data-slot": "drawer-overlay", className: cn("fixed inset-0 z-50 min-h-dvh bg-scrim/scrim opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-[var(--nc-duration-drawer)] ease-[var(--nc-ease-drawer)] select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*var(--nc-duration-drawer-swipe))] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-[-webkit-touch-callout:none]:absolute", className), ...props }));
62
+ return (_jsx(DrawerPrimitive.Backdrop, { "data-slot": "drawer-overlay", className: cn("fixed inset-0 z-50 min-h-dvh bg-scrim/scrim opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-(--nc-duration-drawer) ease-(--nc-ease-drawer) select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*var(--nc-duration-drawer-swipe))] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-[-webkit-touch-callout:none]:absolute", className), ...props }));
62
63
  }
63
64
  function DrawerSwipeHandle({ className, ...props }) {
64
- return (_jsx("div", { "data-slot": "drawer-swipe-handle", "aria-hidden": "true", className: cn("relative z-10 flex h-3 w-full shrink-0 cursor-grab items-end justify-center transition-opacity duration-[var(--nc-duration-confirm)] ease-[var(--nc-ease-out-strong)] group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 after:block after:h-1 after:w-24 after:shrink-0 after:rounded-full after:bg-muted active:cursor-grabbing", className), ...props }));
65
+ return (_jsx("div", { "data-slot": "drawer-swipe-handle", "aria-hidden": "true", className: cn("relative z-10 flex h-3 w-full shrink-0 cursor-grab items-end justify-center nc-transition-opacity group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 after:block after:h-1 after:w-24 after:shrink-0 after:rounded-full after:bg-muted active:cursor-grabbing", className), ...props }));
65
66
  }
66
67
  function DrawerContent({ className, children, ...props }) {
67
68
  const { hasSnapPoints, height, modal, showSwipeHandle } = useDrawer();
68
- return (_jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [modal === true && _jsx(DrawerOverlay, { "data-snap-points": hasSnapPoints ? "" : undefined }), _jsx(DrawerPrimitive.Viewport, { "data-slot": "drawer-viewport", "data-modal": modal, className: "pointer-events-none fixed inset-0 z-50 select-none data-[modal=true]:pointer-events-auto",
69
- // SAFETY: CSSProperties lists only standard properties; React sets the `--` custom property key here through style.setProperty.
70
- style: height === undefined
69
+ return (_jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [modal === true && _jsx(DrawerOverlay, { "data-snap-points": hasSnapPoints ? "" : undefined }), _jsx(DrawerPrimitive.Viewport, { "data-slot": "drawer-viewport", "data-modal": modal, className: "pointer-events-none fixed inset-0 z-50 select-none data-[modal=true]:pointer-events-auto", style: height === undefined
71
70
  ? undefined
72
- : { "--drawer-custom-height": `${height}px` }, children: _jsxs(DrawerPrimitive.Popup, { "data-slot": "drawer-popup", "data-snap-points": hasSnapPoints ? "" : undefined, className: cn(
71
+ : cssVariables({ "--drawer-custom-height": `${height}px` }), children: _jsxs(DrawerPrimitive.Popup, { "data-slot": "drawer-popup", "data-snap-points": hasSnapPoints ? "" : undefined, className: cn(
73
72
  // Base.
74
- "group/drawer-popup pointer-events-auto fixed inset-x-0 bottom-0 z-50 flex h-(--drawer-content-height) max-h-(--drawer-content-max-height) min-h-0 w-full origin-bottom transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)_scale(var(--stack-scale))] flex-col rounded-t-md border-0 bg-popover text-sm text-popover-foreground nc-elevation-modal transition-[transform,opacity] duration-[var(--nc-duration-drawer)] ease-[var(--nc-ease-drawer)] outline-none select-none motion-reduce:transition-opacity",
73
+ "group/drawer-popup pointer-events-auto fixed inset-x-0 bottom-0 z-50 flex h-(--drawer-content-height) max-h-(--drawer-content-max-height) min-h-0 w-full origin-bottom transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)_scale(var(--stack-scale))] flex-col rounded-t-md border-0 bg-popover text-sm text-popover-foreground nc-elevation-modal transition-[transform,opacity] duration-(--nc-duration-drawer) ease-(--nc-ease-drawer) outline-none select-none motion-reduce:transition-opacity",
75
74
  // Nested.
76
75
  "data-nested-drawer-open:h-(--stack-height) data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95",
77
76
  // Bleed.
@@ -83,25 +82,25 @@ function DrawerContent({ className, children, ...props }) {
83
82
  // Position.
84
83
  "[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--stack-shrink)*var(--stack-height)))]",
85
84
  // Transitions.
86
- "[--closed-transform:translate3d(0,calc(100%+2px),0)] data-ending-style:transform-(--closed-transform) data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*var(--nc-duration-drawer-swipe))] data-nested-drawer-swiping:duration-0 data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*var(--nc-duration-drawer-swipe))] data-starting-style:transform-(--closed-transform) data-swiping:duration-0 data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*var(--nc-duration-drawer-swipe))] motion-reduce:data-ending-style:transform-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:opacity-0 motion-reduce:data-starting-style:opacity-0", className), ...props, children: [showSwipeHandle && _jsx(DrawerSwipeHandle, {}), _jsx(DrawerPrimitive.Content, { "data-slot": "drawer-content", className: cn("flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-[var(--nc-duration-open)] ease-[var(--nc-ease-out-strong)] select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none"), children: children })] }) })] }));
85
+ "[--closed-transform:translate3d(0,calc(100%+2px),0)] data-ending-style:transform-(--closed-transform) data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*var(--nc-duration-drawer-swipe))] data-nested-drawer-swiping:duration-0 data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*var(--nc-duration-drawer-swipe))] data-starting-style:transform-(--closed-transform) data-swiping:duration-0 data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*var(--nc-duration-drawer-swipe))] motion-reduce:data-ending-style:transform-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:opacity-0 motion-reduce:data-starting-style:opacity-0", className), ...props, children: [showSwipeHandle && _jsx(DrawerSwipeHandle, {}), _jsx(DrawerPrimitive.Content, { "data-slot": "drawer-content", className: cn("flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-(--nc-duration-open) ease-(--nc-ease-out-strong) select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none"), children: children })] }) })] }));
87
86
  }
88
87
  /**
89
88
  * The header and the footer stay in place while the body scrolls between them,
90
89
  * so each draws the one hairline that separates it from the body; a caller
91
90
  * adds no edge of its own.
92
91
  */
93
- function DrawerHeader({ className, ...props }) {
94
- return (_jsx("div", { "data-slot": "drawer-header", className: cn("flex shrink-0 flex-col gap-2 p-nadicode-lg pb-nadicode-md text-center", className), ...props }));
92
+ function DrawerHeader(props) {
93
+ return (_jsx("div", { "data-slot": "drawer-header", className: "flex shrink-0 flex-col gap-2 p-nadicode-lg pb-nadicode-md text-center", ...props }));
95
94
  }
96
95
  /**
97
96
  * The part of a drawer that scrolls, between its header and footer, which stay
98
97
  * in place so the actions remain reachable.
99
98
  */
100
- function DrawerBody({ className, ...props }) {
101
- return (_jsx("div", { "data-slot": "drawer-body", className: cn("flex min-h-0 flex-1 flex-col gap-nadicode-md overflow-y-auto p-nadicode-lg", className), ...props }));
99
+ function DrawerBody(props) {
100
+ return (_jsx("div", { "data-slot": "drawer-body", className: "flex min-h-0 flex-1 flex-col gap-nadicode-md overflow-y-auto p-nadicode-lg", ...props }));
102
101
  }
103
- function DrawerFooter({ className, ...props }) {
104
- return (_jsx("div", { "data-slot": "drawer-footer", className: cn("mt-auto flex shrink-0 flex-col gap-2 border-t border-border bg-recessed px-nadicode-lg py-control-padding-inline", className), ...props }));
102
+ function DrawerFooter(props) {
103
+ return (_jsx("div", { "data-slot": "drawer-footer", className: "mt-auto flex shrink-0 flex-col gap-2 border-t border-border bg-recessed px-nadicode-lg py-control-padding-inline", ...props }));
105
104
  }
106
105
  function DrawerTitle({ className, ...props }) {
107
106
  return (_jsx(DrawerPrimitive.Title, { "data-slot": "drawer-title", className: cn("text-body-lg leading-6 font-semibold text-foreground", className), ...props }));
@@ -11,7 +11,7 @@ import type { LoadingWord } from "./button.js";
11
11
  * @words "Item children are Title Case `Verb + Noun` (`Rename Project`, `Duplicate Deployment`). Bare verbs like `Rename` or `Edit` are wrong outside obvious single-object context." (https://vercel.com/geist/menu) "End an item with `…` only when activating it opens a follow-up dialog (`Rename…`, `Transfer to Team…`)." (https://vercel.com/geist/menu) "Group destructive items at the bottom, separated by a divider, and keep the destructive copy as `Verb + Noun` (`Delete Project`, never bare `Delete`)." (https://vercel.com/geist/menu) "Section headers (`MenuSection title`) are Title Case, 1–2 words (`Workspace`, `Recent Projects`)." (https://vercel.com/geist/menu) "Cap a Menu around 10 items. Past that, group with `MenuSection` or move secondary actions to a settings page." (https://vercel.com/geist/menu) Ours: sentence case, not Title Case: "Remove mailbox", never a bare "Delete"; a section title is sentence case too. Italian runs a third longer; rows wrap, never truncate.
12
12
  * @access "Up/Down arrows move focus through items, Home/End jump to first/last, Enter or Space activates." (https://vercel.com/geist/menu) "Typeahead jumps to the next item whose label starts with the typed character; keep the visible label first so typeahead matches what the user sees." (https://vercel.com/geist/menu) "Return focus to the trigger on close so keyboard users keep their place in the row." (https://vercel.com/geist/menu) Ours: `role="menu"` named by its trigger, items `menuitem`. Unlike Geist, which skips disabled rows, arrows land on a command that cannot run so its reason is read; it is still never highlighted and never runs. A command's icon is hidden; the value it acts on and its reason are its description. `DropdownMenuCommand` requires its `icon`; a command that cannot run takes `disabledReason`, and one a person may not run is `locked` with its `reason`, so nothing is greyed without saying why.
13
13
  */
14
- declare function DropdownMenu({ ...props }: MenuPrimitive.Root.Props): React.JSX.Element;
14
+ declare function DropdownMenu({ ...props }: Omit<MenuPrimitive.Root.Props, "defaultOpen">): React.JSX.Element;
15
15
  declare function DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props): React.JSX.Element;
16
16
  declare function DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props): React.JSX.Element;
17
17
  declare function DropdownMenuContent({ align, alignOffset, density, side, sideOffset, className, ...props }: MenuPrimitive.Popup.Props & Pick<MenuPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & {
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../src/components/dropdown-menu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../src/components/dropdown-menu.tsx"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ function DropdownMenuGroup({ ...props }) {
32
32
  return _jsx(MenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
33
33
  }
34
34
  function DropdownMenuLabel({ className, inset, ...props }) {
35
- return (_jsx(MenuPrimitive.GroupLabel, { "data-slot": "dropdown-menu-label", "data-nc-ui": "", "data-inset": inset, className: cn("px-1.5 py-1 text-xs font-medium text-muted-foreground group-data-[density=comfortable]/menu:px-2 group-data-[density=comfortable]/menu:py-2 group-data-[density=comfortable]/menu:text-sm group-data-[density=comfortable]/menu:font-normal data-inset:pl-7", className), ...props }));
35
+ return (_jsx(MenuPrimitive.GroupLabel, { "data-slot": "dropdown-menu-label", "data-nc-ui": "", "data-inset": inset, className: cn("px-1.5 py-1 text-xs font-medium text-muted-foreground group-data-[density=comfortable]/menu:p-2 group-data-[density=comfortable]/menu:text-sm group-data-[density=comfortable]/menu:font-normal data-inset:pl-7", className), ...props }));
36
36
  }
37
37
  const itemRow = cn(menuRow, "data-[variant=destructive]:text-destructive-soft-foreground data-[variant=destructive]:not-data-disabled:focus:bg-destructive-soft data-[variant=destructive]:*:[svg]:text-destructive-soft-foreground data-[variant=destructive]:data-disabled:text-muted-foreground data-[variant=destructive]:data-disabled:*:[svg]:text-muted-foreground");
38
38
  function DropdownMenuItem({ className, iconOnly = false, inset, variant = "default", ...props }) {
@@ -75,12 +75,16 @@ function DropdownMenuCommand({ icon, iconEnd = false, children, className, detai
75
75
  "aria-disabled": busy || inert || undefined,
76
76
  closeOnClick: busy ? false : props.closeOnClick,
77
77
  className: cn(className, "h-auto w-full min-w-0 items-start justify-start gap-2 text-left font-normal whitespace-normal data-disabled:pointer-events-auto"),
78
- children: (_jsxs(_Fragment, { children: [iconEnd ? null : (_jsx("span", { "aria-hidden": "true", className: "flex h-5 shrink-0 items-center justify-center text-current", children: icon })), _jsxs("span", { className: "grid min-w-0 flex-1 gap-0.5 break-words", children: [_jsx("span", { id: `${id}-label`, children: loadingLabel === undefined ? (children) : (_jsx(PendingLabel, { pending: busy, pendingLabel: loadingLabel, children: children })) }), detail ? (_jsx("span", { className: "font-label-mono text-label-mono text-muted-foreground", "data-slot": "dropdown-menu-detail", id: `${id}-detail`, children: detail })) : null, why ? (_jsx("span", { className: "text-body-sm text-muted-foreground", "data-slot": "dropdown-menu-reason", id: `${id}-reason`, children: why })) : null] }), end ? (_jsx("span", { "aria-hidden": locked || undefined, className: "ml-auto flex h-5 shrink-0 items-center gap-2 pl-3 text-muted-foreground", "data-slot": "dropdown-menu-suffix", children: end })) : null] })),
78
+ children: (_jsxs(_Fragment, { children: [iconEnd ? null : (_jsx("span", { "aria-hidden": "true", className: "flex h-5 shrink-0 items-center justify-center text-current", children: icon })), _jsxs("span", { className: "grid min-w-0 flex-1 gap-0.5 wrap-break-word", children: [_jsx("span", { id: `${id}-label`, children: loadingLabel === undefined ? (children) : (_jsx(PendingLabel, { pending: busy, pendingLabel: loadingLabel, children: children })) }), detail ? (_jsx("span", { className: "font-label-mono text-label-mono text-muted-foreground", "data-slot": "dropdown-menu-detail", id: `${id}-detail`, children: detail })) : null, why ? (_jsx("span", { className: "text-body-sm text-muted-foreground", "data-slot": "dropdown-menu-reason", id: `${id}-reason`, children: why })) : null] }), end ? (_jsx("span", { "aria-hidden": locked ? true : undefined, className: "ml-auto flex h-5 shrink-0 items-center gap-2 pl-3 text-muted-foreground", "data-slot": "dropdown-menu-suffix", children: end })) : null] })),
79
79
  };
80
- if (link !== undefined && !inert && !busy) {
81
- return _jsx(DropdownMenuLink, { ...row, label: props.label, render: link });
80
+ const linkElement = link ??
81
+ (React.isValidElement(props.render) && props.render.props.href !== undefined
82
+ ? props.render
83
+ : undefined);
84
+ if (linkElement !== undefined && !inert && !busy) {
85
+ return _jsx(DropdownMenuLink, { ...row, label: props.label, render: linkElement });
82
86
  }
83
- return (_jsx(DropdownMenuItem, { "data-slot": "dropdown-menu-item", "data-nc-ui": "", "data-locked": locked || undefined, ...props, ...row, disabled: inert, onClick: busy ? undefined : onClick }));
87
+ return (_jsx(DropdownMenuItem, { "data-slot": "dropdown-menu-item", "data-nc-ui": "", "data-locked": locked ? true : undefined, ...props, ...row, disabled: inert, onClick: busy ? undefined : onClick }));
84
88
  }
85
89
  function DropdownMenuSub({ ...props }) {
86
90
  return _jsx(MenuPrimitive.SubmenuRoot, { "data-slot": "dropdown-menu-sub", ...props });
@@ -30,9 +30,9 @@ export const EMPTY_ART_NAMES = [
30
30
  */
31
31
  export function approveEmptyArt(imported) {
32
32
  // SAFETY: the map holds one entry per EMPTY_ART_NAMES name, each the address of that name's imported picture; approving those addresses is this function's job, and the brand has no runtime value.
33
+ // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- Object.fromEntries types its keys as string and EmptyArt is a brand with no runtime value; the map has one entry per EMPTY_ART_NAMES name.
33
34
  return Object.fromEntries(EMPTY_ART_NAMES.map((name) => {
34
35
  const asset = imported[name];
35
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- an image import is a URL string or Next's StaticImageData depending on the bundler; only typeof tells them apart.
36
36
  return [name, typeof asset === "string" ? asset : asset.src];
37
37
  }));
38
38
  }
@@ -41,7 +41,7 @@ function TitleAndLine({ description, headingLevel, title, }) {
41
41
  return (_jsxs("div", { className: "grid justify-items-center gap-2", children: [_jsx(EmptyTitle, { children: _jsx(SectionHeading, { level: headingLevel, children: title }) }), _jsx(EmptyDescription, { children: description })] }));
42
42
  }
43
43
  function DocsLink({ command }) {
44
- return (_jsx("div", { className: "text-muted-foreground [&_[data-slot=button]]:h-5 [&_[data-slot=button]]:gap-0.5 [&_[data-slot=button]]:px-0! [&_[data-slot=button]]:text-body-sm [&_[data-slot=button]]:font-normal [&_[data-slot=button]]:text-current [&_[data-slot=button]:hover]:text-foreground [&_[data-slot=button]_svg]:size-4!", children: _jsx(PageCommandButton, { command: command, size: "xs", variant: "link" }) }));
44
+ return (_jsx("div", { className: "text-muted-foreground **:data-[slot=button]:h-5 **:data-[slot=button]:gap-0.5 **:data-[slot=button]:px-0! **:data-[slot=button]:text-body-sm **:data-[slot=button]:font-normal **:data-[slot=button]:text-current [&_[data-slot=button]:hover]:text-foreground [&_[data-slot=button]_svg]:size-4!", children: _jsx(PageCommandButton, { command: command, size: "xs", variant: "link" }) }));
45
45
  }
46
46
  function FailedRead({ headingLevel, message, reference, scope, }) {
47
47
  const actions = useRef(null);
@@ -50,5 +50,5 @@ function FailedRead({ headingLevel, message, reference, scope, }) {
50
50
  actions.current?.querySelector("button, a[href]")?.focus();
51
51
  }, [scope]);
52
52
  const body = bodyBeyondTitle(message);
53
- return (_jsxs(Empty, { "data-empty-state": "failed", scope: scope, tone: "error", children: [_jsxs(EmptyHeader, { className: "gap-2", children: [_jsx(EmptyMedia, { variant: "error", children: _jsx(OctagonAlertIcon, { "aria-hidden": "true" }) }), _jsxs("div", { className: "grid min-w-0 gap-2", "data-message-code": message.code, role: "status", children: [_jsx(EmptyTitle, { className: "font-normal break-words text-current", children: _jsx(SectionHeading, { level: headingLevel, children: message.title }) }), body ? (_jsx(EmptyDescription, { className: "break-words text-current", children: body })) : null] }), reference ? (_jsx(Disclosure, { className: "[&_summary]:text-current [&_summary:hover]:text-current", label: reference.label, children: _jsxs("div", { className: "flex min-w-0 items-center justify-center gap-1", "data-empty-reference": true, children: [_jsx("code", { className: "min-w-0 font-mono text-label-mono break-all", children: reference.value }), _jsx(CopyButton, { copiedLabel: reference.copiedLabel, copyFailedLabel: reference.copyFailedLabel, copyLabel: reference.copyLabel, size: "icon-xs", value: reference.value })] }) })) : null] }), message.actions.length > 0 ? (_jsx(EmptyContent, { "data-empty-state-action": true, ref: actions, children: message.actions.slice(0, 2).map((action) => (_jsx(PageCommandButton, { command: action, variant: "outline" }, action.label))) })) : null] }));
53
+ return (_jsxs(Empty, { "data-empty-state": "failed", scope: scope, tone: "error", children: [_jsxs(EmptyHeader, { className: "gap-2", children: [_jsx(EmptyMedia, { variant: "error", children: _jsx(OctagonAlertIcon, { "aria-hidden": "true" }) }), _jsxs("div", { className: "grid min-w-0 gap-2", "data-message-code": message.code, role: "status", children: [_jsx(EmptyTitle, { className: "font-normal wrap-break-word text-current", children: _jsx(SectionHeading, { level: headingLevel, children: message.title }) }), body ? (_jsx(EmptyDescription, { className: "wrap-break-word text-current", children: body })) : null] }), reference ? (_jsx(Disclosure, { className: "[&_summary]:text-current [&_summary:hover]:text-current", label: reference.label, children: _jsxs("div", { className: "flex min-w-0 items-center justify-center gap-1", "data-empty-reference": true, children: [_jsx("code", { className: "min-w-0 font-mono text-label-mono break-all", children: reference.value }), _jsx(CopyButton, { copiedLabel: reference.copiedLabel, copyFailedLabel: reference.copyFailedLabel, copyLabel: reference.copyLabel, size: "icon-xs", value: reference.value })] }) })) : null] }), message.actions.length > 0 ? (_jsx(EmptyContent, { "data-empty-state-action": true, ref: actions, children: message.actions.slice(0, 2).map((action) => (_jsx(PageCommandButton, { command: action, variant: "outline" }, action.label))) })) : null] }));
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entry-scene.d.ts","sourceRoot":"","sources":["../../src/components/entry-scene.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAItE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,EAAE,SAAS,CAAC;IACpB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wGAAwG;IACxG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAA0B,EAC1B,SAAS,EACT,OAAO,EACP,WAAiB,EACjB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAiB,EACjB,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+BAwBjB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,IAAY,EACZ,SAAS,EACT,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAWA;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAEhG;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAmB,EACnB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG;IAC5B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,+BAYA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAaA;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAeA"}
1
+ {"version":3,"file":"entry-scene.d.ts","sourceRoot":"","sources":["../../src/components/entry-scene.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAKtE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,EAAE,SAAS,CAAC;IACpB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wGAAwG;IACxG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAA0B,EAC1B,SAAS,EACT,OAAO,EACP,WAAiB,EACjB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAiB,EACjB,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+BAwBjB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,IAAY,EACZ,SAAS,EACT,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAUA;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAEhG;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAmB,EACnB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG;IAC5B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,+BAYA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAaA;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAeA"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "../lib/utils.js";
3
+ import { cssVariables } from "../lib/css-variables.js";
3
4
  /**
4
5
  * Nadia's entry screen, contained: the approved picture of the surface behind,
5
6
  * the wordmark at the upper left, Nadia's ribbon and her words centred as one
@@ -26,9 +27,7 @@ export function EntryScene({ aspectRatio = "1220 / 800", minHeight, picture, pic
26
27
  * translation needs, so nothing below it moves between stages.
27
28
  */
28
29
  export function EntryMessage({ lines, live = false, className, children, }) {
29
- return (_jsx("p", { className: cn("nc-entry-message", className), role: live ? "status" : undefined,
30
- // SAFETY: CSSProperties lists only standard properties; React sets each `--` custom property key here through style.setProperty.
31
- style: lines ? { "--entry-message-lines": lines } : undefined, children: children }));
30
+ return (_jsx("p", { className: cn("nc-entry-message", className), role: live ? "status" : undefined, style: lines ? cssVariables({ "--entry-message-lines": lines }) : undefined, children: children }));
32
31
  }
33
32
  export function EntryActions({ className, children }) {
34
33
  return _jsx("div", { className: cn("nc-entry-actions", className), children: children });
@@ -106,16 +106,16 @@ function FieldError({ className, children, errors, size = "default", ...props })
106
106
  return null;
107
107
  }
108
108
  const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];
109
- if (uniqueErrors?.length == 1) {
109
+ if (uniqueErrors?.length === 1) {
110
110
  return uniqueErrors[0]?.message;
111
111
  }
112
112
  return (_jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
113
- // eslint-disable-next-line product-message/raw-text -- a field's validation messages come from the form's schema, worded by the product, and stay with their field
113
+ // oxlint-disable-next-line nadicodeai/raw-error-text -- a field's validation messages come from the form's schema, worded by the product, and stay with their field
114
114
  (error) => error?.message && _jsx("li", { children: error.message }, error.message)) }));
115
115
  }, [children, errors]);
116
116
  if (!content) {
117
117
  return null;
118
118
  }
119
- return (_jsxs("div", { role: "alert", "aria-atomic": "true", "data-slot": "field-error", "data-size": size, className: cn("flex items-start gap-2 text-label-sm leading-5 font-normal text-destructive data-[size=lg]:text-base data-[size=lg]:leading-6", className), ...props, children: [_jsx(OctagonAlertIcon, { "aria-hidden": "true", className: "mt-0.5 size-4 shrink-0 in-data-[size=lg]:mt-1" }), _jsx("div", { className: "min-w-0", children: content })] }));
119
+ return (_jsxs("div", { role: "alert", "aria-atomic": "true", "data-slot": "field-error", "data-size": size, className: cn("flex items-start gap-2 text-label-sm leading-5 font-normal text-destructive data-[size=lg]:text-base/6 ", className), ...props, children: [_jsx(OctagonAlertIcon, { "aria-hidden": "true", className: "mt-0.5 size-4 shrink-0 in-data-[size=lg]:mt-1" }), _jsx("div", { className: "min-w-0", children: content })] }));
120
120
  }
121
121
  export { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, FieldLegend, FieldSeparator, FieldSet, FieldContent, FieldTitle, };
@@ -1 +1 @@
1
- {"version":3,"file":"file-diff.d.ts","sourceRoot":"","sources":["../../src/components/file-diff.tsx"],"names":[],"mappings":"AAMA,UAAU,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAYD;;;;;;;;;;;;;;GAcG;AACH,iBAAS,QAAQ,CAAC,EAChB,UAAoB,EACpB,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAW,EACX,YAAwB,EACxB,YAAoD,EACpD,GAAG,KAAK,EACT,EAAE,aAAa,+BAkCf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"file-diff.d.ts","sourceRoot":"","sources":["../../src/components/file-diff.tsx"],"names":[],"mappings":"AAMA,UAAU,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAgBD;;;;;;;;;;;;;;GAcG;AACH,iBAAS,QAAQ,CAAC,EAChB,UAAoB,EACpB,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAW,EACX,YAAwB,EACxB,YAA6B,EAC7B,GAAG,KAAK,EACT,EAAE,aAAa,+BAkCf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -11,6 +11,9 @@ const MARK = {
11
11
  ...DIFF_MARK,
12
12
  context: "",
13
13
  };
14
+ function unchangedLines(count) {
15
+ return `${count} unchanged lines`;
16
+ }
14
17
  /**
15
18
  * A file's before and after, line by line.
16
19
  *
@@ -26,8 +29,8 @@ const MARK = {
26
29
  * @access Each changed line carries its added or removed label in screen-reader text; the plus and
27
30
  * minus marks are hidden.
28
31
  */
29
- function FileDiff({ addedLabel = "Added", after, before, className, context = 3, removedLabel = "Removed", skippedLabel = (count) => `${count} unchanged lines`, ...props }) {
32
+ function FileDiff({ addedLabel = "Added", after, before, className, context = 3, removedLabel = "Removed", skippedLabel = unchangedLines, ...props }) {
30
33
  const diff = useMemo(() => lineDiff(before, after, context), [after, before, context]);
31
- return (_jsx("div", { className: cn("overflow-hidden rounded-sm border border-border bg-recessed font-code text-code", className), "data-slot": "file-diff", ...props, children: diff.lines.map((line, index) => line.kind === "skipped" ? (_jsx("div", { className: "px-2.5 py-0.5 text-muted-foreground select-none", children: `… ${skippedLabel(line.count)}` }, index)) : (_jsxs("div", { className: cn("grid grid-cols-[1.25rem_minmax(0,1fr)] pr-2.5", ROW[line.kind]), "data-kind": line.kind, children: [_jsx("span", { "aria-hidden": "true", className: "text-center select-none", children: MARK[line.kind] }), line.kind !== "context" ? (_jsx("span", { className: "sr-only", children: line.kind === "added" ? addedLabel : removedLabel })) : null, _jsx("span", { className: "break-words whitespace-pre-wrap", children: line.text || " " })] }, index))) }));
34
+ return (_jsx("div", { className: cn("overflow-hidden rounded-sm border border-border bg-recessed font-code text-code", className), "data-slot": "file-diff", ...props, children: diff.lines.map((line, index) => line.kind === "skipped" ? (_jsx("div", { className: "px-2.5 py-0.5 text-muted-foreground select-none", children: `… ${skippedLabel(line.count)}` }, index)) : (_jsxs("div", { className: cn("grid grid-cols-[1.25rem_minmax(0,1fr)] pr-2.5", ROW[line.kind]), "data-kind": line.kind, children: [_jsx("span", { "aria-hidden": "true", className: "text-center select-none", children: MARK[line.kind] }), line.kind !== "context" ? (_jsx("span", { className: "sr-only", children: line.kind === "added" ? addedLabel : removedLabel })) : null, _jsx("span", { className: "wrap-break-word whitespace-pre-wrap", children: line.text || " " })] }, index))) }));
32
35
  }
33
36
  export { FileDiff };
@@ -44,7 +44,7 @@ declare function FooterInner({ className, variant, width, ...props }: React.Comp
44
44
  variant?: "flat" | "mega";
45
45
  width?: FooterWidth;
46
46
  }): React.JSX.Element;
47
- declare function FooterBrand({ className, ...props }: React.ComponentProps<"a">): React.JSX.Element;
47
+ declare function FooterBrand({ className, children, ...props }: React.ComponentProps<"a">): React.JSX.Element;
48
48
  declare function FooterIdentity({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
49
49
  declare function FooterNav({ className, ...props }: React.ComponentProps<"nav">): React.JSX.Element;
50
50
  declare function FooterMeta({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../src/components/footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtC;;;;;;;;;;;;;GAaG;AACH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAgB,EAChB,KAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,qBAcrF;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAgB,EAChB,KAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,qBAalF;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAWtE;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQzE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWtE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQrE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAQzE;AAID,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW1E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW3E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW1E;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW7E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAY3E;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,cAAc,GACf,CAAC"}
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../src/components/footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtC;;;;;;;;;;;;;GAaG;AACH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAgB,EAChB,KAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,qBAcrF;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAgB,EAChB,KAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,qBAalF;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAahF;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQzE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWtE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQrE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAQzE;AAID,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW1E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW3E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW1E;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW7E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAY3E;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,cAAc,GACf,CAAC"}
@@ -18,10 +18,10 @@ function Footer({ className, variant = "flat", width = "content", ...props }) {
18
18
  return (_jsx("footer", { "data-slot": "footer", "data-variant": variant, "data-width": width, className: cn("dark relative isolate overflow-hidden border-t border-border bg-card py-12 text-foreground [&_a]:no-underline", width === "content" && "px-6", className), ...props }));
19
19
  }
20
20
  function FooterInner({ className, variant = "flat", width = "content", ...props }) {
21
- return (_jsx("div", { "data-slot": "footer-inner", className: cn("relative z-10", width === "page" ? "nc-page" : "mx-auto w-full max-w-[1200px]", variant === "mega" ? "grid gap-8" : "flex flex-wrap items-center justify-between gap-4", className), ...props }));
21
+ return (_jsx("div", { "data-slot": "footer-inner", className: cn("relative z-10", width === "page" ? "nc-page" : "mx-auto w-full max-w-nadicode-content-max", variant === "mega" ? "grid gap-8" : "flex flex-wrap items-center justify-between gap-4", className), ...props }));
22
22
  }
23
- function FooterBrand({ className, ...props }) {
24
- return (_jsx("a", { "data-slot": "footer-brand", className: cn("inline-flex items-center gap-2.5 text-sm font-semibold text-foreground [&_img]:block [&_img]:h-6 [&_img]:w-auto [&_svg]:block [&_svg]:h-6 [&_svg]:w-auto", className), ...props }));
23
+ function FooterBrand({ className, children, ...props }) {
24
+ return (_jsx("a", { "data-slot": "footer-brand", className: cn("inline-flex items-center gap-2.5 text-sm font-semibold text-foreground [&_img]:block [&_img]:h-6 [&_img]:w-auto [&_svg]:block [&_svg]:h-6 [&_svg]:w-auto", className), ...props, children: children }));
25
25
  }
26
26
  function FooterIdentity({ className, ...props }) {
27
27
  return (_jsx("p", { "data-slot": "footer-identity", className: cn("text-body-md m-0 max-w-[52ch] text-muted-foreground", className), ...props }));
@@ -1 +1 @@
1
- {"version":3,"file":"form-dialog.d.ts","sourceRoot":"","sources":["../../src/components/form-dialog.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,wBAAwB,CAAC;AAG1E,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAC5C,gGAAgG;IAChG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,WAAW,EACX,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,UAAiB,EACjB,OAAO,EACP,OAAe,GAChB,EAAE,eAAe,+BAmBjB;AAED,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,MAAM,EACN,MAAM,EACN,WAAmB,EACnB,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,mBAAmB,+BAwBrB"}
1
+ {"version":3,"file":"form-dialog.d.ts","sourceRoot":"","sources":["../../src/components/form-dialog.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,wBAAwB,CAAC;AAG1E,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAC5C,gGAAgG;IAChG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,WAAW,EACX,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,UAAiB,EACjB,OAAO,EACP,OAAe,GAChB,EAAE,eAAe,+BAmBjB;AAED,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,MAAM,EACN,MAAM,EACN,WAAmB,EACnB,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,mBAAmB,+BAwBrB"}
@@ -2,6 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Button } from "./button.js";
4
4
  import { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "./dialog.js";
5
+ import { Form } from "./form.js";
5
6
  import { WaitingLine } from "./waiting-line.js";
6
7
  import { FormSubmitButton } from "../internal/form-submit.js";
7
8
  import { guardUnsaved } from "../internal/unsaved-guard.js";
@@ -24,5 +25,5 @@ export function FormDialog({ open, onOpenChange, onOpenChangeComplete, title, de
24
25
  }
25
26
  export function FormDialogForm({ cancelLabel, submit, notice, destructive = false, children, ...form }) {
26
27
  const pending = submit.pending === true;
27
- return (_jsxs("form", { className: "flex min-h-0 flex-col gap-(--dialog-gap)", "aria-busy": pending || undefined, "data-slot": "form-dialog-form", ...form, children: [_jsx(DialogBody, { children: children }), notice, _jsxs(DialogFooter, { className: "relative", children: [_jsx(DialogClose, { disabled: pending, render: _jsx(Button, { type: "button", variant: "outline" }), children: cancelLabel }), _jsx(FormSubmitButton, { destructive: destructive, submit: submit }), _jsx(WaitingLine, { className: "absolute inset-x-nadicode-sm bottom-1 w-auto", decorative: true, waiting: pending })] })] }));
28
+ return (_jsxs(Form, { className: "flex min-h-0 flex-col gap-(--dialog-gap)", "aria-busy": pending || undefined, "data-slot": "form-dialog-form", ...form, children: [_jsx(DialogBody, { children: children }), notice, _jsxs(DialogFooter, { className: "relative", children: [_jsx(DialogClose, { disabled: pending, render: _jsx(Button, { type: "button", variant: "outline" }), children: cancelLabel }), _jsx(FormSubmitButton, { destructive: destructive, submit: submit }), _jsx(WaitingLine, { className: "absolute inset-x-nadicode-sm bottom-1 w-auto", decorative: true, waiting: pending })] })] }));
28
29
  }
@@ -1,7 +1,7 @@
1
1
  import type { ComponentProps, ReactNode } from "react";
2
2
  import { SheetContent } from "./sheet.js";
3
3
  import { type FormProps } from "../internal/form-submit.js";
4
- import { type UnsavedGuard } from "../internal/unsaved-guard.js";
4
+ import type { UnsavedGuard } from "../internal/unsaved-guard.js";
5
5
  export type { FormProps, FormSubmit } from "../internal/form-submit.js";
6
6
  /** What a form surface is told by its caller, whether it draws a drawer or a dialog. */
7
7
  export type FormSurfaceProps = {
@@ -24,18 +24,16 @@ export type FormSurfaceProps = {
24
24
  unsaved?: UnsavedGuard;
25
25
  };
26
26
  /**
27
- * Why this is a drawer and not a dialog: "catalog" chooses from a list too long
28
- * for a dialog, and is reached through `CatalogDrawer`; "steps" sets something
29
- * up over several steps, with a wait. A form of a few fields is a `FormDialog`,
30
- * and a record already on screen edits inside its row.
27
+ * Why this is a drawer and not a dialog: it sets something up over several
28
+ * steps, with a wait; a list too long for a dialog is a `CatalogDrawer`. A form
29
+ * of a few fields is a `FormDialog`, and a record already on screen edits
30
+ * inside its row.
31
31
  */
32
- export type FormDrawerProps = FormSurfaceProps & ({
33
- job: "catalog";
34
- } | {
32
+ export type FormDrawerProps = FormSurfaceProps & {
35
33
  job: "steps";
36
34
  /** "Step 2 of 3", worded by the product, drawn over the title, which stays the job's name. */
37
35
  progress: string;
38
- });
36
+ };
39
37
  /**
40
38
  * The right-side sheet for a catalogue or a setup in steps, at one width.
41
39
  *
@@ -1 +1 @@
1
- {"version":3,"file":"form-drawer.d.ts","sourceRoot":"","sources":["../../src/components/form-drawer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,EAGL,YAAY,EAKb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG3E,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpE,wFAAwF;AACxF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,qFAAqF;IACrF,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,6FAA6F;IAC7F,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,QAAQ,EAAE,SAAS,CAAC;IACpB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;IACnE,2EAA2E;IAC3E,UAAU,CAAC,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/D,qGAAqG;IACrG,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAC5C,CACI;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,GAClB;IACE,GAAG,EAAE,OAAO,CAAC;IACb,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,CAAC;CAClB,CACJ,CAAC;AAEJ;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BA0ChD;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,+BAW5E;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/C,qEAAqE;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,iIAAiI;AACjI,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAW3E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,+BAqB3F"}
1
+ {"version":3,"file":"form-drawer.d.ts","sourceRoot":"","sources":["../../src/components/form-drawer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,EAAc,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpE,wFAAwF;AACxF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,qFAAqF;IACrF,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,6FAA6F;IAC7F,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,QAAQ,EAAE,SAAS,CAAC;IACpB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;IACnE,2EAA2E;IAC3E,UAAU,CAAC,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/D,qGAAqG;IACrG,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,GAAG,EAAE,OAAO,CAAC;IACb,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BAEhD;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,+BAW5E;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/C,qEAAqE;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,iIAAiI;AACjI,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAW3E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,+BAqB3F"}
@@ -1,10 +1,11 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Button } from "./button.js";
4
- import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "./sheet.js";
4
+ import { Form } from "./form.js";
5
+ import { SheetClose, SheetFooter } from "./sheet.js";
5
6
  import { WaitingLine } from "./waiting-line.js";
7
+ import { FormDrawerFrame } from "../internal/form-drawer-frame.js";
6
8
  import { FormSubmitButton } from "../internal/form-submit.js";
7
- import { guardUnsaved } from "../internal/unsaved-guard.js";
8
9
  import { cn } from "../lib/utils.js";
9
10
  /**
10
11
  * The right-side sheet for a catalogue or a setup in steps, at one width.
@@ -17,8 +18,7 @@ import { cn } from "../lib/utils.js";
17
18
  * @access "Trap focus inside the sheet while it’s open and return focus to the trigger row on close so keyboard users keep their place in the list." (https://vercel.com/geist/sheet) "Provide a visible close button labeled `Close` (or an icon button with `aria-label="Close"`) since clicking outside doesn’t dismiss." (https://vercel.com/geist/sheet) "Announce the sheet with `aria-labelledby` pointing at the title; pair it with `aria-describedby` only when the body is short and load-bearing." (https://vercel.com/geist/sheet) Ours: a modal dialog named by its title; focus returns to the opener on close, or to `finalFocus` when the opener is gone. The step is read before the title.
18
19
  */
19
20
  export function FormDrawer(props) {
20
- const { open, onOpenChange, onOpenChangeComplete, title, description, closeLabel, children, initialFocus, finalFocus = true, unsaved, } = props;
21
- return (_jsx(Sheet, { modal: true, open: open, onOpenChange: guardUnsaved(onOpenChange, unsaved), onOpenChangeComplete: onOpenChangeComplete, children: _jsxs(SheetContent, { closeLabel: closeLabel, finalFocus: finalFocus, initialFocus: initialFocus, side: "right", children: [_jsxs(SheetHeader, { className: "pr-12", children: [props.job === "steps" ? (_jsx("p", { className: "font-label-mono text-label-mono text-muted-foreground", "data-slot": "form-drawer-progress", children: props.progress })) : null, _jsx(SheetTitle, { className: "break-words", children: title }), description ? _jsx(SheetDescription, { children: description }) : null] }), children] }) }));
21
+ return _jsx(FormDrawerFrame, { ...props });
22
22
  }
23
23
  /** The part of the drawer that scrolls between its title and its footer. */
24
24
  export function FormDrawerBody({ className, ...props }) {
@@ -35,5 +35,5 @@ export function FormDrawerFooter({ cancel, children }) {
35
35
  */
36
36
  export function FormDrawerForm({ cancelLabel, submit, notice, children, ...form }) {
37
37
  const pending = submit.pending === true;
38
- return (_jsxs("form", { "aria-busy": pending || undefined, className: "flex min-h-0 flex-1 flex-col", "data-slot": "form-drawer-form", ...form, children: [_jsx(FormDrawerBody, { children: children }), notice ? (_jsx("div", { className: "px-nadicode-lg pt-nadicode-md", "data-slot": "form-drawer-notice", children: notice })) : null, _jsxs(FormDrawerFooter, { cancel: { label: cancelLabel, disabled: pending }, children: [_jsx(FormSubmitButton, { submit: submit }), _jsx(WaitingLine, { className: "absolute inset-x-0 top-0", decorative: true, waiting: pending })] })] }));
38
+ return (_jsxs(Form, { "aria-busy": pending || undefined, className: "flex min-h-0 flex-1 flex-col", "data-slot": "form-drawer-form", ...form, children: [_jsx(FormDrawerBody, { children: children }), notice ? (_jsx("div", { className: "px-nadicode-lg pt-nadicode-md", "data-slot": "form-drawer-notice", children: notice })) : null, _jsxs(FormDrawerFooter, { cancel: { label: cancelLabel, disabled: pending }, children: [_jsx(FormSubmitButton, { submit: submit }), _jsx(WaitingLine, { className: "absolute inset-x-0 top-0", decorative: true, waiting: pending })] })] }));
39
39
  }
@@ -0,0 +1,26 @@
1
+ import type { ComponentProps, ReactElement } from "react";
2
+ /**
3
+ * A form that never puts its fields in the address.
4
+ *
5
+ * @family Inputs
6
+ * @when Ours: every form in a product. A form submitted by `onSubmit`, by a URL `action` or by a
7
+ * server action is a `Form`, so the browser's own submit before hydration posts its fields.
8
+ * @instead Ours: a save with a footer is `FormDialogForm`, `FormDrawerForm`, `RowEditForm` or a
9
+ * `SettingsSection`, each of which renders a `Form`. A search or a filter that belongs in the
10
+ * address is a link or a router push, never a form that submits by GET.
11
+ * @behaviour Ours: a native `form` with every prop it is given, except `method`, which it sets
12
+ * itself: `post`, or none when `action` is a function, since React submits a function action
13
+ * itself and refuses a `method` beside it. Until React attaches `onSubmit`, a press of the
14
+ * submit button posts the form to its `action` or to the page; without `post` the browser would
15
+ * write every named field, a password included, into the URL.
16
+ * @words Ours: the form has no words of its own; its fields and its submit button carry them.
17
+ * @access Ours: a native `form`. The caller names it with `aria-labelledby` when it is a landmark,
18
+ * and the submit button is a real `type="submit"` button.
19
+ */
20
+ export declare function Form({ action, ...props }: Omit<ComponentProps<"form">, "method">): import("react").JSX.Element;
21
+ /**
22
+ * The submit button of the form whose `id` is `form`, for a command that sits
23
+ * outside that form, such as a `NoticeBanner` action: the command draws it.
24
+ */
25
+ export declare function submitsForm(form: string): ReactElement;
26
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,+BAIhF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEtD"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * A form that never puts its fields in the address.
4
+ *
5
+ * @family Inputs
6
+ * @when Ours: every form in a product. A form submitted by `onSubmit`, by a URL `action` or by a
7
+ * server action is a `Form`, so the browser's own submit before hydration posts its fields.
8
+ * @instead Ours: a save with a footer is `FormDialogForm`, `FormDrawerForm`, `RowEditForm` or a
9
+ * `SettingsSection`, each of which renders a `Form`. A search or a filter that belongs in the
10
+ * address is a link or a router push, never a form that submits by GET.
11
+ * @behaviour Ours: a native `form` with every prop it is given, except `method`, which it sets
12
+ * itself: `post`, or none when `action` is a function, since React submits a function action
13
+ * itself and refuses a `method` beside it. Until React attaches `onSubmit`, a press of the
14
+ * submit button posts the form to its `action` or to the page; without `post` the browser would
15
+ * write every named field, a password included, into the URL.
16
+ * @words Ours: the form has no words of its own; its fields and its submit button carry them.
17
+ * @access Ours: a native `form`. The caller names it with `aria-labelledby` when it is a landmark,
18
+ * and the submit button is a real `type="submit"` button.
19
+ */
20
+ export function Form({ action, ...props }) {
21
+ return (_jsx("form", { ...props, action: action, method: typeof action === "function" ? undefined : "post" }));
22
+ }
23
+ /**
24
+ * The submit button of the form whose `id` is `form`, for a command that sits
25
+ * outside that form, such as a `NoticeBanner` action: the command draws it.
26
+ */
27
+ export function submitsForm(form) {
28
+ return _jsx("button", { form: form, type: "submit" });
29
+ }
@@ -9,9 +9,9 @@ const GAUGE_BOX_CLASS = {
9
9
  lg: "size-32",
10
10
  };
11
11
  const GAUGE_VALUE_CLASS = {
12
- sm: "text-[11px] leading-5 font-medium",
12
+ sm: "text-[11px]/5 font-medium",
13
13
  md: "nc-type-label-lg font-medium",
14
- lg: "text-[32px] leading-5 font-semibold",
14
+ lg: "text-[32px]/5 font-semibold",
15
15
  };
16
16
  const GAUGE_ARC_CLASS = {
17
17
  default: "stroke-primary",
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-heatmap.d.ts","sourceRoot":"","sources":["../../../src/components/heatmap/calendar-heatmap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC;AAWvD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItE,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,KAAK,iBAAiB,GAAG,QAAQ,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAUF,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAuVF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAClE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,eAAe,GAAI,uRAsB7B,oBAAoB,iTAgItB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACvE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5D,CAAC;AAEF,eAAO,MAAM,oBAAoB;2KAe9B,yBAAyB,GAAG;QAC7B,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;KAC9C;;CA8EA,CAAC;AAGF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IACxF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAChB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,SAAS,CAAC;IAChB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC;CAC/E,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,wIAUjC,wBAAwB,gCA4H1B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAExE,eAAO,MAAM,qBAAqB,GAAI,yBAAyB,0BAA0B,gCAMxF,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IACxF,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,MAAM,GAAG,MAAM,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,SAAS,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,mDAMjC,wBAAwB,gCAoB1B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/F,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,uDAKnC,0BAA0B,gCA+C5B,CAAC"}
1
+ {"version":3,"file":"calendar-heatmap.d.ts","sourceRoot":"","sources":["../../../src/components/heatmap/calendar-heatmap.tsx"],"names":[],"mappings":"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"}