@datatechsolutions/ui 2.11.1 → 2.11.2
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.
- package/dist/astrlabe/contracts.js +5 -0
- package/dist/astrlabe/contracts.js.map +1 -0
- package/dist/astrlabe/contracts.mjs +4 -0
- package/dist/astrlabe/contracts.mjs.map +1 -0
- package/dist/astrlabe/graph-node.js +26 -0
- package/dist/astrlabe/graph-node.js.map +1 -0
- package/dist/astrlabe/graph-node.mjs +5 -0
- package/dist/astrlabe/graph-node.mjs.map +1 -0
- package/dist/astrlabe/index.js +3247 -0
- package/dist/astrlabe/index.js.map +1 -0
- package/dist/astrlabe/index.mjs +2956 -0
- package/dist/astrlabe/index.mjs.map +1 -0
- package/dist/astrlabe/utils.js +30 -0
- package/dist/astrlabe/utils.js.map +1 -0
- package/dist/astrlabe/utils.mjs +5 -0
- package/dist/astrlabe/utils.mjs.map +1 -0
- package/dist/astrlabe/workflow-canvas.js +19 -0
- package/dist/astrlabe/workflow-canvas.js.map +1 -0
- package/dist/astrlabe/workflow-canvas.mjs +10 -0
- package/dist/astrlabe/workflow-canvas.mjs.map +1 -0
- package/dist/astrlabe/workflow-preview-canvas.js +28 -0
- package/dist/astrlabe/workflow-preview-canvas.js.map +1 -0
- package/dist/astrlabe/workflow-preview-canvas.mjs +26 -0
- package/dist/astrlabe/workflow-preview-canvas.mjs.map +1 -0
- package/dist/chunk-3GE3MBUZ.js +279 -0
- package/dist/chunk-3GE3MBUZ.js.map +1 -0
- package/dist/chunk-4TZNBT5V.js +7228 -0
- package/dist/chunk-4TZNBT5V.js.map +1 -0
- package/dist/chunk-55H6WZQP.js +5 -0
- package/dist/chunk-55H6WZQP.js.map +1 -0
- package/dist/chunk-7VJ7CMMT.mjs +96 -0
- package/dist/chunk-7VJ7CMMT.mjs.map +1 -0
- package/dist/chunk-AM2TTPYM.mjs +189 -0
- package/dist/chunk-AM2TTPYM.mjs.map +1 -0
- package/dist/chunk-BLNXRUC4.mjs +276 -0
- package/dist/chunk-BLNXRUC4.mjs.map +1 -0
- package/dist/chunk-D2JF6C3E.mjs +46 -0
- package/dist/chunk-D2JF6C3E.mjs.map +1 -0
- package/dist/chunk-DFR6CMJH.js +197 -0
- package/dist/chunk-DFR6CMJH.js.map +1 -0
- package/dist/chunk-JB6RNAD2.mjs +4 -0
- package/dist/chunk-JB6RNAD2.mjs.map +1 -0
- package/dist/chunk-NMXHJMGI.js +20756 -0
- package/dist/chunk-NMXHJMGI.js.map +1 -0
- package/dist/chunk-OZNTQROP.mjs +39 -0
- package/dist/chunk-OZNTQROP.mjs.map +1 -0
- package/dist/chunk-P4YYEM4B.js +44 -0
- package/dist/chunk-P4YYEM4B.js.map +1 -0
- package/dist/chunk-QWG2FMUN.mjs +60 -0
- package/dist/chunk-QWG2FMUN.mjs.map +1 -0
- package/dist/chunk-S7KHTUHA.js +65 -0
- package/dist/chunk-S7KHTUHA.js.map +1 -0
- package/dist/chunk-UZ3CMNUJ.js +49 -0
- package/dist/chunk-UZ3CMNUJ.js.map +1 -0
- package/dist/chunk-VB45EBH5.mjs +20022 -0
- package/dist/chunk-VB45EBH5.mjs.map +1 -0
- package/dist/chunk-YXN2K77G.js +102 -0
- package/dist/chunk-YXN2K77G.js.map +1 -0
- package/dist/chunk-ZEYHIEHE.mjs +7167 -0
- package/dist/chunk-ZEYHIEHE.mjs.map +1 -0
- package/dist/index.js +2892 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +7 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/i18n-context.js +29 -0
- package/dist/lib/i18n-context.js.map +1 -0
- package/dist/lib/i18n-context.mjs +4 -0
- package/dist/lib/i18n-context.mjs.map +1 -0
- package/dist/lib/router-context.js +25 -0
- package/dist/lib/router-context.js.map +1 -0
- package/dist/lib/router-context.mjs +4 -0
- package/dist/lib/router-context.mjs.map +1 -0
- package/dist/use-haptic-RDQNJYBE.js +17 -0
- package/dist/use-haptic-RDQNJYBE.js.map +1 -0
- package/dist/use-haptic-TCMOLPGA.mjs +4 -0
- package/dist/use-haptic-TCMOLPGA.mjs.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/astrlabe/components/nodes/graph-node-primitives.tsx
|
|
5
|
+
function GraphNodeIconBubble({ children, className = "" }) {
|
|
6
|
+
return /* @__PURE__ */ jsx("div", { className: `flex h-10 w-10 items-center justify-center rounded-xl shadow-lg ${className}`, children });
|
|
7
|
+
}
|
|
8
|
+
function GraphNodeHeader({
|
|
9
|
+
icon,
|
|
10
|
+
title,
|
|
11
|
+
description,
|
|
12
|
+
compact = false,
|
|
13
|
+
iconClassName
|
|
14
|
+
}) {
|
|
15
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
16
|
+
/* @__PURE__ */ jsx("div", { className: iconClassName, children: icon }),
|
|
17
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
18
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: title }),
|
|
19
|
+
!compact && description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs text-gray-500 dark:text-gray-400", children: description })
|
|
20
|
+
] })
|
|
21
|
+
] });
|
|
22
|
+
}
|
|
23
|
+
function GraphNodeMeta({ compact = false, children }) {
|
|
24
|
+
if (compact) return null;
|
|
25
|
+
return /* @__PURE__ */ jsx("div", { className: "mt-2 flex items-center justify-between", children });
|
|
26
|
+
}
|
|
27
|
+
function GraphNodeBadge({ children, className }) {
|
|
28
|
+
return /* @__PURE__ */ jsx(
|
|
29
|
+
"span",
|
|
30
|
+
{
|
|
31
|
+
className: className ?? "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300",
|
|
32
|
+
children
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { GraphNodeBadge, GraphNodeHeader, GraphNodeIconBubble, GraphNodeMeta };
|
|
38
|
+
//# sourceMappingURL=chunk-OZNTQROP.mjs.map
|
|
39
|
+
//# sourceMappingURL=chunk-OZNTQROP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/astrlabe/components/nodes/graph-node-primitives.tsx"],"names":[],"mappings":";;;AAOO,SAAS,mBAAA,CAAoB,EAAE,QAAA,EAAU,SAAA,GAAY,IAAG,EAA6B;AAC1F,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,gEAAA,EAAmE,SAAS,IACzF,QAAA,EACH,CAAA;AAEJ;AAUO,SAAS,eAAA,CAAgB;AAAA,EAC9B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV;AACF,CAAA,EAAyB;AACvB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,EAAgB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,oBACrC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,qDAAA,EAAuD,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAC1E,CAAC,OAAA,IAAW,WAAA,wBAAgB,GAAA,EAAA,EAAE,SAAA,EAAU,mDAAmD,QAAA,EAAA,WAAA,EAAY;AAAA,KAAA,EAC1G;AAAA,GAAA,EACF,CAAA;AAEJ;AAOO,SAAS,aAAA,CAAc,EAAE,OAAA,GAAU,KAAA,EAAO,UAAS,EAAuB;AAC/E,EAAA,IAAI,SAAS,OAAO,IAAA;AACpB,EAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EAA0C,QAAA,EAAS,CAAA;AAC3E;AAOO,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,SAAA,EAAU,EAAwB;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WACE,SAAA,IACG,kJAAA;AAAA,MAGJ;AAAA;AAAA,GACH;AAEJ","file":"chunk-OZNTQROP.mjs","sourcesContent":["import type { ReactNode } from 'react'\n\ninterface GraphNodeIconBubbleProps {\n children: ReactNode\n className?: string\n}\n\nexport function GraphNodeIconBubble({ children, className = '' }: GraphNodeIconBubbleProps) {\n return (\n <div className={`flex h-10 w-10 items-center justify-center rounded-xl shadow-lg ${className}`}>\n {children}\n </div>\n )\n}\n\ninterface GraphNodeHeaderProps {\n icon: ReactNode\n title: string\n description?: string\n compact?: boolean\n iconClassName?: string\n}\n\nexport function GraphNodeHeader({\n icon,\n title,\n description,\n compact = false,\n iconClassName,\n}: GraphNodeHeaderProps) {\n return (\n <div className=\"flex items-start gap-3\">\n <div className={iconClassName}>{icon}</div>\n <div className=\"min-w-0 flex-1\">\n <h3 className=\"text-sm font-semibold text-gray-900 dark:text-white\">{title}</h3>\n {!compact && description && <p className=\"mt-0.5 text-xs text-gray-500 dark:text-gray-400\">{description}</p>}\n </div>\n </div>\n )\n}\n\ninterface GraphNodeMetaProps {\n compact?: boolean\n children: ReactNode\n}\n\nexport function GraphNodeMeta({ compact = false, children }: GraphNodeMetaProps) {\n if (compact) return null\n return <div className=\"mt-2 flex items-center justify-between\">{children}</div>\n}\n\ninterface GraphNodeBadgeProps {\n children: ReactNode\n className?: string\n}\n\nexport function GraphNodeBadge({ children, className }: GraphNodeBadgeProps) {\n return (\n <span\n className={\n className\n ?? 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300'\n }\n >\n {children}\n </span>\n )\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
|
|
6
|
+
// src/astrlabe/components/nodes/graph-node-primitives.tsx
|
|
7
|
+
function GraphNodeIconBubble({ children, className = "" }) {
|
|
8
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-10 w-10 items-center justify-center rounded-xl shadow-lg ${className}`, children });
|
|
9
|
+
}
|
|
10
|
+
function GraphNodeHeader({
|
|
11
|
+
icon,
|
|
12
|
+
title,
|
|
13
|
+
description,
|
|
14
|
+
compact = false,
|
|
15
|
+
iconClassName
|
|
16
|
+
}) {
|
|
17
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
18
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: iconClassName, children: icon }),
|
|
19
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
20
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: title }),
|
|
21
|
+
!compact && description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-gray-500 dark:text-gray-400", children: description })
|
|
22
|
+
] })
|
|
23
|
+
] });
|
|
24
|
+
}
|
|
25
|
+
function GraphNodeMeta({ compact = false, children }) {
|
|
26
|
+
if (compact) return null;
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 flex items-center justify-between", children });
|
|
28
|
+
}
|
|
29
|
+
function GraphNodeBadge({ children, className }) {
|
|
30
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31
|
+
"span",
|
|
32
|
+
{
|
|
33
|
+
className: className ?? "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300",
|
|
34
|
+
children
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
exports.GraphNodeBadge = GraphNodeBadge;
|
|
40
|
+
exports.GraphNodeHeader = GraphNodeHeader;
|
|
41
|
+
exports.GraphNodeIconBubble = GraphNodeIconBubble;
|
|
42
|
+
exports.GraphNodeMeta = GraphNodeMeta;
|
|
43
|
+
//# sourceMappingURL=chunk-P4YYEM4B.js.map
|
|
44
|
+
//# sourceMappingURL=chunk-P4YYEM4B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/astrlabe/components/nodes/graph-node-primitives.tsx"],"names":["jsxs","jsx"],"mappings":";;;;;AAOO,SAAS,mBAAA,CAAoB,EAAE,QAAA,EAAU,SAAA,GAAY,IAAG,EAA6B;AAC1F,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,gEAAA,EAAmE,SAAS,IACzF,QAAA,EACH,CAAA;AAEJ;AAUO,SAAS,eAAA,CAAgB;AAAA,EAC9B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV;AACF,CAAA,EAAyB;AACvB,EAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,EAAgB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,oBACrCD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,qDAAA,EAAuD,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAC1E,CAAC,OAAA,IAAW,WAAA,mCAAgB,GAAA,EAAA,EAAE,SAAA,EAAU,mDAAmD,QAAA,EAAA,WAAA,EAAY;AAAA,KAAA,EAC1G;AAAA,GAAA,EACF,CAAA;AAEJ;AAOO,SAAS,aAAA,CAAc,EAAE,OAAA,GAAU,KAAA,EAAO,UAAS,EAAuB;AAC/E,EAAA,IAAI,SAAS,OAAO,IAAA;AACpB,EAAA,uBAAOA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EAA0C,QAAA,EAAS,CAAA;AAC3E;AAOO,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,SAAA,EAAU,EAAwB;AAC3E,EAAA,uBACEA,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WACE,SAAA,IACG,kJAAA;AAAA,MAGJ;AAAA;AAAA,GACH;AAEJ","file":"chunk-P4YYEM4B.js","sourcesContent":["import type { ReactNode } from 'react'\n\ninterface GraphNodeIconBubbleProps {\n children: ReactNode\n className?: string\n}\n\nexport function GraphNodeIconBubble({ children, className = '' }: GraphNodeIconBubbleProps) {\n return (\n <div className={`flex h-10 w-10 items-center justify-center rounded-xl shadow-lg ${className}`}>\n {children}\n </div>\n )\n}\n\ninterface GraphNodeHeaderProps {\n icon: ReactNode\n title: string\n description?: string\n compact?: boolean\n iconClassName?: string\n}\n\nexport function GraphNodeHeader({\n icon,\n title,\n description,\n compact = false,\n iconClassName,\n}: GraphNodeHeaderProps) {\n return (\n <div className=\"flex items-start gap-3\">\n <div className={iconClassName}>{icon}</div>\n <div className=\"min-w-0 flex-1\">\n <h3 className=\"text-sm font-semibold text-gray-900 dark:text-white\">{title}</h3>\n {!compact && description && <p className=\"mt-0.5 text-xs text-gray-500 dark:text-gray-400\">{description}</p>}\n </div>\n </div>\n )\n}\n\ninterface GraphNodeMetaProps {\n compact?: boolean\n children: ReactNode\n}\n\nexport function GraphNodeMeta({ compact = false, children }: GraphNodeMetaProps) {\n if (compact) return null\n return <div className=\"mt-2 flex items-center justify-between\">{children}</div>\n}\n\ninterface GraphNodeBadgeProps {\n children: ReactNode\n className?: string\n}\n\nexport function GraphNodeBadge({ children, className }: GraphNodeBadgeProps) {\n return (\n <span\n className={\n className\n ?? 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300'\n }\n >\n {children}\n </span>\n )\n}\n"]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useContext, forwardRef } from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/lib/router-context.tsx
|
|
6
|
+
var RouterContext = createContext(null);
|
|
7
|
+
function RouterProvider({ children, value }) {
|
|
8
|
+
return /* @__PURE__ */ jsx(RouterContext.Provider, { value, children });
|
|
9
|
+
}
|
|
10
|
+
function useRouter() {
|
|
11
|
+
const context = useContext(RouterContext);
|
|
12
|
+
if (!context) {
|
|
13
|
+
return {
|
|
14
|
+
push: (href) => {
|
|
15
|
+
window.location.href = href;
|
|
16
|
+
},
|
|
17
|
+
replace: (href) => {
|
|
18
|
+
window.location.replace(href);
|
|
19
|
+
},
|
|
20
|
+
back: () => {
|
|
21
|
+
window.history.back();
|
|
22
|
+
},
|
|
23
|
+
forward: () => {
|
|
24
|
+
window.history.forward();
|
|
25
|
+
},
|
|
26
|
+
refresh: () => {
|
|
27
|
+
window.location.reload();
|
|
28
|
+
},
|
|
29
|
+
prefetch: () => {
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
push: context.navigate,
|
|
35
|
+
replace: context.replace,
|
|
36
|
+
back: context.back,
|
|
37
|
+
forward: context.forward,
|
|
38
|
+
refresh: () => {
|
|
39
|
+
window.location.reload();
|
|
40
|
+
},
|
|
41
|
+
prefetch: context.prefetch
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function usePathname() {
|
|
45
|
+
const context = useContext(RouterContext);
|
|
46
|
+
return context?.pathname ?? (typeof window !== "undefined" ? window.location.pathname : "/");
|
|
47
|
+
}
|
|
48
|
+
function useLink() {
|
|
49
|
+
const context = useContext(RouterContext);
|
|
50
|
+
if (!context) {
|
|
51
|
+
return forwardRef(function FallbackLink({ href, children, ...props }, ref) {
|
|
52
|
+
return /* @__PURE__ */ jsx("a", { href, ref, ...props, children });
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return context.Link;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { RouterProvider, useLink, usePathname, useRouter };
|
|
59
|
+
//# sourceMappingURL=chunk-QWG2FMUN.mjs.map
|
|
60
|
+
//# sourceMappingURL=chunk-QWG2FMUN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/router-context.tsx"],"names":[],"mappings":";;;;AAgBA,IAAM,aAAA,GAAgB,cAAyC,IAAI,CAAA;AAO5D,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,KAAA,EAAM,EAAwB;AACvE,EAAA,uBAAO,GAAA,CAAC,aAAA,CAAc,QAAA,EAAd,EAAuB,OAAe,QAAA,EAAS,CAAA;AACzD;AAEO,SAAS,SAAA,GAAY;AAC1B,EAAA,MAAM,OAAA,GAAU,WAAW,aAAa,CAAA;AACxC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,CAAC,IAAA,KAAiB;AAAE,QAAA,MAAA,CAAO,SAAS,IAAA,GAAO,IAAA;AAAA,MAAK,CAAA;AAAA,MACtD,OAAA,EAAS,CAAC,IAAA,KAAiB;AAAE,QAAA,MAAA,CAAO,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,MAAE,CAAA;AAAA,MAC3D,MAAM,MAAM;AAAE,QAAA,MAAA,CAAO,QAAQ,IAAA,EAAK;AAAA,MAAE,CAAA;AAAA,MACpC,SAAS,MAAM;AAAE,QAAA,MAAA,CAAO,QAAQ,OAAA,EAAQ;AAAA,MAAE,CAAA;AAAA,MAC1C,SAAS,MAAM;AAAE,QAAA,MAAA,CAAO,SAAS,MAAA,EAAO;AAAA,MAAE,CAAA;AAAA,MAC1C,UAAU,MAAM;AAAA,MAAC;AAAA,KACnB;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,MAAM,OAAA,CAAQ,QAAA;AAAA,IACd,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,SAAS,MAAM;AAAE,MAAA,MAAA,CAAO,SAAS,MAAA,EAAO;AAAA,IAAE,CAAA;AAAA,IAC1C,UAAU,OAAA,CAAQ;AAAA,GACpB;AACF;AAEO,SAAS,WAAA,GAAsB;AACpC,EAAA,MAAM,OAAA,GAAU,WAAW,aAAa,CAAA;AACxC,EAAA,OAAO,SAAS,QAAA,KAAa,OAAO,WAAW,WAAA,GAAc,MAAA,CAAO,SAAS,QAAA,GAAW,GAAA,CAAA;AAC1F;AAEO,SAAS,OAAA,GAAyB;AACvC,EAAA,MAAM,OAAA,GAAU,WAAW,aAAa,CAAA;AACxC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,UAAA,CAAyC,SAAS,YAAA,CAAa,EAAE,MAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACvG,MAAA,2BAAQ,GAAA,EAAA,EAAE,IAAA,EAAY,GAAA,EAAW,GAAG,OAAQ,QAAA,EAAS,CAAA;AAAA,IACvD,CAAC,CAAA;AAAA,EACH;AACA,EAAA,OAAO,OAAA,CAAQ,IAAA;AACjB","file":"chunk-QWG2FMUN.mjs","sourcesContent":["import { createContext, useContext, forwardRef, type ReactNode, type AnchorHTMLAttributes, type Ref } from 'react'\n\nexport type LinkProps = { href: string; children?: ReactNode; ref?: Ref<HTMLAnchorElement> } & Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>\n\nexport type LinkComponent = React.FC<LinkProps>\n\nexport interface RouterContextValue {\n pathname: string\n navigate: (href: string) => void\n replace: (href: string) => void\n back: () => void\n forward: () => void\n prefetch: (href: string) => void\n Link: LinkComponent\n}\n\nconst RouterContext = createContext<RouterContextValue | null>(null)\n\nexport type RouterProviderProps = {\n children: ReactNode\n value: RouterContextValue\n}\n\nexport function RouterProvider({ children, value }: RouterProviderProps) {\n return <RouterContext.Provider value={value}>{children}</RouterContext.Provider>\n}\n\nexport function useRouter() {\n const context = useContext(RouterContext)\n if (!context) {\n return {\n push: (href: string) => { window.location.href = href },\n replace: (href: string) => { window.location.replace(href) },\n back: () => { window.history.back() },\n forward: () => { window.history.forward() },\n refresh: () => { window.location.reload() },\n prefetch: () => {},\n }\n }\n return {\n push: context.navigate,\n replace: context.replace,\n back: context.back,\n forward: context.forward,\n refresh: () => { window.location.reload() },\n prefetch: context.prefetch,\n }\n}\n\nexport function usePathname(): string {\n const context = useContext(RouterContext)\n return context?.pathname ?? (typeof window !== 'undefined' ? window.location.pathname : '/')\n}\n\nexport function useLink(): LinkComponent {\n const context = useContext(RouterContext)\n if (!context) {\n return forwardRef<HTMLAnchorElement, LinkProps>(function FallbackLink({ href, children, ...props }, ref) {\n return <a href={href} ref={ref} {...props}>{children}</a>\n }) as unknown as LinkComponent\n }\n return context.Link\n}\n"]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
// src/lib/router-context.tsx
|
|
8
|
+
var RouterContext = react.createContext(null);
|
|
9
|
+
function RouterProvider({ children, value }) {
|
|
10
|
+
return /* @__PURE__ */ jsxRuntime.jsx(RouterContext.Provider, { value, children });
|
|
11
|
+
}
|
|
12
|
+
function useRouter() {
|
|
13
|
+
const context = react.useContext(RouterContext);
|
|
14
|
+
if (!context) {
|
|
15
|
+
return {
|
|
16
|
+
push: (href) => {
|
|
17
|
+
window.location.href = href;
|
|
18
|
+
},
|
|
19
|
+
replace: (href) => {
|
|
20
|
+
window.location.replace(href);
|
|
21
|
+
},
|
|
22
|
+
back: () => {
|
|
23
|
+
window.history.back();
|
|
24
|
+
},
|
|
25
|
+
forward: () => {
|
|
26
|
+
window.history.forward();
|
|
27
|
+
},
|
|
28
|
+
refresh: () => {
|
|
29
|
+
window.location.reload();
|
|
30
|
+
},
|
|
31
|
+
prefetch: () => {
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
push: context.navigate,
|
|
37
|
+
replace: context.replace,
|
|
38
|
+
back: context.back,
|
|
39
|
+
forward: context.forward,
|
|
40
|
+
refresh: () => {
|
|
41
|
+
window.location.reload();
|
|
42
|
+
},
|
|
43
|
+
prefetch: context.prefetch
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function usePathname() {
|
|
47
|
+
const context = react.useContext(RouterContext);
|
|
48
|
+
return context?.pathname ?? (typeof window !== "undefined" ? window.location.pathname : "/");
|
|
49
|
+
}
|
|
50
|
+
function useLink() {
|
|
51
|
+
const context = react.useContext(RouterContext);
|
|
52
|
+
if (!context) {
|
|
53
|
+
return react.forwardRef(function FallbackLink({ href, children, ...props }, ref) {
|
|
54
|
+
return /* @__PURE__ */ jsxRuntime.jsx("a", { href, ref, ...props, children });
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return context.Link;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
exports.RouterProvider = RouterProvider;
|
|
61
|
+
exports.useLink = useLink;
|
|
62
|
+
exports.usePathname = usePathname;
|
|
63
|
+
exports.useRouter = useRouter;
|
|
64
|
+
//# sourceMappingURL=chunk-S7KHTUHA.js.map
|
|
65
|
+
//# sourceMappingURL=chunk-S7KHTUHA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/router-context.tsx"],"names":["createContext","jsx","useContext","forwardRef"],"mappings":";;;;;;AAgBA,IAAM,aAAA,GAAgBA,oBAAyC,IAAI,CAAA;AAO5D,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,KAAA,EAAM,EAAwB;AACvE,EAAA,uBAAOC,cAAA,CAAC,aAAA,CAAc,QAAA,EAAd,EAAuB,OAAe,QAAA,EAAS,CAAA;AACzD;AAEO,SAAS,SAAA,GAAY;AAC1B,EAAA,MAAM,OAAA,GAAUC,iBAAW,aAAa,CAAA;AACxC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,CAAC,IAAA,KAAiB;AAAE,QAAA,MAAA,CAAO,SAAS,IAAA,GAAO,IAAA;AAAA,MAAK,CAAA;AAAA,MACtD,OAAA,EAAS,CAAC,IAAA,KAAiB;AAAE,QAAA,MAAA,CAAO,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,MAAE,CAAA;AAAA,MAC3D,MAAM,MAAM;AAAE,QAAA,MAAA,CAAO,QAAQ,IAAA,EAAK;AAAA,MAAE,CAAA;AAAA,MACpC,SAAS,MAAM;AAAE,QAAA,MAAA,CAAO,QAAQ,OAAA,EAAQ;AAAA,MAAE,CAAA;AAAA,MAC1C,SAAS,MAAM;AAAE,QAAA,MAAA,CAAO,SAAS,MAAA,EAAO;AAAA,MAAE,CAAA;AAAA,MAC1C,UAAU,MAAM;AAAA,MAAC;AAAA,KACnB;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,MAAM,OAAA,CAAQ,QAAA;AAAA,IACd,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,SAAS,MAAM;AAAE,MAAA,MAAA,CAAO,SAAS,MAAA,EAAO;AAAA,IAAE,CAAA;AAAA,IAC1C,UAAU,OAAA,CAAQ;AAAA,GACpB;AACF;AAEO,SAAS,WAAA,GAAsB;AACpC,EAAA,MAAM,OAAA,GAAUA,iBAAW,aAAa,CAAA;AACxC,EAAA,OAAO,SAAS,QAAA,KAAa,OAAO,WAAW,WAAA,GAAc,MAAA,CAAO,SAAS,QAAA,GAAW,GAAA,CAAA;AAC1F;AAEO,SAAS,OAAA,GAAyB;AACvC,EAAA,MAAM,OAAA,GAAUA,iBAAW,aAAa,CAAA;AACxC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAOC,gBAAA,CAAyC,SAAS,YAAA,CAAa,EAAE,MAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACvG,MAAA,sCAAQ,GAAA,EAAA,EAAE,IAAA,EAAY,GAAA,EAAW,GAAG,OAAQ,QAAA,EAAS,CAAA;AAAA,IACvD,CAAC,CAAA;AAAA,EACH;AACA,EAAA,OAAO,OAAA,CAAQ,IAAA;AACjB","file":"chunk-S7KHTUHA.js","sourcesContent":["import { createContext, useContext, forwardRef, type ReactNode, type AnchorHTMLAttributes, type Ref } from 'react'\n\nexport type LinkProps = { href: string; children?: ReactNode; ref?: Ref<HTMLAnchorElement> } & Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>\n\nexport type LinkComponent = React.FC<LinkProps>\n\nexport interface RouterContextValue {\n pathname: string\n navigate: (href: string) => void\n replace: (href: string) => void\n back: () => void\n forward: () => void\n prefetch: (href: string) => void\n Link: LinkComponent\n}\n\nconst RouterContext = createContext<RouterContextValue | null>(null)\n\nexport type RouterProviderProps = {\n children: ReactNode\n value: RouterContextValue\n}\n\nexport function RouterProvider({ children, value }: RouterProviderProps) {\n return <RouterContext.Provider value={value}>{children}</RouterContext.Provider>\n}\n\nexport function useRouter() {\n const context = useContext(RouterContext)\n if (!context) {\n return {\n push: (href: string) => { window.location.href = href },\n replace: (href: string) => { window.location.replace(href) },\n back: () => { window.history.back() },\n forward: () => { window.history.forward() },\n refresh: () => { window.location.reload() },\n prefetch: () => {},\n }\n }\n return {\n push: context.navigate,\n replace: context.replace,\n back: context.back,\n forward: context.forward,\n refresh: () => { window.location.reload() },\n prefetch: context.prefetch,\n }\n}\n\nexport function usePathname(): string {\n const context = useContext(RouterContext)\n return context?.pathname ?? (typeof window !== 'undefined' ? window.location.pathname : '/')\n}\n\nexport function useLink(): LinkComponent {\n const context = useContext(RouterContext)\n if (!context) {\n return forwardRef<HTMLAnchorElement, LinkProps>(function FallbackLink({ href, children, ...props }, ref) {\n return <a href={href} ref={ref} {...props}>{children}</a>\n }) as unknown as LinkComponent\n }\n return context.Link\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
// src/hooks/use-haptic.ts
|
|
5
|
+
var patterns = {
|
|
6
|
+
light: 10,
|
|
7
|
+
medium: 25,
|
|
8
|
+
heavy: 50,
|
|
9
|
+
success: [10, 50, 10],
|
|
10
|
+
warning: [25, 50, 25],
|
|
11
|
+
error: [50, 100, 50],
|
|
12
|
+
selection: 5
|
|
13
|
+
};
|
|
14
|
+
function useHaptic() {
|
|
15
|
+
const isSupported = typeof navigator !== "undefined" && "vibrate" in navigator;
|
|
16
|
+
const trigger = (pattern = "light") => {
|
|
17
|
+
if (!isSupported) return false;
|
|
18
|
+
try {
|
|
19
|
+
const vibrationPattern = patterns[pattern];
|
|
20
|
+
navigator.vibrate(vibrationPattern);
|
|
21
|
+
return true;
|
|
22
|
+
} catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const cancel = () => {
|
|
27
|
+
if (!isSupported) return;
|
|
28
|
+
navigator.vibrate(0);
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
trigger,
|
|
32
|
+
cancel,
|
|
33
|
+
isSupported
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function triggerHaptic(pattern = "light") {
|
|
37
|
+
if (typeof navigator === "undefined" || !("vibrate" in navigator)) return false;
|
|
38
|
+
try {
|
|
39
|
+
navigator.vibrate(patterns[pattern]);
|
|
40
|
+
return true;
|
|
41
|
+
} catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
exports.triggerHaptic = triggerHaptic;
|
|
47
|
+
exports.useHaptic = useHaptic;
|
|
48
|
+
//# sourceMappingURL=chunk-UZ3CMNUJ.js.map
|
|
49
|
+
//# sourceMappingURL=chunk-UZ3CMNUJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-haptic.ts"],"names":[],"mappings":";;;AAQA,IAAM,QAAA,GAAqD;AAAA,EACzD,KAAA,EAAO,EAAA;AAAA,EACP,MAAA,EAAQ,EAAA;AAAA,EACR,KAAA,EAAO,EAAA;AAAA,EACP,OAAA,EAAS,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAAA,EACpB,OAAA,EAAS,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAAA,EACpB,KAAA,EAAO,CAAC,EAAA,EAAI,GAAA,EAAK,EAAE,CAAA;AAAA,EACnB,SAAA,EAAW;AACb,CAAA;AAEO,SAAS,SAAA,GAAY;AAC1B,EAAA,MAAM,WAAA,GAAc,OAAO,SAAA,KAAc,WAAA,IAAe,SAAA,IAAa,SAAA;AAErE,EAAA,MAAM,OAAA,GAAU,CAAC,OAAA,GAAyB,OAAA,KAAY;AACpD,IAAA,IAAI,CAAC,aAAa,OAAO,KAAA;AAEzB,IAAA,IAAI;AACF,MAAA,MAAM,gBAAA,GAAmB,SAAS,OAAO,CAAA;AACzC,MAAA,SAAA,CAAU,QAAQ,gBAAgB,CAAA;AAClC,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,CAAC,WAAA,EAAa;AAClB,IAAA,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,aAAA,CAAc,UAAyB,OAAA,EAAS;AAC9D,EAAA,IAAI,OAAO,SAAA,KAAc,WAAA,IAAe,EAAE,SAAA,IAAa,YAAY,OAAO,KAAA;AAE1E,EAAA,IAAI;AACF,IAAA,SAAA,CAAU,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAC,CAAA;AACnC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF","file":"chunk-UZ3CMNUJ.js","sourcesContent":["/**\n * iOS-style haptic feedback hook\n * Provides tactile feedback for touch interactions\n */\n\ntype HapticPattern = 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error' | 'selection'\n\n// Vibration patterns in milliseconds\nconst patterns: Record<HapticPattern, number | number[]> = {\n light: 10,\n medium: 25,\n heavy: 50,\n success: [10, 50, 10],\n warning: [25, 50, 25],\n error: [50, 100, 50],\n selection: 5,\n}\n\nexport function useHaptic() {\n const isSupported = typeof navigator !== 'undefined' && 'vibrate' in navigator\n\n const trigger = (pattern: HapticPattern = 'light') => {\n if (!isSupported) return false\n\n try {\n const vibrationPattern = patterns[pattern]\n navigator.vibrate(vibrationPattern)\n return true\n } catch {\n return false\n }\n }\n\n const cancel = () => {\n if (!isSupported) return\n navigator.vibrate(0)\n }\n\n return {\n trigger,\n cancel,\n isSupported,\n }\n}\n\n/**\n * Standalone haptic trigger for use outside React components\n */\nexport function triggerHaptic(pattern: HapticPattern = 'light') {\n if (typeof navigator === 'undefined' || !('vibrate' in navigator)) return false\n\n try {\n navigator.vibrate(patterns[pattern])\n return true\n } catch {\n return false\n }\n}\n"]}
|