slexkit 0.3.0 → 0.3.1

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 (45) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +4 -3
  3. package/README.zh-CN.md +4 -3
  4. package/dist/ai/llms-components.txt +2 -1
  5. package/dist/ai/llms-full.txt +73 -42
  6. package/dist/ai/llms-runtime.txt +11 -12
  7. package/dist/ai/llms.txt +1 -1
  8. package/dist/ai/slexkit-ai-manifest.json +77 -73
  9. package/dist/components/checkbox.js +1 -0
  10. package/dist/components/choice.css +2 -2
  11. package/dist/components/display.css +1 -1
  12. package/dist/components/index.js +56 -153
  13. package/dist/components/input.css +53 -119
  14. package/dist/components/input.js +33 -143
  15. package/dist/components/radio-group.js +1 -0
  16. package/dist/components/select.css +0 -6
  17. package/dist/components/slider.css +27 -18
  18. package/dist/components/specs.js +2 -1
  19. package/dist/components/switch.css +3 -3
  20. package/dist/components/switch.js +1 -0
  21. package/dist/components/text-input.css +21 -90
  22. package/dist/components/text.js +12 -0
  23. package/dist/components/tooling.css +0 -1
  24. package/dist/runtime.cjs +22 -5
  25. package/dist/runtime.js +22 -5
  26. package/dist/slexkit.cjs +78 -158
  27. package/dist/slexkit.css +54 -121
  28. package/dist/slexkit.js +78 -158
  29. package/dist/types/version.d.ts +2 -2
  30. package/dist/umd/slexkit.tooling.umd.js +77 -158
  31. package/dist/umd/slexkit.umd.js +78 -158
  32. package/package.json +3 -2
  33. package/skills/slexkit-host-integration/SKILL.md +1 -1
  34. package/src/components/svelte/display/Text.svelte +14 -1
  35. package/src/components/svelte/input/Checkbox.svelte +1 -1
  36. package/src/components/svelte/input/Input.svelte +0 -110
  37. package/src/components/svelte/input/RadioGroup.svelte +1 -1
  38. package/src/components/svelte/input/Switch.svelte +1 -1
  39. package/src/styles/components/choice.css +2 -2
  40. package/src/styles/components/select.css +0 -6
  41. package/src/styles/components/slider.css +27 -18
  42. package/src/styles/components/switch.css +3 -3
  43. package/src/styles/components/text-input.css +21 -90
  44. package/src/styles/display.css +1 -1
  45. package/src/styles/tooling.css +0 -1
package/dist/slexkit.css CHANGED
@@ -1846,7 +1846,6 @@ body[data-mobile-nav-open] {
1846
1846
  overflow: hidden;
1847
1847
  clip: rect(0 0 0 0);
1848
1848
  white-space: nowrap;
1849
- clip-path: inset(50%);
1850
1849
  }
1851
1850
 
1852
1851
  .slex-playground-error {
@@ -2365,7 +2364,7 @@ body[data-mobile-nav-open] {
2365
2364
  display: block;
2366
2365
  }
2367
2366
 
2368
- .slex-stat-character[data-stat-change] {
2367
+ .slex-stat-character[data-stat-kind="digit"][data-stat-change] {
2369
2368
  overflow: hidden;
2370
2369
  }
2371
2370
 
@@ -3210,53 +3209,62 @@ body[data-mobile-nav-open] {
3210
3209
  .slex-slider {
3211
3210
  box-sizing: border-box;
3212
3211
  width: 100%;
3213
- height: 0.5rem;
3212
+ height: 1rem;
3213
+ padding: 0;
3214
+ border: 0;
3214
3215
  border-radius: 999px;
3215
3216
  -webkit-appearance: none;
3216
3217
  appearance: none;
3217
- background: linear-gradient(
3218
- to right,
3219
- var(--primary) 0%,
3220
- var(--primary) var(--slex-slider-progress, 0%),
3221
- var(--secondary) var(--slex-slider-progress, 0%),
3222
- var(--secondary) 100%
3223
- );
3218
+ background: transparent;
3224
3219
  accent-color: var(--primary);
3225
3220
  cursor: pointer;
3221
+ overflow: visible;
3226
3222
  transition: box-shadow 150ms ease, filter 150ms ease;
3227
3223
  }
3228
3224
 
3229
- .slex-slider:hover {
3230
- box-shadow: 0 0 0 4px color-mix(in oklab, var(--primary) 8%, transparent);
3231
- }
3232
-
3233
- .slex-slider:active {
3234
- box-shadow: 0 0 0 5px color-mix(in oklab, var(--primary) 12%, transparent);
3235
- }
3236
-
3237
3225
  .slex-slider:focus-visible {
3238
3226
  outline: 2px solid var(--ring);
3239
3227
  outline-offset: 4px;
3240
3228
  }
3241
3229
 
3242
3230
  .slex-slider::-webkit-slider-thumb {
3231
+ box-sizing: border-box;
3243
3232
  width: 1rem;
3244
3233
  height: 1rem;
3234
+ margin-top: -0.25rem;
3245
3235
  border: 2px solid var(--primary);
3246
3236
  border-radius: 999px;
3247
- background: var(--background) !important;
3237
+ background-color: var(--background);
3238
+ background-clip: padding-box;
3248
3239
  box-shadow: 0 1px 2px color-mix(in oklab, var(--foreground) 14%, transparent);
3249
3240
  -webkit-appearance: none;
3250
3241
  appearance: none;
3251
3242
  transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease, transform 120ms ease;
3252
3243
  }
3253
3244
 
3245
+ .slex-slider::-webkit-slider-runnable-track {
3246
+ box-sizing: border-box;
3247
+ width: 100%;
3248
+ height: 0.5rem;
3249
+ border: 0;
3250
+ border-radius: 999px;
3251
+ background: linear-gradient(
3252
+ to right,
3253
+ var(--primary) 0%,
3254
+ var(--primary) var(--slex-slider-progress, 0%),
3255
+ var(--secondary) var(--slex-slider-progress, 0%),
3256
+ var(--secondary) 100%
3257
+ );
3258
+ }
3259
+
3254
3260
  .slex-slider::-moz-range-thumb {
3261
+ box-sizing: border-box;
3255
3262
  width: 1rem;
3256
3263
  height: 1rem;
3257
3264
  border: 2px solid var(--primary);
3258
3265
  border-radius: 999px;
3259
- background: var(--background) !important;
3266
+ background-color: var(--background);
3267
+ background-clip: padding-box;
3260
3268
  box-shadow: 0 1px 2px color-mix(in oklab, var(--foreground) 14%, transparent);
3261
3269
  transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease, transform 120ms ease;
3262
3270
  }
@@ -3409,12 +3417,12 @@ body[data-mobile-nav-open] {
3409
3417
  opacity: 0.55;
3410
3418
  }
3411
3419
 
3412
- .slex-switch:has(.slex-switch-input:disabled) {
3420
+ .slex-switch[data-disabled="true"] {
3413
3421
  cursor: not-allowed;
3414
3422
  }
3415
3423
 
3416
- .slex-switch:has(.slex-switch-input:disabled):hover .slex-switch-control,
3417
- .slex-switch:has(.slex-switch-input:disabled):hover .slex-switch-control::after {
3424
+ .slex-switch[data-disabled="true"]:hover .slex-switch-control,
3425
+ .slex-switch[data-disabled="true"]:hover .slex-switch-control::after {
3418
3426
  box-shadow: none;
3419
3427
  }
3420
3428
 
@@ -3467,16 +3475,18 @@ body[data-mobile-nav-open] {
3467
3475
  border: 1px solid var(--input);
3468
3476
  border-radius: var(--radius);
3469
3477
  background: var(--background);
3478
+ background-clip: padding-box;
3470
3479
  color: var(--foreground);
3471
3480
  font-family: inherit;
3472
3481
  font-size: 0.875rem;
3473
3482
  line-height: 1.5;
3474
3483
  outline: none;
3484
+ -webkit-appearance: none;
3485
+ appearance: none;
3475
3486
  transition: border-color 150ms ease, box-shadow 150ms ease;
3476
3487
  }
3477
3488
 
3478
- .slex-input-control[data-has-unit="true"] .slex-input,
3479
- .slex-input-control[data-has-controls="true"] .slex-input {
3489
+ .slex-input-control[data-has-unit="true"] .slex-input {
3480
3490
  border-top-right-radius: 0;
3481
3491
  border-bottom-right-radius: 0;
3482
3492
  }
@@ -3500,79 +3510,16 @@ body[data-mobile-nav-open] {
3500
3510
  transition: border-color 150ms ease, box-shadow 150ms ease;
3501
3511
  }
3502
3512
 
3503
- .slex-input-control[data-has-controls="true"] .slex-input-unit {
3504
- border-radius: 0;
3505
- }
3506
-
3507
- .slex-input-controls {
3508
- box-sizing: border-box;
3509
- display: inline-grid;
3510
- grid-template-rows: repeat(2, minmax(0, 1fr));
3511
- align-items: stretch;
3512
- flex: 0 0 auto;
3513
- width: 1.875rem;
3514
- min-width: 1.875rem;
3515
- min-height: 2.5625rem;
3516
- overflow: hidden;
3517
- border: 1px solid var(--input);
3518
- border-left: 0;
3519
- border-radius: 0 var(--radius) var(--radius) 0;
3520
- background: var(--background);
3521
- transition: border-color 150ms ease, box-shadow 150ms ease;
3522
- }
3523
-
3524
- .slex-input-step {
3525
- box-sizing: border-box;
3526
- display: inline-flex;
3527
- align-items: center;
3528
- justify-content: center;
3529
- width: 100%;
3530
- min-width: 0;
3531
- min-height: 0;
3532
- padding: 0;
3533
- border: 0;
3534
- border-top: 1px solid var(--input);
3535
- border-radius: 0;
3536
- background: transparent;
3537
- color: var(--foreground);
3538
- font: inherit;
3539
- font-size: 0.75rem;
3540
- font-weight: 600;
3541
- line-height: 1;
3542
- cursor: pointer;
3543
- transition: border-color 150ms ease, background 150ms ease, box-shadow 150ms ease;
3544
- }
3545
-
3546
- .slex-input-step:first-child {
3547
- border-top: 0;
3548
- }
3549
-
3550
- .slex-input-step:last-child {
3551
- border-radius: 0;
3552
- }
3553
-
3554
- .slex-input-step:hover:not(:disabled) {
3555
- background: color-mix(in oklab, var(--muted) 52%, var(--background));
3556
- }
3557
-
3558
- .slex-input-step:focus-visible {
3559
- z-index: 1;
3560
- outline: none;
3561
- background: color-mix(in oklab, var(--muted) 58%, var(--background));
3562
- box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--ring) 34%, transparent);
3563
- }
3564
-
3565
- .slex-input-step:disabled {
3566
- opacity: 0.45;
3567
- cursor: not-allowed;
3568
- }
3569
-
3570
3513
  .slex-input::placeholder {
3571
3514
  color: var(--muted-foreground);
3572
3515
  }
3573
3516
 
3574
3517
  .slex-input:focus {
3575
3518
  border-color: var(--ring);
3519
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 18%, transparent);
3520
+ }
3521
+
3522
+ .slex-input-control[data-has-unit="true"] .slex-input:focus {
3576
3523
  box-shadow: none;
3577
3524
  }
3578
3525
 
@@ -3597,6 +3544,10 @@ body[data-mobile-nav-open] {
3597
3544
 
3598
3545
  .slex-input-field[data-invalid="true"] .slex-input:focus {
3599
3546
  border-color: var(--destructive);
3547
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--destructive) 18%, transparent);
3548
+ }
3549
+
3550
+ .slex-input-field[data-invalid="true"] .slex-input-control[data-has-unit="true"] .slex-input:focus {
3600
3551
  box-shadow: none;
3601
3552
  }
3602
3553
 
@@ -3604,13 +3555,12 @@ body[data-mobile-nav-open] {
3604
3555
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 16%, transparent);
3605
3556
  }
3606
3557
 
3607
- .slex-input-control:focus-within .slex-input,
3608
- .slex-input-control:focus-within .slex-input-unit,
3609
- .slex-input-control:focus-within .slex-input-controls {
3610
- border-color: var(--ring);
3558
+ .slex-input-control:not([data-has-unit]):focus-within {
3559
+ box-shadow: none;
3611
3560
  }
3612
3561
 
3613
- .slex-input-control:focus-within .slex-input-step {
3562
+ .slex-input-control:focus-within .slex-input,
3563
+ .slex-input-control:focus-within .slex-input-unit {
3614
3564
  border-color: var(--ring);
3615
3565
  }
3616
3566
 
@@ -3619,22 +3569,16 @@ body[data-mobile-nav-open] {
3619
3569
  color: color-mix(in oklab, var(--destructive) 84%, var(--muted-foreground));
3620
3570
  }
3621
3571
 
3622
- .slex-input-field[data-invalid="true"] .slex-input-step {
3623
- border-color: color-mix(in oklab, var(--destructive) 72%, var(--input));
3624
- }
3625
-
3626
- .slex-input-field[data-invalid="true"] .slex-input-controls {
3627
- border-color: color-mix(in oklab, var(--destructive) 72%, var(--input));
3628
- }
3629
-
3630
3572
  .slex-input-field[data-invalid="true"] .slex-input-control:focus-within {
3631
3573
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--destructive) 18%, transparent);
3632
3574
  }
3633
3575
 
3576
+ .slex-input-field[data-invalid="true"] .slex-input-control:not([data-has-unit]):focus-within {
3577
+ box-shadow: none;
3578
+ }
3579
+
3634
3580
  .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input,
3635
- .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-unit,
3636
- .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-controls,
3637
- .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-step {
3581
+ .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-unit {
3638
3582
  border-color: var(--destructive);
3639
3583
  }
3640
3584
 
@@ -3648,11 +3592,6 @@ body[data-mobile-nav-open] {
3648
3592
  cursor: not-allowed;
3649
3593
  }
3650
3594
 
3651
- .slex-input[disabled] ~ .slex-input-controls,
3652
- .slex-input[readonly] ~ .slex-input-controls {
3653
- opacity: 0.6;
3654
- }
3655
-
3656
3595
  .slex-input-description {
3657
3596
  color: var(--muted-foreground);
3658
3597
  font-size: 0.75rem;
@@ -3780,7 +3719,6 @@ body[data-mobile-nav-open] {
3780
3719
  border: 0;
3781
3720
  overflow: hidden;
3782
3721
  clip: rect(0 0 0 0);
3783
- clip-path: inset(50%);
3784
3722
  white-space: nowrap;
3785
3723
  }
3786
3724
 
@@ -3839,11 +3777,6 @@ body[data-mobile-nav-open] {
3839
3777
  color: var(--accent-foreground);
3840
3778
  }
3841
3779
 
3842
- .slex-select-menu:has(.slex-select-option:hover) .slex-select-option--active:not(:hover) {
3843
- background: transparent;
3844
- color: var(--popover-foreground, var(--foreground));
3845
- }
3846
-
3847
3780
  .slex-select-option--selected {
3848
3781
  font-weight: 500;
3849
3782
  }
@@ -4282,8 +4215,8 @@ body[data-mobile-nav-open] {
4282
4215
  transform: none;
4283
4216
  }
4284
4217
 
4285
- .slex-checkbox-field:has(.slex-checkbox:disabled),
4286
- .slex-radio-field:has(.slex-radio:disabled) {
4218
+ .slex-checkbox-field[data-disabled="true"],
4219
+ .slex-radio-field[data-disabled="true"] {
4287
4220
  cursor: not-allowed;
4288
4221
  opacity: 0.65;
4289
4222
  }