@northlight/ui 2.41.0 → 2.41.1

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 (500) hide show
  1. package/lib/components/accordion/accordion-button.tsx +23 -0
  2. package/lib/components/accordion/accordion-item.tsx +9 -0
  3. package/lib/components/accordion/accordion-panel.tsx +13 -0
  4. package/lib/components/accordion/accordion.tsx +49 -0
  5. package/lib/components/accordion/index.ts +13 -0
  6. package/lib/components/alert/alert.tsx +64 -0
  7. package/lib/components/alert/index.ts +7 -0
  8. package/lib/components/alert/types.ts +7 -0
  9. package/lib/components/alert-dialog/index.ts +9 -0
  10. package/lib/components/aspect-ratio/aspect-ratio.tsx +17 -0
  11. package/lib/components/aspect-ratio/index.ts +2 -0
  12. package/lib/components/async-error/async-error.tsx +33 -0
  13. package/lib/components/async-error/index.ts +2 -0
  14. package/lib/components/async-error/types.ts +5 -0
  15. package/lib/components/avatar/avatar-badge.tsx +26 -0
  16. package/lib/components/avatar/avatar-group.tsx +56 -0
  17. package/lib/components/avatar/avatar.tsx +77 -0
  18. package/lib/components/avatar/index.ts +3 -0
  19. package/lib/components/avatar/types.ts +34 -0
  20. package/lib/components/badge/badge.tsx +69 -0
  21. package/lib/components/badge/index.ts +2 -0
  22. package/lib/components/badge/types.ts +15 -0
  23. package/lib/components/blinker/blinker.tsx +26 -0
  24. package/lib/components/blinker/index.ts +2 -0
  25. package/lib/components/blinker/types.ts +5 -0
  26. package/lib/components/box/index.ts +2 -0
  27. package/lib/components/breadcrumb/index.ts +6 -0
  28. package/lib/components/button/button.tsx +111 -0
  29. package/lib/components/button/index.ts +5 -0
  30. package/lib/components/button/types.ts +20 -0
  31. package/lib/components/card/index.ts +6 -0
  32. package/lib/components/carousel/carousel-arrow.tsx +27 -0
  33. package/lib/components/carousel/carousel-item.tsx +23 -0
  34. package/lib/components/carousel/carousel.tsx +223 -0
  35. package/lib/components/carousel/constants.ts +2 -0
  36. package/lib/components/carousel/index.ts +1 -0
  37. package/lib/components/carousel/types.ts +32 -0
  38. package/lib/components/center/index.ts +4 -0
  39. package/lib/components/checkbox/checkbox-field.tsx +75 -0
  40. package/lib/components/checkbox/checkbox-group-field.tsx +49 -0
  41. package/lib/components/checkbox/checkbox.tsx +54 -0
  42. package/lib/components/checkbox/index.ts +7 -0
  43. package/lib/components/checkbox/types.ts +31 -0
  44. package/lib/components/circle/index.ts +3 -0
  45. package/lib/components/circular-progress/index.ts +4 -0
  46. package/lib/components/clickable/clickable.tsx +56 -0
  47. package/lib/components/clickable/index.ts +2 -0
  48. package/lib/components/clickable/types.ts +7 -0
  49. package/lib/components/clipboard-input/clipboard-input.tsx +65 -0
  50. package/lib/components/clipboard-input/index.ts +2 -0
  51. package/lib/components/clipboard-input/types.ts +6 -0
  52. package/lib/components/close-button/index.ts +3 -0
  53. package/lib/components/code/index.ts +3 -0
  54. package/lib/components/color-picker/color-button.tsx +51 -0
  55. package/lib/components/color-picker/color-picker-field.tsx +37 -0
  56. package/lib/components/color-picker/color-picker.tsx +205 -0
  57. package/lib/components/color-picker/colors-expand-button.tsx +47 -0
  58. package/lib/components/color-picker/constants.ts +5 -0
  59. package/lib/components/color-picker/index.ts +3 -0
  60. package/lib/components/color-picker/types.ts +44 -0
  61. package/lib/components/combo-picker/combo-picker-field.tsx +99 -0
  62. package/lib/components/combo-picker/combo-picker.tsx +165 -0
  63. package/lib/components/combo-picker/index.ts +3 -0
  64. package/lib/components/combo-picker/types.ts +35 -0
  65. package/lib/components/container/index.ts +5 -0
  66. package/lib/components/createable-select-dropdown/createable-select-dropdown.tsx +282 -0
  67. package/lib/components/createable-select-dropdown/custom-components.tsx +44 -0
  68. package/lib/components/createable-select-dropdown/index.ts +1 -0
  69. package/lib/components/createable-select-dropdown/types.ts +76 -0
  70. package/lib/components/date-picker/components/calendar/calendar.tsx +56 -0
  71. package/lib/components/date-picker/components/calendar/components/calendar-cell.tsx +41 -0
  72. package/lib/components/date-picker/components/calendar/components/calendar-grid.tsx +52 -0
  73. package/lib/components/date-picker/components/calendar/components/day-labels.tsx +18 -0
  74. package/lib/components/date-picker/components/calendar/components/get-week-number-start-of-month.ts +68 -0
  75. package/lib/components/date-picker/components/calendar/components/index.ts +3 -0
  76. package/lib/components/date-picker/components/calendar/components/month-button.tsx +21 -0
  77. package/lib/components/date-picker/components/calendar/components/range-cell.tsx +75 -0
  78. package/lib/components/date-picker/components/calendar/components/standalone-calendar-grid.tsx +108 -0
  79. package/lib/components/date-picker/components/calendar/components/types.ts +43 -0
  80. package/lib/components/date-picker/components/calendar/components/utils.ts +5 -0
  81. package/lib/components/date-picker/components/calendar/constants.ts +14 -0
  82. package/lib/components/date-picker/components/calendar/date-select/index.ts +4 -0
  83. package/lib/components/date-picker/components/calendar/date-select/month-select.tsx +36 -0
  84. package/lib/components/date-picker/components/calendar/date-select/types.ts +29 -0
  85. package/lib/components/date-picker/components/calendar/date-select/utils.ts +33 -0
  86. package/lib/components/date-picker/components/calendar/date-select/year-select-calendar.tsx +17 -0
  87. package/lib/components/date-picker/components/calendar/date-select/year-select-range-calendar.tsx +19 -0
  88. package/lib/components/date-picker/components/calendar/date-select/year-select.tsx +31 -0
  89. package/lib/components/date-picker/components/calendar/index.ts +1 -0
  90. package/lib/components/date-picker/components/calendar/quick-navigation/adjust-range.tsx +227 -0
  91. package/lib/components/date-picker/components/calendar/quick-navigation/button-row.tsx +31 -0
  92. package/lib/components/date-picker/components/calendar/quick-navigation/date-button.tsx +32 -0
  93. package/lib/components/date-picker/components/calendar/quick-navigation/get-quick-select-options.ts +319 -0
  94. package/lib/components/date-picker/components/calendar/quick-navigation/index.ts +1 -0
  95. package/lib/components/date-picker/components/calendar/quick-navigation/move-button.tsx +23 -0
  96. package/lib/components/date-picker/components/calendar/quick-navigation/quick-select.tsx +113 -0
  97. package/lib/components/date-picker/components/calendar/quick-navigation/types.ts +59 -0
  98. package/lib/components/date-picker/components/calendar/quick-navigation/utils.ts +8 -0
  99. package/lib/components/date-picker/components/calendar/range-calendar.tsx +153 -0
  100. package/lib/components/date-picker/components/calendar/types.ts +19 -0
  101. package/lib/components/date-picker/components/date-field/date-field.tsx +51 -0
  102. package/lib/components/date-picker/components/date-field/date-segment.tsx +34 -0
  103. package/lib/components/date-picker/components/date-field/index.ts +4 -0
  104. package/lib/components/date-picker/components/date-field/styled-field.tsx +27 -0
  105. package/lib/components/date-picker/components/date-field/trigger.tsx +27 -0
  106. package/lib/components/date-picker/components/date-field/types.ts +25 -0
  107. package/lib/components/date-picker/components/date-field/utils.ts +15 -0
  108. package/lib/components/date-picker/components/index.ts +2 -0
  109. package/lib/components/date-picker/date-picker/date-picker-locale-wrapper.tsx +16 -0
  110. package/lib/components/date-picker/date-picker/date-picker.tsx +145 -0
  111. package/lib/components/date-picker/date-picker/date-range-picker.tsx +325 -0
  112. package/lib/components/date-picker/date-picker/index.ts +3 -0
  113. package/lib/components/date-picker/date-picker-field/date-picker-field.tsx +97 -0
  114. package/lib/components/date-picker/date-picker-field/date-range-picker-field.tsx +81 -0
  115. package/lib/components/date-picker/date-picker-field/index.ts +2 -0
  116. package/lib/components/date-picker/date-picker-field/utils.ts +9 -0
  117. package/lib/components/date-picker/index.ts +3 -0
  118. package/lib/components/date-picker/types.ts +108 -0
  119. package/lib/components/divider/index.ts +3 -0
  120. package/lib/components/drag-and-drop/drag-and-drop.tsx +15 -0
  121. package/lib/components/drag-and-drop/drag-handle.tsx +23 -0
  122. package/lib/components/drag-and-drop/drag-item.tsx +42 -0
  123. package/lib/components/drag-and-drop/draggable.tsx +94 -0
  124. package/lib/components/drag-and-drop/drop-zone.tsx +32 -0
  125. package/lib/components/drag-and-drop/droppable.tsx +58 -0
  126. package/lib/components/drag-and-drop/index.ts +17 -0
  127. package/lib/components/drag-and-drop/multi-sort.tsx +198 -0
  128. package/lib/components/drag-and-drop/sortable-container.tsx +26 -0
  129. package/lib/components/drag-and-drop/sortable-item.tsx +96 -0
  130. package/lib/components/drag-and-drop/sortable-list.tsx +163 -0
  131. package/lib/components/drag-and-drop/sortable.tsx +16 -0
  132. package/lib/components/drag-and-drop/types.ts +105 -0
  133. package/lib/components/drawer/index.ts +9 -0
  134. package/lib/components/editable/index.ts +8 -0
  135. package/lib/components/editable-text/editable-controls.tsx +72 -0
  136. package/lib/components/editable-text/editable-text.tsx +83 -0
  137. package/lib/components/editable-text/index.ts +2 -0
  138. package/lib/components/editable-text/types.ts +17 -0
  139. package/lib/components/fast-grid/fast-grid.tsx +123 -0
  140. package/lib/components/fast-grid/index.ts +2 -0
  141. package/lib/components/fast-grid/types.ts +26 -0
  142. package/lib/components/fast-list/fast-list.tsx +53 -0
  143. package/lib/components/fast-list/index.ts +2 -0
  144. package/lib/components/fast-list/types.ts +17 -0
  145. package/lib/components/file-picker/confirm-delete-modal.tsx +45 -0
  146. package/lib/components/file-picker/constants.ts +7 -0
  147. package/lib/components/file-picker/file-editor-modal.tsx +105 -0
  148. package/lib/components/file-picker/file-icon-button.tsx +14 -0
  149. package/lib/components/file-picker/file-item.tsx +207 -0
  150. package/lib/components/file-picker/file-picker-field.tsx +73 -0
  151. package/lib/components/file-picker/file-picker.tsx +365 -0
  152. package/lib/components/file-picker/index.ts +7 -0
  153. package/lib/components/file-picker/multi-file-list.tsx +88 -0
  154. package/lib/components/file-picker/multi-file-picker-field.tsx +95 -0
  155. package/lib/components/file-picker/multi-file-picker.tsx +95 -0
  156. package/lib/components/file-picker/multi-file-uploader.tsx +189 -0
  157. package/lib/components/file-picker/types.ts +132 -0
  158. package/lib/components/file-picker/utils.ts +283 -0
  159. package/lib/components/flex/index.ts +4 -0
  160. package/lib/components/flip-button/flip-button-group-field.tsx +58 -0
  161. package/lib/components/flip-button/flip-button-group.tsx +70 -0
  162. package/lib/components/flip-button/flip-button.tsx +185 -0
  163. package/lib/components/flip-button/index.ts +4 -0
  164. package/lib/components/flip-button/types.ts +100 -0
  165. package/lib/components/flip-button/utils.ts +45 -0
  166. package/lib/components/form/field.tsx +147 -0
  167. package/lib/components/form/form.tsx +210 -0
  168. package/lib/components/form/index.ts +5 -0
  169. package/lib/components/form/trim-form-values.ts +20 -0
  170. package/lib/components/form/types.ts +99 -0
  171. package/lib/components/form/use-set-value-refreshed.ts +12 -0
  172. package/lib/components/form-control/form-label.tsx +29 -0
  173. package/lib/components/form-control/index.ts +7 -0
  174. package/lib/components/form-control/types.ts +5 -0
  175. package/lib/components/grid/index.ts +4 -0
  176. package/lib/components/heading/index.ts +3 -0
  177. package/lib/components/highlight/index.ts +1 -0
  178. package/lib/components/icon/icon.tsx +38 -0
  179. package/lib/components/icon/index.ts +2 -0
  180. package/lib/components/icon/types.ts +7 -0
  181. package/lib/components/icon-button/icon-button.tsx +45 -0
  182. package/lib/components/icon-button/index.ts +2 -0
  183. package/lib/components/icon-button/types.ts +6 -0
  184. package/lib/components/image/index.ts +5 -0
  185. package/lib/components/index.ts +94 -0
  186. package/lib/components/input/index.ts +19 -0
  187. package/lib/components/intent-button/index.ts +1 -0
  188. package/lib/components/intent-button/intent-button.tsx +118 -0
  189. package/lib/components/intent-button/timeout-progress-circle.tsx +48 -0
  190. package/lib/components/intent-button/types.ts +16 -0
  191. package/lib/components/kbd/index.ts +3 -0
  192. package/lib/components/keyframes/index.ts +3 -0
  193. package/lib/components/link/index.ts +3 -0
  194. package/lib/components/link-overlay/index.ts +4 -0
  195. package/lib/components/list/index.ts +7 -0
  196. package/lib/components/mark/index.ts +1 -0
  197. package/lib/components/mediatool-theme-provider/index.ts +2 -0
  198. package/lib/components/mediatool-theme-provider/mediatool-theme-provider.tsx +28 -0
  199. package/lib/components/mediatool-theme-provider/types.ts +8 -0
  200. package/lib/components/menu/index.ts +13 -0
  201. package/lib/components/menu/menu.tsx +103 -0
  202. package/lib/components/menu/types.ts +7 -0
  203. package/lib/components/modal/index.ts +12 -0
  204. package/lib/components/modal/modal-base.tsx +22 -0
  205. package/lib/components/modal/modal-body.tsx +6 -0
  206. package/lib/components/modal/modal.tsx +18 -0
  207. package/lib/components/modal/types.ts +9 -0
  208. package/lib/components/notification-icon-button/index.ts +2 -0
  209. package/lib/components/notification-icon-button/notification-icon-button.tsx +57 -0
  210. package/lib/components/notification-icon-button/types.ts +8 -0
  211. package/lib/components/number-input/advanced-parse-float.ts +30 -0
  212. package/lib/components/number-input/index.ts +9 -0
  213. package/lib/components/number-input/number-input-field.tsx +74 -0
  214. package/lib/components/number-input/number-input-stepper.tsx +47 -0
  215. package/lib/components/number-input/number-input.tsx +67 -0
  216. package/lib/components/number-input/types.ts +37 -0
  217. package/lib/components/organization-logo/index.ts +2 -0
  218. package/lib/components/organization-logo/organization-logo.tsx +46 -0
  219. package/lib/components/organization-logo/types.ts +8 -0
  220. package/lib/components/overflow-group/index.ts +3 -0
  221. package/lib/components/overflow-group/overflow-group.tsx +189 -0
  222. package/lib/components/overflow-group/types.ts +10 -0
  223. package/lib/components/overflow-group/use-overflow-group.ts +12 -0
  224. package/lib/components/pin-input/index.ts +5 -0
  225. package/lib/components/pin-input/pin-input.tsx +31 -0
  226. package/lib/components/pin-input/types.ts +10 -0
  227. package/lib/components/popover/index.ts +11 -0
  228. package/lib/components/popover/popover.tsx +6 -0
  229. package/lib/components/portal/index.ts +3 -0
  230. package/lib/components/portal/render-in-portal.tsx +17 -0
  231. package/lib/components/progress/constants.ts +2 -0
  232. package/lib/components/progress/index.ts +2 -0
  233. package/lib/components/progress/loading-bar.tsx +93 -0
  234. package/lib/components/progress/progress-bar.tsx +36 -0
  235. package/lib/components/progress/types.ts +8 -0
  236. package/lib/components/progress/utils.ts +17 -0
  237. package/lib/components/radio/index.ts +8 -0
  238. package/lib/components/radio/radio-group-field.tsx +49 -0
  239. package/lib/components/radio/radio-group.tsx +30 -0
  240. package/lib/components/radio/radio.tsx +23 -0
  241. package/lib/components/radio/types.ts +33 -0
  242. package/lib/components/range-slider/index.ts +7 -0
  243. package/lib/components/resize-handle/index.ts +1 -0
  244. package/lib/components/resize-handle/resize-handle.tsx +26 -0
  245. package/lib/components/search-bar/get-components.tsx +76 -0
  246. package/lib/components/search-bar/index.ts +3 -0
  247. package/lib/components/search-bar/search-bar-field.tsx +70 -0
  248. package/lib/components/search-bar/search-bar.tsx +127 -0
  249. package/lib/components/search-bar/styles.ts +49 -0
  250. package/lib/components/search-bar/types.ts +53 -0
  251. package/lib/components/select/get-matching-value.ts +23 -0
  252. package/lib/components/select/index.ts +13 -0
  253. package/lib/components/select/select-field.tsx +89 -0
  254. package/lib/components/select/select.tsx +209 -0
  255. package/lib/components/select/sortable-select-values.tsx +49 -0
  256. package/lib/components/select/sortable-select.tsx +428 -0
  257. package/lib/components/select/types.ts +67 -0
  258. package/lib/components/show/index.ts +4 -0
  259. package/lib/components/simple-grid/index.ts +3 -0
  260. package/lib/components/skeleton/index.ts +5 -0
  261. package/lib/components/slider/index.ts +7 -0
  262. package/lib/components/spinner/index.ts +2 -0
  263. package/lib/components/spinner/spinner.tsx +15 -0
  264. package/lib/components/spinner/types.ts +3 -0
  265. package/lib/components/split-pane/index.ts +4 -0
  266. package/lib/components/split-pane/pane-divider.tsx +25 -0
  267. package/lib/components/split-pane/pane-item.tsx +14 -0
  268. package/lib/components/split-pane/split-pane.tsx +75 -0
  269. package/lib/components/split-pane/types.ts +10 -0
  270. package/lib/components/stack/index.ts +7 -0
  271. package/lib/components/stat/index.ts +8 -0
  272. package/lib/components/status-pin/index.ts +2 -0
  273. package/lib/components/status-pin/pin-size-map.ts +7 -0
  274. package/lib/components/status-pin/pin-variant-map.ts +12 -0
  275. package/lib/components/status-pin/status-pin.tsx +55 -0
  276. package/lib/components/status-pin/types.ts +7 -0
  277. package/lib/components/step-stack/index.ts +1 -0
  278. package/lib/components/step-stack/step-stack.tsx +113 -0
  279. package/lib/components/step-stack/types.ts +17 -0
  280. package/lib/components/steps/index.ts +10 -0
  281. package/lib/components/steps/step-list.tsx +30 -0
  282. package/lib/components/steps/step-panel.tsx +15 -0
  283. package/lib/components/steps/step.tsx +52 -0
  284. package/lib/components/steps/steps.tsx +34 -0
  285. package/lib/components/steps/types.ts +12 -0
  286. package/lib/components/switch/index.ts +3 -0
  287. package/lib/components/switch/switch-field.tsx +74 -0
  288. package/lib/components/switch/switch.tsx +41 -0
  289. package/lib/components/switch/types.ts +18 -0
  290. package/lib/components/table/index.ts +22 -0
  291. package/lib/components/table/table.tsx +31 -0
  292. package/lib/components/table/types.ts +5 -0
  293. package/lib/components/tabs/index.ts +12 -0
  294. package/lib/components/tabs/tab-panel.tsx +14 -0
  295. package/lib/components/tabs/tab.tsx +31 -0
  296. package/lib/components/tabs/tabs.tsx +76 -0
  297. package/lib/components/tabs/types.ts +12 -0
  298. package/lib/components/tag/index.ts +9 -0
  299. package/lib/components/tag/overflow-indicator.tsx +11 -0
  300. package/lib/components/tag/tag-group.tsx +57 -0
  301. package/lib/components/tag/tag.tsx +97 -0
  302. package/lib/components/tag/types.ts +15 -0
  303. package/lib/components/tags-input/index.ts +2 -0
  304. package/lib/components/tags-input/tags-input-styles.ts +35 -0
  305. package/lib/components/tags-input/tags-input.tsx +147 -0
  306. package/lib/components/tags-input/types.ts +20 -0
  307. package/lib/components/text/index.ts +3 -0
  308. package/lib/components/text-field/formatted-number-input-field.tsx +54 -0
  309. package/lib/components/text-field/formatted-number-input.tsx +167 -0
  310. package/lib/components/text-field/index.ts +5 -0
  311. package/lib/components/text-field/masked-text-input.tsx +37 -0
  312. package/lib/components/text-field/round-to-precision.ts +4 -0
  313. package/lib/components/text-field/text-field.tsx +61 -0
  314. package/lib/components/text-field/types.ts +60 -0
  315. package/lib/components/textarea/index.ts +3 -0
  316. package/lib/components/textarea/textarea-field.tsx +34 -0
  317. package/lib/components/textarea/textarea.tsx +27 -0
  318. package/lib/components/textarea/types.ts +22 -0
  319. package/lib/components/toast/index.ts +3 -0
  320. package/lib/components/toast/toast.tsx +75 -0
  321. package/lib/components/toast/types.ts +16 -0
  322. package/lib/components/toast/use-toast.tsx +57 -0
  323. package/lib/components/toolbox/index.ts +5 -0
  324. package/lib/components/toolbox/toolbox-content.tsx +23 -0
  325. package/lib/components/toolbox/toolbox-footer.tsx +18 -0
  326. package/lib/components/toolbox/toolbox-header.tsx +31 -0
  327. package/lib/components/toolbox/toolbox.tsx +132 -0
  328. package/lib/components/toolbox/types.ts +34 -0
  329. package/lib/components/tooltip/index.ts +1 -0
  330. package/lib/components/tooltip/tooltip.tsx +207 -0
  331. package/lib/components/tooltip/types.ts +9 -0
  332. package/lib/components/transitions/collapse.tsx +78 -0
  333. package/lib/components/transitions/constants.ts +2 -0
  334. package/lib/components/transitions/fade.tsx +72 -0
  335. package/lib/components/transitions/index.ts +6 -0
  336. package/lib/components/transitions/scale-fade.tsx +70 -0
  337. package/lib/components/transitions/slide-fade.tsx +43 -0
  338. package/lib/components/transitions/slide.tsx +37 -0
  339. package/lib/components/transitions/types.ts +37 -0
  340. package/lib/components/transitions/utils.ts +103 -0
  341. package/lib/components/types/color/index.ts +24 -0
  342. package/lib/components/types/index.ts +2 -0
  343. package/lib/components/types/toastIconMap/index.ts +20 -0
  344. package/lib/components/types/tooltipIconMap/index.ts +21 -0
  345. package/lib/components/typography/body/index.ts +2 -0
  346. package/lib/components/typography/body/p.tsx +31 -0
  347. package/lib/components/typography/body/types.ts +5 -0
  348. package/lib/components/typography/headings/h1.tsx +29 -0
  349. package/lib/components/typography/headings/h2.tsx +30 -0
  350. package/lib/components/typography/headings/h3.tsx +29 -0
  351. package/lib/components/typography/headings/h4.tsx +29 -0
  352. package/lib/components/typography/headings/h5.tsx +29 -0
  353. package/lib/components/typography/headings/h6.tsx +29 -0
  354. package/lib/components/typography/headings/index.ts +7 -0
  355. package/lib/components/typography/headings/types.ts +3 -0
  356. package/lib/components/typography/index.ts +6 -0
  357. package/lib/components/typography/labels/index.ts +2 -0
  358. package/lib/components/typography/labels/label.tsx +39 -0
  359. package/lib/components/typography/labels/types.ts +6 -0
  360. package/lib/components/typography/numvals/index.ts +1 -0
  361. package/lib/components/typography/numvals/numval.tsx +33 -0
  362. package/lib/components/typography/stylized/blockquote.tsx +32 -0
  363. package/lib/components/typography/stylized/capitalized.tsx +37 -0
  364. package/lib/components/typography/stylized/index.ts +5 -0
  365. package/lib/components/typography/stylized/lead.tsx +37 -0
  366. package/lib/components/typography/stylized/small.tsx +37 -0
  367. package/lib/components/typography/stylized/tiny.tsx +37 -0
  368. package/lib/components/typography/types.ts +11 -0
  369. package/lib/components/visually-hidden/index.ts +4 -0
  370. package/lib/components/wrap/index.ts +4 -0
  371. package/lib/general.d.ts +27 -0
  372. package/lib/hooks/index.ts +26 -0
  373. package/lib/hooks/use-arrow-focus/index.ts +76 -0
  374. package/lib/hooks/use-boolean/index.ts +3 -0
  375. package/lib/hooks/use-breakpoint-value/index.ts +4 -0
  376. package/lib/hooks/use-clipboard/index.ts +3 -0
  377. package/lib/hooks/use-controllable/index.ts +4 -0
  378. package/lib/hooks/use-controller/index.ts +3 -0
  379. package/lib/hooks/use-debounce/index.ts +16 -0
  380. package/lib/hooks/use-did-update-effect/index.ts +12 -0
  381. package/lib/hooks/use-disclosure/index.ts +3 -0
  382. package/lib/hooks/use-field-array/index.ts +3 -0
  383. package/lib/hooks/use-form/index.ts +3 -0
  384. package/lib/hooks/use-form-context/index.ts +3 -0
  385. package/lib/hooks/use-form-state/index.ts +3 -0
  386. package/lib/hooks/use-interval/index.ts +3 -0
  387. package/lib/hooks/use-loading-message/index.ts +15 -0
  388. package/lib/hooks/use-media-query/index.ts +3 -0
  389. package/lib/hooks/use-merge-refs/index.ts +3 -0
  390. package/lib/hooks/use-outside-click/index.ts +3 -0
  391. package/lib/hooks/use-outside-rect-click/index.ts +98 -0
  392. package/lib/hooks/use-prefers-reduced-motion/index.ts +3 -0
  393. package/lib/hooks/use-resize-width/index.ts +44 -0
  394. package/lib/hooks/use-screen-size/index.ts +12 -0
  395. package/lib/hooks/use-scroll-to-bottom/index.ts +18 -0
  396. package/lib/hooks/use-scroll-to-bottom/utils/smooth-scroll-to-bottom.ts +17 -0
  397. package/lib/hooks/use-select-callbacks/index.ts +2 -0
  398. package/lib/hooks/use-select-callbacks/types.ts +25 -0
  399. package/lib/hooks/use-select-callbacks/use-select-callbacks.ts +43 -0
  400. package/lib/hooks/use-theme/index.ts +3 -0
  401. package/lib/hooks/use-token/index.ts +3 -0
  402. package/lib/hooks/use-watch/index.ts +3 -0
  403. package/lib/index.ts +6 -0
  404. package/lib/internal-components/index.ts +1 -0
  405. package/lib/internal-components/input-group-wrapper/index.ts +2 -0
  406. package/lib/internal-components/input-group-wrapper/input-group-wrapper.tsx +24 -0
  407. package/lib/internal-components/input-group-wrapper/types.ts +4 -0
  408. package/lib/theme/components/alert/index.ts +94 -0
  409. package/lib/theme/components/avatar/get-avatar-bg-color.ts +11 -0
  410. package/lib/theme/components/avatar/index.ts +158 -0
  411. package/lib/theme/components/badge/index.ts +80 -0
  412. package/lib/theme/components/blinker/index.ts +67 -0
  413. package/lib/theme/components/breadcrumb/index.ts +22 -0
  414. package/lib/theme/components/button/index.ts +205 -0
  415. package/lib/theme/components/calendar/index.ts +47 -0
  416. package/lib/theme/components/carousel/index.ts +30 -0
  417. package/lib/theme/components/checkbox/index.ts +90 -0
  418. package/lib/theme/components/clipboard-input/index.ts +38 -0
  419. package/lib/theme/components/close-button/index.ts +25 -0
  420. package/lib/theme/components/color-picker/index.ts +58 -0
  421. package/lib/theme/components/date-picker/index.ts +70 -0
  422. package/lib/theme/components/drag-and-drop/index.ts +23 -0
  423. package/lib/theme/components/editable-text/index.ts +82 -0
  424. package/lib/theme/components/file-picker/index.ts +111 -0
  425. package/lib/theme/components/flip-button/index.ts +167 -0
  426. package/lib/theme/components/icon/index.ts +22 -0
  427. package/lib/theme/components/index.ts +40 -0
  428. package/lib/theme/components/input/index.ts +223 -0
  429. package/lib/theme/components/link/index.ts +16 -0
  430. package/lib/theme/components/menu/index.ts +50 -0
  431. package/lib/theme/components/modal/index.ts +49 -0
  432. package/lib/theme/components/notification-icon-button/index.ts +52 -0
  433. package/lib/theme/components/number-input/index.ts +118 -0
  434. package/lib/theme/components/pin-input/index.ts +52 -0
  435. package/lib/theme/components/popover/index.ts +10 -0
  436. package/lib/theme/components/progress-bar/index.ts +12 -0
  437. package/lib/theme/components/radio/index.ts +73 -0
  438. package/lib/theme/components/select/custom-select.ts +44 -0
  439. package/lib/theme/components/select/index.ts +65 -0
  440. package/lib/theme/components/spinner/index.ts +12 -0
  441. package/lib/theme/components/split-pane/index.ts +33 -0
  442. package/lib/theme/components/steps/index.ts +2 -0
  443. package/lib/theme/components/steps/step/index.ts +63 -0
  444. package/lib/theme/components/steps/step-list/index.ts +13 -0
  445. package/lib/theme/components/switch/index.ts +23 -0
  446. package/lib/theme/components/table/index.ts +81 -0
  447. package/lib/theme/components/tabs/index.ts +115 -0
  448. package/lib/theme/components/tag/index.ts +81 -0
  449. package/lib/theme/components/textarea/index.ts +62 -0
  450. package/lib/theme/components/toolbox/index.ts +64 -0
  451. package/lib/theme/components/tooltip/index.ts +68 -0
  452. package/lib/theme/components/typography/body/index.ts +1 -0
  453. package/lib/theme/components/typography/body/p.ts +32 -0
  454. package/lib/theme/components/typography/headings/h1.ts +20 -0
  455. package/lib/theme/components/typography/headings/h2.ts +20 -0
  456. package/lib/theme/components/typography/headings/h3.ts +20 -0
  457. package/lib/theme/components/typography/headings/h4.ts +20 -0
  458. package/lib/theme/components/typography/headings/h5.ts +20 -0
  459. package/lib/theme/components/typography/headings/h6.ts +20 -0
  460. package/lib/theme/components/typography/headings/index.ts +6 -0
  461. package/lib/theme/components/typography/index.ts +5 -0
  462. package/lib/theme/components/typography/labels/index.ts +1 -0
  463. package/lib/theme/components/typography/labels/label.ts +71 -0
  464. package/lib/theme/components/typography/numvals/index.ts +1 -0
  465. package/lib/theme/components/typography/numvals/numval.ts +95 -0
  466. package/lib/theme/components/typography/stylized/blockquote.ts +17 -0
  467. package/lib/theme/components/typography/stylized/capitalized.ts +17 -0
  468. package/lib/theme/components/typography/stylized/index.ts +5 -0
  469. package/lib/theme/components/typography/stylized/lead.ts +17 -0
  470. package/lib/theme/components/typography/stylized/small.ts +17 -0
  471. package/lib/theme/components/typography/stylized/tiny.ts +17 -0
  472. package/lib/theme/global/scrollbar.ts +23 -0
  473. package/lib/theme/index.ts +67 -0
  474. package/lib/theme/process-color-scheme-based-on-theme.ts +24 -0
  475. package/lib/theme/skins/camphouse-light/index.ts +34 -0
  476. package/lib/theme/skins/index.ts +3 -0
  477. package/lib/theme/skins/tott/index.ts +30 -0
  478. package/lib/theme/skins/webapp/index.ts +34 -0
  479. package/lib/types/color/color.ts +24 -0
  480. package/lib/types/color/index.ts +1 -0
  481. package/lib/types/index.ts +2 -0
  482. package/lib/types/input-field/index.ts +1 -0
  483. package/lib/types/input-field/input-field.ts +4 -0
  484. package/lib/utils/add-alpha/index.ts +10 -0
  485. package/lib/utils/clamp/index.ts +2 -0
  486. package/lib/utils/debounce/create-debounce-function-instance.ts +18 -0
  487. package/lib/utils/debounce/index.ts +1 -0
  488. package/lib/utils/get-children-with-props/index.ts +17 -0
  489. package/lib/utils/get-children-with-props/pass-props-to-child.ts +10 -0
  490. package/lib/utils/get-consistent-random-color-from-string/index.ts +26 -0
  491. package/lib/utils/get-contrast-color/index.ts +34 -0
  492. package/lib/utils/get-field-error/index.ts +12 -0
  493. package/lib/utils/get-initials/index.ts +6 -0
  494. package/lib/utils/get-shades/index.ts +31 -0
  495. package/lib/utils/highlight/index.ts +9 -0
  496. package/lib/utils/index.ts +13 -0
  497. package/lib/utils/luminosity/index.ts +21 -0
  498. package/lib/utils/ring/index.ts +10 -0
  499. package/lib/utils/use-current-theme/index.ts +10 -0
  500. package/package.json +3 -2
@@ -0,0 +1,210 @@
1
+ import React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react'
2
+ import {
3
+ DefaultValues,
4
+ FieldValues,
5
+ FormProvider,
6
+ Resolver,
7
+ UseFormReturn,
8
+ useForm,
9
+ } from 'react-hook-form'
10
+ import { always, equals } from 'ramda'
11
+ import { joiResolver } from '@hookform/resolvers/joi'
12
+ import { FormProps } from './types'
13
+ import { trimFormValues } from './trim-form-values'
14
+
15
+ /**
16
+ * The context provider for handling state of components wrapped in field
17
+ * @see Field
18
+ * @see {@link https://northlight.dev/reference/form}
19
+ *
20
+ * @example (Example)
21
+ * ## Basic
22
+ * (?
23
+ * <Form initialValues={{name: ''}} onSubmit={console.log}>
24
+ * <TextField name="name" label="What is your name" />
25
+ * </Form>
26
+ * ?)
27
+ *
28
+ * @example (Example)
29
+ * ## With form methods
30
+ * The form context provider passes down a lot of methods for handling state
31
+ * (?
32
+ * <Form initialValues={{name: ''}}>
33
+ * {({watch, reset }) => (
34
+ * <Stack>
35
+ * <TextField name="name" label="What is your name?"/>
36
+ * <Button variant="danger" onClick={() => reset({})}>Reset</Button>
37
+ * <Code>{JSON.stringify(watch(), null, 2)}</Code>
38
+ * </Stack>
39
+ * )}
40
+ *
41
+ * </Form>
42
+ * ?)
43
+ * You can view more form methods on the **<a href="https://react-hook-form.com/api/useform/" target="_blank">react hook form docs</a>**
44
+ * (everything that the useForm hooks returns)
45
+ *
46
+ * @example (Example)
47
+ * ## Validation with joi
48
+ *
49
+ * You can pass on validation either by using a custom validate
50
+ * function, by passing html validation directly on a field, or by
51
+ * using joi schema. joi schema is recommended when possible.
52
+ *
53
+ * (?
54
+ * +
55
+
56
+ const joiSchema = Joi.object({
57
+ username: Joi.string().alphanum().min(3).max(30).required(),
58
+ password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(),
59
+ });
60
+
61
+ * const MyForm = () => (
62
+ <Form initialValues={{name: ''}} joiSchema={joiSchema}>
63
+ <Stack>
64
+ <TextField name="username" label="User Name"/>
65
+ <TextField name="password" label="Password" />
66
+ </Stack>
67
+ </Form>
68
+ )
69
+ *
70
+ * render(<MyForm />)
71
+ * ?)
72
+ *
73
+ * @example (Example)
74
+ * ## Moving the form state outside of Form
75
+ * (?
76
+
77
+ //This code could live in the backend
78
+ const submitValuesToBackend = (values) => {
79
+ console.log({values})
80
+ if(values.firstName !== 'Steve') {
81
+ throw Error('We only allow people named Steve \;\)')
82
+ }
83
+ }
84
+ const MyForm = () => (
85
+ <Form
86
+ initialValues={ { firstName: '' } }
87
+ onSubmit={ async (values, methods) => {
88
+ try {
89
+ await submitValuesToBackend(values)
90
+ }
91
+ catch (err) {
92
+ methods.setError('firstName', { message: err.message })
93
+ }
94
+ } }
95
+ >
96
+ <HStack alignItems="end" p="3">
97
+ <TextField
98
+ name="firstName"
99
+ label="First Name"
100
+ isRequired={ true }
101
+ />
102
+ <Button type="submit" variant="success">Validate</Button>
103
+ </HStack>
104
+ </Form>
105
+
106
+ )
107
+
108
+ render(<MyForm />)
109
+
110
+ * ?)
111
+
112
+ @example (Example)
113
+ ## Using a ref
114
+ You can move up the form state using a ref as well
115
+ (?
116
+ () => {
117
+ const methods = useRef(null)
118
+
119
+ return (
120
+ <Stack>
121
+ <Form
122
+ ref={methods}
123
+ initialValues={{name: ''}}
124
+ >
125
+ <TextField name="name" label="What is your name?" />
126
+ </Form>
127
+ <Button onClick={() => methods.current.reset({name: (Math.round(Math.random() * 100))})}>
128
+ Get random number
129
+ </Button>
130
+ </Stack>
131
+
132
+ )
133
+
134
+ }
135
+ ?)
136
+
137
+ */
138
+ export const Form = forwardRef(<FormValues extends FieldValues>({
139
+ initialValues,
140
+ onSubmit,
141
+ children,
142
+ validate,
143
+ formSettings = { mode: 'onChange' },
144
+ methods = undefined,
145
+ enableReinitialize = false,
146
+ shouldTrim = true,
147
+ innerFormStyle = {},
148
+ joiSchema,
149
+ ...rest
150
+ }: FormProps<FormValues>, ref: React.Ref<UseFormReturn<FormValues>>) => {
151
+ const customResolver: Resolver<FormValues, any> = (
152
+ values,
153
+ _context,
154
+ _options
155
+ ) => ({
156
+ values,
157
+ errors: validate(values),
158
+ })
159
+
160
+ const getResolver = () => {
161
+ if (validate) return customResolver
162
+ if (joiSchema) return joiResolver(joiSchema)
163
+ return undefined
164
+ }
165
+
166
+ const newMethods =
167
+ methods ||
168
+ useForm<FormValues>({
169
+ defaultValues: initialValues as DefaultValues<FormValues>,
170
+ resolver: getResolver(),
171
+ ...formSettings,
172
+ })
173
+
174
+ useImperativeHandle(ref, always(newMethods), [])
175
+
176
+ if (enableReinitialize) {
177
+ const initalValuesImage = useRef({})
178
+ useEffect(() => {
179
+ if (!equals(initalValuesImage.current, initialValues)) {
180
+ newMethods?.reset(initialValues)
181
+ initalValuesImage.current = initialValues
182
+ }
183
+ }, [ initialValues ])
184
+ }
185
+
186
+ const formatValues = (values: FormValues) => {
187
+ if (!shouldTrim) {
188
+ return values
189
+ }
190
+
191
+ return trimFormValues<FormValues>(values)
192
+ }
193
+
194
+ const handleSubmit = newMethods.formState.isValid
195
+ ? newMethods.handleSubmit((values) =>
196
+ onSubmit(formatValues(values), newMethods)
197
+ )
198
+ : (e: React.FormEvent<HTMLFormElement>) => {
199
+ newMethods.trigger()
200
+ e.preventDefault()
201
+ }
202
+
203
+ return (
204
+ <FormProvider { ...newMethods } { ...rest }>
205
+ <form style={ { width: '100%', ...innerFormStyle } } onSubmit={ handleSubmit }>
206
+ { typeof children === 'function' ? children(newMethods) : children }
207
+ </form>
208
+ </FormProvider>
209
+ )
210
+ })
@@ -0,0 +1,5 @@
1
+ export * from './form'
2
+ export * from './field'
3
+ export * from './use-set-value-refreshed'
4
+ export * from './types'
5
+ export * from './trim-form-values'
@@ -0,0 +1,20 @@
1
+ import { forEach, identity, is, keys, trim, values } from 'ramda'
2
+ import { FieldValues } from 'react-hook-form'
3
+
4
+ const shouldTrim = (value: any): ((object: FieldValues) => FieldValues) =>
5
+ (is(Array, value) ? values : identity)
6
+
7
+ export const trimFormValues = <T extends FieldValues>(obj: FieldValues) => {
8
+ const newObj: FieldValues = obj
9
+ forEach((property) => {
10
+ const value = obj[property]
11
+ if (is(Object, value)) {
12
+ const format = shouldTrim(value)
13
+ newObj[property] = format(trimFormValues(value as FieldValues))
14
+ }
15
+ if (is(String, value)) {
16
+ newObj[property] = trim(value as string)
17
+ }
18
+ }, keys(obj))
19
+ return newObj as T
20
+ }
@@ -0,0 +1,99 @@
1
+ import { ReactNode } from 'react'
2
+ import {
3
+ Control,
4
+ ControllerRenderProps,
5
+ FieldError,
6
+ FieldErrorsImpl,
7
+ FieldPath,
8
+ FieldValues,
9
+ Merge,
10
+ UseFormReturn as RHFUseFormReturn,
11
+ RegisterOptions,
12
+ SetValueConfig,
13
+ UseFormProps,
14
+ } from 'react-hook-form'
15
+ import { StackDirection, StackProps } from '@chakra-ui/react'
16
+ import { Schema } from 'joi'
17
+
18
+ export type UseFormReturn<T extends FieldValues> = RHFUseFormReturn<T>
19
+
20
+ type Maybe<T> = T | undefined
21
+
22
+ type CustomSubmitHandler<TFieldValues extends FieldValues> = (
23
+ data: TFieldValues,
24
+ event: UseFormReturn<TFieldValues>
25
+ ) => any | Promise<any>
26
+
27
+ export type SetValueOptionsType = Maybe<SetValueConfig>
28
+
29
+ export interface FieldProps<
30
+ FormValues extends FieldValues = FieldValues,
31
+ FieldName extends FieldPath<FormValues> = FieldPath<FormValues>
32
+ > extends Omit<StackProps, 'children'> {
33
+ name: FieldName
34
+ /** Label displayed as text beside or under/over
35
+ * (depending on direction prop) over children. Recommended for accesibility */
36
+ label?: string
37
+ /** The input and label will be rendered inside a stack,
38
+ * this determines whether to put the label above/below/left/right of the input */
39
+ direction?: StackDirection
40
+ isRequired?: boolean
41
+ /** In rare cases the htmlFor attribute can mess up the markup,
42
+ * if this prop is true then htmlFor on the label will be undefined */
43
+ noLabelConnection?: boolean
44
+ /** Inline validation, in most cases validation should be handled in the form component itself,
45
+ * but you can pass down simple validation like
46
+ * validate={{maxLength: {message: 'Max 40 characters', value: 40}}}
47
+ * for more information view https://react-hook-form.com/api/useform/register/ docs. (Whatever you put into the validate object will be put as the second options arguments on the react hook form register method)
48
+ * */
49
+ validate?: RegisterOptions
50
+ /**
51
+ * The value is taken from the formContext by default,
52
+ * but may be manually specified to ensure field type inference.
53
+ * */
54
+ control?: Control<FormValues>
55
+ children: (
56
+ field: ControllerRenderProps<FormValues, FieldName>,
57
+ methods: UseFormReturn<FormValues>
58
+ ) => JSX.Element
59
+ }
60
+
61
+ export interface FormProps<FormValues extends FieldValues> {
62
+ /** This should contain an object with the name of the fields and their default values. */
63
+ initialValues: FormValues
64
+ /** This prop will reset the form if the initial values change */
65
+ enableReinitialize?: boolean
66
+ onSubmit: CustomSubmitHandler<FormValues>
67
+ /** You can define your own form methods outside of the form component using the useForm hook and passing down via methods prop: https://react-hook-form.com/api/useform/ */
68
+ methods?: UseFormReturn<FormValues>
69
+ /** Every option that can be passed to useForm hook kan be passed here,
70
+ * for example formSettings={{mode: 'onChange'}}
71
+ * (will trigger validation function on every change in form state */
72
+ formSettings?: UseFormProps<FormValues>
73
+ /** A functtion that takes in the current form values, and returns an object,
74
+ * where the keys are the name of the fields and the values are object
75
+ * with a message key of what error occured.
76
+ * ex: validate ={(formValues) => {
77
+ * let errors = {}
78
+ * if(formValues.name === 'DROP TABLE;') {
79
+ * errors.name = {message: 'Nice try'}
80
+ * }
81
+ * return errors
82
+ * }}
83
+ * */
84
+ validate?: any
85
+ /** This will recursively trim all values strings inside the form values,
86
+ * no matter how nesteed they are */
87
+ shouldTrim?: boolean
88
+ /** Enter a JSON schema using Joi.object and pass it down here to be used for validation */
89
+ joiSchema?: Schema
90
+ children:
91
+ | ((methods: UseFormReturn<FormValues>) => ReactNode)
92
+ | ReactNode
93
+ innerFormStyle?: any
94
+ }
95
+
96
+ export type FieldErrorType<T extends FieldValues> =
97
+ | FieldError
98
+ | Merge<FieldError, FieldErrorsImpl<T>>
99
+ | undefined
@@ -0,0 +1,12 @@
1
+ import { useFormContext } from '../../hooks'
2
+ import { SetValueOptionsType } from './types'
3
+
4
+ export const useSetValueRefreshed = () => {
5
+ const { setValue, watch } = useFormContext()
6
+
7
+ const setValueRefreshed = (name: any, value: any, options: SetValueOptionsType) => {
8
+ watch(name)
9
+ setValue(name, value, options)
10
+ }
11
+ return setValueRefreshed
12
+ }
@@ -0,0 +1,29 @@
1
+ import React, { forwardRef } from 'react'
2
+ import { FormLabelProps } from './types'
3
+ import { Label } from '../typography'
4
+
5
+ /**
6
+ * Renders a label, meant to be used alongside a field component
7
+ * @see Field
8
+ * @see {@link https://northlight.dev/reference/form-label}
9
+ *
10
+ */
11
+ export const FormLabel = forwardRef<HTMLLabelElement, FormLabelProps >(({
12
+ children: label,
13
+ ...rest
14
+ }, ref) => (
15
+ <Label
16
+ size="sm"
17
+ sx={ {
18
+ width: '80%',
19
+ maxWidth: '45ch',
20
+ marginBottom: 1,
21
+ marginInlineEnd: 3,
22
+ } }
23
+ requiredIndicator={ undefined }
24
+ { ...rest }
25
+ ref={ ref }
26
+ >
27
+ { label }
28
+ </Label>
29
+ ))
@@ -0,0 +1,7 @@
1
+ export {
2
+ FormControl,
3
+ FormErrorMessage,
4
+ FormHelperText,
5
+ } from '@chakra-ui/react'
6
+ export * from './form-label'
7
+ export * from './types'
@@ -0,0 +1,5 @@
1
+ import { LabelProps, LabelSizes } from '../typography'
2
+
3
+ export interface FormLabelProps extends LabelProps {
4
+ size?: LabelSizes
5
+ }
@@ -0,0 +1,4 @@
1
+ export {
2
+ Grid,
3
+ GridItem,
4
+ } from '@chakra-ui/react'
@@ -0,0 +1,3 @@
1
+ export {
2
+ Heading,
3
+ } from '@chakra-ui/react'
@@ -0,0 +1 @@
1
+ export { Highlight } from '@chakra-ui/react'
@@ -0,0 +1,38 @@
1
+ import React from 'react'
2
+ import {
3
+ Icon as ChakraIcon,
4
+ forwardRef,
5
+ useStyleConfig,
6
+ } from '@chakra-ui/react'
7
+ import { IconProps } from './types'
8
+
9
+ /**
10
+ * Pass down any icon from northlight/icons via as prop
11
+ * @see IconButton
12
+ * @see {@link https://northlight.dev/reference/icon}
13
+ *
14
+ * @example
15
+ * (?
16
+ * <Icon as={SmileyDuo} size="lg" />
17
+ * ?)
18
+ */
19
+ export const Icon = forwardRef(({
20
+ as: As,
21
+ size,
22
+ color,
23
+ boxSize,
24
+ ...rest
25
+ }: IconProps, ref: any) => {
26
+ const CustomIcon = As ?? (() => <ChakraIcon />)
27
+ const styles = useStyleConfig('Icon', { size, color, boxSize })
28
+
29
+ return (
30
+ <ChakraIcon
31
+ ref={ ref }
32
+ sx={ styles }
33
+ { ...rest }
34
+ >
35
+ <CustomIcon />
36
+ </ChakraIcon>
37
+ )
38
+ })
@@ -0,0 +1,2 @@
1
+ export * from './icon'
2
+ export * from './types'
@@ -0,0 +1,7 @@
1
+ import { ComponentType } from 'react'
2
+ import { IconProps as ChakraIconProps } from '@chakra-ui/react'
3
+
4
+ export interface IconProps extends ChakraIconProps {
5
+ as?: ComponentType<any>
6
+ size?: 'xs' | 'sm' | 'md' | 'lg'
7
+ }
@@ -0,0 +1,45 @@
1
+ import React, { cloneElement, forwardRef } from 'react'
2
+ import { IconButton as ChakraIconButton } from '@chakra-ui/react'
3
+ import { IconButtonProps } from './types'
4
+
5
+ /**
6
+ * A normal button but renders an icon instead of text
7
+ * @see Button
8
+ * @see Icon
9
+ * @see {@link https://northlight.dev/reference/icon-button}
10
+ *
11
+ * @example (Example)
12
+ * (?
13
+ * <IconButton variant='brand' icon={<Icon as={UsersDuo} />} onClick={console.log}/>
14
+ * ?)
15
+ *
16
+ * @example (Example)
17
+ * (?
18
+ <IconButton
19
+ isRound={ true }
20
+ aria-label="create"
21
+ variant="success"
22
+ icon={ <Icon as={ PlusSolid } /> }
23
+ />
24
+ * ?)
25
+ *
26
+ */
27
+ export const IconButton = forwardRef(({
28
+ variant = 'default',
29
+ icon,
30
+ 'aria-label': ariaLabel,
31
+ children,
32
+ ...rest
33
+ }: IconButtonProps, ref: any) => {
34
+ const IconComponent = icon ?? children as JSX.Element
35
+ const IconWithSize = cloneElement(IconComponent, { size: IconComponent.props.size ?? rest.size })
36
+ return (
37
+ <ChakraIconButton
38
+ variant={ variant }
39
+ icon={ IconWithSize }
40
+ aria-label={ ariaLabel }
41
+ ref={ ref }
42
+ { ...rest }
43
+ />
44
+ )
45
+ })
@@ -0,0 +1,2 @@
1
+ export * from './icon-button'
2
+ export * from './types'
@@ -0,0 +1,6 @@
1
+ import { IconButtonProps as ChakraIconButtonProps } from '@chakra-ui/react'
2
+ import { ButtonVariants } from '../button/types'
3
+
4
+ export interface IconButtonProps extends ChakraIconButtonProps {
5
+ variant?: ButtonVariants
6
+ }
@@ -0,0 +1,5 @@
1
+ export {
2
+ Image,
3
+ } from '@chakra-ui/react'
4
+
5
+ export type { ImageProps } from '@chakra-ui/react'
@@ -0,0 +1,94 @@
1
+ export * from './accordion'
2
+ export * from './tags-input'
3
+ export * from './organization-logo'
4
+ export * from './alert'
5
+ export * from './alert-dialog'
6
+ export * from './aspect-ratio'
7
+ export * from './avatar'
8
+ export * from './badge'
9
+ export * from './box'
10
+ export * from './breadcrumb'
11
+ export * from './blinker'
12
+ export * from './button'
13
+ export * from './card'
14
+ export * from './center'
15
+ export * from './checkbox'
16
+ export * from './color-picker'
17
+ export * from './circle'
18
+ export * from './flip-button'
19
+ export * from './resize-handle'
20
+ export * from './mark'
21
+ export * from './circular-progress'
22
+ export * from './date-picker'
23
+ export * from './intent-button'
24
+ export * from './close-button'
25
+ export * from './code'
26
+ export * from './toolbox'
27
+ export * from './container'
28
+ export * from './carousel'
29
+ export * from './search-bar'
30
+ export * from './divider'
31
+ export * from './drag-and-drop'
32
+ export * from './drawer'
33
+ export * from './editable'
34
+ export * from './flex'
35
+ export * from './form-control'
36
+ export * from './fast-list'
37
+ export * from './fast-grid'
38
+ export * from './grid'
39
+ export * from './heading'
40
+ export * from './icon'
41
+ export * from './icon-button'
42
+ export * from './input'
43
+ export * from './image'
44
+ export * from './file-picker'
45
+ export * from './kbd'
46
+ export * from './keyframes'
47
+ export * from './link'
48
+ export * from './link-overlay'
49
+ export * from './overflow-group'
50
+ export * from './list'
51
+ export * from './mediatool-theme-provider'
52
+ export * from './menu'
53
+ export * from './number-input'
54
+ export * from './notification-icon-button'
55
+ export * from './pin-input'
56
+ export * from './popover'
57
+ export * from './portal'
58
+ export * from './progress'
59
+ export * from './radio'
60
+ export * from './range-slider'
61
+ export * from './select'
62
+ export * from './simple-grid'
63
+ export * from './skeleton'
64
+ export * from './slider'
65
+ export * from './spinner'
66
+ export * from './stack'
67
+ export * from './stat'
68
+ export * from './switch'
69
+ export * from './table'
70
+ export * from './tabs'
71
+ export * from './tag'
72
+ export * from './text'
73
+ export * from './textarea'
74
+ export * from './text-field'
75
+ export * from './toast'
76
+ export * from './tooltip'
77
+ export * from './transitions'
78
+ export * from './visually-hidden'
79
+ export * from './wrap'
80
+ export * from './status-pin'
81
+ export * from './async-error'
82
+ export * from './modal'
83
+ export * from './form'
84
+ export * from './steps'
85
+ export * from './clipboard-input'
86
+ export * from './typography'
87
+ export * from './clickable'
88
+ export * from './highlight'
89
+ export * from './split-pane'
90
+ export * from './editable-text'
91
+ export * from './step-stack'
92
+ export * from './show'
93
+ export * from './createable-select-dropdown'
94
+ export * from './combo-picker'
@@ -0,0 +1,19 @@
1
+ import {
2
+ Input,
3
+ InputAddon,
4
+ InputGroup,
5
+ InputLeftAddon,
6
+ InputLeftElement,
7
+ InputRightAddon,
8
+ InputRightElement,
9
+ } from '@chakra-ui/react'
10
+
11
+ export {
12
+ Input,
13
+ InputGroup,
14
+ InputAddon,
15
+ InputLeftAddon,
16
+ InputRightAddon,
17
+ InputLeftElement,
18
+ InputRightElement,
19
+ }
@@ -0,0 +1 @@
1
+ export * from './intent-button'