snow-flow 3.4.35 → 3.4.39

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 (50) hide show
  1. package/README.md +412 -287
  2. package/dist/cli/deploy-artifact.js +2 -2
  3. package/dist/mcp/servicenow-deployment-mcp.js +1 -1
  4. package/dist/mcp/servicenow-mcp-server.js +2 -2
  5. package/dist/mcp/shared/mcp-logger.js +6 -12
  6. package/dist/queen/agent-factory.js +134 -52
  7. package/dist/queen/servicenow-queen.d.ts +127 -2
  8. package/dist/queen/servicenow-queen.js +978 -618
  9. package/dist/services/widget-deployment-service.d.ts +1 -1
  10. package/dist/services/widget-deployment-service.js +1 -1
  11. package/dist/templates/claude-md-template.d.ts +1 -1
  12. package/dist/templates/claude-md-template.js +2 -2
  13. package/dist/types/servicenow.types.d.ts +1 -1
  14. package/dist/utils/dependency-detector.d.ts +1 -1
  15. package/dist/utils/dependency-detector.js +1 -1
  16. package/dist/utils/servicenow-client.d.ts +1 -1
  17. package/dist/utils/servicenow-client.js +4 -8
  18. package/package.json +1 -1
  19. package/website/components/README.md +419 -0
  20. package/website/components/code-display/CodeDisplay.css +583 -0
  21. package/website/components/code-display/CodeDisplay.html +200 -0
  22. package/website/components/code-display/CodeDisplay.js +375 -0
  23. package/website/components/code-display/CodeDisplay.jsx +268 -0
  24. package/website/components/demo/ComponentLibraryDemo.html +845 -0
  25. package/website/components/feature-cards/FeatureCards.css +573 -0
  26. package/website/components/feature-cards/FeatureCards.html +247 -0
  27. package/website/components/feature-cards/FeatureCards.js +382 -0
  28. package/website/components/feature-cards/FeatureCards.jsx +235 -0
  29. package/website/components/hero/Hero.css +558 -0
  30. package/website/components/hero/Hero.html +98 -0
  31. package/website/components/hero/Hero.js +415 -0
  32. package/website/components/hero/Hero.jsx +214 -0
  33. package/website/components/interactive/InteractiveElements.css +776 -0
  34. package/website/components/interactive/InteractiveElements.html +283 -0
  35. package/website/components/interactive/InteractiveElements.js +489 -0
  36. package/website/components/interactive/InteractiveElements.jsx +444 -0
  37. package/website/components/layout/LayoutComponents.css +697 -0
  38. package/website/components/layout/LayoutComponents.html +374 -0
  39. package/website/components/layout/LayoutComponents.js +447 -0
  40. package/website/components/layout/LayoutComponents.jsx +379 -0
  41. package/website/components/navigation/Navigation.css +383 -0
  42. package/website/components/navigation/Navigation.html +89 -0
  43. package/website/components/navigation/Navigation.js +248 -0
  44. package/website/components/navigation/Navigation.jsx +124 -0
  45. package/website/css/animations.css +854 -0
  46. package/website/css/style.css +916 -948
  47. package/website/index.html +394 -424
  48. package/website/js/animations.js +707 -0
  49. package/website/js/main.js +310 -383
  50. package/website/mcp-servers.html +310 -0
@@ -0,0 +1,235 @@
1
+ import React, { useState, useEffect, useRef } from 'react';
2
+ import './FeatureCards.css';
3
+
4
+ const FeatureCard = ({
5
+ icon,
6
+ title,
7
+ description,
8
+ link,
9
+ index = 0,
10
+ animationDelay = 0,
11
+ isVisible = false
12
+ }) => {
13
+ const [isHovered, setIsHovered] = useState(false);
14
+ const cardRef = useRef(null);
15
+
16
+ const handleCardClick = () => {
17
+ if (link) {
18
+ if (link.startsWith('#')) {
19
+ const target = document.querySelector(link);
20
+ if (target) {
21
+ const offset = 80;
22
+ const targetPosition = target.offsetTop - offset;
23
+ window.scrollTo({
24
+ top: targetPosition,
25
+ behavior: 'smooth'
26
+ });
27
+ }
28
+ } else {
29
+ window.open(link, '_blank', 'noopener,noreferrer');
30
+ }
31
+ }
32
+ };
33
+
34
+ return (
35
+ <div
36
+ ref={cardRef}
37
+ className={`sf-feature-card ${isVisible ? 'sf-feature-card--visible' : ''} ${link ? 'sf-feature-card--clickable' : ''}`}
38
+ style={{
39
+ animationDelay: `${animationDelay}ms`,
40
+ '--index': index
41
+ }}
42
+ onMouseEnter={() => setIsHovered(true)}
43
+ onMouseLeave={() => setIsHovered(false)}
44
+ onClick={handleCardClick}
45
+ role={link ? 'button' : 'article'}
46
+ tabIndex={link ? 0 : -1}
47
+ onKeyDown={(e) => {
48
+ if (link && (e.key === 'Enter' || e.key === ' ')) {
49
+ e.preventDefault();
50
+ handleCardClick();
51
+ }
52
+ }}
53
+ >
54
+ {/* 3D Border Effect */}
55
+ <div className="sf-feature-card__border">
56
+ <div className="sf-feature-card__border-top"></div>
57
+ <div className="sf-feature-card__border-right"></div>
58
+ <div className="sf-feature-card__border-bottom"></div>
59
+ <div className="sf-feature-card__border-left"></div>
60
+ </div>
61
+
62
+ {/* Background Glow */}
63
+ <div className="sf-feature-card__glow"></div>
64
+
65
+ {/* Content */}
66
+ <div className="sf-feature-card__content">
67
+ {/* Icon */}
68
+ <div className="sf-feature-card__icon-wrapper">
69
+ <div className={`sf-feature-card__icon ${isHovered ? 'sf-feature-card__icon--animated' : ''}`}>
70
+ {typeof icon === 'string' ? (
71
+ <span role="img" aria-hidden="true">{icon}</span>
72
+ ) : (
73
+ icon
74
+ )}
75
+ </div>
76
+ </div>
77
+
78
+ {/* Text Content */}
79
+ <div className="sf-feature-card__text">
80
+ <h3 className="sf-feature-card__title">{title}</h3>
81
+ <p className="sf-feature-card__description">{description}</p>
82
+ </div>
83
+
84
+ {/* Hover Arrow */}
85
+ {link && (
86
+ <div className={`sf-feature-card__arrow ${isHovered ? 'sf-feature-card__arrow--visible' : ''}`}>
87
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
88
+ <path d="M7 17L17 7M17 7H7M17 7V17"/>
89
+ </svg>
90
+ </div>
91
+ )}
92
+ </div>
93
+
94
+ {/* Ripple Effect */}
95
+ <div className="sf-feature-card__ripple"></div>
96
+ </div>
97
+ );
98
+ };
99
+
100
+ const FeatureCards = ({
101
+ title = "Features",
102
+ subtitle = "Discover what makes our platform unique",
103
+ features = [
104
+ {
105
+ icon: "⚡",
106
+ title: "Lightning Fast",
107
+ description: "Optimized performance with cutting-edge technology for instant results.",
108
+ link: "#performance"
109
+ },
110
+ {
111
+ icon: "🔒",
112
+ title: "Secure by Design",
113
+ description: "Enterprise-grade security with end-to-end encryption and compliance.",
114
+ link: "#security"
115
+ },
116
+ {
117
+ icon: "🚀",
118
+ title: "Easy Integration",
119
+ description: "Seamless integration with your existing tools and workflows.",
120
+ link: "#integration"
121
+ },
122
+ {
123
+ icon: "📊",
124
+ title: "Real-time Analytics",
125
+ description: "Comprehensive insights and analytics to drive informed decisions.",
126
+ link: "#analytics"
127
+ },
128
+ {
129
+ icon: "🎯",
130
+ title: "Precision Control",
131
+ description: "Granular control over every aspect of your system operations.",
132
+ link: "#control"
133
+ },
134
+ {
135
+ icon: "🔄",
136
+ title: "Auto Updates",
137
+ description: "Stay current with automatic updates and feature enhancements.",
138
+ link: "#updates"
139
+ }
140
+ ],
141
+ columns = "auto-fit",
142
+ minCardWidth = "300px",
143
+ maxCardWidth = "400px",
144
+ className = ""
145
+ }) => {
146
+ const [isVisible, setIsVisible] = useState(false);
147
+ const [visibleCards, setVisibleCards] = useState(new Set());
148
+ const containerRef = useRef(null);
149
+
150
+ useEffect(() => {
151
+ const observer = new IntersectionObserver(
152
+ ([entry]) => {
153
+ if (entry.isIntersecting) {
154
+ setIsVisible(true);
155
+
156
+ // Stagger card animations
157
+ features.forEach((_, index) => {
158
+ setTimeout(() => {
159
+ setVisibleCards(prev => new Set([...prev, index]));
160
+ }, index * 150);
161
+ });
162
+ }
163
+ },
164
+ { threshold: 0.1 }
165
+ );
166
+
167
+ if (containerRef.current) {
168
+ observer.observe(containerRef.current);
169
+ }
170
+
171
+ return () => observer.disconnect();
172
+ }, [features]);
173
+
174
+ const gridStyle = {
175
+ gridTemplateColumns: columns === 'auto-fit'
176
+ ? `repeat(auto-fit, minmax(${minCardWidth}, 1fr))`
177
+ : `repeat(${columns}, minmax(${minCardWidth}, ${maxCardWidth}))`
178
+ };
179
+
180
+ return (
181
+ <section
182
+ ref={containerRef}
183
+ className={`sf-feature-cards ${isVisible ? 'sf-feature-cards--visible' : ''} ${className}`}
184
+ >
185
+ <div className="sf-feature-cards__container">
186
+ {/* Header */}
187
+ <div className="sf-feature-cards__header">
188
+ <h2 className="sf-feature-cards__title">{title}</h2>
189
+ {subtitle && (
190
+ <p className="sf-feature-cards__subtitle">{subtitle}</p>
191
+ )}
192
+ </div>
193
+
194
+ {/* Feature Grid */}
195
+ <div
196
+ className="sf-feature-cards__grid"
197
+ style={gridStyle}
198
+ >
199
+ {features.map((feature, index) => (
200
+ <FeatureCard
201
+ key={index}
202
+ icon={feature.icon}
203
+ title={feature.title}
204
+ description={feature.description}
205
+ link={feature.link}
206
+ index={index}
207
+ animationDelay={index * 150}
208
+ isVisible={visibleCards.has(index)}
209
+ />
210
+ ))}
211
+ </div>
212
+
213
+ {/* Optional Call-to-Action */}
214
+ {features.length > 6 && (
215
+ <div className={`sf-feature-cards__cta ${isVisible ? 'sf-feature-cards__cta--visible' : ''}`}>
216
+ <button className="sf-feature-cards__cta-button">
217
+ View All Features
218
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
219
+ <path d="M5 12H19M12 5L19 12L12 19"/>
220
+ </svg>
221
+ </button>
222
+ </div>
223
+ )}
224
+ </div>
225
+
226
+ {/* Background Elements */}
227
+ <div className="sf-feature-cards__background">
228
+ <div className="sf-feature-cards__bg-grid"></div>
229
+ <div className="sf-feature-cards__bg-gradient"></div>
230
+ </div>
231
+ </section>
232
+ );
233
+ };
234
+
235
+ export default FeatureCards;