@kirill.konshin/utils 0.0.10 → 0.0.12

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 (201) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/.turbo/turbo-test.log +5 -5
  3. package/CHANGELOG.md +12 -0
  4. package/dist/bootstrap/adaptiveContainer.d.ts +3 -0
  5. package/dist/bootstrap/adaptiveContainer.d.ts.map +1 -0
  6. package/dist/bootstrap/adaptiveContainer.js +11 -0
  7. package/dist/bootstrap/adaptiveContainer.js.map +1 -0
  8. package/dist/bootstrap/controls.d.ts +35 -0
  9. package/dist/bootstrap/controls.d.ts.map +1 -0
  10. package/dist/bootstrap/controls.js +77 -0
  11. package/dist/bootstrap/controls.js.map +1 -0
  12. package/dist/bootstrap/error.d.ts +7 -0
  13. package/dist/bootstrap/error.d.ts.map +1 -0
  14. package/dist/bootstrap/error.js +31 -0
  15. package/dist/bootstrap/error.js.map +1 -0
  16. package/dist/bootstrap/field.d.ts +9 -0
  17. package/dist/bootstrap/field.d.ts.map +1 -0
  18. package/dist/bootstrap/field.js +29 -0
  19. package/dist/bootstrap/field.js.map +1 -0
  20. package/dist/bootstrap/footer.d.ts +10 -0
  21. package/dist/bootstrap/footer.d.ts.map +1 -0
  22. package/dist/bootstrap/footer.js +40 -0
  23. package/dist/bootstrap/footer.js.map +1 -0
  24. package/dist/bootstrap/globalLoading.d.ts +4 -0
  25. package/dist/bootstrap/globalLoading.d.ts.map +1 -0
  26. package/dist/bootstrap/globalLoading.js +10 -0
  27. package/dist/bootstrap/globalLoading.js.map +1 -0
  28. package/dist/bootstrap/index.d.ts +13 -0
  29. package/dist/bootstrap/index.d.ts.map +1 -0
  30. package/dist/bootstrap/index.js +34 -0
  31. package/dist/bootstrap/index.js.map +1 -0
  32. package/dist/bootstrap/loading.d.ts +8 -0
  33. package/dist/bootstrap/loading.d.ts.map +1 -0
  34. package/dist/bootstrap/loading.js +18 -0
  35. package/dist/bootstrap/loading.js.map +1 -0
  36. package/dist/bootstrap/responsiveHelper.d.ts +7 -0
  37. package/dist/bootstrap/responsiveHelper.d.ts.map +1 -0
  38. package/dist/bootstrap/responsiveHelper.js +45 -0
  39. package/dist/bootstrap/responsiveHelper.js.map +1 -0
  40. package/dist/bootstrap/screen.d.ts +20 -0
  41. package/dist/bootstrap/screen.d.ts.map +1 -0
  42. package/dist/bootstrap/screen.js +79 -0
  43. package/dist/bootstrap/screen.js.map +1 -0
  44. package/dist/bootstrap/toaster.d.ts +9 -0
  45. package/dist/bootstrap/toaster.d.ts.map +1 -0
  46. package/dist/bootstrap/toaster.js +36 -0
  47. package/dist/bootstrap/toaster.js.map +1 -0
  48. package/dist/bootstrap/useModal.d.ts +22 -0
  49. package/dist/bootstrap/useModal.d.ts.map +1 -0
  50. package/dist/bootstrap/useModal.js +50 -0
  51. package/dist/bootstrap/useModal.js.map +1 -0
  52. package/dist/bootstrap/useWrappedForm.d.ts +14 -0
  53. package/dist/bootstrap/useWrappedForm.d.ts.map +1 -0
  54. package/dist/bootstrap/useWrappedForm.js +32 -0
  55. package/dist/bootstrap/useWrappedForm.js.map +1 -0
  56. package/dist/core/cache.d.ts +121 -0
  57. package/dist/core/cache.d.ts.map +1 -0
  58. package/dist/core/cache.js +104 -0
  59. package/dist/core/cache.js.map +1 -0
  60. package/dist/core/errors.d.ts +2 -0
  61. package/dist/core/errors.d.ts.map +1 -0
  62. package/dist/core/errors.js +15 -0
  63. package/dist/core/errors.js.map +1 -0
  64. package/dist/core/index.d.ts +6 -0
  65. package/dist/core/index.d.ts.map +1 -0
  66. package/dist/core/index.js +22 -0
  67. package/dist/core/index.js.map +1 -0
  68. package/dist/core/measure.d.ts +35 -0
  69. package/dist/core/measure.d.ts.map +1 -0
  70. package/dist/core/measure.js +56 -0
  71. package/dist/core/measure.js.map +1 -0
  72. package/dist/core/mutex.d.ts +6 -0
  73. package/dist/core/mutex.d.ts.map +1 -0
  74. package/dist/core/mutex.js +26 -0
  75. package/dist/core/mutex.js.map +1 -0
  76. package/dist/core/worker.d.ts +84 -0
  77. package/dist/core/worker.d.ts.map +1 -0
  78. package/dist/core/worker.js +237 -0
  79. package/dist/core/worker.js.map +1 -0
  80. package/dist/electron/createWindow.d.ts +23 -0
  81. package/dist/electron/createWindow.d.ts.map +1 -0
  82. package/dist/electron/createWindow.js +160 -0
  83. package/dist/electron/createWindow.js.map +1 -0
  84. package/dist/electron/index.d.ts +3 -0
  85. package/dist/electron/index.d.ts.map +1 -0
  86. package/dist/electron/index.js +9 -0
  87. package/dist/electron/index.js.map +1 -0
  88. package/dist/electron/updater.d.ts +2 -0
  89. package/dist/electron/updater.d.ts.map +1 -0
  90. package/dist/electron/updater.js +47 -0
  91. package/dist/electron/updater.js.map +1 -0
  92. package/dist/electron-builder/builder.d.ts +8 -0
  93. package/dist/electron-builder/builder.d.ts.map +1 -0
  94. package/dist/electron-builder/builder.js +130 -0
  95. package/dist/electron-builder/builder.js.map +1 -0
  96. package/dist/electron-builder/images.d.ts +7 -0
  97. package/dist/electron-builder/images.d.ts.map +1 -0
  98. package/dist/electron-builder/images.js +25 -0
  99. package/dist/electron-builder/images.js.map +1 -0
  100. package/dist/electron-builder/index.d.ts +3 -0
  101. package/dist/electron-builder/index.d.ts.map +1 -0
  102. package/dist/electron-builder/index.js +7 -0
  103. package/dist/electron-builder/index.js.map +1 -0
  104. package/dist/mui/formControlFieldset.d.ts +5 -0
  105. package/dist/mui/formControlFieldset.d.ts.map +1 -0
  106. package/dist/mui/formControlFieldset.js +28 -0
  107. package/dist/mui/formControlFieldset.js.map +1 -0
  108. package/dist/mui/formLabelLegend.d.ts +4 -0
  109. package/dist/mui/formLabelLegend.d.ts.map +1 -0
  110. package/dist/mui/formLabelLegend.js +12 -0
  111. package/dist/mui/formLabelLegend.js.map +1 -0
  112. package/dist/mui/genericControl.d.ts +7 -0
  113. package/dist/mui/genericControl.d.ts.map +1 -0
  114. package/dist/mui/genericControl.js +21 -0
  115. package/dist/mui/genericControl.js.map +1 -0
  116. package/dist/mui/index.d.ts +5 -0
  117. package/dist/mui/index.d.ts.map +1 -0
  118. package/dist/mui/index.js +11 -0
  119. package/dist/mui/index.js.map +1 -0
  120. package/dist/mui/readOnly.d.ts +6 -0
  121. package/dist/mui/readOnly.d.ts.map +1 -0
  122. package/dist/mui/readOnly.js +7 -0
  123. package/dist/mui/readOnly.js.map +1 -0
  124. package/dist/next/appLink.d.ts +8 -0
  125. package/dist/next/appLink.d.ts.map +1 -0
  126. package/dist/next/appLink.js +33 -0
  127. package/dist/next/appLink.js.map +1 -0
  128. package/dist/next/index.d.ts +6 -0
  129. package/dist/next/index.d.ts.map +1 -0
  130. package/dist/next/index.js +15 -0
  131. package/dist/next/index.js.map +1 -0
  132. package/dist/next/measure.d.ts +15 -0
  133. package/dist/next/measure.d.ts.map +1 -0
  134. package/dist/next/measure.js +9 -0
  135. package/dist/next/measure.js.map +1 -0
  136. package/dist/next/noSSR.d.ts +5 -0
  137. package/dist/next/noSSR.d.ts.map +1 -0
  138. package/dist/next/noSSR.js +14 -0
  139. package/dist/next/noSSR.js.map +1 -0
  140. package/dist/next/redirect.d.ts +6 -0
  141. package/dist/next/redirect.d.ts.map +1 -0
  142. package/dist/next/useIsInner.d.ts +3 -0
  143. package/dist/next/useIsInner.d.ts.map +1 -0
  144. package/dist/next/useIsInner.js +14 -0
  145. package/dist/next/useIsInner.js.map +1 -0
  146. package/dist/react/apiCall.d.ts +6 -0
  147. package/dist/react/apiCall.d.ts.map +1 -0
  148. package/dist/react/apiCall.js +24 -0
  149. package/dist/react/apiCall.js.map +1 -0
  150. package/dist/react/form/client.d.ts +7 -0
  151. package/dist/react/form/client.d.ts.map +1 -0
  152. package/dist/react/form/client.js +45 -0
  153. package/dist/react/form/client.js.map +1 -0
  154. package/dist/react/form/form.d.ts +44 -0
  155. package/dist/react/form/form.d.ts.map +1 -0
  156. package/dist/react/form/form.js +75 -0
  157. package/dist/react/form/form.js.map +1 -0
  158. package/dist/react/form/index.d.ts +3 -0
  159. package/dist/react/form/index.d.ts.map +1 -0
  160. package/dist/react/index.d.ts +5 -0
  161. package/dist/react/index.d.ts.map +1 -0
  162. package/dist/react/index.js +19 -0
  163. package/dist/react/index.js.map +1 -0
  164. package/dist/react/useFetch.d.ts +2 -0
  165. package/dist/react/useFetch.d.ts.map +1 -0
  166. package/dist/react/useFetch.js +19 -0
  167. package/dist/react/useFetch.js.map +1 -0
  168. package/dist/react/useFetcher.d.ts +10 -0
  169. package/dist/react/useFetcher.d.ts.map +1 -0
  170. package/dist/react/useFetcher.js +43 -0
  171. package/dist/react/useFetcher.js.map +1 -0
  172. package/dist/react-native/index.d.ts +4 -0
  173. package/dist/react-native/index.d.ts.map +1 -0
  174. package/dist/react-native/index.js +9 -0
  175. package/dist/react-native/index.js.map +1 -0
  176. package/dist/react-native/share.d.ts +9 -0
  177. package/dist/react-native/share.d.ts.map +1 -0
  178. package/dist/react-native/share.js +23 -0
  179. package/dist/react-native/share.js.map +1 -0
  180. package/dist/react-native/update.d.ts +4 -0
  181. package/dist/react-native/update.d.ts.map +1 -0
  182. package/dist/react-native/update.js +40 -0
  183. package/dist/react-native/update.js.map +1 -0
  184. package/dist/react-native/useAppState.d.ts +2 -0
  185. package/dist/react-native/useAppState.d.ts.map +1 -0
  186. package/dist/react-native/useAppState.js +18 -0
  187. package/dist/react-native/useAppState.js.map +1 -0
  188. package/dist/tailwind/fullpage.d.ts +7 -0
  189. package/dist/tailwind/fullpage.d.ts.map +1 -0
  190. package/dist/tailwind/fullpage.js +14 -0
  191. package/dist/tailwind/fullpage.js.map +1 -0
  192. package/dist/tailwind/index.d.ts +3 -0
  193. package/dist/tailwind/index.d.ts.map +1 -0
  194. package/dist/tailwind/index.js +7 -0
  195. package/dist/tailwind/index.js.map +1 -0
  196. package/dist/tailwind/responsiveHelper.d.ts +2 -0
  197. package/dist/tailwind/responsiveHelper.d.ts.map +1 -0
  198. package/dist/tailwind/responsiveHelper.js +15 -0
  199. package/dist/tailwind/responsiveHelper.js.map +1 -0
  200. package/package.json +1 -1
  201. package/src/next/appLink.tsx +3 -2
@@ -1,12 +1,12 @@
1
1
  vite v6.0.11 building SSR bundle for production...
2
2
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/bootstrap
3
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/core
4
3
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron
5
4
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron-builder
5
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/core
6
6
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/mui
7
7
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/next
8
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/react-native
9
8
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/tailwind
9
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/react-native
10
10
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/react
11
11
  transforming...
12
12
  ✓ 50 modules transformed.
@@ -35,7 +35,7 @@ rendering chunks...
35
35
  dist/core/index.js 0.56 kB │ map: 0.09 kB
36
36
  dist/react/useFetch.js 0.56 kB │ map: 1.70 kB
37
37
  dist/mui/formControlFieldset.js 0.64 kB │ map: 1.23 kB
38
- dist/next/appLink.js 0.75 kB │ map: 1.55 kB
38
+ dist/next/appLink.js 0.75 kB │ map: 1.58 kB
39
39
  dist/core/mutex.js 0.76 kB │ map: 1.19 kB
40
40
  dist/bootstrap/error.js 0.78 kB │ map: 1.66 kB
41
41
  dist/bootstrap/field.js 0.79 kB │ map: 1.56 kB
@@ -61,7 +61,7 @@ rendering chunks...
61
61
  dist/bootstrap/screen.js 3.37 kB │ map: 7.04 kB
62
62
  dist/electron/createWindow.js 5.39 kB │ map: 10.88 kB
63
63
  dist/core/worker.js 7.45 kB │ map: 15.67 kB
64
- [vite:dts] Declaration files built in 5270ms.
64
+ [vite:dts] Declaration files built in 5215ms.
65
65
 
66
- ✓ built in 5.55s
66
+ ✓ built in 5.49s
67
67
  Updated package.json with exports
@@ -1,8 +1,8 @@
1
1
  [?25lcreate succeeded: /home/runner/work/utils/utils/packages/utils/src/bootstrap
2
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/core
3
2
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron
4
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/mui
3
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/core
5
4
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/next
5
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/mui
6
6
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron-builder
7
7
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/react-native
8
8
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/tailwind
@@ -24,8 +24,8 @@ create succeeded: /home/runner/work/utils/utils/packages/utils/src/react
24
24
 
25
25
   Test Files  1 passed (1)
26
26
   Tests  4 passed (4)
27
-  Start at  05:50:09
28
-  Duration  885ms (transform 50ms, setup 0ms, collect 43ms, tests 10ms, environment 0ms, prepare 87ms)
27
+  Start at  06:02:58
28
+  Duration  873ms (transform 50ms, setup 0ms, collect 45ms, tests 10ms, environment 0ms, prepare 76ms)
29
29
 
30
30
   % Coverage report from v8
31
31
  -------------------|---------|----------|---------|---------|-------------------
@@ -88,7 +88,7 @@ All files | 3.28 | 63.82 | 53.08 | 3.28 |
88
88
  index.ts | 0 | 0 | 0 | 0 | 1-4
89
89
  readOnly.tsx | 0 | 100 | 100 | 0 | 2-5
90
90
  utils/src/next | 0 | 66.66 | 66.66 | 0 |
91
- appLink.tsx | 0 | 100 | 100 | 0 | 4-39
91
+ appLink.tsx | 0 | 100 | 100 | 0 | 4-40
92
92
  index.ts | 0 | 0 | 0 | 0 | 1-5
93
93
  measure.ts | 0 | 0 | 0 | 0 | 1-7
94
94
  noSSR.tsx | 0 | 100 | 100 | 0 | 3-17
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @kirill.konshin/utils
2
2
 
3
+ ## 0.0.12
4
+
5
+ ### Patch Changes
6
+
7
+ - AppLink types
8
+
9
+ ## 0.0.11
10
+
11
+ ### Patch Changes
12
+
13
+ - Demos, consolidated packages, tests, Vite, perf tests
14
+
3
15
  ## 0.0.10
4
16
 
5
17
  ### Patch Changes
@@ -0,0 +1,3 @@
1
+ import { ContainerProps } from 'react-bootstrap';
2
+ export declare function AdaptiveContainer({ children, ...props }: ContainerProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=adaptiveContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptiveContainer.d.ts","sourceRoot":"","sources":["../../src/bootstrap/adaptiveContainer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG5D,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,2CAOvE"}
@@ -0,0 +1,11 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Container } from "react-bootstrap";
3
+ import { useBreakpoint } from "./responsiveHelper.js";
4
+ function AdaptiveContainer({ children, ...props }) {
5
+ const { isMobile } = useBreakpoint();
6
+ return /* @__PURE__ */ jsx(Container, { fluid: isMobile, ...props, children });
7
+ }
8
+ export {
9
+ AdaptiveContainer
10
+ };
11
+ //# sourceMappingURL=adaptiveContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptiveContainer.js","sources":["../../src/bootstrap/adaptiveContainer.tsx"],"sourcesContent":["import React from 'react';\nimport { Container, ContainerProps } from 'react-bootstrap';\nimport { useBreakpoint } from './responsiveHelper';\n\nexport function AdaptiveContainer({ children, ...props }: ContainerProps) {\n const { isMobile } = useBreakpoint();\n return (\n <Container fluid={isMobile} {...props}>\n {children}\n </Container>\n );\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,kBAAkB,EAAE,UAAU,GAAG,SAAyB;AAChE,QAAA,EAAE,SAAS,IAAI,cAAc;AACnC,6BACK,WAAU,EAAA,OAAO,UAAW,GAAG,OAC3B,UACL;AAER;"}
@@ -0,0 +1,35 @@
1
+ import { default as React, HTMLInputTypeAttribute } from 'react';
2
+ interface ControlProps {
3
+ value?: any;
4
+ setValue?: (v: any) => void;
5
+ defaultValue?: any;
6
+ options?: {
7
+ [key: string]: any;
8
+ };
9
+ setOptions?: (v: {
10
+ [key: string]: any;
11
+ }) => void;
12
+ defaultOptions?: {
13
+ [key: string]: any;
14
+ };
15
+ name: string;
16
+ children?: React.ReactNode;
17
+ inputProps?: {
18
+ type: HTMLInputTypeAttribute;
19
+ property?: string;
20
+ valueExtractor?: (e: any) => any;
21
+ className?: string;
22
+ } & any;
23
+ hideValue?: boolean;
24
+ }
25
+ export declare const Control: React.NamedExoticComponent<ControlProps>;
26
+ export interface RangeProps extends ControlProps {
27
+ min: number;
28
+ max: number;
29
+ step?: number;
30
+ }
31
+ export declare const Range: React.NamedExoticComponent<RangeProps>;
32
+ export declare const Checkbox: React.NamedExoticComponent<ControlProps>;
33
+ export declare const Select: React.NamedExoticComponent<ControlProps>;
34
+ export {};
35
+ //# sourceMappingURL=controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/bootstrap/controls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,sBAAsB,EAAQ,MAAM,OAAO,CAAC;AAM5D,UAAU,YAAY;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE;QACT,IAAI,EAAE,sBAAsB,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,GAAG,CAAC;IACR,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAmBD,eAAO,MAAM,OAAO,0CAsClB,CAAC;AAEH,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,KAAK,wCAchB,CAAC;AAEH,eAAO,MAAM,QAAQ,0CAOnB,CAAC;AAEH,eAAO,MAAM,MAAM,0CAMjB,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { memo } from "react";
3
+ const lcFirst = (str) => str[0].toLowerCase() + str.substring(1, str.length);
4
+ const toProperty = (str) => lcFirst(str).split(" ").join("");
5
+ const Label = memo(function Label2({ name, reset, value, defaultValue }) {
6
+ return /* @__PURE__ */ jsxs("label", { className: "flex-grow-1 mb-0 d-flex align-items-center justify-content-start gap-2", children: [
7
+ name,
8
+ value !== defaultValue && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("a", { href: "javascript: void(0)", onClick: reset, children: /* @__PURE__ */ jsx("small", { children: "reset" }) }) })
9
+ ] });
10
+ });
11
+ const Control = memo(function Control2({
12
+ value = null,
13
+ setValue,
14
+ defaultValue = null,
15
+ options = {},
16
+ setOptions,
17
+ defaultOptions = {},
18
+ name,
19
+ inputProps: { Tag = "input", property = "value", valueExtractor = (e) => e.target.value, ...inputProps } = {},
20
+ hideValue = false,
21
+ children
22
+ }) {
23
+ const prop = toProperty(name);
24
+ defaultValue = defaultValue || defaultOptions[prop];
25
+ value = value || (options == null ? void 0 : options[prop]);
26
+ setValue = setValue || ((v) => setOptions == null ? void 0 : setOptions({ [prop]: v }));
27
+ const reset = () => setValue(defaultValue);
28
+ return /* @__PURE__ */ jsxs("div", { className: "d-flex align-items-center gap-2", children: [
29
+ /* @__PURE__ */ jsx(Label, { name, reset, value, defaultValue }),
30
+ /* @__PURE__ */ jsx(
31
+ Tag,
32
+ {
33
+ ...inputProps,
34
+ ...{ [property]: value || "" },
35
+ className: `${value === defaultValue ? "opacity-75" : ""} ${inputProps.className}`,
36
+ onChange: (e) => setValue(valueExtractor(e)),
37
+ children
38
+ }
39
+ ),
40
+ !hideValue && /* @__PURE__ */ jsx("span", { onDoubleClick: reset, className: "text-start", style: { width: "20px" }, children: value })
41
+ ] });
42
+ });
43
+ const Range = memo(function Range2({ min, max, step = 0.1, ...props }) {
44
+ return /* @__PURE__ */ jsx(
45
+ Control,
46
+ {
47
+ inputProps: {
48
+ type: "range",
49
+ min,
50
+ max,
51
+ step,
52
+ className: "form-control-range",
53
+ valueExtractor: (e) => parseFloat(e.target.value)
54
+ },
55
+ ...props
56
+ }
57
+ );
58
+ });
59
+ const Checkbox = memo(function Checkbox2(props) {
60
+ return /* @__PURE__ */ jsx(
61
+ Control,
62
+ {
63
+ inputProps: { type: "checkbox", property: "checked", valueExtractor: (e) => e.target.checked },
64
+ ...props
65
+ }
66
+ );
67
+ });
68
+ const Select = memo(function Select2({ children, ...props }) {
69
+ return /* @__PURE__ */ jsx(Control, { inputProps: { Tag: "select", className: "form-select" }, ...props, hideValue: true, children });
70
+ });
71
+ export {
72
+ Checkbox,
73
+ Control,
74
+ Range,
75
+ Select
76
+ };
77
+ //# sourceMappingURL=controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.js","sources":["../../src/bootstrap/controls.tsx"],"sourcesContent":["import React, { HTMLInputTypeAttribute, memo } from 'react';\n\nconst lcFirst = (str) => str[0].toLowerCase() + str.substring(1, str.length);\n\nconst toProperty = (str) => lcFirst(str).split(' ').join('');\n\ninterface ControlProps {\n value?: any;\n setValue?: (v: any) => void;\n defaultValue?: any;\n options?: { [key: string]: any };\n setOptions?: (v: { [key: string]: any }) => void;\n defaultOptions?: { [key: string]: any };\n name: string;\n children?: React.ReactNode;\n inputProps?: {\n type: HTMLInputTypeAttribute;\n property?: string;\n valueExtractor?: (e: any) => any;\n className?: string;\n } & any;\n hideValue?: boolean;\n}\n\ntype LabelProps = Pick<ControlProps, 'name' | 'value' | 'defaultValue'> & { reset: () => void };\n\nconst Label = memo<LabelProps>(function Label({ name, reset, value, defaultValue }) {\n return (\n <label className=\"flex-grow-1 mb-0 d-flex align-items-center justify-content-start gap-2\">\n {name}\n {value !== defaultValue && (\n <>\n <a href=\"javascript: void(0)\" onClick={reset}>\n <small>reset</small>\n </a>\n </>\n )}\n </label>\n );\n});\n\nexport const Control = memo<ControlProps>(function Control({\n value = null,\n setValue,\n defaultValue = null,\n options = {},\n setOptions,\n defaultOptions = {},\n name,\n inputProps: { Tag = 'input', property = 'value', valueExtractor = (e) => e.target.value, ...inputProps } = {},\n hideValue = false,\n children,\n}) {\n const prop = toProperty(name);\n\n defaultValue = defaultValue || defaultOptions[prop];\n value = value || options?.[prop];\n setValue = setValue || ((v) => setOptions?.({ [prop]: v }));\n\n const reset = () => setValue(defaultValue);\n\n return (\n <div className=\"d-flex align-items-center gap-2\">\n <Label name={name} reset={reset} value={value} defaultValue={defaultValue} />\n <Tag\n {...inputProps}\n {...{ [property]: value || '' }} // null is needed to make it always controlled\n className={`${value === defaultValue ? 'opacity-75' : ''} ${inputProps.className}`}\n onChange={(e) => setValue(valueExtractor(e))}\n >\n {children}\n </Tag>\n {!hideValue && (\n <span onDoubleClick={reset} className=\"text-start\" style={{ width: '20px' }}>\n {value}\n </span>\n )}\n </div>\n );\n});\n\nexport interface RangeProps extends ControlProps {\n min: number;\n max: number;\n step?: number;\n}\n\nexport const Range = memo<RangeProps>(function Range({ min, max, step = 0.1, ...props }) {\n return (\n <Control\n inputProps={{\n type: 'range',\n min,\n max,\n step,\n className: 'form-control-range',\n valueExtractor: (e) => parseFloat(e.target.value),\n }}\n {...props}\n />\n );\n});\n\nexport const Checkbox = memo<ControlProps>(function Checkbox(props) {\n return (\n <Control\n inputProps={{ type: 'checkbox', property: 'checked', valueExtractor: (e) => e.target.checked }}\n {...props}\n />\n );\n});\n\nexport const Select = memo<ControlProps>(function Select({ children, ...props }) {\n return (\n <Control inputProps={{ Tag: 'select', className: 'form-select' }} {...props} hideValue={true}>\n {children}\n </Control>\n );\n});\n"],"names":["Label","Control","Range","Checkbox","Select"],"mappings":";;AAEA,MAAM,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,gBAAgB,IAAI,UAAU,GAAG,IAAI,MAAM;AAE3E,MAAM,aAAa,CAAC,QAAQ,QAAQ,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE;AAsB3D,MAAM,QAAQ,KAAiB,SAASA,OAAM,EAAE,MAAM,OAAO,OAAO,gBAAgB;AAE5E,SAAA,qBAAC,SAAM,EAAA,WAAU,0EACZ,UAAA;AAAA,IAAA;AAAA,IACA,UAAU,gBAEH,oBAAA,UAAA,EAAA,UAAA,oBAAC,KAAE,EAAA,MAAK,uBAAsB,SAAS,OACnC,UAAA,oBAAC,SAAM,EAAA,UAAA,SAAK,GAChB,EACJ,CAAA;AAAA,EAAA,GAER;AAER,CAAC;AAEY,MAAA,UAAU,KAAmB,SAASC,SAAQ;AAAA,EACvD,QAAQ;AAAA,EACR;AAAA,EACA,eAAe;AAAA,EACf,UAAU,CAAC;AAAA,EACX;AAAA,EACA,iBAAiB,CAAC;AAAA,EAClB;AAAA,EACA,YAAY,EAAE,MAAM,SAAS,WAAW,SAAS,iBAAiB,CAAC,MAAM,EAAE,OAAO,OAAO,GAAG,eAAe,CAAC;AAAA,EAC5G,YAAY;AAAA,EACZ;AACJ,GAAG;AACO,QAAA,OAAO,WAAW,IAAI;AAEb,iBAAA,gBAAgB,eAAe,IAAI;AAC1C,UAAA,UAAS,mCAAU;AAChB,aAAA,aAAa,CAAC,MAAM,yCAAa,EAAE,CAAC,IAAI,GAAG,EAAA;AAEhD,QAAA,QAAQ,MAAM,SAAS,YAAY;AAGrC,SAAA,qBAAC,OAAI,EAAA,WAAU,mCACX,UAAA;AAAA,IAAA,oBAAC,OAAM,EAAA,MAAY,OAAc,OAAc,cAA4B;AAAA,IAC3E;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACH,GAAG,EAAE,CAAC,QAAQ,GAAG,SAAS,GAAG;AAAA,QAC9B,WAAW,GAAG,UAAU,eAAe,eAAe,EAAE,IAAI,WAAW,SAAS;AAAA,QAChF,UAAU,CAAC,MAAM,SAAS,eAAe,CAAC,CAAC;AAAA,QAE1C;AAAA,MAAA;AAAA,IACL;AAAA,IACC,CAAC,aACG,oBAAA,QAAA,EAAK,eAAe,OAAO,WAAU,cAAa,OAAO,EAAE,OAAO,OAAA,GAC9D,UACL,MAAA,CAAA;AAAA,EAAA,GAER;AAER,CAAC;AAQY,MAAA,QAAQ,KAAiB,SAASC,OAAM,EAAE,KAAK,KAAK,OAAO,KAAK,GAAG,SAAS;AAEjF,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAY;AAAA,QACR,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,gBAAgB,CAAC,MAAM,WAAW,EAAE,OAAO,KAAK;AAAA,MACpD;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACR;AAER,CAAC;AAEM,MAAM,WAAW,KAAmB,SAASC,UAAS,OAAO;AAE5D,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAY,EAAE,MAAM,YAAY,UAAU,WAAW,gBAAgB,CAAC,MAAM,EAAE,OAAO,QAAQ;AAAA,MAC5F,GAAG;AAAA,IAAA;AAAA,EACR;AAER,CAAC;AAEY,MAAA,SAAS,KAAmB,SAASC,QAAO,EAAE,UAAU,GAAG,SAAS;AAC7E,SACK,oBAAA,SAAA,EAAQ,YAAY,EAAE,KAAK,UAAU,WAAW,cAAA,GAAkB,GAAG,OAAO,WAAW,MACnF,SACL,CAAA;AAER,CAAC;"}
@@ -0,0 +1,7 @@
1
+ import { ButtonProps } from 'react-bootstrap';
2
+ export declare function ErrorAlert({ onRetry, children, buttonProps, ...props }: {
3
+ children?: Error | string | any;
4
+ onRetry?: () => any;
5
+ buttonProps?: ButtonProps;
6
+ }): import("react/jsx-runtime").JSX.Element | null;
7
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/bootstrap/error.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA6B,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGzE,wBAAgB,UAAU,CAAC,EACvB,OAAO,EACP,QAAQ,EACR,WAAW,EACX,GAAG,KAAK,EACX,EAAE;IACC,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,GAAG,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,kDAwBA"}
@@ -0,0 +1,31 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Alert, Button } from "react-bootstrap";
3
+ function ErrorAlert({
4
+ onRetry,
5
+ children,
6
+ buttonProps,
7
+ ...props
8
+ }) {
9
+ if (!children) return null;
10
+ return /* @__PURE__ */ jsxs(Alert, { variant: "danger", ...props, children: [
11
+ /* @__PURE__ */ jsx("div", { children: children.message || children.toString() }),
12
+ onRetry && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
13
+ Button,
14
+ {
15
+ variant: "link",
16
+ className: "alert-link",
17
+ ...buttonProps,
18
+ onClick: (e) => {
19
+ e.preventDefault();
20
+ e.stopPropagation();
21
+ onRetry();
22
+ },
23
+ children: "Retry"
24
+ }
25
+ ) })
26
+ ] });
27
+ }
28
+ export {
29
+ ErrorAlert
30
+ };
31
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sources":["../../src/bootstrap/error.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Alert, AlertProps, Button, ButtonProps } from 'react-bootstrap';\n\n//TODO Create MUI-specific?\nexport function ErrorAlert({\n onRetry,\n children,\n buttonProps,\n ...props\n}: {\n children?: Error | string | any;\n onRetry?: () => any;\n buttonProps?: ButtonProps;\n}) {\n if (!children) return null;\n\n return (\n <Alert variant=\"danger\" {...props}>\n <div>{children.message || children.toString()}</div>\n {onRetry && (\n <div>\n <Button\n variant=\"link\"\n className=\"alert-link\"\n {...buttonProps}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onRetry();\n }}\n >\n Retry\n </Button>\n </div>\n )}\n </Alert>\n );\n}\n"],"names":[],"mappings":";;AAMO,SAAS,WAAW;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAIG;AACK,MAAA,CAAC,SAAiB,QAAA;AAEtB,SACK,qBAAA,OAAA,EAAM,SAAQ,UAAU,GAAG,OACxB,UAAA;AAAA,IAAA,oBAAC,OAAK,EAAA,UAAA,SAAS,WAAW,SAAS,YAAW;AAAA,IAC7C,+BACI,OACG,EAAA,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,SAAQ;AAAA,QACR,WAAU;AAAA,QACT,GAAG;AAAA,QACJ,SAAS,CAAC,MAAM;AACZ,YAAE,eAAe;AACjB,YAAE,gBAAgB;AACV,kBAAA;AAAA,QACZ;AAAA,QACH,UAAA;AAAA,MAAA;AAAA,IAAA,EAGL,CAAA;AAAA,EAAA,GAER;AAER;"}
@@ -0,0 +1,9 @@
1
+ import { FormGroupProps, FormLabelProps, FormTextProps } from 'react-bootstrap';
2
+ export declare function FieldGroup({ label, labelProps, text, textProps, horizontal, children, ...props }: FormGroupProps & {
3
+ label?: any;
4
+ labelProps?: FormLabelProps;
5
+ text?: any;
6
+ textProps?: FormTextProps;
7
+ horizontal?: boolean;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/bootstrap/field.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEtF,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,UAAe,EACf,IAAI,EACJ,SAAc,EACd,UAAU,EACV,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,cAAc,GAAG;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB,2CAiBA"}
@@ -0,0 +1,29 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Form } from "react-bootstrap";
3
+ function FieldGroup({
4
+ label,
5
+ labelProps = {},
6
+ text,
7
+ textProps = {},
8
+ horizontal,
9
+ children,
10
+ ...props
11
+ }) {
12
+ if (horizontal) {
13
+ props.className = "hstack gap-3 " + (props.className || "");
14
+ labelProps.className = "m-0 " + (labelProps.className || "");
15
+ }
16
+ if (text && horizontal) {
17
+ throw new Error("Cannot use text and horizontal together");
18
+ }
19
+ return /* @__PURE__ */ jsxs(Form.Group, { ...props, children: [
20
+ label && /* @__PURE__ */ jsx(Form.Label, { ...labelProps, children: label }),
21
+ children,
22
+ text && !horizontal && /* @__PURE__ */ jsx(Form.Text, { ...textProps, children: text }),
23
+ " "
24
+ ] });
25
+ }
26
+ export {
27
+ FieldGroup
28
+ };
29
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sources":["../../src/bootstrap/field.tsx"],"sourcesContent":["import React from 'react';\nimport { Form, FormGroupProps, FormLabelProps, FormTextProps } from 'react-bootstrap';\n\nexport function FieldGroup({\n label,\n labelProps = {},\n text,\n textProps = {},\n horizontal,\n children,\n ...props\n}: FormGroupProps & {\n label?: any;\n labelProps?: FormLabelProps;\n text?: any;\n textProps?: FormTextProps;\n horizontal?: boolean;\n}) {\n if (horizontal) {\n props.className = 'hstack gap-3 ' + (props.className || '');\n labelProps.className = 'm-0 ' + (labelProps.className || '');\n }\n\n if (text && horizontal) {\n throw new Error('Cannot use text and horizontal together');\n }\n\n return (\n <Form.Group {...props}>\n {label && <Form.Label {...labelProps}>{label}</Form.Label>}\n {children}\n {text && !horizontal && <Form.Text {...textProps}>{text}</Form.Text>}{' '}\n </Form.Group>\n );\n}\n"],"names":[],"mappings":";;AAGO,SAAS,WAAW;AAAA,EACvB;AAAA,EACA,aAAa,CAAC;AAAA,EACd;AAAA,EACA,YAAY,CAAC;AAAA,EACb;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAMG;AACC,MAAI,YAAY;AACN,UAAA,YAAY,mBAAmB,MAAM,aAAa;AAC7C,eAAA,YAAY,UAAU,WAAW,aAAa;AAAA,EAAA;AAG7D,MAAI,QAAQ,YAAY;AACd,UAAA,IAAI,MAAM,yCAAyC;AAAA,EAAA;AAG7D,SACK,qBAAA,KAAK,OAAL,EAAY,GAAG,OACX,UAAA;AAAA,IAAA,6BAAU,KAAK,OAAL,EAAY,GAAG,YAAa,UAAM,OAAA;AAAA,IAC5C;AAAA,IACA,QAAQ,CAAC,cAAc,oBAAC,KAAK,MAAL,EAAW,GAAG,WAAY,UAAK,MAAA;AAAA,IAAc;AAAA,EAAA,GAC1E;AAER;"}
@@ -0,0 +1,10 @@
1
+ export declare function FooterNavItem({ href, icon, active, children }: {
2
+ href: any;
3
+ icon: any;
4
+ active?: boolean | undefined;
5
+ children?: string | undefined;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export declare function Footer({ children }: {
8
+ children: any;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../src/bootstrap/footer.tsx"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAc,EAAE,QAAa,EAAE;;;;;CAAA,2CA2B1E;AAED,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE;;CAAA,2CAclC"}
@@ -0,0 +1,40 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Nav, Navbar } from "react-bootstrap";
3
+ import { useBreakpoint } from "./responsiveHelper.js";
4
+ import { AdaptiveContainer } from "./adaptiveContainer.js";
5
+ function FooterNavItem({ href, icon, active = false, children = "" }) {
6
+ const isFilepath = icon.includes(".");
7
+ let iconElement;
8
+ if (isFilepath) {
9
+ iconElement = /* @__PURE__ */ jsx("img", { src: icon, alt: "icon", className: "me-lg-2" });
10
+ } else {
11
+ iconElement = /* @__PURE__ */ jsx("span", { className: `lead me-lg-2 ${icon}` });
12
+ }
13
+ const link = /* @__PURE__ */ jsxs(
14
+ Nav.Link,
15
+ {
16
+ href,
17
+ className: `px-0 px-lg-3 d-flex align-items-center flex-column flex-lg-row ${active ? "text-primary" : ""}`,
18
+ children: [
19
+ iconElement,
20
+ children
21
+ ]
22
+ }
23
+ );
24
+ return /* @__PURE__ */ jsx(Nav.Item, { style: { flex: 1 }, children: link });
25
+ }
26
+ function Footer({ children }) {
27
+ const { isDesktop } = useBreakpoint();
28
+ return (
29
+ // border-bottom
30
+ /* @__PURE__ */ jsx("div", { className: isDesktop ? "" : "border-top", children: /* @__PURE__ */ jsx(Navbar, { className: isDesktop ? "" : "py-0", children: /* @__PURE__ */ jsxs(AdaptiveContainer, { children: [
31
+ isDesktop && /* @__PURE__ */ jsx(Navbar.Brand, { href: "/", children: "Le Brand" }),
32
+ /* @__PURE__ */ jsx(Nav, { className: isDesktop ? "me-auto" : "justify-content-center flex-nowrap w-100", children })
33
+ ] }) }) })
34
+ );
35
+ }
36
+ export {
37
+ Footer,
38
+ FooterNavItem
39
+ };
40
+ //# sourceMappingURL=footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.js","sources":["../../src/bootstrap/footer.tsx"],"sourcesContent":["import React from 'react';\nimport { Nav, Navbar } from 'react-bootstrap';\nimport { useBreakpoint } from './responsiveHelper';\nimport { AdaptiveContainer } from './adaptiveContainer';\n\nexport function FooterNavItem({ href, icon, active = false, children = '' }) {\n // const pathname = usePathname();\n\n const isFilepath = icon.includes('.');\n let iconElement;\n\n if (isFilepath) {\n iconElement = <img src={icon} alt=\"icon\" className=\"me-lg-2\" />;\n } else {\n iconElement = <span className={`lead me-lg-2 ${icon}`} />;\n }\n\n // const active = isActivePath(href, pathname);\n\n const link = (\n <Nav.Link\n // as={Link}\n href={href}\n // active={active} // has no effect when not pills or tabs\n className={`px-0 px-lg-3 d-flex align-items-center flex-column flex-lg-row ${active ? 'text-primary' : ''}`}\n >\n {iconElement}\n {children}\n </Nav.Link>\n );\n\n return <Nav.Item style={{ flex: 1 }}>{link}</Nav.Item>;\n}\n\nexport function Footer({ children }) {\n const { isDesktop } = useBreakpoint();\n\n return (\n // border-bottom\n <div className={isDesktop ? '' : 'border-top'}>\n <Navbar className={isDesktop ? '' : 'py-0'}>\n <AdaptiveContainer>\n {isDesktop && <Navbar.Brand href=\"/\">Le Brand</Navbar.Brand>}\n <Nav className={isDesktop ? 'me-auto' : 'justify-content-center flex-nowrap w-100'}>{children}</Nav>\n </AdaptiveContainer>\n </Navbar>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAKgB,SAAA,cAAc,EAAE,MAAM,MAAM,SAAS,OAAO,WAAW,MAAM;AAGnE,QAAA,aAAa,KAAK,SAAS,GAAG;AAChC,MAAA;AAEJ,MAAI,YAAY;AACZ,sCAAe,OAAI,EAAA,KAAK,MAAM,KAAI,QAAO,WAAU,WAAU;AAAA,EAAA,OAC1D;AACH,kBAAe,oBAAA,QAAA,EAAK,WAAW,gBAAgB,IAAI,IAAI;AAAA,EAAA;AAK3D,QAAM,OACF;AAAA,IAAC,IAAI;AAAA,IAAJ;AAAA,MAEG;AAAA,MAEA,WAAW,kEAAkE,SAAS,iBAAiB,EAAE;AAAA,MAExG,UAAA;AAAA,QAAA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EACL;AAGG,SAAA,oBAAC,IAAI,MAAJ,EAAS,OAAO,EAAE,MAAM,EAAE,GAAI,UAAK,MAAA;AAC/C;AAEgB,SAAA,OAAO,EAAE,YAAY;AAC3B,QAAA,EAAE,UAAU,IAAI,cAAc;AAEpC;AAAA;AAAA,IAEK,oBAAA,OAAA,EAAI,WAAW,YAAY,KAAK,cAC7B,UAAC,oBAAA,QAAA,EAAO,WAAW,YAAY,KAAK,QAChC,+BAAC,mBACI,EAAA,UAAA;AAAA,MAAA,iCAAc,OAAO,OAAP,EAAa,MAAK,KAAI,UAAQ,YAAA;AAAA,0BAC5C,KAAI,EAAA,WAAW,YAAY,YAAY,4CAA6C,SAAS,CAAA;AAAA,IAAA,EAClG,CAAA,EACJ,CAAA,EACJ,CAAA;AAAA;AAER;"}
@@ -0,0 +1,4 @@
1
+ export declare function GlobalLoading({ loading }: {
2
+ loading: boolean;
3
+ }): import("react/jsx-runtime").JSX.Element | null;
4
+ //# sourceMappingURL=globalLoading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalLoading.d.ts","sourceRoot":"","sources":["../../src/bootstrap/globalLoading.tsx"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,kDAY9D"}
@@ -0,0 +1,10 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Loading } from "./loading.js";
3
+ function GlobalLoading({ loading }) {
4
+ if (!loading) return null;
5
+ return /* @__PURE__ */ jsx("div", { className: "bg-white position-absolute top-0 start-0 w-100 h-100 z-3 d-flex align-items-center justify-content-center", children: /* @__PURE__ */ jsx(Loading, {}) });
6
+ }
7
+ export {
8
+ GlobalLoading
9
+ };
10
+ //# sourceMappingURL=globalLoading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalLoading.js","sources":["../../src/bootstrap/globalLoading.tsx"],"sourcesContent":["import React from 'react';\n// import { useLoading, useLoadingTimeout } from '../redux/loadingSlice';\nimport { Loading } from './loading';\n\nexport function GlobalLoading({ loading }: { loading: boolean }) {\n // const { loading } = useLoading();\n\n // useLoadingTimeout(15000); // escape latch if something is stuck\n\n if (!loading) return null;\n\n return (\n <div className=\"bg-white position-absolute top-0 start-0 w-100 h-100 z-3 d-flex align-items-center justify-content-center\">\n <Loading />\n </div>\n );\n}\n"],"names":[],"mappings":";;AAIgB,SAAA,cAAc,EAAE,WAAiC;AAKzD,MAAA,CAAC,QAAgB,QAAA;AAErB,6BACK,OAAI,EAAA,WAAU,6GACX,UAAA,oBAAC,UAAQ,CAAA,GACb;AAER;"}
@@ -0,0 +1,13 @@
1
+ export * from './adaptiveContainer';
2
+ export * from './controls';
3
+ export * from './error';
4
+ export * from './field';
5
+ export * from './footer';
6
+ export * from './globalLoading';
7
+ export * from './loading';
8
+ export * from './responsiveHelper';
9
+ export * from './screen';
10
+ export * from './toaster';
11
+ export * from './useModal';
12
+ export * from './useWrappedForm';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { AdaptiveContainer } from "./adaptiveContainer.js";
2
+ import { Checkbox, Control, Range, Select } from "./controls.js";
3
+ import { ErrorAlert } from "./error.js";
4
+ import { FieldGroup } from "./field.js";
5
+ import { Footer, FooterNavItem } from "./footer.js";
6
+ import { GlobalLoading } from "./globalLoading.js";
7
+ import { Loading } from "./loading.js";
8
+ import { ResponsiveHelperBS, useBreakpoint } from "./responsiveHelper.js";
9
+ import { Screen } from "./screen.js";
10
+ import { Toaster } from "./toaster.js";
11
+ import { useModal } from "./useModal.js";
12
+ import { isFormLoading, stopPropagation, useWrappedForm } from "./useWrappedForm.js";
13
+ export {
14
+ AdaptiveContainer,
15
+ Checkbox,
16
+ Control,
17
+ ErrorAlert,
18
+ FieldGroup,
19
+ Footer,
20
+ FooterNavItem,
21
+ GlobalLoading,
22
+ Loading,
23
+ Range,
24
+ ResponsiveHelperBS,
25
+ Screen,
26
+ Select,
27
+ Toaster,
28
+ isFormLoading,
29
+ stopPropagation,
30
+ useBreakpoint,
31
+ useModal,
32
+ useWrappedForm
33
+ };
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -0,0 +1,8 @@
1
+ import { SpinnerProps } from 'react-bootstrap';
2
+ export declare function Loading({ children, show, className, size, }: {
3
+ children?: any;
4
+ show?: boolean;
5
+ className?: string;
6
+ size?: SpinnerProps['size'];
7
+ }): import("react/jsx-runtime").JSX.Element | null;
8
+ //# sourceMappingURL=loading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading.d.ts","sourceRoot":"","sources":["../../src/bootstrap/loading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAS,MAAM,iBAAiB,CAAC;AAG/D,wBAAgB,OAAO,CAAC,EACpB,QAA8B,EAC9B,IAAW,EACX,SAAc,EACd,IAAI,GACP,EAAE;IACC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC/B,kDAQA"}
@@ -0,0 +1,18 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Stack, Spinner } from "react-bootstrap";
3
+ function Loading({
4
+ children = "Loading...",
5
+ show = true,
6
+ className = "",
7
+ size
8
+ }) {
9
+ if (!show) return null;
10
+ return /* @__PURE__ */ jsxs(Stack, { direction: "horizontal", gap: 3, className: `align-self-auto ${className}`, children: [
11
+ /* @__PURE__ */ jsx(Spinner, { animation: "border", role: "status", size }),
12
+ /* @__PURE__ */ jsx("span", { children })
13
+ ] });
14
+ }
15
+ export {
16
+ Loading
17
+ };
18
+ //# sourceMappingURL=loading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading.js","sources":["../../src/bootstrap/loading.tsx"],"sourcesContent":["import { Spinner, SpinnerProps, Stack } from 'react-bootstrap';\nimport React from 'react';\n\nexport function Loading({\n children = 'Loading...' as any,\n show = true,\n className = '',\n size,\n}: {\n children?: any;\n show?: boolean;\n className?: string;\n size?: SpinnerProps['size'];\n}) {\n if (!show) return null;\n return (\n <Stack direction=\"horizontal\" gap={3} className={`align-self-auto ${className}`}>\n <Spinner animation=\"border\" role=\"status\" size={size as any} />\n <span>{children}</span>\n </Stack>\n );\n}\n"],"names":[],"mappings":";;AAGO,SAAS,QAAQ;AAAA,EACpB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AACJ,GAKG;AACK,MAAA,CAAC,KAAa,QAAA;AAEd,SAAA,qBAAC,SAAM,WAAU,cAAa,KAAK,GAAG,WAAW,mBAAmB,SAAS,IACzE,UAAA;AAAA,IAAA,oBAAC,SAAQ,EAAA,WAAU,UAAS,MAAK,UAAS,MAAmB;AAAA,IAC7D,oBAAC,UAAM,SAAS,CAAA;AAAA,EAAA,GACpB;AAER;"}
@@ -0,0 +1,7 @@
1
+ export declare function useBreakpoint(): {
2
+ breakpoint: string;
3
+ isMobile: boolean;
4
+ isDesktop: boolean;
5
+ };
6
+ export declare function ResponsiveHelperBS(): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=responsiveHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsiveHelper.d.ts","sourceRoot":"","sources":["../../src/bootstrap/responsiveHelper.tsx"],"names":[],"mappings":"AAIA,wBAAgB,aAAa;;;;EAgC5B;AAED,wBAAgB,kBAAkB,4CAWjC"}
@@ -0,0 +1,45 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ function useBreakpoint() {
4
+ const [breakpoint, setBreakpoint] = React.useState("xs");
5
+ React.useEffect(() => {
6
+ const updateBreakpoint = () => {
7
+ const width = window.innerWidth;
8
+ if (width < 576) {
9
+ setBreakpoint("xs");
10
+ } else if (width < 768) {
11
+ setBreakpoint("sm");
12
+ } else if (width < 992) {
13
+ setBreakpoint("md");
14
+ } else if (width < 1200) {
15
+ setBreakpoint("lg");
16
+ } else if (width < 1400) {
17
+ setBreakpoint("xl");
18
+ } else {
19
+ setBreakpoint("xxl");
20
+ }
21
+ };
22
+ updateBreakpoint();
23
+ window.addEventListener("resize", updateBreakpoint);
24
+ return () => {
25
+ window.removeEventListener("resize", updateBreakpoint);
26
+ };
27
+ }, []);
28
+ const isMobile = ["xs", "sm", "md"].includes(breakpoint);
29
+ return { breakpoint, isMobile, isDesktop: !isMobile };
30
+ }
31
+ function ResponsiveHelperBS() {
32
+ return /* @__PURE__ */ jsxs("span", { className: "small position-fixed bottom-0 z-3", style: { fontSize: "9px", right: 1, lineHeight: 1 }, children: [
33
+ /* @__PURE__ */ jsx("small", { className: "d-block d-sm-none", children: "XS" }),
34
+ /* @__PURE__ */ jsx("small", { className: "d-none d-sm-block d-md-none", children: "SM" }),
35
+ /* @__PURE__ */ jsx("small", { className: "d-none d-md-block d-lg-none", children: "MD" }),
36
+ /* @__PURE__ */ jsx("small", { className: "d-none d-lg-block d-xl-none", children: "LG" }),
37
+ /* @__PURE__ */ jsx("small", { className: "d-none d-xl-block d-xxl-none", children: "XL" }),
38
+ /* @__PURE__ */ jsx("small", { className: "d-none d-xxl-block", children: "XXL" })
39
+ ] });
40
+ }
41
+ export {
42
+ ResponsiveHelperBS,
43
+ useBreakpoint
44
+ };
45
+ //# sourceMappingURL=responsiveHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsiveHelper.js","sources":["../../src/bootstrap/responsiveHelper.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nexport function useBreakpoint() {\n const [breakpoint, setBreakpoint] = React.useState('xs');\n\n React.useEffect(() => {\n const updateBreakpoint = () => {\n const width = window.innerWidth;\n if (width < 576) {\n setBreakpoint('xs');\n } else if (width < 768) {\n setBreakpoint('sm');\n } else if (width < 992) {\n setBreakpoint('md');\n } else if (width < 1200) {\n setBreakpoint('lg');\n } else if (width < 1400) {\n setBreakpoint('xl');\n } else {\n setBreakpoint('xxl');\n }\n };\n\n updateBreakpoint();\n window.addEventListener('resize', updateBreakpoint);\n\n return () => {\n window.removeEventListener('resize', updateBreakpoint);\n };\n }, []);\n\n const isMobile = ['xs', 'sm', 'md'].includes(breakpoint);\n\n return { breakpoint, isMobile, isDesktop: !isMobile };\n}\n\nexport function ResponsiveHelperBS() {\n return (\n <span className=\"small position-fixed bottom-0 z-3\" style={{ fontSize: '9px', right: 1, lineHeight: 1 }}>\n <small className=\"d-block d-sm-none\">XS</small>\n <small className=\"d-none d-sm-block d-md-none\">SM</small>\n <small className=\"d-none d-md-block d-lg-none\">MD</small>\n <small className=\"d-none d-lg-block d-xl-none\">LG</small>\n <small className=\"d-none d-xl-block d-xxl-none\">XL</small>\n <small className=\"d-none d-xxl-block\">XXL</small>\n </span>\n );\n}\n"],"names":[],"mappings":";;AAIO,SAAS,gBAAgB;AAC5B,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,IAAI;AAEvD,QAAM,UAAU,MAAM;AAClB,UAAM,mBAAmB,MAAM;AAC3B,YAAM,QAAQ,OAAO;AACrB,UAAI,QAAQ,KAAK;AACb,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,KAAK;AACpB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,KAAK;AACpB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,MAAM;AACrB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,MAAM;AACrB,sBAAc,IAAI;AAAA,MAAA,OACf;AACH,sBAAc,KAAK;AAAA,MAAA;AAAA,IAE3B;AAEiB,qBAAA;AACV,WAAA,iBAAiB,UAAU,gBAAgB;AAElD,WAAO,MAAM;AACF,aAAA,oBAAoB,UAAU,gBAAgB;AAAA,IACzD;AAAA,EACJ,GAAG,EAAE;AAEL,QAAM,WAAW,CAAC,MAAM,MAAM,IAAI,EAAE,SAAS,UAAU;AAEvD,SAAO,EAAE,YAAY,UAAU,WAAW,CAAC,SAAS;AACxD;AAEO,SAAS,qBAAqB;AACjC,SACK,qBAAA,QAAA,EAAK,WAAU,qCAAoC,OAAO,EAAE,UAAU,OAAO,OAAO,GAAG,YAAY,EAAA,GAChG,UAAA;AAAA,IAAC,oBAAA,SAAA,EAAM,WAAU,qBAAoB,UAAE,MAAA;AAAA,IACtC,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,gCAA+B,UAAE,MAAA;AAAA,IACjD,oBAAA,SAAA,EAAM,WAAU,sBAAqB,UAAG,MAAA,CAAA;AAAA,EAAA,GAC7C;AAER;"}
@@ -0,0 +1,20 @@
1
+ export declare function Screen({ backBtn, backCb, backIcon, forwardBtn, forwardIcon, forwardCb, footer, menu, header, children, noContentPadding, contentClassName, title, centerContent, noHeader, noFooter, noMenu, }: {
2
+ backBtn?: any;
3
+ backCb?: any;
4
+ backIcon?: any;
5
+ forwardBtn?: any;
6
+ forwardIcon?: any;
7
+ forwardCb?: any;
8
+ children: any;
9
+ contentClassName?: string;
10
+ noContentPadding?: boolean;
11
+ header?: any;
12
+ footer?: any;
13
+ menu?: any;
14
+ title?: any;
15
+ centerContent?: boolean;
16
+ noHeader?: boolean;
17
+ noFooter?: boolean;
18
+ noMenu?: boolean;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=screen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/bootstrap/screen.tsx"],"names":[],"mappings":"AAMA,wBAAgB,MAAM,CAAC,EACnB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,gBAAwB,EACxB,gBAAqB,EACrB,KAAU,EACV,aAAqB,EACrB,QAAgB,EAChB,QAAgB,EAChB,MAAc,GAEjB,EAAE;IACC,OAAO,CAAC,MAAC;IACT,MAAM,CAAC,MAAC;IACR,QAAQ,CAAC,MAAC;IACV,UAAU,CAAC,MAAC;IACZ,WAAW,CAAC,MAAC;IACb,SAAS,CAAC,MAAC;IACX,QAAQ,EAAE,GAAG,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAEpB,2CAmGA"}