@zevra/ui 0.51.0 → 0.52.0

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/react/forms.tsx CHANGED
@@ -235,16 +235,26 @@ export interface SwitchProps
235
235
  /** Libellé accolé : c'est lui qui porte le sens, la piste seule ne dit pas
236
236
  * ce qui est activé. */
237
237
  texte?: ReactNode
238
+ /** Valeur IMPOSÉE, qui doit rester lisible : piste pâle, cadenas, aucun
239
+ * clic. À ne pas confondre avec `disabled` (momentanément indisponible,
240
+ * le contrôle s'efface). Voir DECISIONS, 03/11/2026. */
241
+ verrouille?: boolean
242
+ /** Pourquoi c'est verrouillé (« Toujours inclus », « Fixé par
243
+ * l'administrateur ») : infobulle native et annonce au lecteur d'écran. */
244
+ motif?: string
238
245
  className?: string
239
246
  }
240
247
 
241
- export function Switch({ on, texte, className, ...reste }: SwitchProps) {
248
+ export function Switch({ on, texte, verrouille, motif, className, disabled, title, ...reste }: SwitchProps) {
242
249
  return (
243
250
  <button
244
251
  type="button"
245
252
  role="switch"
246
253
  aria-checked={on}
247
- className={cx('zv-switch-hit', className)}
254
+ disabled={disabled || verrouille}
255
+ title={title ?? (verrouille ? motif : undefined)}
256
+ aria-description={verrouille ? motif : undefined}
257
+ className={cx('zv-switch-hit', verrouille && 'zv-switch-hit--verrouille', className)}
248
258
  {...reste}
249
259
  >
250
260
  <span className={cx('zv-switch', on && 'zv-switch--on')}>
@@ -253,6 +263,7 @@ export function Switch({ on, texte, className, ...reste }: SwitchProps) {
253
263
  {texte && (
254
264
  <span className={cx('zv-switch__text', on && 'zv-switch__text--on')}>{texte}</span>
255
265
  )}
266
+ {verrouille && <Icon nom="cadenas" taille="sm" className="zv-switch__cadenas" />}
256
267
  </button>
257
268
  )
258
269
  }
@@ -7,6 +7,7 @@ export type PartenaireId =
7
7
  | 'henrri'
8
8
  | 'maileva'
9
9
  | 'microsoft'
10
+ | 'signaturit'
10
11
 
11
12
  /** Les logos des services partenaires, inlinés, et le nom de la marque. */
12
13
  export const LOGOS_PARTENAIRES: Record<PartenaireId, { src: string; nom: string; plein: boolean }> = {
@@ -15,4 +16,5 @@ export const LOGOS_PARTENAIRES: Record<PartenaireId, { src: string; nom: string;
15
16
  'henrri': { src: 'data:image/webp;base64,UklGRrgFAABXRUJQVlA4IKwFAACQHgCdASpgAGAAPjEWiUMiISEXiPTYIAMEsgBqYri/APxu7lyn/Wvxp/LH5i63/PvvZyasu+Z14h+e/5/7dPrN6DPsr9wD9O/8H1APMB+sv7Te0f+rnuA/Tv2AP6Z/lPWA9SP+sf7f2AP1h9NX9mfg3/b39xvadvGT8HysiQ37H/oeH/YR3orIXET2zHIBfSP8Z52vP00bPQvsI/yX+vb6ahQciI39yrPWkj5LEo8aImSVYgK7JqT+zpAddnCZPSLMXeOmYMszqDj62U8IhaM3INGjflWeF2bD83ozTB6i0tRgp2/ZbCnsvFFJaBUW4VW3ptUkW2uAaQ9s8bgAAP7xTYVq77cxtvoUT8iX8iX8oEWUOLh+Tf4FFYPh9CJ/rcey/1W+9K3RmjH0Q2ToquREs5KySoANutbkzjl4dZrpCpHdkcoXQuKfZe10q0MVoS9xFefQ1VogpVds4908KQ4G1AZHX5PjjP+4mMp08dO3f21xrpfsHeC5GA1X+xZgUeulXVaH6PnTTxMbOf+08tvEuViAib0GCa3gSideogTUymOtQXKjDSRKjeIt0DoVOpgMnBn9BeFPjrF1hnBkaV32SaiI2gBc3HUM2gll+USLRnJbZ97R7xnaKD8nkZ2+XGIGeQQzhuD4RNVNpfD/rEKuzDwqAmc5KCu7GGL/Vi22thly5L2NSBem5b1qs1HEz68Oa++gqBG0zTO4JN1hkfJtP/aKxQCurZSx+R/+/9L3on//427rufZ/pqqwDjYprGeexcST5Me+Re/T+9so12oPxTDlUXaiHqGid1o1dbwaJflAE6VaWVuXBZjycDLnjaQkBz/APqfkHfJQnb1IycGnrR4V7MCZl3/z09VjDu3a1yRTZsP3Ut73QYiV4KFvNqpj7ty70rk3u2IYc68Mn8PKOp1P842CSGgRvMDuWDFiA6w88G1SdVOTCHqsB0Q7L0T9/y09//TvNfv3wgvMGTw1DxUOMekHK+wj3s3XMSUJjV9gI3uL9ToNbMIQHF/ENmTj9Ftf88prMgB1//9nBo0eFFe++l0j54Q84D2+ZyYkY2I2ylLOryhVwCs/cCGYlszPE2fHJpJAGcxWigRKlw+UEQpuu3GEsGAphOD3q/sR9xs0x5IbvwNblE8LeFUx2i/0KDtQtXXxdBa+BXnW09zk1WXAOXRmeDD9ukzB1KlXKOujMD5+ZclfXirEcfnQ2OzH+Qdyg6QzolQTdMnmlEbsDmP/EVpoAaFWnHldj26VvH3FbXR1bwdl5rmdKXfDbLxTDEi0dvvJl9LCyW5wA9aNBt1r+K9/bPCUw1Fqmo/HKZPSrid0kCYDG08EZnW74/Fxxb8DTNzjo0FMAT0GLruQg30oMCfQtRfQnqAGxzvc+eLqTylsC96DHmcl0bvON02eR1yNlHdE05/Svnk3oq+3XF6rED/8ddsVQuherFVxnbQGtCdb7clCJBadVNZo6R2G91R/8S4k68URD/pS7lyS6Plxaij69rWRnwnVE3LgZywwsLH264BZsyz05nfl7fyQdgnq3dRGwfNCE0xELt/VvvAKwhlantrqrh5yBIINoRZFlKeXgkT0To5Z5/N5LSOuw0dO0KDv2MK/FVcFQC9sq0oEl/MPT7EXzqKcN3SvaYGHVM6ed6Wh9I3YFh3MZu6YEa30GmI5fY7AwKRsKEPjEgwGX3k++Wk5rwi5mIMWwNS49XG1zwC8mbUG5R+WMnn4Yc/cIWsDjcwqLOTHb42zuk6+OSzBVVKYvnSh5KL2gmN+RdDCqmF6mbdNPEFB9KXh39TE1NYKWJ1QRF2PLEYALWOvrHuFbgZ72YihavKilRZ1dynXEegZITqWnR+J1ZMQbpv2km6OPbJG5dChRj48a8WITagCZgoRaYMi3mrkrvYHB4QXYmxrkSGYhhnTyOn+zvAK7kMPiwAAAAA=', nom: "Henrri", plein: true },
16
17
  'maileva': { src: 'data:image/webp;base64,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', nom: "Maileva", plein: false },
17
18
  'microsoft': { src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMyAyMyI+PHBhdGggZmlsbD0iI2YzZjNmMyIgZD0iTTAgMGgyM3YyM0gweiIvPjxwYXRoIGZpbGw9IiNmMzUzMjUiIGQ9Ik0xIDFoMTB2MTBIMXoiLz48cGF0aCBmaWxsPSIjODFiYzA2IiBkPSJNMTIgMWgxMHYxMEgxMnoiLz48cGF0aCBmaWxsPSIjMDVhNmYwIiBkPSJNMSAxMmgxMHYxMEgxeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDgiIGQ9Ik0xMiAxMmgxMHYxMEgxMnoiLz48L3N2Zz4=', nom: "Microsoft 365", plein: false },
19
+ 'signaturit': { src: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTkiIGhlaWdodD0iMjE5IiB2aWV3Qm94PSIwIDAgMjE5IDIxOSIgZmlsbD0ibm9uZSI+CiAgPHJlY3Qgd2lkdGg9IjIxOSIgaGVpZ2h0PSIyMTkiIGZpbGw9IiMwQTBBRjQiPjwvcmVjdD4KICA8cGF0aCBkPSJNMTU1LjQzNiAxMzguMDE5QzE1NS40MTMgMTQ1LjQzMyAxNTMuMzkzIDE1MS45OTkgMTQ5LjMxMyAxNTcuNjE0QzE0NS4xOTQgMTYzLjIzIDEzOS42MDIgMTY3LjUzOSAxMzIuNDI1IDE3MC41MjVDMTI1LjIwMSAxNzMuNDc5IDExNy4wNjUgMTc1IDEwNy45IDE3NUM5Mi44ODE1IDE3NC45NzYgODEuMjYwOSAxNzEuMTk4IDcyLjk2NzIgMTYzLjU4NkM2NC42NDE5IDE1NS45MzUgNjAuMzU2NSAxNDUuNzY1IDYwIDEzMi45NUg4MC4xNTk4QzgwLjUwMDQgMTQwLjA2MiA4My4wNjY5IDE0NS43NjUgODcuODAzOSAxNDkuOTI0QzkyLjUxNzEgMTU0LjA2NiA5OS4yNDIzIDE1Ni4xNzMgMTA3LjkgMTU2LjE3M0MxMTYuNjc3IDE1Ni4xMjUgMTIzLjQwMiAxNTQuNTU3IDEyOC4wMDUgMTUxLjMyNUMxMzIuNTk5IDE0OC4wNyAxMzQuOTIgMTQzLjY2NiAxMzQuOTIgMTM4LjAyN0MxMzQuODczIDEzMy4xMjQgMTMzLjQ2MyAxMjkuMzM4IDEzMC41NTUgMTI2LjU4MkMxMjcuNjA5IDEyMy43ODYgMTIzLjE4OSAxMjEuNzM0IDExNy4xOTIgMTIwLjMyNEw5Ny42NTAxIDExNS42NDNDODcuMjI1NiAxMTMuMDUzIDc5LjI1NjggMTA5LjAyMiA3My43MTk4IDEwMy41MjVDNjguMTU5IDk3Ljk5NjQgNjUuNDE4MiA5MC41OTA3IDY1LjQxODIgODEuMTg5QzY1LjM3MDcgNzAuNDY0NiA2OS4zMjM0IDYxLjc3NTcgNzcuMTQxOCA1NS4wNjdDODQuODgwOSA0OC4zNTA0IDk1LjQ2MzggNDUuMDMxNyAxMDguNzg4IDQ1SDEwOS4xNjhDMTIyLjQ2OCA0NSAxMzMuMjg4IDQ4Ljc1NDMgMTQxLjU5IDU2LjE0NDJDMTQ0LjIyOCA1OC41MDQ1IDE0Ni40NjkgNjEuMDYyOSAxNDguMjkxIDYzLjgzNTFIMTA5LjI3OUMxMDkuMTEyIDYzLjgyNzIgMTA4Ljk1NCA2My44MjcxIDEwOC43ODggNjMuODI3MUMxMDEuMzQxIDYzLjgxMTMgOTUuNjE0MyA2NS4zNjM3IDkxLjU5ODIgNjguNDIxMUM4Ny41ODIxIDcxLjQ4NjMgODUuNTc4IDc1LjU0OTYgODUuNTc4IDgwLjYxMDhDODUuNTcwMSA4NC45OTA5IDg2Ljk4OCA4OC40NTIxIDg5LjgwMDEgOTAuODZDOTIuNTk2MyA5My4yMjgyIDk3LjA3OTggOTUuMjQ4IDEwMy4xNzkgOTYuNzg0NkwxMjIuODA4IDEwMS42NzJDMTMzLjc2NCAxMDQuNDM2IDE0MS45ODYgMTA4Ljg1NSAxNDcuMzY0IDExNC43OTZDMTUyLjczNSAxMjAuNzA1IDE1NS40MzYgMTI4LjQ3NSAxNTUuNDM2IDEzOC4wMTlaIiBmaWxsPSIjRkFGQUZGIj48L3BhdGg+CiAgPHBhdGggZD0iTTE1OS4yMTQgNDUuMDAwMUwxNTAuNTY0IDYzLjgzNTJIMTA4Ljc4N1Y0NS4wMDAxSDE1OS4yMTRaIiBmaWxsPSIjRkFGQUZGIj48L3BhdGg+Cjwvc3ZnPgo=', nom: "Signaturit", plein: true },
18
20
  }
@@ -1,5 +1,5 @@
1
1
  // Les logos des services qu'une app branche : Microsoft 365, Google
2
- // Workspace, DocuSign, Henrri, Maileva. Premier usage : la Marketplace de
2
+ // Workspace, DocuSign, Henrri, Maileva, Signaturit. Premier usage : la Marketplace de
3
3
  // Tésope (03/11/2026), où chaque extension se reconnaît à sa marque.
4
4
  //
5
5
  // ⚠️ ENTRÉE SÉPARÉE (`@zevra/ui/react/partenaires`) : les logos y sont
package/src/forms.css CHANGED
@@ -674,6 +674,55 @@
674
674
  color: var(--accent);
675
675
  }
676
676
 
677
+ /* Désactivé et verrouillé (DECISIONS, 03/11/2026). HORS RELEVÉ.
678
+ * Désactivé : momentanément indisponible, le contrôle s'efface. */
679
+ .zv-switch-hit:disabled {
680
+ cursor: not-allowed;
681
+ opacity: 0.5;
682
+ }
683
+
684
+ .zv-switch-hit:disabled:hover .zv-switch {
685
+ border-color: var(--line);
686
+ }
687
+
688
+ .zv-switch-hit:disabled:hover .zv-switch--on {
689
+ border-color: var(--accent);
690
+ background: var(--accent);
691
+ }
692
+
693
+ /* Verrouillé : la valeur est imposée et reste lisible. Pas d'effacement,
694
+ * pas de curseur interdit (ce n'est pas une faute) ; une piste pâle et un
695
+ * cadenas disent qu'on ne la change pas d'ici. */
696
+ .zv-switch-hit--verrouille,
697
+ .zv-switch-hit--verrouille:disabled {
698
+ cursor: default;
699
+ opacity: 1;
700
+ }
701
+
702
+ .zv-switch-hit--verrouille .zv-switch,
703
+ .zv-switch-hit--verrouille:hover .zv-switch {
704
+ border-color: var(--line);
705
+ background: var(--paper);
706
+ }
707
+
708
+ .zv-switch-hit--verrouille .zv-switch__knob {
709
+ background: var(--line);
710
+ }
711
+
712
+ .zv-switch-hit--verrouille .zv-switch--on,
713
+ .zv-switch-hit--verrouille:hover .zv-switch--on {
714
+ border-color: var(--accent-line);
715
+ background: var(--accent-soft);
716
+ }
717
+
718
+ .zv-switch-hit--verrouille .zv-switch--on .zv-switch__knob {
719
+ background: var(--accent-line);
720
+ }
721
+
722
+ .zv-switch__cadenas {
723
+ color: var(--label);
724
+ }
725
+
677
726
  /* ─── Curseur ───────────────────────────────────────────────────────────
678
727
  * HORS RELEVÉ (25/08/2026, voir DECISIONS.md). Aucune source ; dérivé de
679
728
  * l'interrupteur redessiné : bouton CARRÉ de 14 px (la taille exacte du