draft-components 3.5.0 → 4.0.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 (551) hide show
  1. package/css/draft-components-variables.css +418 -230
  2. package/css/draft-components.css +2547 -1594
  3. package/dist/components/alert/alert.css +58 -59
  4. package/dist/components/alert/alert.d.ts +6 -6
  5. package/dist/components/alert/alert.js +5 -4
  6. package/dist/components/alert/alert.js.map +1 -0
  7. package/dist/components/alert/index.js +1 -0
  8. package/dist/components/alert/index.js.map +1 -0
  9. package/dist/components/avatar/avatar.css +29 -29
  10. package/dist/components/avatar/avatar.d.ts +6 -6
  11. package/dist/components/avatar/avatar.js +6 -5
  12. package/dist/components/avatar/avatar.js.map +1 -0
  13. package/dist/components/avatar/index.js +1 -0
  14. package/dist/components/avatar/index.js.map +1 -0
  15. package/dist/components/badge/badge.css +8 -8
  16. package/dist/components/badge/badge.d.ts +5 -5
  17. package/dist/components/badge/badge.js +2 -0
  18. package/dist/components/badge/badge.js.map +1 -0
  19. package/dist/components/badge/index.js +1 -0
  20. package/dist/components/badge/index.js.map +1 -0
  21. package/dist/components/breadcrumbs/breadcrumbs-context.d.ts +1 -1
  22. package/dist/components/breadcrumbs/breadcrumbs-context.js +1 -0
  23. package/dist/components/breadcrumbs/breadcrumbs-context.js.map +1 -0
  24. package/dist/components/breadcrumbs/breadcrumbs-item.d.ts +7 -6
  25. package/dist/components/breadcrumbs/breadcrumbs-item.js +2 -0
  26. package/dist/components/breadcrumbs/breadcrumbs-item.js.map +1 -0
  27. package/dist/components/breadcrumbs/breadcrumbs.css +9 -9
  28. package/dist/components/breadcrumbs/breadcrumbs.d.ts +5 -4
  29. package/dist/components/breadcrumbs/breadcrumbs.js +2 -0
  30. package/dist/components/breadcrumbs/breadcrumbs.js.map +1 -0
  31. package/dist/components/breadcrumbs/index.js +1 -0
  32. package/dist/components/breadcrumbs/index.js.map +1 -0
  33. package/dist/components/button/button.css +634 -108
  34. package/dist/components/button/button.d.ts +7 -6
  35. package/dist/components/button/button.js +17 -13
  36. package/dist/components/button/button.js.map +1 -0
  37. package/dist/components/button/icon-button.d.ts +2 -2
  38. package/dist/components/button/icon-button.js +4 -4
  39. package/dist/components/button/icon-button.js.map +1 -0
  40. package/dist/components/button/index.js +1 -0
  41. package/dist/components/button/index.js.map +1 -0
  42. package/dist/components/button-group/button-group.d.ts +4 -3
  43. package/dist/components/button-group/button-group.js +2 -0
  44. package/dist/components/button-group/button-group.js.map +1 -0
  45. package/dist/components/button-group/index.js +1 -0
  46. package/dist/components/button-group/index.js.map +1 -0
  47. package/dist/components/caption/caption.css +6 -6
  48. package/dist/components/caption/caption.d.ts +6 -6
  49. package/dist/components/caption/caption.js +6 -4
  50. package/dist/components/caption/caption.js.map +1 -0
  51. package/dist/components/caption/index.js +1 -0
  52. package/dist/components/caption/index.js.map +1 -0
  53. package/dist/components/checkbox/checkbox.css +24 -28
  54. package/dist/components/checkbox/checkbox.d.ts +5 -5
  55. package/dist/components/checkbox/checkbox.js +11 -6
  56. package/dist/components/checkbox/checkbox.js.map +1 -0
  57. package/dist/components/checkbox/index.js +1 -0
  58. package/dist/components/checkbox/index.js.map +1 -0
  59. package/dist/components/color-picker/color-picker-button.d.ts +1 -1
  60. package/dist/components/color-picker/color-picker-button.js +9 -3
  61. package/dist/components/color-picker/color-picker-button.js.map +1 -0
  62. package/dist/components/color-picker/color-picker.css +13 -13
  63. package/dist/components/color-picker/color-picker.d.ts +10 -6
  64. package/dist/components/color-picker/color-picker.js +2 -0
  65. package/dist/components/color-picker/color-picker.js.map +1 -0
  66. package/dist/components/color-picker/index.js +1 -0
  67. package/dist/components/color-picker/index.js.map +1 -0
  68. package/dist/components/date-picker/calendar-day.d.ts +5 -4
  69. package/dist/components/date-picker/calendar-day.js +2 -0
  70. package/dist/components/date-picker/calendar-day.js.map +1 -0
  71. package/dist/components/date-picker/calendar-grid-head.d.ts +1 -1
  72. package/dist/components/date-picker/calendar-grid-head.js +2 -0
  73. package/dist/components/date-picker/calendar-grid-head.js.map +1 -0
  74. package/dist/components/date-picker/calendar-grid.d.ts +1 -1
  75. package/dist/components/date-picker/calendar-grid.js +22 -16
  76. package/dist/components/date-picker/calendar-grid.js.map +1 -0
  77. package/dist/components/date-picker/calendar-header.js +3 -2
  78. package/dist/components/date-picker/calendar-header.js.map +1 -0
  79. package/dist/components/date-picker/calendar.d.ts +10 -7
  80. package/dist/components/date-picker/calendar.js +1 -0
  81. package/dist/components/date-picker/calendar.js.map +1 -0
  82. package/dist/components/date-picker/date-helpers.js +1 -0
  83. package/dist/components/date-picker/date-helpers.js.map +1 -0
  84. package/dist/components/date-picker/date-picker.css +44 -40
  85. package/dist/components/date-picker/date-picker.d.ts +9 -8
  86. package/dist/components/date-picker/date-picker.js +4 -2
  87. package/dist/components/date-picker/date-picker.js.map +1 -0
  88. package/dist/components/date-picker/date-range-picker.d.ts +10 -9
  89. package/dist/components/date-picker/date-range-picker.js +5 -4
  90. package/dist/components/date-picker/date-range-picker.js.map +1 -0
  91. package/dist/components/date-picker/date-range.d.ts +1 -1
  92. package/dist/components/date-picker/date-range.js +1 -0
  93. package/dist/components/date-picker/date-range.js.map +1 -0
  94. package/dist/components/date-picker/index.js +1 -0
  95. package/dist/components/date-picker/index.js.map +1 -0
  96. package/dist/components/date-picker/parse-min-max-props.d.ts +1 -1
  97. package/dist/components/date-picker/parse-min-max-props.js +1 -0
  98. package/dist/components/date-picker/parse-min-max-props.js.map +1 -0
  99. package/dist/components/date-picker-popover/date-picker-popover.d.ts +18 -10
  100. package/dist/components/date-picker-popover/date-picker-popover.js +18 -5
  101. package/dist/components/date-picker-popover/date-picker-popover.js.map +1 -0
  102. package/dist/components/date-picker-popover/index.js +1 -0
  103. package/dist/components/date-picker-popover/index.js.map +1 -0
  104. package/dist/components/date-range-picker-popover/date-range-picker-popover-footer.d.ts +1 -1
  105. package/dist/components/date-range-picker-popover/date-range-picker-popover-footer.js +3 -1
  106. package/dist/components/date-range-picker-popover/date-range-picker-popover-footer.js.map +1 -0
  107. package/dist/components/date-range-picker-popover/date-range-picker-popover-presets.d.ts +1 -1
  108. package/dist/components/date-range-picker-popover/date-range-picker-popover-presets.js +2 -0
  109. package/dist/components/date-range-picker-popover/date-range-picker-popover-presets.js.map +1 -0
  110. package/dist/components/date-range-picker-popover/date-range-picker-popover.d.ts +17 -14
  111. package/dist/components/date-range-picker-popover/date-range-picker-popover.js +20 -14
  112. package/dist/components/date-range-picker-popover/date-range-picker-popover.js.map +1 -0
  113. package/dist/components/date-range-picker-popover/helpers.d.ts +1 -1
  114. package/dist/components/date-range-picker-popover/helpers.js +2 -0
  115. package/dist/components/date-range-picker-popover/helpers.js.map +1 -0
  116. package/dist/components/date-range-picker-popover/index.js +1 -0
  117. package/dist/components/date-range-picker-popover/index.js.map +1 -0
  118. package/dist/components/date-range-picker-popover/types.d.ts +1 -1
  119. package/dist/components/date-range-picker-popover/types.js +2 -1
  120. package/dist/components/date-range-picker-popover/types.js.map +1 -0
  121. package/dist/components/date-range-picker-popover/use-is-compact-view.js +7 -1
  122. package/dist/components/date-range-picker-popover/use-is-compact-view.js.map +1 -0
  123. package/dist/components/dialog/dialog-body.d.ts +9 -4
  124. package/dist/components/dialog/dialog-body.js +26 -3
  125. package/dist/components/dialog/dialog-body.js.map +1 -0
  126. package/dist/components/dialog/dialog-context.d.ts +4 -4
  127. package/dist/components/dialog/dialog-context.js +10 -7
  128. package/dist/components/dialog/dialog-context.js.map +1 -0
  129. package/dist/components/dialog/dialog-footer.d.ts +4 -6
  130. package/dist/components/dialog/dialog-footer.js +8 -4
  131. package/dist/components/dialog/dialog-footer.js.map +1 -0
  132. package/dist/components/dialog/dialog-header.d.ts +8 -8
  133. package/dist/components/dialog/dialog-header.js +12 -10
  134. package/dist/components/dialog/dialog-header.js.map +1 -0
  135. package/dist/components/dialog/dialog.css +321 -100
  136. package/dist/components/dialog/dialog.d.ts +13 -18
  137. package/dist/components/dialog/dialog.js +84 -30
  138. package/dist/components/dialog/dialog.js.map +1 -0
  139. package/dist/components/dialog/index.js +1 -0
  140. package/dist/components/dialog/index.js.map +1 -0
  141. package/dist/components/empty-state/empty-state.css +9 -5
  142. package/dist/components/empty-state/empty-state.d.ts +7 -6
  143. package/dist/components/empty-state/empty-state.js +7 -2
  144. package/dist/components/empty-state/empty-state.js.map +1 -0
  145. package/dist/components/empty-state/index.js +1 -0
  146. package/dist/components/empty-state/index.js.map +1 -0
  147. package/dist/components/file-picker/file-picker.css +19 -16
  148. package/dist/components/file-picker/file-picker.d.ts +7 -7
  149. package/dist/components/file-picker/file-picker.js +25 -9
  150. package/dist/components/file-picker/file-picker.js.map +1 -0
  151. package/dist/components/file-picker/index.js +1 -0
  152. package/dist/components/file-picker/index.js.map +1 -0
  153. package/dist/components/filter-buttons/filter-button.d.ts +6 -5
  154. package/dist/components/filter-buttons/filter-button.js +4 -3
  155. package/dist/components/filter-buttons/filter-button.js.map +1 -0
  156. package/dist/components/filter-buttons/filter-buttons.css +37 -12
  157. package/dist/components/filter-buttons/filter-buttons.d.ts +2 -2
  158. package/dist/components/filter-buttons/filter-buttons.js +3 -2
  159. package/dist/components/filter-buttons/filter-buttons.js.map +1 -0
  160. package/dist/components/filter-buttons/index.js +1 -0
  161. package/dist/components/filter-buttons/index.js.map +1 -0
  162. package/dist/components/filtered-search/filter-item.css +1 -1
  163. package/dist/components/filtered-search/filter-item.d.ts +1 -1
  164. package/dist/components/filtered-search/filter-item.js +3 -1
  165. package/dist/components/filtered-search/filter-item.js.map +1 -0
  166. package/dist/components/filtered-search/filter-operator-select.js +2 -1
  167. package/dist/components/filtered-search/filter-operator-select.js.map +1 -0
  168. package/dist/components/filtered-search/filter-token.css +7 -7
  169. package/dist/components/filtered-search/filter-token.d.ts +6 -3
  170. package/dist/components/filtered-search/filter-token.js +5 -4
  171. package/dist/components/filtered-search/filter-token.js.map +1 -0
  172. package/dist/components/filtered-search/filter-value-list.css +1 -1
  173. package/dist/components/filtered-search/filter-value-list.js +3 -1
  174. package/dist/components/filtered-search/filter-value-list.js.map +1 -0
  175. package/dist/components/filtered-search/filtered-search.css +56 -52
  176. package/dist/components/filtered-search/filtered-search.d.ts +6 -5
  177. package/dist/components/filtered-search/filtered-search.js +12 -9
  178. package/dist/components/filtered-search/filtered-search.js.map +1 -0
  179. package/dist/components/filtered-search/index.d.ts +1 -1
  180. package/dist/components/filtered-search/index.js +3 -1
  181. package/dist/components/filtered-search/index.js.map +1 -0
  182. package/dist/components/filtered-search/model/abstract-filter.js +1 -0
  183. package/dist/components/filtered-search/model/abstract-filter.js.map +1 -0
  184. package/dist/components/filtered-search/model/string-filter.d.ts +1 -1
  185. package/dist/components/filtered-search/model/string-filter.js +2 -0
  186. package/dist/components/filtered-search/model/string-filter.js.map +1 -0
  187. package/dist/components/filtered-search/model/string-set-filter.js +1 -0
  188. package/dist/components/filtered-search/model/string-set-filter.js.map +1 -0
  189. package/dist/components/filtered-search/model/validation-result.js +1 -0
  190. package/dist/components/filtered-search/model/validation-result.js.map +1 -0
  191. package/dist/components/filtered-search/string-filter-input.js +2 -1
  192. package/dist/components/filtered-search/string-filter-input.js.map +1 -0
  193. package/dist/components/filtered-search/string-filter-item.d.ts +1 -1
  194. package/dist/components/filtered-search/string-filter-item.js +7 -3
  195. package/dist/components/filtered-search/string-filter-item.js.map +1 -0
  196. package/dist/components/filtered-search/string-set-filter-item.d.ts +1 -1
  197. package/dist/components/filtered-search/string-set-filter-item.js +7 -3
  198. package/dist/components/filtered-search/string-set-filter-item.js.map +1 -0
  199. package/dist/components/filtered-search/types.d.ts +2 -2
  200. package/dist/components/filtered-search/types.js +3 -1
  201. package/dist/components/filtered-search/types.js.map +1 -0
  202. package/dist/components/filtered-search/use-combobox-ids.js +1 -0
  203. package/dist/components/filtered-search/use-combobox-ids.js.map +1 -0
  204. package/dist/components/filtered-search/use-translations.d.ts +1 -1
  205. package/dist/components/filtered-search/use-translations.js +1 -0
  206. package/dist/components/filtered-search/use-translations.js.map +1 -0
  207. package/dist/components/form-field/form-field.d.ts +7 -10
  208. package/dist/components/form-field/form-field.js +1 -0
  209. package/dist/components/form-field/form-field.js.map +1 -0
  210. package/dist/components/form-field/index.js +1 -0
  211. package/dist/components/form-field/index.js.map +1 -0
  212. package/dist/components/hero-icons/24/outline/arrow-down-icon.d.ts +2 -0
  213. package/dist/components/hero-icons/24/outline/arrow-down-icon.js +6 -0
  214. package/dist/components/hero-icons/24/outline/arrow-down-icon.js.map +1 -0
  215. package/dist/components/hero-icons/24/outline/arrow-up-icon.d.ts +2 -0
  216. package/dist/components/hero-icons/24/outline/arrow-up-icon.js +6 -0
  217. package/dist/components/hero-icons/24/outline/arrow-up-icon.js.map +1 -0
  218. package/dist/components/hero-icons/24/outline/arrows-up-down-icon.d.ts +2 -3
  219. package/dist/components/hero-icons/24/outline/arrows-up-down-icon.js +5 -4
  220. package/dist/components/hero-icons/24/outline/arrows-up-down-icon.js.map +1 -0
  221. package/dist/components/hero-icons/24/outline/chevron-left-icon.d.ts +2 -3
  222. package/dist/components/hero-icons/24/outline/chevron-left-icon.js +5 -4
  223. package/dist/components/hero-icons/24/outline/chevron-left-icon.js.map +1 -0
  224. package/dist/components/hero-icons/24/outline/chevron-right-icon.d.ts +2 -3
  225. package/dist/components/hero-icons/24/outline/chevron-right-icon.js +5 -4
  226. package/dist/components/hero-icons/24/outline/chevron-right-icon.js.map +1 -0
  227. package/dist/components/hero-icons/24/outline/eye-icon.d.ts +2 -3
  228. package/dist/components/hero-icons/24/outline/eye-icon.js +5 -4
  229. package/dist/components/hero-icons/24/outline/eye-icon.js.map +1 -0
  230. package/dist/components/hero-icons/24/outline/eye-slash-icon.d.ts +2 -3
  231. package/dist/components/hero-icons/24/outline/eye-slash-icon.js +5 -4
  232. package/dist/components/hero-icons/24/outline/eye-slash-icon.js.map +1 -0
  233. package/dist/components/hero-icons/24/outline/magnifying-glass-icon.d.ts +2 -3
  234. package/dist/components/hero-icons/24/outline/magnifying-glass-icon.js +5 -4
  235. package/dist/components/hero-icons/24/outline/magnifying-glass-icon.js.map +1 -0
  236. package/dist/components/hero-icons/24/outline/trash-icon.d.ts +2 -3
  237. package/dist/components/hero-icons/24/outline/trash-icon.js +5 -4
  238. package/dist/components/hero-icons/24/outline/trash-icon.js.map +1 -0
  239. package/dist/components/hero-icons/24/outline/x-mark-icon.d.ts +2 -3
  240. package/dist/components/hero-icons/24/outline/x-mark-icon.js +5 -4
  241. package/dist/components/hero-icons/24/outline/x-mark-icon.js.map +1 -0
  242. package/dist/components/hero-icons/24/solid/exclamation-triangle-icon.d.ts +2 -3
  243. package/dist/components/hero-icons/24/solid/exclamation-triangle-icon.js +5 -4
  244. package/dist/components/hero-icons/24/solid/exclamation-triangle-icon.js.map +1 -0
  245. package/dist/components/index.d.ts +0 -2
  246. package/dist/components/index.js +1 -2
  247. package/dist/components/index.js.map +1 -0
  248. package/dist/components/label/index.js +1 -0
  249. package/dist/components/label/index.js.map +1 -0
  250. package/dist/components/label/label.css +5 -5
  251. package/dist/components/label/label.d.ts +6 -3
  252. package/dist/components/label/label.js +6 -4
  253. package/dist/components/label/label.js.map +1 -0
  254. package/dist/components/menu/index.js +1 -0
  255. package/dist/components/menu/index.js.map +1 -0
  256. package/dist/components/menu/menu-item.d.ts +6 -6
  257. package/dist/components/menu/menu-item.js +9 -14
  258. package/dist/components/menu/menu-item.js.map +1 -0
  259. package/dist/components/menu/menu-separator.d.ts +2 -5
  260. package/dist/components/menu/menu-separator.js +3 -1
  261. package/dist/components/menu/menu-separator.js.map +1 -0
  262. package/dist/components/menu/menu.css +25 -26
  263. package/dist/components/menu/menu.d.ts +22 -26
  264. package/dist/components/menu/menu.js +121 -116
  265. package/dist/components/menu/menu.js.map +1 -0
  266. package/dist/components/nav-list/index.js +1 -0
  267. package/dist/components/nav-list/index.js.map +1 -0
  268. package/dist/components/nav-list/nav-list-item.d.ts +7 -6
  269. package/dist/components/nav-list/nav-list-item.js +2 -0
  270. package/dist/components/nav-list/nav-list-item.js.map +1 -0
  271. package/dist/components/nav-list/nav-list-title.d.ts +5 -5
  272. package/dist/components/nav-list/nav-list-title.js +2 -0
  273. package/dist/components/nav-list/nav-list-title.js.map +1 -0
  274. package/dist/components/nav-list/nav-list.css +12 -12
  275. package/dist/components/nav-list/nav-list.d.ts +8 -2
  276. package/dist/components/nav-list/nav-list.js +6 -0
  277. package/dist/components/nav-list/nav-list.js.map +1 -0
  278. package/dist/components/password-input/index.js +1 -0
  279. package/dist/components/password-input/index.js.map +1 -0
  280. package/dist/components/password-input/password-input.css +3 -33
  281. package/dist/components/password-input/password-input.d.ts +7 -6
  282. package/dist/components/password-input/password-input.js +9 -7
  283. package/dist/components/password-input/password-input.js.map +1 -0
  284. package/dist/components/popover/index.js +1 -0
  285. package/dist/components/popover/index.js.map +1 -0
  286. package/dist/components/popover/popover.css +43 -70
  287. package/dist/components/popover/popover.d.ts +28 -49
  288. package/dist/components/popover/popover.js +101 -82
  289. package/dist/components/popover/popover.js.map +1 -0
  290. package/dist/components/portal/index.js +1 -0
  291. package/dist/components/portal/index.js.map +1 -0
  292. package/dist/components/portal/portal-context.d.ts +1 -1
  293. package/dist/components/portal/portal-context.js +1 -0
  294. package/dist/components/portal/portal-context.js.map +1 -0
  295. package/dist/components/portal/portal.d.ts +1 -1
  296. package/dist/components/portal/portal.js +2 -0
  297. package/dist/components/portal/portal.js.map +1 -0
  298. package/dist/components/radio/index.js +1 -0
  299. package/dist/components/radio/index.js.map +1 -0
  300. package/dist/components/radio/radio.css +24 -28
  301. package/dist/components/radio/radio.d.ts +5 -5
  302. package/dist/components/radio/radio.js +11 -6
  303. package/dist/components/radio/radio.js.map +1 -0
  304. package/dist/components/search-select/context.d.ts +1 -1
  305. package/dist/components/search-select/context.js +1 -0
  306. package/dist/components/search-select/context.js.map +1 -0
  307. package/dist/components/search-select/icons.d.ts +3 -3
  308. package/dist/components/search-select/icons.js +2 -0
  309. package/dist/components/search-select/icons.js.map +1 -0
  310. package/dist/components/search-select/index.js +1 -0
  311. package/dist/components/search-select/index.js.map +1 -0
  312. package/dist/components/search-select/search-select.css +67 -43
  313. package/dist/components/search-select/search-select.d.ts +9 -10
  314. package/dist/components/search-select/search-select.js +20 -15
  315. package/dist/components/search-select/search-select.js.map +1 -0
  316. package/dist/components/segmented-control/index.js +1 -0
  317. package/dist/components/segmented-control/index.js.map +1 -0
  318. package/dist/components/segmented-control/segmented-button.d.ts +1 -1
  319. package/dist/components/segmented-control/segmented-button.js +2 -0
  320. package/dist/components/segmented-control/segmented-button.js.map +1 -0
  321. package/dist/components/segmented-control/segmented-control.css +46 -41
  322. package/dist/components/segmented-control/segmented-control.d.ts +5 -4
  323. package/dist/components/segmented-control/segmented-control.js +2 -0
  324. package/dist/components/segmented-control/segmented-control.js.map +1 -0
  325. package/dist/components/select/index.js +1 -0
  326. package/dist/components/select/index.js.map +1 -0
  327. package/dist/components/select/select.css +37 -32
  328. package/dist/components/select/select.d.ts +6 -31
  329. package/dist/components/select/select.js +5 -4
  330. package/dist/components/select/select.js.map +1 -0
  331. package/dist/components/selection-control/index.js +1 -0
  332. package/dist/components/selection-control/index.js.map +1 -0
  333. package/dist/components/selection-control/selection-control.d.ts +8 -13
  334. package/dist/components/selection-control/selection-control.js +5 -4
  335. package/dist/components/selection-control/selection-control.js.map +1 -0
  336. package/dist/components/slider/calc-position.js +1 -0
  337. package/dist/components/slider/calc-position.js.map +1 -0
  338. package/dist/components/slider/get-offset-relative-to-thumb.js +4 -3
  339. package/dist/components/slider/get-offset-relative-to-thumb.js.map +1 -0
  340. package/dist/components/slider/index.js +2 -0
  341. package/dist/components/slider/index.js.map +1 -0
  342. package/dist/components/slider/range-slider.d.ts +2 -2
  343. package/dist/components/slider/range-slider.js +2 -1
  344. package/dist/components/slider/range-slider.js.map +1 -0
  345. package/dist/components/slider/slider-thumb.d.ts +1 -1
  346. package/dist/components/slider/slider-thumb.js +3 -1
  347. package/dist/components/slider/slider-thumb.js.map +1 -0
  348. package/dist/components/slider/slider-tick-marks.d.ts +1 -1
  349. package/dist/components/slider/slider-tick-marks.js +2 -0
  350. package/dist/components/slider/slider-tick-marks.js.map +1 -0
  351. package/dist/components/slider/slider-track.d.ts +1 -1
  352. package/dist/components/slider/slider-track.js +7 -5
  353. package/dist/components/slider/slider-track.js.map +1 -0
  354. package/dist/components/slider/slider.css +88 -93
  355. package/dist/components/slider/slider.d.ts +2 -2
  356. package/dist/components/slider/slider.js +2 -1
  357. package/dist/components/slider/slider.js.map +1 -0
  358. package/dist/components/spinner/index.js +1 -0
  359. package/dist/components/spinner/index.js.map +1 -0
  360. package/dist/components/spinner/spinner.d.ts +6 -5
  361. package/dist/components/spinner/spinner.js +5 -4
  362. package/dist/components/spinner/spinner.js.map +1 -0
  363. package/dist/components/switch/index.js +1 -0
  364. package/dist/components/switch/index.js.map +1 -0
  365. package/dist/components/switch/switch.css +34 -47
  366. package/dist/components/switch/switch.d.ts +5 -5
  367. package/dist/components/switch/switch.js +12 -6
  368. package/dist/components/switch/switch.js.map +1 -0
  369. package/dist/components/table/index.js +1 -0
  370. package/dist/components/table/index.js.map +1 -0
  371. package/dist/components/table/table-body.d.ts +5 -5
  372. package/dist/components/table/table-body.js +5 -4
  373. package/dist/components/table/table-body.js.map +1 -0
  374. package/dist/components/table/table-cell.d.ts +5 -5
  375. package/dist/components/table/table-cell.js +5 -4
  376. package/dist/components/table/table-cell.js.map +1 -0
  377. package/dist/components/table/table-container.d.ts +6 -5
  378. package/dist/components/table/table-container.js +5 -4
  379. package/dist/components/table/table-container.js.map +1 -0
  380. package/dist/components/table/table-head-cell.d.ts +6 -5
  381. package/dist/components/table/table-head-cell.js +14 -9
  382. package/dist/components/table/table-head-cell.js.map +1 -0
  383. package/dist/components/table/table-head.d.ts +6 -5
  384. package/dist/components/table/table-head.js +5 -4
  385. package/dist/components/table/table-head.js.map +1 -0
  386. package/dist/components/table/table-row.d.ts +6 -5
  387. package/dist/components/table/table-row.js +5 -4
  388. package/dist/components/table/table-row.js.map +1 -0
  389. package/dist/components/table/table.css +48 -54
  390. package/dist/components/table/table.d.ts +21 -6
  391. package/dist/components/table/table.js +18 -5
  392. package/dist/components/table/table.js.map +1 -0
  393. package/dist/components/tabs/index.js +1 -0
  394. package/dist/components/tabs/index.js.map +1 -0
  395. package/dist/components/tabs/tab-list.d.ts +4 -2
  396. package/dist/components/tabs/tab-list.js +20 -13
  397. package/dist/components/tabs/tab-list.js.map +1 -0
  398. package/dist/components/tabs/tab-panel.d.ts +7 -4
  399. package/dist/components/tabs/tab-panel.js +3 -0
  400. package/dist/components/tabs/tab-panel.js.map +1 -0
  401. package/dist/components/tabs/tab.d.ts +6 -3
  402. package/dist/components/tabs/tab.js +5 -1
  403. package/dist/components/tabs/tab.js.map +1 -0
  404. package/dist/components/tabs/tabs-context.d.ts +2 -2
  405. package/dist/components/tabs/tabs-context.js +2 -0
  406. package/dist/components/tabs/tabs-context.js.map +1 -0
  407. package/dist/components/tabs/tabs.css +15 -11
  408. package/dist/components/tabs/tabs.d.ts +7 -4
  409. package/dist/components/tabs/tabs.js +3 -0
  410. package/dist/components/tabs/tabs.js.map +1 -0
  411. package/dist/components/tabs/types.js +1 -0
  412. package/dist/components/tabs/types.js.map +1 -0
  413. package/dist/components/tag/index.js +1 -0
  414. package/dist/components/tag/index.js.map +1 -0
  415. package/dist/components/tag/tag.css +222 -183
  416. package/dist/components/tag/tag.d.ts +8 -7
  417. package/dist/components/tag/tag.js +5 -4
  418. package/dist/components/tag/tag.js.map +1 -0
  419. package/dist/components/text-input/index.js +1 -0
  420. package/dist/components/text-input/index.js.map +1 -0
  421. package/dist/components/text-input/text-input.css +59 -53
  422. package/dist/components/text-input/text-input.d.ts +5 -5
  423. package/dist/components/text-input/text-input.js +5 -4
  424. package/dist/components/text-input/text-input.js.map +1 -0
  425. package/dist/components/textarea/index.js +1 -0
  426. package/dist/components/textarea/index.js.map +1 -0
  427. package/dist/components/textarea/textarea.css +36 -31
  428. package/dist/components/textarea/textarea.d.ts +5 -4
  429. package/dist/components/textarea/textarea.js +5 -4
  430. package/dist/components/textarea/textarea.js.map +1 -0
  431. package/dist/components/toast/index.js +1 -0
  432. package/dist/components/toast/index.js.map +1 -0
  433. package/dist/components/toast/toast-button.d.ts +5 -5
  434. package/dist/components/toast/toast-button.js +5 -4
  435. package/dist/components/toast/toast-button.js.map +1 -0
  436. package/dist/components/toast/toast.css +35 -35
  437. package/dist/components/toast/toast.d.ts +5 -4
  438. package/dist/components/toast/toast.js +2 -0
  439. package/dist/components/toast/toast.js.map +1 -0
  440. package/dist/components/toaster/index.js +1 -0
  441. package/dist/components/toaster/index.js.map +1 -0
  442. package/dist/components/toaster/toaster.css +11 -11
  443. package/dist/components/toaster/toaster.d.ts +1 -1
  444. package/dist/components/toaster/toaster.js +28 -17
  445. package/dist/components/toaster/toaster.js.map +1 -0
  446. package/dist/components/tooltip/index.js +1 -0
  447. package/dist/components/tooltip/index.js.map +1 -0
  448. package/dist/components/tooltip/tooltip.css +79 -12
  449. package/dist/components/tooltip/tooltip.d.ts +26 -24
  450. package/dist/components/tooltip/tooltip.js +82 -64
  451. package/dist/components/tooltip/tooltip.js.map +1 -0
  452. package/dist/hooks/index.d.ts +4 -5
  453. package/dist/hooks/index.js +5 -5
  454. package/dist/hooks/index.js.map +1 -0
  455. package/dist/hooks/use-close-on-click-outside.d.ts +10 -0
  456. package/dist/hooks/use-close-on-click-outside.js +57 -0
  457. package/dist/hooks/use-close-on-click-outside.js.map +1 -0
  458. package/dist/hooks/use-close-on-esc.d.ts +5 -0
  459. package/dist/hooks/use-close-on-esc.js +34 -0
  460. package/dist/hooks/use-close-on-esc.js.map +1 -0
  461. package/dist/hooks/use-focus-trap.d.ts +5 -14
  462. package/dist/hooks/use-focus-trap.js +27 -40
  463. package/dist/hooks/use-focus-trap.js.map +1 -0
  464. package/dist/hooks/use-lock-body-scroll.d.ts +3 -0
  465. package/dist/hooks/use-lock-body-scroll.js +41 -0
  466. package/dist/hooks/use-lock-body-scroll.js.map +1 -0
  467. package/dist/hooks/use-preserve-props-when-closed.js +1 -0
  468. package/dist/hooks/use-preserve-props-when-closed.js.map +1 -0
  469. package/dist/hooks/{use-callback-ref.d.ts → use-ref-callback.d.ts} +1 -1
  470. package/dist/hooks/use-ref-callback.js +9 -0
  471. package/dist/hooks/use-ref-callback.js.map +1 -0
  472. package/dist/index.d.ts +2 -2
  473. package/dist/index.js +3 -2
  474. package/dist/index.js.map +1 -0
  475. package/dist/lib/calc-element-position.d.ts +10 -0
  476. package/dist/lib/calc-element-position.js +28 -0
  477. package/dist/lib/calc-element-position.js.map +1 -0
  478. package/dist/lib/calc-position.d.ts +27 -0
  479. package/dist/lib/calc-position.js +143 -0
  480. package/dist/lib/calc-position.js.map +1 -0
  481. package/dist/lib/get-element-bounding-rect.d.ts +9 -0
  482. package/dist/lib/get-element-bounding-rect.js +17 -0
  483. package/dist/lib/get-element-bounding-rect.js.map +1 -0
  484. package/dist/lib/helpers.d.ts +3 -6
  485. package/dist/lib/helpers.js +14 -20
  486. package/dist/lib/helpers.js.map +1 -0
  487. package/dist/lib/index.d.ts +1 -1
  488. package/dist/lib/index.js +2 -1
  489. package/dist/lib/index.js.map +1 -0
  490. package/dist/lib/keyboard-key.d.ts +15 -0
  491. package/dist/lib/keyboard-key.js +16 -0
  492. package/dist/lib/keyboard-key.js.map +1 -0
  493. package/dist/lib/observe-element-change.d.ts +3 -0
  494. package/dist/lib/observe-element-change.js +14 -0
  495. package/dist/lib/observe-element-change.js.map +1 -0
  496. package/dist/lib/observe-element-move.d.ts +6 -0
  497. package/dist/lib/observe-element-move.js +43 -0
  498. package/dist/lib/observe-element-move.js.map +1 -0
  499. package/dist/lib/react-helpers.d.ts +1 -9
  500. package/dist/lib/react-helpers.js +2 -26
  501. package/dist/lib/react-helpers.js.map +1 -0
  502. package/dist/storybook-blocks/color-palette/color-palette.d.ts +11 -0
  503. package/dist/storybook-blocks/color-palette/color-palette.js +22 -0
  504. package/dist/storybook-blocks/color-palette/color-palette.js.map +1 -0
  505. package/dist/storybook-blocks/color-palette/index.d.ts +1 -0
  506. package/dist/storybook-blocks/color-palette/index.js +2 -0
  507. package/dist/storybook-blocks/color-palette/index.js.map +1 -0
  508. package/package.json +47 -49
  509. package/css/draft-components-utilities.css +0 -1710
  510. package/dist/components/hero-icons/24/outline/arrow-small-down-icon.d.ts +0 -3
  511. package/dist/components/hero-icons/24/outline/arrow-small-down-icon.js +0 -5
  512. package/dist/components/hero-icons/24/outline/arrow-small-up-icon.d.ts +0 -3
  513. package/dist/components/hero-icons/24/outline/arrow-small-up-icon.js +0 -5
  514. package/dist/components/popover/use-page-click.d.ts +0 -16
  515. package/dist/components/popover/use-page-click.js +0 -46
  516. package/dist/components/positioner/calc-position.d.ts +0 -32
  517. package/dist/components/positioner/calc-position.js +0 -112
  518. package/dist/components/positioner/index.d.ts +0 -1
  519. package/dist/components/positioner/index.js +0 -1
  520. package/dist/components/positioner/positioner.d.ts +0 -20
  521. package/dist/components/positioner/positioner.js +0 -59
  522. package/dist/components/positioner/types.d.ts +0 -14
  523. package/dist/components/positioner/types.js +0 -1
  524. package/dist/components/slide-over/index.d.ts +0 -4
  525. package/dist/components/slide-over/index.js +0 -3
  526. package/dist/components/slide-over/slide-over-body.css +0 -7
  527. package/dist/components/slide-over/slide-over-body.d.ts +0 -3
  528. package/dist/components/slide-over/slide-over-body.js +0 -5
  529. package/dist/components/slide-over/slide-over-context.d.ts +0 -14
  530. package/dist/components/slide-over/slide-over-context.js +0 -18
  531. package/dist/components/slide-over/slide-over-header.css +0 -29
  532. package/dist/components/slide-over/slide-over-header.d.ts +0 -11
  533. package/dist/components/slide-over/slide-over-header.js +0 -17
  534. package/dist/components/slide-over/slide-over.css +0 -85
  535. package/dist/components/slide-over/slide-over.d.ts +0 -25
  536. package/dist/components/slide-over/slide-over.js +0 -106
  537. package/dist/components/slide-over/types.d.ts +0 -1
  538. package/dist/components/slide-over/types.js +0 -1
  539. package/dist/hooks/use-callback-ref.js +0 -8
  540. package/dist/hooks/use-disable-body-scroll.d.ts +0 -5
  541. package/dist/hooks/use-disable-body-scroll.js +0 -32
  542. package/dist/hooks/use-esc-key-down.d.ts +0 -17
  543. package/dist/hooks/use-esc-key-down.js +0 -51
  544. package/dist/hooks/use-mount-transition.d.ts +0 -35
  545. package/dist/hooks/use-mount-transition.js +0 -39
  546. package/dist/hooks/use-prefers-reduced-motion.d.ts +0 -1
  547. package/dist/hooks/use-prefers-reduced-motion.js +0 -15
  548. package/dist/hooks/use-show-transition.d.ts +0 -16
  549. package/dist/hooks/use-show-transition.js +0 -69
  550. package/dist/lib/keyboard-keys.d.ts +0 -15
  551. package/dist/lib/keyboard-keys.js +0 -15
@@ -1,36 +1,36 @@
1
1
  .dc-toasts-list {
2
- --dc-toaster-padding: 16px;
3
- --dc-toaster-animation: 200ms ease;
2
+ --padding: 16px;
3
+ --animation: 200ms ease;
4
4
 
5
5
  position: fixed;
6
- right: var(--dc-toaster-padding);
7
- left: var(--dc-toaster-padding);
8
- z-index: var(--dc-toaster-z-index);
6
+ right: var(--padding);
7
+ left: var(--padding);
8
+ z-index: var(--z-index);
9
9
  box-sizing: border-box;
10
10
  padding: 0;
11
11
  margin: 0;
12
- list-style: none;
13
- color-scheme: light;
14
12
  pointer-events: none;
13
+ color-scheme: light;
14
+ list-style: none;
15
15
  }
16
16
 
17
17
  .dc-toasts-list_top-left,
18
18
  .dc-toasts-list_top-center,
19
19
  .dc-toasts-list_top-right {
20
- top: var(--dc-toaster-padding);
20
+ top: var(--padding);
21
21
  }
22
22
 
23
23
  .dc-toasts-list_bottom-left,
24
24
  .dc-toasts-list_bottom-center,
25
25
  .dc-toasts-list_bottom-right {
26
- bottom: var(--dc-toaster-padding);
26
+ bottom: var(--padding);
27
27
  }
28
28
 
29
29
  .dc-toasts-list > * {
30
30
  position: absolute;
31
31
  right: 0;
32
32
  left: 0;
33
- transition: transform var(--dc-toaster-animation);
33
+ transition: transform var(--animation);
34
34
  }
35
35
 
36
36
  .dc-toasts-list_top-left > *,
@@ -50,7 +50,7 @@
50
50
 
51
51
  .dc-toasts-list__toast {
52
52
  pointer-events: all;
53
- animation: var(--dc-toaster-animation) forwards;
53
+ animation: var(--animation) forwards;
54
54
  }
55
55
 
56
56
  @keyframes dc-toast-slide-top {
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import { type ReactNode } from 'react';
2
2
  type YPosition = 'top' | 'bottom';
3
3
  type XPosition = 'left' | 'center' | 'right';
4
4
  export type ToastPosition = `${YPosition}-${XPosition}`;
@@ -1,6 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from 'react';
3
- import { assertIfNullable } from '../../lib/helpers.js';
4
3
  import { classNames } from '../../lib/react-helpers.js';
5
4
  import { Portal } from '../portal/index.js';
6
5
  import { Toast, ToastButton } from '../toast/index.js';
@@ -13,11 +12,11 @@ export class Toaster {
13
12
  timeoutMs;
14
13
  onShow;
15
14
  onHide;
16
- constructor(params) {
15
+ constructor(params = {}) {
17
16
  this._id = 0;
18
- this.timeoutMs = params?.timeoutMs || 10_000;
19
- this.onShow = params?.onShowToast;
20
- this.onHide = params?.onHideToast;
17
+ this.timeoutMs = params.timeoutMs || 10_000;
18
+ this.onShow = params.onShowToast;
19
+ this.onHide = params.onHideToast;
21
20
  }
22
21
  _getNextId() {
23
22
  this._id += 1;
@@ -32,7 +31,9 @@ export class Toaster {
32
31
  },
33
32
  });
34
33
  const timeoutMs = toast.timeoutMs || this.timeoutMs;
35
- this.onShow?.(event.detail.toast);
34
+ if (typeof this.onShow === 'function') {
35
+ this.onShow(event.detail.toast);
36
+ }
36
37
  window.dispatchEvent(event);
37
38
  window.setTimeout(() => this.hideToast(id), timeoutMs);
38
39
  return id;
@@ -44,11 +45,13 @@ export class Toaster {
44
45
  toastId: id,
45
46
  },
46
47
  });
47
- this.onHide?.(id);
48
+ if (typeof this.onHide === 'function') {
49
+ this.onHide(id);
50
+ }
48
51
  window.dispatchEvent(event);
49
52
  }
50
- render(options) {
51
- return (_jsx(ToastsList, { toaster: this, toastGap: options?.toastGap, toastPosition: options?.toastPosition, toastCloseButtonAriaLabel: options?.toastCloseButtonAriaLabel }));
53
+ render(options = {}) {
54
+ return (_jsx(ToastsList, { toaster: this, toastGap: options.toastGap, toastPosition: options.toastPosition, toastCloseButtonAriaLabel: options.toastCloseButtonAriaLabel }));
52
55
  }
53
56
  }
54
57
  function ToastsList({ toaster, toastGap = 12, toastPosition = 'top-center', toastCloseButtonAriaLabel = 'Close', }) {
@@ -80,7 +83,9 @@ function ToastsList({ toaster, toastGap = 12, toastPosition = 'top-center', toas
80
83
  }, [toaster]);
81
84
  useEffect(() => {
82
85
  const listEl = ref.current;
83
- assertIfNullable(listEl, 'ToastsList ref was not set');
86
+ if (!listEl) {
87
+ return;
88
+ }
84
89
  let offset = 0;
85
90
  for (const item of listEl.children) {
86
91
  if (item instanceof HTMLLIElement) {
@@ -102,12 +107,18 @@ function ToastsList({ toaster, toastGap = 12, toastPosition = 'top-center', toas
102
107
  [`dc-toasts-list_${toastPosition}`]: toastPosition,
103
108
  }), children: toasts.map((toast) => {
104
109
  const hideToast = () => toaster.hideToast(toast.id);
105
- const actions = toast.actions?.map((action, index) => (_jsx(ToastButton, { onClick: () => {
106
- action.onClick?.();
107
- if (action.shouldHideAfterClick ?? true) {
108
- hideToast();
109
- }
110
- }, children: action.content }, index)));
111
- return (_jsx("li", { children: _jsx(Toast, { className: "dc-toasts-list__toast", role: "alert", icon: toast.icon, message: toast.message, actions: actions, closeButtonAriaLabel: toastCloseButtonAriaLabel, onClickCloseButton: hideToast, children: toast.title }) }, toast.id));
110
+ let actionButtons = null;
111
+ if (toast.actions) {
112
+ actionButtons = toast.actions.map((action, index) => (_jsx(ToastButton, { onClick: () => {
113
+ if (typeof action.onClick === 'function') {
114
+ action.onClick();
115
+ }
116
+ if (action.shouldHideAfterClick ?? true) {
117
+ hideToast();
118
+ }
119
+ }, children: action.content }, index)));
120
+ }
121
+ return (_jsx("li", { children: _jsx(Toast, { className: "dc-toasts-list__toast", role: "alert", icon: toast.icon, message: toast.message, actions: actionButtons, closeButtonAriaLabel: toastCloseButtonAriaLabel, onClickCloseButton: hideToast, children: toast.title }) }, toast.id));
112
122
  }) }) }));
113
123
  }
124
+ //# sourceMappingURL=toaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.js","sourceRoot":"","sources":["../../../src/components/toaster/toaster.tsx"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export * from './tooltip.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/tooltip/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -1,34 +1,101 @@
1
1
  .dc-tooltip {
2
- --dc-tooltip-text-color: var(--dc-gray-50);
3
- --dc-tooltip-bg: var(--dc-gray-700);
4
- --dc-tooltip-transition-duration: 100ms;
2
+ --color: var(--dc-white);
3
+ --background: var(--dc-neutral-800);
4
+ --enter-animation-duration: 50ms;
5
+ --leave-animation-duration: 50ms;
5
6
 
7
+ position: fixed;
6
8
  top: 0;
7
9
  left: 0;
8
10
  z-index: var(--dc-overlay-z-index);
9
11
  box-sizing: border-box;
12
+ display: block;
13
+ max-width: 288px;
10
14
  padding: 4px 8px;
11
15
  font: var(--dc-text-xs);
12
- color: var(--dc-tooltip-text-color);
16
+ color: var(--color);
17
+ white-space: pre-wrap;
13
18
  color-scheme: light;
14
- background: var(--dc-tooltip-bg);
19
+ background: var(--background);
15
20
  border-radius: 6px;
16
21
  box-shadow: var(--dc-shadow-md);
17
22
  }
18
23
 
19
- .dc-tooltip_hidden {
20
- opacity: 0;
21
- transition: opacity var(--dc-tooltip-transition-duration) ease;
24
+ .dc-tooltip::before {
25
+ position: absolute;
26
+ display: block;
27
+ content: "";
22
28
  }
23
29
 
24
- .dc-tooltip_visible {
25
- opacity: 1;
30
+ .dc-tooltip[data-placement="top"]::before {
31
+ top: 100%;
32
+ left: 0;
33
+ width: 100%;
34
+ height: var(--anchor-offset);
35
+ }
36
+
37
+ .dc-tooltip[data-placement="right"]::before {
38
+ top: 0;
39
+ right: 100%;
40
+ width: var(--anchor-offset);
41
+ height: 100%;
42
+ }
43
+
44
+ .dc-tooltip[data-placement="bottom"]::before {
45
+ bottom: 100%;
46
+ left: 0;
47
+ width: 100%;
48
+ height: var(--anchor-offset);
49
+ }
50
+
51
+ .dc-tooltip[data-placement="left"]::before {
52
+ top: 0;
53
+ left: 100%;
54
+ width: var(--anchor-offset);
55
+ height: 100%;
56
+ }
57
+
58
+ @keyframes dc-tooltip-enter {
59
+ from {
60
+ opacity: 0;
61
+ }
62
+
63
+ to {
64
+ opacity: 1;
65
+ }
66
+ }
67
+
68
+ .dc-tooltip[data-animation="enter"] {
69
+ animation: dc-tooltip-enter var(--enter-animation-duration) ease
70
+ forwards;
71
+ }
72
+
73
+ @keyframes dc-tooltip-leave {
74
+ from {
75
+ opacity: 1;
76
+ }
77
+
78
+ to {
79
+ opacity: 0;
80
+ }
81
+ }
82
+
83
+ .dc-tooltip[data-animation="leave"] {
84
+ animation: dc-tooltip-leave var(--leave-animation-duration) ease
85
+ forwards;
86
+ }
87
+
88
+ @media (prefers-reduced-motion) {
89
+ .dc-tooltip[data-animation="enter"],
90
+ .dc-tooltip[data-animation="leave"] {
91
+ animation-duration: 0ms;
92
+ }
26
93
  }
27
94
 
28
95
  .dark .dc-tooltip,
29
96
  .dark.dc-tooltip {
30
- --dc-tooltip-text-color: var(--dc-gray-800);
31
- --dc-tooltip-bg: var(--dc-gray-100);
97
+ --color: var(--dc-neutral-800);
98
+ --background: var(--dc-neutral-100);
32
99
 
33
100
  color-scheme: dark;
34
101
  }
@@ -1,26 +1,28 @@
1
- import { ComponentPropsWithoutRef, ReactNode, RefCallback } from 'react';
2
- import { PositionerProps } from '../positioner/index.js';
3
- type TooltipChildrenRenderFn = (props: {
4
- ref: RefCallback<HTMLElement>;
5
- }, context: {
6
- isShown: boolean;
7
- tooltipId: string;
8
- hideTooltip: () => void;
9
- showTooltip: () => void;
10
- }) => ReactNode;
11
- type TooltipHTMLProps = ComponentPropsWithoutRef<'div'>;
12
- type TooltipBaseProps = Omit<TooltipHTMLProps, 'children' | 'content'>;
13
- export type TooltipPlacement = PositionerProps['placement'];
14
- export type TooltipAlignment = PositionerProps['alignment'];
15
- export type TooltipProps = {
16
- htmlContent?: TooltipHTMLProps['content'];
17
- anchorGap?: number;
1
+ import { type ComponentProps, type FocusEventHandler, type MouseEventHandler, type ReactNode, type RefCallback, type JSX } from 'react';
2
+ import { type ElementPlacement } from '../../lib/calc-element-position.js';
3
+ export type TooltipPlacement = ElementPlacement;
4
+ export type TooltipApi = {
5
+ show: () => void;
6
+ hide: () => void;
7
+ };
8
+ export type TooltipChildrenRenderer = (props: {
9
+ 'ref': RefCallback<HTMLElement | SVGElement>;
10
+ 'aria-describedby': string;
11
+ 'onFocus': FocusEventHandler<HTMLElement | SVGElement>;
12
+ 'onBlur': FocusEventHandler<HTMLElement | SVGElement>;
13
+ 'onMouseEnter': MouseEventHandler<HTMLElement | SVGElement>;
14
+ 'onMouseLeave': MouseEventHandler<HTMLElement | SVGElement>;
15
+ }, api: TooltipApi) => JSX.Element;
16
+ type TooltipHTMLProps = ComponentProps<'div'>;
17
+ type TooltipBaseProps = {
18
+ anchorPadding?: number;
19
+ viewportPadding?: number;
18
20
  placement?: TooltipPlacement;
19
- alignment?: TooltipAlignment;
20
- defaultIsShown?: boolean;
21
- isShown?: boolean;
22
- content: ReactNode;
23
- children: ReactNode | TooltipChildrenRenderFn;
24
- } & TooltipBaseProps;
25
- export declare function Tooltip({ anchorGap, placement, alignment, style, className, htmlContent, content, children, ...props }: TooltipProps): import("react/jsx-runtime").JSX.Element;
21
+ isOpen?: boolean;
22
+ defaultIsVisible?: boolean;
23
+ title: ReactNode;
24
+ children: TooltipChildrenRenderer;
25
+ };
26
+ export type TooltipProps = TooltipBaseProps & Omit<TooltipHTMLProps, keyof TooltipBaseProps>;
27
+ export declare function Tooltip({ className, placement, anchorPadding, viewportPadding, defaultIsVisible, title, children, ...props }: TooltipProps): import("react/jsx-runtime").JSX.Element;
26
28
  export {};
@@ -1,70 +1,88 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cloneElement, useId, useMemo, useState, } from 'react';
3
- import { classNames, isReactElementWithRef, mergeRefs } from '../../lib/react-helpers.js';
4
- import { useMountTransition } from '../../hooks/index.js';
5
- import { Positioner } from '../positioner/index.js';
6
- export function Tooltip({ anchorGap = 8, placement = 'top', alignment = 'center', style, className, htmlContent, content, children, ...props }) {
7
- const [defaultShow, setDefaultShow] = useState(props.defaultIsShown ?? false);
8
- const defaultId = useId();
9
- const tooltipId = props.id || defaultId;
10
- const isShown = props.isShown ?? defaultShow;
11
- const durationMs = 100;
12
- const { isMounted, className: transitionClass } = useMountTransition({
13
- isShown,
14
- durationMs,
15
- enterFrom: 'dc-tooltip_hidden',
16
- enterTo: 'dc-tooltip_visible',
17
- });
18
- const { showTooltip, hideTooltip } = useMemo(() => ({
19
- showTooltip: () => setDefaultShow(true),
20
- hideTooltip: () => setDefaultShow(false),
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useId, useRef, useMemo, useLayoutEffect, } from 'react';
3
+ import { classNames } from '../../lib/react-helpers.js';
4
+ import { calcElementPosition } from '../../lib/calc-element-position.js';
5
+ import { observeElementMove } from '../../lib/observe-element-move.js';
6
+ import { Portal } from '../portal/portal.js';
7
+ import { useCloseOnEsc } from '../../hooks/use-close-on-esc.js';
8
+ import { observeElementChange } from '../../lib/observe-element-change.js';
9
+ export function Tooltip({ className, placement = 'top', anchorPadding = 6, viewportPadding = 4, defaultIsVisible = false, title, children, ...props }) {
10
+ const [isVisible, setIsVisible] = useState(defaultIsVisible);
11
+ const [isMounted, setIsMounted] = useState(isVisible);
12
+ const id = useId();
13
+ const tooltipId = props.id || id;
14
+ const tooltipRef = useRef(null);
15
+ const anchorRef = useRef(null);
16
+ const api = useMemo(() => ({
17
+ show: () => {
18
+ setIsVisible(true);
19
+ },
20
+ hide: () => {
21
+ setIsVisible(false);
22
+ },
21
23
  }), []);
22
- const renderAnchor = ({ setRef }) => {
23
- if (typeof children === 'function') {
24
- return children({
25
- ref: setRef,
26
- }, {
27
- tooltipId,
28
- showTooltip,
29
- hideTooltip,
30
- isShown: isShown || isMounted,
31
- });
24
+ useLayoutEffect(() => {
25
+ const tooltip = tooltipRef.current;
26
+ const anchor = anchorRef.current;
27
+ if (!tooltip || !anchor) {
28
+ return;
32
29
  }
33
- if (isReactElementWithRef(children)) {
34
- const props = children.props;
35
- return cloneElement(children, {
36
- 'ref': mergeRefs(setRef, children.ref),
37
- 'onFocus': (event) => {
38
- showTooltip();
39
- props.onFocus?.(event);
40
- },
41
- 'onBlur': (event) => {
42
- hideTooltip();
43
- props.onBlur?.(event);
44
- },
45
- 'onMouseEnter': (event) => {
46
- showTooltip();
47
- props.onMouseEnter?.(event);
48
- },
49
- 'onMouseLeave': (event) => {
50
- hideTooltip();
51
- props.onMouseLeave?.(event);
52
- },
53
- 'aria-describedby': props['aria-describedby'] || tooltipId,
30
+ if (isVisible) {
31
+ tooltip.dataset.animation = 'enter';
32
+ setIsMounted((isMounted) => {
33
+ if (isMounted) {
34
+ return isMounted;
35
+ }
36
+ tooltip.dataset.animation = 'enter';
37
+ return !isMounted;
54
38
  });
39
+ const positionTooltip = () => {
40
+ tooltip.style.removeProperty('max-width');
41
+ tooltip.style.removeProperty('max-height');
42
+ const result = calcElementPosition(anchor, tooltip, {
43
+ placement,
44
+ anchorPadding,
45
+ viewportPadding,
46
+ });
47
+ tooltip.dataset.placement = result.placement;
48
+ tooltip.dataset.alignment = result.alignment;
49
+ tooltip.style.setProperty('--anchor-offset', `${anchorPadding}px`);
50
+ tooltip.style.setProperty('top', `${result.y}px`);
51
+ tooltip.style.setProperty('left', `${result.x}px`);
52
+ tooltip.style.setProperty('max-width', `${result.maxWidth}px`);
53
+ tooltip.style.setProperty('max-height', `${result.maxHeight}px`);
54
+ };
55
+ positionTooltip();
56
+ const stopObserveAnchorMove = observeElementMove(anchor, positionTooltip);
57
+ const stopObserveTooltipChange = observeElementChange(tooltip, positionTooltip);
58
+ return () => {
59
+ stopObserveAnchorMove();
60
+ stopObserveTooltipChange();
61
+ };
55
62
  }
56
- return children;
57
- };
58
- const renderContent = ({ setRef: portalRef, style: portalStyle, }) => {
59
- if (isShown || isMounted) {
60
- delete props.defaultIsShown;
61
- delete props.isShown;
62
- return (_jsx("div", { ...props, ref: portalRef, id: tooltipId, style: {
63
- '--dc-tooltip-transition-duration': `${durationMs}ms`,
64
- ...portalStyle,
65
- ...style,
66
- }, className: classNames('dc-tooltip', transitionClass, className), content: htmlContent, role: "tooltip", children: content }));
63
+ else {
64
+ const handleAnimationEnd = () => {
65
+ setIsMounted(false);
66
+ };
67
+ tooltip.dataset.animation = 'leave';
68
+ tooltip.addEventListener('animationend', handleAnimationEnd);
69
+ return () => {
70
+ tooltip.removeEventListener('animationend', handleAnimationEnd);
71
+ };
67
72
  }
68
- };
69
- return (_jsx(Positioner, { placement: placement, alignment: alignment, anchorGap: anchorGap, renderAnchor: renderAnchor, renderContent: renderContent }));
73
+ }, [isVisible, placement, anchorPadding, viewportPadding]);
74
+ useCloseOnEsc(api.hide, {
75
+ disabled: !isMounted,
76
+ });
77
+ return (_jsxs(_Fragment, { children: [(isVisible || isMounted) && (_jsx(Portal, { children: _jsx("div", { ...props, className: classNames('dc-tooltip', className), ref: tooltipRef, role: "tooltip", onMouseEnter: api.show, onMouseLeave: api.hide, children: title }) })), children({
78
+ 'ref': (el) => {
79
+ anchorRef.current = el;
80
+ },
81
+ 'aria-describedby': tooltipId,
82
+ 'onFocus': api.show,
83
+ 'onBlur': api.hide,
84
+ 'onMouseEnter': api.show,
85
+ 'onMouseLeave': api.hide,
86
+ }, api)] }));
70
87
  }
88
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../src/components/tooltip/tooltip.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- export * from './use-callback-ref.js';
2
- export * from './use-disable-body-scroll.js';
3
- export * from './use-esc-key-down.js';
1
+ export * from './use-close-on-click-outside.js';
2
+ export * from './use-close-on-esc.js';
4
3
  export * from './use-focus-trap.js';
5
- export * from './use-mount-transition.js';
6
- export * from './use-show-transition.js';
4
+ export * from './use-lock-body-scroll.js';
7
5
  export * from './use-preserve-props-when-closed.js';
6
+ export * from './use-ref-callback.js';
@@ -1,7 +1,7 @@
1
- export * from './use-callback-ref.js';
2
- export * from './use-disable-body-scroll.js';
3
- export * from './use-esc-key-down.js';
1
+ export * from './use-close-on-click-outside.js';
2
+ export * from './use-close-on-esc.js';
4
3
  export * from './use-focus-trap.js';
5
- export * from './use-mount-transition.js';
6
- export * from './use-show-transition.js';
4
+ export * from './use-lock-body-scroll.js';
7
5
  export * from './use-preserve-props-when-closed.js';
6
+ export * from './use-ref-callback.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type RefObject } from 'react';
2
+ type CloseHandler = () => void;
3
+ type ContainerRef = RefObject<HTMLElement | null>;
4
+ type ShouldIgnoreClickPredicate = (node: Node) => boolean;
5
+ export declare function useCloseOnClickOutside(handler: CloseHandler, opts: {
6
+ ref: ContainerRef;
7
+ disabled?: boolean;
8
+ shouldIgnoreClick?: ShouldIgnoreClickPredicate;
9
+ }): void;
10
+ export {};
@@ -0,0 +1,57 @@
1
+ import { useEffect } from 'react';
2
+ import { useRefCallback } from './use-ref-callback.js';
3
+ const handlerStack = [];
4
+ const callbackParams = new Map();
5
+ export function useCloseOnClickOutside(handler, opts) {
6
+ const ref = opts.ref;
7
+ const disabled = opts.disabled || false;
8
+ const onClose = useRefCallback(handler);
9
+ const shouldIgnoreClick = useRefCallback((node) => {
10
+ if (typeof opts.shouldIgnoreClick === 'function') {
11
+ return opts.shouldIgnoreClick(node);
12
+ }
13
+ return false;
14
+ });
15
+ useEffect(() => {
16
+ if (disabled) {
17
+ return;
18
+ }
19
+ const handleClick = (event) => {
20
+ const callback = handlerStack.at(-1);
21
+ if (!callback) {
22
+ return;
23
+ }
24
+ const params = callbackParams.get(callback);
25
+ if (!params) {
26
+ return;
27
+ }
28
+ const target = event.target;
29
+ const container = params.ref.current;
30
+ const shouldIgnoreClick = params.shouldIgnoreClick;
31
+ if (callback
32
+ && target instanceof Node
33
+ && container instanceof Node
34
+ && !container.contains(target)
35
+ && !shouldIgnoreClick(target)) {
36
+ event.preventDefault();
37
+ callback();
38
+ }
39
+ };
40
+ handlerStack.push(onClose);
41
+ callbackParams.set(onClose, { ref, shouldIgnoreClick });
42
+ if (handlerStack.length === 1) {
43
+ document.addEventListener('click', handleClick, { capture: true });
44
+ }
45
+ return () => {
46
+ const index = handlerStack.indexOf(onClose);
47
+ if (index >= 0) {
48
+ handlerStack.splice(index, 1);
49
+ callbackParams.delete(onClose);
50
+ }
51
+ if (handlerStack.length === 0) {
52
+ document.removeEventListener('click', handleClick, { capture: true });
53
+ }
54
+ };
55
+ }, [ref, disabled, onClose, shouldIgnoreClick]);
56
+ }
57
+ //# sourceMappingURL=use-close-on-click-outside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-close-on-click-outside.js","sourceRoot":"","sources":["../../src/hooks/use-close-on-click-outside.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAavD,MAAM,YAAY,GAAmB,EAAE,CAAC;AACxC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEvD,MAAM,UAAU,sBAAsB,CAAC,OAAqB,EAAE,IAI7D;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,iBAAiB,GAAG,cAAc,CAA6B,CAAC,IAAI,EAAE,EAAE;QAC5E,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YACrC,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;YACnD,IACE,QAAQ;mBACL,MAAM,YAAY,IAAI;mBACtB,SAAS,YAAY,IAAI;mBACzB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;mBAC3B,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7B,CAAC;gBACD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,QAAQ,EAAE,CAAC;YACb,CAAC;QACH,CAAC,CAAC;QAEF,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACxD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC9B,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,5 @@
1
+ type CloseHandler = () => void;
2
+ export declare function useCloseOnEsc(handler: CloseHandler, opts?: {
3
+ disabled?: boolean;
4
+ }): void;
5
+ export {};