@burdenoff/microfe-technospam 2026.709.2 → 2026.709.4
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/index.js +4 -4
- package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -1
- package/dist/technospam/TechnoSpamRoutes.js +100 -74
- package/dist/technospam/TechnoSpamRoutes.js.map +1 -1
- package/dist/technospam/components/PageLayout.d.ts.map +1 -1
- package/dist/technospam/components/PageLayout.js +26 -23
- package/dist/technospam/components/PageLayout.js.map +1 -1
- package/dist/technospam/components/TagInput.d.ts +18 -0
- package/dist/technospam/components/TagInput.d.ts.map +1 -0
- package/dist/technospam/components/TagInput.js +58 -0
- package/dist/technospam/components/TagInput.js.map +1 -0
- package/dist/technospam/components/TagStrip.d.ts +12 -0
- package/dist/technospam/components/TagStrip.d.ts.map +1 -0
- package/dist/technospam/components/TagStrip.js +20 -0
- package/dist/technospam/components/TagStrip.js.map +1 -0
- package/dist/technospam/components/index.d.ts +2 -0
- package/dist/technospam/components/index.d.ts.map +1 -1
- package/dist/technospam/components/index.js +2 -0
- package/dist/technospam/hooks/useNativeControls.d.ts +27 -0
- package/dist/technospam/hooks/useNativeControls.d.ts.map +1 -0
- package/dist/technospam/hooks/useNativeControls.js +18 -0
- package/dist/technospam/hooks/useNativeControls.js.map +1 -0
- package/dist/technospam/hooks/useTechnoSpamAnalytics.d.ts +1 -1
- package/dist/technospam/hooks/useTechnoSpamAnalytics.d.ts.map +1 -1
- package/dist/technospam/hooks/useTechnoSpamAnalytics.js.map +1 -1
- package/dist/technospam/hooks/useTechnoSpamPageView.d.ts +14 -0
- package/dist/technospam/hooks/useTechnoSpamPageView.d.ts.map +1 -0
- package/dist/technospam/hooks/useTechnoSpamPageView.js +26 -0
- package/dist/technospam/hooks/useTechnoSpamPageView.js.map +1 -0
- package/dist/technospam/index.js +1 -1
- package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/AdminAdminDashboardPagePage.js +408 -399
- package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -1
- package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js +50 -55
- package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js.map +1 -1
- package/dist/technospam/pages/ApplicationsProblemsPagePage.js +25 -25
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +142 -144
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesCoursesPagePage.js +30 -30
- package/dist/technospam/pages/HackathonsHackathonsPagePage.js +29 -29
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.js +54 -54
- package/dist/technospam/pages/MentorshipMentorsPagePage.js +61 -61
- package/dist/technospam/pages/MentorshipSessionsPagePage.js +42 -42
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagStrip.js","names":[],"sources":["../../../src/technospam/components/TagStrip.tsx"],"sourcesContent":["import { Tag } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\ninterface TagStripProps {\n tags: string[];\n className?: string;\n size?: 'sm' | 'md';\n}\n\n/**\n * Read-only chip strip for entity tags. Falls back to nothing when the list\n * is empty so callers don't have to guard.\n */\nexport function TagStrip({ tags, className, size = 'sm' }: TagStripProps) {\n if (!tags.length) return null;\n return (\n <div className={cn('flex flex-wrap items-center gap-1.5', className)}>\n <Tag size={size === 'sm' ? 12 : 14} className=\"text-text-muted\" />\n {tags.map((t) => (\n <span\n key={t}\n className={cn(\n 'inline-flex items-center rounded-full border border-border-seam bg-bg-sunken px-2 font-medium text-text-secondary',\n size === 'sm' ? 'text-[11px] py-0.5' : 'text-xs py-1'\n )}\n >\n {t}\n </span>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;AAaA,SAAgB,EAAS,EAAE,SAAM,cAAW,UAAO,QAAuB;AAExE,QADK,EAAK,SAER,kBAAC,OAAD;EAAK,WAAW,EAAG,uCAAuC,EAAU;YAApE,CACE,kBAAC,GAAD;GAAK,MAAM,MAAS,OAAO,KAAK;GAAI,WAAU;GAAoB,CAAA,EACjE,EAAK,KAAK,MACT,kBAAC,QAAD;GAEE,WAAW,EACT,qHACA,MAAS,OAAO,uBAAuB,eACxC;aAEA;GACI,EAPA,EAOA,CACP,CACE;MAfiB"}
|
|
@@ -4,4 +4,6 @@ export { MediaCover, coverGradient, topicIcon } from './MediaCover';
|
|
|
4
4
|
export { StatusBadge } from './StatusBadge';
|
|
5
5
|
export { LoadMore } from './LoadMore';
|
|
6
6
|
export { EmptyView, ErrorView, LoadingGrid, LoadingRows } from './StateViews';
|
|
7
|
+
export { TagStrip } from './TagStrip';
|
|
8
|
+
export { TagInput } from './TagInput';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/technospam/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/technospam/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { HapticImpactStyle, HapticNotificationType } from '@burdenoff/fe-libs/shared/native';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Thin convenience hook that wires the host shell's native bridge into
|
|
5
|
+
* TechnoSpam pages. Every helper falls back to web behavior when the app is
|
|
6
|
+
* running in a browser or the bridge is unavailable, so these calls are safe
|
|
7
|
+
* on all platforms.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useNativeControls(): {
|
|
10
|
+
confirm: (options: {
|
|
11
|
+
title: string;
|
|
12
|
+
message: string;
|
|
13
|
+
okButtonTitle?: string;
|
|
14
|
+
cancelButtonTitle?: string;
|
|
15
|
+
}) => Promise<boolean | null>;
|
|
16
|
+
copyText: (text: string) => Promise<boolean>;
|
|
17
|
+
share: (options: {
|
|
18
|
+
title?: string;
|
|
19
|
+
text?: string;
|
|
20
|
+
url?: string;
|
|
21
|
+
}) => Promise<boolean>;
|
|
22
|
+
openExternal: (url: string) => Promise<void>;
|
|
23
|
+
toast: (message: string) => Promise<boolean>;
|
|
24
|
+
impact: (style?: HapticImpactStyle) => void;
|
|
25
|
+
notify: (type: HapticNotificationType) => void;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=useNativeControls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNativeControls.d.ts","sourceRoot":"","sources":["../../../src/technospam/hooks/useNativeControls.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAElG;;;;;GAKG;AACH,wBAAgB,iBAAiB;uBAEnB;QACR,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B;qBAMiC,MAAM;qBAE9B;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;wBAGpB,MAAM;qBACT,MAAM;qBACN,iBAAiB;mBACnB,sBAAsB;EAGzD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useCallback as e } from "react";
|
|
2
|
+
import { nativeConfirm as t, nativeCopyText as n, nativeImpact as r, nativeNotify as i, nativeOpenUrl as a, nativeShare as o, nativeToast as s } from "@burdenoff/fe-libs/shared/native";
|
|
3
|
+
//#region src/technospam/hooks/useNativeControls.ts
|
|
4
|
+
function c() {
|
|
5
|
+
return {
|
|
6
|
+
confirm: e((e) => t(e), []),
|
|
7
|
+
copyText: e((e) => n(e), []),
|
|
8
|
+
share: e((e) => o(e), []),
|
|
9
|
+
openExternal: e((e) => a(e), []),
|
|
10
|
+
toast: e((e) => s(e, "short"), []),
|
|
11
|
+
impact: e((e) => r(e ?? "light"), []),
|
|
12
|
+
notify: e((e) => i(e), [])
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { c as useNativeControls };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=useNativeControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNativeControls.js","names":[],"sources":["../../../src/technospam/hooks/useNativeControls.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport {\n nativeConfirm,\n nativeCopyText,\n nativeImpact,\n nativeNotify,\n nativeOpenUrl,\n nativeShare,\n nativeToast,\n} from '@burdenoff/fe-libs/shared/native';\nimport type { HapticImpactStyle, HapticNotificationType } from '@burdenoff/fe-libs/shared/native';\n\n/**\n * Thin convenience hook that wires the host shell's native bridge into\n * TechnoSpam pages. Every helper falls back to web behavior when the app is\n * running in a browser or the bridge is unavailable, so these calls are safe\n * on all platforms.\n */\nexport function useNativeControls() {\n const confirm = useCallback(\n (options: {\n title: string;\n message: string;\n okButtonTitle?: string;\n cancelButtonTitle?: string;\n }) => {\n return nativeConfirm(options);\n },\n []\n );\n\n const copyText = useCallback((text: string) => nativeCopyText(text), []);\n const share = useCallback(\n (options: { title?: string; text?: string; url?: string }) => nativeShare(options),\n []\n );\n const openExternal = useCallback((url: string) => nativeOpenUrl(url), []);\n const toast = useCallback((message: string) => nativeToast(message, 'short'), []);\n const impact = useCallback((style?: HapticImpactStyle) => nativeImpact(style ?? 'light'), []);\n const notify = useCallback((type: HapticNotificationType) => nativeNotify(type), []);\n\n return { confirm, copyText, share, openExternal, toast, impact, notify };\n}\n"],"mappings":";;;AAkBA,SAAgB,IAAoB;AAuBlC,QAAO;EAAE,SAtBO,GACb,MAMQ,EAAc,EAAQ,EAE/B,EAAE,CACH;EAYiB,UAVD,GAAa,MAAiB,EAAe,EAAK,EAAE,EAAE,CAAC;EAU5C,OATd,GACX,MAA6D,EAAY,EAAQ,EAClF,EAAE,CACH;EAMkC,cALd,GAAa,MAAgB,EAAc,EAAI,EAAE,EAAE,CAAC;EAKxB,OAJnC,GAAa,MAAoB,EAAY,GAAS,QAAQ,EAAE,EAAE,CAAC;EAIzB,QAHzC,GAAa,MAA8B,EAAa,KAAS,QAAQ,EAAE,EAAE,CAAC;EAG7B,QAFjD,GAAa,MAAiC,EAAa,EAAK,EAAE,EAAE,CAAC;EAEZ"}
|
|
@@ -13,7 +13,7 @@ export interface EntityEventPayload {
|
|
|
13
13
|
entityId?: string;
|
|
14
14
|
entityType?: string;
|
|
15
15
|
}
|
|
16
|
-
export type TechnoSpamEventName = 'technospam.course.viewed' | 'technospam.course.enroll_clicked' | 'technospam.course.enrolled' | 'technospam.course.progress_updated' | 'technospam.course.certificate_claimed' | 'technospam.problem.viewed' | 'technospam.problem.submit_clicked' | 'technospam.problem.submitted' | 'technospam.mentor.viewed' | 'technospam.mentor.book_clicked' | 'technospam.mentor.booked' | 'technospam.mentor.become_mentor_clicked' | 'technospam.mentor.became_mentor' | 'technospam.session.cancel_clicked' | 'technospam.session.cancelled' | 'technospam.session.complete_clicked' | 'technospam.session.completed' | 'technospam.hackathon.viewed' | 'technospam.hackathon.register_team_clicked' | 'technospam.hackathon.team_registered' | 'technospam.hackathon.submit_project_clicked' | 'technospam.hackathon.project_submitted' | 'technospam.search.performed';
|
|
16
|
+
export type TechnoSpamEventName = 'technospam.page.viewed' | 'technospam.course.viewed' | 'technospam.course.enroll_clicked' | 'technospam.course.enrolled' | 'technospam.course.progress_updated' | 'technospam.course.certificate_claimed' | 'technospam.problem.viewed' | 'technospam.problem.submit_clicked' | 'technospam.problem.submitted' | 'technospam.mentor.viewed' | 'technospam.mentor.book_clicked' | 'technospam.mentor.booked' | 'technospam.mentor.become_mentor_clicked' | 'technospam.mentor.became_mentor' | 'technospam.session.cancel_clicked' | 'technospam.session.cancelled' | 'technospam.session.complete_clicked' | 'technospam.session.completed' | 'technospam.hackathon.viewed' | 'technospam.hackathon.register_team_clicked' | 'technospam.hackathon.team_registered' | 'technospam.hackathon.submit_project_clicked' | 'technospam.hackathon.project_submitted' | 'technospam.search.performed';
|
|
17
17
|
export declare function useTechnoSpamAnalytics(): {
|
|
18
18
|
emit: (name: TechnoSpamEventName, payload?: EntityEventPayload & Record<string, unknown>) => void;
|
|
19
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTechnoSpamAnalytics.d.ts","sourceRoot":"","sources":["../../../src/technospam/hooks/useTechnoSpamAnalytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,mBAAmB,GAC3B,0BAA0B,GAC1B,kCAAkC,GAClC,4BAA4B,GAC5B,oCAAoC,GACpC,uCAAuC,GACvC,2BAA2B,GAC3B,mCAAmC,GACnC,8BAA8B,GAC9B,0BAA0B,GAC1B,gCAAgC,GAChC,0BAA0B,GAC1B,yCAAyC,GACzC,iCAAiC,GACjC,mCAAmC,GACnC,8BAA8B,GAC9B,qCAAqC,GACrC,8BAA8B,GAC9B,6BAA6B,GAC7B,4CAA4C,GAC5C,sCAAsC,GACtC,6CAA6C,GAC7C,wCAAwC,GACxC,6BAA6B,CAAC;AAElC,wBAAgB,sBAAsB;iBAI3B,mBAAmB,YAAW,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EAOpF"}
|
|
1
|
+
{"version":3,"file":"useTechnoSpamAnalytics.d.ts","sourceRoot":"","sources":["../../../src/technospam/hooks/useTechnoSpamAnalytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,mBAAmB,GAC3B,wBAAwB,GACxB,0BAA0B,GAC1B,kCAAkC,GAClC,4BAA4B,GAC5B,oCAAoC,GACpC,uCAAuC,GACvC,2BAA2B,GAC3B,mCAAmC,GACnC,8BAA8B,GAC9B,0BAA0B,GAC1B,gCAAgC,GAChC,0BAA0B,GAC1B,yCAAyC,GACzC,iCAAiC,GACjC,mCAAmC,GACnC,8BAA8B,GAC9B,qCAAqC,GACrC,8BAA8B,GAC9B,6BAA6B,GAC7B,4CAA4C,GAC5C,sCAAsC,GACtC,6CAA6C,GAC7C,wCAAwC,GACxC,6BAA6B,CAAC;AAElC,wBAAgB,sBAAsB;iBAI3B,mBAAmB,YAAW,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EAOpF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTechnoSpamAnalytics.js","names":[],"sources":["../../../src/technospam/hooks/useTechnoSpamAnalytics.ts"],"sourcesContent":["/**\n * TechnoSpam product analytics helper.\n *\n * Emits events on the shared event bus. The shell's RybbitSink forwards\n * allow-listed fact events to Rybbit Cloud; until TechnoSpam has a site ID,\n * events still flow to the bus and to backend audit / telemetry sinks.\n *\n * Pattern: emit an intent event before a mutation, then a fact event when the\n * server confirms the change.\n */\n\nimport { useCallback } from 'react';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\n\nexport interface EntityEventPayload {\n workspaceId?: string;\n entityId?: string;\n entityType?: string;\n}\n\nexport type TechnoSpamEventName =\n | 'technospam.course.viewed'\n | 'technospam.course.enroll_clicked'\n | 'technospam.course.enrolled'\n | 'technospam.course.progress_updated'\n | 'technospam.course.certificate_claimed'\n | 'technospam.problem.viewed'\n | 'technospam.problem.submit_clicked'\n | 'technospam.problem.submitted'\n | 'technospam.mentor.viewed'\n | 'technospam.mentor.book_clicked'\n | 'technospam.mentor.booked'\n | 'technospam.mentor.become_mentor_clicked'\n | 'technospam.mentor.became_mentor'\n | 'technospam.session.cancel_clicked'\n | 'technospam.session.cancelled'\n | 'technospam.session.complete_clicked'\n | 'technospam.session.completed'\n | 'technospam.hackathon.viewed'\n | 'technospam.hackathon.register_team_clicked'\n | 'technospam.hackathon.team_registered'\n | 'technospam.hackathon.submit_project_clicked'\n | 'technospam.hackathon.project_submitted'\n | 'technospam.search.performed';\n\nexport function useTechnoSpamAnalytics() {\n const bus = useEventBus();\n\n const emit = useCallback(\n (name: TechnoSpamEventName, payload: EntityEventPayload & Record<string, unknown> = {}) => {\n bus.emitCustom(name, payload, { component: 'microfe-technospam' });\n },\n [bus]\n );\n\n return { emit };\n}\n"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"useTechnoSpamAnalytics.js","names":[],"sources":["../../../src/technospam/hooks/useTechnoSpamAnalytics.ts"],"sourcesContent":["/**\n * TechnoSpam product analytics helper.\n *\n * Emits events on the shared event bus. The shell's RybbitSink forwards\n * allow-listed fact events to Rybbit Cloud; until TechnoSpam has a site ID,\n * events still flow to the bus and to backend audit / telemetry sinks.\n *\n * Pattern: emit an intent event before a mutation, then a fact event when the\n * server confirms the change.\n */\n\nimport { useCallback } from 'react';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\n\nexport interface EntityEventPayload {\n workspaceId?: string;\n entityId?: string;\n entityType?: string;\n}\n\nexport type TechnoSpamEventName =\n | 'technospam.page.viewed'\n | 'technospam.course.viewed'\n | 'technospam.course.enroll_clicked'\n | 'technospam.course.enrolled'\n | 'technospam.course.progress_updated'\n | 'technospam.course.certificate_claimed'\n | 'technospam.problem.viewed'\n | 'technospam.problem.submit_clicked'\n | 'technospam.problem.submitted'\n | 'technospam.mentor.viewed'\n | 'technospam.mentor.book_clicked'\n | 'technospam.mentor.booked'\n | 'technospam.mentor.become_mentor_clicked'\n | 'technospam.mentor.became_mentor'\n | 'technospam.session.cancel_clicked'\n | 'technospam.session.cancelled'\n | 'technospam.session.complete_clicked'\n | 'technospam.session.completed'\n | 'technospam.hackathon.viewed'\n | 'technospam.hackathon.register_team_clicked'\n | 'technospam.hackathon.team_registered'\n | 'technospam.hackathon.submit_project_clicked'\n | 'technospam.hackathon.project_submitted'\n | 'technospam.search.performed';\n\nexport function useTechnoSpamAnalytics() {\n const bus = useEventBus();\n\n const emit = useCallback(\n (name: TechnoSpamEventName, payload: EntityEventPayload & Record<string, unknown> = {}) => {\n bus.emitCustom(name, payload, { component: 'microfe-technospam' });\n },\n [bus]\n );\n\n return { emit };\n}\n"],"mappings":";;;AA8CA,SAAgB,IAAyB;CACvC,IAAM,IAAM,GAAa;AASzB,QAAO,EAAE,MAPI,GACV,GAA2B,IAAwD,EAAE,KAAK;AACzF,IAAI,WAAW,GAAM,GAAS,EAAE,WAAW,sBAAsB,CAAC;IAEpE,CAAC,EAAI,CACN,EAEc"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface PageViewPayload {
|
|
2
|
+
page: string;
|
|
3
|
+
route: string;
|
|
4
|
+
product: 'technospam';
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Fire a product-specific page-view analytics event once per route mount.
|
|
8
|
+
*
|
|
9
|
+
* The shell's RybbitSink forwards `technospam.page.viewed` to Rybbit Cloud
|
|
10
|
+
* when a siteId is configured; otherwise the event still flows to backend
|
|
11
|
+
* audit/telemetry sinks via the shared event bus.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useTechnoSpamPageView(page: string): void;
|
|
14
|
+
//# sourceMappingURL=useTechnoSpamPageView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTechnoSpamPageView.d.ts","sourceRoot":"","sources":["../../../src/technospam/hooks/useTechnoSpamPageView.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAexD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useTechnoSpamAnalytics as e } from "./useTechnoSpamAnalytics.js";
|
|
2
|
+
import { useEffect as t } from "react";
|
|
3
|
+
import { useEventBus as n } from "@burdenoff/fe-libs/shared/events";
|
|
4
|
+
//#region src/technospam/hooks/useTechnoSpamPageView.ts
|
|
5
|
+
function r(r) {
|
|
6
|
+
let { emit: i } = e(), a = n();
|
|
7
|
+
t(() => {
|
|
8
|
+
let e = typeof window < "u" ? window.location.pathname : "";
|
|
9
|
+
i("technospam.page.viewed", {
|
|
10
|
+
page: r,
|
|
11
|
+
route: e,
|
|
12
|
+
product: "technospam"
|
|
13
|
+
}), a.emit("nav.route.changed", {
|
|
14
|
+
pathname: e || "/",
|
|
15
|
+
title: r
|
|
16
|
+
}, { component: "microfe-technospam" });
|
|
17
|
+
}, [
|
|
18
|
+
r,
|
|
19
|
+
i,
|
|
20
|
+
a
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { r as useTechnoSpamPageView };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=useTechnoSpamPageView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTechnoSpamPageView.js","names":[],"sources":["../../../src/technospam/hooks/useTechnoSpamPageView.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\nimport { useTechnoSpamAnalytics } from './useTechnoSpamAnalytics';\n\nexport interface PageViewPayload {\n page: string;\n route: string;\n product: 'technospam';\n}\n\n/**\n * Fire a product-specific page-view analytics event once per route mount.\n *\n * The shell's RybbitSink forwards `technospam.page.viewed` to Rybbit Cloud\n * when a siteId is configured; otherwise the event still flows to backend\n * audit/telemetry sinks via the shared event bus.\n */\nexport function useTechnoSpamPageView(page: string): void {\n const { emit } = useTechnoSpamAnalytics();\n const bus = useEventBus();\n\n useEffect(() => {\n const route = typeof window !== 'undefined' ? window.location.pathname : '';\n emit('technospam.page.viewed', { page, route, product: 'technospam' });\n // Also emit the generic shell route-changed event so downstream sinks\n // (Otel, backend audit) receive it even if the shell nav event missed it.\n bus.emit(\n 'nav.route.changed',\n { pathname: route || '/', title: page },\n { component: 'microfe-technospam' }\n );\n }, [page, emit, bus]);\n}\n"],"mappings":";;;;AAiBA,SAAgB,EAAsB,GAAoB;CACxD,IAAM,EAAE,YAAS,GAAwB,EACnC,IAAM,GAAa;AAEzB,SAAgB;EACd,IAAM,IAAQ,OAAO,SAAW,MAAc,OAAO,SAAS,WAAW;AAIzE,EAHA,EAAK,0BAA0B;GAAE;GAAM;GAAO,SAAS;GAAc,CAAC,EAGtE,EAAI,KACF,qBACA;GAAE,UAAU,KAAS;GAAK,OAAO;GAAM,EACvC,EAAE,WAAW,sBAAsB,CACpC;IACA;EAAC;EAAM;EAAM;EAAI,CAAC"}
|
package/dist/technospam/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminAdminDashboardPagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/AdminAdminDashboardPagePage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminAdminDashboardPagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/AdminAdminDashboardPagePage.tsx"],"names":[],"mappings":"AA2zCA,wBAAgB,2BAA2B,gCAqD1C"}
|