@sudarshanaui/ui 2.0.0 → 2.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudarshanaui/ui",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "A collection of modern, animated React components.",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
@@ -18,22 +18,17 @@ const styles = `
18
18
 
19
19
  `;
20
20
 
21
- export const AdminchoiceCreativeGridMenu = (props) => {
22
- let html = `
23
- <nav class="sd-brut-nav">
24
- <a href="#" class="sd-brut-link"><span>01</span> WORK</a>
25
- <a href="#" class="sd-brut-link"><span>02</span> STUDIO</a>
26
- <a href="#" class="sd-brut-link"><span>03</span> CONTACT</a>
27
- </nav>
28
- `;
29
-
30
- // Inject props
31
-
32
-
21
+ export const AdminchoiceCreativeGridMenu = ({ items = [{ label: "WORK", number: "01" }, { label: "STUDIO", number: "02" }, { label: "CONTACT", number: "03" }], ...rest }) => {
33
22
  return (
34
- <div {...props} className="sudarshana-component-AdminchoiceCreativeGridMenu">
23
+ <div {...rest} className="sudarshana-component-AdminchoiceCreativeGridMenu">
35
24
  <style>{styles}</style>
36
- <div dangerouslySetInnerHTML={{ __html: html }} />
25
+ <nav className="sd-brut-nav">
26
+ {items.map((item, index) => (
27
+ <a key={index} href={item.href || "#"} className="sd-brut-link">
28
+ <span>{item.number}</span> {item.label}
29
+ </a>
30
+ ))}
31
+ </nav>
37
32
  </div>
38
33
  );
39
34
  };
@@ -18,18 +18,13 @@ const styles = `
18
18
 
19
19
  `;
20
20
 
21
- export const AdminchoiceGlitchTitle = (props) => {
22
- let html = `
23
- <h1 class="sd-rgb-text" data-text="SYSTEM_FAILURE">SYSTEM_FAILURE</h1>
24
- `;
25
-
26
- // Inject props
27
-
28
-
21
+ export const AdminchoiceGlitchTitle = ({ label = "SYSTEM_FAILURE", ...rest }) => {
29
22
  return (
30
- <div {...props} className="sudarshana-component-AdminchoiceGlitchTitle">
23
+ <div {...rest} className="sudarshana-component-AdminchoiceGlitchTitle">
31
24
  <style>{styles}</style>
32
- <div dangerouslySetInnerHTML={{ __html: html }} />
25
+ <h1 className="sd-rgb-text" data-text={label}>
26
+ {label}
27
+ </h1>
33
28
  </div>
34
29
  );
35
30
  };
@@ -17,25 +17,22 @@ const styles = `
17
17
 
18
18
  `;
19
19
 
20
- export const AdminchoiceInteractiveToggle = (props) => {
21
- let html = `
22
- <label class="sd-pill-toggle">
23
- <input type="checkbox">
24
- <div class="sd-pill-track">
25
- <span class="sd-label-off">OFF</span>
26
- <span class="sd-label-on">ON</span>
27
- </div>
28
- <div class="sd-pill-thumb"></div>
29
- </label>
30
- `;
31
-
32
- // Inject props
33
-
34
-
20
+ export const AdminchoiceInteractiveToggle = ({ checked, onChange, ...rest }) => {
35
21
  return (
36
- <div {...props} className="sudarshana-component-AdminchoiceInteractiveToggle">
22
+ <div {...rest} className="sudarshana-component-AdminchoiceInteractiveToggle">
37
23
  <style>{styles}</style>
38
- <div dangerouslySetInnerHTML={{ __html: html }} />
24
+ <label className="sd-pill-toggle">
25
+ <input
26
+ type="checkbox"
27
+ checked={checked}
28
+ onChange={onChange}
29
+ />
30
+ <div className="sd-pill-track">
31
+ <span className="sd-label-off">OFF</span>
32
+ <span className="sd-label-on">ON</span>
33
+ </div>
34
+ <div className="sd-pill-thumb"></div>
35
+ </label>
39
36
  </div>
40
37
  );
41
38
  };
@@ -18,31 +18,21 @@ const styles = `
18
18
 
19
19
  `;
20
20
 
21
- export const AdminchoiceKineticMarqueeButton = (props) => {
22
- let html = `
23
- <button class="sd-kinetic-mag-btn">
24
- <div class="sd-marquee-wrap">
25
- <div class="sd-marquee-track">
26
- <span>START PROJECT</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" class="sd-icon"/>
27
- <span>START PROJECT</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" class="sd-icon"/>
28
- <span>START PROJECT</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" class="sd-icon"/>
29
- </div>
30
- <div class="sd-marquee-track">
31
- <span>START PROJECT</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" class="sd-icon"/>
32
- <span>START PROJECT</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" class="sd-icon"/>
33
- <span>START PROJECT</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" class="sd-icon"/>
34
- </div>
35
- </div>
36
- </button>
37
- `;
38
-
39
- // Inject props
40
-
41
-
21
+ export const AdminchoiceKineticMarqueeButton = ({ label = "START PROJECT", ...rest }) => {
42
22
  return (
43
- <div {...props} className="sudarshana-component-AdminchoiceKineticMarqueeButton">
23
+ <div {...rest} className="sudarshana-component-AdminchoiceKineticMarqueeButton">
44
24
  <style>{styles}</style>
45
- <div dangerouslySetInnerHTML={{ __html: html }} />
25
+ <button className="sd-kinetic-mag-btn">
26
+ <div className="sd-marquee-wrap">
27
+ {[1, 2].map((i) => (
28
+ <div key={i} className="sd-marquee-track">
29
+ <span>{label}</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" className="sd-icon" alt="" />
30
+ <span>{label}</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" className="sd-icon" alt="" />
31
+ <span>{label}</span><img src="https://api.iconify.design/ph:arrow-right-bold.svg?color=white" className="sd-icon" alt="" />
32
+ </div>
33
+ ))}
34
+ </div>
35
+ </button>
46
36
  </div>
47
37
  );
48
38
  };
@@ -18,23 +18,22 @@ const styles = `
18
18
  `;
19
19
 
20
20
  export const AdminchoiceLiquidMorphLoader = (props) => {
21
- let html = `
22
- <div class="sd-gooey-wrap">
23
- <svg style="width:0;height:0;position:absolute;"><filter id="goo-sharp"><feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur"/><feColorMatrix in="blur" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -9" result="goo"/><feComposite in="SourceGraphic" in2="goo" operator="atop"/></filter></svg>
24
- <div class="sd-blobs">
25
- <div class="sd-blob-main"></div>
26
- <div class="sd-blob-orbit"></div>
27
- </div>
28
- </div>
29
- `;
30
-
31
- // Inject props
32
-
33
-
34
21
  return (
35
22
  <div {...props} className="sudarshana-component-AdminchoiceLiquidMorphLoader">
36
23
  <style>{styles}</style>
37
- <div dangerouslySetInnerHTML={{ __html: html }} />
24
+ <div className="sd-gooey-wrap">
25
+ <svg style={{ width: 0, height: 0, position: 'absolute' }}>
26
+ <filter id="goo-sharp">
27
+ <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />
28
+ <feColorMatrix in="blur" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -9" result="goo" />
29
+ <feComposite in="SourceGraphic" in2="goo" operator="atop" />
30
+ </filter>
31
+ </svg>
32
+ <div className="sd-blobs">
33
+ <div className="sd-blob-main"></div>
34
+ <div className="sd-blob-orbit"></div>
35
+ </div>
36
+ </div>
38
37
  </div>
39
38
  );
40
39
  };
@@ -18,22 +18,15 @@ const styles = `
18
18
 
19
19
  `;
20
20
 
21
- export const AdminchoiceMagneticAttractionButton = (props) => {
22
- let html = `
23
- <button class="sd-magnet-core">
24
- <span class="sd-magnet-text">MAGNETIC</span>
25
- <div class="sd-magnet-field"></div>
26
- <div class="sd-magnet-ripple"></div>
27
- </button>
28
- `;
29
-
30
- // Inject props
31
-
32
-
21
+ export const AdminchoiceMagneticAttractionButton = ({ label = "MAGNETIC", ...rest }) => {
33
22
  return (
34
- <div {...props} className="sudarshana-component-AdminchoiceMagneticAttractionButton">
23
+ <div {...rest} className="sudarshana-component-AdminchoiceMagneticAttractionButton">
35
24
  <style>{styles}</style>
36
- <div dangerouslySetInnerHTML={{ __html: html }} />
25
+ <button className="sd-magnet-core">
26
+ <span className="sd-magnet-text">{label}</span>
27
+ <div className="sd-magnet-field"></div>
28
+ <div className="sd-magnet-ripple"></div>
29
+ </button>
37
30
  </div>
38
31
  );
39
32
  };
@@ -19,25 +19,18 @@ const styles = `
19
19
 
20
20
  `;
21
21
 
22
- export const AdminchoiceNoiseGlassCard = (props) => {
23
- let html = `
24
- <div class="sd-grain-card">
25
- <div class="sd-grain-bg"></div>
26
- <div class="sd-grain-content">
27
- <div class="sd-badge">NEW</div>
28
- <h3>FROSTED</h3>
29
- <p>Hyper-realistic Grain</p>
30
- </div>
31
- </div>
32
- `;
33
-
34
- // Inject props
35
-
36
-
22
+ export const AdminchoiceNoiseGlassCard = ({ title = "FROSTED", subtitle = "Hyper-realistic Grain", badge = "NEW", ...rest }) => {
37
23
  return (
38
- <div {...props} className="sudarshana-component-AdminchoiceNoiseGlassCard">
24
+ <div {...rest} className="sudarshana-component-AdminchoiceNoiseGlassCard">
39
25
  <style>{styles}</style>
40
- <div dangerouslySetInnerHTML={{ __html: html }} />
26
+ <div className="sd-grain-card">
27
+ <div className="sd-grain-bg"></div>
28
+ <div className="sd-grain-content">
29
+ <div className="sd-badge">{badge}</div>
30
+ <h3>{title}</h3>
31
+ <p>{subtitle}</p>
32
+ </div>
33
+ </div>
41
34
  </div>
42
35
  );
43
36
  };
@@ -15,21 +15,14 @@ const styles = `
15
15
 
16
16
  `;
17
17
 
18
- export const AdminchoiceParallaxImageLink = (props) => {
19
- let html = `
20
- <a href="#" class="sd-hover-img-link" data-label="VIEW CASE">
21
- <span class="sd-link-text">ARCHITECTURE</span>
22
- <div class="sd-img-float" style="background-image: url('https://picsum.photos/300/200?grayscale')"></div>
23
- </a>
24
- `;
25
-
26
- // Inject props
27
-
28
-
18
+ export const AdminchoiceParallaxImageLink = ({ label = "ARCHITECTURE", image = "https://picsum.photos/300/200?grayscale", href = "#", ...rest }) => {
29
19
  return (
30
- <div {...props} className="sudarshana-component-AdminchoiceParallaxImageLink">
20
+ <div {...rest} className="sudarshana-component-AdminchoiceParallaxImageLink">
31
21
  <style>{styles}</style>
32
- <div dangerouslySetInnerHTML={{ __html: html }} />
22
+ <a href={href} className="sd-hover-img-link" data-label={label}>
23
+ <span className="sd-link-text">{label}</span>
24
+ <div className="sd-img-float" style={{ backgroundImage: `url('${image}')` }}></div>
25
+ </a>
33
26
  </div>
34
27
  );
35
28
  };
@@ -14,20 +14,13 @@ const styles = `
14
14
 
15
15
  `;
16
16
 
17
- export const AdminchoiceRevealMaskText = (props) => {
18
- let html = `
19
- <h1 class="sd-masked-h1" data-label="CREATIVE">
20
- CREATIVE
21
- </h1>
22
- `;
23
-
24
- // Inject props
25
-
26
-
17
+ export const AdminchoiceRevealMaskText = ({ label = "CREATIVE", ...rest }) => {
27
18
  return (
28
- <div {...props} className="sudarshana-component-AdminchoiceRevealMaskText">
19
+ <div {...rest} className="sudarshana-component-AdminchoiceRevealMaskText">
29
20
  <style>{styles}</style>
30
- <div dangerouslySetInnerHTML={{ __html: html }} />
21
+ <h1 className="sd-masked-h1" data-label={label}>
22
+ {label}
23
+ </h1>
31
24
  </div>
32
25
  );
33
26
  };
@@ -18,22 +18,20 @@ const styles = `
18
18
 
19
19
  `;
20
20
 
21
- export const AdminchoiceSpotlightInput = (props) => {
22
- let html = `
23
- <div class="sd-halo-input">
24
- <input type="email" placeholder="notify@me.com">
25
- <div class="sd-halo-border"></div>
26
- <div class="sd-halo-glow"></div>
27
- </div>
28
- `;
29
-
30
- // Inject props
31
-
32
-
21
+ export const AdminchoiceSpotlightInput = ({ value, onChange, placeholder = "notify@me.com", ...rest }) => {
33
22
  return (
34
- <div {...props} className="sudarshana-component-AdminchoiceSpotlightInput">
23
+ <div {...rest} className="sudarshana-component-AdminchoiceSpotlightInput">
35
24
  <style>{styles}</style>
36
- <div dangerouslySetInnerHTML={{ __html: html }} />
25
+ <div className="sd-halo-input">
26
+ <input
27
+ type="email"
28
+ placeholder={placeholder}
29
+ value={value}
30
+ onChange={onChange}
31
+ />
32
+ <div className="sd-halo-border"></div>
33
+ <div className="sd-halo-glow"></div>
34
+ </div>
37
35
  </div>
38
36
  );
39
37
  };
@@ -14,25 +14,23 @@ const styles = `
14
14
 
15
15
  `;
16
16
 
17
- export const AnimatedCard = ({ title = "Hover Card", content = "Hover over me to see the effect!", ...rest }) => {
18
- let html = `
19
- <div class="sd-card-anim">
20
- <div class="sd-img-placeholder"></div>
21
- <div class="sd-content">
22
- <h3>{{title}}</h3>
23
- <p>{{content}}</p>
24
- </div>
25
- </div>
26
- `;
27
-
28
- // Inject props
29
- html = html.replaceAll('{{title}}', title);
30
- html = html.replaceAll('{{content}}', content);
31
-
17
+ export const AnimatedCard = ({ title = "Hover Card", content = "Hover over me to see the effect!", children, ...rest }) => {
32
18
  return (
33
19
  <div {...rest} className="sudarshana-component-AnimatedCard">
34
20
  <style>{styles}</style>
35
- <div dangerouslySetInnerHTML={{ __html: html }} />
21
+ <div className="sd-card-anim">
22
+ {children ? (
23
+ children
24
+ ) : (
25
+ <>
26
+ <div className="sd-img-placeholder"></div>
27
+ <div className="sd-content">
28
+ <h3>{title}</h3>
29
+ <p>{content}</p>
30
+ </div>
31
+ </>
32
+ )}
33
+ </div>
36
34
  </div>
37
35
  );
38
36
  };
@@ -16,27 +16,20 @@ const styles = `
16
16
  `;
17
17
 
18
18
  export const AnimatedFooter = (props) => {
19
- let html = `
20
- <footer class="sd-footer-anim">
21
- <div class="sd-wave"></div>
22
- <div class="sd-content">
23
- <div class="sd-socials">
24
- <a href="#" class="sd-soc">Tw</a>
25
- <a href="#" class="sd-soc">In</a>
26
- <a href="#" class="sd-soc">Fb</a>
27
- </div>
28
- <p>Designed with ❤️ by You</p>
29
- </div>
30
- </footer>
31
- `;
32
-
33
- // Inject props
34
-
35
-
36
19
  return (
37
20
  <div {...props} className="sudarshana-component-AnimatedFooter">
38
21
  <style>{styles}</style>
39
- <div dangerouslySetInnerHTML={{ __html: html }} />
22
+ <footer className="sd-footer-anim">
23
+ <div className="sd-wave"></div>
24
+ <div className="sd-content">
25
+ <div className="sd-socials">
26
+ <a href="#" className="sd-soc">Tw</a>
27
+ <a href="#" className="sd-soc">In</a>
28
+ <a href="#" className="sd-soc">Fb</a>
29
+ </div>
30
+ <p>Designed with ❤️ by You</p>
31
+ </div>
32
+ </footer>
40
33
  </div>
41
34
  );
42
35
  };
@@ -14,15 +14,15 @@ const styles = `
14
14
  `;
15
15
 
16
16
  export const AnimatedOtp = (props) => {
17
- let html = `<div class="sd-otp-anim"><input type="text" maxlength="1" placeholder="•" /><input type="text" maxlength="1" placeholder="•" /><input type="text" maxlength="1" placeholder="•" /><input type="text" maxlength="1" placeholder="•" /></div>`;
18
-
19
- // Inject props
20
-
21
-
22
17
  return (
23
18
  <div {...props} className="sudarshana-component-AnimatedOtp">
24
19
  <style>{styles}</style>
25
- <div dangerouslySetInnerHTML={{ __html: html }} />
20
+ <div className="sd-otp-anim">
21
+ <input type="text" maxLength="1" placeholder="•" />
22
+ <input type="text" maxLength="1" placeholder="•" />
23
+ <input type="text" maxLength="1" placeholder="•" />
24
+ <input type="text" maxLength="1" placeholder="•" />
25
+ </div>
26
26
  </div>
27
27
  );
28
28
  };
@@ -15,20 +15,13 @@ const styles = `
15
15
  `;
16
16
 
17
17
  export const AnimatedTextfield = ({ label = "Username", ...rest }) => {
18
- let html = `
19
- <div class="sd-input-group">
20
- <input type="text" class="sd-input-anim" placeholder=" " />
21
- <label class="sd-label-anim">{{label}}</label>
22
- </div>
23
- `;
24
-
25
- // Inject props
26
- html = html.replaceAll('{{label}}', label);
27
-
28
18
  return (
29
- <div {...rest} className="sudarshana-component-AnimatedTextfield">
19
+ <div className="sudarshana-component-AnimatedTextfield">
30
20
  <style>{styles}</style>
31
- <div dangerouslySetInnerHTML={{ __html: html }} />
21
+ <div className="sd-input-group">
22
+ <input type="text" className="sd-input-anim" placeholder=" " {...rest} />
23
+ <label className="sd-label-anim">{label}</label>
24
+ </div>
32
25
  </div>
33
26
  );
34
27
  };
@@ -13,15 +13,12 @@ const styles = `
13
13
  `;
14
14
 
15
15
  export const FancyButton = ({ label = "yo yes", ...rest }) => {
16
- let html = `<button class="sd-btn-anim">{{label}}</button>`;
17
-
18
- // Inject props
19
- html = html.replaceAll('{{label}}', label);
20
-
21
16
  return (
22
- <div {...rest} className="sudarshana-component-FancyButton">
17
+ <>
23
18
  <style>{styles}</style>
24
- <div dangerouslySetInnerHTML={{ __html: html }} />
25
- </div>
19
+ <button className="sd-btn-anim" {...rest}>
20
+ {label}
21
+ </button>
22
+ </>
26
23
  );
27
24
  };
@@ -15,33 +15,26 @@ const styles = `
15
15
  `;
16
16
 
17
17
  export const NormalFooter = (props) => {
18
- let html = `
19
- <footer class="sd-footer">
20
- <div class="sd-col">
21
- <h4>Brand</h4>
22
- <p>© 2024 All rights reserved.</p>
23
- </div>
24
- <div class="sd-col">
25
- <h4>Links</h4>
26
- <a href="#">Home</a>
27
- <a href="#">About</a>
28
- <a href="#">Contact</a>
29
- </div>
30
- <div class="sd-col">
31
- <h4>Social</h4>
32
- <a href="#">Twitter</a>
33
- <a href="#">GitHub</a>
34
- </div>
35
- </footer>
36
- `;
37
-
38
- // Inject props
39
-
40
-
41
18
  return (
42
19
  <div {...props} className="sudarshana-component-NormalFooter">
43
20
  <style>{styles}</style>
44
- <div dangerouslySetInnerHTML={{ __html: html }} />
21
+ <footer className="sd-footer">
22
+ <div className="sd-col">
23
+ <h4>Brand</h4>
24
+ <p>© 2024 All rights reserved.</p>
25
+ </div>
26
+ <div className="sd-col">
27
+ <h4>Links</h4>
28
+ <a href="#">Home</a>
29
+ <a href="#">About</a>
30
+ <a href="#">Contact</a>
31
+ </div>
32
+ <div className="sd-col">
33
+ <h4>Social</h4>
34
+ <a href="#">Twitter</a>
35
+ <a href="#">GitHub</a>
36
+ </div>
37
+ </footer>
45
38
  </div>
46
39
  );
47
40
  };
package/src/NormalOtp.jsx CHANGED
@@ -12,15 +12,15 @@ const styles = `
12
12
  `;
13
13
 
14
14
  export const NormalOtp = (props) => {
15
- let html = `<div class="sd-otp-group"><input type="text" maxlength="1" /><input type="text" maxlength="1" /><input type="text" maxlength="1" /><input type="text" maxlength="1" /></div>`;
16
-
17
- // Inject props
18
-
19
-
20
15
  return (
21
16
  <div {...props} className="sudarshana-component-NormalOtp">
22
17
  <style>{styles}</style>
23
- <div dangerouslySetInnerHTML={{ __html: html }} />
18
+ <div className="sd-otp-group">
19
+ <input type="text" maxLength="1" />
20
+ <input type="text" maxLength="1" />
21
+ <input type="text" maxLength="1" />
22
+ <input type="text" maxLength="1" />
23
+ </div>
24
24
  </div>
25
25
  );
26
26
  };