@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.
Files changed (77) hide show
  1. package/dist/astrlabe/contracts.js +5 -0
  2. package/dist/astrlabe/contracts.js.map +1 -0
  3. package/dist/astrlabe/contracts.mjs +4 -0
  4. package/dist/astrlabe/contracts.mjs.map +1 -0
  5. package/dist/astrlabe/graph-node.js +26 -0
  6. package/dist/astrlabe/graph-node.js.map +1 -0
  7. package/dist/astrlabe/graph-node.mjs +5 -0
  8. package/dist/astrlabe/graph-node.mjs.map +1 -0
  9. package/dist/astrlabe/index.js +3247 -0
  10. package/dist/astrlabe/index.js.map +1 -0
  11. package/dist/astrlabe/index.mjs +2956 -0
  12. package/dist/astrlabe/index.mjs.map +1 -0
  13. package/dist/astrlabe/utils.js +30 -0
  14. package/dist/astrlabe/utils.js.map +1 -0
  15. package/dist/astrlabe/utils.mjs +5 -0
  16. package/dist/astrlabe/utils.mjs.map +1 -0
  17. package/dist/astrlabe/workflow-canvas.js +19 -0
  18. package/dist/astrlabe/workflow-canvas.js.map +1 -0
  19. package/dist/astrlabe/workflow-canvas.mjs +10 -0
  20. package/dist/astrlabe/workflow-canvas.mjs.map +1 -0
  21. package/dist/astrlabe/workflow-preview-canvas.js +28 -0
  22. package/dist/astrlabe/workflow-preview-canvas.js.map +1 -0
  23. package/dist/astrlabe/workflow-preview-canvas.mjs +26 -0
  24. package/dist/astrlabe/workflow-preview-canvas.mjs.map +1 -0
  25. package/dist/chunk-3GE3MBUZ.js +279 -0
  26. package/dist/chunk-3GE3MBUZ.js.map +1 -0
  27. package/dist/chunk-4TZNBT5V.js +7228 -0
  28. package/dist/chunk-4TZNBT5V.js.map +1 -0
  29. package/dist/chunk-55H6WZQP.js +5 -0
  30. package/dist/chunk-55H6WZQP.js.map +1 -0
  31. package/dist/chunk-7VJ7CMMT.mjs +96 -0
  32. package/dist/chunk-7VJ7CMMT.mjs.map +1 -0
  33. package/dist/chunk-AM2TTPYM.mjs +189 -0
  34. package/dist/chunk-AM2TTPYM.mjs.map +1 -0
  35. package/dist/chunk-BLNXRUC4.mjs +276 -0
  36. package/dist/chunk-BLNXRUC4.mjs.map +1 -0
  37. package/dist/chunk-D2JF6C3E.mjs +46 -0
  38. package/dist/chunk-D2JF6C3E.mjs.map +1 -0
  39. package/dist/chunk-DFR6CMJH.js +197 -0
  40. package/dist/chunk-DFR6CMJH.js.map +1 -0
  41. package/dist/chunk-JB6RNAD2.mjs +4 -0
  42. package/dist/chunk-JB6RNAD2.mjs.map +1 -0
  43. package/dist/chunk-NMXHJMGI.js +20756 -0
  44. package/dist/chunk-NMXHJMGI.js.map +1 -0
  45. package/dist/chunk-OZNTQROP.mjs +39 -0
  46. package/dist/chunk-OZNTQROP.mjs.map +1 -0
  47. package/dist/chunk-P4YYEM4B.js +44 -0
  48. package/dist/chunk-P4YYEM4B.js.map +1 -0
  49. package/dist/chunk-QWG2FMUN.mjs +60 -0
  50. package/dist/chunk-QWG2FMUN.mjs.map +1 -0
  51. package/dist/chunk-S7KHTUHA.js +65 -0
  52. package/dist/chunk-S7KHTUHA.js.map +1 -0
  53. package/dist/chunk-UZ3CMNUJ.js +49 -0
  54. package/dist/chunk-UZ3CMNUJ.js.map +1 -0
  55. package/dist/chunk-VB45EBH5.mjs +20022 -0
  56. package/dist/chunk-VB45EBH5.mjs.map +1 -0
  57. package/dist/chunk-YXN2K77G.js +102 -0
  58. package/dist/chunk-YXN2K77G.js.map +1 -0
  59. package/dist/chunk-ZEYHIEHE.mjs +7167 -0
  60. package/dist/chunk-ZEYHIEHE.mjs.map +1 -0
  61. package/dist/index.js +2892 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/index.mjs +7 -0
  64. package/dist/index.mjs.map +1 -0
  65. package/dist/lib/i18n-context.js +29 -0
  66. package/dist/lib/i18n-context.js.map +1 -0
  67. package/dist/lib/i18n-context.mjs +4 -0
  68. package/dist/lib/i18n-context.mjs.map +1 -0
  69. package/dist/lib/router-context.js +25 -0
  70. package/dist/lib/router-context.js.map +1 -0
  71. package/dist/lib/router-context.mjs +4 -0
  72. package/dist/lib/router-context.mjs.map +1 -0
  73. package/dist/use-haptic-RDQNJYBE.js +17 -0
  74. package/dist/use-haptic-RDQNJYBE.js.map +1 -0
  75. package/dist/use-haptic-TCMOLPGA.mjs +4 -0
  76. package/dist/use-haptic-TCMOLPGA.mjs.map +1 -0
  77. 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"]}