nurseitaly-components 0.0.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 (332) hide show
  1. package/README.md +93 -0
  2. package/dist/basic/Avatar/Avatar.d.ts +12 -0
  3. package/dist/basic/Avatar/Avatar.js +24 -0
  4. package/dist/basic/Avatar/avatar.png +0 -0
  5. package/dist/basic/Avatar/index.d.ts +2 -0
  6. package/dist/basic/Avatar/index.js +2 -0
  7. package/dist/basic/Avatar/styles.scss +80 -0
  8. package/dist/basic/Badge/Badge.d.ts +13 -0
  9. package/dist/basic/Badge/Badge.js +17 -0
  10. package/dist/basic/Badge/index.d.ts +2 -0
  11. package/dist/basic/Badge/index.js +2 -0
  12. package/dist/basic/Badge/styles.scss +68 -0
  13. package/dist/basic/Button/Button.d.ts +25 -0
  14. package/dist/basic/Button/Button.js +42 -0
  15. package/dist/basic/Button/index.d.ts +2 -0
  16. package/dist/basic/Button/index.js +2 -0
  17. package/dist/basic/Button/logo-ud.png +0 -0
  18. package/dist/basic/Button/styles.scss +248 -0
  19. package/dist/basic/CheckboxField/CheckboxField.d.ts +10 -0
  20. package/dist/basic/CheckboxField/CheckboxField.js +9 -0
  21. package/dist/basic/CheckboxField/index.d.ts +2 -0
  22. package/dist/basic/CheckboxField/index.js +2 -0
  23. package/dist/basic/CheckboxField/style.scss +4 -0
  24. package/dist/basic/DatePickerField/DatePickerField.d.ts +26 -0
  25. package/dist/basic/DatePickerField/DatePickerField.js +90 -0
  26. package/dist/basic/DatePickerField/DatePickerTheme.d.ts +2 -0
  27. package/dist/basic/DatePickerField/DatePickerTheme.js +59 -0
  28. package/dist/basic/DatePickerField/index.d.ts +1 -0
  29. package/dist/basic/DatePickerField/index.js +1 -0
  30. package/dist/basic/DatePickerField/styles.scss +26 -0
  31. package/dist/basic/DropdownButton/DropdownButton.d.ts +18 -0
  32. package/dist/basic/DropdownButton/DropdownButton.js +44 -0
  33. package/dist/basic/DropdownButton/index.d.ts +2 -0
  34. package/dist/basic/DropdownButton/index.js +2 -0
  35. package/dist/basic/DropdownButton/styles.scss +172 -0
  36. package/dist/basic/DropdownList/DropdownItemList.d.ts +16 -0
  37. package/dist/basic/DropdownList/DropdownItemList.js +17 -0
  38. package/dist/basic/DropdownList/DropdownList.d.ts +9 -0
  39. package/dist/basic/DropdownList/DropdownList.js +10 -0
  40. package/dist/basic/DropdownList/index.d.ts +2 -0
  41. package/dist/basic/DropdownList/index.js +2 -0
  42. package/dist/basic/DropdownList/styles.scss +56 -0
  43. package/dist/basic/DropdownMenu/DropdownMenu.d.ts +13 -0
  44. package/dist/basic/DropdownMenu/DropdownMenu.js +12 -0
  45. package/dist/basic/DropdownMenu/index.d.ts +2 -0
  46. package/dist/basic/DropdownMenu/index.js +2 -0
  47. package/dist/basic/DropdownMenu/styles.scss +54 -0
  48. package/dist/basic/Dummy/Dummy.d.ts +9 -0
  49. package/dist/basic/Dummy/Dummy.js +8 -0
  50. package/dist/basic/Dummy/index.d.ts +2 -0
  51. package/dist/basic/Dummy/index.js +2 -0
  52. package/dist/basic/Dummy/styles.scss +4 -0
  53. package/dist/basic/FilterDropdown/FilterDropdown.d.ts +16 -0
  54. package/dist/basic/FilterDropdown/FilterDropdown.js +56 -0
  55. package/dist/basic/FilterDropdown/index.d.ts +2 -0
  56. package/dist/basic/FilterDropdown/index.js +2 -0
  57. package/dist/basic/FilterDropdown/styles.scss +97 -0
  58. package/dist/basic/Icon/Icon.d.ts +15 -0
  59. package/dist/basic/Icon/Icon.js +20 -0
  60. package/dist/basic/Icon/IconSizes.d.ts +10 -0
  61. package/dist/basic/Icon/IconSizes.js +11 -0
  62. package/dist/basic/Icon/index.d.ts +2 -0
  63. package/dist/basic/Icon/index.js +2 -0
  64. package/dist/basic/Icon/styles.scss +249 -0
  65. package/dist/basic/IconButton/IconButton.d.ts +24 -0
  66. package/dist/basic/IconButton/IconButton.js +42 -0
  67. package/dist/basic/IconButton/index.d.ts +2 -0
  68. package/dist/basic/IconButton/index.js +2 -0
  69. package/dist/basic/IconButton/styles.scss +192 -0
  70. package/dist/basic/Pill/Pill.d.ts +17 -0
  71. package/dist/basic/Pill/Pill.js +22 -0
  72. package/dist/basic/Pill/index.d.ts +2 -0
  73. package/dist/basic/Pill/index.js +2 -0
  74. package/dist/basic/Pill/styles.scss +70 -0
  75. package/dist/basic/SelectField/AsyncSelectField.d.ts +21 -0
  76. package/dist/basic/SelectField/AsyncSelectField.js +131 -0
  77. package/dist/basic/SelectField/SelectAutocompleteTheme.d.ts +2 -0
  78. package/dist/basic/SelectField/SelectAutocompleteTheme.js +78 -0
  79. package/dist/basic/SelectField/SelectField.d.ts +27 -0
  80. package/dist/basic/SelectField/SelectField.js +81 -0
  81. package/dist/basic/SelectField/SelectFieldTheme.d.ts +7 -0
  82. package/dist/basic/SelectField/SelectFieldTheme.js +57 -0
  83. package/dist/basic/SelectField/SelectMultipleField.d.ts +28 -0
  84. package/dist/basic/SelectField/SelectMultipleField.js +98 -0
  85. package/dist/basic/SelectField/index.d.ts +2 -0
  86. package/dist/basic/SelectField/index.js +2 -0
  87. package/dist/basic/SelectField/styles.scss +38 -0
  88. package/dist/basic/Spinner/Spinner.d.ts +14 -0
  89. package/dist/basic/Spinner/Spinner.js +37 -0
  90. package/dist/basic/Spinner/index.d.ts +2 -0
  91. package/dist/basic/Spinner/index.js +2 -0
  92. package/dist/basic/Spinner/styles.scss +37 -0
  93. package/dist/basic/SwitchField/SwitchField.d.ts +11 -0
  94. package/dist/basic/SwitchField/SwitchField.js +13 -0
  95. package/dist/basic/SwitchField/index.d.ts +2 -0
  96. package/dist/basic/SwitchField/index.js +2 -0
  97. package/dist/basic/SwitchField/style.scss +4 -0
  98. package/dist/basic/Tabs/Tabs.d.ts +17 -0
  99. package/dist/basic/Tabs/Tabs.js +9 -0
  100. package/dist/basic/Tabs/index.d.ts +2 -0
  101. package/dist/basic/Tabs/index.js +2 -0
  102. package/dist/basic/Tabs/styles.scss +51 -0
  103. package/dist/basic/Tag/Tag.d.ts +18 -0
  104. package/dist/basic/Tag/Tag.js +30 -0
  105. package/dist/basic/Tag/index.d.ts +2 -0
  106. package/dist/basic/Tag/index.js +2 -0
  107. package/dist/basic/Tag/styles.scss +101 -0
  108. package/dist/basic/TextField/TextField.d.ts +34 -0
  109. package/dist/basic/TextField/TextField.js +164 -0
  110. package/dist/basic/TextField/TextFieldTheme.d.ts +6 -0
  111. package/dist/basic/TextField/TextFieldTheme.js +70 -0
  112. package/dist/basic/TextField/index.d.ts +2 -0
  113. package/dist/basic/TextField/index.js +2 -0
  114. package/dist/basic/TextField/inputRefManager.d.ts +4 -0
  115. package/dist/basic/TextField/inputRefManager.js +18 -0
  116. package/dist/basic/TextField/styles.scss +44 -0
  117. package/dist/basic/Tooltip/Tooltip.d.ts +26 -0
  118. package/dist/basic/Tooltip/Tooltip.js +37 -0
  119. package/dist/basic/Tooltip/index.d.ts +2 -0
  120. package/dist/basic/Tooltip/index.js +2 -0
  121. package/dist/basic/Tooltip/styles.scss +73 -0
  122. package/dist/basic/VerticalButton/VerticalButton.d.ts +6 -0
  123. package/dist/basic/VerticalButton/VerticalButton.js +8 -0
  124. package/dist/basic/VerticalButton/index.d.ts +2 -0
  125. package/dist/basic/VerticalButton/index.js +2 -0
  126. package/dist/basic/VerticalButton/styles.scss +24 -0
  127. package/dist/basic/fonts/material-symbols-outlined.woff2 +0 -0
  128. package/dist/basic/fonts/work-sans-latin-ext.woff2 +0 -0
  129. package/dist/basic/fonts/work-sans-latin.woff2 +0 -0
  130. package/dist/basic/fonts/work-sans-vietnamese.woff2 +0 -0
  131. package/dist/basic/fonts.d.ts +1 -0
  132. package/dist/basic/fonts.js +111 -0
  133. package/dist/basic/index.d.ts +33 -0
  134. package/dist/basic/index.js +29 -0
  135. package/dist/common/AppAnalytics/AppAnalytics.d.ts +1 -0
  136. package/dist/common/AppAnalytics/AppAnalytics.js +25 -0
  137. package/dist/common/AppAnalytics/index.d.ts +2 -0
  138. package/dist/common/AppAnalytics/index.js +2 -0
  139. package/dist/common/AppCard/AppCard.d.ts +13 -0
  140. package/dist/common/AppCard/AppCard.js +7 -0
  141. package/dist/common/AppCard/index.d.ts +2 -0
  142. package/dist/common/AppCard/index.js +2 -0
  143. package/dist/common/AppCard/style.scss +33 -0
  144. package/dist/common/AppClipboard/AppClipboard.d.ts +7 -0
  145. package/dist/common/AppClipboard/AppClipboard.js +23 -0
  146. package/dist/common/AppClipboard/index.d.ts +2 -0
  147. package/dist/common/AppClipboard/index.js +2 -0
  148. package/dist/common/AppColorpicker/AppColorpicker.d.ts +9 -0
  149. package/dist/common/AppColorpicker/AppColorpicker.js +22 -0
  150. package/dist/common/AppColorpicker/index.d.ts +2 -0
  151. package/dist/common/AppColorpicker/index.js +2 -0
  152. package/dist/common/AppColorpicker/style.scss +26 -0
  153. package/dist/common/AppCopyText/AppCopyText.d.ts +11 -0
  154. package/dist/common/AppCopyText/AppCopyText.js +35 -0
  155. package/dist/common/AppCopyText/index.d.ts +2 -0
  156. package/dist/common/AppCopyText/index.js +2 -0
  157. package/dist/common/AppCopyText/styles.scss +55 -0
  158. package/dist/common/AppDropzone/AppDropzone.d.ts +19 -0
  159. package/dist/common/AppDropzone/AppDropzone.js +13 -0
  160. package/dist/common/AppDropzone/AppDropzoneBody.d.ts +22 -0
  161. package/dist/common/AppDropzone/AppDropzoneBody.js +74 -0
  162. package/dist/common/AppDropzone/UploadService.d.ts +6 -0
  163. package/dist/common/AppDropzone/UploadService.js +18 -0
  164. package/dist/common/AppDropzone/UploadedFile.d.ts +14 -0
  165. package/dist/common/AppDropzone/UploadedFile.js +1 -0
  166. package/dist/common/AppDropzone/index.d.ts +4 -0
  167. package/dist/common/AppDropzone/index.js +4 -0
  168. package/dist/common/AppDropzone/style.scss +42 -0
  169. package/dist/common/AppDropzoneLocal/AppDropzoneBodyLocal.d.ts +15 -0
  170. package/dist/common/AppDropzoneLocal/AppDropzoneBodyLocal.js +55 -0
  171. package/dist/common/AppDropzoneLocal/AppDropzoneLocal.d.ts +15 -0
  172. package/dist/common/AppDropzoneLocal/AppDropzoneLocal.js +13 -0
  173. package/dist/common/AppDropzoneLocal/UploadedFileLocal.d.ts +5 -0
  174. package/dist/common/AppDropzoneLocal/UploadedFileLocal.js +1 -0
  175. package/dist/common/AppDropzoneLocal/index.d.ts +5 -0
  176. package/dist/common/AppDropzoneLocal/index.js +4 -0
  177. package/dist/common/AppDropzoneLocal/style.scss +75 -0
  178. package/dist/common/AppForm/AppForm.d.ts +16 -0
  179. package/dist/common/AppForm/AppForm.js +67 -0
  180. package/dist/common/AppForm/AppFormField.d.ts +37 -0
  181. package/dist/common/AppForm/AppFormField.js +10 -0
  182. package/dist/common/AppForm/AppFormInfo.d.ts +9 -0
  183. package/dist/common/AppForm/AppFormInfo.js +45 -0
  184. package/dist/common/AppForm/FormColorField.d.ts +12 -0
  185. package/dist/common/AppForm/FormColorField.js +23 -0
  186. package/dist/common/AppForm/index.d.ts +2 -0
  187. package/dist/common/AppForm/index.js +2 -0
  188. package/dist/common/AppForm/style.scss +60 -0
  189. package/dist/common/AppLoading/AppLoading.d.ts +7 -0
  190. package/dist/common/AppLoading/AppLoading.js +8 -0
  191. package/dist/common/AppLoading/index.d.ts +2 -0
  192. package/dist/common/AppLoading/index.js +2 -0
  193. package/dist/common/AppLoading/style.scss +5 -0
  194. package/dist/common/AppModal/AppModal.d.ts +27 -0
  195. package/dist/common/AppModal/AppModal.js +42 -0
  196. package/dist/common/AppModal/AppModalConfirm.d.ts +15 -0
  197. package/dist/common/AppModal/AppModalConfirm.js +37 -0
  198. package/dist/common/AppModal/AppModalRemove.d.ts +22 -0
  199. package/dist/common/AppModal/AppModalRemove.js +35 -0
  200. package/dist/common/AppModal/AppModalUtils.d.ts +2 -0
  201. package/dist/common/AppModal/AppModalUtils.js +17 -0
  202. package/dist/common/AppModal/index.d.ts +2 -0
  203. package/dist/common/AppModal/index.js +2 -0
  204. package/dist/common/AppModal/style.scss +100 -0
  205. package/dist/common/AppPagination/AppPagination.d.ts +12 -0
  206. package/dist/common/AppPagination/AppPagination.js +212 -0
  207. package/dist/common/AppPagination/index.d.ts +2 -0
  208. package/dist/common/AppPagination/index.js +2 -0
  209. package/dist/common/AppPagination/styles.scss +230 -0
  210. package/dist/common/AppPicture/AppPicture.d.ts +10 -0
  211. package/dist/common/AppPicture/AppPicture.js +18 -0
  212. package/dist/common/AppPicture/index.d.ts +2 -0
  213. package/dist/common/AppPicture/index.js +2 -0
  214. package/dist/common/AppPicture/style.scss +0 -0
  215. package/dist/common/AppPlaceholder/AppPlaceholder.d.ts +12 -0
  216. package/dist/common/AppPlaceholder/AppPlaceholder.js +7 -0
  217. package/dist/common/AppPlaceholder/index.d.ts +2 -0
  218. package/dist/common/AppPlaceholder/index.js +2 -0
  219. package/dist/common/AppPlaceholder/style.scss +25 -0
  220. package/dist/common/AppSwitchGroup/AppSwitchGroup.d.ts +12 -0
  221. package/dist/common/AppSwitchGroup/AppSwitchGroup.js +8 -0
  222. package/dist/common/AppSwitchGroup/index.d.ts +2 -0
  223. package/dist/common/AppSwitchGroup/index.js +2 -0
  224. package/dist/common/AppSwitchGroup/style.scss +18 -0
  225. package/dist/common/AppTable/AppTable.d.ts +19 -0
  226. package/dist/common/AppTable/AppTable.js +62 -0
  227. package/dist/common/AppTable/AppTableList.d.ts +14 -0
  228. package/dist/common/AppTable/AppTableList.js +48 -0
  229. package/dist/common/AppTable/AppTableTheme.d.ts +1 -0
  230. package/dist/common/AppTable/AppTableTheme.js +45 -0
  231. package/dist/common/AppTable/AppTableUtils.d.ts +8 -0
  232. package/dist/common/AppTable/AppTableUtils.js +24 -0
  233. package/dist/common/AppTable/index.d.ts +2 -0
  234. package/dist/common/AppTable/index.js +2 -0
  235. package/dist/common/AppTable/styles.scss +65 -0
  236. package/dist/common/AppTable/types/AppPage.d.ts +29 -0
  237. package/dist/common/AppTable/types/AppPage.js +18 -0
  238. package/dist/common/AppTable/types/AppPageable.d.ts +15 -0
  239. package/dist/common/AppTable/types/AppPageable.js +19 -0
  240. package/dist/common/AppTextArea/AppTextArea.d.ts +11 -0
  241. package/dist/common/AppTextArea/AppTextArea.js +29 -0
  242. package/dist/common/AppTextArea/index.d.ts +1 -0
  243. package/dist/common/AppTextArea/index.js +1 -0
  244. package/dist/common/AppTextArea/style.scss +47 -0
  245. package/dist/common/AppToast/AppToast.d.ts +2 -0
  246. package/dist/common/AppToast/AppToast.js +81 -0
  247. package/dist/common/AppToast/ToastMessage.d.ts +8 -0
  248. package/dist/common/AppToast/ToastMessage.js +4 -0
  249. package/dist/common/AppToast/index.d.ts +2 -0
  250. package/dist/common/AppToast/index.js +2 -0
  251. package/dist/common/AppToast/style.scss +0 -0
  252. package/dist/common/index.d.ts +27 -0
  253. package/dist/common/index.js +23 -0
  254. package/dist/configs/CommonContext.d.ts +10 -0
  255. package/dist/configs/CommonContext.js +9 -0
  256. package/dist/configs/CookieStorage.d.ts +15 -0
  257. package/dist/configs/CookieStorage.js +45 -0
  258. package/dist/configs/Localization.d.ts +28 -0
  259. package/dist/configs/Localization.js +63 -0
  260. package/dist/configs/Storage.d.ts +9 -0
  261. package/dist/configs/Storage.js +16 -0
  262. package/dist/configs/api.d.ts +10 -0
  263. package/dist/configs/api.js +52 -0
  264. package/dist/configs/index.d.ts +8 -0
  265. package/dist/configs/index.js +7 -0
  266. package/dist/configs/localization/BaseTexts.d.ts +44 -0
  267. package/dist/configs/localization/BaseTexts.js +44 -0
  268. package/dist/configs/localization/CommentsTexts.d.ts +95 -0
  269. package/dist/configs/localization/CommentsTexts.js +95 -0
  270. package/dist/configs/localization/CommonTexts.d.ts +239 -0
  271. package/dist/configs/localization/CommonTexts.js +239 -0
  272. package/dist/configs/localization/ConsentTexts.d.ts +116 -0
  273. package/dist/configs/localization/ConsentTexts.js +203 -0
  274. package/dist/configs/localization/HeaderAppTexts.d.ts +106 -0
  275. package/dist/configs/localization/HeaderAppTexts.js +106 -0
  276. package/dist/configs/localization/HeaderTexts.d.ts +68 -0
  277. package/dist/configs/localization/HeaderTexts.js +68 -0
  278. package/dist/configs/localization/HelpTexts.d.ts +38 -0
  279. package/dist/configs/localization/HelpTexts.js +38 -0
  280. package/dist/configs/localization/HistoryTexts.d.ts +428 -0
  281. package/dist/configs/localization/HistoryTexts.js +428 -0
  282. package/dist/configs/localization/ParametersTexts.d.ts +137 -0
  283. package/dist/configs/localization/ParametersTexts.js +137 -0
  284. package/dist/configs/localization/SentenceTexts.d.ts +56 -0
  285. package/dist/configs/localization/SentenceTexts.js +56 -0
  286. package/dist/configs/localization/TreeTexts.d.ts +46 -0
  287. package/dist/configs/localization/TreeTexts.js +46 -0
  288. package/dist/configs/localization/UploadTexts.d.ts +23 -0
  289. package/dist/configs/localization/UploadTexts.js +23 -0
  290. package/dist/configs/services/ProfileService.d.ts +5 -0
  291. package/dist/configs/services/ProfileService.js +8 -0
  292. package/dist/configs/sessionTypes.d.ts +42 -0
  293. package/dist/configs/sessionTypes.js +63 -0
  294. package/dist/configs/useLoggedUtils.d.ts +7 -0
  295. package/dist/configs/useLoggedUtils.js +24 -0
  296. package/dist/configs/useMessageUtils.d.ts +22 -0
  297. package/dist/configs/useMessageUtils.js +71 -0
  298. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  299. package/dist/fonts/work-sans-latin-ext.woff2 +0 -0
  300. package/dist/fonts/work-sans-latin.woff2 +0 -0
  301. package/dist/fonts/work-sans-vietnamese.woff2 +0 -0
  302. package/dist/functions/DateUtils.d.ts +15 -0
  303. package/dist/functions/DateUtils.js +52 -0
  304. package/dist/functions/FilterUtils.d.ts +13 -0
  305. package/dist/functions/FilterUtils.js +56 -0
  306. package/dist/functions/FormUtils.d.ts +13 -0
  307. package/dist/functions/FormUtils.js +58 -0
  308. package/dist/functions/ImageUtils.d.ts +5 -0
  309. package/dist/functions/ImageUtils.js +13 -0
  310. package/dist/functions/SecurityUtils.d.ts +6 -0
  311. package/dist/functions/SecurityUtils.js +28 -0
  312. package/dist/functions/UsabilityUtils.d.ts +10 -0
  313. package/dist/functions/UsabilityUtils.js +47 -0
  314. package/dist/functions/index.d.ts +6 -0
  315. package/dist/functions/index.js +6 -0
  316. package/dist/functions/logo-ud.png +0 -0
  317. package/dist/functions/placeholder-image.png +0 -0
  318. package/dist/functions/placeholder-person.png +0 -0
  319. package/dist/index.d.ts +5 -0
  320. package/dist/index.js +5 -0
  321. package/dist/styles/base/_borders.scss +30 -0
  322. package/dist/styles/base/_colors.scss +100 -0
  323. package/dist/styles/base/_displays.scss +207 -0
  324. package/dist/styles/base/_margins.css +174 -0
  325. package/dist/styles/base/_spacing.scss +26 -0
  326. package/dist/styles/base/_tokens.scss +330 -0
  327. package/dist/styles/base/_typographs.scss +376 -0
  328. package/dist/styles/font-googleapis.scss +222 -0
  329. package/dist/styles/main.scss +112 -0
  330. package/dist/vendor/index.d.ts +5 -0
  331. package/dist/vendor/index.js +4 -0
  332. package/package.json +118 -0
@@ -0,0 +1,164 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return */
3
+ import { InputAdornment, TextField as MuiTextField } from '@mui/material';
4
+ import { ThemeProvider, useTheme } from '@mui/material/styles';
5
+ import cx from 'classnames';
6
+ import { useEffect, useState } from 'react';
7
+ import { Controller } from 'react-hook-form';
8
+ import Icon from '../Icon';
9
+ import Tooltip from '../Tooltip';
10
+ import { textFieldTheme } from './TextFieldTheme';
11
+ import { setCurrentInput } from './inputRefManager';
12
+ import './styles.scss';
13
+ export default function TextField({ className, attr, label, createdForm, disabled, title, placeholder, multiline, maxChars, required, startAdornment, endAdornment, defaultEndAdornments = ['close'], showEndAdornment = true, onChange, onFocus, onKeyDown, onRemove, onBlur, rows = 4, infoText, inputRef, width = '100%', height, mask, blurMask, }) {
14
+ const fieldName = attr;
15
+ const outerTheme = useTheme();
16
+ const [showPassword, setShowPassword] = useState(false);
17
+ const [active, setActive] = useState(false);
18
+ const [focus, setFocus] = useState(false);
19
+ const [mouseOver, setMouseOver] = useState(false);
20
+ const hasError = () => !!createdForm.formState.errors[attr];
21
+ const hasLabel = !!label;
22
+ // Custom height if provided; otherwise labeled single-line stays 48px, unlabeled shrinks with content, multiline fills
23
+ const effectiveHeight = height !== undefined
24
+ ? height
25
+ : multiline
26
+ ? '100%'
27
+ : hasLabel
28
+ ? '48px'
29
+ : undefined;
30
+ const getClassNames = cx('ds-input-text', className, {
31
+ disabled: disabled,
32
+ });
33
+ const applyMask = (value, isBlur) => {
34
+ if (typeof value === 'string' && mask) {
35
+ return mask(value, isBlur);
36
+ }
37
+ return value;
38
+ };
39
+ useEffect(() => {
40
+ const currentValue = createdForm.getValues(fieldName);
41
+ if (mask && currentValue) {
42
+ const masked = applyMask(currentValue);
43
+ if (masked !== currentValue) {
44
+ createdForm.setValue(fieldName, masked, { shouldValidate: false });
45
+ }
46
+ }
47
+ }, [attr, mask, createdForm, fieldName]);
48
+ const getEndAdornmentIcon = (value) => {
49
+ const adornments = [];
50
+ if (defaultEndAdornments.length > 0) {
51
+ // Check for password adornment
52
+ if (defaultEndAdornments.includes('password')) {
53
+ adornments.push(_jsx(Icon, { name: showPassword ? 'visibility_off' : 'visibility', size: "small", onClick: () => setShowPassword(!showPassword), className: "pointer" }, "password"));
54
+ }
55
+ // Check for info adornment
56
+ if (defaultEndAdornments.includes('info') && infoText) {
57
+ const infoTextElement = (_jsx(Icon, { name: "info", size: "small", className: "icon-info pointer" }));
58
+ adornments.push(_jsx(Tooltip, { title: infoText, mode: "simple", children: _jsx("span", { children: infoTextElement }) }, "info"));
59
+ }
60
+ // Check for close adornment - show when value is not undefined and value is not equal to defaultValue
61
+ if (defaultEndAdornments.includes('close') &&
62
+ value !== undefined &&
63
+ onRemove) {
64
+ adornments.push(_jsx(Icon, { name: "close", size: "small", className: `${disabled ? 'd-none' : ''} pointer`, onClick: () => onRemove && onRemove() }, "close"));
65
+ }
66
+ }
67
+ // Append custom endAdornments if provided
68
+ if (endAdornment && endAdornment.length > 0) {
69
+ adornments.push(...endAdornment);
70
+ }
71
+ if (adornments.length === 0) {
72
+ return null;
73
+ }
74
+ if (adornments.length === 1) {
75
+ return adornments[0];
76
+ }
77
+ // Return multiple adornments wrapped in a div with spacing
78
+ return _jsx("div", { className: "ds-end-adornments", children: adornments });
79
+ };
80
+ useEffect(() => {
81
+ if (focus || mouseOver) {
82
+ setActive(true);
83
+ }
84
+ else {
85
+ setActive(false);
86
+ }
87
+ }, [focus, mouseOver]);
88
+ return (_jsx("div", { className: getClassNames, style: { width }, children: _jsx(Controller, { name: fieldName, control: createdForm.control, render: ({ field }) => (_jsxs(ThemeProvider, { theme: textFieldTheme(outerTheme, { hasLabel }), children: [_jsx(MuiTextField, { ...field, inputRef: inputRef, label: label, value: field.value || '', type: defaultEndAdornments.includes('password')
89
+ ? showPassword
90
+ ? 'text'
91
+ : 'password'
92
+ : 'text', fullWidth: true, required: required, disabled: disabled, variant: "filled", placeholder: !focus ? placeholder : '', color: "error", multiline: multiline, minRows: rows, slotProps: {
93
+ ...(hasLabel && {
94
+ inputLabel: {
95
+ shrink: true,
96
+ },
97
+ }),
98
+ input: {
99
+ endAdornment: showEndAdornment && (_jsx(InputAdornment, { position: "end", children: getEndAdornmentIcon(field.value) })),
100
+ startAdornment: startAdornment && (_jsx(InputAdornment, { position: "start", children: startAdornment })),
101
+ },
102
+ }, onFocus: (e) => {
103
+ setCurrentInput(e.target, (e) => {
104
+ const value = applyMask(e.target.value);
105
+ field.onChange(value);
106
+ onChange && onChange(attr, value);
107
+ });
108
+ setFocus(true);
109
+ onFocus && onFocus(e);
110
+ }, onBlur: (e) => {
111
+ setFocus(false);
112
+ // Apply mask with blur flag to ensure proper formatting (e.g., 2 decimal places for currency)
113
+ const value = blurMask
114
+ ? blurMask(e.target.value)
115
+ : e.target.value;
116
+ if (value !== e.target.value) {
117
+ field.onChange(value);
118
+ onChange && onChange(attr, value);
119
+ }
120
+ onBlur && onBlur(e);
121
+ }, onMouseOver: () => setMouseOver(true), onMouseOut: () => setMouseOver(false), onKeyDown: (event) => onKeyDown && onKeyDown(event), onChange: (event) => {
122
+ const value = applyMask(event.target.value);
123
+ field.onChange(value);
124
+ onChange && onChange(attr, value);
125
+ }, sx: {
126
+ borderColor: disabled
127
+ ? '#BEBFC1'
128
+ : hasError()
129
+ ? '#C6080A'
130
+ : active
131
+ ? '#1C83F4'
132
+ : '#BEBFC1',
133
+ '.MuiInputLabel-root': {
134
+ color: disabled
135
+ ? '#BEBFC1'
136
+ : hasError()
137
+ ? '#C6080A'
138
+ : active
139
+ ? '#1C83F4'
140
+ : '#000000',
141
+ },
142
+ '& .MuiInputBase-inputMultiline': {
143
+ paddingTop: hasLabel ? '24px' : '8px',
144
+ paddingBottom: '16px',
145
+ },
146
+ ...(hasLabel &&
147
+ !multiline && {
148
+ '& .MuiInputBase-input': {
149
+ paddingTop: '16px',
150
+ },
151
+ }),
152
+ '& .MuiInputAdornment-positionEnd': {
153
+ paddingTop: multiline ? '12px' : '0px',
154
+ },
155
+ ...(effectiveHeight !== undefined && {
156
+ height: effectiveHeight,
157
+ }),
158
+ '& .MuiInputBase-root': {
159
+ paddingTop: multiline ? '12px' : hasLabel ? '4px' : '0px',
160
+ height: effectiveHeight !== undefined ? '100%' : 'auto',
161
+ alignItems: multiline ? 'flex-start' : 'center',
162
+ },
163
+ } }), maxChars && (_jsxs("div", { className: "character-counter", children: [field.value?.length || 0, "/", maxChars] })), title && !hasError() && _jsx("div", { className: "helper", children: title }), hasError() && (_jsx("div", { className: "helper error", children: String(createdForm.formState.errors[attr]?.message) }))] })) }) }));
164
+ }
@@ -0,0 +1,6 @@
1
+ import { Theme } from '@mui/material/styles';
2
+ type TextFieldThemeOptions = {
3
+ hasLabel?: boolean;
4
+ };
5
+ export declare const textFieldTheme: (outerTheme: Theme, { hasLabel }?: TextFieldThemeOptions) => Theme;
6
+ export {};
@@ -0,0 +1,70 @@
1
+ import { createTheme } from '@mui/material/styles';
2
+ export const textFieldTheme = (outerTheme, { hasLabel = true } = {}) => createTheme({
3
+ ...outerTheme,
4
+ components: {
5
+ MuiTextField: {
6
+ styleOverrides: {
7
+ root: {
8
+ backgroundColor: 'white',
9
+ padding: '0px',
10
+ border: '1px solid #EAEAEB',
11
+ borderRadius: '4px',
12
+ '& .MuiInputBase-root': {
13
+ padding: '0px!important',
14
+ backgroundColor: 'white',
15
+ borderBottomLeftRadius: '4px',
16
+ borderBottomRightRadius: '4px',
17
+ },
18
+ '& .MuiFilledInput-root::before': {
19
+ content: 'none',
20
+ },
21
+ '& .MuiFilledInput-root::after': {
22
+ content: 'none',
23
+ },
24
+ '& .MuiInputLabel-root': {
25
+ paddingLeft: '4px',
26
+ color: '#000000',
27
+ textTransform: 'uppercase',
28
+ // helper-medium-1
29
+ fontSize: '12px',
30
+ fontWeight: '400',
31
+ lineHeight: '100%',
32
+ letterSpacing: '0.16px',
33
+ fontFamily: 'Work Sans, sans-serif',
34
+ },
35
+ '& .MuiInputAdornment-root': {
36
+ height: '100%',
37
+ maxHeight: '100%',
38
+ },
39
+ '& .MuiInputAdornment-positionStart': {
40
+ margin: '0px!important',
41
+ padding: '0px!important',
42
+ },
43
+ '& .MuiInputAdornment-positionEnd': {
44
+ margin: hasLabel
45
+ ? '0px 16px auto!important'
46
+ : '0px 16px!important',
47
+ },
48
+ '& .MuiInputBase-input': {
49
+ padding: hasLabel ? '0px 16px' : '10px 16px',
50
+ height: hasLabel ? '48px' : 'auto',
51
+ // label-medium-1
52
+ fontSize: '16px',
53
+ fontWeight: '400',
54
+ lineHeight: '120%',
55
+ letterSpacing: '0px',
56
+ fontFamily: 'Work Sans, sans-serif',
57
+ '&::placeholder': {
58
+ color: '#707276',
59
+ },
60
+ '&:-webkit-autofill': {
61
+ WebkitBoxShadow: '0 0 0px 1000px transparent inset !important',
62
+ WebkitTextFillColor: '#000 !important',
63
+ transition: 'background-color 5000s ease-in-out 0s', // Prevents flashing
64
+ },
65
+ },
66
+ },
67
+ },
68
+ },
69
+ },
70
+ });
@@ -0,0 +1,2 @@
1
+ import TextField from './TextField';
2
+ export default TextField;
@@ -0,0 +1,2 @@
1
+ import TextField from './TextField';
2
+ export default TextField;
@@ -0,0 +1,4 @@
1
+ export declare function removeCurrentInput(): void;
2
+ export declare function setCurrentInput(input: HTMLInputElement | HTMLTextAreaElement | null, onChange: (e: any) => void): void;
3
+ export declare function getCurrentInput(): HTMLInputElement | HTMLTextAreaElement | null;
4
+ export declare function getCurrentOnChange(): ((e: any) => void) | null;
@@ -0,0 +1,18 @@
1
+ let currentInput = null;
2
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
+ let currentOnChange = null;
4
+ export function removeCurrentInput() {
5
+ currentInput = null;
6
+ }
7
+ export function setCurrentInput(input,
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ onChange) {
10
+ currentInput = input;
11
+ currentOnChange = onChange;
12
+ }
13
+ export function getCurrentInput() {
14
+ return currentInput;
15
+ }
16
+ export function getCurrentOnChange() {
17
+ return currentOnChange;
18
+ }
@@ -0,0 +1,44 @@
1
+ .ds-input-text {
2
+ width: 100%;
3
+ position: relative;
4
+
5
+ span {
6
+ line-height: 1 !important;
7
+ }
8
+
9
+ > .helper {
10
+ @include helper-small-1;
11
+ margin-top: 4px;
12
+
13
+ &.error {
14
+ color: var(--text-error);
15
+ }
16
+ }
17
+
18
+ .icon-info {
19
+ color: var(--icon-tertiary);
20
+ }
21
+
22
+ &.disabled {
23
+ color: var(--text-on-disabled);
24
+ cursor: not-allowed;
25
+
26
+ input {
27
+ cursor: not-allowed;
28
+ }
29
+ }
30
+
31
+ .character-counter {
32
+ @include helper-small-1;
33
+ color: var(--text-placeholder);
34
+ position: absolute;
35
+ bottom: 12px;
36
+ left: 16px;
37
+ }
38
+ }
39
+
40
+ .ds-end-adornments {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 8px;
44
+ }
@@ -0,0 +1,26 @@
1
+ import "./styles.scss";
2
+ export declare const TooltipModes: readonly ["simple", "confirmation", "delete"];
3
+ type TooltipModes = (typeof TooltipModes)[number];
4
+ export declare const TooltipPlacements: readonly ["auto-end", "auto-start", "auto", "bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"];
5
+ export type TooltipPlacements = (typeof TooltipPlacements)[number];
6
+ export type Props = {
7
+ children: React.ReactElement;
8
+ triggerOpen?: boolean;
9
+ className?: string;
10
+ mode?: TooltipModes;
11
+ placement?: TooltipPlacements;
12
+ title: string;
13
+ desc?: string;
14
+ cancel?: {
15
+ label: string;
16
+ onClick: () => void;
17
+ icon?: string;
18
+ };
19
+ confirm?: {
20
+ label: string;
21
+ onClick: () => void;
22
+ icon?: string;
23
+ };
24
+ };
25
+ export default function TooltipComponent({ children, mode, placement, title, desc, cancel, confirm, triggerOpen, className, }: Props): import("react").JSX.Element;
26
+ export {};
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Tooltip } from "@mui/material";
3
+ import Button from "../Button";
4
+ import Icon from "../Icon";
5
+ import "./styles.scss";
6
+ export const TooltipModes = ["simple", "confirmation", "delete"];
7
+ export const TooltipPlacements = [
8
+ "auto-end",
9
+ "auto-start",
10
+ "auto",
11
+ "bottom-end",
12
+ "bottom-start",
13
+ "bottom",
14
+ "left-end",
15
+ "left-start",
16
+ "left",
17
+ "right-end",
18
+ "right-start",
19
+ "right",
20
+ "top-end",
21
+ "top-start",
22
+ "top",
23
+ ];
24
+ export default function TooltipComponent({ children, mode = "simple", placement = "bottom", title, desc, cancel, confirm, triggerOpen, className, }) {
25
+ const tooltipSimpleClassName = ["ds-tooltip-simple", className].filter(Boolean).join(" ");
26
+ const tooltipComplexClassName = ["ds-tooltip", className].filter(Boolean).join(" ");
27
+ const renderSimple = () => (_jsx(Tooltip, { title: title, placement: placement, open: triggerOpen !== undefined ? triggerOpen : undefined, arrow: true, classes: {
28
+ tooltip: tooltipSimpleClassName,
29
+ popper: "ds-tooltip-popper",
30
+ }, children: children }));
31
+ const renderInnerComplex = () => (_jsxs("div", { className: "tooltip-box", children: [_jsxs("div", { className: "body", children: [_jsx(Icon, { name: mode === "delete" ? "delete" : "help_center", size: "small", className: mode, filled: mode === "confirmation" }), _jsxs("div", { className: "texts", children: [_jsx("div", { className: "title", children: title }), _jsx("div", { className: "desc", children: desc || "" })] })] }), _jsxs("div", { className: "footer", children: [cancel && (_jsx(Button, { text: cancel.label, size: "x-small", mode: "ghost", onClick: cancel.onClick, color: mode === "delete" ? "danger" : "white", icon: cancel.icon })), confirm && (_jsx(Button, { text: confirm.label, size: "x-small", mode: "filled", onClick: confirm.onClick, color: mode === "delete" ? "danger" : "white", icon: confirm.icon }))] })] }));
32
+ const renderComplex = () => (_jsx(Tooltip, { classes: {
33
+ tooltip: tooltipComplexClassName,
34
+ popper: "ds-tooltip-popper",
35
+ }, title: renderInnerComplex(), placement: placement, arrow: true, open: triggerOpen !== undefined ? triggerOpen : undefined, disableFocusListener: triggerOpen !== undefined, disableHoverListener: triggerOpen !== undefined, disableTouchListener: triggerOpen !== undefined, children: children }));
36
+ return mode === "simple" ? renderSimple() : renderComplex();
37
+ }
@@ -0,0 +1,2 @@
1
+ import Tooltip from './Tooltip';
2
+ export default Tooltip;
@@ -0,0 +1,2 @@
1
+ import Tooltip from './Tooltip';
2
+ export default Tooltip;
@@ -0,0 +1,73 @@
1
+ .ds-tooltip-popper .MuiTooltip-tooltip {
2
+ display: flex;
3
+ align-items: center;
4
+ background-color: var(--layer-tooltip) !important;
5
+ min-height: 40px;
6
+ max-width: 280px;
7
+ padding: var(--spacing-100) var(--spacing-150);
8
+ border-radius: var(--radius-100);
9
+ @include body-medium-1;
10
+ margin-top: 8px !important;
11
+ }
12
+
13
+ // Arrow styles scoped to our tooltip component
14
+ .ds-tooltip-popper .MuiTooltip-arrow {
15
+ color: var(--layer-tooltip) !important;
16
+ }
17
+
18
+ .ds-tooltip {
19
+ display: flex;
20
+ align-items: center;
21
+ max-width: unset !important;
22
+ border-radius: var(--radius-100);
23
+ padding: 0px !important;
24
+ height: auto !important;
25
+ box-shadow: var(--miscellaneous-shadow-2);
26
+
27
+ .tooltip-box {
28
+ display: flex;
29
+ flex-direction: column;
30
+ max-width: 300px;
31
+
32
+ > .body {
33
+ display: flex;
34
+ gap: 8px;
35
+ padding: 16px 16px 8px;
36
+
37
+ > .ds-icon {
38
+ &.delete {
39
+ color: var(--icon-error);
40
+ }
41
+
42
+ &.confirmation {
43
+ color: var(--icon-info);
44
+ }
45
+ }
46
+
47
+ > .texts {
48
+ > .title {
49
+ @include label-medium-2;
50
+ color: var(--text-light-fixed);
51
+ margin-bottom: 4px;
52
+ }
53
+
54
+ > .desc {
55
+ @include helper-large-1;
56
+ color: var(--text-light-fixed);
57
+ }
58
+ }
59
+ }
60
+
61
+ > .footer {
62
+ display: flex;
63
+ padding: 8px 16px 16px;
64
+ gap: 8px;
65
+ margin-left: auto;
66
+ }
67
+ }
68
+ }
69
+
70
+ .ds-tooltip-simple {
71
+ padding: 8px 16px !important;
72
+ height: 100%;
73
+ }
@@ -0,0 +1,6 @@
1
+ import './styles.scss';
2
+ export type Props = JSX.IntrinsicElements['div'] & {
3
+ text: string;
4
+ className?: string;
5
+ };
6
+ export default function VerticalButton({ className, text, onClick }: Props): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import cx from 'classnames';
3
+ import './styles.scss';
4
+ import Icon from '../Icon';
5
+ export default function VerticalButton({ className, text, onClick }) {
6
+ const getClassNames = cx('ds-vertical-button', className);
7
+ return (_jsxs("div", { className: getClassNames, onClick: (e) => onClick && onClick(e), children: [_jsx(Icon, { name: "add_circle", size: "small" }), _jsx("span", { children: text })] }));
8
+ }
@@ -0,0 +1,2 @@
1
+ import VerticalButton from './VerticalButton';
2
+ export default VerticalButton;
@@ -0,0 +1,2 @@
1
+ import VerticalButton from './VerticalButton';
2
+ export default VerticalButton;
@@ -0,0 +1,24 @@
1
+ .ds-vertical-button {
2
+ @include label-small-1;
3
+ display: flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ writing-mode: vertical-rl;
7
+ text-orientation: mixed;
8
+ white-space: nowrap;
9
+ padding: var(--spacing-100) var(--spacing-150);
10
+ cursor: pointer;
11
+
12
+ > span {
13
+ margin-top: 8px;
14
+ }
15
+
16
+ &:hover {
17
+ background-color: var(--layer-field-hover);
18
+ color: var(--text-on-color-accent);
19
+
20
+ > .ds-icon {
21
+ color: var(--icon-on-color-accent);
22
+ }
23
+ }
24
+ }
@@ -0,0 +1 @@
1
+ export declare const injectFontFaces: () => void;
@@ -0,0 +1,111 @@
1
+ // Fallback
2
+ import materialSymbolsOutlined from './fonts/material-symbols-outlined.woff2';
3
+ // Work Sans fonts (single imports reused in multiple weights/ranges)
4
+ import workSansVietnamese from './fonts/work-sans-vietnamese.woff2';
5
+ import workSansLatinExt from './fonts/work-sans-latin-ext.woff2';
6
+ import workSansLatin from './fonts/work-sans-latin.woff2';
7
+ export const injectFontFaces = () => {
8
+ const style = document.createElement('style');
9
+ style.textContent = `
10
+ /* Material Symbols Outlined fallback */
11
+ @font-face {
12
+ font-family: 'Material Symbols Outlined';
13
+ font-style: normal;
14
+ font-weight: 200;
15
+ font-display: swap;
16
+ src: url(${materialSymbolsOutlined}) format('woff2');
17
+ }
18
+
19
+ /* Work Sans 300 - vietnamese */
20
+ @font-face {
21
+ font-family: 'Work Sans';
22
+ font-style: normal;
23
+ font-weight: 300;
24
+ font-display: swap;
25
+ src: url(${workSansVietnamese}) format('woff2');
26
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169,
27
+ U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323,
28
+ U+0329, U+1EA0-1EF9, U+20AB;
29
+ }
30
+ /* Work Sans 300 - latin-ext */
31
+ @font-face {
32
+ font-family: 'Work Sans';
33
+ font-style: normal;
34
+ font-weight: 300;
35
+ font-display: swap;
36
+ src: url(${workSansLatinExt}) format('woff2');
37
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
38
+ U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF,
39
+ U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
40
+ }
41
+ /* Work Sans 300 - latin */
42
+ @font-face {
43
+ font-family: 'Work Sans';
44
+ font-style: normal;
45
+ font-weight: 300;
46
+ font-display: swap;
47
+ src: url(${workSansLatin}) format('woff2');
48
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
49
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
50
+ U+2212, U+2215, U+FEFF, U+FFFD;
51
+ }
52
+
53
+ /* Repeat for each weight: 400, 500, 600, 700, 800 */
54
+
55
+ ${[400, 500, 600, 700, 800]
56
+ .map((weight) => `
57
+ /* Work Sans ${weight} - vietnamese */
58
+ @font-face {
59
+ font-family: 'Work Sans';
60
+ font-style: normal;
61
+ font-weight: ${weight};
62
+ font-display: swap;
63
+ src: url(${workSansVietnamese}) format('woff2');
64
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169,
65
+ U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323,
66
+ U+0329, U+1EA0-1EF9, U+20AB;
67
+ }
68
+ /* Work Sans ${weight} - latin-ext */
69
+ @font-face {
70
+ font-family: 'Work Sans';
71
+ font-style: normal;
72
+ font-weight: ${weight};
73
+ font-display: swap;
74
+ src: url(${workSansLatinExt}) format('woff2');
75
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
76
+ U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF,
77
+ U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
78
+ }
79
+ /* Work Sans ${weight} - latin */
80
+ @font-face {
81
+ font-family: 'Work Sans';
82
+ font-style: normal;
83
+ font-weight: ${weight};
84
+ font-display: swap;
85
+ src: url(${workSansLatin}) format('woff2');
86
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
87
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
88
+ U+2212, U+2215, U+FEFF, U+FFFD;
89
+ }
90
+ `)
91
+ .join('')}
92
+
93
+ /* Material Symbols utility class */
94
+ .material-symbols-outlined {
95
+ font-family: 'Material Symbols Outlined';
96
+ font-weight: normal;
97
+ font-style: normal;
98
+ font-size: 24px;
99
+ line-height: 1;
100
+ letter-spacing: normal;
101
+ text-transform: none;
102
+ display: inline-block;
103
+ white-space: nowrap;
104
+ word-wrap: normal;
105
+ direction: ltr;
106
+ -webkit-font-feature-settings: 'liga';
107
+ -webkit-font-smoothing: antialiased;
108
+ }
109
+ `;
110
+ document.head.appendChild(style);
111
+ };