@pablo2410/shared-ui 0.3.4 → 0.3.5
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/services/index.d.ts +43 -0
- package/dist/services/index.js +126 -0
- package/dist/services/index.js.map +1 -0
- package/package.json +6 -2
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Service Catalog — Single source of truth for all Oplytics.digital services.
|
|
3
|
+
*
|
|
4
|
+
* Consumed by:
|
|
5
|
+
* - oplytics-platform (ServiceHub.tsx) — service cards, access gating
|
|
6
|
+
* - oplytics-marketing-site (services.ts) — marketing pages, hero sections
|
|
7
|
+
*
|
|
8
|
+
* Each consumer extends with context-specific fields locally:
|
|
9
|
+
* - Platform adds: route, external URL, React icon component
|
|
10
|
+
* - Marketing adds: heroImage, demoImage, problem, howItWorks, results, aiFeatures
|
|
11
|
+
*/
|
|
12
|
+
type ServiceStatus = "live" | "in-development" | "coming-soon";
|
|
13
|
+
type ServiceCategory = "core" | "hub";
|
|
14
|
+
interface ServiceDefinition {
|
|
15
|
+
/** Unique identifier used for DB lookups, URL slugs, and cross-referencing */
|
|
16
|
+
slug: string;
|
|
17
|
+
/** Display name shown in cards, headers, and navigation */
|
|
18
|
+
name: string;
|
|
19
|
+
/** Short one-line value proposition */
|
|
20
|
+
tagline: string;
|
|
21
|
+
/** Longer description (1-2 sentences) for cards and summaries */
|
|
22
|
+
description: string;
|
|
23
|
+
/** Lucide icon name (string) — consumers resolve to component locally */
|
|
24
|
+
icon: string;
|
|
25
|
+
/** Hex accent color for cards, badges, and theming */
|
|
26
|
+
accentColor: string;
|
|
27
|
+
/** Current availability status */
|
|
28
|
+
status: ServiceStatus;
|
|
29
|
+
/** Core = standalone product, Hub = extension/add-on module */
|
|
30
|
+
category: ServiceCategory;
|
|
31
|
+
/** Subdomain hostname (without protocol) — null if hosted on portal */
|
|
32
|
+
subdomain: string | null;
|
|
33
|
+
}
|
|
34
|
+
declare const SERVICE_CATALOG: ServiceDefinition[];
|
|
35
|
+
declare const coreServices: ServiceDefinition[];
|
|
36
|
+
declare const hubServices: ServiceDefinition[];
|
|
37
|
+
declare const liveServices: ServiceDefinition[];
|
|
38
|
+
declare const inDevServices: ServiceDefinition[];
|
|
39
|
+
declare const comingSoonServices: ServiceDefinition[];
|
|
40
|
+
declare function getServiceBySlug(slug: string): ServiceDefinition | undefined;
|
|
41
|
+
declare function getServiceUrl(service: ServiceDefinition): string | null;
|
|
42
|
+
|
|
43
|
+
export { SERVICE_CATALOG, type ServiceCategory, type ServiceDefinition, type ServiceStatus, comingSoonServices, coreServices, getServiceBySlug, getServiceUrl, hubServices, inDevServices, liveServices };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// src/services/catalog.ts
|
|
2
|
+
var SERVICE_CATALOG = [
|
|
3
|
+
// ─── CORE SERVICES ───
|
|
4
|
+
{
|
|
5
|
+
slug: "policy-deployment",
|
|
6
|
+
name: "Policy Deployment",
|
|
7
|
+
tagline: "Align strategy to execution",
|
|
8
|
+
description: "Hoshin Kanri and X-matrix planning. Cascade strategic objectives through every level of your organisation with live tracking and bowling charts.",
|
|
9
|
+
icon: "Target",
|
|
10
|
+
accentColor: "#F59E0B",
|
|
11
|
+
status: "live",
|
|
12
|
+
category: "core",
|
|
13
|
+
subdomain: null
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
slug: "sqdcp",
|
|
17
|
+
name: "SQDCP Dashboard",
|
|
18
|
+
tagline: "Daily management boards, digitised",
|
|
19
|
+
description: "Digital SQDCP boards that drive daily accountability. Safety, Quality, Delivery, Cost, and People metrics at a glance for every team.",
|
|
20
|
+
icon: "LayoutGrid",
|
|
21
|
+
accentColor: "#1DB8CE",
|
|
22
|
+
status: "live",
|
|
23
|
+
category: "core",
|
|
24
|
+
subdomain: "sqdcp.oplytics.digital"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
slug: "oee-manager",
|
|
28
|
+
name: "OEE Manager",
|
|
29
|
+
tagline: "Real-time equipment effectiveness tracking",
|
|
30
|
+
description: "Monitor Overall Equipment Effectiveness in real-time. Track availability, performance, and quality metrics across your entire production line.",
|
|
31
|
+
icon: "Gauge",
|
|
32
|
+
accentColor: "#8C34E9",
|
|
33
|
+
status: "live",
|
|
34
|
+
category: "core",
|
|
35
|
+
subdomain: "oeemanager.oplytics.digital"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
slug: "action-manager",
|
|
39
|
+
name: "Action Manager",
|
|
40
|
+
tagline: "Track every action to closure",
|
|
41
|
+
description: "Capture, assign, and track corrective and preventive actions from any source. Ensure nothing falls through the cracks.",
|
|
42
|
+
icon: "ClipboardCheck",
|
|
43
|
+
accentColor: "#22C55E",
|
|
44
|
+
status: "live",
|
|
45
|
+
category: "core",
|
|
46
|
+
subdomain: "actionmanager.oplytics.digital"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
slug: "connect",
|
|
50
|
+
name: "OplyticsConnect",
|
|
51
|
+
tagline: "Integrate machines, sensors, and systems",
|
|
52
|
+
description: "Industrial IoT connectivity layer. Connect PLCs, sensors, and legacy systems to the Oplytics platform with zero-code configuration.",
|
|
53
|
+
icon: "Plug",
|
|
54
|
+
accentColor: "#1DB8CE",
|
|
55
|
+
status: "in-development",
|
|
56
|
+
category: "core",
|
|
57
|
+
subdomain: "connect.oplytics.digital"
|
|
58
|
+
},
|
|
59
|
+
// ─── HUB SERVICES ───
|
|
60
|
+
{
|
|
61
|
+
slug: "safety-manager",
|
|
62
|
+
name: "Safety Manager",
|
|
63
|
+
tagline: "Proactive safety culture, powered by data",
|
|
64
|
+
description: "Incident reporting, hazard tracking, safety observations, and compliance management in one unified platform.",
|
|
65
|
+
icon: "Shield",
|
|
66
|
+
accentColor: "#EF4444",
|
|
67
|
+
status: "coming-soon",
|
|
68
|
+
category: "hub",
|
|
69
|
+
subdomain: "safetymanager.oplytics.digital"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
slug: "quality-manager",
|
|
73
|
+
name: "Quality Manager",
|
|
74
|
+
tagline: "End-to-end quality assurance",
|
|
75
|
+
description: "Non-conformance tracking, CAPA management, audit scheduling, and quality metrics dashboards.",
|
|
76
|
+
icon: "CheckCircle",
|
|
77
|
+
accentColor: "#22C55E",
|
|
78
|
+
status: "coming-soon",
|
|
79
|
+
category: "hub",
|
|
80
|
+
subdomain: null
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
slug: "certification-manager",
|
|
84
|
+
name: "Certification Manager",
|
|
85
|
+
tagline: "Stay audit-ready, always",
|
|
86
|
+
description: "Manage ISO, IATF, and other certification requirements. Document control, audit trails, and compliance tracking.",
|
|
87
|
+
icon: "Award",
|
|
88
|
+
accentColor: "#F97316",
|
|
89
|
+
status: "coming-soon",
|
|
90
|
+
category: "hub",
|
|
91
|
+
subdomain: null
|
|
92
|
+
}
|
|
93
|
+
];
|
|
94
|
+
var coreServices = SERVICE_CATALOG.filter(
|
|
95
|
+
(s) => s.category === "core"
|
|
96
|
+
);
|
|
97
|
+
var hubServices = SERVICE_CATALOG.filter((s) => s.category === "hub");
|
|
98
|
+
var liveServices = SERVICE_CATALOG.filter(
|
|
99
|
+
(s) => s.status === "live"
|
|
100
|
+
);
|
|
101
|
+
var inDevServices = SERVICE_CATALOG.filter(
|
|
102
|
+
(s) => s.status === "in-development"
|
|
103
|
+
);
|
|
104
|
+
var comingSoonServices = SERVICE_CATALOG.filter(
|
|
105
|
+
(s) => s.status === "coming-soon"
|
|
106
|
+
);
|
|
107
|
+
function getServiceBySlug(slug) {
|
|
108
|
+
return SERVICE_CATALOG.find((s) => s.slug === slug);
|
|
109
|
+
}
|
|
110
|
+
function getServiceUrl(service) {
|
|
111
|
+
if (service.subdomain) {
|
|
112
|
+
return `https://${service.subdomain}`;
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
export {
|
|
117
|
+
SERVICE_CATALOG,
|
|
118
|
+
comingSoonServices,
|
|
119
|
+
coreServices,
|
|
120
|
+
getServiceBySlug,
|
|
121
|
+
getServiceUrl,
|
|
122
|
+
hubServices,
|
|
123
|
+
inDevServices,
|
|
124
|
+
liveServices
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/services/catalog.ts"],"sourcesContent":["/**\n * Shared Service Catalog — Single source of truth for all Oplytics.digital services.\n *\n * Consumed by:\n * - oplytics-platform (ServiceHub.tsx) — service cards, access gating\n * - oplytics-marketing-site (services.ts) — marketing pages, hero sections\n *\n * Each consumer extends with context-specific fields locally:\n * - Platform adds: route, external URL, React icon component\n * - Marketing adds: heroImage, demoImage, problem, howItWorks, results, aiFeatures\n */\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type ServiceStatus = \"live\" | \"in-development\" | \"coming-soon\";\nexport type ServiceCategory = \"core\" | \"hub\";\n\nexport interface ServiceDefinition {\n /** Unique identifier used for DB lookups, URL slugs, and cross-referencing */\n slug: string;\n /** Display name shown in cards, headers, and navigation */\n name: string;\n /** Short one-line value proposition */\n tagline: string;\n /** Longer description (1-2 sentences) for cards and summaries */\n description: string;\n /** Lucide icon name (string) — consumers resolve to component locally */\n icon: string;\n /** Hex accent color for cards, badges, and theming */\n accentColor: string;\n /** Current availability status */\n status: ServiceStatus;\n /** Core = standalone product, Hub = extension/add-on module */\n category: ServiceCategory;\n /** Subdomain hostname (without protocol) — null if hosted on portal */\n subdomain: string | null;\n}\n\n// ---------------------------------------------------------------------------\n// Catalog\n// ---------------------------------------------------------------------------\n\nexport const SERVICE_CATALOG: ServiceDefinition[] = [\n // ─── CORE SERVICES ───\n {\n slug: \"policy-deployment\",\n name: \"Policy Deployment\",\n tagline: \"Align strategy to execution\",\n description:\n \"Hoshin Kanri and X-matrix planning. Cascade strategic objectives through every level of your organisation with live tracking and bowling charts.\",\n icon: \"Target\",\n accentColor: \"#F59E0B\",\n status: \"live\",\n category: \"core\",\n subdomain: null,\n },\n {\n slug: \"sqdcp\",\n name: \"SQDCP Dashboard\",\n tagline: \"Daily management boards, digitised\",\n description:\n \"Digital SQDCP boards that drive daily accountability. Safety, Quality, Delivery, Cost, and People metrics at a glance for every team.\",\n icon: \"LayoutGrid\",\n accentColor: \"#1DB8CE\",\n status: \"live\",\n category: \"core\",\n subdomain: \"sqdcp.oplytics.digital\",\n },\n {\n slug: \"oee-manager\",\n name: \"OEE Manager\",\n tagline: \"Real-time equipment effectiveness tracking\",\n description:\n \"Monitor Overall Equipment Effectiveness in real-time. Track availability, performance, and quality metrics across your entire production line.\",\n icon: \"Gauge\",\n accentColor: \"#8C34E9\",\n status: \"live\",\n category: \"core\",\n subdomain: \"oeemanager.oplytics.digital\",\n },\n {\n slug: \"action-manager\",\n name: \"Action Manager\",\n tagline: \"Track every action to closure\",\n description:\n \"Capture, assign, and track corrective and preventive actions from any source. Ensure nothing falls through the cracks.\",\n icon: \"ClipboardCheck\",\n accentColor: \"#22C55E\",\n status: \"live\",\n category: \"core\",\n subdomain: \"actionmanager.oplytics.digital\",\n },\n {\n slug: \"connect\",\n name: \"OplyticsConnect\",\n tagline: \"Integrate machines, sensors, and systems\",\n description:\n \"Industrial IoT connectivity layer. Connect PLCs, sensors, and legacy systems to the Oplytics platform with zero-code configuration.\",\n icon: \"Plug\",\n accentColor: \"#1DB8CE\",\n status: \"in-development\",\n category: \"core\",\n subdomain: \"connect.oplytics.digital\",\n },\n\n // ─── HUB SERVICES ───\n {\n slug: \"safety-manager\",\n name: \"Safety Manager\",\n tagline: \"Proactive safety culture, powered by data\",\n description:\n \"Incident reporting, hazard tracking, safety observations, and compliance management in one unified platform.\",\n icon: \"Shield\",\n accentColor: \"#EF4444\",\n status: \"coming-soon\",\n category: \"hub\",\n subdomain: \"safetymanager.oplytics.digital\",\n },\n {\n slug: \"quality-manager\",\n name: \"Quality Manager\",\n tagline: \"End-to-end quality assurance\",\n description:\n \"Non-conformance tracking, CAPA management, audit scheduling, and quality metrics dashboards.\",\n icon: \"CheckCircle\",\n accentColor: \"#22C55E\",\n status: \"coming-soon\",\n category: \"hub\",\n subdomain: null,\n },\n {\n slug: \"certification-manager\",\n name: \"Certification Manager\",\n tagline: \"Stay audit-ready, always\",\n description:\n \"Manage ISO, IATF, and other certification requirements. Document control, audit trails, and compliance tracking.\",\n icon: \"Award\",\n accentColor: \"#F97316\",\n status: \"coming-soon\",\n category: \"hub\",\n subdomain: null,\n },\n];\n\n// ---------------------------------------------------------------------------\n// Derived helpers\n// ---------------------------------------------------------------------------\n\nexport const coreServices = SERVICE_CATALOG.filter(\n (s) => s.category === \"core\",\n);\nexport const hubServices = SERVICE_CATALOG.filter((s) => s.category === \"hub\");\nexport const liveServices = SERVICE_CATALOG.filter(\n (s) => s.status === \"live\",\n);\nexport const inDevServices = SERVICE_CATALOG.filter(\n (s) => s.status === \"in-development\",\n);\nexport const comingSoonServices = SERVICE_CATALOG.filter(\n (s) => s.status === \"coming-soon\",\n);\n\nexport function getServiceBySlug(\n slug: string,\n): ServiceDefinition | undefined {\n return SERVICE_CATALOG.find((s) => s.slug === slug);\n}\n\nexport function getServiceUrl(service: ServiceDefinition): string | null {\n if (service.subdomain) {\n return `https://${service.subdomain}`;\n }\n return null;\n}\n"],"mappings":";AA4CO,IAAM,kBAAuC;AAAA;AAAA,EAElD;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AACF;AAMO,IAAM,eAAe,gBAAgB;AAAA,EAC1C,CAAC,MAAM,EAAE,aAAa;AACxB;AACO,IAAM,cAAc,gBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,KAAK;AACtE,IAAM,eAAe,gBAAgB;AAAA,EAC1C,CAAC,MAAM,EAAE,WAAW;AACtB;AACO,IAAM,gBAAgB,gBAAgB;AAAA,EAC3C,CAAC,MAAM,EAAE,WAAW;AACtB;AACO,IAAM,qBAAqB,gBAAgB;AAAA,EAChD,CAAC,MAAM,EAAE,WAAW;AACtB;AAEO,SAAS,iBACd,MAC+B;AAC/B,SAAO,gBAAgB,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AACpD;AAEO,SAAS,cAAc,SAA2C;AACvE,MAAI,QAAQ,WAAW;AACrB,WAAO,WAAW,QAAQ,SAAS;AAAA,EACrC;AACA,SAAO;AACT;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pablo2410/shared-ui",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Shared UI component library for all Oplytics.digital subdomains",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -40,6 +40,10 @@
|
|
|
40
40
|
"./primitives": {
|
|
41
41
|
"types": "./dist/primitives/index.d.ts",
|
|
42
42
|
"import": "./dist/primitives/index.js"
|
|
43
|
+
},
|
|
44
|
+
"./services": {
|
|
45
|
+
"types": "./dist/services/index.d.ts",
|
|
46
|
+
"import": "./dist/services/index.js"
|
|
43
47
|
}
|
|
44
48
|
},
|
|
45
49
|
"files": [
|
|
@@ -120,4 +124,4 @@
|
|
|
120
124
|
},
|
|
121
125
|
"license": "UNLICENSED",
|
|
122
126
|
"private": false
|
|
123
|
-
}
|
|
127
|
+
}
|