@js-empire/emperor-ui 1.3.11 → 1.3.13

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 (585) hide show
  1. package/.cursor/rules/code-conventions.mdc +50 -0
  2. package/.husky/pre-commit +4 -0
  3. package/.prettierrc +10 -0
  4. package/.storybook/main.ts +24 -0
  5. package/.storybook/preview.ts +19 -0
  6. package/.storybook/vitest.setup.ts +7 -0
  7. package/.vscode/extensions.json +1 -0
  8. package/dist/emperor-ui.js +158 -4236
  9. package/dist/emperor-ui.umd.cjs +52 -1
  10. package/dist/icons/emperor-ui-logo.ico +0 -0
  11. package/dist/images/avatar-female.jpg +0 -0
  12. package/dist/images/avatar-male.jpg +0 -0
  13. package/dist/images/emperor-ui-logo.png +0 -0
  14. package/dist/index-4OxAyqvp.js +5 -0
  15. package/dist/index-CHrqdTZ9.js +290 -0
  16. package/dist/index-DXWNWGH3.js +57021 -0
  17. package/dist/index.d.ts +1357 -0
  18. package/dist/src-UW24ZMRV-DQtCWsbT.js +5 -0
  19. package/eslint.config.js +34 -0
  20. package/index.html +13 -0
  21. package/package.json +10 -57
  22. package/public/icons/emperor-ui-logo.ico +0 -0
  23. package/public/images/avatar-female.jpg +0 -0
  24. package/public/images/avatar-male.jpg +0 -0
  25. package/public/images/emperor-ui-logo.png +0 -0
  26. package/src/animations/blink.ts +26 -0
  27. package/src/animations/floating.ts +12 -0
  28. package/src/animations/index.ts +2 -0
  29. package/src/components/atoms/brand/brand.stories.tsx +29 -0
  30. package/src/components/atoms/brand/brand.tsx +56 -0
  31. package/src/components/atoms/brand/index.ts +1 -0
  32. package/src/components/atoms/brand/styles/classes.ts +9 -0
  33. package/src/components/atoms/brand/styles/index.ts +2 -0
  34. package/src/components/atoms/brand/styles/styles.ts +0 -0
  35. package/src/components/atoms/color-picker/color-picker.tsx +12 -0
  36. package/src/components/atoms/color-picker/free-color-picker.tsx +58 -0
  37. package/src/components/atoms/color-picker/index.ts +3 -0
  38. package/src/components/atoms/color-picker/preset-color-picker.tsx +66 -0
  39. package/src/components/atoms/color-picker/stories/color-picker.stories.tsx +63 -0
  40. package/src/components/atoms/column/column.stories.tsx +37 -0
  41. package/src/components/atoms/column/column.tsx +21 -0
  42. package/src/components/atoms/column/index.ts +1 -0
  43. package/src/components/atoms/container/column.stories.tsx +37 -0
  44. package/src/components/atoms/container/container.tsx +28 -0
  45. package/src/components/atoms/container/index.ts +1 -0
  46. package/src/components/atoms/copy-button/copy-button.tsx +73 -0
  47. package/src/components/atoms/copy-button/index.ts +1 -0
  48. package/src/components/atoms/copy-button/stories/copy-button.stories.tsx +21 -0
  49. package/src/components/atoms/field/field.tsx +81 -0
  50. package/src/components/atoms/field/index.ts +3 -0
  51. package/src/components/atoms/field/styles/classes.ts +9 -0
  52. package/src/components/atoms/field/styles/index.ts +1 -0
  53. package/src/components/atoms/field/units/autocomplete-field.tsx +49 -0
  54. package/src/components/atoms/field/units/checkbox-field.tsx +35 -0
  55. package/src/components/atoms/field/units/index.ts +7 -0
  56. package/src/components/atoms/field/units/input-field.tsx +35 -0
  57. package/src/components/atoms/field/units/radio-field.tsx +43 -0
  58. package/src/components/atoms/field/units/select-field.tsx +50 -0
  59. package/src/components/atoms/field/units/switch-field.tsx +35 -0
  60. package/src/components/atoms/field/units/textarea-field.tsx +37 -0
  61. package/src/components/atoms/filter/filter.tsx +93 -0
  62. package/src/components/atoms/filter/index.ts +3 -0
  63. package/src/components/atoms/filter/stories/filter.stories.tsx +238 -0
  64. package/src/components/atoms/filter/styles/classes.ts +20 -0
  65. package/src/components/atoms/filter/styles/index.ts +1 -0
  66. package/src/components/atoms/filter/units/autocomplete-filter.tsx +66 -0
  67. package/src/components/atoms/filter/units/checkbox-filter.tsx +42 -0
  68. package/src/components/atoms/filter/units/checkbox-group-filter.tsx +68 -0
  69. package/src/components/atoms/filter/units/date-filter.tsx +46 -0
  70. package/src/components/atoms/filter/units/index.ts +9 -0
  71. package/src/components/atoms/filter/units/numeric-filter.tsx +41 -0
  72. package/src/components/atoms/filter/units/range-filter.tsx +65 -0
  73. package/src/components/atoms/filter/units/search-filter.tsx +53 -0
  74. package/src/components/atoms/filter/units/select-filter.tsx +57 -0
  75. package/src/components/atoms/filter/units/switch-filter.tsx +35 -0
  76. package/src/components/atoms/index.ts +11 -0
  77. package/src/components/atoms/portal/index.ts +1 -0
  78. package/src/components/atoms/portal/portal.stories.tsx +43 -0
  79. package/src/components/atoms/portal/portal.tsx +25 -0
  80. package/src/components/atoms/row/index.ts +1 -0
  81. package/src/components/atoms/row/row.stories.tsx +37 -0
  82. package/src/components/atoms/row/row.tsx +26 -0
  83. package/src/components/atoms/theme-switch/index.ts +1 -0
  84. package/src/components/atoms/theme-switch/styles/classes.ts +16 -0
  85. package/src/components/atoms/theme-switch/styles/index.ts +1 -0
  86. package/src/components/atoms/theme-switch/theme-switch.stories.tsx +26 -0
  87. package/src/components/atoms/theme-switch/theme-switch.tsx +54 -0
  88. package/src/components/atoms/uploader/components/avatar-label.tsx +102 -0
  89. package/src/components/atoms/uploader/components/index.ts +8 -0
  90. package/src/components/atoms/uploader/components/upload-file-error-box.tsx +40 -0
  91. package/src/components/atoms/uploader/components/upload-file-input.tsx +36 -0
  92. package/src/components/atoms/uploader/components/upload-file-label.tsx +92 -0
  93. package/src/components/atoms/uploader/components/upload-file-listing.tsx +64 -0
  94. package/src/components/atoms/uploader/components/uploader-title.tsx +21 -0
  95. package/src/components/atoms/uploader/components/uploader.tsx +89 -0
  96. package/src/components/atoms/uploader/components/view-image-modal.tsx +41 -0
  97. package/src/components/atoms/uploader/index.ts +1 -0
  98. package/src/components/atoms/uploader/stories/uploader.stories.tsx +202 -0
  99. package/src/components/index.ts +4 -0
  100. package/src/components/molecules/index.ts +4 -0
  101. package/src/components/molecules/item-card/components/actions/index.ts +3 -0
  102. package/src/components/molecules/item-card/components/actions/item-actions-buttons.tsx +43 -0
  103. package/src/components/molecules/item-card/components/actions/item-actions-dropdown.tsx +57 -0
  104. package/src/components/molecules/item-card/components/actions/item-actions-overlay.tsx +50 -0
  105. package/src/components/molecules/item-card/components/additions/index.ts +2 -0
  106. package/src/components/molecules/item-card/components/additions/item-banner.tsx +22 -0
  107. package/src/components/molecules/item-card/components/additions/loading-item.tsx +88 -0
  108. package/src/components/molecules/item-card/components/card/index.ts +4 -0
  109. package/src/components/molecules/item-card/components/card/item-card-body.tsx +74 -0
  110. package/src/components/molecules/item-card/components/card/item-card-footer.tsx +79 -0
  111. package/src/components/molecules/item-card/components/card/item-card-header.tsx +69 -0
  112. package/src/components/molecules/item-card/components/card/item-card.tsx +123 -0
  113. package/src/components/molecules/item-card/components/index.ts +3 -0
  114. package/src/components/molecules/item-card/index.ts +2 -0
  115. package/src/components/molecules/item-card/stories/item-card.stories.tsx +218 -0
  116. package/src/components/molecules/item-card/styles/classes.ts +141 -0
  117. package/src/components/molecules/item-card/styles/index.ts +1 -0
  118. package/src/components/molecules/nav-bar/index.ts +3 -0
  119. package/src/components/molecules/nav-bar/nav-bar-item.tsx +64 -0
  120. package/src/components/molecules/nav-bar/nav-bar.tsx +57 -0
  121. package/src/components/molecules/nav-bar/stories/hover-effect/nav-bar-hover-effect.stories.tsx +52 -0
  122. package/src/components/molecules/nav-bar/stories/nav-bar.stories.tsx +50 -0
  123. package/src/components/molecules/nav-bar/styles/classes.ts +68 -0
  124. package/src/components/molecules/nav-bar/styles/index.ts +2 -0
  125. package/src/components/molecules/nav-bar/styles/styles.ts +85 -0
  126. package/src/components/molecules/nav-bar/sub-items-box.tsx +58 -0
  127. package/src/components/molecules/scaffold/index.ts +2 -0
  128. package/src/components/molecules/scaffold/scaffold.stories.tsx +21 -0
  129. package/src/components/molecules/scaffold/scaffold.tsx +23 -0
  130. package/src/components/molecules/scaffold/styles/index.ts +1 -0
  131. package/src/components/molecules/scaffold/styles/scaffold-classes.ts +10 -0
  132. package/src/components/molecules/side-bar/compact-side-bar.tsx +77 -0
  133. package/src/components/molecules/side-bar/index.ts +1 -0
  134. package/src/components/molecules/side-bar/side-bar-drawer.tsx +113 -0
  135. package/src/components/molecules/side-bar/side-bar.stories.tsx +111 -0
  136. package/src/components/molecules/side-bar/side-bar.tsx +31 -0
  137. package/src/components/molecules/side-bar/styles/classes.ts +28 -0
  138. package/src/components/molecules/side-bar/styles/index.ts +2 -0
  139. package/src/components/molecules/side-bar/styles/styles.ts +13 -0
  140. package/src/components/organisms/deletion-confirmor/deletion-confirmor.tsx +110 -0
  141. package/src/components/organisms/deletion-confirmor/index.ts +3 -0
  142. package/src/components/organisms/deletion-confirmor/stories/components.tsx +25 -0
  143. package/src/components/organisms/deletion-confirmor/stories/deletion-confirmor.stories.tsx +78 -0
  144. package/src/components/organisms/deletion-confirmor/styles/classes.ts +28 -0
  145. package/src/components/organisms/deletion-confirmor/styles/index.ts +2 -0
  146. package/src/components/organisms/deletion-confirmor/styles/styles.ts +4 -0
  147. package/src/components/organisms/footer/copy-rights-box.tsx +27 -0
  148. package/src/components/organisms/footer/footer.tsx +75 -0
  149. package/src/components/organisms/footer/index.ts +5 -0
  150. package/src/components/organisms/footer/policies-box.tsx +27 -0
  151. package/src/components/organisms/footer/quick-links-box.tsx +46 -0
  152. package/src/components/organisms/footer/social-links-box.tsx +33 -0
  153. package/src/components/organisms/footer/stories/footer.stories.tsx +61 -0
  154. package/src/components/organisms/footer/styles/classes.ts +71 -0
  155. package/src/components/organisms/footer/styles/index.ts +2 -0
  156. package/src/components/organisms/footer/styles/styles.ts +6 -0
  157. package/src/components/organisms/form-builder/form-builder.stories.tsx +144 -0
  158. package/src/components/organisms/form-builder/form-builder.tsx +75 -0
  159. package/src/components/organisms/form-builder/index.ts +1 -0
  160. package/src/components/organisms/header/header.tsx +87 -0
  161. package/src/components/organisms/header/index.ts +1 -0
  162. package/src/components/organisms/header/segmented-header-content.tsx +29 -0
  163. package/src/components/organisms/header/stories/header.stories.tsx +144 -0
  164. package/src/components/organisms/header/styles/classes.ts +22 -0
  165. package/src/components/organisms/header/styles/index.ts +2 -0
  166. package/src/components/organisms/header/styles/styles.ts +39 -0
  167. package/src/components/organisms/index.ts +6 -0
  168. package/src/components/organisms/item-details/index.ts +1 -0
  169. package/src/components/organisms/item-details/item-details.tsx +6 -0
  170. package/src/components/organisms/listings/empty-listings.tsx +80 -0
  171. package/src/components/organisms/listings/index.ts +3 -0
  172. package/src/components/organisms/listings/listings.tsx +96 -0
  173. package/src/components/organisms/listings/stories/grid-listings.stories.tsx +153 -0
  174. package/src/components/organisms/listings/stories/list-listings.stories.tsx +171 -0
  175. package/src/components/organisms/listings/styles/classes.ts +49 -0
  176. package/src/components/organisms/listings/styles/index.ts +2 -0
  177. package/src/components/organisms/listings/styles/styles.ts +6 -0
  178. package/src/components/templates/index.ts +1 -0
  179. package/src/components/templates/landing-page/index.ts +1 -0
  180. package/src/components/templates/landing-page/landing-page.stories.tsx +21 -0
  181. package/src/components/templates/landing-page/landing-page.tsx +57 -0
  182. package/src/components/templates/landing-page/styles/classes.ts +11 -0
  183. package/src/components/templates/landing-page/styles/index.ts +1 -0
  184. package/src/constants/animations.ts +14 -0
  185. package/src/constants/card.tsx +42 -0
  186. package/src/constants/defaults.ts +59 -0
  187. package/src/constants/fake.ts +5 -0
  188. package/src/constants/footer.tsx +157 -0
  189. package/src/constants/index.ts +6 -0
  190. package/src/constants/uploader.ts +33 -0
  191. package/src/context/emperor-ui-context.ts +6 -0
  192. package/src/context/form-builder-context.tsx +8 -0
  193. package/src/context/index.ts +4 -0
  194. package/src/context/navigation-context.ts +6 -0
  195. package/src/context/uploader-context.ts +6 -0
  196. package/src/enums/index.ts +2 -0
  197. package/src/enums/placeholders.ts +5 -0
  198. package/src/enums/preserved-keys.ts +3 -0
  199. package/src/examples/index.ts +1 -0
  200. package/src/hooks/index.ts +8 -0
  201. package/src/hooks/use-emperor-ui.ts +12 -0
  202. package/src/hooks/use-filters.ts +20 -0
  203. package/src/hooks/use-form-builder-context.ts +16 -0
  204. package/src/hooks/use-navigation.ts +12 -0
  205. package/src/hooks/use-search-params-handler.tsx +186 -0
  206. package/src/hooks/use-uploader-context.ts +14 -0
  207. package/src/hooks/use-uploader.tsx +164 -0
  208. package/src/hooks/use-window-size.tsx +53 -0
  209. package/src/i18n/configs/i18n.ts +7 -0
  210. package/src/i18n/configs/index.ts +1 -0
  211. package/src/i18n/constants/index.ts +1 -0
  212. package/src/i18n/constants/locales.ts +4 -0
  213. package/src/i18n/index.ts +5 -0
  214. package/src/i18n/locales/ar.ts +15 -0
  215. package/src/i18n/locales/atoms/ar.ts +18 -0
  216. package/src/i18n/locales/atoms/en.ts +18 -0
  217. package/src/i18n/locales/atoms/index.ts +2 -0
  218. package/src/i18n/locales/common/ar.ts +1 -0
  219. package/src/i18n/locales/common/en.ts +1 -0
  220. package/src/i18n/locales/common/index.ts +2 -0
  221. package/src/i18n/locales/en.ts +15 -0
  222. package/src/i18n/locales/index.ts +4 -0
  223. package/src/i18n/locales/molecules/ar.ts +1 -0
  224. package/src/i18n/locales/molecules/en.ts +1 -0
  225. package/src/i18n/locales/molecules/index.ts +2 -0
  226. package/src/i18n/locales/organisms/ar.ts +11 -0
  227. package/src/i18n/locales/organisms/en.ts +11 -0
  228. package/src/i18n/locales/organisms/index.ts +2 -0
  229. package/src/i18n/locales/templates/ar.ts +1 -0
  230. package/src/i18n/locales/templates/en.ts +1 -0
  231. package/src/i18n/locales/templates/index.ts +2 -0
  232. package/src/i18n/locales/toasts/ar.ts +1 -0
  233. package/src/i18n/locales/toasts/en.ts +1 -0
  234. package/src/i18n/locales/toasts/index.ts +2 -0
  235. package/src/i18n/types/index.ts +2 -0
  236. package/{dist/src/i18n/types/locale.d.ts → src/i18n/types/locale.ts} +3 -1
  237. package/{dist/src/i18n/types/toasts.d.ts → src/i18n/types/toasts.ts} +2 -1
  238. package/src/i18n/utils/get-locales.ts +4 -0
  239. package/src/i18n/utils/index.ts +2 -0
  240. package/src/i18n/utils/localize.ts +15 -0
  241. package/src/index.ts +14 -0
  242. package/src/mocks/constants.ts +103 -0
  243. package/src/mocks/deletion-confirmor.ts +16 -0
  244. package/src/mocks/header.tsx +118 -0
  245. package/src/mocks/index.ts +6 -0
  246. package/src/mocks/listings.tsx +154 -0
  247. package/src/mocks/locales/index.ts +1 -0
  248. package/src/mocks/locales/uploader.ts +33 -0
  249. package/src/mocks/types.ts +64 -0
  250. package/src/providers/config-provider.tsx +72 -0
  251. package/src/providers/emperor-ui-provider.tsx +35 -0
  252. package/src/providers/form-builder-provider-context.tsx +18 -0
  253. package/src/providers/index.ts +6 -0
  254. package/src/providers/navigation-provider.tsx +42 -0
  255. package/src/providers/theme-provider.tsx +16 -0
  256. package/src/providers/uploader-provider.tsx +53 -0
  257. package/src/styles/globals.css +38 -0
  258. package/src/styles/hero.ts +3 -0
  259. package/src/styles/index.css +18 -0
  260. package/src/types/components/atoms/brand.ts +13 -0
  261. package/src/types/components/atoms/color-picker/color-picker.ts +21 -0
  262. package/src/types/components/atoms/color-picker/index.ts +1 -0
  263. package/src/types/components/atoms/column.ts +3 -0
  264. package/{dist/src/types/components/atoms/container.d.ts → src/types/components/atoms/container.ts} +2 -1
  265. package/src/types/components/atoms/field/field.ts +61 -0
  266. package/src/types/components/atoms/field/index.ts +1 -0
  267. package/src/types/components/atoms/filter/filter.ts +52 -0
  268. package/src/types/components/atoms/filter/index.ts +2 -0
  269. package/{dist/src/types/components/atoms/filter/select-filter.d.ts → src/types/components/atoms/filter/select-filter.ts} +4 -3
  270. package/src/types/components/atoms/index.ts +9 -0
  271. package/src/types/components/atoms/portal.ts +6 -0
  272. package/src/types/components/atoms/row.ts +3 -0
  273. package/src/types/components/atoms/uploader.ts +103 -0
  274. package/src/types/components/index.ts +4 -0
  275. package/src/types/components/molecules/footer/footer.ts +68 -0
  276. package/src/types/components/molecules/footer/index.ts +1 -0
  277. package/src/types/components/molecules/header/header.ts +51 -0
  278. package/src/types/components/molecules/header/index.ts +1 -0
  279. package/src/types/components/molecules/index.ts +9 -0
  280. package/src/types/components/molecules/item-card/index.ts +1 -0
  281. package/src/types/components/molecules/item-card/item-card.ts +69 -0
  282. package/src/types/components/molecules/item-details/index.ts +1 -0
  283. package/src/types/components/molecules/item-details/item-details.ts +9 -0
  284. package/src/types/components/molecules/listings/index.ts +1 -0
  285. package/src/types/components/molecules/listings/listings.ts +29 -0
  286. package/src/types/components/molecules/nav-bar/index.ts +1 -0
  287. package/src/types/components/molecules/nav-bar/nav-bar.ts +66 -0
  288. package/src/types/components/molecules/scaffold/index.ts +1 -0
  289. package/src/types/components/molecules/scaffold/scaffold.ts +9 -0
  290. package/src/types/components/molecules/side-bar/index.ts +1 -0
  291. package/src/types/components/molecules/side-bar/side-bar.ts +40 -0
  292. package/src/types/components/molecules/theme-switch/index.ts +1 -0
  293. package/src/types/components/molecules/theme-switch/theme-switch.ts +9 -0
  294. package/src/types/components/organisms/deletion-confirmor/deletion-confirmor.ts +22 -0
  295. package/src/types/components/organisms/deletion-confirmor/index.ts +1 -0
  296. package/src/types/components/organisms/filters/filters.ts +11 -0
  297. package/src/types/components/organisms/filters/index.ts +1 -0
  298. package/src/types/components/organisms/form-builder/context.ts +6 -0
  299. package/src/types/components/organisms/form-builder/form-builder.ts +39 -0
  300. package/src/types/components/organisms/form-builder/index.ts +2 -0
  301. package/src/types/components/organisms/index.ts +3 -0
  302. package/src/types/components/templates/index.ts +1 -0
  303. package/src/types/components/templates/landing-page.ts +10 -0
  304. package/src/types/context/config.ts +24 -0
  305. package/src/types/context/index.ts +4 -0
  306. package/src/types/context/localization.ts +24 -0
  307. package/src/types/context/navigation.ts +17 -0
  308. package/src/types/context/theme.ts +33 -0
  309. package/src/types/index.ts +3 -0
  310. package/{dist/src/types/shared/components.d.ts → src/types/shared/components.ts} +9 -6
  311. package/src/types/shared/index.ts +1 -0
  312. package/src/utils/cn.ts +6 -0
  313. package/src/utils/compress-images.ts +36 -0
  314. package/src/utils/index.ts +5 -0
  315. package/src/utils/locales.ts +54 -0
  316. package/src/utils/storybook.tsx +15 -0
  317. package/src/utils/uploader.ts +170 -0
  318. package/tsconfig.app.json +37 -0
  319. package/tsconfig.json +7 -0
  320. package/tsconfig.node.json +25 -0
  321. package/vite.config.ts +44 -0
  322. package/vitest.shims.d.ts +1 -0
  323. package/dist/src/animations/blink.d.ts +0 -7
  324. package/dist/src/animations/floating.d.ts +0 -2
  325. package/dist/src/animations/index.d.ts +0 -2
  326. package/dist/src/components/atoms/brand/brand.d.ts +0 -14
  327. package/dist/src/components/atoms/brand/index.d.ts +0 -1
  328. package/dist/src/components/atoms/brand/styles/classes.d.ts +0 -3
  329. package/dist/src/components/atoms/brand/styles/index.d.ts +0 -2
  330. package/dist/src/components/atoms/brand/styles/styles.d.ts +0 -1
  331. package/dist/src/components/atoms/color-picker/color-picker.d.ts +0 -2
  332. package/dist/src/components/atoms/color-picker/free-color-picker.d.ts +0 -2
  333. package/dist/src/components/atoms/color-picker/index.d.ts +0 -3
  334. package/dist/src/components/atoms/color-picker/preset-color-picker.d.ts +0 -2
  335. package/dist/src/components/atoms/column/column.d.ts +0 -2
  336. package/dist/src/components/atoms/column/index.d.ts +0 -1
  337. package/dist/src/components/atoms/container/container.d.ts +0 -2
  338. package/dist/src/components/atoms/container/index.d.ts +0 -1
  339. package/dist/src/components/atoms/copy-button/copy-button.d.ts +0 -3
  340. package/dist/src/components/atoms/copy-button/index.d.ts +0 -1
  341. package/dist/src/components/atoms/field/field.d.ts +0 -3
  342. package/dist/src/components/atoms/field/index.d.ts +0 -3
  343. package/dist/src/components/atoms/field/styles/classes.d.ts +0 -3
  344. package/dist/src/components/atoms/field/styles/index.d.ts +0 -1
  345. package/dist/src/components/atoms/field/units/autocomplete-field.d.ts +0 -3
  346. package/dist/src/components/atoms/field/units/checkbox-field.d.ts +0 -3
  347. package/dist/src/components/atoms/field/units/index.d.ts +0 -7
  348. package/dist/src/components/atoms/field/units/input-field.d.ts +0 -3
  349. package/dist/src/components/atoms/field/units/radio-field.d.ts +0 -3
  350. package/dist/src/components/atoms/field/units/select-field.d.ts +0 -3
  351. package/dist/src/components/atoms/field/units/switch-field.d.ts +0 -3
  352. package/dist/src/components/atoms/field/units/textarea-field.d.ts +0 -3
  353. package/dist/src/components/atoms/filter/filter.d.ts +0 -2
  354. package/dist/src/components/atoms/filter/index.d.ts +0 -3
  355. package/dist/src/components/atoms/filter/styles/classes.d.ts +0 -3
  356. package/dist/src/components/atoms/filter/styles/index.d.ts +0 -1
  357. package/dist/src/components/atoms/filter/units/autocomplete-filter.d.ts +0 -2
  358. package/dist/src/components/atoms/filter/units/checkbox-filter.d.ts +0 -2
  359. package/dist/src/components/atoms/filter/units/checkbox-group-filter.d.ts +0 -2
  360. package/dist/src/components/atoms/filter/units/date-filter.d.ts +0 -2
  361. package/dist/src/components/atoms/filter/units/index.d.ts +0 -9
  362. package/dist/src/components/atoms/filter/units/numeric-filter.d.ts +0 -2
  363. package/dist/src/components/atoms/filter/units/range-filter.d.ts +0 -2
  364. package/dist/src/components/atoms/filter/units/search-filter.d.ts +0 -2
  365. package/dist/src/components/atoms/filter/units/select-filter.d.ts +0 -2
  366. package/dist/src/components/atoms/filter/units/switch-filter.d.ts +0 -2
  367. package/dist/src/components/atoms/index.d.ts +0 -11
  368. package/dist/src/components/atoms/portal/index.d.ts +0 -1
  369. package/dist/src/components/atoms/portal/portal.d.ts +0 -2
  370. package/dist/src/components/atoms/row/index.d.ts +0 -1
  371. package/dist/src/components/atoms/row/row.d.ts +0 -2
  372. package/dist/src/components/atoms/theme-switch/index.d.ts +0 -1
  373. package/dist/src/components/atoms/theme-switch/styles/classes.d.ts +0 -3
  374. package/dist/src/components/atoms/theme-switch/styles/index.d.ts +0 -1
  375. package/dist/src/components/atoms/theme-switch/theme-switch.d.ts +0 -2
  376. package/dist/src/components/atoms/uploader/components/avatar-label.d.ts +0 -1
  377. package/dist/src/components/atoms/uploader/components/index.d.ts +0 -8
  378. package/dist/src/components/atoms/uploader/components/upload-file-error-box.d.ts +0 -1
  379. package/dist/src/components/atoms/uploader/components/upload-file-input.d.ts +0 -1
  380. package/dist/src/components/atoms/uploader/components/upload-file-label.d.ts +0 -1
  381. package/dist/src/components/atoms/uploader/components/upload-file-listing.d.ts +0 -1
  382. package/dist/src/components/atoms/uploader/components/uploader-title.d.ts +0 -2
  383. package/dist/src/components/atoms/uploader/components/uploader.d.ts +0 -19
  384. package/dist/src/components/atoms/uploader/components/view-image-modal.d.ts +0 -1
  385. package/dist/src/components/atoms/uploader/index.d.ts +0 -1
  386. package/dist/src/components/index.d.ts +0 -4
  387. package/dist/src/components/molecules/index.d.ts +0 -4
  388. package/dist/src/components/molecules/item-card/components/actions/index.d.ts +0 -3
  389. package/dist/src/components/molecules/item-card/components/actions/item-actions-buttons.d.ts +0 -6
  390. package/dist/src/components/molecules/item-card/components/actions/item-actions-dropdown.d.ts +0 -2
  391. package/dist/src/components/molecules/item-card/components/actions/item-actions-overlay.d.ts +0 -4
  392. package/dist/src/components/molecules/item-card/components/additions/index.d.ts +0 -2
  393. package/dist/src/components/molecules/item-card/components/additions/item-banner.d.ts +0 -2
  394. package/dist/src/components/molecules/item-card/components/additions/loading-item.d.ts +0 -2
  395. package/dist/src/components/molecules/item-card/components/card/index.d.ts +0 -4
  396. package/dist/src/components/molecules/item-card/components/card/item-card-body.d.ts +0 -2
  397. package/dist/src/components/molecules/item-card/components/card/item-card-footer.d.ts +0 -2
  398. package/dist/src/components/molecules/item-card/components/card/item-card-header.d.ts +0 -2
  399. package/dist/src/components/molecules/item-card/components/card/item-card.d.ts +0 -2
  400. package/dist/src/components/molecules/item-card/components/index.d.ts +0 -3
  401. package/dist/src/components/molecules/item-card/index.d.ts +0 -2
  402. package/dist/src/components/molecules/item-card/styles/classes.d.ts +0 -33
  403. package/dist/src/components/molecules/item-card/styles/index.d.ts +0 -1
  404. package/dist/src/components/molecules/nav-bar/index.d.ts +0 -3
  405. package/dist/src/components/molecules/nav-bar/nav-bar-item.d.ts +0 -6
  406. package/dist/src/components/molecules/nav-bar/nav-bar.d.ts +0 -13
  407. package/dist/src/components/molecules/nav-bar/styles/classes.d.ts +0 -11
  408. package/dist/src/components/molecules/nav-bar/styles/index.d.ts +0 -2
  409. package/dist/src/components/molecules/nav-bar/styles/styles.d.ts +0 -5
  410. package/dist/src/components/molecules/nav-bar/sub-items-box.d.ts +0 -2
  411. package/dist/src/components/molecules/scaffold/index.d.ts +0 -2
  412. package/dist/src/components/molecules/scaffold/scaffold.d.ts +0 -3
  413. package/dist/src/components/molecules/scaffold/styles/index.d.ts +0 -1
  414. package/dist/src/components/molecules/scaffold/styles/scaffold-classes.d.ts +0 -1
  415. package/dist/src/components/molecules/side-bar/compact-side-bar.d.ts +0 -2
  416. package/dist/src/components/molecules/side-bar/index.d.ts +0 -1
  417. package/dist/src/components/molecules/side-bar/side-bar-drawer.d.ts +0 -2
  418. package/dist/src/components/molecules/side-bar/side-bar.d.ts +0 -15
  419. package/dist/src/components/molecules/side-bar/styles/classes.d.ts +0 -6
  420. package/dist/src/components/molecules/side-bar/styles/index.d.ts +0 -2
  421. package/dist/src/components/molecules/side-bar/styles/styles.d.ts +0 -3
  422. package/dist/src/components/organisms/deletion-confirmor/deletion-confirmor.d.ts +0 -2
  423. package/dist/src/components/organisms/deletion-confirmor/index.d.ts +0 -3
  424. package/dist/src/components/organisms/deletion-confirmor/stories/components.d.ts +0 -2
  425. package/dist/src/components/organisms/deletion-confirmor/styles/classes.d.ts +0 -4
  426. package/dist/src/components/organisms/deletion-confirmor/styles/index.d.ts +0 -2
  427. package/dist/src/components/organisms/deletion-confirmor/styles/styles.d.ts +0 -2
  428. package/dist/src/components/organisms/footer/copy-rights-box.d.ts +0 -2
  429. package/dist/src/components/organisms/footer/footer.d.ts +0 -11
  430. package/dist/src/components/organisms/footer/index.d.ts +0 -5
  431. package/dist/src/components/organisms/footer/policies-box.d.ts +0 -2
  432. package/dist/src/components/organisms/footer/quick-links-box.d.ts +0 -2
  433. package/dist/src/components/organisms/footer/social-links-box.d.ts +0 -2
  434. package/dist/src/components/organisms/footer/styles/classes.d.ts +0 -9
  435. package/dist/src/components/organisms/footer/styles/index.d.ts +0 -2
  436. package/dist/src/components/organisms/footer/styles/styles.d.ts +0 -2
  437. package/dist/src/components/organisms/form-builder/form-builder.d.ts +0 -3
  438. package/dist/src/components/organisms/form-builder/index.d.ts +0 -1
  439. package/dist/src/components/organisms/header/header.d.ts +0 -8
  440. package/dist/src/components/organisms/header/index.d.ts +0 -1
  441. package/dist/src/components/organisms/header/segmented-header-content.d.ts +0 -2
  442. package/dist/src/components/organisms/header/styles/classes.d.ts +0 -3
  443. package/dist/src/components/organisms/header/styles/index.d.ts +0 -2
  444. package/dist/src/components/organisms/header/styles/styles.d.ts +0 -6
  445. package/dist/src/components/organisms/index.d.ts +0 -6
  446. package/dist/src/components/organisms/item-details/index.d.ts +0 -1
  447. package/dist/src/components/organisms/item-details/item-details.d.ts +0 -2
  448. package/dist/src/components/organisms/listings/empty-listings.d.ts +0 -9
  449. package/dist/src/components/organisms/listings/index.d.ts +0 -3
  450. package/dist/src/components/organisms/listings/listings.d.ts +0 -2
  451. package/dist/src/components/organisms/listings/styles/classes.d.ts +0 -10
  452. package/dist/src/components/organisms/listings/styles/index.d.ts +0 -2
  453. package/dist/src/components/organisms/listings/styles/styles.d.ts +0 -2
  454. package/dist/src/components/templates/index.d.ts +0 -1
  455. package/dist/src/components/templates/landing-page/index.d.ts +0 -1
  456. package/dist/src/components/templates/landing-page/landing-page.d.ts +0 -10
  457. package/dist/src/components/templates/landing-page/styles/classes.d.ts +0 -3
  458. package/dist/src/components/templates/landing-page/styles/index.d.ts +0 -1
  459. package/dist/src/constants/animations.d.ts +0 -5
  460. package/dist/src/constants/card.d.ts +0 -3
  461. package/dist/src/constants/defaults.d.ts +0 -2
  462. package/dist/src/constants/fake.d.ts +0 -2
  463. package/dist/src/constants/footer.d.ts +0 -6
  464. package/dist/src/constants/index.d.ts +0 -6
  465. package/dist/src/constants/uploader.d.ts +0 -8
  466. package/dist/src/context/emperor-ui-context.d.ts +0 -2
  467. package/dist/src/context/form-builder-context.d.ts +0 -3
  468. package/dist/src/context/index.d.ts +0 -4
  469. package/dist/src/context/navigation-context.d.ts +0 -2
  470. package/dist/src/context/uploader-context.d.ts +0 -2
  471. package/dist/src/enums/index.d.ts +0 -2
  472. package/dist/src/enums/placeholders.d.ts +0 -5
  473. package/dist/src/enums/preserved-keys.d.ts +0 -3
  474. package/dist/src/examples/index.d.ts +0 -1
  475. package/dist/src/hooks/index.d.ts +0 -8
  476. package/dist/src/hooks/use-emperor-ui.d.ts +0 -1
  477. package/dist/src/hooks/use-filters.d.ts +0 -4
  478. package/dist/src/hooks/use-form-builder-context.d.ts +0 -3
  479. package/dist/src/hooks/use-navigation.d.ts +0 -1
  480. package/dist/src/hooks/use-search-params-handler.d.ts +0 -17
  481. package/dist/src/hooks/use-uploader-context.d.ts +0 -1
  482. package/dist/src/hooks/use-uploader.d.ts +0 -2
  483. package/dist/src/hooks/use-window-size.d.ts +0 -7
  484. package/dist/src/i18n/configs/i18n.d.ts +0 -6
  485. package/dist/src/i18n/configs/index.d.ts +0 -1
  486. package/dist/src/i18n/constants/index.d.ts +0 -1
  487. package/dist/src/i18n/constants/locales.d.ts +0 -4
  488. package/dist/src/i18n/index.d.ts +0 -5
  489. package/dist/src/i18n/locales/ar.d.ts +0 -32
  490. package/dist/src/i18n/locales/atoms/ar.d.ts +0 -16
  491. package/dist/src/i18n/locales/atoms/en.d.ts +0 -16
  492. package/dist/src/i18n/locales/atoms/index.d.ts +0 -2
  493. package/dist/src/i18n/locales/common/ar.d.ts +0 -1
  494. package/dist/src/i18n/locales/common/en.d.ts +0 -1
  495. package/dist/src/i18n/locales/common/index.d.ts +0 -2
  496. package/dist/src/i18n/locales/en.d.ts +0 -32
  497. package/dist/src/i18n/locales/index.d.ts +0 -4
  498. package/dist/src/i18n/locales/molecules/ar.d.ts +0 -1
  499. package/dist/src/i18n/locales/molecules/en.d.ts +0 -1
  500. package/dist/src/i18n/locales/molecules/index.d.ts +0 -2
  501. package/dist/src/i18n/locales/organisms/ar.d.ts +0 -10
  502. package/dist/src/i18n/locales/organisms/en.d.ts +0 -10
  503. package/dist/src/i18n/locales/organisms/index.d.ts +0 -2
  504. package/dist/src/i18n/locales/templates/ar.d.ts +0 -1
  505. package/dist/src/i18n/locales/templates/en.d.ts +0 -1
  506. package/dist/src/i18n/locales/templates/index.d.ts +0 -2
  507. package/dist/src/i18n/locales/toasts/ar.d.ts +0 -1
  508. package/dist/src/i18n/locales/toasts/en.d.ts +0 -1
  509. package/dist/src/i18n/locales/toasts/index.d.ts +0 -2
  510. package/dist/src/i18n/types/index.d.ts +0 -2
  511. package/dist/src/i18n/utils/get-locales.d.ts +0 -2
  512. package/dist/src/i18n/utils/index.d.ts +0 -2
  513. package/dist/src/i18n/utils/localize.d.ts +0 -6
  514. package/dist/src/index.d.ts +0 -10
  515. package/dist/src/mocks/constants.d.ts +0 -10
  516. package/dist/src/mocks/deletion-confirmor.d.ts +0 -7
  517. package/dist/src/mocks/header.d.ts +0 -5
  518. package/dist/src/mocks/index.d.ts +0 -6
  519. package/dist/src/mocks/listings.d.ts +0 -14
  520. package/dist/src/mocks/locales/index.d.ts +0 -1
  521. package/dist/src/mocks/locales/uploader.d.ts +0 -2
  522. package/dist/src/mocks/types.d.ts +0 -28
  523. package/dist/src/providers/config-provider.d.ts +0 -2
  524. package/dist/src/providers/emperor-ui-provider.d.ts +0 -4
  525. package/dist/src/providers/form-builder-provider-context.d.ts +0 -7
  526. package/dist/src/providers/index.d.ts +0 -6
  527. package/dist/src/providers/navigation-provider.d.ts +0 -2
  528. package/dist/src/providers/theme-provider.d.ts +0 -5
  529. package/dist/src/providers/uploader-provider.d.ts +0 -2
  530. package/dist/src/styles/hero.d.ts +0 -2
  531. package/dist/src/types/components/atoms/brand.d.ts +0 -12
  532. package/dist/src/types/components/atoms/color-picker/color-picker.d.ts +0 -10
  533. package/dist/src/types/components/atoms/color-picker/index.d.ts +0 -1
  534. package/dist/src/types/components/atoms/column.d.ts +0 -2
  535. package/dist/src/types/components/atoms/field/field.d.ts +0 -36
  536. package/dist/src/types/components/atoms/field/index.d.ts +0 -1
  537. package/dist/src/types/components/atoms/filter/filter.d.ts +0 -35
  538. package/dist/src/types/components/atoms/filter/index.d.ts +0 -2
  539. package/dist/src/types/components/atoms/index.d.ts +0 -9
  540. package/dist/src/types/components/atoms/portal.d.ts +0 -5
  541. package/dist/src/types/components/atoms/row.d.ts +0 -2
  542. package/dist/src/types/components/atoms/uploader.d.ts +0 -84
  543. package/dist/src/types/components/index.d.ts +0 -4
  544. package/dist/src/types/components/molecules/footer/footer.d.ts +0 -60
  545. package/dist/src/types/components/molecules/footer/index.d.ts +0 -1
  546. package/dist/src/types/components/molecules/header/header.d.ts +0 -38
  547. package/dist/src/types/components/molecules/header/index.d.ts +0 -1
  548. package/dist/src/types/components/molecules/index.d.ts +0 -9
  549. package/dist/src/types/components/molecules/item-card/index.d.ts +0 -1
  550. package/dist/src/types/components/molecules/item-card/item-card.d.ts +0 -57
  551. package/dist/src/types/components/molecules/item-details/index.d.ts +0 -1
  552. package/dist/src/types/components/molecules/item-details/item-details.d.ts +0 -7
  553. package/dist/src/types/components/molecules/listings/index.d.ts +0 -1
  554. package/dist/src/types/components/molecules/listings/listings.d.ts +0 -22
  555. package/dist/src/types/components/molecules/nav-bar/index.d.ts +0 -1
  556. package/dist/src/types/components/molecules/nav-bar/nav-bar.d.ts +0 -45
  557. package/dist/src/types/components/molecules/scaffold/index.d.ts +0 -1
  558. package/dist/src/types/components/molecules/scaffold/scaffold.d.ts +0 -7
  559. package/dist/src/types/components/molecules/side-bar/index.d.ts +0 -1
  560. package/dist/src/types/components/molecules/side-bar/side-bar.d.ts +0 -36
  561. package/dist/src/types/components/molecules/theme-switch/index.d.ts +0 -1
  562. package/dist/src/types/components/molecules/theme-switch/theme-switch.d.ts +0 -7
  563. package/dist/src/types/components/organisms/deletion-confirmor/deletion-confirmor.d.ts +0 -20
  564. package/dist/src/types/components/organisms/deletion-confirmor/index.d.ts +0 -1
  565. package/dist/src/types/components/organisms/filters/filters.d.ts +0 -9
  566. package/dist/src/types/components/organisms/filters/index.d.ts +0 -1
  567. package/dist/src/types/components/organisms/form-builder/context.d.ts +0 -5
  568. package/dist/src/types/components/organisms/form-builder/form-builder.d.ts +0 -26
  569. package/dist/src/types/components/organisms/form-builder/index.d.ts +0 -2
  570. package/dist/src/types/components/organisms/index.d.ts +0 -3
  571. package/dist/src/types/components/templates/index.d.ts +0 -1
  572. package/dist/src/types/components/templates/landing-page.d.ts +0 -8
  573. package/dist/src/types/context/config.d.ts +0 -19
  574. package/dist/src/types/context/index.d.ts +0 -4
  575. package/dist/src/types/context/localization.d.ts +0 -17
  576. package/dist/src/types/context/navigation.d.ts +0 -15
  577. package/dist/src/types/context/theme.d.ts +0 -32
  578. package/dist/src/types/index.d.ts +0 -3
  579. package/dist/src/types/shared/index.d.ts +0 -1
  580. package/dist/src/utils/cn.d.ts +0 -2
  581. package/dist/src/utils/compress-images.d.ts +0 -2
  582. package/dist/src/utils/index.d.ts +0 -5
  583. package/dist/src/utils/locales.d.ts +0 -10
  584. package/dist/src/utils/storybook.d.ts +0 -4
  585. package/dist/src/utils/uploader.d.ts +0 -40
@@ -0,0 +1,9 @@
1
+ export type * from "./header";
2
+ export type * from "./listings";
3
+ export type * from "./nav-bar";
4
+ export type * from "./side-bar";
5
+ export type * from "./scaffold";
6
+ export type * from "./footer";
7
+ export type * from "./item-card";
8
+ export type * from "./item-details";
9
+ export type * from "./theme-switch";
@@ -0,0 +1 @@
1
+ export type * from "./item-card";
@@ -0,0 +1,69 @@
1
+ import type { SharedComponentProps } from "@/types";
2
+ import { ReactNode } from "react";
3
+ import { Variants } from "framer-motion";
4
+ import { ChipProps } from "@heroui/chip";
5
+ import { DropdownItemProps } from "@heroui/dropdown";
6
+ import type { ButtonProps } from "@heroui/button";
7
+
8
+ export type ItemCardClassnames = {
9
+ base?: string;
10
+ image?: string;
11
+ header?: string;
12
+ footer?: string;
13
+ imageWrapper?: string;
14
+ mainWrapper?: string;
15
+ banner?: string;
16
+ dropdown?: string;
17
+ body?: string;
18
+ title?: string;
19
+ price?: string;
20
+ description?: string;
21
+ chips?: string;
22
+ chip?: string;
23
+ actions?: string;
24
+ action?: string;
25
+ };
26
+
27
+ export type ItemCardAction = DropdownItemProps &
28
+ ButtonProps & {
29
+ key: string;
30
+ label: string;
31
+ };
32
+
33
+ export type ItemCardHoverEffect = "none" | "zoom" | "rotate";
34
+
35
+ export type ItemCardOrientation = "horizontal" | "vertical";
36
+
37
+ export type ItemCardActionsViewVariant =
38
+ | "dropdown"
39
+ | "buttons"
40
+ | "hover-overlay";
41
+
42
+ export type ItemChipProps = ChipProps & {
43
+ label: string;
44
+ };
45
+
46
+ export type ItemProps = {
47
+ key: string;
48
+ title?: ReactNode;
49
+ description?: ReactNode;
50
+ image?: {
51
+ src: string;
52
+ alt: string;
53
+ };
54
+ chips?: ItemChipProps[];
55
+ banner?: ReactNode;
56
+ price?: ReactNode;
57
+ };
58
+
59
+ export type ItemCardProps = SharedComponentProps & {
60
+ variants?: Variants;
61
+ isLoading?: boolean;
62
+ hoverEffect?: ItemCardHoverEffect;
63
+ classNames?: ItemCardClassnames;
64
+ item: ItemProps;
65
+ actions?: ItemCardAction[];
66
+ onActionClick?: (key: string) => void;
67
+ orientation?: ItemCardOrientation;
68
+ actionsViewVariant?: ItemCardActionsViewVariant;
69
+ };
@@ -0,0 +1 @@
1
+ export type * from "./item-details";
@@ -0,0 +1,9 @@
1
+ import type { SharedComponentProps } from "@/types";
2
+
3
+ export type ItemDetailsClassnames = {
4
+ base?: string;
5
+ };
6
+
7
+ export type ItemDetailsProps = SharedComponentProps & {
8
+ classNames?: ItemDetailsClassnames;
9
+ };
@@ -0,0 +1 @@
1
+ export type * from "./listings";
@@ -0,0 +1,29 @@
1
+ import type {
2
+ ItemCardAction,
3
+ ItemCardProps,
4
+ SharedComponentProps,
5
+ } from "@/types";
6
+
7
+ export type ListingsClassnames = {
8
+ base?: string;
9
+ item?: string;
10
+ pagination?: string;
11
+ };
12
+
13
+ export type ListingsLayout = "grid" | "list" | "carousel";
14
+
15
+ export type ListingsProps = SharedComponentProps & {
16
+ classNames?: ListingsClassnames;
17
+ layout?: ListingsLayout;
18
+ items: ItemCardProps[];
19
+ isLoading?: boolean;
20
+ actions?: ItemCardAction[];
21
+ onActionClick?: (key: string) => void;
22
+ pagination?: {
23
+ page: number;
24
+ setPage: (page: number) => void;
25
+ pageSize: number;
26
+ totalItemsCount: number;
27
+ pagesCount: number;
28
+ };
29
+ };
@@ -0,0 +1 @@
1
+ export type * from "./nav-bar";
@@ -0,0 +1,66 @@
1
+ import type {
2
+ ComponentRadius,
3
+ ComponentSize,
4
+ SharedComponentProps,
5
+ } from "@/types";
6
+ import type { ElementType } from "react";
7
+
8
+ export type NavBarClassnames = {
9
+ base?: string;
10
+ };
11
+
12
+ export type NavigationItem = {
13
+ id: string;
14
+ label?: string;
15
+ href?: string;
16
+ subItems?: NavigationItem[];
17
+ onClick?: () => void;
18
+ Icon?: ElementType;
19
+ };
20
+
21
+ export type NavBarHoverEffect =
22
+ | "default"
23
+ | "underline"
24
+ | "solid"
25
+ | "ghost"
26
+ | "bordered"
27
+ | "none";
28
+
29
+ export type NavBarVariant = "default" | "solid" | "bordered";
30
+
31
+ export type NavBarStylesProps = {
32
+ primaryColor?: string;
33
+ foregroundColor?: string;
34
+ variant?: NavBarVariant;
35
+ };
36
+
37
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
38
+ export type NavBarMenuStylesProps = {};
39
+
40
+ export type NavBarItemStylesProps = {
41
+ foregroundColor?: string;
42
+ primaryColor?: string;
43
+ hoverEffect: NavBarHoverEffect;
44
+ isHovered?: boolean;
45
+ variant?: NavBarVariant;
46
+ };
47
+
48
+ export type NavBarProps = SharedComponentProps & {
49
+ items: NavigationItem[];
50
+ classNames?: NavBarClassnames;
51
+ hoverEffect?: NavBarHoverEffect;
52
+ radius?: ComponentRadius;
53
+ size?: ComponentSize;
54
+ variant?: NavBarVariant;
55
+ subItemsColumns?: number;
56
+ };
57
+
58
+ export type NavBarItemProps = {
59
+ item: NavigationItem;
60
+ variant: NavBarVariant;
61
+ hoverEffect: NavBarHoverEffect;
62
+ };
63
+
64
+ export type SubItemsBoxProps = {
65
+ subItemsColumns?: number;
66
+ };
@@ -0,0 +1 @@
1
+ export type * from "./scaffold";
@@ -0,0 +1,9 @@
1
+ import type { SharedComponentProps } from "@/types";
2
+
3
+ export type ScaffoldClassnames = {
4
+ base?: string;
5
+ };
6
+
7
+ export type ScaffoldProps = SharedComponentProps & {
8
+ classNames?: ScaffoldClassnames;
9
+ };
@@ -0,0 +1 @@
1
+ export type * from "./side-bar";
@@ -0,0 +1,40 @@
1
+ import { ButtonProps } from "@heroui/button";
2
+ import type { NavigationItem, SharedComponentProps } from "@/types";
3
+ import type { ReactNode } from "react";
4
+
5
+ export type SideBarVariant = "default" | "compact";
6
+
7
+ export type SideBarClassnames = {
8
+ base?: string;
9
+ trigger?: string;
10
+ title?: string;
11
+ menu?: string;
12
+ menuItem?: string;
13
+ actionsWrapper?: string;
14
+ actionItem?: string;
15
+ };
16
+
17
+ export type SideBarAction = ButtonProps & {
18
+ key: string;
19
+ label?: string;
20
+ };
21
+
22
+ export type SideBarProps = SharedComponentProps & {
23
+ classNames?: SideBarClassnames;
24
+ variant?: SideBarVariant;
25
+ items: NavigationItem[];
26
+ actions?: SideBarAction[];
27
+ triggerProps?: Omit<ButtonProps, "content"> & { content?: ReactNode };
28
+ isOpen?: boolean;
29
+ onOpenChange?: (isOpen: boolean) => void;
30
+ header?: ReactNode;
31
+ };
32
+
33
+ export type SideBarItemStylesProps = {
34
+ foregroundColor?: string;
35
+ primaryColor?: string;
36
+ isHovered?: boolean;
37
+ variant?: SideBarVariant;
38
+ };
39
+
40
+ export type CompactSideBarProps = SideBarProps & {};
@@ -0,0 +1 @@
1
+ export * from "./theme-switch";
@@ -0,0 +1,9 @@
1
+ import type { SharedComponentProps } from "@/types";
2
+
3
+ export type ThemeSwitchClassnames = {
4
+ base?: string;
5
+ };
6
+
7
+ export type ThemeSwitchProps = SharedComponentProps & {
8
+ classNames?: ThemeSwitchClassnames;
9
+ };
@@ -0,0 +1,22 @@
1
+ import type { ButtonProps } from "@heroui/button";
2
+
3
+ export type DeletionConfirmorClassnames = {
4
+ base?: string;
5
+ content?: string;
6
+ header?: string;
7
+ body?: string;
8
+ footer?: string;
9
+ confirmButton?: string;
10
+ declineButton?: string;
11
+ };
12
+
13
+ export type DeletionConfirmorProps = {
14
+ isOpen: boolean;
15
+ onClose: () => void;
16
+ title: string;
17
+ description: string;
18
+ className?: string;
19
+ classNames?: DeletionConfirmorClassnames;
20
+ confirmProps?: ButtonProps;
21
+ declineProps?: ButtonProps;
22
+ };
@@ -0,0 +1 @@
1
+ export * from "./deletion-confirmor";
@@ -0,0 +1,11 @@
1
+ import type { SharedComponentProps } from "@/types";
2
+ import { ReactNode } from "react";
3
+
4
+ export type FiltersClassnames = {
5
+ base?: string;
6
+ };
7
+
8
+ export type FiltersProps = Omit<SharedComponentProps, "children"> & {
9
+ classNames?: FiltersClassnames;
10
+ children: ReactNode;
11
+ };
@@ -0,0 +1 @@
1
+ export type * from "./filters";
@@ -0,0 +1,6 @@
1
+ import { Control, FieldValues } from "react-hook-form";
2
+
3
+ export type FormBuilderValue<TSchema extends FieldValues> = {
4
+ control: Control<TSchema, any, TSchema>;
5
+ formValues: Partial<TSchema>;
6
+ };
@@ -0,0 +1,39 @@
1
+ import type { SharedComponentProps } from "@/types";
2
+ import { ReactNode } from "react";
3
+ import type {
4
+ FieldErrors,
5
+ FieldValues,
6
+ UseFormProps,
7
+ UseFormReturn,
8
+ } from "react-hook-form";
9
+ import type { ZodType } from "zod";
10
+ import { z } from "zod";
11
+
12
+ export type FormBuilderSubmitArgs<TFieldValues extends FieldValues> = {
13
+ values: TFieldValues;
14
+ form: UseFormReturn<TFieldValues>;
15
+ };
16
+
17
+ export type FormBuilderSuccessArgs<TFieldValues extends FieldValues> = {
18
+ values: TFieldValues;
19
+ form: UseFormReturn<TFieldValues>;
20
+ };
21
+
22
+ export type FormBuilderErrorArgs<TFieldValues extends FieldValues> = {
23
+ error?: unknown;
24
+ errors?: FieldErrors<TFieldValues>;
25
+ form: UseFormReturn<TFieldValues>;
26
+ };
27
+
28
+ export type FormBuilderProps<TSchema extends ZodType<any, any, any>> = Omit<
29
+ SharedComponentProps,
30
+ "children"
31
+ > & {
32
+ children: ReactNode;
33
+ formProps?: UseFormProps<z.infer<TSchema>>;
34
+ onSubmit: (values: z.infer<TSchema>) => Promise<unknown> | unknown;
35
+ onSuccess?: (values: z.infer<TSchema>) => void;
36
+ onError?: (error: unknown) => void;
37
+ /** Called whenever form values change. Use this to read values outside FormBuilder (e.g. in parent state). */
38
+ onValuesChange?: (values: Partial<z.infer<TSchema>>) => void;
39
+ };
@@ -0,0 +1,2 @@
1
+ export type * from "./form-builder";
2
+ export type * from "./context";
@@ -0,0 +1,3 @@
1
+ export * from "./deletion-confirmor";
2
+ export * from "./filters";
3
+ export * from "./form-builder";
@@ -0,0 +1 @@
1
+ export type * from "./landing-page";
@@ -0,0 +1,10 @@
1
+ import type { SharedComponentProps } from "@/types";
2
+
3
+ export type LandingPageClassnames = {
4
+ base?: string;
5
+ };
6
+
7
+ export type LandingPageProps = SharedComponentProps & {
8
+ classNames?: LandingPageClassnames;
9
+ variant?: "default";
10
+ };
@@ -0,0 +1,24 @@
1
+ import { type ReactNode } from "react";
2
+ import { EmperorUIInterLocalization } from "@/types";
3
+ import { ToastProps } from "@heroui/toast";
4
+ import { EmperorUITheme } from "@/types";
5
+
6
+ export type ConfigContextState = {
7
+ config: EmperorUIConfig;
8
+ };
9
+
10
+ export type ConfigProviderProps = {
11
+ children: ReactNode;
12
+ config?: EmperorUIConfig;
13
+ };
14
+
15
+ export type EmperorUILayout = {
16
+ withScaffold: boolean;
17
+ };
18
+
19
+ export type EmperorUIConfig = {
20
+ layout?: Partial<EmperorUILayout>;
21
+ interLocalization?: Partial<EmperorUIInterLocalization>;
22
+ toast?: ToastProps;
23
+ theme?: Partial<EmperorUITheme>;
24
+ };
@@ -0,0 +1,4 @@
1
+ export type * from "./config";
2
+ export type * from "./navigation";
3
+ export type * from "./localization";
4
+ export type * from "./theme";
@@ -0,0 +1,24 @@
1
+ import { Locale } from "@/i18n";
2
+
3
+ export type AppDirection = "ltr" | "rtl";
4
+
5
+ export type EmperorUILang = "en" | "ar";
6
+
7
+ export type EmperorUILocales = Record<
8
+ EmperorUILang,
9
+ Partial<{
10
+ atoms?: {
11
+ uploader?: Partial<Locale["atoms"]["uploader"]>;
12
+ colorPicker?: Partial<Locale["atoms"]["colorPicker"]>;
13
+ };
14
+ }>
15
+ >;
16
+
17
+ export type EmperorUIInterLocalization = {
18
+ lang?: EmperorUILang;
19
+ languages?: EmperorUILang[];
20
+ defaultLanguage?: EmperorUILang;
21
+ isMultiLingual?: boolean;
22
+ dir?: AppDirection;
23
+ locales?: EmperorUILocales;
24
+ };
@@ -0,0 +1,17 @@
1
+ import { NavigationItem } from "@/types";
2
+ import { ReactNode } from "react";
3
+
4
+ export type NavigationContextState = {
5
+ hoveredItemId: string | null;
6
+ subItems: NavigationItem[];
7
+ isSubItemsBoxOpen: boolean;
8
+ subItemsBoxIsHovered: boolean;
9
+ setHoveredItemId: (id: string | null) => void;
10
+ setSubItems: (items: NavigationItem[]) => void;
11
+ setIsSubItemsBoxOpen: (isOpen: boolean) => void;
12
+ setSubItemsBoxIsHovered: (isHovered: boolean) => void;
13
+ };
14
+
15
+ export type NavigationProviderProps = {
16
+ children: ReactNode;
17
+ };
@@ -0,0 +1,33 @@
1
+ import { InputProps, TextAreaProps } from "@heroui/input";
2
+ import { ButtonProps } from "@heroui/button";
3
+ import { CardProps } from "@heroui/card";
4
+ import { DropdownProps } from "@heroui/dropdown";
5
+ import { ModalProps } from "@heroui/modal";
6
+ import { CheckboxGroupProps, CheckboxProps } from "@heroui/checkbox";
7
+ import { AutocompleteItemProps, AutocompleteProps } from "@heroui/autocomplete";
8
+ import { SelectProps, SelectItemProps } from "@heroui/select";
9
+ import { RadioGroupProps } from "@heroui/radio";
10
+ import { SwitchProps } from "@heroui/switch";
11
+ import { DatePickerProps } from "@heroui/date-picker";
12
+ import { SliderProps } from "@heroui/slider";
13
+
14
+ export type EmperorUITheme = {
15
+ components?: {
16
+ input?: InputProps;
17
+ textarea?: TextAreaProps;
18
+ button?: ButtonProps;
19
+ card?: CardProps;
20
+ dropdown?: DropdownProps;
21
+ modal?: ModalProps;
22
+ checkbox?: CheckboxProps;
23
+ checkboxGroup?: CheckboxGroupProps;
24
+ autocomplete?: Omit<AutocompleteProps, "children">;
25
+ autocompleteItem?: Omit<AutocompleteItemProps, "children">;
26
+ radio?: Omit<RadioGroupProps, "children">;
27
+ select?: Omit<SelectProps, "children">;
28
+ selectItem?: Omit<SelectItemProps, "children">;
29
+ switch?: SwitchProps;
30
+ datePicker?: DatePickerProps;
31
+ slider?: SliderProps;
32
+ };
33
+ };
@@ -0,0 +1,3 @@
1
+ export type * from "./components";
2
+ export type * from "./shared";
3
+ export type * from "./context";
@@ -1,10 +1,13 @@
1
- import { ReactNode } from 'react';
1
+ import { type ReactNode } from "react";
2
+
2
3
  export type SharedComponentProps = {
3
- className?: string;
4
- classNames?: {
5
- base?: string;
6
- };
7
- children?: ReactNode;
4
+ className?: string;
5
+ classNames?: {
6
+ base?: string;
7
+ };
8
+ children?: ReactNode;
8
9
  };
10
+
9
11
  export type ComponentSize = "xs" | "sm" | "base" | "md" | "lg" | "xl";
12
+
10
13
  export type ComponentRadius = "none" | "sm" | "md" | "lg" | "full";
@@ -0,0 +1 @@
1
+ export type * from "./components";
@@ -0,0 +1,6 @@
1
+ import clsx, { ClassValue } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+
4
+ export function cn(...classes: ClassValue[]) {
5
+ return twMerge(clsx(classes));
6
+ }
@@ -0,0 +1,36 @@
1
+ "use client";
2
+
3
+ import { FileObject } from "@/types";
4
+ /**
5
+ * Compress an image to reduce its size
6
+ *
7
+ * ! NOTE: This function should ONLY run on CLIENT side
8
+ */
9
+ import imageCompression from "browser-image-compression";
10
+
11
+ export async function compressImage(
12
+ fileObject: FileObject,
13
+ maxSizeMB?: number,
14
+ ): Promise<FileObject | null> {
15
+ try {
16
+ if (!fileObject?.file) return null;
17
+
18
+ const blob = await imageCompression(fileObject?.file, {
19
+ maxSizeMB: maxSizeMB || 2,
20
+ useWebWorker: true, // Optimize performance
21
+ initialQuality: 0.8, // Adjust the compression quality (0.1 to 1)
22
+ });
23
+
24
+ const compressedFile = new File([blob], fileObject?.file?.name, {
25
+ type: blob.type,
26
+ });
27
+
28
+ return {
29
+ ...fileObject,
30
+ file: compressedFile,
31
+ };
32
+ } catch (error) {
33
+ console.error("Image compression failed:", error);
34
+ return null;
35
+ }
36
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./cn";
2
+ export * from "./storybook";
3
+ export * from "./compress-images";
4
+ export * from "./uploader";
5
+ export * from "./locales";
@@ -0,0 +1,54 @@
1
+ import { Locale } from "@/i18n";
2
+
3
+ /**
4
+ * Checks if a value is a plain object (not array, null, or other object types).
5
+ */
6
+ const isPlainObject = (value: unknown): value is Record<string, unknown> =>
7
+ typeof value === "object" && value !== null && !Array.isArray(value);
8
+
9
+ /**
10
+ * Deep-merges config locales into default locales. Default values are used as base,
11
+ * and config values override only the keys they provide. Nested objects are merged
12
+ * recursively so unrelated keys at any level remain unchanged.
13
+ */
14
+ export const mergeLocales = ({
15
+ defaultLocales,
16
+ configLocales,
17
+ }: {
18
+ defaultLocales: Locale;
19
+ configLocales?: Partial<Locale>;
20
+ }): Locale => {
21
+ const deepMerge = <T extends Record<string, unknown>>(
22
+ defaultObj: T,
23
+ configObj: Partial<T> | undefined,
24
+ ): T => {
25
+ if (configObj == null || Object.keys(configObj).length === 0) {
26
+ return defaultObj;
27
+ }
28
+
29
+ const result = { ...defaultObj } as T;
30
+
31
+ for (const key of Object.keys(configObj) as (keyof T)[]) {
32
+ const configVal = configObj[key];
33
+ const defaultVal = defaultObj[key];
34
+
35
+ if (configVal === undefined) continue;
36
+
37
+ if (isPlainObject(configVal) && isPlainObject(defaultVal as unknown)) {
38
+ (result as Record<string, unknown>)[key as string] = deepMerge(
39
+ defaultVal as Record<string, unknown>,
40
+ configVal,
41
+ );
42
+ } else {
43
+ (result as Record<string, unknown>)[key as string] = configVal;
44
+ }
45
+ }
46
+
47
+ return result;
48
+ };
49
+
50
+ return deepMerge(
51
+ defaultLocales as unknown as Record<string, unknown>,
52
+ configLocales as Partial<Record<string, unknown>>,
53
+ ) as Locale;
54
+ };
@@ -0,0 +1,15 @@
1
+ import { EmperorUIProvider } from "@/providers";
2
+ import { defaultEmperorUIConfig } from "@/constants";
3
+ import { EmperorUIConfig } from "@/types";
4
+
5
+ export const getStorybookDecorators = ({
6
+ config = defaultEmperorUIConfig,
7
+ }: {
8
+ config?: EmperorUIConfig;
9
+ }) => [
10
+ (Story: any) => (
11
+ <EmperorUIProvider config={config}>
12
+ <Story />
13
+ </EmperorUIProvider>
14
+ ),
15
+ ];