analytica-frontend-lib 1.1.18 → 1.1.19

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.
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Device type based on screen width
3
+ */
4
+ type DeviceType = 'responsive' | 'desktop';
5
+ /**
6
+ * Gets the current device type based on screen width
7
+ * @returns {DeviceType} 'responsive' for mobile/tablet (width < 931px), 'desktop' for larger screens
8
+ */
9
+ declare const getDeviceType: () => DeviceType;
10
+ /**
11
+ * Hook to detect screen size and get responsive classes
12
+ * @returns object with isMobile, isTablet, responsive class functions and getDeviceType
13
+ */
14
+ declare const useMobile: () => {
15
+ isMobile: boolean;
16
+ isTablet: boolean;
17
+ getFormContainerClasses: () => string;
18
+ getHeaderClasses: () => string;
19
+ getMobileHeaderClasses: () => string;
20
+ getDesktopHeaderClasses: () => string;
21
+ getDeviceType: () => DeviceType;
22
+ };
23
+
24
+ export { type DeviceType, getDeviceType, useMobile };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Device type based on screen width
3
+ */
4
+ type DeviceType = 'responsive' | 'desktop';
5
+ /**
6
+ * Gets the current device type based on screen width
7
+ * @returns {DeviceType} 'responsive' for mobile/tablet (width < 931px), 'desktop' for larger screens
8
+ */
9
+ declare const getDeviceType: () => DeviceType;
10
+ /**
11
+ * Hook to detect screen size and get responsive classes
12
+ * @returns object with isMobile, isTablet, responsive class functions and getDeviceType
13
+ */
14
+ declare const useMobile: () => {
15
+ isMobile: boolean;
16
+ isTablet: boolean;
17
+ getFormContainerClasses: () => string;
18
+ getHeaderClasses: () => string;
19
+ getMobileHeaderClasses: () => string;
20
+ getDesktopHeaderClasses: () => string;
21
+ getDeviceType: () => DeviceType;
22
+ };
23
+
24
+ export { type DeviceType, getDeviceType, useMobile };
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/hooks/useMobile.ts
21
+ var useMobile_exports = {};
22
+ __export(useMobile_exports, {
23
+ getDeviceType: () => getDeviceType,
24
+ useMobile: () => useMobile
25
+ });
26
+ module.exports = __toCommonJS(useMobile_exports);
27
+ var import_react = require("react");
28
+ var MOBILE_WIDTH = 500;
29
+ var TABLET_WIDTH = 931;
30
+ var DEFAULT_WIDTH = 1200;
31
+ var getWindowWidth = () => {
32
+ if (typeof window === "undefined") {
33
+ return DEFAULT_WIDTH;
34
+ }
35
+ return window.innerWidth;
36
+ };
37
+ var getDeviceType = () => {
38
+ const width = getWindowWidth();
39
+ return width < TABLET_WIDTH ? "responsive" : "desktop";
40
+ };
41
+ var useMobile = () => {
42
+ const [isMobile, setIsMobile] = (0, import_react.useState)(false);
43
+ const [isTablet, setIsTablet] = (0, import_react.useState)(false);
44
+ (0, import_react.useEffect)(() => {
45
+ const checkScreenSize = () => {
46
+ const width = getWindowWidth();
47
+ setIsMobile(width < MOBILE_WIDTH);
48
+ setIsTablet(width < TABLET_WIDTH);
49
+ };
50
+ checkScreenSize();
51
+ window.addEventListener("resize", checkScreenSize);
52
+ return () => window.removeEventListener("resize", checkScreenSize);
53
+ }, []);
54
+ const getFormContainerClasses = () => {
55
+ if (isMobile) {
56
+ return "w-full px-4";
57
+ }
58
+ if (isTablet) {
59
+ return "w-full px-6";
60
+ }
61
+ return "w-full max-w-[992px] mx-auto px-0";
62
+ };
63
+ const getMobileHeaderClasses = () => {
64
+ return "flex flex-col items-start gap-4 mb-6";
65
+ };
66
+ const getDesktopHeaderClasses = () => {
67
+ return "flex flex-row justify-between items-center gap-6 mb-8";
68
+ };
69
+ const getHeaderClasses = () => {
70
+ return isMobile ? getMobileHeaderClasses() : getDesktopHeaderClasses();
71
+ };
72
+ return {
73
+ isMobile,
74
+ isTablet,
75
+ getFormContainerClasses,
76
+ getHeaderClasses,
77
+ getMobileHeaderClasses,
78
+ getDesktopHeaderClasses,
79
+ getDeviceType
80
+ };
81
+ };
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ getDeviceType,
85
+ useMobile
86
+ });
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useMobile.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\n// Mobile width in pixels\nconst MOBILE_WIDTH = 500;\n// Tablet width in pixels\nconst TABLET_WIDTH = 931;\n// Default desktop width for SSR\nconst DEFAULT_WIDTH = 1200;\n\n/**\n * Device type based on screen width\n */\nexport type DeviceType = 'responsive' | 'desktop';\n\n/**\n * Gets the window width safely (SSR compatible)\n * @returns {number} window width or default value for SSR\n */\nconst getWindowWidth = (): number => {\n if (typeof window === 'undefined') {\n return DEFAULT_WIDTH;\n }\n return window.innerWidth;\n};\n\n/**\n * Gets the current device type based on screen width\n * @returns {DeviceType} 'responsive' for mobile/tablet (width < 931px), 'desktop' for larger screens\n */\nexport const getDeviceType = (): DeviceType => {\n const width = getWindowWidth();\n return width < TABLET_WIDTH ? 'responsive' : 'desktop';\n};\n\n/**\n * Hook to detect screen size and get responsive classes\n * @returns object with isMobile, isTablet, responsive class functions and getDeviceType\n */\nexport const useMobile = () => {\n const [isMobile, setIsMobile] = useState(false);\n const [isTablet, setIsTablet] = useState(false);\n\n useEffect(() => {\n const checkScreenSize = () => {\n const width = getWindowWidth();\n setIsMobile(width < MOBILE_WIDTH);\n setIsTablet(width < TABLET_WIDTH);\n };\n\n checkScreenSize();\n\n window.addEventListener('resize', checkScreenSize);\n\n return () => window.removeEventListener('resize', checkScreenSize);\n }, []);\n\n /**\n * Get responsive classes for the form container\n * @returns className string for form container based on screen size\n */\n const getFormContainerClasses = (): string => {\n if (isMobile) {\n return 'w-full px-4';\n }\n if (isTablet) {\n return 'w-full px-6';\n }\n return 'w-full max-w-[992px] mx-auto px-0';\n };\n\n /**\n * Get mobile-specific classes for the header\n * @returns className string for mobile header layout\n */\n const getMobileHeaderClasses = (): string => {\n return 'flex flex-col items-start gap-4 mb-6';\n };\n\n /**\n * Get desktop-specific classes for the header\n * @returns className string for desktop header layout\n */\n const getDesktopHeaderClasses = (): string => {\n return 'flex flex-row justify-between items-center gap-6 mb-8';\n };\n\n /**\n * Get responsive classes for the header\n * @returns className string for header based on screen size\n */\n const getHeaderClasses = (): string => {\n return isMobile ? getMobileHeaderClasses() : getDesktopHeaderClasses();\n };\n\n return {\n isMobile,\n isTablet,\n getFormContainerClasses,\n getHeaderClasses,\n getMobileHeaderClasses,\n getDesktopHeaderClasses,\n getDeviceType,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAoC;AAGpC,IAAM,eAAe;AAErB,IAAM,eAAe;AAErB,IAAM,gBAAgB;AAWtB,IAAM,iBAAiB,MAAc;AACnC,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAChB;AAMO,IAAM,gBAAgB,MAAkB;AAC7C,QAAM,QAAQ,eAAe;AAC7B,SAAO,QAAQ,eAAe,eAAe;AAC/C;AAMO,IAAM,YAAY,MAAM;AAC7B,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAC9C,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAE9C,8BAAU,MAAM;AACd,UAAM,kBAAkB,MAAM;AAC5B,YAAM,QAAQ,eAAe;AAC7B,kBAAY,QAAQ,YAAY;AAChC,kBAAY,QAAQ,YAAY;AAAA,IAClC;AAEA,oBAAgB;AAEhB,WAAO,iBAAiB,UAAU,eAAe;AAEjD,WAAO,MAAM,OAAO,oBAAoB,UAAU,eAAe;AAAA,EACnE,GAAG,CAAC,CAAC;AAML,QAAM,0BAA0B,MAAc;AAC5C,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AACA,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAMA,QAAM,yBAAyB,MAAc;AAC3C,WAAO;AAAA,EACT;AAMA,QAAM,0BAA0B,MAAc;AAC5C,WAAO;AAAA,EACT;AAMA,QAAM,mBAAmB,MAAc;AACrC,WAAO,WAAW,uBAAuB,IAAI,wBAAwB;AAAA,EACvE;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,61 @@
1
+ // src/hooks/useMobile.ts
2
+ import { useState, useEffect } from "react";
3
+ var MOBILE_WIDTH = 500;
4
+ var TABLET_WIDTH = 931;
5
+ var DEFAULT_WIDTH = 1200;
6
+ var getWindowWidth = () => {
7
+ if (typeof window === "undefined") {
8
+ return DEFAULT_WIDTH;
9
+ }
10
+ return window.innerWidth;
11
+ };
12
+ var getDeviceType = () => {
13
+ const width = getWindowWidth();
14
+ return width < TABLET_WIDTH ? "responsive" : "desktop";
15
+ };
16
+ var useMobile = () => {
17
+ const [isMobile, setIsMobile] = useState(false);
18
+ const [isTablet, setIsTablet] = useState(false);
19
+ useEffect(() => {
20
+ const checkScreenSize = () => {
21
+ const width = getWindowWidth();
22
+ setIsMobile(width < MOBILE_WIDTH);
23
+ setIsTablet(width < TABLET_WIDTH);
24
+ };
25
+ checkScreenSize();
26
+ window.addEventListener("resize", checkScreenSize);
27
+ return () => window.removeEventListener("resize", checkScreenSize);
28
+ }, []);
29
+ const getFormContainerClasses = () => {
30
+ if (isMobile) {
31
+ return "w-full px-4";
32
+ }
33
+ if (isTablet) {
34
+ return "w-full px-6";
35
+ }
36
+ return "w-full max-w-[992px] mx-auto px-0";
37
+ };
38
+ const getMobileHeaderClasses = () => {
39
+ return "flex flex-col items-start gap-4 mb-6";
40
+ };
41
+ const getDesktopHeaderClasses = () => {
42
+ return "flex flex-row justify-between items-center gap-6 mb-8";
43
+ };
44
+ const getHeaderClasses = () => {
45
+ return isMobile ? getMobileHeaderClasses() : getDesktopHeaderClasses();
46
+ };
47
+ return {
48
+ isMobile,
49
+ isTablet,
50
+ getFormContainerClasses,
51
+ getHeaderClasses,
52
+ getMobileHeaderClasses,
53
+ getDesktopHeaderClasses,
54
+ getDeviceType
55
+ };
56
+ };
57
+ export {
58
+ getDeviceType,
59
+ useMobile
60
+ };
61
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useMobile.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\n// Mobile width in pixels\nconst MOBILE_WIDTH = 500;\n// Tablet width in pixels\nconst TABLET_WIDTH = 931;\n// Default desktop width for SSR\nconst DEFAULT_WIDTH = 1200;\n\n/**\n * Device type based on screen width\n */\nexport type DeviceType = 'responsive' | 'desktop';\n\n/**\n * Gets the window width safely (SSR compatible)\n * @returns {number} window width or default value for SSR\n */\nconst getWindowWidth = (): number => {\n if (typeof window === 'undefined') {\n return DEFAULT_WIDTH;\n }\n return window.innerWidth;\n};\n\n/**\n * Gets the current device type based on screen width\n * @returns {DeviceType} 'responsive' for mobile/tablet (width < 931px), 'desktop' for larger screens\n */\nexport const getDeviceType = (): DeviceType => {\n const width = getWindowWidth();\n return width < TABLET_WIDTH ? 'responsive' : 'desktop';\n};\n\n/**\n * Hook to detect screen size and get responsive classes\n * @returns object with isMobile, isTablet, responsive class functions and getDeviceType\n */\nexport const useMobile = () => {\n const [isMobile, setIsMobile] = useState(false);\n const [isTablet, setIsTablet] = useState(false);\n\n useEffect(() => {\n const checkScreenSize = () => {\n const width = getWindowWidth();\n setIsMobile(width < MOBILE_WIDTH);\n setIsTablet(width < TABLET_WIDTH);\n };\n\n checkScreenSize();\n\n window.addEventListener('resize', checkScreenSize);\n\n return () => window.removeEventListener('resize', checkScreenSize);\n }, []);\n\n /**\n * Get responsive classes for the form container\n * @returns className string for form container based on screen size\n */\n const getFormContainerClasses = (): string => {\n if (isMobile) {\n return 'w-full px-4';\n }\n if (isTablet) {\n return 'w-full px-6';\n }\n return 'w-full max-w-[992px] mx-auto px-0';\n };\n\n /**\n * Get mobile-specific classes for the header\n * @returns className string for mobile header layout\n */\n const getMobileHeaderClasses = (): string => {\n return 'flex flex-col items-start gap-4 mb-6';\n };\n\n /**\n * Get desktop-specific classes for the header\n * @returns className string for desktop header layout\n */\n const getDesktopHeaderClasses = (): string => {\n return 'flex flex-row justify-between items-center gap-6 mb-8';\n };\n\n /**\n * Get responsive classes for the header\n * @returns className string for header based on screen size\n */\n const getHeaderClasses = (): string => {\n return isMobile ? getMobileHeaderClasses() : getDesktopHeaderClasses();\n };\n\n return {\n isMobile,\n isTablet,\n getFormContainerClasses,\n getHeaderClasses,\n getMobileHeaderClasses,\n getDesktopHeaderClasses,\n getDeviceType,\n };\n};\n"],"mappings":";AAAA,SAAS,UAAU,iBAAiB;AAGpC,IAAM,eAAe;AAErB,IAAM,eAAe;AAErB,IAAM,gBAAgB;AAWtB,IAAM,iBAAiB,MAAc;AACnC,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAChB;AAMO,IAAM,gBAAgB,MAAkB;AAC7C,QAAM,QAAQ,eAAe;AAC7B,SAAO,QAAQ,eAAe,eAAe;AAC/C;AAMO,IAAM,YAAY,MAAM;AAC7B,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,YAAU,MAAM;AACd,UAAM,kBAAkB,MAAM;AAC5B,YAAM,QAAQ,eAAe;AAC7B,kBAAY,QAAQ,YAAY;AAChC,kBAAY,QAAQ,YAAY;AAAA,IAClC;AAEA,oBAAgB;AAEhB,WAAO,iBAAiB,UAAU,eAAe;AAEjD,WAAO,MAAM,OAAO,oBAAoB,UAAU,eAAe;AAAA,EACnE,GAAG,CAAC,CAAC;AAML,QAAM,0BAA0B,MAAc;AAC5C,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AACA,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAMA,QAAM,yBAAyB,MAAc;AAC3C,WAAO;AAAA,EACT;AAMA,QAAM,0BAA0B,MAAc;AAC5C,WAAO;AAAA,EACT;AAMA,QAAM,mBAAmB,MAAc;AACrC,WAAO,WAAW,uBAAuB,IAAI,wBAAwB;AAAA,EACvE;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
package/dist/index.d.mts CHANGED
@@ -30,6 +30,7 @@ export { AlternativesList } from './Alternative/index.mjs';
30
30
  export { AlertDialog } from './AlertDialog/index.mjs';
31
31
  export { MultipleChoiceList } from './MultipleChoice/index.mjs';
32
32
  export { default as IconRender } from './IconRender/index.mjs';
33
+ export { DeviceType, getDeviceType, useMobile } from './hooks/useMobile/index.mjs';
33
34
  export { default as DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, MenuLabel, ProfileMenuFooter, ProfileMenuHeader, ProfileMenuSection, ProfileMenuTrigger } from './DropdownMenu/index.mjs';
34
35
  export { default as Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './Select/index.mjs';
35
36
  export { default as Menu, MenuContent, MenuItem, MenuOverflow } from './Menu/index.mjs';
package/dist/index.d.ts CHANGED
@@ -30,6 +30,7 @@ export { AlternativesList } from './Alternative/index.js';
30
30
  export { AlertDialog } from './AlertDialog/index.js';
31
31
  export { MultipleChoiceList } from './MultipleChoice/index.js';
32
32
  export { default as IconRender } from './IconRender/index.js';
33
+ export { DeviceType, getDeviceType, useMobile } from './hooks/useMobile/index.js';
33
34
  export { default as DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, MenuLabel, ProfileMenuFooter, ProfileMenuHeader, ProfileMenuSection, ProfileMenuTrigger } from './DropdownMenu/index.js';
34
35
  export { default as Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './Select/index.js';
35
36
  export { default as Menu, MenuContent, MenuItem, MenuOverflow } from './Menu/index.js';