@nizivo/react 0.0.0-stage → 0.2.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 (461) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +120 -2
  3. package/THIRD_PARTY_NOTICES +68 -0
  4. package/dist/_engines/react-aria/dialog.client.js +126 -0
  5. package/dist/_engines/react-aria/dom-allowlist.js +19 -0
  6. package/dist/_engines/react-aria/dom.js +31 -0
  7. package/dist/_engines/react-aria/drawer.client.js +8 -0
  8. package/dist/_engines/react-aria/file-upload.client.js +50 -0
  9. package/dist/_engines/react-aria/locale.client.js +13 -0
  10. package/dist/_engines/react-aria/menu.client.js +229 -0
  11. package/dist/_engines/react-aria/open-state.client.js +53 -0
  12. package/dist/_engines/react-aria/outside-press.client.js +61 -0
  13. package/dist/_engines/react-aria/overlay.client.js +46 -0
  14. package/dist/_engines/react-aria/popover.client.js +148 -0
  15. package/dist/_engines/react-aria/popup.client.js +153 -0
  16. package/dist/_engines/react-aria/select.client.js +180 -0
  17. package/dist/_engines/react-aria/tabs.client.js +95 -0
  18. package/dist/_engines/react-aria/toast.client.js +38 -0
  19. package/dist/_engines/react-aria/tooltip.client.js +72 -0
  20. package/dist/_internal/cx.js +11 -0
  21. package/dist/_internal/data-status.d.ts +3 -0
  22. package/dist/_internal/data-status.js +13 -0
  23. package/dist/_internal/engine-part.d.ts +1 -0
  24. package/dist/_internal/field.js +20 -0
  25. package/dist/_internal/glyphs.js +87 -0
  26. package/dist/_internal/keys.js +62 -0
  27. package/dist/_internal/modal.client.js +54 -0
  28. package/dist/_internal/nested-focus.js +33 -0
  29. package/dist/_internal/overlay.d.ts +9 -0
  30. package/dist/_virtual/_rolldown/runtime.js +13 -0
  31. package/dist/alert/alert-dismiss.client.d.ts +32 -0
  32. package/dist/alert/alert-dismiss.client.js +38 -0
  33. package/dist/alert/alert.d.ts +28 -0
  34. package/dist/alert/alert.js +44 -0
  35. package/dist/alert/index.d.ts +3 -0
  36. package/dist/alert/index.js +3 -0
  37. package/dist/app-shell/app-shell.d.ts +24 -0
  38. package/dist/app-shell/app-shell.js +56 -0
  39. package/dist/app-shell/index.d.ts +2 -0
  40. package/dist/app-shell/index.js +1 -0
  41. package/dist/augment.d.ts +13 -0
  42. package/dist/augment.js +0 -0
  43. package/dist/avatar/avatar.d.ts +96 -0
  44. package/dist/avatar/avatar.js +94 -0
  45. package/dist/avatar/index.d.ts +2 -0
  46. package/dist/avatar/index.js +1 -0
  47. package/dist/badge/badge.d.ts +19 -0
  48. package/dist/badge/badge.js +22 -0
  49. package/dist/badge/index.d.ts +2 -0
  50. package/dist/badge/index.js +1 -0
  51. package/dist/banner/banner-dismiss.client.d.ts +32 -0
  52. package/dist/banner/banner-dismiss.client.js +38 -0
  53. package/dist/banner/banner.d.ts +34 -0
  54. package/dist/banner/banner.js +47 -0
  55. package/dist/banner/index.d.ts +3 -0
  56. package/dist/banner/index.js +3 -0
  57. package/dist/breadcrumb/breadcrumb.d.ts +46 -0
  58. package/dist/breadcrumb/breadcrumb.js +46 -0
  59. package/dist/breadcrumb/breadcrumb.parts.d.ts +6 -0
  60. package/dist/breadcrumb/breadcrumb.parts.js +9 -0
  61. package/dist/breadcrumb/index.d.ts +3 -0
  62. package/dist/breadcrumb/index.js +3 -0
  63. package/dist/button/button.d.ts +55 -0
  64. package/dist/button/button.js +62 -0
  65. package/dist/button/index.d.ts +2 -0
  66. package/dist/button/index.js +1 -0
  67. package/dist/card/card.d.ts +64 -0
  68. package/dist/card/card.js +62 -0
  69. package/dist/card/card.parts.d.ts +6 -0
  70. package/dist/card/card.parts.js +14 -0
  71. package/dist/card/index.d.ts +3 -0
  72. package/dist/card/index.js +3 -0
  73. package/dist/checkbox/checkbox.client.d.ts +37 -0
  74. package/dist/checkbox/checkbox.client.js +81 -0
  75. package/dist/checkbox/index.d.ts +2 -0
  76. package/dist/checkbox/index.js +1 -0
  77. package/dist/chip-group/chip-group.client.d.ts +88 -0
  78. package/dist/chip-group/chip-group.client.js +157 -0
  79. package/dist/chip-group/index.d.ts +2 -0
  80. package/dist/chip-group/index.js +1 -0
  81. package/dist/choice-card/choice-card.client.d.ts +66 -0
  82. package/dist/choice-card/choice-card.client.js +138 -0
  83. package/dist/choice-card/index.d.ts +2 -0
  84. package/dist/choice-card/index.js +1 -0
  85. package/dist/config/config.client.d.ts +24 -0
  86. package/dist/config/config.client.js +33 -0
  87. package/dist/config/index.d.ts +2 -0
  88. package/dist/config/index.js +1 -0
  89. package/dist/container/container.d.ts +13 -0
  90. package/dist/container/container.js +16 -0
  91. package/dist/container/index.d.ts +2 -0
  92. package/dist/container/index.js +1 -0
  93. package/dist/contracts/details.d.ts +13 -0
  94. package/dist/contracts/details.js +9 -0
  95. package/dist/contracts/index.d.ts +5 -0
  96. package/dist/contracts/index.js +5 -0
  97. package/dist/contracts/merge-props.d.ts +16 -0
  98. package/dist/contracts/merge-props.js +76 -0
  99. package/dist/contracts/render.d.ts +17 -0
  100. package/dist/contracts/render.js +43 -0
  101. package/dist/contracts/state.d.ts +42 -0
  102. package/dist/contracts/state.js +42 -0
  103. package/dist/css/alert.css +2 -0
  104. package/dist/css/app-shell.css +2 -0
  105. package/dist/css/avatar.css +2 -0
  106. package/dist/css/badge.css +2 -0
  107. package/dist/css/banner.css +2 -0
  108. package/dist/css/base.css +2 -0
  109. package/dist/css/breadcrumb.css +2 -0
  110. package/dist/css/button.css +2 -0
  111. package/dist/css/card.css +2 -0
  112. package/dist/css/checkbox.css +2 -0
  113. package/dist/css/chip-group.css +2 -0
  114. package/dist/css/choice-card.css +2 -0
  115. package/dist/css/container.css +2 -0
  116. package/dist/css/delta.css +2 -0
  117. package/dist/css/dialog.css +2 -0
  118. package/dist/css/drawer.css +2 -0
  119. package/dist/css/empty-state.css +2 -0
  120. package/dist/css/field.css +2 -0
  121. package/dist/css/fieldset.css +2 -0
  122. package/dist/css/file-upload.css +2 -0
  123. package/dist/css/form.css +2 -0
  124. package/dist/css/grid.css +2 -0
  125. package/dist/css/heading.css +2 -0
  126. package/dist/css/icon-button.css +2 -0
  127. package/dist/css/image.css +2 -0
  128. package/dist/css/inline-error.css +2 -0
  129. package/dist/css/inline.css +2 -0
  130. package/dist/css/input.css +2 -0
  131. package/dist/css/kbd.css +2 -0
  132. package/dist/css/kpi-tile.css +2 -0
  133. package/dist/css/menu.css +2 -0
  134. package/dist/css/meter.css +2 -0
  135. package/dist/css/metric.css +2 -0
  136. package/dist/css/mobile-tab-bar.css +2 -0
  137. package/dist/css/mobile-top-bar.css +2 -0
  138. package/dist/css/motion.css +2 -0
  139. package/dist/css/native-select.css +2 -0
  140. package/dist/css/nav-item.css +2 -0
  141. package/dist/css/number-value.css +2 -0
  142. package/dist/css/page-header.css +2 -0
  143. package/dist/css/pagination.css +2 -0
  144. package/dist/css/password-input.css +2 -0
  145. package/dist/css/popover.css +2 -0
  146. package/dist/css/progress-bar.css +2 -0
  147. package/dist/css/progress-ring.css +2 -0
  148. package/dist/css/radio-group.css +2 -0
  149. package/dist/css/ranked-list.css +2 -0
  150. package/dist/css/search-field.css +2 -0
  151. package/dist/css/segmented-control.css +2 -0
  152. package/dist/css/select.css +2 -0
  153. package/dist/css/separator.css +2 -0
  154. package/dist/css/sidebar.css +2 -0
  155. package/dist/css/skeleton.css +2 -0
  156. package/dist/css/split.css +2 -0
  157. package/dist/css/stack.css +2 -0
  158. package/dist/css/sticky-bar.css +2 -0
  159. package/dist/css/switch.css +2 -0
  160. package/dist/css/tab-nav.css +2 -0
  161. package/dist/css/table-selection.css +2 -0
  162. package/dist/css/table.css +2 -0
  163. package/dist/css/tabs.css +2 -0
  164. package/dist/css/text.css +2 -0
  165. package/dist/css/textarea.css +2 -0
  166. package/dist/css/toast.css +2 -0
  167. package/dist/css/tooltip.css +2 -0
  168. package/dist/css/top-bar.css +2 -0
  169. package/dist/css/trend-card.css +2 -0
  170. package/dist/delta/delta.d.ts +32 -0
  171. package/dist/delta/delta.js +50 -0
  172. package/dist/delta/index.d.ts +2 -0
  173. package/dist/delta/index.js +1 -0
  174. package/dist/dialog/dialog.client.d.ts +25 -0
  175. package/dist/dialog/dialog.client.js +145 -0
  176. package/dist/dialog/dialog.contract.d.ts +97 -0
  177. package/dist/dialog/dialog.parts.d.ts +6 -0
  178. package/dist/dialog/dialog.parts.js +15 -0
  179. package/dist/dialog/index.d.ts +5 -0
  180. package/dist/dialog/index.js +3 -0
  181. package/dist/drawer/drawer.client.d.ts +25 -0
  182. package/dist/drawer/drawer.client.js +154 -0
  183. package/dist/drawer/drawer.contract.d.ts +98 -0
  184. package/dist/drawer/drawer.parts.d.ts +6 -0
  185. package/dist/drawer/drawer.parts.js +16 -0
  186. package/dist/drawer/index.d.ts +5 -0
  187. package/dist/drawer/index.js +3 -0
  188. package/dist/empty-state/empty-state.d.ts +18 -0
  189. package/dist/empty-state/empty-state.js +32 -0
  190. package/dist/empty-state/index.d.ts +2 -0
  191. package/dist/empty-state/index.js +1 -0
  192. package/dist/field/field-scope.client.d.ts +50 -0
  193. package/dist/field/field-scope.client.js +212 -0
  194. package/dist/field/field-static.d.ts +122 -0
  195. package/dist/field/field-static.js +159 -0
  196. package/dist/field/field.d.ts +5 -0
  197. package/dist/field/field.js +53 -0
  198. package/dist/field/index.d.ts +4 -0
  199. package/dist/field/index.js +4 -0
  200. package/dist/fieldset/fieldset.d.ts +36 -0
  201. package/dist/fieldset/fieldset.js +63 -0
  202. package/dist/fieldset/index.d.ts +2 -0
  203. package/dist/fieldset/index.js +1 -0
  204. package/dist/file-upload/file-upload.client.d.ts +9 -0
  205. package/dist/file-upload/file-upload.client.js +406 -0
  206. package/dist/file-upload/file-upload.contract.d.ts +112 -0
  207. package/dist/file-upload/index.d.ts +3 -0
  208. package/dist/file-upload/index.js +1 -0
  209. package/dist/file-upload/seam.d.ts +1 -0
  210. package/dist/form/form.client.d.ts +38 -0
  211. package/dist/form/form.client.js +127 -0
  212. package/dist/form/form.d.ts +36 -0
  213. package/dist/form/form.js +29 -0
  214. package/dist/form/index.d.ts +4 -0
  215. package/dist/form/index.js +4 -0
  216. package/dist/form/submit-button.client.d.ts +20 -0
  217. package/dist/form/submit-button.client.js +19 -0
  218. package/dist/grid/grid.d.ts +38 -0
  219. package/dist/grid/grid.js +28 -0
  220. package/dist/grid/index.d.ts +2 -0
  221. package/dist/grid/index.js +1 -0
  222. package/dist/heading/heading.d.ts +30 -0
  223. package/dist/heading/heading.js +26 -0
  224. package/dist/heading/index.d.ts +2 -0
  225. package/dist/heading/index.js +1 -0
  226. package/dist/i18n/format-label.d.ts +24 -0
  227. package/dist/i18n/format-label.js +19 -0
  228. package/dist/i18n/index.d.ts +2 -0
  229. package/dist/i18n/index.js +1 -0
  230. package/dist/icon-button/icon-button-static.d.ts +23 -0
  231. package/dist/icon-button/icon-button-static.js +83 -0
  232. package/dist/icon-button/icon-button.client.js +29 -0
  233. package/dist/icon-button/icon-button.contract.d.ts +89 -0
  234. package/dist/icon-button/icon-button.d.ts +5 -0
  235. package/dist/icon-button/icon-button.js +21 -0
  236. package/dist/icon-button/index.d.ts +4 -0
  237. package/dist/icon-button/index.js +3 -0
  238. package/dist/image/image.d.ts +28 -0
  239. package/dist/image/image.js +24 -0
  240. package/dist/image/index.d.ts +2 -0
  241. package/dist/image/index.js +1 -0
  242. package/dist/index.d.ts +174 -0
  243. package/dist/index.js +96 -0
  244. package/dist/inline/index.d.ts +2 -0
  245. package/dist/inline/index.js +1 -0
  246. package/dist/inline/inline.d.ts +16 -0
  247. package/dist/inline/inline.js +14 -0
  248. package/dist/inline-error/index.d.ts +2 -0
  249. package/dist/inline-error/index.js +1 -0
  250. package/dist/inline-error/inline-error.d.ts +17 -0
  251. package/dist/inline-error/inline-error.js +33 -0
  252. package/dist/input/index.d.ts +2 -0
  253. package/dist/input/index.js +1 -0
  254. package/dist/input/input.client.d.ts +39 -0
  255. package/dist/input/input.client.js +82 -0
  256. package/dist/kbd/index.d.ts +2 -0
  257. package/dist/kbd/index.js +1 -0
  258. package/dist/kbd/kbd.d.ts +19 -0
  259. package/dist/kbd/kbd.js +68 -0
  260. package/dist/kpi-tile/index.d.ts +2 -0
  261. package/dist/kpi-tile/index.js +1 -0
  262. package/dist/kpi-tile/kpi-tile.d.ts +30 -0
  263. package/dist/kpi-tile/kpi-tile.js +48 -0
  264. package/dist/locales/en-US.d.ts +77 -0
  265. package/dist/locales/en-US.js +83 -0
  266. package/dist/menu/index.d.ts +5 -0
  267. package/dist/menu/index.js +3 -0
  268. package/dist/menu/menu.client.d.ts +14 -0
  269. package/dist/menu/menu.client.js +152 -0
  270. package/dist/menu/menu.contract.d.ts +152 -0
  271. package/dist/menu/menu.parts.d.ts +6 -0
  272. package/dist/menu/menu.parts.js +17 -0
  273. package/dist/meter/index.d.ts +2 -0
  274. package/dist/meter/index.js +1 -0
  275. package/dist/meter/meter.d.ts +43 -0
  276. package/dist/meter/meter.js +59 -0
  277. package/dist/metric/index.d.ts +2 -0
  278. package/dist/metric/index.js +1 -0
  279. package/dist/metric/metric.d.ts +72 -0
  280. package/dist/metric/metric.js +116 -0
  281. package/dist/mobile-tab-bar/index.d.ts +4 -0
  282. package/dist/mobile-tab-bar/index.js +4 -0
  283. package/dist/mobile-tab-bar/mobile-tab-bar-inset.client.js +38 -0
  284. package/dist/mobile-tab-bar/mobile-tab-bar-more.client.d.ts +26 -0
  285. package/dist/mobile-tab-bar/mobile-tab-bar-more.client.js +60 -0
  286. package/dist/mobile-tab-bar/mobile-tab-bar.d.ts +39 -0
  287. package/dist/mobile-tab-bar/mobile-tab-bar.js +54 -0
  288. package/dist/mobile-tab-bar/mobile-tab-bar.parts.d.ts +6 -0
  289. package/dist/mobile-tab-bar/mobile-tab-bar.parts.js +9 -0
  290. package/dist/mobile-top-bar/index.d.ts +2 -0
  291. package/dist/mobile-top-bar/index.js +1 -0
  292. package/dist/mobile-top-bar/mobile-top-bar.d.ts +17 -0
  293. package/dist/mobile-top-bar/mobile-top-bar.js +31 -0
  294. package/dist/motion/count-up.client.d.ts +39 -0
  295. package/dist/motion/count-up.client.js +109 -0
  296. package/dist/motion/index.d.ts +2 -0
  297. package/dist/motion/index.js +1 -0
  298. package/dist/native-select/index.d.ts +2 -0
  299. package/dist/native-select/index.js +1 -0
  300. package/dist/native-select/native-select.d.ts +43 -0
  301. package/dist/native-select/native-select.js +56 -0
  302. package/dist/nav-item/index.d.ts +2 -0
  303. package/dist/nav-item/index.js +1 -0
  304. package/dist/nav-item/nav-item.d.ts +35 -0
  305. package/dist/nav-item/nav-item.js +50 -0
  306. package/dist/number-value/index.d.ts +2 -0
  307. package/dist/number-value/index.js +1 -0
  308. package/dist/number-value/number-value.d.ts +25 -0
  309. package/dist/number-value/number-value.js +26 -0
  310. package/dist/page-header/index.d.ts +2 -0
  311. package/dist/page-header/index.js +1 -0
  312. package/dist/page-header/page-header.d.ts +19 -0
  313. package/dist/page-header/page-header.js +39 -0
  314. package/dist/pagination/index.d.ts +2 -0
  315. package/dist/pagination/index.js +1 -0
  316. package/dist/pagination/pagination.d.ts +74 -0
  317. package/dist/pagination/pagination.js +136 -0
  318. package/dist/password-input/index.d.ts +2 -0
  319. package/dist/password-input/index.js +1 -0
  320. package/dist/password-input/password-input.client.d.ts +52 -0
  321. package/dist/password-input/password-input.client.js +106 -0
  322. package/dist/popover/index.d.ts +5 -0
  323. package/dist/popover/index.js +3 -0
  324. package/dist/popover/popover.client.d.ts +20 -0
  325. package/dist/popover/popover.client.js +113 -0
  326. package/dist/popover/popover.contract.d.ts +88 -0
  327. package/dist/popover/popover.parts.d.ts +6 -0
  328. package/dist/popover/popover.parts.js +13 -0
  329. package/dist/progress-bar/index.d.ts +2 -0
  330. package/dist/progress-bar/index.js +1 -0
  331. package/dist/progress-bar/progress-bar.d.ts +34 -0
  332. package/dist/progress-bar/progress-bar.js +55 -0
  333. package/dist/progress-ring/index.d.ts +2 -0
  334. package/dist/progress-ring/index.js +1 -0
  335. package/dist/progress-ring/progress-ring.d.ts +38 -0
  336. package/dist/progress-ring/progress-ring.js +67 -0
  337. package/dist/radio-group/index.d.ts +3 -0
  338. package/dist/radio-group/index.js +3 -0
  339. package/dist/radio-group/radio-group.client.d.ts +22 -0
  340. package/dist/radio-group/radio-group.client.js +70 -0
  341. package/dist/radio-group/radio-group.d.ts +28 -0
  342. package/dist/radio-group/radio-group.js +35 -0
  343. package/dist/ranked-list/index.d.ts +3 -0
  344. package/dist/ranked-list/index.js +3 -0
  345. package/dist/ranked-list/ranked-list.d.ts +85 -0
  346. package/dist/ranked-list/ranked-list.js +153 -0
  347. package/dist/ranked-list/ranked-list.parts.d.ts +6 -0
  348. package/dist/ranked-list/ranked-list.parts.js +10 -0
  349. package/dist/search-field/index.d.ts +2 -0
  350. package/dist/search-field/index.js +1 -0
  351. package/dist/search-field/search-field.client.d.ts +55 -0
  352. package/dist/search-field/search-field.client.js +136 -0
  353. package/dist/segmented-control/index.d.ts +3 -0
  354. package/dist/segmented-control/index.js +3 -0
  355. package/dist/segmented-control/segmented-control.client.d.ts +61 -0
  356. package/dist/segmented-control/segmented-control.client.js +156 -0
  357. package/dist/segmented-control/segmented-control.parts.d.ts +6 -0
  358. package/dist/segmented-control/segmented-control.parts.js +9 -0
  359. package/dist/select/index.d.ts +5 -0
  360. package/dist/select/index.js +3 -0
  361. package/dist/select/select.client.d.ts +12 -0
  362. package/dist/select/select.client.js +152 -0
  363. package/dist/select/select.contract.d.ts +119 -0
  364. package/dist/select/select.parts.d.ts +6 -0
  365. package/dist/select/select.parts.js +15 -0
  366. package/dist/separator/index.d.ts +2 -0
  367. package/dist/separator/index.js +1 -0
  368. package/dist/separator/separator.d.ts +26 -0
  369. package/dist/separator/separator.js +23 -0
  370. package/dist/sidebar/index.d.ts +4 -0
  371. package/dist/sidebar/index.js +4 -0
  372. package/dist/sidebar/sidebar-item.client.d.ts +10 -0
  373. package/dist/sidebar/sidebar-item.client.js +55 -0
  374. package/dist/sidebar/sidebar.d.ts +45 -0
  375. package/dist/sidebar/sidebar.js +62 -0
  376. package/dist/sidebar/sidebar.parts.d.ts +6 -0
  377. package/dist/sidebar/sidebar.parts.js +11 -0
  378. package/dist/skeleton/index.d.ts +2 -0
  379. package/dist/skeleton/index.js +1 -0
  380. package/dist/skeleton/skeleton.d.ts +20 -0
  381. package/dist/skeleton/skeleton.js +19 -0
  382. package/dist/split/index.d.ts +3 -0
  383. package/dist/split/index.js +3 -0
  384. package/dist/split/split.d.ts +28 -0
  385. package/dist/split/split.js +33 -0
  386. package/dist/split/split.parts.d.ts +6 -0
  387. package/dist/split/split.parts.js +10 -0
  388. package/dist/stack/index.d.ts +2 -0
  389. package/dist/stack/index.js +1 -0
  390. package/dist/stack/stack.d.ts +17 -0
  391. package/dist/stack/stack.js +14 -0
  392. package/dist/sticky-bar/index.d.ts +2 -0
  393. package/dist/sticky-bar/index.js +1 -0
  394. package/dist/sticky-bar/sticky-bar.d.ts +16 -0
  395. package/dist/sticky-bar/sticky-bar.js +26 -0
  396. package/dist/styles.css +595 -0
  397. package/dist/switch/index.d.ts +2 -0
  398. package/dist/switch/index.js +1 -0
  399. package/dist/switch/switch.client.d.ts +33 -0
  400. package/dist/switch/switch.client.js +63 -0
  401. package/dist/tab-nav/index.d.ts +3 -0
  402. package/dist/tab-nav/index.js +3 -0
  403. package/dist/tab-nav/tab-nav.d.ts +36 -0
  404. package/dist/tab-nav/tab-nav.js +47 -0
  405. package/dist/tab-nav/tab-nav.parts.d.ts +6 -0
  406. package/dist/tab-nav/tab-nav.parts.js +9 -0
  407. package/dist/table/index.d.ts +3 -0
  408. package/dist/table/index.js +3 -0
  409. package/dist/table/table.d.ts +101 -0
  410. package/dist/table/table.js +121 -0
  411. package/dist/table/table.parts.d.ts +6 -0
  412. package/dist/table/table.parts.js +18 -0
  413. package/dist/table-selection/index.d.ts +3 -0
  414. package/dist/table-selection/index.js +3 -0
  415. package/dist/table-selection/table-selection.client.d.ts +14 -0
  416. package/dist/table-selection/table-selection.client.js +84 -0
  417. package/dist/table-selection/table-selection.d.ts +34 -0
  418. package/dist/table-selection/table-selection.js +50 -0
  419. package/dist/tabs/index.d.ts +4 -0
  420. package/dist/tabs/index.js +3 -0
  421. package/dist/tabs/tabs.client.d.ts +8 -0
  422. package/dist/tabs/tabs.client.js +68 -0
  423. package/dist/tabs/tabs.contract.d.ts +89 -0
  424. package/dist/tabs/tabs.parts.d.ts +6 -0
  425. package/dist/tabs/tabs.parts.js +11 -0
  426. package/dist/text/index.d.ts +2 -0
  427. package/dist/text/index.js +1 -0
  428. package/dist/text/text.d.ts +32 -0
  429. package/dist/text/text.js +17 -0
  430. package/dist/textarea/index.d.ts +2 -0
  431. package/dist/textarea/index.js +1 -0
  432. package/dist/textarea/textarea.client.d.ts +18 -0
  433. package/dist/textarea/textarea.client.js +31 -0
  434. package/dist/theme-script/index.d.ts +2 -0
  435. package/dist/theme-script/index.js +1 -0
  436. package/dist/theme-script/theme-script.d.ts +43 -0
  437. package/dist/theme-script/theme-script.js +46 -0
  438. package/dist/toast/index.d.ts +4 -0
  439. package/dist/toast/index.js +3 -0
  440. package/dist/toast/seam.d.ts +2 -0
  441. package/dist/toast/store.d.ts +19 -0
  442. package/dist/toast/store.js +136 -0
  443. package/dist/toast/toast.contract.d.ts +56 -0
  444. package/dist/toast/toaster.client.d.ts +10 -0
  445. package/dist/toast/toaster.client.js +305 -0
  446. package/dist/tooltip/index.d.ts +5 -0
  447. package/dist/tooltip/index.js +3 -0
  448. package/dist/tooltip/tooltip.client.d.ts +12 -0
  449. package/dist/tooltip/tooltip.client.js +51 -0
  450. package/dist/tooltip/tooltip.contract.d.ts +60 -0
  451. package/dist/tooltip/tooltip.parts.d.ts +6 -0
  452. package/dist/tooltip/tooltip.parts.js +10 -0
  453. package/dist/top-bar/index.d.ts +2 -0
  454. package/dist/top-bar/index.js +1 -0
  455. package/dist/top-bar/top-bar.d.ts +17 -0
  456. package/dist/top-bar/top-bar.js +35 -0
  457. package/dist/trend-card/index.d.ts +2 -0
  458. package/dist/trend-card/index.js +1 -0
  459. package/dist/trend-card/trend-card.d.ts +34 -0
  460. package/dist/trend-card/trend-card.js +74 -0
  461. package/package.json +447 -3
@@ -0,0 +1,25 @@
1
+ import { DialogBodyProps, DialogCloseProps, DialogDescriptionProps, DialogFooterProps, DialogPopupProps, DialogRootProps, DialogTitleProps, DialogTriggerProps } from "./dialog.contract.js";
2
+ import { JSX } from "react";
3
+ //#region src/dialog/dialog.client.d.ts
4
+ export declare function DialogRoot({ returnFocus, ...props }: DialogRootProps): JSX.Element;
5
+ /**
6
+ * Without `render`, its own `<button>`: `nz-hit-target` gives it the 44 px coarse-pointer hit area of
7
+ * every standalone pressable, and dialog.css gives that bare button a 24 x 24 px minimum (WCAG 2.2
8
+ * 2.5.8; M27). A composed Button or IconButton keeps its own size and classes.
9
+ */
10
+ export declare function DialogTrigger({ className, render, ...rest }: DialogTriggerProps): JSX.Element;
11
+ export declare function DialogPopup({ role, size, backdrop, container, className, children, ...rest }: DialogPopupProps): JSX.Element;
12
+ export declare function DialogTitle({ level, className, render, ...rest }: DialogTitleProps): JSX.Element;
13
+ export declare function DialogDescription({ className, render, ...rest }: DialogDescriptionProps): JSX.Element;
14
+ /** The only scroller inside the popup. */
15
+ export declare function DialogBody({ className, render, ...rest }: DialogBodyProps): JSX.Element;
16
+ export declare function DialogFooter({ className, render, ...rest }: DialogFooterProps): JSX.Element;
17
+ /**
18
+ * With `render` or `children`, the consumer's button. With neither, an IconButton (tertiary, `md`)
19
+ * showing the core close glyph (§12.3, §14.2), named by `labels.close`. Its markup is the IconButton
20
+ * element's (`iconButtonElement`, icon-button-static.tsx since M31), written out: importing that
21
+ * builder cost the Dialog entry about 280 B gzip against its 31 KiB cap. An overlay-lane case
22
+ * compares the two.
23
+ */
24
+ export declare function DialogClose({ className, render, children, labels: labelsProp, ...rest }: DialogCloseProps): JSX.Element;
25
+ //#endregion
@@ -0,0 +1,145 @@
1
+ "use client";
2
+ import { cx } from "../_internal/cx.js";
3
+ import { renderElement, toRenderFn } from "../contracts/render.js";
4
+ import { useLabels } from "../config/config.client.js";
5
+ import { CloseGlyph } from "../_internal/glyphs.js";
6
+ import { ModalNestingScope, initialFocus, useModalNesting } from "../_internal/modal.client.js";
7
+ import { Close, Description, Popup, Root, Title, Trigger } from "../_engines/react-aria/dialog.client.js";
8
+ import { createContext, use } from "react";
9
+ import { jsx } from "react/jsx-runtime";
10
+ //#region src/dialog/dialog.client.tsx
11
+ /** `Dialog.Root`'s `returnFocus`, for its Popup. */
12
+ const ReturnFocusContext = createContext(true);
13
+ const renderDiv = toRenderFn(void 0, "div");
14
+ const renderP = toRenderFn(void 0, "p");
15
+ /** Focus on open (§12.2), from the Dialog's own slots. */
16
+ const INITIAL_FOCUS = {
17
+ dialog: initialFocus("dialog", "dialog"),
18
+ alertdialog: initialFocus("dialog", "alertdialog")
19
+ };
20
+ function DialogRoot({ returnFocus = true, ...props }) {
21
+ return /* @__PURE__ */ jsx(ReturnFocusContext, {
22
+ value: returnFocus,
23
+ children: /* @__PURE__ */ jsx(Root, { ...props })
24
+ });
25
+ }
26
+ /**
27
+ * Without `render`, its own `<button>`: `nz-hit-target` gives it the 44 px coarse-pointer hit area of
28
+ * every standalone pressable, and dialog.css gives that bare button a 24 x 24 px minimum (WCAG 2.2
29
+ * 2.5.8; M27). A composed Button or IconButton keeps its own size and classes.
30
+ */
31
+ function DialogTrigger({ className, render, ...rest }) {
32
+ return /* @__PURE__ */ jsx(Trigger, {
33
+ ...rest,
34
+ className: cx("nz-dialog-trigger", render === void 0 && "nz-hit-target", className),
35
+ "data-slot": "dialog-trigger",
36
+ render: toRenderFn(render, "button")
37
+ });
38
+ }
39
+ function DialogPopup({ role = "dialog", size = "md", backdrop, container, className, children, ...rest }) {
40
+ const { parent, nesting, childOpen } = useModalNesting();
41
+ const returnFocus = use(ReturnFocusContext);
42
+ return /* @__PURE__ */ jsx(Popup, {
43
+ ...rest,
44
+ role,
45
+ container,
46
+ backdrop: backdrop ?? parent === null,
47
+ positioner: {
48
+ className: "nz-dialog-positioner",
49
+ "data-slot": "dialog-positioner"
50
+ },
51
+ backdropProps: {
52
+ className: "nz-dialog-backdrop",
53
+ "data-slot": "dialog-backdrop"
54
+ },
55
+ contentProps: {
56
+ className: "nz-dialog-content",
57
+ "data-slot": "dialog-content"
58
+ },
59
+ initialFocus: INITIAL_FOCUS[role],
60
+ returnFocus,
61
+ className: cx("nz-dialog-popup", className),
62
+ "data-slot": "dialog-popup",
63
+ "data-size": size,
64
+ "data-nested-open": childOpen ? "" : void 0,
65
+ render: renderDiv,
66
+ children: /* @__PURE__ */ jsx(ModalNestingScope, {
67
+ parent,
68
+ nesting,
69
+ children
70
+ })
71
+ });
72
+ }
73
+ const HEADINGS = {
74
+ 2: toRenderFn(void 0, "h2"),
75
+ 3: toRenderFn(void 0, "h3"),
76
+ 4: toRenderFn(void 0, "h4"),
77
+ 5: toRenderFn(void 0, "h5"),
78
+ 6: toRenderFn(void 0, "h6")
79
+ };
80
+ function DialogTitle({ level = 2, className, render, ...rest }) {
81
+ return /* @__PURE__ */ jsx(Title, {
82
+ ...rest,
83
+ level,
84
+ className: cx("nz-dialog-title", className),
85
+ "data-slot": "dialog-title",
86
+ render: render === void 0 ? HEADINGS[level] : toRenderFn(render, `h${level}`)
87
+ });
88
+ }
89
+ function DialogDescription({ className, render, ...rest }) {
90
+ return /* @__PURE__ */ jsx(Description, {
91
+ ...rest,
92
+ className: cx("nz-dialog-description", className),
93
+ "data-slot": "dialog-description",
94
+ render: render === void 0 ? renderP : toRenderFn(render, "p")
95
+ });
96
+ }
97
+ /** The only scroller inside the popup. */
98
+ function DialogBody({ className, render, ...rest }) {
99
+ return renderElement("div", render, {}, {
100
+ ...rest,
101
+ className: cx("nz-dialog-body", className),
102
+ "data-slot": "dialog-body"
103
+ });
104
+ }
105
+ function DialogFooter({ className, render, ...rest }) {
106
+ return renderElement("div", render, {}, {
107
+ ...rest,
108
+ className: cx("nz-dialog-footer", className),
109
+ "data-slot": "dialog-footer"
110
+ });
111
+ }
112
+ /**
113
+ * With `render` or `children`, the consumer's button. With neither, an IconButton (tertiary, `md`)
114
+ * showing the core close glyph (§12.3, §14.2), named by `labels.close`. Its markup is the IconButton
115
+ * element's (`iconButtonElement`, icon-button-static.tsx since M31), written out: importing that
116
+ * builder cost the Dialog entry about 280 B gzip against its 31 KiB cap. An overlay-lane case
117
+ * compares the two.
118
+ */
119
+ function DialogClose({ className, render, children, labels: labelsProp, ...rest }) {
120
+ const labels = useLabels("dialog", labelsProp);
121
+ return /* @__PURE__ */ jsx(Close, {
122
+ ...rest,
123
+ className: cx("nz-dialog-close", className),
124
+ "data-slot": "dialog-close",
125
+ render: toRenderFn(render ?? (children === void 0 ? closeIcon(rest["aria-label"] ?? labels?.close ?? "Close") : void 0), "button"),
126
+ children
127
+ });
128
+ }
129
+ function closeIcon(label) {
130
+ return /* @__PURE__ */ jsx("button", {
131
+ type: "button",
132
+ className: "nz-icon-button nz-hit-target",
133
+ "data-variant": "tertiary",
134
+ "data-size": "md",
135
+ "aria-label": label,
136
+ children: /* @__PURE__ */ jsx("span", {
137
+ className: "nz-icon-button-icon",
138
+ "data-slot": "icon-button-icon",
139
+ "aria-hidden": "true",
140
+ children: /* @__PURE__ */ jsx(CloseGlyph, {})
141
+ })
142
+ });
143
+ }
144
+ //#endregion
145
+ export { DialogBody, DialogClose, DialogDescription, DialogFooter, DialogPopup, DialogRoot, DialogTitle, DialogTrigger };
@@ -0,0 +1,97 @@
1
+ import { RenderProp } from "../contracts/render.js";
2
+ import { ChangeDetails, OpenReason } from "../contracts/details.js";
3
+ import "../_internal/engine-part.js";
4
+ import { ReturnFocusTarget } from "../_internal/overlay.js";
5
+ import { ComponentPropsWithRef, ReactElement, ReactNode } from "react";
6
+ //#region src/dialog/dialog.contract.d.ts
7
+ /** Figma Modal `Type`: Default → `dialog`, Destructive → `alertdialog`. */
8
+ export type DialogRole = "dialog" | "alertdialog";
9
+ /** `md` is Figma's only Modal width (480 px); `sm` (400) and `lg` (640) are provisional. */
10
+ export type DialogSize = "sm" | "md" | "lg";
11
+ export type DialogTitleLevel = 2 | 3 | 4 | 5 | 6;
12
+ /**
13
+ * Strings the Dialog renders (§9.3 rule 7, §16.4). `close` is the accessible name of the default
14
+ * `Dialog.Close` (an IconButton showing the close glyph), set through that part's `labels`.
15
+ * Engine-owned with React Aria (not overridable): `dismiss`, the visually hidden "Dismiss" button
16
+ * rendered inside a dismissable dialog.
17
+ */
18
+ export interface DialogLabels {
19
+ /** @default 'Close' */
20
+ close: string;
21
+ dismiss: string;
22
+ }
23
+ export interface DialogRootProps {
24
+ open?: boolean;
25
+ defaultOpen?: boolean;
26
+ /** `details.reason` is `'unknown'` with React Aria, which reports no cause. */
27
+ onOpenChange?: (open: boolean, details: ChangeDetails<OpenReason>) => void;
28
+ /**
29
+ * Where focus goes when the dialog closes (§12.2 Focus return). `true` returns it to the trigger
30
+ * (the element that opened the dialog), else to the trigger of the overlay it was opened from (a
31
+ * Menu button, after a Menu item opened it), else it stays on `<body>` and development builds warn.
32
+ * An element ref, or a function returning an element, goes first while that element is on the page;
33
+ * `false` leaves focus where the browser puts it, for an app that moves it itself.
34
+ * @default true
35
+ */
36
+ returnFocus?: ReturnFocusTarget;
37
+ children: ReactNode;
38
+ }
39
+ export interface DialogTriggerState {
40
+ open: boolean;
41
+ pressed: boolean;
42
+ focusVisible: boolean;
43
+ disabled: boolean;
44
+ }
45
+ export interface DialogPopupState {
46
+ entering: boolean;
47
+ exiting: boolean;
48
+ }
49
+ export interface DialogCloseState {
50
+ pressed: boolean;
51
+ focusVisible: boolean;
52
+ disabled: boolean;
53
+ }
54
+ export interface DialogTriggerProps extends Omit<ComponentPropsWithRef<"button">, "children"> {
55
+ /** Must render a `<button>`, for example `render={<Button variant="critical">Delete</Button>}`. */
56
+ render?: RenderProp<DialogTriggerState>;
57
+ children?: ReactNode;
58
+ }
59
+ export interface DialogPopupProps extends Omit<ComponentPropsWithRef<"div">, "children" | "role"> {
60
+ /** `alertdialog` disables outside-press dismissal. @default 'dialog' */
61
+ role?: DialogRole;
62
+ /** @default 'md' */
63
+ size?: DialogSize;
64
+ /** The scrim element. Defaults to on for the root modal and off for nested modals. */
65
+ backdrop?: boolean;
66
+ /** Portal container. Defaults to the parent overlay, else `document.body` (§12.1 L2). */
67
+ container?: Element | null;
68
+ children: ReactNode;
69
+ }
70
+ export interface DialogTitleProps extends Omit<ComponentPropsWithRef<"h2">, "id"> {
71
+ /** @default 2 */
72
+ level?: DialogTitleLevel;
73
+ render?: RenderProp<Record<string, never>>;
74
+ }
75
+ export interface DialogDescriptionProps extends Omit<ComponentPropsWithRef<"p">, "id"> {
76
+ render?: RenderProp<Record<string, never>>;
77
+ }
78
+ export interface DialogBodyProps extends ComponentPropsWithRef<"div"> {
79
+ render?: RenderProp<Record<string, never>>;
80
+ }
81
+ export interface DialogFooterProps extends ComponentPropsWithRef<"div"> {
82
+ render?: RenderProp<Record<string, never>>;
83
+ }
84
+ export interface DialogCloseProps extends Omit<ComponentPropsWithRef<"button">, "children"> {
85
+ /**
86
+ * Must render a `<button>`, for example `render={<Button>Cancel</Button>}`. With neither `render`
87
+ * nor `children`, the part is an IconButton showing the close glyph, named by `labels.close`, which
88
+ * sits in the popup's top corner when it is a direct child of `Dialog.Popup` (§12.3).
89
+ */
90
+ render?: RenderProp<DialogCloseState>;
91
+ /** Text content, rendered in a plain `<button>`; leave it out for the default IconButton. */
92
+ children?: ReactNode;
93
+ /** The default IconButton's accessible name; an `aria-label` you pass wins. */
94
+ labels?: Partial<Pick<DialogLabels, "close">>;
95
+ }
96
+ //#endregion
97
+ export type { OpenReason };
@@ -0,0 +1,6 @@
1
+ import { DialogBody, DialogClose, DialogDescription, DialogFooter, DialogPopup, DialogRoot, DialogTitle, DialogTrigger } from "./dialog.client.js";
2
+ declare namespace dialog_parts_d_exports {
3
+ export { DialogBody as Body, DialogClose as Close, DialogDescription as Description, DialogFooter as Footer, DialogPopup as Popup, DialogRoot as Root, DialogTitle as Title, DialogTrigger as Trigger };
4
+ }
5
+ //#endregion
6
+ export { DialogBody as Body, DialogClose as Close, DialogDescription as Description, DialogFooter as Footer, DialogPopup as Popup, DialogRoot as Root, DialogTitle as Title, DialogTrigger as Trigger, dialog_parts_d_exports };
@@ -0,0 +1,15 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import { DialogBody, DialogClose, DialogDescription, DialogFooter, DialogPopup, DialogRoot, DialogTitle, DialogTrigger } from "./dialog.client.js";
3
+ //#region src/dialog/dialog.parts.ts
4
+ var dialog_parts_exports = /* @__PURE__ */ __exportAll({
5
+ Body: () => DialogBody,
6
+ Close: () => DialogClose,
7
+ Description: () => DialogDescription,
8
+ Footer: () => DialogFooter,
9
+ Popup: () => DialogPopup,
10
+ Root: () => DialogRoot,
11
+ Title: () => DialogTitle,
12
+ Trigger: () => DialogTrigger
13
+ });
14
+ //#endregion
15
+ export { DialogBody as Body, DialogClose as Close, DialogDescription as Description, DialogFooter as Footer, DialogPopup as Popup, DialogRoot as Root, DialogTitle as Title, DialogTrigger as Trigger, dialog_parts_exports };
@@ -0,0 +1,5 @@
1
+ import { OpenReason } from "../contracts/details.js";
2
+ import { DialogBodyProps, DialogCloseProps, DialogCloseState, DialogDescriptionProps, DialogFooterProps, DialogLabels, DialogPopupProps, DialogPopupState, DialogRole, DialogRootProps, DialogSize, DialogTitleLevel, DialogTitleProps, DialogTriggerProps, DialogTriggerState } from "./dialog.contract.js";
3
+ import { DialogBody, DialogClose, DialogDescription, DialogFooter, DialogPopup, DialogRoot, DialogTitle, DialogTrigger } from "./dialog.client.js";
4
+ import { dialog_parts_d_exports } from "./dialog.parts.js";
5
+ export { dialog_parts_d_exports as Dialog, DialogBody, type DialogBodyProps, DialogClose, type DialogCloseProps, type DialogCloseState, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, type DialogLabels, DialogPopup, type DialogPopupProps, type DialogPopupState, type DialogRole, DialogRoot, type DialogRootProps, type DialogSize, DialogTitle, type DialogTitleLevel, type DialogTitleProps, DialogTrigger, type DialogTriggerProps, type DialogTriggerState, type OpenReason };
@@ -0,0 +1,3 @@
1
+ import { DialogBody, DialogClose, DialogDescription, DialogFooter, DialogPopup, DialogRoot, DialogTitle, DialogTrigger } from "./dialog.client.js";
2
+ import { dialog_parts_exports } from "./dialog.parts.js";
3
+ export { dialog_parts_exports as Dialog, DialogBody, DialogClose, DialogDescription, DialogFooter, DialogPopup, DialogRoot, DialogTitle, DialogTrigger };
@@ -0,0 +1,25 @@
1
+ import { DrawerBodyProps, DrawerCloseProps, DrawerDescriptionProps, DrawerFooterProps, DrawerHeaderProps, DrawerPopupProps, DrawerRootProps, DrawerTitleProps, DrawerTriggerProps } from "./drawer.contract.js";
2
+ import { JSX } from "react";
3
+ //#region src/drawer/drawer.client.d.ts
4
+ export declare function DrawerRoot({ returnFocus, ...props }: DrawerRootProps): JSX.Element;
5
+ /**
6
+ * Without `render`, its own `<button>` with `nz-hit-target` and, from drawer.css, a 24 x 24 px
7
+ * minimum (WCAG 2.2 2.5.8, as the Dialog's, M27). A composed Button or IconButton keeps its own size.
8
+ */
9
+ export declare function DrawerTrigger({ className, render, ...rest }: DrawerTriggerProps): JSX.Element;
10
+ export declare function DrawerPopup({ side, backdrop, container, className, children, ...rest }: DrawerPopupProps): JSX.Element;
11
+ /** Figma's Header frame: the title, an optional description and badges, above a 1 px rule. */
12
+ export declare function DrawerHeader({ className, render, ...rest }: DrawerHeaderProps): JSX.Element;
13
+ export declare function DrawerTitle({ level, className, render, ...rest }: DrawerTitleProps): JSX.Element;
14
+ export declare function DrawerDescription({ className, render, ...rest }: DrawerDescriptionProps): JSX.Element;
15
+ /** The only scroller inside the drawer; it fills the height between the header and the footer. */
16
+ export declare function DrawerBody({ className, render, ...rest }: DrawerBodyProps): JSX.Element;
17
+ /** Figma's Footer frame: actions that share its width, above a 1 px rule. */
18
+ export declare function DrawerFooter({ className, render, ...rest }: DrawerFooterProps): JSX.Element;
19
+ /**
20
+ * With `render` or `children`, the consumer's button. With neither, an IconButton (tertiary, `md`)
21
+ * showing the core close glyph, named by `labels.close`: the IconButton element's markup written out,
22
+ * as `Dialog.Close` does, so the Drawer entry does not pull in IconButton's tooltip chain.
23
+ */
24
+ export declare function DrawerClose({ className, render, children, labels: labelsProp, ...rest }: DrawerCloseProps): JSX.Element;
25
+ //#endregion
@@ -0,0 +1,154 @@
1
+ "use client";
2
+ import { cx } from "../_internal/cx.js";
3
+ import { renderElement, toRenderFn } from "../contracts/render.js";
4
+ import { useLabels } from "../config/config.client.js";
5
+ import { CloseGlyph } from "../_internal/glyphs.js";
6
+ import { ModalNestingScope, initialFocus, useModalNesting } from "../_internal/modal.client.js";
7
+ import { Close, Description, Popup, Root, Title, Trigger } from "../_engines/react-aria/dialog.client.js";
8
+ import { useDirection } from "../_engines/react-aria/drawer.client.js";
9
+ import { createContext, use } from "react";
10
+ import { jsx } from "react/jsx-runtime";
11
+ //#region src/drawer/drawer.client.tsx
12
+ /** `Drawer.Root`'s `returnFocus`, for its Popup. */
13
+ const ReturnFocusContext = createContext(true);
14
+ const renderDiv = toRenderFn(void 0, "div");
15
+ const renderP = toRenderFn(void 0, "p");
16
+ /** A drawer is always a dialog (an alertdialog is the Dialog's job). */
17
+ const ROLE = "dialog";
18
+ /** Focus on open (§12.2): the first tabbable element in `Drawer.Body`, else the drawer itself. */
19
+ const INITIAL_FOCUS = initialFocus("drawer", ROLE);
20
+ function DrawerRoot({ returnFocus = true, ...props }) {
21
+ return /* @__PURE__ */ jsx(ReturnFocusContext, {
22
+ value: returnFocus,
23
+ children: /* @__PURE__ */ jsx(Root, { ...props })
24
+ });
25
+ }
26
+ /**
27
+ * Without `render`, its own `<button>` with `nz-hit-target` and, from drawer.css, a 24 x 24 px
28
+ * minimum (WCAG 2.2 2.5.8, as the Dialog's, M27). A composed Button or IconButton keeps its own size.
29
+ */
30
+ function DrawerTrigger({ className, render, ...rest }) {
31
+ return /* @__PURE__ */ jsx(Trigger, {
32
+ ...rest,
33
+ className: cx("nz-drawer-trigger", render === void 0 && "nz-hit-target", className),
34
+ "data-slot": "drawer-trigger",
35
+ render: toRenderFn(render, "button")
36
+ });
37
+ }
38
+ function DrawerPopup({ side = "end", backdrop, container, className, children, ...rest }) {
39
+ const { parent, nesting, childOpen } = useModalNesting();
40
+ const returnFocus = use(ReturnFocusContext);
41
+ const ltr = useDirection() === "ltr";
42
+ const physical = side === "bottom" ? side : side === "end" === ltr ? "right" : "left";
43
+ return /* @__PURE__ */ jsx(Popup, {
44
+ ...rest,
45
+ role: ROLE,
46
+ container,
47
+ backdrop: backdrop ?? parent === null,
48
+ positioner: {
49
+ className: "nz-drawer-positioner",
50
+ "data-slot": "drawer-positioner",
51
+ "data-side": physical
52
+ },
53
+ backdropProps: {
54
+ className: "nz-drawer-backdrop",
55
+ "data-slot": "drawer-backdrop"
56
+ },
57
+ contentProps: {
58
+ className: "nz-drawer-content",
59
+ "data-slot": "drawer-content"
60
+ },
61
+ initialFocus: INITIAL_FOCUS,
62
+ returnFocus,
63
+ className: cx("nz-drawer-popup", className),
64
+ "data-slot": "drawer-popup",
65
+ "data-side": physical,
66
+ "data-nested-open": childOpen ? "" : void 0,
67
+ render: renderDiv,
68
+ children: /* @__PURE__ */ jsx(ModalNestingScope, {
69
+ parent,
70
+ nesting,
71
+ children
72
+ })
73
+ });
74
+ }
75
+ /** Figma's Header frame: the title, an optional description and badges, above a 1 px rule. */
76
+ function DrawerHeader({ className, render, ...rest }) {
77
+ return renderElement("div", render, {}, {
78
+ ...rest,
79
+ className: cx("nz-drawer-header", className),
80
+ "data-slot": "drawer-header"
81
+ });
82
+ }
83
+ const HEADINGS = {
84
+ 2: toRenderFn(void 0, "h2"),
85
+ 3: toRenderFn(void 0, "h3"),
86
+ 4: toRenderFn(void 0, "h4"),
87
+ 5: toRenderFn(void 0, "h5"),
88
+ 6: toRenderFn(void 0, "h6")
89
+ };
90
+ function DrawerTitle({ level = 2, className, render, ...rest }) {
91
+ return /* @__PURE__ */ jsx(Title, {
92
+ ...rest,
93
+ level,
94
+ className: cx("nz-drawer-title", className),
95
+ "data-slot": "drawer-title",
96
+ render: render === void 0 ? HEADINGS[level] : toRenderFn(render, `h${level}`)
97
+ });
98
+ }
99
+ function DrawerDescription({ className, render, ...rest }) {
100
+ return /* @__PURE__ */ jsx(Description, {
101
+ ...rest,
102
+ className: cx("nz-drawer-description", className),
103
+ "data-slot": "drawer-description",
104
+ render: render === void 0 ? renderP : toRenderFn(render, "p")
105
+ });
106
+ }
107
+ /** The only scroller inside the drawer; it fills the height between the header and the footer. */
108
+ function DrawerBody({ className, render, ...rest }) {
109
+ return renderElement("div", render, {}, {
110
+ ...rest,
111
+ className: cx("nz-drawer-body", className),
112
+ "data-slot": "drawer-body"
113
+ });
114
+ }
115
+ /** Figma's Footer frame: actions that share its width, above a 1 px rule. */
116
+ function DrawerFooter({ className, render, ...rest }) {
117
+ return renderElement("div", render, {}, {
118
+ ...rest,
119
+ className: cx("nz-drawer-footer", className),
120
+ "data-slot": "drawer-footer"
121
+ });
122
+ }
123
+ /**
124
+ * With `render` or `children`, the consumer's button. With neither, an IconButton (tertiary, `md`)
125
+ * showing the core close glyph, named by `labels.close`: the IconButton element's markup written out,
126
+ * as `Dialog.Close` does, so the Drawer entry does not pull in IconButton's tooltip chain.
127
+ */
128
+ function DrawerClose({ className, render, children, labels: labelsProp, ...rest }) {
129
+ const labels = useLabels("drawer", labelsProp);
130
+ return /* @__PURE__ */ jsx(Close, {
131
+ ...rest,
132
+ className: cx("nz-drawer-close", className),
133
+ "data-slot": "drawer-close",
134
+ render: toRenderFn(render ?? (children === void 0 ? closeIcon(rest["aria-label"] ?? labels?.close ?? "Close") : void 0), "button"),
135
+ children
136
+ });
137
+ }
138
+ function closeIcon(label) {
139
+ return /* @__PURE__ */ jsx("button", {
140
+ type: "button",
141
+ className: "nz-icon-button nz-hit-target",
142
+ "data-variant": "tertiary",
143
+ "data-size": "md",
144
+ "aria-label": label,
145
+ children: /* @__PURE__ */ jsx("span", {
146
+ className: "nz-icon-button-icon",
147
+ "data-slot": "icon-button-icon",
148
+ "aria-hidden": "true",
149
+ children: /* @__PURE__ */ jsx(CloseGlyph, {})
150
+ })
151
+ });
152
+ }
153
+ //#endregion
154
+ export { DrawerBody, DrawerClose, DrawerDescription, DrawerFooter, DrawerHeader, DrawerPopup, DrawerRoot, DrawerTitle, DrawerTrigger };
@@ -0,0 +1,98 @@
1
+ import { RenderProp } from "../contracts/render.js";
2
+ import { ChangeDetails, OpenReason } from "../contracts/details.js";
3
+ import { ReturnFocusTarget } from "../_internal/overlay.js";
4
+ import "../dialog/dialog.contract.js";
5
+ import { ComponentPropsWithRef, ReactNode } from "react";
6
+ //#region src/drawer/drawer.contract.d.ts
7
+ /**
8
+ * The edge the drawer slides in from, in logical terms: `start` and `end` follow the writing direction
9
+ * (`end` is the right edge in a left-to-right page, as Figma draws the Drawer); `bottom` is the sheet,
10
+ * as AppShell's "More" sheet below 640 px.
11
+ */
12
+ export type DrawerSide = "start" | "end" | "bottom";
13
+ export type DrawerTitleLevel = 2 | 3 | 4 | 5 | 6;
14
+ /**
15
+ * Strings the Drawer renders (§9.3 rule 7, §16.4). `close` is the accessible name of the default
16
+ * `Drawer.Close` (an IconButton showing the close glyph), set through that part's `labels`.
17
+ * Engine-owned with React Aria (not overridable): `dismiss`, the visually hidden "Dismiss" button
18
+ * rendered inside the drawer.
19
+ */
20
+ export interface DrawerLabels {
21
+ /** @default 'Close' */
22
+ close: string;
23
+ dismiss: string;
24
+ }
25
+ export interface DrawerRootProps {
26
+ open?: boolean;
27
+ defaultOpen?: boolean;
28
+ /** `details.reason` is `'unknown'` with React Aria, which reports no cause. */
29
+ onOpenChange?: (open: boolean, details: ChangeDetails<OpenReason>) => void;
30
+ /**
31
+ * Where focus goes when the drawer closes (§12.2 Focus return), as `Dialog.Root`'s: the trigger,
32
+ * else the trigger of the overlay it was opened from, else `<body>` with a development warning; an
33
+ * element ref or a function returning one goes first; `false` leaves focus alone.
34
+ * @default true
35
+ */
36
+ returnFocus?: ReturnFocusTarget;
37
+ children: ReactNode;
38
+ }
39
+ export interface DrawerTriggerState {
40
+ open: boolean;
41
+ pressed: boolean;
42
+ focusVisible: boolean;
43
+ disabled: boolean;
44
+ }
45
+ export interface DrawerPopupState {
46
+ entering: boolean;
47
+ exiting: boolean;
48
+ }
49
+ export interface DrawerCloseState {
50
+ pressed: boolean;
51
+ focusVisible: boolean;
52
+ disabled: boolean;
53
+ }
54
+ export interface DrawerTriggerProps extends Omit<ComponentPropsWithRef<"button">, "children"> {
55
+ /** Must render a `<button>`, for example `render={<Button>View order</Button>}`. */
56
+ render?: RenderProp<DrawerTriggerState>;
57
+ children?: ReactNode;
58
+ }
59
+ export interface DrawerPopupProps extends Omit<ComponentPropsWithRef<"div">, "children" | "role"> {
60
+ /** The edge it slides in from. @default 'end' */
61
+ side?: DrawerSide;
62
+ /** The scrim element. Defaults to on for the root modal and off when opened from another modal. */
63
+ backdrop?: boolean;
64
+ /** Portal container. Defaults to the parent overlay, else `document.body` (§12.1 L2). */
65
+ container?: Element | null;
66
+ children: ReactNode;
67
+ }
68
+ export interface DrawerHeaderProps extends ComponentPropsWithRef<"div"> {
69
+ render?: RenderProp<Record<string, never>>;
70
+ }
71
+ export interface DrawerTitleProps extends Omit<ComponentPropsWithRef<"h2">, "id"> {
72
+ /** @default 2 */
73
+ level?: DrawerTitleLevel;
74
+ render?: RenderProp<Record<string, never>>;
75
+ }
76
+ export interface DrawerDescriptionProps extends Omit<ComponentPropsWithRef<"p">, "id"> {
77
+ render?: RenderProp<Record<string, never>>;
78
+ }
79
+ export interface DrawerBodyProps extends ComponentPropsWithRef<"div"> {
80
+ render?: RenderProp<Record<string, never>>;
81
+ }
82
+ export interface DrawerFooterProps extends ComponentPropsWithRef<"div"> {
83
+ render?: RenderProp<Record<string, never>>;
84
+ }
85
+ export interface DrawerCloseProps extends Omit<ComponentPropsWithRef<"button">, "children"> {
86
+ /**
87
+ * Must render a `<button>`, for example `render={<Button>Cancel</Button>}`. With neither `render`
88
+ * nor `children`, the part is an IconButton showing the close glyph, named by `labels.close`, which
89
+ * sits in the header's end corner when it is a direct child of `Drawer.Popup`.
90
+ */
91
+ render?: RenderProp<DrawerCloseState>;
92
+ /** Text content, rendered in a plain `<button>`; leave it out for the default IconButton. */
93
+ children?: ReactNode;
94
+ /** The default IconButton's accessible name; an `aria-label` you pass wins. */
95
+ labels?: Partial<Pick<DrawerLabels, "close">>;
96
+ }
97
+ //#endregion
98
+ export type { OpenReason };
@@ -0,0 +1,6 @@
1
+ import { DrawerBody, DrawerClose, DrawerDescription, DrawerFooter, DrawerHeader, DrawerPopup, DrawerRoot, DrawerTitle, DrawerTrigger } from "./drawer.client.js";
2
+ declare namespace drawer_parts_d_exports {
3
+ export { DrawerBody as Body, DrawerClose as Close, DrawerDescription as Description, DrawerFooter as Footer, DrawerHeader as Header, DrawerPopup as Popup, DrawerRoot as Root, DrawerTitle as Title, DrawerTrigger as Trigger };
4
+ }
5
+ //#endregion
6
+ export { DrawerBody as Body, DrawerClose as Close, DrawerDescription as Description, DrawerFooter as Footer, DrawerHeader as Header, DrawerPopup as Popup, DrawerRoot as Root, DrawerTitle as Title, DrawerTrigger as Trigger, drawer_parts_d_exports };
@@ -0,0 +1,16 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import { DrawerBody, DrawerClose, DrawerDescription, DrawerFooter, DrawerHeader, DrawerPopup, DrawerRoot, DrawerTitle, DrawerTrigger } from "./drawer.client.js";
3
+ //#region src/drawer/drawer.parts.ts
4
+ var drawer_parts_exports = /* @__PURE__ */ __exportAll({
5
+ Body: () => DrawerBody,
6
+ Close: () => DrawerClose,
7
+ Description: () => DrawerDescription,
8
+ Footer: () => DrawerFooter,
9
+ Header: () => DrawerHeader,
10
+ Popup: () => DrawerPopup,
11
+ Root: () => DrawerRoot,
12
+ Title: () => DrawerTitle,
13
+ Trigger: () => DrawerTrigger
14
+ });
15
+ //#endregion
16
+ export { DrawerBody as Body, DrawerClose as Close, DrawerDescription as Description, DrawerFooter as Footer, DrawerHeader as Header, DrawerPopup as Popup, DrawerRoot as Root, DrawerTitle as Title, DrawerTrigger as Trigger, drawer_parts_exports };
@@ -0,0 +1,5 @@
1
+ import { OpenReason } from "../contracts/details.js";
2
+ import { DrawerBodyProps, DrawerCloseProps, DrawerCloseState, DrawerDescriptionProps, DrawerFooterProps, DrawerHeaderProps, DrawerLabels, DrawerPopupProps, DrawerPopupState, DrawerRootProps, DrawerSide, DrawerTitleLevel, DrawerTitleProps, DrawerTriggerProps, DrawerTriggerState } from "./drawer.contract.js";
3
+ import { DrawerBody, DrawerClose, DrawerDescription, DrawerFooter, DrawerHeader, DrawerPopup, DrawerRoot, DrawerTitle, DrawerTrigger } from "./drawer.client.js";
4
+ import { drawer_parts_d_exports } from "./drawer.parts.js";
5
+ export { drawer_parts_d_exports as Drawer, DrawerBody, type DrawerBodyProps, DrawerClose, type DrawerCloseProps, type DrawerCloseState, DrawerDescription, type DrawerDescriptionProps, DrawerFooter, type DrawerFooterProps, DrawerHeader, type DrawerHeaderProps, type DrawerLabels, DrawerPopup, type DrawerPopupProps, type DrawerPopupState, DrawerRoot, type DrawerRootProps, type DrawerSide, DrawerTitle, type DrawerTitleLevel, type DrawerTitleProps, DrawerTrigger, type DrawerTriggerProps, type DrawerTriggerState, type OpenReason };
@@ -0,0 +1,3 @@
1
+ import { DrawerBody, DrawerClose, DrawerDescription, DrawerFooter, DrawerHeader, DrawerPopup, DrawerRoot, DrawerTitle, DrawerTrigger } from "./drawer.client.js";
2
+ import { drawer_parts_exports } from "./drawer.parts.js";
3
+ export { drawer_parts_exports as Drawer, DrawerBody, DrawerClose, DrawerDescription, DrawerFooter, DrawerHeader, DrawerPopup, DrawerRoot, DrawerTitle, DrawerTrigger };
@@ -0,0 +1,18 @@
1
+ import { RenderProp } from "../contracts/render.js";
2
+ import { ComponentPropsWithRef, ReactElement, ReactNode } from "react";
3
+ //#region src/empty-state/empty-state.d.ts
4
+ export type EmptyStateTitleLevel = 2 | 3 | 4 | 5 | 6;
5
+ export interface EmptyStateProps extends Omit<ComponentPropsWithRef<"div">, "title" | "children"> {
6
+ /** The headline. Its look is Heading/H3 at every `level`. */
7
+ title: ReactNode;
8
+ /** @default 2 */
9
+ level?: EmptyStateTitleLevel;
10
+ /** A render or illustration above the title, for example `<Image … />`. */
11
+ media?: ReactNode;
12
+ /** One action, for example `<Button variant="primary">Share your store</Button>`. */
13
+ actions?: ReactNode;
14
+ render?: RenderProp<Record<string, never>>;
15
+ }
16
+ /** Figma: "A render, a headline, one action. No paragraphs." */
17
+ export declare function EmptyState({ title, level, media, actions, render, className, ...rest }: EmptyStateProps): ReactElement;
18
+ //#endregion