@sentropic/design-system-vue 0.36.43 → 0.36.45

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 (44) hide show
  1. package/dist/Badge.d.ts +34 -0
  2. package/dist/Badge.d.ts.map +1 -1
  3. package/dist/Badge.js +3 -1
  4. package/dist/Badge.js.map +1 -1
  5. package/dist/Checkbox.d.ts +11 -0
  6. package/dist/Checkbox.d.ts.map +1 -1
  7. package/dist/Checkbox.js +50 -26
  8. package/dist/Checkbox.js.map +1 -1
  9. package/dist/Collapsible.d.ts.map +1 -1
  10. package/dist/Collapsible.js +6 -0
  11. package/dist/Collapsible.js.map +1 -1
  12. package/dist/NavActionStack.d.ts +105 -0
  13. package/dist/NavActionStack.d.ts.map +1 -0
  14. package/dist/NavActionStack.js +109 -0
  15. package/dist/NavActionStack.js.map +1 -0
  16. package/dist/NavItem.d.ts +189 -0
  17. package/dist/NavItem.d.ts.map +1 -0
  18. package/dist/NavItem.js +121 -0
  19. package/dist/NavItem.js.map +1 -0
  20. package/dist/NavSection.d.ts +109 -0
  21. package/dist/NavSection.d.ts.map +1 -0
  22. package/dist/NavSection.js +104 -0
  23. package/dist/NavSection.js.map +1 -0
  24. package/dist/Overline.d.ts +40 -0
  25. package/dist/Overline.d.ts.map +1 -0
  26. package/dist/Overline.js +20 -0
  27. package/dist/Overline.js.map +1 -0
  28. package/dist/Search.d.ts +11 -0
  29. package/dist/Search.d.ts.map +1 -1
  30. package/dist/Search.js +2 -1
  31. package/dist/Search.js.map +1 -1
  32. package/dist/SelectableRow.d.ts.map +1 -1
  33. package/dist/SelectableRow.js +14 -2
  34. package/dist/SelectableRow.js.map +1 -1
  35. package/dist/StatusDot.d.ts +87 -0
  36. package/dist/StatusDot.d.ts.map +1 -0
  37. package/dist/StatusDot.js +52 -0
  38. package/dist/StatusDot.js.map +1 -0
  39. package/dist/index.d.ts +11 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +5 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/styles.css +343 -0
  44. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -445,6 +445,31 @@
445
445
  color: var(--st-component-badge-infoText, var(--st-semantic-feedback-info));
446
446
  }
447
447
 
448
+ /* Shape variants (additive). `pill` is the UNTOUCHED base `.st-badge` above —
449
+ no `--pill` rule exists, so a `shape="pill"` (or unset) badge renders
450
+ byte-identically. `--circle` overlays an equal-sided round bubble: equal
451
+ min-width/min-height, equal inline/block padding, centered, tabular-nums for
452
+ stable digit width. 3+ digit content degrades to a rounded-rect (the box
453
+ grows past the diameter, never clips). Every leaf falls back to a base
454
+ literal so a theme that emits no `--st-component-badge-circle-*` renders the
455
+ variant identically. */
456
+ .st-badge--circle {
457
+ border-radius: var(--st-component-badge-circle-radius, 50%);
458
+ box-sizing: border-box;
459
+ font-variant-numeric: tabular-nums;
460
+ justify-content: center;
461
+ min-width: var(--st-component-badge-circle-size, 1.25rem);
462
+ min-height: var(--st-component-badge-circle-size, 1.25rem);
463
+ padding: var(--st-component-badge-circle-padding, 0.125rem);
464
+ text-align: center;
465
+ }
466
+
467
+ /* Density variant (additive). `md` is the UNTOUCHED base font-size; `--sm`
468
+ reuses the Tag `sm` scale for cross-house consistency. */
469
+ .st-badge--sm {
470
+ font-size: var(--st-component-badge-sm-fontSize, 0.6875rem);
471
+ }
472
+
448
473
  .st-barChart {
449
474
  color: var(--st-semantic-text-secondary);
450
475
  display: block;
@@ -8226,6 +8251,15 @@
8226
8251
  flex: 1 1 auto;
8227
8252
  }
8228
8253
 
8254
+ /* Trigger trailing slot (additive). Holds a count badge / status / glyph
8255
+ between the title and the chevron; never grows, so the chevron stays the
8256
+ rightmost affordance and the title keeps `flex: 1 1 auto`. */
8257
+ .st-collapsible__trailing {
8258
+ align-items: center;
8259
+ display: inline-flex;
8260
+ flex: 0 0 auto;
8261
+ }
8262
+
8229
8263
  .st-collapsible__icon {
8230
8264
  align-items: center;
8231
8265
  color: var(--st-semantic-text-secondary);
@@ -9025,6 +9059,34 @@
9025
9059
  white-space: nowrap;
9026
9060
  }
9027
9061
 
9062
+ /* Caption variant (additive). Rows WITHOUT a caption keep the single-line
9063
+ `.st-selectableRow__content` above byte-identically (no `--stacked` rule
9064
+ applies). `--stacked` overlays a vertical column: the primary `__label` keeps
9065
+ its own single-line ellipsis, and the muted `__caption` truncates
9066
+ independently so a long legend never pushes the row width. Every leaf falls
9067
+ back to a base literal so a theme that emits no
9068
+ `--st-component-selectableRow-caption*` renders the caption identically. */
9069
+ .st-selectableRow__content--stacked {
9070
+ display: flex;
9071
+ flex-direction: column;
9072
+ overflow: visible;
9073
+ white-space: normal;
9074
+ gap: var(--st-component-selectableRow-captionGap, 0.125rem);
9075
+ }
9076
+
9077
+ .st-selectableRow__label,
9078
+ .st-selectableRow__caption {
9079
+ min-width: 0;
9080
+ overflow: hidden;
9081
+ text-overflow: ellipsis;
9082
+ white-space: nowrap;
9083
+ }
9084
+
9085
+ .st-selectableRow__caption {
9086
+ color: var(--st-component-selectableRow-captionColor, var(--st-semantic-text-muted));
9087
+ font-size: var(--st-component-selectableRow-captionFontSize, 0.75rem);
9088
+ }
9089
+
9028
9090
  @media (prefers-reduced-motion: reduce) {
9029
9091
  .st-selectableRow {
9030
9092
  transition: none;
@@ -17047,3 +17109,284 @@
17047
17109
  font-size: 0.875rem;
17048
17110
  line-height: 1.4;
17049
17111
  }
17112
+
17113
+ /* ============================================================================
17114
+ NavSystem wave 1 — Vue parity (Overline, StatusDot, NavActionStack) +
17115
+ Checkbox (description/trailing) & Search (fluid) extensions.
17116
+ Token-only, AUCUN hex en dur — chaque var retombe sur le littéral de base.
17117
+ ========================================================================== */
17118
+
17119
+ /* Overline — étiquette de section discrète en small-caps. */
17120
+ .st-overline {
17121
+ color: var(--st-component-overline-color, var(--st-semantic-text-secondary, inherit));
17122
+ display: var(--st-component-overline-display, inline-block);
17123
+ font-family: inherit;
17124
+ font-size: var(--st-component-overline-fontSize, 0.6875rem);
17125
+ font-weight: var(--st-component-overline-fontWeight, 600);
17126
+ letter-spacing: var(--st-component-overline-letterSpacing, 0.04em);
17127
+ line-height: var(--st-component-overline-lineHeight, 1.3);
17128
+ margin: 0;
17129
+ text-transform: var(--st-component-overline-textTransform, uppercase);
17130
+ }
17131
+
17132
+ /* StatusDot — pastille de statut (point coloré + label optionnel). */
17133
+ .st-statusDot {
17134
+ align-items: center;
17135
+ color: var(--st-semantic-text-primary, inherit);
17136
+ display: inline-flex;
17137
+ font-family: inherit;
17138
+ gap: var(--st-spacing-2, 0.5rem);
17139
+ line-height: 1;
17140
+ vertical-align: middle;
17141
+ }
17142
+
17143
+ .st-statusDot__dot {
17144
+ border-radius: var(--st-radius-full, 50%);
17145
+ box-sizing: border-box;
17146
+ display: inline-block;
17147
+ flex: none;
17148
+ }
17149
+
17150
+ .st-statusDot__dot--neutral {
17151
+ background-color: var(--st-component-statusDot-neutral, var(--st-semantic-text-secondary));
17152
+ color: var(--st-component-statusDot-neutral, var(--st-semantic-text-secondary));
17153
+ }
17154
+ .st-statusDot__dot--info {
17155
+ background-color: var(--st-component-statusDot-info, var(--st-semantic-feedback-info));
17156
+ color: var(--st-component-statusDot-info, var(--st-semantic-feedback-info));
17157
+ }
17158
+ .st-statusDot__dot--success {
17159
+ background-color: var(--st-component-statusDot-success, var(--st-semantic-feedback-success));
17160
+ color: var(--st-component-statusDot-success, var(--st-semantic-feedback-success));
17161
+ }
17162
+ .st-statusDot__dot--warning {
17163
+ background-color: var(--st-component-statusDot-warning, var(--st-semantic-feedback-warning));
17164
+ color: var(--st-component-statusDot-warning, var(--st-semantic-feedback-warning));
17165
+ }
17166
+ .st-statusDot__dot--error {
17167
+ background-color: var(--st-component-statusDot-error, var(--st-semantic-feedback-error));
17168
+ color: var(--st-component-statusDot-error, var(--st-semantic-feedback-error));
17169
+ }
17170
+
17171
+ .st-statusDot__label {
17172
+ color: var(--st-semantic-text-primary, inherit);
17173
+ font-size: var(--st-component-statusDot-labelFontSize, 0.8125rem);
17174
+ font-weight: var(--st-component-statusDot-labelFontWeight, 500);
17175
+ }
17176
+
17177
+ /* Halo « live » : box-shadow animé. currentColor = la couleur du point. */
17178
+ .st-statusDot__dot--pulse {
17179
+ animation: st-statusDot-pulse 1.6s ease-out infinite;
17180
+ }
17181
+
17182
+ @keyframes st-statusDot-pulse {
17183
+ 0% {
17184
+ box-shadow: 0 0 0 0 color-mix(in srgb, currentColor 55%, transparent);
17185
+ }
17186
+ 70% {
17187
+ box-shadow: 0 0 0 var(--st-component-statusDot-pulseSpread, 0.375rem)
17188
+ color-mix(in srgb, currentColor 0%, transparent);
17189
+ }
17190
+ 100% {
17191
+ box-shadow: 0 0 0 0 color-mix(in srgb, currentColor 0%, transparent);
17192
+ }
17193
+ }
17194
+
17195
+ @media (prefers-reduced-motion: reduce) {
17196
+ .st-statusDot__dot--pulse {
17197
+ animation: none;
17198
+ }
17199
+ }
17200
+
17201
+ /* NavActionStack — pile d'actions hiérarchisées + zone sensible. */
17202
+ .st-navActionStack {
17203
+ display: flex;
17204
+ flex-direction: column;
17205
+ gap: var(--st-spacing-4, 1rem);
17206
+ inline-size: 100%;
17207
+ }
17208
+
17209
+ .st-navActionStack__actions {
17210
+ display: flex;
17211
+ gap: var(--st-spacing-2, 0.5rem);
17212
+ }
17213
+
17214
+ .st-navActionStack--vertical .st-navActionStack__actions {
17215
+ flex-direction: column;
17216
+ align-items: stretch;
17217
+ }
17218
+
17219
+ .st-navActionStack--horizontal .st-navActionStack__actions {
17220
+ flex-direction: row;
17221
+ flex-wrap: wrap;
17222
+ align-items: center;
17223
+ }
17224
+
17225
+ .st-navActionStack--vertical .st-navActionStack__item {
17226
+ inline-size: 100%;
17227
+ }
17228
+
17229
+ .st-navActionStack__danger {
17230
+ display: flex;
17231
+ flex-direction: column;
17232
+ gap: var(--st-spacing-2, 0.5rem);
17233
+ }
17234
+
17235
+ .st-navActionStack__dangerLabel {
17236
+ color: var(--st-component-overline-color, var(--st-semantic-text-secondary, inherit));
17237
+ display: inline-block;
17238
+ font-size: var(--st-component-overline-fontSize, 0.6875rem);
17239
+ font-weight: var(--st-component-overline-fontWeight, 600);
17240
+ letter-spacing: var(--st-component-overline-letterSpacing, 0.04em);
17241
+ line-height: var(--st-component-overline-lineHeight, 1.3);
17242
+ text-transform: var(--st-component-overline-textTransform, uppercase);
17243
+ }
17244
+
17245
+ .st-navActionStack .st-navActionStack__dangerAction {
17246
+ inline-size: 100%;
17247
+ }
17248
+
17249
+ /* Checkbox extension — secondary muted description + trailing slot. */
17250
+ .st-choice:has(.st-choice__trailing) {
17251
+ align-items: start;
17252
+ grid-template-columns: auto 1fr auto;
17253
+ justify-content: space-between;
17254
+ width: 100%;
17255
+ }
17256
+
17257
+ .st-choice__trailing {
17258
+ align-items: center;
17259
+ align-self: start;
17260
+ display: inline-flex;
17261
+ flex: 0 0 auto;
17262
+ justify-content: flex-end;
17263
+ }
17264
+
17265
+ .st-choice__description {
17266
+ color: var(--st-semantic-text-secondary);
17267
+ font-size: 0.8125rem;
17268
+ line-height: 1.4;
17269
+ }
17270
+
17271
+ /* Search extension — fluid lifts the field width cap. */
17272
+ .st-search.st-search--fluid {
17273
+ max-width: none;
17274
+ width: 100%;
17275
+ }
17276
+
17277
+ /* ===========================================================================
17278
+ NavItem — anatomie de rangée canonique du système de navigation (vague 2).
17279
+ Composé sur SelectableRow + ColorSwatch/StatusDot + Badge. Token-only, aucun
17280
+ hex en dur ; chaque var retombe sur un littéral de base.
17281
+ =========================================================================== */
17282
+ .st-navItem {
17283
+ display: block;
17284
+ inline-size: 100%;
17285
+ }
17286
+
17287
+ /* Indentation de PROFONDEUR : décale la rangée SelectableRow (sa tête comprise)
17288
+ par un padding inline-start ADDITIF à son padding de base (0.75rem). La var
17289
+ --st-navItem-indent est posée sur le wrapper et héritée par cascade. */
17290
+ .st-navItem .st-selectableRow {
17291
+ padding-inline-start: calc(0.75rem + var(--st-navItem-indent, 0rem));
17292
+ }
17293
+
17294
+ /* Échelle typographique : la graisse ET la taille DÉCROISSENT avec la
17295
+ profondeur, pour que la hiérarchie se lise sans relief de couleur. Chaque
17296
+ token retombe sur un littéral → thème silencieux = byte-identique. */
17297
+ .st-navItem--depth0 .st-navItem__title {
17298
+ font-size: var(--st-component-navItem-depth0-fontSize, 0.875rem);
17299
+ font-weight: var(--st-component-navItem-depth0-fontWeight, 600);
17300
+ }
17301
+ .st-navItem--depth1 .st-navItem__title {
17302
+ font-size: var(--st-component-navItem-depth1-fontSize, 0.8125rem);
17303
+ font-weight: var(--st-component-navItem-depth1-fontWeight, 500);
17304
+ }
17305
+ .st-navItem--depth2 .st-navItem__title {
17306
+ font-size: var(--st-component-navItem-depth2-fontSize, 0.8125rem);
17307
+ font-weight: var(--st-component-navItem-depth2-fontWeight, 400);
17308
+ }
17309
+ /* L3 — muted : même métrique que L2, couleur atténuée. */
17310
+ .st-navItem--depth3 .st-navItem__title {
17311
+ font-size: var(--st-component-navItem-depth3-fontSize, 0.8125rem);
17312
+ font-weight: var(--st-component-navItem-depth3-fontWeight, 400);
17313
+ color: var(--st-component-navItem-depth3-color, var(--st-semantic-text-muted));
17314
+ }
17315
+
17316
+ .st-navItem__title {
17317
+ display: block;
17318
+ min-width: 0;
17319
+ overflow: hidden;
17320
+ text-overflow: ellipsis;
17321
+ white-space: nowrap;
17322
+ }
17323
+
17324
+ .st-navItem__caption {
17325
+ display: block;
17326
+ min-width: 0;
17327
+ overflow: hidden;
17328
+ text-overflow: ellipsis;
17329
+ white-space: nowrap;
17330
+ }
17331
+
17332
+ /* Ton sémantique de la RANGÉE : teinte le titre par le feedback correspondant.
17333
+ Un « HTTP 403 » error devient rouge sémantique réel. */
17334
+ .st-navItem--status-info .st-navItem__title {
17335
+ color: var(--st-component-navItem-status-info, var(--st-semantic-feedback-info));
17336
+ }
17337
+ .st-navItem--status-success .st-navItem__title {
17338
+ color: var(--st-component-navItem-status-success, var(--st-semantic-feedback-success));
17339
+ }
17340
+ .st-navItem--status-warning .st-navItem__title {
17341
+ color: var(--st-component-navItem-status-warning, var(--st-semantic-feedback-warning));
17342
+ }
17343
+ .st-navItem--status-error .st-navItem__title {
17344
+ color: var(--st-component-navItem-status-error, var(--st-semantic-feedback-error));
17345
+ }
17346
+
17347
+ /* Séparateur token-only : une fine règle pleine largeur après la rangée. */
17348
+ .st-navItem__divider {
17349
+ border: 0;
17350
+ border-top: var(--st-border-width-thin, 1px) solid
17351
+ var(--st-component-navItem-dividerColor, var(--st-semantic-border-subtle, rgba(0, 0, 0, 0.08)));
17352
+ margin-block: var(--st-component-navItem-dividerGap, 0.375rem);
17353
+ }
17354
+
17355
+ /* ===========================================================================
17356
+ NavSection — en-tête de groupe d'un rail / drawer. Composé sur Overline +
17357
+ Collapsible + Badge. Token-only scopé.
17358
+ =========================================================================== */
17359
+ .st-navSection {
17360
+ inline-size: 100%;
17361
+ }
17362
+
17363
+ .st-navSection__header {
17364
+ align-items: baseline;
17365
+ display: flex;
17366
+ gap: var(--st-spacing-2, 0.5rem);
17367
+ justify-content: space-between;
17368
+ padding-block: var(--st-component-navSection-headerPaddingBlock, 0.375rem);
17369
+ }
17370
+
17371
+ /* Le libellé et son compteur forment un bloc ; le Badge circle s'aligne au
17372
+ centre vertical du texte small-caps. */
17373
+ .st-navSection .st-navSection__label {
17374
+ align-items: center;
17375
+ display: inline-flex;
17376
+ gap: var(--st-spacing-2, 0.5rem);
17377
+ }
17378
+
17379
+ .st-navSection .st-navSection__count {
17380
+ flex: 0 0 auto;
17381
+ }
17382
+
17383
+ /* Foyer de l'action de section : ancré à droite, ne grandit pas. */
17384
+ .st-navSection__action {
17385
+ align-items: center;
17386
+ display: inline-flex;
17387
+ flex: 0 0 auto;
17388
+ }
17389
+
17390
+ .st-navSection__body {
17391
+ display: block;
17392
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/design-system-vue",
3
- "version": "0.36.43",
3
+ "version": "0.36.45",
4
4
  "description": "Vue 3 components for the Sentropic design system.",
5
5
  "type": "module",
6
6
  "publishConfig": {