@sensorario/sg-components 0.0.62 → 0.0.67

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/.htaccess ADDED
@@ -0,0 +1,32 @@
1
+ <IfModule mod_rewrite.c>
2
+ RewriteEngine On
3
+ RewriteBase /
4
+
5
+ # Don't rewrite files or directories
6
+ RewriteCond %{REQUEST_FILENAME} !-f
7
+ RewriteCond %{REQUEST_FILENAME} !-d
8
+
9
+ # Rewrite everything else to index.html to allow html5 state links
10
+ RewriteRule . index.html [L]
11
+ </IfModule>
12
+
13
+ # Compression
14
+ <IfModule mod_deflate.c>
15
+ AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
16
+ </IfModule>
17
+
18
+ # Disable Caching Completely
19
+ <IfModule mod_headers.c>
20
+ # Disable caching for all files
21
+ Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
22
+ Header set Pragma "no-cache"
23
+ Header set Expires "0"
24
+ </IfModule>
25
+
26
+ # Disable ETags
27
+ FileETag None
28
+
29
+ # Disable browser caching via mod_expires
30
+ <IfModule mod_expires.c>
31
+ ExpiresActive Off
32
+ </IfModule>
package/dist/index.es.js CHANGED
@@ -1,17 +1,21 @@
1
- import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
2
- import "react";
3
- //#region src/components/Footer/Footer.tsx
4
- var r = ({ copyright: e = "© 2026 My Company", href: r = "#", links: i = [] }) => /* @__PURE__ */ n("footer", {
1
+ import { useState as e } from "react";
2
+ import { Fragment as t, jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ //#region src/components/Button/Button.tsx
4
+ var i = ({ label: e, ...t }) => /* @__PURE__ */ n("button", {
5
+ className: "custom-button",
6
+ ...t,
7
+ children: e
8
+ }), a = ({ copyright: e = "© 2026 My Company", href: t = "#", links: i = [] }) => /* @__PURE__ */ r("footer", {
5
9
  className: "footer",
6
- children: [/* @__PURE__ */ t("span", { children: /* @__PURE__ */ t("a", {
7
- href: r,
10
+ children: [/* @__PURE__ */ n("span", { children: /* @__PURE__ */ n("a", {
11
+ href: t,
8
12
  children: e
9
- }) }), i.length > 0 && /* @__PURE__ */ t("nav", { children: i.map(({ label: e, href: n }) => /* @__PURE__ */ t("a", {
10
- href: n,
13
+ }) }), i.length > 0 && /* @__PURE__ */ n("nav", { children: i.map(({ label: e, href: t }) => /* @__PURE__ */ n("a", {
14
+ href: t,
11
15
  style: { marginLeft: "16px" },
12
16
  children: e
13
- }, n)) })]
14
- }), i = [
17
+ }, t)) })]
18
+ }), o = [
15
19
  {
16
20
  label: "guitar",
17
21
  href: "https://guitar.simonegentili.com"
@@ -32,43 +36,116 @@ var r = ({ copyright: e = "© 2026 My Company", href: r = "#", links: i = [] })
32
36
  label: "code2image",
33
37
  href: "https://code2image.simonegentili.com"
34
38
  }
35
- ], a = () => /* @__PURE__ */ t(r, {
39
+ ], s = () => /* @__PURE__ */ n(a, {
36
40
  href: "https://simonegentili.com",
37
41
  copyright: "© 2026 simonegentili.com",
38
- links: i
39
- }), o = ({ onNavigate: e, title: n = "Simone Gentili - senior web developer, tech author and chess enthusiast", homePageKey: r = "home" }) => /* @__PURE__ */ t("header", {
42
+ links: o
43
+ }), c = ({ onNavigate: e, title: t = "Simone Gentili - senior web developer, tech author and chess enthusiast", homePageKey: r = "home" }) => /* @__PURE__ */ n("header", {
40
44
  className: "header",
41
- children: /* @__PURE__ */ t("div", {
45
+ children: /* @__PURE__ */ n("div", {
42
46
  className: "header-container",
43
- children: /* @__PURE__ */ t("div", {
47
+ children: /* @__PURE__ */ n("div", {
44
48
  className: "logo",
45
49
  onClick: () => {
46
50
  e?.(r);
47
51
  },
48
- children: /* @__PURE__ */ t("h1", {
52
+ children: /* @__PURE__ */ n("h1", {
49
53
  className: "logo-text",
50
- children: n
54
+ children: t
51
55
  })
52
56
  })
53
57
  })
54
- }), s = ({ onNavigate: e }) => /* @__PURE__ */ t(o, {
58
+ }), l = ({ onNavigate: e }) => /* @__PURE__ */ n(c, {
55
59
  onNavigate: e,
56
60
  title: "Simone Gentili - senior web developer, tech author and chess enthusiast",
57
61
  homePageKey: "home"
58
- }), c = ({ isLoggedIn: n, handleLogin: r, handleLogout: i }) => /* @__PURE__ */ t(e, { children: n ? /* @__PURE__ */ t("button", {
62
+ }), u = ({ isLoggedIn: e, handleLogin: r, handleLogout: i }) => /* @__PURE__ */ n(t, { children: e ? /* @__PURE__ */ n("button", {
59
63
  onClick: i,
60
64
  style: {
61
65
  fontSize: "0.9rem",
62
66
  padding: "0.4rem 1rem"
63
67
  },
64
68
  children: "logout"
65
- }) : /* @__PURE__ */ t("button", {
69
+ }) : /* @__PURE__ */ n("button", {
66
70
  onClick: r,
67
71
  style: {
68
72
  fontSize: "0.9rem",
69
73
  padding: "0.4rem 1rem"
70
74
  },
71
75
  children: "Login"
72
- }) });
76
+ }) }), d = ({ open: e, onClose: t, title: i, children: a }) => e ? /* @__PURE__ */ n("div", {
77
+ className: "modal-overlay",
78
+ children: /* @__PURE__ */ r("div", {
79
+ className: "modal-content",
80
+ children: [
81
+ i && /* @__PURE__ */ n("h2", {
82
+ className: "modal-title",
83
+ children: i
84
+ }),
85
+ /* @__PURE__ */ n("button", {
86
+ className: "modal-close",
87
+ onClick: t,
88
+ children: "×"
89
+ }),
90
+ /* @__PURE__ */ n("div", {
91
+ className: "modal-children",
92
+ children: a
93
+ })
94
+ ]
95
+ })
96
+ }) : null, f = ({ label: e, ...t }) => /* @__PURE__ */ r("div", {
97
+ className: "input-wrapper",
98
+ children: [e && /* @__PURE__ */ n("label", {
99
+ className: "input-label",
100
+ children: e
101
+ }), /* @__PURE__ */ n("input", {
102
+ type: "password",
103
+ className: "input-field",
104
+ ...t
105
+ })]
106
+ }), p = ({ open: t, onClose: a, onSubmit: o }) => {
107
+ let [s, c] = e(""), [l, u] = e(""), [p, m] = e("");
108
+ return /* @__PURE__ */ n(d, {
109
+ open: t,
110
+ onClose: a,
111
+ title: "Imposta una nuova password",
112
+ children: /* @__PURE__ */ r("form", {
113
+ className: "set-password-modal-form",
114
+ onSubmit: (e) => {
115
+ if (e.preventDefault(), s === "" || l === "") {
116
+ m("Inserisci ed conferma la nuova password.");
117
+ return;
118
+ }
119
+ if (s !== l) {
120
+ m("Le password non coincidono.");
121
+ return;
122
+ }
123
+ m(""), o(s);
124
+ },
125
+ children: [
126
+ /* @__PURE__ */ n(f, {
127
+ label: "Nuova password",
128
+ value: s,
129
+ onChange: (e) => c(e.target.value),
130
+ autoFocus: !0
131
+ }),
132
+ /* @__PURE__ */ n(f, {
133
+ label: "Conferma password",
134
+ value: l,
135
+ onChange: (e) => u(e.target.value)
136
+ }),
137
+ p && /* @__PURE__ */ n("p", {
138
+ className: "set-password-modal-error",
139
+ children: p
140
+ }),
141
+ /* @__PURE__ */ n(i, {
142
+ label: "Salva password",
143
+ type: "submit",
144
+ style: { width: "100%" }
145
+ })
146
+ ]
147
+ })
148
+ });
149
+ };
73
150
  //#endregion
74
- export { c as Authenticator, r as Footer, o as Header, a as SGFooter, s as SGHeader };
151
+ export { u as Authenticator, i as Button, a as Footer, c as Header, s as SGFooter, l as SGHeader, p as SetPasswordModal };
@@ -1,2 +1,2 @@
1
- .footer{background-color:var(--primary-bg);border-top:1px solid var(--primary-border);font-family:var(--font-family);color:#555;justify-content:space-between;align-items:center;width:100%;padding:16px 32px;font-size:14px;display:flex;position:fixed;bottom:0;left:0}.footer a{color:#1ea7fd;text-decoration:none}.footer a:hover{text-decoration:underline}.logo-text{font-size:var(--font-size-h1);font-family:var(--font-family);margin:0;font-weight:400}.header{z-index:100;width:100%;font-size:var(--font-size);background-color:#fff;border-bottom:1px solid #e1e5e9;position:sticky;top:0;box-shadow:0 2px 4px #0000001a}.header-container{justify-content:flex-start;align-items:center;max-width:1200px;margin:0 auto;padding:16px;display:flex}.logo{cursor:pointer;color:#333;font-size:24px;font-weight:700;transition:color .2s}.logo:hover{color:#007acc}.logo-full{display:inline}.logo-short{display:none}@media (width<=768px){.header-container{padding:12px 16px}.logo{font-size:var(--font-size)}.logo-full{display:none}.logo-short{display:inline}}@media (width<=480px){.header-container{padding:8px 12px}.logo{font-size:var(--font-size)}}.modal-overlay{background:var(--modal-overlay);z-index:1000;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.modal-children{font-family:var(--font-family);padding:16px}.modal-content{background:var(--modal-bg);font-size:var(--primary-font);border-radius:8px;min-width:320px;position:relative;box-shadow:0 2px 16px #00000026}.modal-title{color:var(--modal-title-color);font-family:var(--font-family);background-color:var(--primary-bg);font-size:var(--primary-font);border-top-left-radius:var(--primary-radius);border-top-right-radius:var(--primary-radius);margin-top:0;padding:16px}.modal-close{cursor:pointer;background:0 0;border:none;font-size:20px;position:absolute;top:8px;right:8px}.input-label{font-weight:500;font-family:var(--font-family);font-size:var(--primary-font);margin-bottom:4px;display:block}.input-field--invalid{background-color:#ffe5e5;border-color:#c00}.input-wrapper{margin-bottom:16px}.input-label{font-weight:500;font-size:var(--primary-font);margin-bottom:4px;display:block}.input-field{border-radius:var(--radius);width:calc(100% - 16px);font-size:var(--primary-font);border-style:solid;border-width:1px;padding:8px}.custom-button{border-radius:var(--primary-radius);border:1px solid var(--primary-border);background:var(--primary-bg);cursor:pointer;font-size:var(--primary-font);font-family:var(--font-family);padding:8px 16px;transition:background .2s}.custom-button:hover{background:var(--primary-hover-bg)}:root{--unit:3px;--primary-bg:#f5f5f5;--primary-border:#ccc;--radius:calc(var(--unit) * 2);--primary-radius:var(--radius);--primary-font:var(--font-size);--primary-hover-bg:#e0e0e0;--modal-bg:#fff;--modal-overlay:#0000004d;--modal-title-color:#222;--input-bg:#fff;--input-border:#ccc;--input-radius:var(--radius);--input-font:1rem;--font-size:14px;--font-family:Arial, sans-serif;--font-size-h1:calc(var(--font-size) * 1.5)}.theme-dark{--primary-bg:#222;--primary-border:#444;--primary-font:1rem;--font-family:"Inter", Arial, sans-serif;--primary-hover-bg:#333;--modal-bg:#222;--modal-title-color:#fff;--input-bg:#333;--input-border:#555;--input-font:1rem}form{font-family:var(--font-family)}.login-modal-form{font-family:var(--font-family);font-size:var(--primary-font);flex-direction:column;gap:16px;display:flex}
1
+ .custom-button{border-radius:var(--primary-radius);border:1px solid var(--primary-border);background:var(--primary-bg);cursor:pointer;font-size:var(--primary-font);font-family:var(--font-family);padding:8px 16px;transition:background .2s}.custom-button:hover{background:var(--primary-hover-bg)}.footer{background-color:var(--primary-bg);border-top:1px solid var(--primary-border);font-family:var(--font-family);color:#555;justify-content:space-between;align-items:center;width:100%;padding:16px 32px;font-size:14px;display:flex;position:fixed;bottom:0;left:0}.footer a{color:#1ea7fd;text-decoration:none}.footer a:hover{text-decoration:underline}.logo-text{font-size:var(--font-size-h1);font-family:var(--font-family);margin:0;font-weight:400}.header{z-index:100;width:100%;font-size:var(--font-size);background-color:#fff;border-bottom:1px solid #e1e5e9;position:sticky;top:0;box-shadow:0 2px 4px #0000001a}.header-container{justify-content:flex-start;align-items:center;max-width:1200px;margin:0 auto;padding:16px;display:flex}.logo{cursor:pointer;color:#333;font-size:24px;font-weight:700;transition:color .2s}.logo:hover{color:#007acc}.logo-full{display:inline}.logo-short{display:none}@media (width<=768px){.header-container{padding:12px 16px}.logo{font-size:var(--font-size)}.logo-full{display:none}.logo-short{display:inline}}@media (width<=480px){.header-container{padding:8px 12px}.logo{font-size:var(--font-size)}}.modal-overlay{background:var(--modal-overlay);z-index:1000;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.modal-children{font-family:var(--font-family);padding:16px}.modal-content{background:var(--modal-bg);font-size:var(--primary-font);border-radius:8px;min-width:320px;position:relative;box-shadow:0 2px 16px #00000026}.modal-title{color:var(--modal-title-color);font-family:var(--font-family);background-color:var(--primary-bg);font-size:var(--primary-font);border-top-left-radius:var(--primary-radius);border-top-right-radius:var(--primary-radius);margin-top:0;padding:16px}.modal-close{cursor:pointer;background:0 0;border:none;font-size:20px;position:absolute;top:8px;right:8px}.input-label{font-weight:500;font-family:var(--font-family);font-size:var(--primary-font);margin-bottom:4px;display:block}.input-field--invalid{background-color:#ffe5e5;border-color:#c00}.input-wrapper{margin-bottom:16px}.input-label{font-weight:500;font-size:var(--primary-font);margin-bottom:4px;display:block}.input-field{border-radius:var(--radius);width:calc(100% - 16px);font-size:var(--primary-font);border-style:solid;border-width:1px;padding:8px}.login-modal-form{font-family:var(--font-family);font-size:var(--primary-font);flex-direction:column;gap:16px;display:flex}:root{--unit:3px;--primary-bg:#f5f5f5;--primary-border:#ccc;--radius:calc(var(--unit) * 2);--primary-radius:var(--radius);--primary-font:var(--font-size);--primary-hover-bg:#e0e0e0;--modal-bg:#fff;--modal-overlay:#0000004d;--modal-title-color:#222;--input-bg:#fff;--input-border:#ccc;--input-radius:var(--radius);--input-font:1rem;--font-size:14px;--font-family:Arial, sans-serif;--font-size-h1:calc(var(--font-size) * 1.5)}.theme-dark{--primary-bg:#222;--primary-border:#444;--primary-font:1rem;--font-family:"Inter", Arial, sans-serif;--primary-hover-bg:#333;--modal-bg:#222;--modal-title-color:#fff;--input-bg:#333;--input-border:#555;--input-font:1rem}form{font-family:var(--font-family)}.set-password-modal-form{font-family:var(--font-family);font-size:var(--primary-font);flex-direction:column;gap:16px;display:flex}.set-password-modal-error{color:#d32f2f;font-size:var(--primary-font);margin:0}
2
2
  /*$vite$:1*/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sensorario/sg-components",
3
- "version": "0.0.62",
3
+ "version": "0.0.67",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "scripts": {