origam 2.18.18 → 2.18.19
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/CHANGELOG.md +142 -0
- package/dist/src/assets/css/main.css +1 -1
- package/dist/src/assets/css/tokens/dark.css +124 -6
- package/dist/src/assets/css/tokens/light.css +62 -3
- package/dist/src/assets/scss/tokens/_dark.scss +124 -6
- package/dist/src/assets/scss/tokens/_light.scss +62 -3
- package/dist/src/components/Audio/OrigamAudio.vue +66 -2
- package/dist/src/components/Chip/OrigamChip.vue +34 -0
- package/dist/src/components/Field/OrigamField.vue +76 -3
- package/dist/src/components/List/OrigamList.vue +90 -3
- package/dist/src/components/Main/OrigamMain.vue +2 -2
- package/dist/src/components/Media/OrigamMediaScrubber.vue +11 -1
- package/dist/src/components/SliderField/OrigamSliderField.vue +138 -3
- package/dist/src/components/SliderField/OrigamSliderFieldTrack.vue +12 -1
- package/dist/src/components/Snackbar/OrigamSnackbar.vue +2 -2
- package/dist/src/components/Switch/OrigamSwitch.vue +32 -0
- package/dist/src/components/TextField/OrigamTextField.vue +3 -1
- package/dist/src/components/Video/OrigamVideo.vue +11 -1
- package/dist/src/composables/Commons/layout.composable.cjs +2 -2
- package/dist/src/composables/Commons/layout.composable.d.ts +16 -2
- package/dist/src/composables/Commons/layout.composable.js +1 -1
- package/dist/src/composables/Commons/theme-props-resolver.composable.cjs +44 -9
- package/dist/src/composables/Commons/theme-props-resolver.composable.d.ts +33 -1
- package/dist/src/composables/Commons/theme-props-resolver.composable.js +42 -10
- package/dist/src/consts/Commons/variant-preset.const.cjs +8 -0
- package/dist/src/consts/Commons/variant-preset.const.d.ts +60 -0
- package/dist/src/consts/Commons/variant-preset.const.js +2 -0
- package/dist/src/consts/index.cjs +11 -0
- package/dist/src/consts/index.d.ts +1 -0
- package/dist/src/consts/index.js +1 -0
- package/dist/src/interfaces/Commons/theme.interface.d.ts +33 -0
- package/dist/src/interfaces/Masonry/masonry.interface.d.ts +2 -2
- package/dist/src/origam.cjs +2 -1
- package/dist/src/origam.js +8 -2
- package/dist/src/types/Commons/variant-preset.type.cjs +1 -0
- package/dist/src/types/Commons/variant-preset.type.d.ts +73 -0
- package/dist/src/types/Commons/variant-preset.type.js +0 -0
- package/dist/src/types/index.cjs +11 -0
- package/dist/src/types/index.d.ts +1 -0
- package/dist/src/types/index.js +1 -0
- package/dist/src/types/tokens.type.d.ts +1 -1
- package/package.json +1 -1
|
@@ -426,6 +426,15 @@
|
|
|
426
426
|
--origam-chip__filter---transition-property: transform, opacity;
|
|
427
427
|
--origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
|
|
428
428
|
--origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
|
|
429
|
+
/* #595 — canaux C2 ouverts : lus par OrigamChip, declares par personne. Valeurs = le repli deja rendu. Les hauteurs ne passent PAS par l echelle `space` : 38px et 44px n y ont aucun barreau. */
|
|
430
|
+
--origam-chip---height-xs: 20px;
|
|
431
|
+
--origam-chip---height-sm: 24px;
|
|
432
|
+
--origam-chip---height-md: 32px;
|
|
433
|
+
--origam-chip---height-lg: 38px;
|
|
434
|
+
--origam-chip---height-xl: 44px;
|
|
435
|
+
--origam-chip---border-radius-rounded: var(--origam-radius---xl);
|
|
436
|
+
--origam-chip__close---margin-inline-start: 6px;
|
|
437
|
+
--origam-chip__close---margin-inline-end: -4px;
|
|
429
438
|
--origam-avatar---background-color: var(--origam-color__surface---overlay);
|
|
430
439
|
--origam-avatar---color: var(--origam-color__text---secondary);
|
|
431
440
|
--origam-avatar---border-color: currentColor;
|
|
@@ -1035,7 +1044,7 @@
|
|
|
1035
1044
|
--origam-field---padding-top: var(--origam-space---2);
|
|
1036
1045
|
--origam-field---padding-bottom: 6px;
|
|
1037
1046
|
--origam-field---font-size: 16px;
|
|
1038
|
-
--origam-field---letter-spacing:
|
|
1047
|
+
--origam-field---letter-spacing: 0.009375em; /* #595 — PAS `letterSpacing---wide` (0.0094em) : `.origam-field` et `.origam-field__input` livrent 0.009375em en dur depuis toujours. Le barreau de l echelle en differe de 0.000025em, assez pour deplacer la piste de tous les champs. Valeur reellement livree, barreau assume hors echelle — meme arbitrage que `--origam-input__details---padding-top: 6px` (#595). */
|
|
1039
1048
|
--origam-field---border-radius: var(--origam-radius---sm);
|
|
1040
1049
|
--origam-field---border-color: var(--origam-color__border---default);
|
|
1041
1050
|
--origam-field---border-width: var(--origam-border__width---thin);
|
|
@@ -1054,6 +1063,11 @@
|
|
|
1054
1063
|
--origam-field---focus-ring-width: 0px;
|
|
1055
1064
|
--origam-field---focus-ring-offset: 0px;
|
|
1056
1065
|
--origam-field--variant-solo---box-shadow: var(--origam-shadow---sm);
|
|
1066
|
+
/* #595 — canaux C2 ouverts : lus par OrigamField, declares par personne. Valeurs = le repli deja rendu. `16px` et `4px` coincident EXACTEMENT avec `radius---xl` et `space---1` (verifie sur primitive.css), donc routes par leurs barreaux ; `0.42` n a aucun barreau (l echelle opacity va 0/12/26/32/50/60/70/87/100), litteral assume ; le `color-mix` est recopie VERBATIM — `currentColor` doit rester substitue sur l element consommateur, pas ici. */
|
|
1067
|
+
--origam-field---border-radius-rounded: var(--origam-radius---xl);
|
|
1068
|
+
--origam-field--inline---padding-inline: var(--origam-space---1);
|
|
1069
|
+
--origam-field--variant-filled---background-color: color-mix(in srgb, currentColor 12%, transparent);
|
|
1070
|
+
--origam-field--variant-filled---border-opacity: 0.42;
|
|
1057
1071
|
--origam-field---variant-outlined-background-color: rgba(0, 0, 0, 0);
|
|
1058
1072
|
--origam-field__overlay---background-color: var(--origam-color__overlay---scrim);
|
|
1059
1073
|
--origam-field__overlay---opacity: var(--origam-opacity---0);
|
|
@@ -1723,8 +1737,10 @@
|
|
|
1723
1737
|
--origam-list---pointer-events: auto;
|
|
1724
1738
|
--origam-list---user-select: auto;
|
|
1725
1739
|
--origam-list---indent-padding: 0px;
|
|
1740
|
+
--origam-list--nav---item-gap: 2px;
|
|
1741
|
+
--origam-list--nav---item-min-height: 44px;
|
|
1742
|
+
--origam-list--nav---item-padding-block: 6px;
|
|
1726
1743
|
--origam-list---density: 0px;
|
|
1727
|
-
--origam-list---indent-padding-nav: -8px;
|
|
1728
1744
|
--origam-list---slim-prepend-width: 28px;
|
|
1729
1745
|
--origam-list__overlay---background-color: var(--origam-color__overlay---scrim);
|
|
1730
1746
|
--origam-list__overlay---border-radius: inherit;
|
|
@@ -2194,6 +2210,16 @@
|
|
|
2194
2210
|
--origam-switch__label---font-size: var(--origam-font__size---md);
|
|
2195
2211
|
--origam-switch__label---padding-inline: var(--origam-space---2);
|
|
2196
2212
|
--origam-switch__input---opacity: 0;
|
|
2213
|
+
/* #595 — canaux C2 ouverts : ces neuf noms etaient lus par OrigamSwitch / OrigamSwitchTrack et declares par personne. Chaque valeur est le repli deja rendu, recopie a l identique. */
|
|
2214
|
+
--origam-switch__thumb---border-color: rgba(0, 0, 0, 0.18);
|
|
2215
|
+
--origam-switch__thumb---color: currentColor;
|
|
2216
|
+
--origam-switch__selection-control---min-height: 56px;
|
|
2217
|
+
--origam-switch__skeleton---width: 52px;
|
|
2218
|
+
--origam-switch__skeleton---height: 32px;
|
|
2219
|
+
--origam-switch__skeleton-track---background-color: color-mix(in srgb, currentColor 14%, transparent);
|
|
2220
|
+
--origam-switch__skeleton-thumb---background-color: color-mix(in srgb, currentColor 28%, transparent);
|
|
2221
|
+
--origam-switch__track--inset---height: 32px;
|
|
2222
|
+
--origam-switch__track--inset---width: 52px;
|
|
2197
2223
|
--origam-switch---opacity-disabled: var(--origam-opacity---32);
|
|
2198
2224
|
--origam-slider-field---padding-block: var(--origam-space---2);
|
|
2199
2225
|
--origam-slider-field---transition-duration: var(--origam-motion__duration---fast);
|
|
@@ -2216,11 +2242,24 @@
|
|
|
2216
2242
|
--origam-slider-field__tick---size: 4px;
|
|
2217
2243
|
--origam-slider-field__tick---background-color: var(--origam-color__text---disabled);
|
|
2218
2244
|
--origam-slider-field__tick---background-color-active: var(--origam-color__action--primary---fg);
|
|
2219
|
-
--origam-slider-field__tick---border-radius:
|
|
2245
|
+
--origam-slider-field__tick---border-radius: 2px; /* #595 — PAS `radius---full` (9999px) : `.origam-slider-field-track__tick` livre `border-radius: 2px` en dur. Valeur reellement livree. */
|
|
2220
2246
|
--origam-slider-field__label---color: var(--origam-color__text---secondary);
|
|
2221
2247
|
--origam-slider-field__label---font-size: var(--origam-font__size---sm);
|
|
2222
2248
|
--origam-slider-field__label---padding: var(--origam-space---1);
|
|
2223
2249
|
--origam-slider-field---opacity-disabled: var(--origam-opacity---32);
|
|
2250
|
+
/* #595 — canaux C2 ouverts : lus par OrigamSliderField / OrigamSliderFieldTrack, declares par personne. Valeurs = le repli deja rendu ; les `var()` internes sont recopies VERBATIM pour ne pas fermer le canal `--origam-color__*--inverse---*`, encore non declare. */
|
|
2251
|
+
--origam-slider-field-thumb__surface---border-color: rgba(0, 0, 0, 0.18);
|
|
2252
|
+
--origam-slider-field__buffered---background-color: color-mix(in srgb, currentColor 40%, transparent);
|
|
2253
|
+
--origam-slider-field__buffered---opacity: 0.5;
|
|
2254
|
+
--origam-slider-field__buffered--bare---background-color: color-mix(in srgb, currentColor 40%, transparent);
|
|
2255
|
+
--origam-slider-field__track---transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1);
|
|
2256
|
+
--origam-slider-field__hover-tooltip---background-color: var(--origam-color__surface---inverse);
|
|
2257
|
+
--origam-slider-field__hover-tooltip---color: var(--origam-color__text---inverse);
|
|
2258
|
+
--origam-slider-field--bare---accent-color: var(--origam-color__action--primary---bg);
|
|
2259
|
+
--origam-slider-field--bare---thumb-size: 12px;
|
|
2260
|
+
--origam-slider-field--bare---track-background-color: color-mix(in srgb, currentColor 25%, transparent);
|
|
2261
|
+
--origam-slider-field--bare---track-thickness: 2px;
|
|
2262
|
+
--origam-slider-field--bare---track-thickness-active: 4px;
|
|
2224
2263
|
--origam-icon---color: currentColor;
|
|
2225
2264
|
--origam-icon---transition-duration: var(--origam-motion__duration---fast);
|
|
2226
2265
|
--origam-icon---transition-timing-function: var(--origam-motion__easing---standard);
|
|
@@ -2691,6 +2730,26 @@
|
|
|
2691
2730
|
--origam-audio--error---padding: var(--origam-space---2) var(--origam-space---3);
|
|
2692
2731
|
--origam-audio--error---gap: var(--origam-space---2);
|
|
2693
2732
|
--origam-audio--error---icon-font-size: var(--origam-font__size---lg);
|
|
2733
|
+
/* #594 — canaux C2 ouverts : lus par OrigamAudio depuis des selecteurs VIVANTS, declares par personne. Valeurs = le repli deja rendu. */
|
|
2734
|
+
--origam-audio__header---margin-bottom: 12px;
|
|
2735
|
+
--origam-audio__btn---size: 28px;
|
|
2736
|
+
--origam-audio__btn---icon-size: 16px;
|
|
2737
|
+
--origam-audio__meta-separator---content: "\00B7"; /* #594 — U+00B7 ECHAPPE, et il DOIT le rester. Ecrit en litteral, ce seul caractere non-ASCII faisait emettre a dart-sass un BOM en tete de main.css (`--style=compressed` pose un BOM la ou le mode etendu poserait `@charset`). Un BOM n est PAS retire a l interieur d un `<style>` : il se collait au premier selecteur, qui ne matchait alors plus rien — les 156 declarations primitives mortes, tous les tokens semantiques et derives a vide. Mesure le 2026-09-30 : 7 echecs sur derived-tokens-subtree.spec.ts. L echappement rend le MEME glyphe (verifie en Chromium) et garde la feuille compilee en ASCII pur. Regle : aucune valeur de token ne doit contenir de caractere non-ASCII — utiliser la forme \XXXX. */
|
|
2738
|
+
--origam-audio__playlist---max-height: 220px;
|
|
2739
|
+
--origam-audio__playlist---padding-top: 8px;
|
|
2740
|
+
--origam-audio__playlist---margin-top: 12px;
|
|
2741
|
+
--origam-audio__playlist---border-color: color-mix(in srgb, currentColor 8%, transparent);
|
|
2742
|
+
/* Les deux lignes de meta de la playlist resolvaient `var(--origam-color__text---secondary)` par repli — exactement ce que `--origam-audio---secondary-color` declare deja. Les brancher dessus ouvre les deux canaux ET rend ce token atteignable, a valeur rendue identique. */
|
|
2743
|
+
--origam-audio__playlist-subtitle---color: var(--origam-audio---secondary-color);
|
|
2744
|
+
--origam-audio__playlist-duration---color: var(--origam-audio---secondary-color);
|
|
2745
|
+
--origam-audio__playlist-item__prepend---margin-inline-end: 12px;
|
|
2746
|
+
--origam-audio--compact---padding: 8px 12px;
|
|
2747
|
+
--origam-audio--compact__header---gap: 12px;
|
|
2748
|
+
--origam-audio--compact__btn---size: 24px;
|
|
2749
|
+
--origam-audio--compact__btn---icon-size: 14px;
|
|
2750
|
+
--origam-audio--compact__play-btn---size: 56px;
|
|
2751
|
+
--origam-audio--compact__play-btn---icon-size: 40px;
|
|
2752
|
+
--origam-audio--compact__progress---height: 3px;
|
|
2694
2753
|
--origam-media-scrubber---color: var(--origam-color__action--primary---bg);
|
|
2695
2754
|
--origam-media-scrubber---primary: var(--origam-color__action--primary---bg);
|
|
2696
2755
|
--origam-media-scrubber---track-background-color: var(--origam-color__surface---overlay);
|
|
@@ -827,6 +827,27 @@ defineExpose({
|
|
|
827
827
|
}
|
|
828
828
|
}
|
|
829
829
|
|
|
830
|
+
/*
|
|
831
|
+
* ⛔ #594 — SEPT tokens `--origam-audio*` que les feuilles declarent et
|
|
832
|
+
* que ce SCSS ne lit pas. Ils restent en baseline
|
|
833
|
+
* `token-var-channels-dormant.json` :
|
|
834
|
+
*
|
|
835
|
+
* · `__cover---border-radius` (radius---md = 8px) — la pochette est un
|
|
836
|
+
* DISQUE : `border-radius: 50%` ci-dessous, sillons concentriques et
|
|
837
|
+
* trou de broche compris. Cabler par le nom transformerait le vinyle
|
|
838
|
+
* en carre arrondi. Exemple type du « ne jamais cabler un orphelin
|
|
839
|
+
* sur la foi de son nom » ;
|
|
840
|
+
* · `__artist---color`, `__album---color`, `__duration---color`
|
|
841
|
+
* (text---secondary) — les trois elements existent, mais leur
|
|
842
|
+
* couleur vient de `.origam-audio__meta`, en
|
|
843
|
+
* `color-mix(in srgb, currentColor 60%, transparent)`. La valeur
|
|
844
|
+
* declaree est une AUTRE couleur ;
|
|
845
|
+
* · `__body---gap` (space---3), `__compact---body-gap` (space---2) —
|
|
846
|
+
* aucune classe `.origam-audio__body` dans le template ;
|
|
847
|
+
* · `__transport---btn-icon-size` (20px) — la taille livree pour les
|
|
848
|
+
* boutons de la rangee est 16px (`__btn---icon-size`, cable), et le
|
|
849
|
+
* bloc `&__transport` est de toute facon un selecteur mort.
|
|
850
|
+
*/
|
|
830
851
|
&__cover {
|
|
831
852
|
margin: 0;
|
|
832
853
|
display: flex;
|
|
@@ -1028,6 +1049,27 @@ defineExpose({
|
|
|
1028
1049
|
color: var(--origam-audio__waveform---color, color-mix(in srgb, currentColor 50%, transparent));
|
|
1029
1050
|
}
|
|
1030
1051
|
|
|
1052
|
+
/*
|
|
1053
|
+
* ⛔ #594 — SELECTEURS MORTS, mesure du 2026-09-27. Ni
|
|
1054
|
+
* `.origam-audio__transport`, ni `__nav-btn`, ni `__play-btn`, ni
|
|
1055
|
+
* `__time`, ni `__spacer`, ni `__volume`, ni `__cast`, ni `__config`
|
|
1056
|
+
* n existent dans le template : la barre de transport a ete remplacee
|
|
1057
|
+
* par `OrigamMediaController` (`.origam-audio__controller`, ligne 65),
|
|
1058
|
+
* et ces blocs sont restes. Verifie sur les 45 variants de la story
|
|
1059
|
+
* dans Chromium — `document.querySelector` renvoie `null` partout.
|
|
1060
|
+
*
|
|
1061
|
+
* Consequence pour la campagne C2 : les tokens que ces regles lisent
|
|
1062
|
+
* (`__transport---min-height`, les quatre `__nav-btn---*`,
|
|
1063
|
+
* `__play-btn---color`, `__play-btn---icon-size`, `__time---color`)
|
|
1064
|
+
* sont LAISSES non declares a dessein. Les declarer ne deplacerait
|
|
1065
|
+
* aucun pixel — precisement parce que rien ne matche — mais graverait
|
|
1066
|
+
* dans le canal public des noms qu un theme pourrait regler sans
|
|
1067
|
+
* jamais rien voir changer. Ils restent en baseline
|
|
1068
|
+
* `token-var-channels.json` jusqu a ce que ces blocs soient soit
|
|
1069
|
+
* supprimes, soit recables sur le controleur (cf. #578).
|
|
1070
|
+
*
|
|
1071
|
+
* Meme cas une trentaine de lignes plus bas pour `&__playlist-artist`.
|
|
1072
|
+
*/
|
|
1031
1073
|
&__transport {
|
|
1032
1074
|
display: flex;
|
|
1033
1075
|
align-items: center;
|
|
@@ -1120,8 +1162,22 @@ defineExpose({
|
|
|
1120
1162
|
align-items: center;
|
|
1121
1163
|
gap: var(--origam-audio--error---gap, 6px);
|
|
1122
1164
|
padding: var(--origam-audio--error---padding, 8px 12px);
|
|
1123
|
-
|
|
1124
|
-
|
|
1165
|
+
/*
|
|
1166
|
+
* #594 — EFFONDREMENT de deux replis fantomes. Les deux lignes
|
|
1167
|
+
* lisaient `var(RUNG1, var(--origam-color__status--error---*, T))`.
|
|
1168
|
+
* Mesure : la famille `--origam-color__status--*` n est declaree
|
|
1169
|
+
* NULLE PART (zero occurrence en partie gauche dans
|
|
1170
|
+
* `assets/css/tokens/*` ni `assets/scss/tokens/*`) — c est une
|
|
1171
|
+
* grammaire fantome, et `--error--bg` y ecrivait meme `--bg` au
|
|
1172
|
+
* lieu de `---bg`. Les deux RUNG1 sont eux declares light ET dark
|
|
1173
|
+
* (`--origam-color__feedback--danger---bgSubtle` / `---fgSubtle`),
|
|
1174
|
+
* donc l echelon fantome etait INATTEIGNABLE par construction : il
|
|
1175
|
+
* ne peignait rien et ne pouvait rien peindre. Retire du site de
|
|
1176
|
+
* lecture — zero pixel deplace, deux canaux morts en moins, et pas
|
|
1177
|
+
* un nom faux grave dans le canal public.
|
|
1178
|
+
*/
|
|
1179
|
+
background-color: var(--origam-audio--error---background-color, transparent);
|
|
1180
|
+
color: var(--origam-audio--error---color, inherit);
|
|
1125
1181
|
border-radius: var(--origam-audio--error---border-radius, var(--origam-radius---sm, 4px));
|
|
1126
1182
|
font-size: var(--origam-audio--error---font-size, 0.875rem);
|
|
1127
1183
|
grid-column: 1 / -1;
|
|
@@ -1260,6 +1316,14 @@ defineExpose({
|
|
|
1260
1316
|
}
|
|
1261
1317
|
}
|
|
1262
1318
|
|
|
1319
|
+
/*
|
|
1320
|
+
* ⛔ #594 — SELECTEUR MORT : aucune `.origam-audio__playlist-artist`
|
|
1321
|
+
* dans le template (la ligne de playlist rend un `OrigamListItem`,
|
|
1322
|
+
* dont le sous-titre porte `.origam-list-item__subtitle`, cable juste
|
|
1323
|
+
* au-dessus). `--origam-audio__playlist-artist---color` reste donc non
|
|
1324
|
+
* declare, pour la meme raison que le bloc `&__transport` : un canal
|
|
1325
|
+
* qui ne peint rien ne doit pas entrer dans la feuille publique.
|
|
1326
|
+
*/
|
|
1263
1327
|
&__playlist-artist {
|
|
1264
1328
|
color: var(--origam-audio__playlist-artist---color, var(--origam-color__text---secondary));
|
|
1265
1329
|
font-size: 12px;
|
|
@@ -539,6 +539,18 @@ defineExpose({
|
|
|
539
539
|
color: var(--origam-chip--selected---color);
|
|
540
540
|
}
|
|
541
541
|
|
|
542
|
+
/*
|
|
543
|
+
* ⛔ #595 — `--origam-chip---font-size` est lu par les cinq paliers et
|
|
544
|
+
* DOIT rester non declare. C est le premier maillon d une chaine de
|
|
545
|
+
* replis dont le second est par-palier : le declarer a `:root` figerait
|
|
546
|
+
* la meme taille de police pour `x-small` comme pour `x-large` et
|
|
547
|
+
* rendrait `--origam-chip---font-size-{xs..xl}` inatteignables — la
|
|
548
|
+
* prop `size` perdrait son canal typographique. Meme piege que la
|
|
549
|
+
* cascade de replis de Card (#593).
|
|
550
|
+
*
|
|
551
|
+
* Les cinq `---height-{xs..xl}`, eux, sont un niveau unique : ils
|
|
552
|
+
* viennent d etre declares a leur valeur livree (20/24/32/38/44px).
|
|
553
|
+
*/
|
|
542
554
|
&--size-x-small {
|
|
543
555
|
font-size: var(--origam-chip---font-size, var(--origam-chip---font-size-xs, 0.625rem));
|
|
544
556
|
line-height: 1;
|
|
@@ -574,6 +586,28 @@ defineExpose({
|
|
|
574
586
|
padding: 0 var(--origam-chip---padding-xl, 17px);
|
|
575
587
|
}
|
|
576
588
|
|
|
589
|
+
/*
|
|
590
|
+
* ⛔ #595 — QUINZE tokens `--origam-chip--*` que les feuilles declarent
|
|
591
|
+
* et que ce SCSS ne lit PAS. Ils restent en baseline
|
|
592
|
+
* `token-var-channels-dormant.json`, voici pourquoi :
|
|
593
|
+
*
|
|
594
|
+
* · les douze `--{success,warning,danger,info}---{background-color,
|
|
595
|
+
* color,border-color}` et les deux `--outlined---{background-color,
|
|
596
|
+
* border-color}` supposent des regles `&--danger` / `&--outlined`
|
|
597
|
+
* que le composant n a pas et ne doit pas avoir : l intention est
|
|
598
|
+
* peinte par `useColorEffect` (style INLINE) et par les classes
|
|
599
|
+
* utilitaires `.origam--bg-*`. Une regle de variante au selecteur
|
|
600
|
+
* perdrait de toute facon contre l inline, ou — pire, avec un
|
|
601
|
+
* `!important` — empecherait la prop de peindre : c est exactement
|
|
602
|
+
* l incident qui a produit l ADR-005 et le garde `no-variant-css`.
|
|
603
|
+
* La classe emise reste un point d accroche CONSOMMATEUR ;
|
|
604
|
+
* · `---density` (0px) est ECRIT juste en dessous par les deux
|
|
605
|
+
* modificateurs de densite et LU par personne. C est un defaut
|
|
606
|
+
* distinct de C2 — la prop `density` de Chip est inerte, aucune
|
|
607
|
+
* hauteur ni marge ne consomme la variable — et le corriger
|
|
608
|
+
* changerait le rendu de `density="compact"`. Hors perimetre de ce
|
|
609
|
+
* lot, signale sans ticket ouvert (consigne du lot).
|
|
610
|
+
*/
|
|
577
611
|
&--density-default {
|
|
578
612
|
--origam-chip---density: 0px;
|
|
579
613
|
}
|
|
@@ -572,8 +572,41 @@ defineExpose({
|
|
|
572
572
|
display: grid;
|
|
573
573
|
grid-template-areas: "prepend-inner field clear append-inner";
|
|
574
574
|
grid-template-columns: min-content minmax(0, 1fr) min-content min-content;
|
|
575
|
+
/*
|
|
576
|
+
* ⛔ #595 — NEUF tokens `--origam-field*` (plus un `--origam-input*`)
|
|
577
|
+
* que les feuilles declarent et que ce SCSS ne lit pas. Ils restent en
|
|
578
|
+
* baseline `token-var-channels-dormant.json` :
|
|
579
|
+
*
|
|
580
|
+
* · les quatre `__overlay---{background-color,opacity,
|
|
581
|
+
* pointer-events,position}` — l element `.origam-field__overlay`
|
|
582
|
+
* EXISTE dans le template (ligne 10) mais AUCUNE regle ne le style :
|
|
583
|
+
* il est aujourd hui sans position, sans fond, sans opacite. Les
|
|
584
|
+
* cabler ajouterait quatre proprietes absentes du rendu. C est le
|
|
585
|
+
* raisonnement « visuellement inerte » qu un lot de #550 a tenu
|
|
586
|
+
* avant de devoir tout reverter (hypothese de containment non
|
|
587
|
+
* verifiee en navigateur) : on ne le rejoue pas ;
|
|
588
|
+
* · `---color` (text---primary) — la racine ne declare aucun `color`,
|
|
589
|
+
* la couleur du champ est heritee ;
|
|
590
|
+
* · `---transition-duration`, `---transition-easing` — la racine ne
|
|
591
|
+
* declare aucune `transition` ; celles qui existent sont portees par
|
|
592
|
+
* `__label` / `__clearable` / `__outline`, chacune avec son propre
|
|
593
|
+
* couple de tokens deja cable ;
|
|
594
|
+
* · `---prepend-inner-icon-opacity-focused`,
|
|
595
|
+
* `---append-inner-icon-opacity-focused` (opacity---100) — au focus,
|
|
596
|
+
* `opacity: 1` est pose sur les CONTENEURS `__prepend-inner` /
|
|
597
|
+
* `__append-inner`, pas sur l icone : l icone garde son 0.7. Cabler
|
|
598
|
+
* par le nom la ferait passer a 1 (changement de rendu) ; cabler le
|
|
599
|
+
* conteneur graverait un nom faux ;
|
|
600
|
+
* · `--origam-input---icon-opacity-active` (opacity---100) — le seul
|
|
601
|
+
* `opacity: 1` d icone vit dans `OrigamInput` sous
|
|
602
|
+
* `&--disabled, &--error`. La valeur coinciderait, le nom
|
|
603
|
+
* « active » non.
|
|
604
|
+
*
|
|
605
|
+
* `---letter-spacing`, lui, vient d etre cable : la valeur livree en dur
|
|
606
|
+
* est identique aux deux sites, et la feuille a ete realignee sur elle.
|
|
607
|
+
*/
|
|
575
608
|
font-size: var(--origam-field---font-size, 16px);
|
|
576
|
-
letter-spacing: 0.009375em;
|
|
609
|
+
letter-spacing: var(--origam-field---letter-spacing, 0.009375em);
|
|
577
610
|
max-width: 100%;
|
|
578
611
|
border-radius: var(--origam-field---border-radius, 8px);
|
|
579
612
|
contain: layout;
|
|
@@ -608,6 +641,18 @@ defineExpose({
|
|
|
608
641
|
|
|
609
642
|
&__skeleton {
|
|
610
643
|
width: 100%;
|
|
644
|
+
/*
|
|
645
|
+
* ⛔ #595 — FAUX POSITIF de `token-var-channels`, a laisser en
|
|
646
|
+
* baseline. Le repli est `var(--origam-input__control---height, 36px)`,
|
|
647
|
+
* et ce token-la est ECRIT PAR INSTANCE : les quatre modificateurs
|
|
648
|
+
* de taille de ce composant (~l.1532-1550) comme ceux d `OrigamInput`
|
|
649
|
+
* et d `OrigamTextareaField` le posent sur l element
|
|
650
|
+
* (`sm`=28 / `md`=36 / `lg`=44 / `xl`=52px). Declarer
|
|
651
|
+
* `--origam-field__skeleton---min-height` a `:root` avec ce repli
|
|
652
|
+
* substituerait la valeur RACINE (36px) une fois pour toutes : le
|
|
653
|
+
* squelette cesserait de suivre la taille du champ. Meme piege que
|
|
654
|
+
* `---hover-x` sur SliderField.
|
|
655
|
+
*/
|
|
611
656
|
min-height: var(--origam-field__skeleton---min-height, var(--origam-input__control---height, 36px));
|
|
612
657
|
border-radius: var(--origam-field---border-radius, 8px);
|
|
613
658
|
grid-column: 1 / -1;
|
|
@@ -635,9 +680,24 @@ defineExpose({
|
|
|
635
680
|
column-gap: 2px;
|
|
636
681
|
display: flex;
|
|
637
682
|
flex-wrap: wrap;
|
|
638
|
-
letter-spacing: 0.009375em;
|
|
683
|
+
letter-spacing: var(--origam-field---letter-spacing, 0.009375em);
|
|
639
684
|
opacity: var(--origam-field__input---opacity, 0.7);
|
|
640
685
|
box-sizing: border-box;
|
|
686
|
+
/*
|
|
687
|
+
* ⛔ #595 — FAUX POSITIF de `token-var-channels`, a laisser en
|
|
688
|
+
* baseline (5 lectures ici, 1 dans OrigamSwitch, 1 dans
|
|
689
|
+
* OrigamCheckbox). `--origam-input---density` est ECRIT PAR
|
|
690
|
+
* INSTANCE par les trois modificateurs de densite d `OrigamInput`
|
|
691
|
+
* (~l.424-432 : `default`=0px, `compact`=-8px,
|
|
692
|
+
* `comfortable`=+8px) — ce sont eux, et non une feuille, qui
|
|
693
|
+
* portent la valeur. Ce que les feuilles declarent, c est l ECHELLE
|
|
694
|
+
* (`--origam-input---density-{default,compact,comfortable}-density`),
|
|
695
|
+
* qui est bien atteignable par un theme ; le token agrege ne doit
|
|
696
|
+
* pas l etre. La declarer a `:root` figerait la densite racine pour
|
|
697
|
+
* tout champ dont le modificateur ne serait pas un ancetre du
|
|
698
|
+
* lecteur — et le lot ne peut pas le verifier sur les trois
|
|
699
|
+
* composants sans changer de perimetre.
|
|
700
|
+
*/
|
|
641
701
|
min-height: max(calc(var(--origam-input__control---height, 36px) + var(--origam-input---density, 0px)), 1.5rem + var(--origam-field__input---padding-top) + var(--origam-field__input---padding-bottom));
|
|
642
702
|
min-width: 0;
|
|
643
703
|
padding-inline: var(--origam-field__input---padding-start) var(--origam-field__input---padding-end);
|
|
@@ -1011,7 +1071,20 @@ defineExpose({
|
|
|
1011
1071
|
|
|
1012
1072
|
&--variant {
|
|
1013
1073
|
&-solo {
|
|
1014
|
-
|
|
1074
|
+
/*
|
|
1075
|
+
* #595 — EFFONDREMENT d un repli fantome. Cette ligne lisait
|
|
1076
|
+
* `var(--origam-theme---elevation, var(RUNG2, ...))`. Mesure du
|
|
1077
|
+
* 2026-09-29 : `--origam-theme---elevation` a UNE SEULE
|
|
1078
|
+
* occurrence dans tout le depot — ce site de lecture. Aucune
|
|
1079
|
+
* feuille ne la declare, aucun composant ne l ecrit, et la
|
|
1080
|
+
* matrice runtime (`apply-theme.util.ts`) ne l emet pas non
|
|
1081
|
+
* plus. Le nom n est d ailleurs pas grammatical : `--origam-theme`
|
|
1082
|
+
* n est pas un bloc de composant. RUNG2
|
|
1083
|
+
* (`--origam-field--variant-solo---box-shadow`) est lui declare
|
|
1084
|
+
* light ET dark a `var(--origam-shadow---sm)` : c est lui qui
|
|
1085
|
+
* peignait, et qui peint toujours. Zero pixel deplace.
|
|
1086
|
+
*/
|
|
1087
|
+
box-shadow: var(--origam-field--variant-solo---box-shadow, var(--origam-shadow---sm));
|
|
1015
1088
|
border-color: transparent;
|
|
1016
1089
|
--origam-field__input---padding-top: var(--origam-field__input---padding-block-solo);
|
|
1017
1090
|
}
|
|
@@ -372,10 +372,97 @@ defineExpose({
|
|
|
372
372
|
// padding `0px/0px`, so the rows ran edge-to-edge inside the menu
|
|
373
373
|
// and their hover surface was clipped by the menu's own corner
|
|
374
374
|
// radius. The two longhands are the names the base rule reads.
|
|
375
|
-
--origam-list---padding-inline-start: var(--origam-space---
|
|
376
|
-
--origam-list---padding-inline-end: var(--origam-space---
|
|
375
|
+
--origam-list---padding-inline-start: var(--origam-space---1, 4px);
|
|
376
|
+
--origam-list---padding-inline-end: var(--origam-space---1, 4px);
|
|
377
|
+
|
|
378
|
+
// ⛔ L'AXE VERTICAL DOIT ETRE DECLARE ICI AUSSI, et pas seulement dans
|
|
379
|
+
// la feuille. Mesure du 2026-09-30, menu nav de la barre marketing sur
|
|
380
|
+
// les 8 identites : `--origam-list---padding-block-start/end` valait
|
|
381
|
+
// `0` sur SEPT d'entre elles, et `var(--origam-space---2)` sur la seule
|
|
382
|
+
// `origam`. La feuille (`light.css:1716`) donne bien 8px, mais la
|
|
383
|
+
// matrice de theme runtime emet `0` pour chaque marque, et `origam`
|
|
384
|
+
// n'y echappe que parce qu'elle porte encore le reset genere
|
|
385
|
+
// (`origam-reset.generated.ts`, cf. #609) qui le re-declare.
|
|
386
|
+
//
|
|
387
|
+
// Une declaration SUR L'ELEMENT bat celle de `:root` : la poser ici
|
|
388
|
+
// neutralise l'ecart entre identites sans toucher aux 7 themes. Le
|
|
389
|
+
// rendu passait de 5-7px en vertical contre 13-27px en inline — un
|
|
390
|
+
// facteur 4 sur cartoon et glass — a des gouttieres du meme ordre.
|
|
391
|
+
--origam-list---padding-block-start: var(--origam-space---1, 4px);
|
|
392
|
+
--origam-list---padding-block-end: var(--origam-space---1, 4px);
|
|
393
|
+
|
|
377
394
|
--origam-list-subheader---font-size: var(--origam-list__subheader---nav-font-size, 0.75rem);
|
|
378
|
-
|
|
395
|
+
|
|
396
|
+
// ⛔ INDENT A ZERO EN MODE NAV — il rendait les items ASYMETRIQUES.
|
|
397
|
+
// `OrigamListItem` calcule
|
|
398
|
+
// `padding-inline-start: calc(base + indent + density)` mais
|
|
399
|
+
// `padding-inline-end: calc(base + density)` : l'indent ne s'applique
|
|
400
|
+
// QU'AU COTE START. Avec -8px, un item de menu recevait donc 8px de
|
|
401
|
+
// moins a gauche qu'a droite. Mesure : du bord du menu au texte,
|
|
402
|
+
// `origam` 12px a gauche contre 20px a droite, `apple` 14/18,
|
|
403
|
+
// `ecom`/`editorial`/`geek` 13/17 — cinq identites sur huit
|
|
404
|
+
// desequilibrees.
|
|
405
|
+
//
|
|
406
|
+
// L'indent sert a decaler les niveaux IMBRIQUES ; un menu de
|
|
407
|
+
// navigation est plat, il n'a rien a indenter. Les listes imbriquees
|
|
408
|
+
// gardent `--origam-list---indent-padding` intact hors mode nav.
|
|
409
|
+
--origam-list---indent-padding: 0px;
|
|
410
|
+
|
|
411
|
+
// ⛔ HAUTEUR DE RANGEE RESSERREE — 48px -> 36px, decision de
|
|
412
|
+
// l'utilisateur (2026-09-30), et elle a un COUT qu'il a accepte en
|
|
413
|
+
// connaissance de cause.
|
|
414
|
+
//
|
|
415
|
+
// `OrigamListItem` calcule
|
|
416
|
+
// `min-height: max(calc(base + densite), 1.5rem)`. Avec la base de
|
|
417
|
+
// feuille a 56px et la densite compacte a -8px, une rangee de menu
|
|
418
|
+
// faisait 48px : les libelles restaient a 50px les uns des autres
|
|
419
|
+
// alors que les gouttieres venaient d'etre resserrees a 8-11px. C'est
|
|
420
|
+
// la hauteur de rangee, PAS une gouttiere, qui portait le reste du
|
|
421
|
+
// desequilibre signale.
|
|
422
|
+
//
|
|
423
|
+
// ⚠️ 36px passe SOUS la cible tactile de 44x44 recommandee par WCAG
|
|
424
|
+
// 2.5.5. Le compromis est assume pour un menu de navigation d'en-tete,
|
|
425
|
+
// dense et pointe a la souris. ⛔ NE PAS propager cette valeur aux
|
|
426
|
+
// listes hors mode `nav` : une liste de contenu garde 48px, et c'est
|
|
427
|
+
// pour cela que la declaration vit dans `&--nav` et nulle part
|
|
428
|
+
// ailleurs. La base ajoute la densite, donc on vise 44 pour obtenir 36
|
|
429
|
+
// en densite compacte.
|
|
430
|
+
--origam-list-item---min-height: var(--origam-list--nav---item-min-height, 44px);
|
|
431
|
+
|
|
432
|
+
// Le `min-height` seul ne suffit pas : mesure, la rangee rendait 40px
|
|
433
|
+
// et non 36, parce que le CONTENU la depassait — texte plus les 8px de
|
|
434
|
+
// padding haut et bas de l'item. On resserre donc aussi ce padding en
|
|
435
|
+
// mode nav, sinon la hauteur demandee reste theorique.
|
|
436
|
+
:deep(.origam-list-item) {
|
|
437
|
+
--origam-list-item---padding-block-start: var(--origam-list--nav---item-padding-block, 6px);
|
|
438
|
+
--origam-list-item---padding-block-end: var(--origam-list--nav---item-padding-block, 6px);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
// ⛔ L'ECART ENTRE PASTILLES ETAIT NUL — le desequilibre signale.
|
|
442
|
+
// Mesure du 2026-09-30 sur le menu « Features » (10 items), 8
|
|
443
|
+
// identites : la pastille d'un item est en retrait de 12 a 15px a
|
|
444
|
+
// gauche ET a droite, mais l'ecart VERTICAL entre deux pastilles
|
|
445
|
+
// valait `0` sur SEPT identites sur huit (geek : 5px). Les rangees se
|
|
446
|
+
// touchent donc bord a bord pendant que les cotes respirent — un
|
|
447
|
+
// rapport infini, pas seulement desequilibre.
|
|
448
|
+
//
|
|
449
|
+
// La liste est un conteneur BLOC : pas de `gap` disponible sans la
|
|
450
|
+
// passer en flex, ce qui toucherait les ~200 consommateurs de
|
|
451
|
+
// `origam-list`. La marge entre freres adjacents obtient le meme
|
|
452
|
+
// resultat sans changer le mode de disposition, et ne s'applique qu'au
|
|
453
|
+
// mode nav.
|
|
454
|
+
// ⛔ `:deep()` EST OBLIGATOIRE ICI, et une regle scopee nue ne marche
|
|
455
|
+
// PAS. Mesure : l'item porte `data-v-5f5f508b` (OrigamListItem) et le
|
|
456
|
+
// scope de l'appelant, mais PAS `data-v-05b52ddf` (OrigamList) — les
|
|
457
|
+
// items arrivent par le SLOT, donc ils appartiennent au scope de celui
|
|
458
|
+
// qui les ecrit, pas a celui de la liste qui les recoit. Une regle
|
|
459
|
+
// scopee nue compile en `… .origam-list-item[data-v-05b52ddf]` et ne
|
|
460
|
+
// matche jamais : le premier essai a rendu un ecart de 0px, identique
|
|
461
|
+
// a l'etat d'avant. `:deep()` pose l'attribut sur l'ANCETRE, qui lui
|
|
462
|
+
// le porte.
|
|
463
|
+
:deep(.origam-list-item + .origam-list-item) {
|
|
464
|
+
margin-block-start: var(--origam-list--nav---item-gap, 2px);
|
|
465
|
+
}
|
|
379
466
|
}
|
|
380
467
|
|
|
381
468
|
&--rounded {
|
|
@@ -20,7 +20,7 @@ import { useDimension } from "../../composables/Commons/dimension.composable";
|
|
|
20
20
|
import { useBorder } from "../../composables/Commons/border.composable";
|
|
21
21
|
import { useBothColor } from "../../composables/Commons/bothColor.composable";
|
|
22
22
|
import { useElevation } from "../../composables/Commons/elevation.composable";
|
|
23
|
-
import {
|
|
23
|
+
import { useLayoutMain } from "../../composables/Commons/layout.composable";
|
|
24
24
|
import { useMargin } from "../../composables/Commons/margin.composable";
|
|
25
25
|
import { usePadding } from "../../composables/Commons/padding.composable";
|
|
26
26
|
import { useProps } from "../../composables/Commons/props.composable";
|
|
@@ -78,7 +78,7 @@ const props = defineProps({
|
|
|
78
78
|
const { filterProps } = useProps(props);
|
|
79
79
|
defineEmits([]);
|
|
80
80
|
defineSlots();
|
|
81
|
-
const { mainStyles: mainLayoutStyles } =
|
|
81
|
+
const { mainStyles: mainLayoutStyles } = useLayoutMain();
|
|
82
82
|
const { ssrBootStyles } = useSsrBoot();
|
|
83
83
|
const { colorClasses, colorStyles } = useBothColor(toRef(props, "bgColor"), toRef(props, "color"));
|
|
84
84
|
const { elevationClasses } = useElevation(props);
|
|
@@ -428,7 +428,17 @@ defineExpose({
|
|
|
428
428
|
color: var(--origam-media-scrubber__tooltip---color, #ffffff);
|
|
429
429
|
font-size: 11px;
|
|
430
430
|
font-weight: 600;
|
|
431
|
-
|
|
431
|
+
/*
|
|
432
|
+
* #595 — REFERENCE CORRIGEE : lisait `var(--origam-font---family, …)`,
|
|
433
|
+
* un nom que AUCUNE feuille ne declare (zero occurrence en partie
|
|
434
|
+
* gauche dans `assets/`). Ce composant retombait donc toujours sur
|
|
435
|
+
* `system-ui` et ignorait la police du DS. Le barreau reel est
|
|
436
|
+
* `--origam-font__family---sans` (primitive.css) = `Inter, 'Helvetica
|
|
437
|
+
* Neue', Arial, sans-serif`. ⚠️ Change le rendu, volontairement. Le
|
|
438
|
+
* repli `system-ui, sans-serif` reste en ceinture de securite si la
|
|
439
|
+
* feuille de primitives n est pas chargee.
|
|
440
|
+
*/
|
|
441
|
+
font-family: var(--origam-font__family---sans, system-ui, sans-serif);
|
|
432
442
|
border-radius: 3px;
|
|
433
443
|
white-space: nowrap;
|
|
434
444
|
pointer-events: none;
|