@sqrzro/ui 4.0.0-alpha.8 → 4.0.0-alpha.80

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 (309) hide show
  1. package/dist/components/buttons/ActionButton/index.d.ts +8 -6
  2. package/dist/components/buttons/ActionButton/index.js +5 -29
  3. package/dist/components/buttons/Button/index.d.ts +7 -6
  4. package/dist/components/buttons/Button/index.js +9 -19
  5. package/dist/components/collections/Collection/index.d.ts +9 -5
  6. package/dist/components/collections/Collection/index.js +14 -12
  7. package/dist/components/collections/DataTable/index.d.ts +14 -0
  8. package/dist/components/collections/DataTable/index.js +14 -0
  9. package/dist/components/collections/DefinitionList/index.d.ts +13 -0
  10. package/dist/components/collections/DefinitionList/index.js +13 -0
  11. package/dist/components/collections/EmptyMessage/index.d.ts +2 -2
  12. package/dist/components/collections/EmptyMessage/index.js +6 -4
  13. package/dist/components/collections/EmptyMessageAction/index.d.ts +2 -2
  14. package/dist/components/collections/EmptyMessageAction/index.js +3 -3
  15. package/dist/components/collections/List/index.d.ts +6 -3
  16. package/dist/components/collections/List/index.js +2 -2
  17. package/dist/components/collections/ListClientComponent/index.d.ts +7 -4
  18. package/dist/components/collections/ListClientComponent/index.js +8 -5
  19. package/dist/components/collections/ListItem/index.d.ts +10 -3
  20. package/dist/components/collections/ListItem/index.js +15 -23
  21. package/dist/components/collections/ListItemMenu/index.d.ts +8 -0
  22. package/dist/components/collections/ListItemMenu/index.js +7 -0
  23. package/dist/components/collections/ListItemMeta/index.d.ts +6 -4
  24. package/dist/components/collections/ListItemMeta/index.js +13 -17
  25. package/dist/components/collections/ListItemSecondary/index.d.ts +5 -3
  26. package/dist/components/collections/ListItemSecondary/index.js +12 -8
  27. package/dist/components/collections/Pagination/index.d.ts +1 -1
  28. package/dist/components/collections/Pagination/index.js +7 -8
  29. package/dist/components/collections/PaginationLink/index.d.ts +9 -0
  30. package/dist/components/collections/PaginationLink/index.js +9 -0
  31. package/dist/components/collections/Table/index.d.ts +3 -4
  32. package/dist/components/collections/Table/index.js +2 -8
  33. package/dist/components/collections/TableClientComponent/index.d.ts +7 -6
  34. package/dist/components/collections/TableClientComponent/index.js +12 -27
  35. package/dist/components/collections/TableRow/index.d.ts +13 -0
  36. package/dist/components/collections/TableRow/index.js +15 -0
  37. package/dist/components/collections/interfaces.d.ts +41 -34
  38. package/dist/components/collections/lang.js +1 -1
  39. package/dist/components/collections/utility/is-paginated.d.ts +1 -1
  40. package/dist/components/collections/utility/is-right-aligned.d.ts +3 -0
  41. package/dist/components/collections/utility/is-right-aligned.js +11 -0
  42. package/dist/components/collections/utility/render-cell.d.ts +5 -0
  43. package/dist/components/collections/utility/render-cell.js +33 -0
  44. package/dist/components/elements/Badge/index.d.ts +12 -0
  45. package/dist/components/elements/Badge/index.js +9 -0
  46. package/dist/components/elements/ContentLink/index.d.ts +4 -0
  47. package/dist/components/elements/ContentLink/index.js +7 -0
  48. package/dist/components/elements/InfoPanel/index.d.ts +13 -0
  49. package/dist/components/elements/InfoPanel/index.js +20 -0
  50. package/dist/components/{utility → elements}/Link/index.d.ts +3 -2
  51. package/dist/components/{utility → elements}/Link/index.js +10 -9
  52. package/dist/components/elements/Menu/index.d.ts +19 -0
  53. package/dist/components/elements/Menu/index.js +20 -0
  54. package/dist/components/elements/MenuItem/index.d.ts +9 -0
  55. package/dist/components/elements/MenuItem/index.js +14 -0
  56. package/dist/components/elements/Page/index.d.ts +19 -0
  57. package/dist/components/elements/Page/index.js +18 -0
  58. package/dist/components/elements/Reference/index.d.ts +9 -0
  59. package/dist/components/elements/Reference/index.js +16 -0
  60. package/dist/components/elements/Summary/index.d.ts +13 -0
  61. package/dist/components/elements/Summary/index.js +22 -0
  62. package/dist/components/errors/AppError/index.d.ts +19 -0
  63. package/dist/components/errors/AppError/index.js +9 -0
  64. package/dist/components/errors/AppForbiddenError/index.d.ts +7 -0
  65. package/dist/components/errors/AppForbiddenError/index.js +6 -0
  66. package/dist/components/errors/AppNotFoundError/index.d.ts +7 -0
  67. package/dist/components/errors/AppNotFoundError/index.js +6 -0
  68. package/dist/components/errors/AppServerError/index.d.ts +8 -0
  69. package/dist/components/errors/AppServerError/index.js +17 -0
  70. package/dist/components/index.d.ts +35 -6
  71. package/dist/components/index.js +17 -3
  72. package/dist/components/modals/ConfirmModal/index.d.ts +6 -4
  73. package/dist/components/modals/ConfirmModal/index.js +4 -4
  74. package/dist/components/modals/Modal/index.d.ts +4 -4
  75. package/dist/components/modals/Modal/index.js +3 -3
  76. package/dist/components/modals/ModalActions/index.d.ts +3 -3
  77. package/dist/components/modals/ModalActions/index.js +5 -4
  78. package/dist/components/utility/Action/index.d.ts +11 -0
  79. package/dist/components/utility/Action/index.js +48 -0
  80. package/dist/components/utility/ActionList/index.d.ts +5 -5
  81. package/dist/components/utility/ActionList/index.js +6 -4
  82. package/dist/components/utility/AppBody/index.d.ts +5 -0
  83. package/dist/components/utility/AppBody/index.js +9 -0
  84. package/dist/components/utility/Calendar/index.d.ts +32 -0
  85. package/dist/components/utility/Calendar/index.js +66 -0
  86. package/dist/components/utility/CalendarDay/index.d.ts +11 -0
  87. package/dist/components/utility/CalendarDay/index.js +22 -0
  88. package/dist/components/utility/Confirmable/index.d.ts +9 -0
  89. package/dist/components/utility/Confirmable/index.js +14 -0
  90. package/dist/components/utility/Container/index.d.ts +1 -1
  91. package/dist/components/utility/Container/index.js +2 -2
  92. package/dist/components/utility/Loader/index.d.ts +1 -1
  93. package/dist/components/utility/Loader/index.js +5 -4
  94. package/dist/components/utility/Popover/index.d.ts +1 -1
  95. package/dist/components/utility/Popover/index.js +5 -5
  96. package/dist/components/utility/Toast/index.d.ts +3 -3
  97. package/dist/components/utility/Toast/index.js +6 -4
  98. package/dist/components/utility/Toaster/index.js +5 -5
  99. package/dist/filters/components/FilterBar/index.d.ts +6 -3
  100. package/dist/filters/components/FilterBarClientComponent/index.d.ts +3 -5
  101. package/dist/filters/components/FilterBarClientComponent/index.js +4 -44
  102. package/dist/filters/components/FilterClearButton/index.d.ts +7 -2
  103. package/dist/filters/components/FilterClearButton/index.js +8 -4
  104. package/dist/filters/components/FilterControl/index.d.ts +1 -1
  105. package/dist/filters/components/FilterControl/index.js +11 -4
  106. package/dist/filters/components/FilterItem/index.d.ts +3 -2
  107. package/dist/filters/components/FilterItem/index.js +4 -8
  108. package/dist/filters/components/FilterPanel/index.d.ts +2 -2
  109. package/dist/filters/{utility/filter.d.ts → filter.d.ts} +1 -1
  110. package/dist/filters/{utility/filter.js → filter.js} +8 -8
  111. package/dist/filters/filters/BooleanFilter/index.js +2 -2
  112. package/dist/filters/filters/CalendarFilter/index.js +3 -2
  113. package/dist/filters/filters/DateFilter/index.d.ts +1 -1
  114. package/dist/filters/filters/DateFilter/index.js +9 -4
  115. package/dist/filters/filters/DropdownFilter/index.js +2 -2
  116. package/dist/filters/filters/Filter/index.d.ts +6 -5
  117. package/dist/filters/filters/Filter/index.js +9 -9
  118. package/dist/filters/filters/SearchFilter/index.d.ts +8 -3
  119. package/dist/filters/filters/SearchFilter/index.js +10 -10
  120. package/dist/filters/filters/interfaces.d.ts +1 -3
  121. package/dist/filters/index.d.ts +2 -1
  122. package/dist/filters/index.js +2 -1
  123. package/dist/filters/interfaces.d.ts +3 -3
  124. package/dist/filters/utility/get-quick-dates.d.ts +1 -1
  125. package/dist/filters/utility/render-value.js +5 -5
  126. package/dist/forms/components/Autocomplete/index.d.ts +2 -2
  127. package/dist/forms/components/Autocomplete/index.js +5 -5
  128. package/dist/forms/components/AutocompleteList/index.d.ts +7 -0
  129. package/dist/forms/components/AutocompleteList/index.js +15 -0
  130. package/dist/forms/components/BaseCalendarInput/index.d.ts +11 -0
  131. package/dist/forms/components/BaseCalendarInput/index.js +22 -0
  132. package/dist/forms/components/CSVInput/index.d.ts +11 -0
  133. package/dist/forms/components/CSVInput/index.js +32 -0
  134. package/dist/forms/components/CalendarInput/index.d.ts +6 -0
  135. package/dist/forms/components/CalendarInput/index.js +14 -0
  136. package/dist/forms/components/CheckboxInput/index.d.ts +12 -0
  137. package/dist/forms/components/CheckboxInput/index.js +15 -0
  138. package/dist/forms/components/ChkRad/index.d.ts +19 -0
  139. package/dist/forms/components/ChkRad/index.js +25 -0
  140. package/dist/forms/components/ColorInput/index.d.ts +16 -0
  141. package/dist/forms/components/ColorInput/index.js +14 -0
  142. package/dist/forms/components/Dropdown/index.d.ts +1 -1
  143. package/dist/forms/components/Dropdown/index.js +11 -10
  144. package/dist/forms/components/DropdownItem/index.d.ts +9 -0
  145. package/dist/forms/components/DropdownItem/index.js +9 -0
  146. package/dist/forms/components/DropdownList/index.d.ts +2 -2
  147. package/dist/forms/components/DropdownList/index.js +7 -11
  148. package/dist/forms/components/EditableForm/index.d.ts +7 -5
  149. package/dist/forms/components/EditableForm/index.js +19 -15
  150. package/dist/forms/components/EditableFormField/index.d.ts +1 -1
  151. package/dist/forms/components/EditableFormField/index.js +3 -3
  152. package/dist/forms/components/EditableFormFields/index.d.ts +23 -0
  153. package/dist/forms/components/EditableFormFields/index.js +78 -1
  154. package/dist/forms/components/Form/index.d.ts +5 -2
  155. package/dist/forms/components/Form/index.js +7 -6
  156. package/dist/forms/components/FormError/index.d.ts +2 -2
  157. package/dist/forms/components/FormError/index.js +7 -5
  158. package/dist/forms/components/FormField/index.d.ts +8 -6
  159. package/dist/forms/components/FormField/index.js +16 -8
  160. package/dist/forms/components/FormFields/index.d.ts +27 -2
  161. package/dist/forms/components/FormFields/index.js +55 -2
  162. package/dist/forms/components/FormLabel/index.d.ts +1 -1
  163. package/dist/forms/components/FormLabel/index.js +4 -3
  164. package/dist/forms/components/FormSubmit/index.d.ts +1 -1
  165. package/dist/forms/components/FormSubmit/index.js +1 -1
  166. package/dist/forms/components/ImageInput/index.d.ts +20 -0
  167. package/dist/forms/components/ImageInput/index.js +51 -0
  168. package/dist/forms/components/ImageInputPanel/index.d.ts +10 -0
  169. package/dist/forms/components/ImageInputPanel/index.js +34 -0
  170. package/dist/forms/components/ModalForm/index.d.ts +4 -3
  171. package/dist/forms/components/ModalForm/index.js +8 -7
  172. package/dist/forms/components/NumberInput/index.d.ts +1 -1
  173. package/dist/forms/components/PasswordComplexity/index.d.ts +16 -0
  174. package/dist/forms/components/PasswordComplexity/index.js +14 -0
  175. package/dist/forms/components/PasswordComplexityItem/index.d.ts +8 -0
  176. package/dist/forms/components/PasswordComplexityItem/index.js +10 -0
  177. package/dist/forms/components/PasswordInput/index.d.ts +2 -2
  178. package/dist/forms/components/PasswordInput/index.js +6 -6
  179. package/dist/forms/components/PointsInput/index.d.ts +5 -0
  180. package/dist/forms/components/{MoneyInput → PointsInput}/index.js +3 -3
  181. package/dist/forms/components/RangeCalendarInput/index.d.ts +6 -0
  182. package/dist/forms/components/RangeCalendarInput/index.js +14 -0
  183. package/dist/forms/components/StaticTextInput/index.d.ts +3 -3
  184. package/dist/forms/components/StaticTextInput/index.js +7 -8
  185. package/dist/forms/components/Switch/index.d.ts +10 -4
  186. package/dist/forms/components/Switch/index.js +7 -5
  187. package/dist/forms/components/TextArea/index.d.ts +14 -0
  188. package/dist/forms/components/TextArea/index.js +15 -0
  189. package/dist/forms/components/TextInput/index.d.ts +2 -2
  190. package/dist/forms/components/TextInput/index.js +5 -4
  191. package/dist/forms/hooks/useAutocomplete.d.ts +7 -6
  192. package/dist/forms/hooks/useAutocomplete.js +4 -4
  193. package/dist/forms/hooks/useDropdown.d.ts +5 -7
  194. package/dist/forms/hooks/useDropdown.js +5 -5
  195. package/dist/forms/hooks/useEditableDropdown.d.ts +4 -0
  196. package/dist/forms/hooks/useEditableDropdown.js +6 -0
  197. package/dist/forms/hooks/useEditableForm.d.ts +2 -1
  198. package/dist/forms/hooks/useEditableForm.js +21 -9
  199. package/dist/forms/hooks/useForm.d.ts +7 -14
  200. package/dist/forms/hooks/useForm.js +27 -28
  201. package/dist/forms/hooks/useModalForm.d.ts +2 -2
  202. package/dist/forms/hooks/useModalForm.js +10 -3
  203. package/dist/forms/index.d.ts +18 -7
  204. package/dist/forms/index.js +9 -3
  205. package/dist/forms/interfaces.d.ts +9 -1
  206. package/dist/forms/utility/extract-input-props.js +1 -0
  207. package/dist/forms/utility/format-date-value.d.ts +2 -0
  208. package/dist/forms/utility/format-date-value.js +13 -0
  209. package/dist/forms/utility/format-file-size.d.ts +2 -0
  210. package/dist/forms/utility/format-file-size.js +11 -0
  211. package/dist/forms/utility/preprocess-image.d.ts +9 -0
  212. package/dist/forms/utility/preprocess-image.js +61 -0
  213. package/dist/hooks/index.d.ts +3 -0
  214. package/dist/hooks/index.js +3 -0
  215. package/dist/hooks/useConfirmable.d.ts +21 -0
  216. package/dist/hooks/useConfirmable.js +58 -0
  217. package/dist/hooks/useDownload.d.ts +2 -0
  218. package/dist/hooks/useDownload.js +18 -0
  219. package/dist/hooks/usePopover.d.ts +12 -0
  220. package/dist/hooks/usePopover.js +24 -0
  221. package/dist/hooks/useSelected.d.ts +12 -0
  222. package/dist/hooks/useSelected.js +35 -0
  223. package/dist/hooks/useServerAction.d.ts +14 -0
  224. package/dist/hooks/useServerAction.js +30 -0
  225. package/dist/hooks/useSuccess.d.ts +10 -0
  226. package/dist/hooks/useSuccess.js +24 -0
  227. package/dist/mail/Mail/index.d.ts +8 -0
  228. package/dist/mail/Mail/index.js +108 -0
  229. package/dist/mail/MailBlock/index.d.ts +5 -0
  230. package/dist/mail/MailBlock/index.js +5 -0
  231. package/dist/mail/MailButton/index.d.ts +8 -0
  232. package/dist/mail/MailButton/index.js +28 -0
  233. package/dist/mail/MailTable/index.d.ts +9 -0
  234. package/dist/mail/MailTable/index.js +7 -0
  235. package/dist/mail/index.d.ts +8 -0
  236. package/dist/mail/index.js +4 -0
  237. package/dist/mail/utility/convert-to-datauri.d.ts +2 -0
  238. package/dist/mail/utility/convert-to-datauri.js +37 -0
  239. package/dist/mail/utility/interfaces.d.ts +23 -0
  240. package/dist/mail/utility/mail-config.d.ts +4 -0
  241. package/dist/mail/utility/mail-config.js +42 -0
  242. package/dist/navigation/components/AppNavigation/index.d.ts +3 -1
  243. package/dist/navigation/components/AppNavigation/index.js +4 -4
  244. package/dist/navigation/components/AppNavigationItem/index.d.ts +6 -4
  245. package/dist/navigation/components/AppNavigationItem/index.js +16 -7
  246. package/dist/navigation/components/Tabs/index.js +1 -4
  247. package/dist/navigation/hooks/useNavigation.d.ts +3 -3
  248. package/dist/navigation/hooks/useNavigation.js +5 -5
  249. package/dist/styles/classnames/config.d.ts +97 -0
  250. package/dist/styles/classnames/config.js +1 -0
  251. package/dist/styles/classnames/interfaces.d.ts +56 -0
  252. package/dist/styles/classnames/interfaces.js +1 -0
  253. package/dist/styles/classnames/utility/apply-sizes.d.ts +3 -0
  254. package/dist/styles/classnames/utility/apply-sizes.js +21 -0
  255. package/dist/styles/classnames/utility/apply-variants.d.ts +3 -0
  256. package/dist/styles/classnames/utility/apply-variants.js +26 -0
  257. package/dist/styles/classnames/utility/is-classname-object.d.ts +3 -0
  258. package/dist/styles/classnames/utility/is-classname-object.js +7 -0
  259. package/dist/styles/classnames/utility/parse-classnames.d.ts +6 -0
  260. package/dist/styles/classnames/utility/parse-classnames.js +33 -0
  261. package/dist/styles/context.d.ts +28 -0
  262. package/dist/styles/context.js +19 -0
  263. package/dist/styles/icons/config.d.ts +29 -0
  264. package/dist/styles/icons/config.js +1 -0
  265. package/dist/styles/icons/interfaces.d.ts +4 -0
  266. package/dist/styles/icons/interfaces.js +1 -0
  267. package/dist/styles/index.d.ts +6 -2
  268. package/dist/styles/index.js +2 -1
  269. package/dist/styles/styles.css +60 -0
  270. package/dist/utility/compare-dates.d.ts +2 -0
  271. package/dist/utility/compare-dates.js +13 -0
  272. package/dist/utility/get-date-state.d.ts +8 -0
  273. package/dist/utility/get-date-state.js +63 -0
  274. package/dist/utility/get-days.d.ts +2 -0
  275. package/dist/utility/get-days.js +5 -0
  276. package/dist/utility/get-weeks.d.ts +2 -0
  277. package/dist/utility/get-weeks.js +31 -0
  278. package/dist/utility/index.d.ts +1 -1
  279. package/dist/utility/interfaces.d.ts +33 -17
  280. package/dist/utility/is-data-object-array.d.ts +3 -0
  281. package/dist/utility/is-data-object-array.js +5 -0
  282. package/dist/utility/is-data-object.d.ts +3 -0
  283. package/dist/utility/is-data-object.js +4 -0
  284. package/dist/utility/normalize-href.d.ts +2 -0
  285. package/dist/utility/normalize-href.js +8 -0
  286. package/package.json +37 -25
  287. package/dist/components/buttons/ConfirmableButton/index.d.ts +0 -7
  288. package/dist/components/buttons/ConfirmableButton/index.js +0 -13
  289. package/dist/components/collections/utility/filter-columns.d.ts +0 -3
  290. package/dist/components/collections/utility/filter-columns.js +0 -8
  291. package/dist/components/collections/utility/get-selected-from-search-params.d.ts +0 -2
  292. package/dist/components/collections/utility/get-selected-from-search-params.js +0 -5
  293. package/dist/components/collections/utility/set-selected-to-search-params.d.ts +0 -2
  294. package/dist/components/collections/utility/set-selected-to-search-params.js +0 -4
  295. package/dist/components/utility/ClassNames/index.d.ts +0 -6
  296. package/dist/components/utility/ClassNames/index.js +0 -7
  297. package/dist/components/utility/Page/index.d.ts +0 -18
  298. package/dist/components/utility/Page/index.js +0 -34
  299. package/dist/components/utility/RootLayout/index.d.ts +0 -15
  300. package/dist/components/utility/RootLayout/index.js +0 -14
  301. package/dist/forms/components/MoneyInput/index.d.ts +0 -5
  302. package/dist/styles/config.d.ts +0 -64
  303. package/dist/styles/config.js +0 -43
  304. package/dist/styles/icons.d.ts +0 -15
  305. package/dist/styles/icons.js +0 -7
  306. package/dist/styles/interfaces.d.ts +0 -41
  307. /package/dist/{styles → mail/utility}/interfaces.js +0 -0
  308. /package/dist/styles/{tw.d.ts → classnames/utility/tw.d.ts} +0 -0
  309. /package/dist/styles/{tw.js → classnames/utility/tw.js} +0 -0
@@ -0,0 +1,10 @@
1
+ export interface UseSuccessArgs<Response> {
2
+ onSuccess?: (response: Response) => Promise<void> | void;
3
+ redirectOnSuccess?: string | false | ((response: Response) => Promise<string | false> | string | false);
4
+ refreshOnSuccess?: boolean;
5
+ }
6
+ interface UseSuccessReturn<Response> {
7
+ handleSuccess: (response: Response) => Promise<void>;
8
+ }
9
+ declare function useSuccess<Response>({ onSuccess, redirectOnSuccess, refreshOnSuccess, }: UseSuccessArgs<Response>): UseSuccessReturn<Response>;
10
+ export default useSuccess;
@@ -0,0 +1,24 @@
1
+ import { usePathname, useRouter } from 'next/navigation';
2
+ import normalizeHref from '../utility/normalize-href.js';
3
+ function useSuccess({ onSuccess, redirectOnSuccess, refreshOnSuccess, }) {
4
+ const pathname = usePathname();
5
+ const router = useRouter();
6
+ async function handleSuccess(response) {
7
+ if (onSuccess) {
8
+ await onSuccess(response);
9
+ }
10
+ if (redirectOnSuccess) {
11
+ const url = typeof redirectOnSuccess === 'function'
12
+ ? await redirectOnSuccess(response)
13
+ : redirectOnSuccess;
14
+ if (url) {
15
+ router.push(normalizeHref(url, pathname));
16
+ }
17
+ }
18
+ else if (refreshOnSuccess) {
19
+ router.refresh();
20
+ }
21
+ }
22
+ return { handleSuccess };
23
+ }
24
+ export default useSuccess;
@@ -0,0 +1,8 @@
1
+ import { DeepPartial } from '@sqrzro/utility';
2
+ import { MailConfigObject } from '../utility/interfaces';
3
+ export interface MailProps extends DeepPartial<MailConfigObject> {
4
+ children: React.ReactNode;
5
+ title?: string;
6
+ }
7
+ declare function Mail({ children, logo, styles, title, }: Readonly<MailProps>): Promise<React.ReactElement>;
8
+ export default Mail;
@@ -0,0 +1,108 @@
1
+ 'use server';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Fragment } from 'react';
4
+ import { setMailConfig } from '../utility/mail-config';
5
+ const HALF = 2;
6
+ async function Mail({ children, logo, styles, title, }) {
7
+ const mailConfig = setMailConfig({ styles });
8
+ const logoData = await (await import('../utility/convert-to-datauri')).default(logo ?? mailConfig.logo ?? '');
9
+ return (_jsxs("html", { lang: "en", children: [_jsxs("head", { children: [_jsx("meta", { charSet: "utf-8" }), _jsx("style", { dangerouslySetInnerHTML: {
10
+ __html: `
11
+ body {
12
+ color: #0f172b !important;
13
+ font-family: -apple-system, 'SF Pro Display', 'SF Pro Text', 'Helvetica', sans-serif;
14
+ font-size: 16px;
15
+ font-weight:400;
16
+ line-height: 24px;
17
+ margin: 0;
18
+ padding: 0;
19
+ }
20
+ @media print {
21
+ body {
22
+ font-size: 14px !important;
23
+ line-height: 21px !important;
24
+ }
25
+ .container {
26
+ width: 100% !important;
27
+ }
28
+ .padding {
29
+ height: auto !important;
30
+ width: auto !important;
31
+ }
32
+ }
33
+ `,
34
+ } })] }), _jsx("body", { children: _jsx("table", { border: 0, cellPadding: 0, cellSpacing: 0, width: "100%", children: _jsxs("tbody", { children: [_jsx("tr", { children: _jsx("td", { className: "padding", colSpan: 3, height: "20", style: { backgroundColor: mailConfig.styles.root.backgroundColor } }) }), _jsxs("tr", { children: [_jsx("td", { className: "padding", style: { backgroundColor: mailConfig.styles.root.backgroundColor }, width: "20" }), _jsx("td", { align: "center", style: { backgroundColor: mailConfig.styles.root.backgroundColor }, children: _jsx("table", { border: 0, cellPadding: 0, cellSpacing: 0, className: "container", width: "650", children: _jsxs("tbody", { children: [_jsxs("tr", { children: [_jsx("td", { className: "padding", height: "20", style: {
35
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
36
+ }, width: "20", children: _jsx("div", { className: "padding", style: {
37
+ backgroundColor: mailConfig.styles.root.backgroundColor,
38
+ height: mailConfig.styles.panel.padding,
39
+ width: mailConfig.styles.panel.padding,
40
+ }, children: _jsx("div", { className: "padding", style: {
41
+ backgroundColor: mailConfig.styles.panel
42
+ .backgroundColor,
43
+ borderTopLeftRadius: mailConfig.styles.panel.padding /
44
+ HALF,
45
+ height: mailConfig.styles.panel.padding,
46
+ width: mailConfig.styles.panel.padding,
47
+ } }) }) }), _jsx("td", { className: "container", style: {
48
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
49
+ }, width: "610" }), _jsx("td", { className: "padding", height: mailConfig.styles.panel.padding, style: {
50
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
51
+ }, width: mailConfig.styles.panel.padding, children: _jsx("div", { className: "padding", style: {
52
+ backgroundColor: mailConfig.styles.root.backgroundColor,
53
+ height: mailConfig.styles.panel.padding,
54
+ width: mailConfig.styles.panel.padding,
55
+ }, children: _jsx("div", { className: "padding", style: {
56
+ backgroundColor: mailConfig.styles.panel
57
+ .backgroundColor,
58
+ borderTopRightRadius: mailConfig.styles.panel.padding /
59
+ HALF,
60
+ height: mailConfig.styles.panel.padding,
61
+ width: mailConfig.styles.panel.padding,
62
+ } }) }) })] }), _jsxs("tr", { children: [_jsx("td", { className: "padding", style: {
63
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
64
+ }, width: mailConfig.styles.panel.padding }), _jsx("td", { style: {
65
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
66
+ }, children: _jsx("table", { border: 0, cellPadding: 0, cellSpacing: 0, width: "100%", children: _jsxs("tbody", { children: [logoData ? (_jsxs(Fragment, { children: [_jsx("tr", { children: _jsx("td", { children: _jsx("table", { border: 0, cellPadding: 0, cellSpacing: 0, width: 240, children: _jsx("tbody", { children: _jsx("tr", { children: _jsx("td", { children: _jsx("img", { alt: "Logo", src: logoData, width: 240 }) }) }) }) }) }) }), _jsx("tr", { children: _jsx("td", { height: mailConfig.styles.panel
67
+ .padding }) })] })) : null, title ? (_jsxs(Fragment, { children: [_jsx("tr", { children: _jsx("td", { style: {
68
+ color: mailConfig.styles
69
+ .title.color,
70
+ fontSize: mailConfig.styles
71
+ .title.fontSize,
72
+ fontWeight: mailConfig.styles
73
+ .title
74
+ .fontWeight,
75
+ }, children: title }) }), _jsx("tr", { children: _jsx("td", { height: mailConfig.styles.panel
76
+ .padding }) })] })) : null, _jsx("tr", { children: _jsx("td", { children: children }) })] }) }) }), _jsx("td", { className: "padding", style: {
77
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
78
+ }, width: mailConfig.styles.panel.padding })] }), _jsxs("tr", { children: [_jsx("td", { className: "padding", height: mailConfig.styles.panel.padding, style: {
79
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
80
+ }, width: mailConfig.styles.panel.padding, children: _jsx("div", { className: "padding", style: {
81
+ backgroundColor: mailConfig.styles.root.backgroundColor,
82
+ height: mailConfig.styles.panel.padding,
83
+ width: mailConfig.styles.panel.padding,
84
+ }, children: _jsx("div", { className: "padding", style: {
85
+ backgroundColor: mailConfig.styles.panel
86
+ .backgroundColor,
87
+ borderBottomLeftRadius: mailConfig.styles.panel.padding /
88
+ HALF,
89
+ height: mailConfig.styles.panel.padding,
90
+ width: mailConfig.styles.panel.padding,
91
+ } }) }) }), _jsx("td", { className: "container", style: {
92
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
93
+ }, width: "610" }), _jsx("td", { className: "padding", height: mailConfig.styles.panel.padding, style: {
94
+ backgroundColor: mailConfig.styles.panel.backgroundColor,
95
+ }, width: mailConfig.styles.panel.padding, children: _jsx("div", { className: "padding", style: {
96
+ backgroundColor: mailConfig.styles.root.backgroundColor,
97
+ height: mailConfig.styles.panel.padding,
98
+ width: mailConfig.styles.panel.padding,
99
+ }, children: _jsx("div", { className: "padding", style: {
100
+ backgroundColor: mailConfig.styles.panel
101
+ .backgroundColor,
102
+ borderBottomRightRadius: mailConfig.styles.panel.padding /
103
+ HALF,
104
+ height: mailConfig.styles.panel.padding,
105
+ width: mailConfig.styles.panel.padding,
106
+ } }) }) })] })] }) }) }), _jsx("td", { className: "padding", style: { backgroundColor: mailConfig.styles.root.backgroundColor }, width: "20" })] }), _jsx("tr", { children: _jsx("td", { className: "padding", colSpan: 3, height: "20", style: { backgroundColor: mailConfig.styles.root.backgroundColor } }) })] }) }) })] }));
107
+ }
108
+ export default Mail;
@@ -0,0 +1,5 @@
1
+ export interface MailBlockProps {
2
+ children: React.ReactNode;
3
+ }
4
+ declare function MailBlock({ children }: Readonly<MailBlockProps>): React.ReactElement;
5
+ export default MailBlock;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ function MailBlock({ children }) {
3
+ return _jsx("div", { style: { marginBottom: 30 }, children: children });
4
+ }
5
+ export default MailBlock;
@@ -0,0 +1,8 @@
1
+ import type { DeepPartial } from '@sqrzro/utility';
2
+ import { MailConfigObject } from '../utility/interfaces';
3
+ export interface MailButtonProps extends DeepPartial<MailConfigObject> {
4
+ children: string;
5
+ href: string;
6
+ }
7
+ declare function MailButton({ children, href, styles, }: MailButtonProps): Promise<React.ReactElement>;
8
+ export default MailButton;
@@ -0,0 +1,28 @@
1
+ 'use server';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { getMailConfig } from '../utility/mail-config';
4
+ function calculateWidth(text) {
5
+ const characterWidth = 8;
6
+ const padding = 50;
7
+ return text.length * characterWidth + padding;
8
+ }
9
+ async function MailButton({ children, href, styles, }) {
10
+ const mailConfig = getMailConfig({ styles });
11
+ const calculatedWidth = calculateWidth(children);
12
+ return (_jsx("div", { dangerouslySetInnerHTML: {
13
+ __html: `
14
+ <!--[if mso]>
15
+ <v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="${href}" style="height:${mailConfig.styles.button.height}px;v-text-anchor:middle;width:${calculatedWidth}px;" arcsize="50%" stroke="f" fillcolor="${mailConfig.styles.button.backgroundColor}">
16
+ <w:anchorlock/>
17
+ <center>
18
+ <![endif]-->
19
+ <a href="${href}"
20
+ style="background-color:${mailConfig.styles.button.backgroundColor};border-radius:${mailConfig.styles.button.borderRadius}px;color:${mailConfig.styles.button.color};display:inline-block;font-weight:bold;line-height:${mailConfig.styles.button.height}px;text-align:center;text-decoration:none;width:${calculatedWidth}px;-webkit-text-size-adjust:none;">${children}</a>
21
+ <!--[if mso]>
22
+ </center>
23
+ </v:roundrect>
24
+ <![endif]-->
25
+ `,
26
+ } }));
27
+ }
28
+ export default MailButton;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export interface MailTableProps {
3
+ data: {
4
+ title: React.ReactNode;
5
+ value: React.ReactNode;
6
+ }[];
7
+ }
8
+ declare function MailTable({ data }: Readonly<MailTableProps>): React.ReactElement;
9
+ export default MailTable;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Fragment } from 'react';
3
+ const EVEN_NUMBER = 2;
4
+ function MailTable({ data }) {
5
+ return (_jsx("table", { border: 0, cellPadding: 0, cellSpacing: 0, style: { marginBottom: 30 }, width: "100%", children: _jsxs("tbody", { children: [data.map(({ title, value }, index) => (_jsxs(Fragment, { children: [_jsx("tr", { children: _jsx("td", { colSpan: 5, height: 1, style: { backgroundColor: '#cccccc' } }) }), _jsx("tr", { children: _jsx("td", { colSpan: 5, height: 10, style: { backgroundColor: index % EVEN_NUMBER ? '' : '#f7f7f7' } }) }), _jsxs("tr", { children: [_jsx("td", { style: { backgroundColor: index % EVEN_NUMBER ? '' : '#f7f7f7' }, width: 10 }), _jsx("td", { style: { backgroundColor: index % EVEN_NUMBER ? '' : '#f7f7f7' }, children: title }), _jsx("td", { style: { backgroundColor: index % EVEN_NUMBER ? '' : '#f7f7f7' }, width: 20 }), _jsx("td", { align: "right", style: { backgroundColor: index % EVEN_NUMBER ? '' : '#f7f7f7' }, children: value }), _jsx("td", { style: { backgroundColor: index % EVEN_NUMBER ? '' : '#f7f7f7' }, width: 10 })] }), _jsx("tr", { children: _jsx("td", { colSpan: 5, height: 10, style: { backgroundColor: index % EVEN_NUMBER ? '' : '#f7f7f7' } }) })] }, index))), _jsx("tr", { children: _jsx("td", { colSpan: 5, height: 1, style: { backgroundColor: '#cccccc' } }) })] }) }));
6
+ }
7
+ export default MailTable;
@@ -0,0 +1,8 @@
1
+ export type { MailProps } from './Mail';
2
+ export { default as Mail } from './Mail';
3
+ export type { MailBlockProps } from './MailBlock';
4
+ export { default as MailBlock } from './MailBlock';
5
+ export type { MailButtonProps } from './MailButton';
6
+ export { default as MailButton } from './MailButton';
7
+ export type { MailTableProps } from './MailTable';
8
+ export { default as MailTable } from './MailTable';
@@ -0,0 +1,4 @@
1
+ export { default as Mail } from './Mail';
2
+ export { default as MailBlock } from './MailBlock';
3
+ export { default as MailButton } from './MailButton';
4
+ export { default as MailTable } from './MailTable';
@@ -0,0 +1,2 @@
1
+ declare function convertToDataURI(fileName: string): Promise<string | null>;
2
+ export default convertToDataURI;
@@ -0,0 +1,37 @@
1
+ 'use server';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ function isURL(value) {
5
+ try {
6
+ const url = new URL(value);
7
+ return url.protocol === 'http:' || url.protocol === 'https:';
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ }
13
+ async function read(fileName) {
14
+ if (isURL(fileName)) {
15
+ const response = await fetch(fileName);
16
+ if (!response.ok) {
17
+ throw new Error(`Failed to fetch ${fileName}: ${response.status}`);
18
+ }
19
+ return Buffer.from(await response.arrayBuffer());
20
+ }
21
+ return fs.readFileSync(fileName);
22
+ }
23
+ async function convertToDataURI(fileName) {
24
+ try {
25
+ const filePath = path.isAbsolute(fileName) || isURL(fileName)
26
+ ? fileName
27
+ : path.join(process.cwd(), fileName);
28
+ const mimeType = 'image/' + path.extname(filePath).slice(1);
29
+ const imageData = await read(filePath);
30
+ const base64Image = Buffer.from(imageData).toString('base64');
31
+ return Promise.resolve(`data:${mimeType};base64,${base64Image}`);
32
+ }
33
+ catch (error) {
34
+ return null;
35
+ }
36
+ }
37
+ export default convertToDataURI;
@@ -0,0 +1,23 @@
1
+ export interface MailConfigObject {
2
+ logo?: string;
3
+ styles: {
4
+ root: {
5
+ backgroundColor: string;
6
+ };
7
+ panel: {
8
+ backgroundColor: string;
9
+ padding: number;
10
+ };
11
+ button: {
12
+ backgroundColor: string;
13
+ borderRadius: number;
14
+ color: string;
15
+ height: number;
16
+ };
17
+ title: {
18
+ color: string;
19
+ fontSize: number;
20
+ fontWeight: string;
21
+ };
22
+ };
23
+ }
@@ -0,0 +1,4 @@
1
+ import type { DeepPartial } from '@sqrzro/utility';
2
+ import type { MailConfigObject } from './interfaces';
3
+ export declare function setMailConfig(overrides?: DeepPartial<MailConfigObject>): MailConfigObject;
4
+ export declare function getMailConfig(overrides?: DeepPartial<MailConfigObject>): MailConfigObject;
@@ -0,0 +1,42 @@
1
+ import { deepMerge } from '@sqrzro/utility';
2
+ import { cache } from 'react';
3
+ const DEFAULT_STYLES = {
4
+ styles: {
5
+ button: {
6
+ backgroundColor: '#0f172b',
7
+ borderRadius: 4,
8
+ color: '#ffffff',
9
+ height: 40,
10
+ },
11
+ panel: {
12
+ backgroundColor: '#ffffff',
13
+ padding: 40,
14
+ },
15
+ root: {
16
+ backgroundColor: '#f5f5f5',
17
+ },
18
+ title: {
19
+ color: '#62748e',
20
+ fontSize: 20,
21
+ fontWeight: 'bold',
22
+ },
23
+ },
24
+ };
25
+ const context = cache(() => new Map());
26
+ const global = context();
27
+ export function setMailConfig(overrides) {
28
+ const string = process.env.MAIL_CONFIG || '{}';
29
+ try {
30
+ const object = JSON.parse(string);
31
+ global.set('mail', deepMerge(DEFAULT_STYLES, object, overrides || {}));
32
+ }
33
+ catch (err) {
34
+ global.set('mail', deepMerge(DEFAULT_STYLES, overrides || {}));
35
+ }
36
+ return global.get('mail');
37
+ }
38
+ export function getMailConfig(overrides) {
39
+ return global.has('mail')
40
+ ? deepMerge(DEFAULT_STYLES, global.get('mail'), overrides || {})
41
+ : deepMerge(DEFAULT_STYLES, overrides || {});
42
+ }
@@ -1,12 +1,14 @@
1
- import type { ClassNameProps, HighlightableClassName } from '../../../styles/interfaces';
1
+ import type { ClassNameProps, HighlightableClassName, SelectableClassName } from '../../../styles/classnames/interfaces.js';
2
2
  import type { NavigationObject } from '../../interfaces';
3
3
  export interface AppNavigationClassNames {
4
4
  root: string;
5
5
  list: string;
6
6
  item: HighlightableClassName;
7
7
  link: HighlightableClassName;
8
+ icon: SelectableClassName;
8
9
  }
9
10
  export interface AppNavigationProps extends ClassNameProps<AppNavigationClassNames> {
11
+ classNameKey?: 'appNavigation' | 'tabs';
10
12
  data: NavigationObject[];
11
13
  }
12
14
  declare function AppNavigation(props: Readonly<AppNavigationProps>): React.ReactElement;
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { Suspense } from 'react';
4
- import { getClassNames } from '../../../styles/config';
4
+ import { useClassNames } from '../../../styles/context.js';
5
5
  import useNavigation from '../../hooks/useNavigation';
6
6
  import AppNavigationItem from '../AppNavigationItem';
7
- function AppNavigationComponent({ classNameProps, classNames, data, }) {
8
- const componentClassNames = classNames || getClassNames('appNavigation')?.(classNameProps);
7
+ function AppNavigationComponent({ classNameKey, classNameProps, classNames, data, }) {
8
+ const componentClassNames = useClassNames(classNameKey ?? 'appNavigation', { props: classNameProps }, classNames);
9
9
  const navigation = useNavigation(data);
10
- return (_jsx("nav", { className: componentClassNames?.root, children: _jsx("ul", { className: componentClassNames?.list, children: navigation.map((item, index) => (_jsx(AppNavigationItem, { classNames: classNames, ...item }, index))) }) }));
10
+ return (_jsx("nav", { className: componentClassNames?.root, children: _jsx("ul", { className: componentClassNames?.list, children: navigation.map((item, index) => (_jsx(AppNavigationItem, { classNameKey: classNameKey, classNames: classNames, ...item }, index))) }) }));
11
11
  }
12
12
  function AppNavigation(props) {
13
13
  return (_jsx(Suspense, { children: _jsx(AppNavigationComponent, { ...props }) }));
@@ -1,6 +1,8 @@
1
- import type { NavigationObject } from '../../../navigation/interfaces';
2
- import type { ClassNameProps } from '../../../styles/interfaces';
1
+ import type { NavigationObject } from '../../interfaces.js';
2
+ import type { ClassNameProps } from '../../../styles/classnames/interfaces.js';
3
3
  import type { AppNavigationClassNames } from '../AppNavigation';
4
- export type AppNavigationItemProps = NavigationObject & ClassNameProps<AppNavigationClassNames>;
5
- declare function AppNavigationItem({ classNameProps, classNames, href, isActive, label, }: Readonly<AppNavigationItemProps>): React.ReactElement;
4
+ export interface AppNavigationItemProps extends NavigationObject, ClassNameProps<AppNavigationClassNames> {
5
+ classNameKey?: 'appNavigation' | 'tabs';
6
+ }
7
+ declare function AppNavigationItem({ children, classNameKey, classNameProps, classNames, href, isActive, label, }: Readonly<AppNavigationItemProps>): React.ReactElement;
6
8
  export default AppNavigationItem;
@@ -1,9 +1,18 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import Link from '../../../components/utility/Link';
3
- import { getClassNames } from '../../../styles/config';
4
- import tw from '../../../styles/tw';
5
- function AppNavigationItem({ classNameProps, classNames, href, isActive, label, }) {
6
- const componentClassNames = classNames || getClassNames('appNavigation')?.(classNameProps);
7
- return (_jsx("li", { className: tw(componentClassNames?.item?.default, isActive ? componentClassNames?.item?.highlighted : null), children: _jsx(Link, { className: tw(componentClassNames?.link?.default, isActive ? componentClassNames?.link?.highlighted : null), href: href, children: label }) }));
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Link from '../../../components/elements/Link/index.js';
4
+ import MenuItem from '../../../components/elements/MenuItem/index.js';
5
+ import Action from '../../../components/utility/Action/index.js';
6
+ import Popover from '../../../components/utility/Popover/index.js';
7
+ import usePopover from '../../../hooks/usePopover.js';
8
+ import { useClassNames, useIcon } from '../../../styles/context.js';
9
+ function AppNavigationItem({ children, classNameKey, classNameProps, classNames, href, isActive, label, }) {
10
+ const Icon = useIcon('appNavigation.menu');
11
+ const { controlProps, isOpen, ref, targetProps } = usePopover();
12
+ const componentClassNames = useClassNames(classNameKey ?? 'appNavigation', { props: classNameProps, states: { isHighlighted: isActive ?? false, isSelected: isOpen } }, classNames);
13
+ if (children?.length) {
14
+ return (_jsxs("li", { className: componentClassNames?.item, ref: ref, children: [_jsxs("button", { className: componentClassNames?.link, type: "button", ...controlProps, children: [label, Icon ? (_jsx("div", { className: componentClassNames?.icon, children: _jsx(Icon, {}) })) : null] }), _jsx("div", { className: "relative -mt-3", children: _jsx(Popover, { align: "left", vAlign: "bottom", ...targetProps, children: _jsx("ul", { children: children.map((item, index) => (_jsx("li", { children: _jsx(Action, { ...item, render: MenuItem }) }, index))) }) }) })] }));
15
+ }
16
+ return (_jsx("li", { className: componentClassNames?.item, children: _jsx(Link, { className: componentClassNames?.link, href: href, children: label }) }));
8
17
  }
9
18
  export default AppNavigationItem;
@@ -1,9 +1,6 @@
1
- 'use client';
2
1
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { getClassNames } from '../../../styles/config';
4
2
  import AppNavigation from '../AppNavigation';
5
3
  function Tabs({ classNameProps, classNames, ...props }) {
6
- const componentClassNames = classNames || getClassNames('tabs')?.(classNameProps);
7
- return _jsx(AppNavigation, { classNames: componentClassNames ?? {}, ...props });
4
+ return _jsx(AppNavigation, { classNameKey: "tabs", ...props });
8
5
  }
9
6
  export default Tabs;
@@ -1,7 +1,7 @@
1
- import type { Action } from '../../utility/interfaces';
1
+ import type { SimpleActionObject } from '../../utility/interfaces.js';
2
2
  import type { NavigationObject } from '../interfaces';
3
- interface NavigationAction extends Action {
4
- children?: Action[];
3
+ interface NavigationAction extends SimpleActionObject {
4
+ children?: SimpleActionObject[];
5
5
  }
6
6
  interface UseNavigationOptions {
7
7
  basePath?: string;
@@ -1,4 +1,4 @@
1
- import { joinUrl } from '@sqrzro/utility';
1
+ import { joinURL } from '@sqrzro/utility';
2
2
  import { usePathname, useSelectedLayoutSegments } from 'next/navigation';
3
3
  function getActivePath(pathname, hrefs) {
4
4
  return (hrefs
@@ -18,7 +18,7 @@ function getBasePath(pathname, segments) {
18
18
  function transformChildren(children, basePath) {
19
19
  return children.map(({ details, href, label }) => ({
20
20
  details,
21
- href: joinUrl(basePath, href),
21
+ href: joinURL(basePath, href),
22
22
  label,
23
23
  }));
24
24
  }
@@ -26,13 +26,13 @@ function useNavigation(data, options) {
26
26
  const pathname = usePathname();
27
27
  const segments = useSelectedLayoutSegments();
28
28
  const basePath = getBasePath(pathname, segments);
29
- const hrefs = data.map(({ href }) => joinUrl(basePath, href));
29
+ const hrefs = data.map(({ href }) => joinURL(basePath, href));
30
30
  const activePath = getActivePath(pathname, hrefs);
31
31
  return data.map((item) => ({
32
32
  ...item,
33
33
  children: transformChildren(item.children || [], item.href),
34
- href: joinUrl(basePath, item.href),
35
- isActive: joinUrl(basePath, item.href) === activePath,
34
+ href: joinURL(basePath, item.href),
35
+ isActive: joinURL(basePath, item.href) === activePath,
36
36
  }));
37
37
  }
38
38
  export default useNavigation;
@@ -0,0 +1,97 @@
1
+ import type { ButtonClassNames } from '../../components/buttons/Button/index.js';
2
+ import type { TextButtonClassNames } from '../../components/buttons/TextButton/index.js';
3
+ import type { DataTableClassNames } from '../../components/collections/DataTable/index.js';
4
+ import type { DefinitionListClassNames } from '../../components/collections/DefinitionList/index.js';
5
+ import type { EmptyMessageClassNames } from '../../components/collections/EmptyMessage/index.js';
6
+ import type { ListClassNames } from '../../components/collections/List/index.js';
7
+ import type { ListItemClassNames } from '../../components/collections/ListItem/index.js';
8
+ import type { ListItemMetaClassNames } from '../../components/collections/ListItemMeta/index.js';
9
+ import type { PaginationClassNames } from '../../components/collections/Pagination/index.js';
10
+ import type { TableClassNames } from '../../components/collections/Table/index.js';
11
+ import type { BadgeClassNames } from '../../components/elements/Badge/index.js';
12
+ import type { InfoPanelClassNames } from '../../components/elements/InfoPanel/index.js';
13
+ import type { LinkClassNames } from '../../components/elements/Link/index.js';
14
+ import type { MenuClassNames } from '../../components/elements/Menu/index.js';
15
+ import type { ReferenceClassNames } from '../../components/elements/Reference/index.js';
16
+ import type { SummaryClassNames } from '../../components/elements/Summary/index.js';
17
+ import type { AppErrorClassNames } from '../../components/errors/AppError/index.js';
18
+ import type { ModalClassNames } from '../../components/modals/Modal/index.js';
19
+ import type { ActionListClassNames } from '../../components/utility/ActionList/index.js';
20
+ import type { CalendarClassNames } from '../../components/utility/Calendar/index.js';
21
+ import type { ContainerClassNames } from '../../components/utility/Container/index.js';
22
+ import type { LoaderClassNames } from '../../components/utility/Loader/index.js';
23
+ import type { PopoverClassNames } from '../../components/utility/Popover/index.js';
24
+ import type { ToastClassNames } from '../../components/utility/Toast/index.js';
25
+ import type { FilterBarClassNames } from '../../filters/components/FilterBar/index.js';
26
+ import type { FilterClearButtonClassNames } from '../../filters/components/FilterClearButton/index.js';
27
+ import type { FilterItemClassNames } from '../../filters/components/FilterItem/index.js';
28
+ import type { FilterPanelClassNames } from '../../filters/components/FilterPanel/index.js';
29
+ import type { SearchFilterClassNames } from '../../filters/filters/SearchFilter/index.js';
30
+ import type { CheckboxInputClassNames } from '../../forms/components/CheckboxInput/index.js';
31
+ import type { ChkRadClassNames } from '../../forms/components/ChkRad/index.js';
32
+ import type { ColorInputClassNames } from '../../forms/components/ColorInput/index.js';
33
+ import type { CSVInputClassNames } from '../../forms/components/CSVInput/index.js';
34
+ import type { DropdownClassNames } from '../../forms/components/Dropdown/index.js';
35
+ import type { EditableFormClassNames } from '../../forms/components/EditableForm/index.js';
36
+ import type { EditableFormFieldClassNames } from '../../forms/components/EditableFormField/index.js';
37
+ import type { FormClassNames } from '../../forms/components/Form/index.js';
38
+ import type { FormFieldClassNames } from '../../forms/components/FormField/index.js';
39
+ import type { ImageInputClassNames } from '../../forms/components/ImageInput/index.js';
40
+ import type { PasswordComplexityClassNames } from '../../forms/components/PasswordComplexity/index.js';
41
+ import type { PasswordInputClassNames } from '../../forms/components/PasswordInput/index.js';
42
+ import type { StaticTextInputClassNames } from '../../forms/components/StaticTextInput/index.js';
43
+ import type { SwitchClassNames } from '../../forms/components/Switch/index.js';
44
+ import type { TextInputClassNames } from '../../forms/components/TextInput/index.js';
45
+ import type { TextAreaClassNames } from '../../forms/components/TextArea/index.js';
46
+ import type { AppNavigationClassNames } from '../../navigation/components/AppNavigation/index.js';
47
+ import type { TabsClassNames } from '../../navigation/components/Tabs/index.js';
48
+ import type { ComponentClassNames } from './interfaces';
49
+ export interface UIClassNames {
50
+ actionList?: ComponentClassNames<ActionListClassNames>;
51
+ appError?: ComponentClassNames<AppErrorClassNames>;
52
+ appNavigation?: ComponentClassNames<AppNavigationClassNames>;
53
+ badge?: ComponentClassNames<BadgeClassNames>;
54
+ button?: ComponentClassNames<ButtonClassNames>;
55
+ calendar?: ComponentClassNames<CalendarClassNames>;
56
+ checkboxInput?: ComponentClassNames<CheckboxInputClassNames>;
57
+ chkrad?: ComponentClassNames<ChkRadClassNames>;
58
+ colorInput?: ComponentClassNames<ColorInputClassNames>;
59
+ container?: ComponentClassNames<ContainerClassNames>;
60
+ csvInput?: ComponentClassNames<CSVInputClassNames>;
61
+ dataTable?: ComponentClassNames<DataTableClassNames>;
62
+ definitionList?: ComponentClassNames<DefinitionListClassNames>;
63
+ dropdown?: ComponentClassNames<DropdownClassNames>;
64
+ editableForm?: ComponentClassNames<EditableFormClassNames>;
65
+ editableFormField?: ComponentClassNames<EditableFormFieldClassNames>;
66
+ emptyMessage?: ComponentClassNames<EmptyMessageClassNames>;
67
+ filterBar?: ComponentClassNames<FilterBarClassNames>;
68
+ filterClear?: ComponentClassNames<FilterClearButtonClassNames>;
69
+ filterItem?: ComponentClassNames<FilterItemClassNames>;
70
+ filterPanel?: ComponentClassNames<FilterPanelClassNames>;
71
+ filterSearch?: ComponentClassNames<SearchFilterClassNames>;
72
+ form?: ComponentClassNames<FormClassNames>;
73
+ formField?: ComponentClassNames<FormFieldClassNames>;
74
+ imageInput?: ComponentClassNames<ImageInputClassNames>;
75
+ infoPanel?: ComponentClassNames<InfoPanelClassNames>;
76
+ link?: ComponentClassNames<LinkClassNames>;
77
+ list?: ComponentClassNames<ListClassNames>;
78
+ listItem?: ComponentClassNames<ListItemClassNames>;
79
+ listItemMeta?: ComponentClassNames<ListItemMetaClassNames>;
80
+ loader?: ComponentClassNames<LoaderClassNames>;
81
+ menu?: ComponentClassNames<MenuClassNames>;
82
+ modal?: ComponentClassNames<ModalClassNames>;
83
+ pagination?: ComponentClassNames<PaginationClassNames>;
84
+ passwordComplexity?: ComponentClassNames<PasswordComplexityClassNames>;
85
+ passwordInput?: ComponentClassNames<PasswordInputClassNames>;
86
+ popover?: ComponentClassNames<PopoverClassNames>;
87
+ reference?: ComponentClassNames<ReferenceClassNames>;
88
+ staticTextInput?: ComponentClassNames<StaticTextInputClassNames>;
89
+ summary?: ComponentClassNames<SummaryClassNames>;
90
+ switch?: ComponentClassNames<SwitchClassNames>;
91
+ table?: ComponentClassNames<TableClassNames>;
92
+ tabs?: ComponentClassNames<TabsClassNames>;
93
+ textArea?: ComponentClassNames<TextAreaClassNames>;
94
+ textButton?: ComponentClassNames<TextButtonClassNames>;
95
+ textInput?: ComponentClassNames<TextInputClassNames>;
96
+ toast?: ComponentClassNames<ToastClassNames>;
97
+ }
@@ -0,0 +1 @@
1
+ export {};