@digiko-npm/designsystem 0.9.8 → 0.9.10

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.
@@ -1,4 +1,4 @@
1
- /* @ds/designsystem v0.9.8 */
1
+ /* @ds/designsystem v0.9.9 */
2
2
  /* ==========================================================================
3
3
  @digiko-npm/designsystem
4
4
 
@@ -165,6 +165,10 @@
165
165
 
166
166
  /* Shared tokens (same in both themes) */
167
167
  :root {
168
+ /* --- Static (theme-independent, never change between light/dark) --- */
169
+ --ds-color-static-white: #fafafa;
170
+ --ds-color-static-black: #09090b;
171
+
168
172
  /* --- Semantic Status --- */
169
173
  --ds-color-success: #16a34a;
170
174
  --ds-color-success-subtle: rgba(22, 163, 74, 0.1);
@@ -9497,17 +9501,17 @@ hr {
9497
9501
  Full-width hero section with background image, gradient overlay,
9498
9502
  and optional frosted glass backdrop.
9499
9503
 
9500
- Intentionally uses theme-independent colors for text on photo backgrounds.
9501
- The overlay uses color-mix() with --ds-color-bg for theme-aware darkening
9502
- while title/subtitle stay white for readability on any photo.
9504
+ The overlay uses color-mix() with --ds-color-bg for theme-aware darkening.
9505
+ Text color is NOT forced — use ds-text-always-white or ds-text-primary
9506
+ depending on your background.
9503
9507
 
9504
9508
  Usage:
9505
9509
  <section class="ds-hero" style="background-image: url(...)">
9506
9510
  <div class="ds-hero__overlay"></div>
9507
9511
  <div class="ds-hero__content ds-container">
9508
9512
  <div class="ds-hero__backdrop">
9509
- <h1 class="ds-hero__title ds-hero-title">Heading</h1>
9510
- <p class="ds-hero__subtitle">Subheading</p>
9513
+ <h1 class="ds-hero__title ds-hero-title ds-text-always-white">Heading</h1>
9514
+ <p class="ds-hero__subtitle ds-text-always-white">Subheading</p>
9511
9515
  </div>
9512
9516
  </div>
9513
9517
  </section>
@@ -9599,13 +9603,11 @@ hr {
9599
9603
  margin-inline: auto;
9600
9604
  }
9601
9605
 
9602
- /* --- Title & subtitle (theme-independent white for photo readability) --- */
9603
- .ds-hero__title {
9604
- color: var(--ds-color-on-inverted);
9605
- }
9606
-
9606
+ /* --- Title & subtitle (no forced color use ds-text-always-white or
9607
+ ds-text-primary depending on your overlay/backdrop) --- */
9608
+ .ds-hero__title,
9607
9609
  .ds-hero__subtitle {
9608
- color: rgba(255, 255, 255, 0.85);
9610
+ color: inherit;
9609
9611
  }
9610
9612
 
9611
9613
  /* ==========================================================================
@@ -11546,6 +11548,53 @@ tr:hover .ds-sortable__handle,
11546
11548
  }
11547
11549
 
11548
11550
 
11551
+ /* --- Space-X (horizontal gap between children) --- */
11552
+ .ds-space-x-1 > * + * { margin-inline-start: var(--ds-space-1); }
11553
+ .ds-space-x-2 > * + * { margin-inline-start: var(--ds-space-2); }
11554
+ .ds-space-x-3 > * + * { margin-inline-start: var(--ds-space-3); }
11555
+ .ds-space-x-4 > * + * { margin-inline-start: var(--ds-space-4); }
11556
+
11557
+ /* --- Decimal spacing (0.5 = 0.125rem, 1.5 = 0.375rem, 2.5 = 0.625rem) --- */
11558
+ .ds-gap-0\.5 { gap: 0.125rem; }
11559
+ .ds-gap-1\.5 { gap: 0.375rem; }
11560
+ .ds-gap-2\.5 { gap: 0.625rem; }
11561
+ .ds-p-0\.5 { padding: 0.125rem; }
11562
+ .ds-p-1\.5 { padding: 0.375rem; }
11563
+ .ds-px-0\.5 { padding-inline: 0.125rem; }
11564
+ .ds-px-1\.5 { padding-inline: 0.375rem; }
11565
+ .ds-py-0\.5 { padding-inline: 0.125rem; }
11566
+ .ds-py-1\.5 { padding-block: 0.375rem; }
11567
+ .ds-mt-0\.5 { margin-block-start: 0.125rem; }
11568
+ .ds-mb-0\.5 { margin-block-end: 0.125rem; }
11569
+ .ds-space-y-0\.5 > * + * { margin-block-start: 0.125rem; }
11570
+ .ds-space-y-1\.5 > * + * { margin-block-start: 0.375rem; }
11571
+ .ds-space-x-0\.5 > * + * { margin-inline-start: 0.125rem; }
11572
+ .ds-space-x-1\.5 > * + * { margin-inline-start: 0.375rem; }
11573
+
11574
+ /* --- Responsive: md (768px) — all-sides padding --- */
11575
+ @media (min-width: 768px) {
11576
+
11577
+ .ds-md\:p-2 { padding: var(--ds-space-2); }
11578
+ .ds-md\:p-3 { padding: var(--ds-space-3); }
11579
+ .ds-md\:p-4 { padding: var(--ds-space-4); }
11580
+ .ds-md\:p-5 { padding: var(--ds-space-5); }
11581
+ .ds-md\:p-6 { padding: var(--ds-space-6); }
11582
+ .ds-md\:p-8 { padding: var(--ds-space-8); }
11583
+ .ds-md\:p-10 { padding: var(--ds-space-10); }
11584
+ .ds-md\:p-12 { padding: var(--ds-space-12); }
11585
+ }
11586
+
11587
+
11588
+ /* --- Responsive: lg (1024px) — all-sides padding --- */
11589
+ @media (min-width: 1024px) {
11590
+
11591
+ .ds-lg\:p-6 { padding: var(--ds-space-6); }
11592
+ .ds-lg\:p-8 { padding: var(--ds-space-8); }
11593
+ .ds-lg\:p-10 { padding: var(--ds-space-10); }
11594
+ .ds-lg\:p-12 { padding: var(--ds-space-12); }
11595
+ }
11596
+
11597
+
11549
11598
  /* ==========================================================================
11550
11599
  Utilities: Sizing
11551
11600
  Width, height, min/max constraints.
@@ -11620,6 +11669,16 @@ tr:hover .ds-sortable__handle,
11620
11669
  }
11621
11670
 
11622
11671
 
11672
+ /* --- Decimal sizing --- */
11673
+ .ds-w-0\.5 { width: 0.125rem; }
11674
+ .ds-w-1\.5 { width: 0.375rem; }
11675
+ .ds-w-2\.5 { width: 0.625rem; }
11676
+ .ds-w-3\.5 { width: 0.875rem; }
11677
+ .ds-h-0\.5 { height: 0.125rem; }
11678
+ .ds-h-1\.5 { height: 0.375rem; }
11679
+ .ds-h-2\.5 { height: 0.625rem; }
11680
+ .ds-h-3\.5 { height: 0.875rem; }
11681
+
11623
11682
  /* ==========================================================================
11624
11683
  Utilities: Text, Visual & style helpers
11625
11684
  ========================================================================== */
@@ -11691,6 +11750,10 @@ tr:hover .ds-sortable__handle,
11691
11750
  .ds-text-interactive { color: var(--ds-color-interactive); }
11692
11751
  .ds-text-on-inverted { color: var(--ds-color-on-inverted); }
11693
11752
 
11753
+ /* --- Theme-independent colors (ignore light/dark toggle) --- */
11754
+ .ds-text-always-white { color: var(--ds-color-static-white); }
11755
+ .ds-text-always-black { color: var(--ds-color-static-black); }
11756
+
11694
11757
  /* --- Background Color --- */
11695
11758
  .ds-bg-base { background-color: var(--ds-color-bg); }
11696
11759
  .ds-bg-surface { background-color: var(--ds-color-surface); }
@@ -11996,6 +12059,16 @@ tr:hover .ds-sortable__handle,
11996
12059
  border-width: 0;
11997
12060
  }
11998
12061
 
12062
+ /* --- Responsive: md (768px) — small text sizes --- */
12063
+ @media (min-width: 768px) {
12064
+
12065
+ .ds-md\:text-xs { font-size: var(--ds-text-xs); }
12066
+ .ds-md\:text-sm { font-size: var(--ds-text-sm); }
12067
+ .ds-md\:text-base { font-size: var(--ds-text-base); }
12068
+ .ds-md\:text-5xl { font-size: var(--ds-text-5xl); }
12069
+ }
12070
+
12071
+
11999
12072
  /* ==========================================================================
12000
12073
  Utilities: Interactive
12001
12074
  Hover states, reveal patterns, focus rings, and cursor utilities.
@@ -12113,80 +12186,193 @@ tr:hover .ds-sortable__handle,
12113
12186
  color: var(--ds-color-text);
12114
12187
  }
12115
12188
 
12189
+ /* --- Backdrop Blur (extended) --- */
12190
+ .ds-backdrop-blur-lg { backdrop-filter: blur(16px); }
12191
+ .ds-backdrop-blur-xl { backdrop-filter: blur(24px); }
12192
+ .ds-backdrop-blur-2xl { backdrop-filter: blur(40px); }
12193
+
12116
12194
  /* ==========================================================================
12117
12195
  Utilities: State Variants
12118
- Hover, focus, active, focus-within, placeholder, and group-hover
12119
- modifiers for DS utility classes.
12196
+ Comprehensive hover, focus, active, disabled, focus-within, placeholder,
12197
+ and group-hover modifiers for DS utility classes.
12198
+
12199
+ Pattern: {state}\:ds-{utility}:{pseudo} { property: value; }
12200
+ Usage: <div class="ds-bg-surface hover:ds-bg-hover">
12201
+
12202
+ Only semantic DS tokens are used — no hardcoded values.
12120
12203
  ========================================================================== */
12121
12204
 
12122
12205
  /* --- Group Marker (enables group-hover on descendants) ---
12123
12206
  Supports both .group and .ds-group for compatibility. */
12124
12207
  .ds-group { /* marker — no styles */ }
12125
12208
 
12209
+ /* ==========================================================================
12210
+ HOVER
12211
+ ========================================================================== */
12212
+
12126
12213
  /* --- Hover: Background --- */
12127
12214
  .hover\:ds-bg-base:hover { background-color: var(--ds-color-bg); }
12128
- .hover\:ds-bg-elevated:hover { background-color: var(--ds-color-bg-elevated); }
12129
- .hover\:ds-bg-muted:hover { background-color: var(--ds-color-bg-muted); }
12130
12215
  .hover\:ds-bg-subtle:hover { background-color: var(--ds-color-bg-subtle); }
12216
+ .hover\:ds-bg-muted:hover { background-color: var(--ds-color-bg-muted); }
12217
+ .hover\:ds-bg-elevated:hover { background-color: var(--ds-color-bg-elevated); }
12131
12218
  .hover\:ds-bg-surface:hover { background-color: var(--ds-color-surface); }
12219
+ .hover\:ds-bg-hover:hover { background-color: var(--ds-color-surface-hover); }
12132
12220
  .hover\:ds-bg-inverted:hover { background-color: var(--ds-color-inverted); }
12221
+ .hover\:ds-bg-overlay:hover { background-color: var(--ds-color-overlay-hover); }
12222
+ .hover\:ds-bg-success:hover { background-color: var(--ds-color-success); }
12223
+ .hover\:ds-bg-success-subtle:hover { background-color: var(--ds-color-success-subtle); }
12224
+ .hover\:ds-bg-error:hover { background-color: var(--ds-color-error); }
12225
+ .hover\:ds-bg-error-subtle:hover { background-color: var(--ds-color-error-subtle); }
12226
+ .hover\:ds-bg-warning:hover { background-color: var(--ds-color-warning); }
12227
+ .hover\:ds-bg-warning-subtle:hover { background-color: var(--ds-color-warning-subtle); }
12133
12228
  .hover\:ds-bg-info:hover { background-color: var(--ds-color-info); }
12229
+ .hover\:ds-bg-info-subtle:hover { background-color: var(--ds-color-info-subtle); }
12230
+ .hover\:ds-bg-accent-blue:hover { background-color: var(--ds-color-accent-blue); }
12231
+ .hover\:ds-bg-accent-blue-subtle:hover { background-color: var(--ds-color-accent-blue-subtle); }
12232
+ .hover\:ds-bg-accent-purple:hover { background-color: var(--ds-color-accent-purple); }
12233
+ .hover\:ds-bg-accent-purple-subtle:hover { background-color: var(--ds-color-accent-purple-subtle); }
12134
12234
 
12135
12235
  /* --- Hover: Text --- */
12136
12236
  .hover\:ds-text-primary:hover { color: var(--ds-color-text); }
12137
12237
  .hover\:ds-text-secondary:hover { color: var(--ds-color-text-secondary); }
12138
- .hover\:ds-text-interactive:hover { color: var(--ds-color-interactive); }
12238
+ .hover\:ds-text-tertiary:hover { color: var(--ds-color-text-tertiary); }
12239
+ .hover\:ds-text-on-inverted:hover { color: var(--ds-color-on-inverted); }
12240
+ .hover\:ds-text-interactive:hover { color: var(--ds-color-interactive-hover); }
12241
+ .hover\:ds-text-success:hover { color: var(--ds-color-success); }
12242
+ .hover\:ds-text-error:hover { color: var(--ds-color-error); }
12243
+ .hover\:ds-text-warning:hover { color: var(--ds-color-warning); }
12244
+ .hover\:ds-text-info:hover { color: var(--ds-color-info); }
12139
12245
 
12140
12246
  /* --- Hover: Border --- */
12247
+ .hover\:ds-border-default:hover { border-color: var(--ds-color-border); }
12141
12248
  .hover\:ds-border-hover:hover { border-color: var(--ds-color-border-hover); }
12249
+ .hover\:ds-border-active:hover { border-color: var(--ds-color-border-active); }
12142
12250
  .hover\:ds-border-interactive:hover { border-color: var(--ds-color-interactive); }
12251
+ .hover\:ds-border-success:hover { border-color: var(--ds-color-success); }
12252
+ .hover\:ds-border-error:hover { border-color: var(--ds-color-error); }
12253
+ .hover\:ds-border-info:hover { border-color: var(--ds-color-info); }
12254
+
12255
+ /* --- Hover: Opacity --- */
12256
+ .hover\:ds-opacity-0:hover { opacity: 0; }
12257
+ .hover\:ds-opacity-50:hover { opacity: 0.5; }
12258
+ .hover\:ds-opacity-75:hover { opacity: 0.75; }
12259
+ .hover\:ds-opacity-100:hover { opacity: 1; }
12260
+
12261
+ /* --- Hover: Transform --- */
12262
+ .hover\:ds-scale-105:hover { transform: scale(1.05); }
12263
+ .hover\:ds-scale-110:hover { transform: scale(1.10); }
12143
12264
 
12144
12265
  /* --- Hover: Decoration --- */
12145
12266
  .hover\:ds-underline:hover { text-decoration: underline; text-underline-offset: 2px; }
12267
+ .hover\:ds-no-underline:hover { text-decoration: none; }
12268
+
12269
+ /* --- Hover: Shadow --- */
12270
+ .hover\:ds-shadow:hover { box-shadow: var(--ds-shadow-md); }
12271
+ .hover\:ds-shadow-lg:hover { box-shadow: var(--ds-shadow-lg); }
12272
+ .hover\:ds-shadow-none:hover { box-shadow: none; }
12273
+
12274
+ /* ==========================================================================
12275
+ FOCUS
12276
+ ========================================================================== */
12146
12277
 
12147
- /* --- Focus --- */
12148
12278
  .focus\:ds-outline-none:focus { outline: none; }
12149
12279
  .focus\:ds-ring-0:focus { box-shadow: none; }
12150
- .focus\:ds-ring-2:focus { box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-color-interactive); }
12280
+ .focus\:ds-ring-2:focus { box-shadow: 0 0 0 var(--ds-ring-width, 2px) var(--ds-color-interactive); }
12281
+ .focus\:ds-border-interactive:focus { border-color: var(--ds-color-interactive); }
12282
+
12283
+ /* --- Focus-Visible (keyboard only) --- */
12284
+ .focus-visible\:ds-outline-none:focus-visible { outline: none; }
12285
+ .focus-visible\:ds-ring-2:focus-visible { box-shadow: 0 0 0 var(--ds-ring-width, 2px) var(--ds-color-interactive); }
12151
12286
 
12152
12287
  /* --- Focus-Within --- */
12153
12288
  .focus-within\:ds-border-interactive:focus-within { border-color: var(--ds-color-interactive); }
12289
+ .focus-within\:ds-border-error:focus-within { border-color: var(--ds-color-error); }
12290
+
12291
+ /* ==========================================================================
12292
+ ACTIVE
12293
+ ========================================================================== */
12154
12294
 
12155
- /* --- Active --- */
12295
+ .active\:ds-bg-hover:active { background-color: var(--ds-color-surface-hover); }
12296
+ .active\:ds-bg-muted:active { background-color: var(--ds-color-bg-muted); }
12156
12297
  .active\:ds-bg-elevated:active { background-color: var(--ds-color-bg-elevated); }
12157
- .active\:ds-text-secondary:active { color: var(--ds-color-text-secondary); }
12298
+ .active\:ds-scale-95:active { transform: scale(0.95); }
12299
+ .active\:ds-scale-98:active { transform: scale(0.98); }
12300
+
12301
+ /* ==========================================================================
12302
+ DISABLED
12303
+ ========================================================================== */
12304
+
12305
+ .disabled\:ds-opacity-30:disabled,
12306
+ .disabled\:ds-opacity-30[aria-disabled="true"] { opacity: 0.3; }
12307
+
12308
+ .disabled\:ds-opacity-50:disabled,
12309
+ .disabled\:ds-opacity-50[aria-disabled="true"] { opacity: 0.5; }
12310
+
12311
+ .disabled\:ds-cursor-not-allowed:disabled,
12312
+ .disabled\:ds-cursor-not-allowed[aria-disabled="true"] { cursor: not-allowed; }
12313
+
12314
+ .disabled\:ds-bg-subtle:disabled,
12315
+ .disabled\:ds-bg-subtle[aria-disabled="true"] { background-color: var(--ds-color-bg-subtle); }
12316
+
12317
+ .disabled\:ds-pointer-events-none:disabled,
12318
+ .disabled\:ds-pointer-events-none[aria-disabled="true"] { pointer-events: none; }
12319
+
12320
+ /* ==========================================================================
12321
+ PLACEHOLDER
12322
+ ========================================================================== */
12158
12323
 
12159
- /* --- Placeholder --- */
12160
12324
  .placeholder\:ds-text-tertiary::placeholder { color: var(--ds-color-text-tertiary); }
12325
+ .placeholder\:ds-text-secondary::placeholder { color: var(--ds-color-text-secondary); }
12161
12326
 
12162
- /* --- Group Hover (descendants of .group or .ds-group on hover) --- */
12163
- .group:hover > .group-hover\:ds-text-interactive,
12164
- .group:hover .group-hover\:ds-text-interactive,
12165
- .ds-group:hover > .group-hover\:ds-text-interactive,
12166
- .ds-group:hover .group-hover\:ds-text-interactive {
12167
- color: var(--ds-color-interactive);
12168
- }
12327
+ /* ==========================================================================
12328
+ GROUP-HOVER
12329
+ Descendants of .group or .ds-group, activated on parent hover.
12330
+ Uses both direct-child and any-descendant for flexibility.
12331
+ ========================================================================== */
12169
12332
 
12170
- .group:hover > .group-hover\:ds-scale-110,
12171
- .group:hover .group-hover\:ds-scale-110,
12172
- .ds-group:hover > .group-hover\:ds-scale-110,
12173
- .ds-group:hover .group-hover\:ds-scale-110 {
12174
- transform: scale(1.1);
12175
- }
12333
+ /* Text */
12334
+ .group:hover .group-hover\:ds-text-primary,
12335
+ .ds-group:hover .group-hover\:ds-text-primary { color: var(--ds-color-text); }
12176
12336
 
12177
- .group:hover > .group-hover\:ds-translate-x-1,
12178
- .group:hover .group-hover\:ds-translate-x-1,
12179
- .ds-group:hover > .group-hover\:ds-translate-x-1,
12180
- .ds-group:hover .group-hover\:ds-translate-x-1 {
12181
- transform: translateX(0.25rem);
12182
- }
12337
+ .group:hover .group-hover\:ds-text-secondary,
12338
+ .ds-group:hover .group-hover\:ds-text-secondary { color: var(--ds-color-text-secondary); }
12183
12339
 
12184
- .group:hover > .group-hover\:ds-opacity-100,
12185
- .group:hover .group-hover\:ds-opacity-100,
12186
- .ds-group:hover > .group-hover\:ds-opacity-100,
12187
- .ds-group:hover .group-hover\:ds-opacity-100 {
12188
- opacity: 1;
12189
- }
12340
+ .group:hover .group-hover\:ds-text-interactive,
12341
+ .ds-group:hover .group-hover\:ds-text-interactive { color: var(--ds-color-interactive-hover); }
12342
+
12343
+ .group:hover .group-hover\:ds-text-success,
12344
+ .ds-group:hover .group-hover\:ds-text-success { color: var(--ds-color-success); }
12345
+
12346
+ .group:hover .group-hover\:ds-text-info,
12347
+ .ds-group:hover .group-hover\:ds-text-info { color: var(--ds-color-info); }
12348
+
12349
+ /* Opacity */
12350
+ .group:hover .group-hover\:ds-opacity-100,
12351
+ .ds-group:hover .group-hover\:ds-opacity-100 { opacity: 1; }
12352
+
12353
+ .group:hover .group-hover\:ds-opacity-0,
12354
+ .ds-group:hover .group-hover\:ds-opacity-0 { opacity: 0; }
12355
+
12356
+ /* Transform */
12357
+ .group:hover .group-hover\:ds-scale-105,
12358
+ .ds-group:hover .group-hover\:ds-scale-105 { transform: scale(1.05); }
12359
+
12360
+ .group:hover .group-hover\:ds-scale-110,
12361
+ .ds-group:hover .group-hover\:ds-scale-110 { transform: scale(1.10); }
12362
+
12363
+ .group:hover .group-hover\:ds-translate-x-1,
12364
+ .ds-group:hover .group-hover\:ds-translate-x-1 { transform: translateX(0.25rem); }
12365
+
12366
+ .group:hover .group-hover\:ds-translate-y-0,
12367
+ .ds-group:hover .group-hover\:ds-translate-y-0 { transform: translateY(0); }
12368
+
12369
+ /* Border */
12370
+ .group:hover .group-hover\:ds-border-active,
12371
+ .ds-group:hover .group-hover\:ds-border-active { border-color: var(--ds-color-border-active); }
12372
+
12373
+ /* Visibility */
12374
+ .group:hover .group-hover\:ds-visible,
12375
+ .ds-group:hover .group-hover\:ds-visible { visibility: visible; }
12190
12376
 
12191
12377
  /* ==========================================================================
12192
12378
  Utilities: Accessibility