tyrell-components 1.0.0-TC30 → 1.0.0-TC32

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 (117) hide show
  1. package/css/tyrell.css +48 -12
  2. package/dist/tyrell.css +48 -12
  3. package/dist/tyrell.js +1 -1
  4. package/lib/components/calendar-month.d.ts +17 -0
  5. package/lib/components/calendar-month.d.ts.map +1 -1
  6. package/lib/components/calendar-month.js +121 -7
  7. package/lib/components/calendar-month.js.map +1 -1
  8. package/lib/components/calendar.d.ts +3 -1
  9. package/lib/components/calendar.d.ts.map +1 -1
  10. package/lib/components/calendar.js +19 -9
  11. package/lib/components/calendar.js.map +1 -1
  12. package/lib/components/checkbox.d.ts +4 -3
  13. package/lib/components/checkbox.d.ts.map +1 -1
  14. package/lib/components/checkbox.js +23 -35
  15. package/lib/components/checkbox.js.map +1 -1
  16. package/lib/components/copy.d.ts +4 -3
  17. package/lib/components/copy.d.ts.map +1 -1
  18. package/lib/components/copy.js +22 -21
  19. package/lib/components/copy.js.map +1 -1
  20. package/lib/components/date-picker.d.ts +5 -1
  21. package/lib/components/date-picker.d.ts.map +1 -1
  22. package/lib/components/date-picker.js +113 -32
  23. package/lib/components/date-picker.js.map +1 -1
  24. package/lib/components/input.d.ts +3 -2
  25. package/lib/components/input.d.ts.map +1 -1
  26. package/lib/components/input.js +24 -21
  27. package/lib/components/input.js.map +1 -1
  28. package/lib/components/modal.d.ts.map +1 -1
  29. package/lib/components/modal.js +22 -3
  30. package/lib/components/modal.js.map +1 -1
  31. package/lib/components/popup.d.ts.map +1 -1
  32. package/lib/components/popup.js +14 -0
  33. package/lib/components/popup.js.map +1 -1
  34. package/lib/components/radio.d.ts +5 -2
  35. package/lib/components/radio.d.ts.map +1 -1
  36. package/lib/components/radio.js +16 -5
  37. package/lib/components/radio.js.map +1 -1
  38. package/lib/components/select.d.ts +75 -5
  39. package/lib/components/select.d.ts.map +1 -1
  40. package/lib/components/select.js +282 -47
  41. package/lib/components/select.js.map +1 -1
  42. package/lib/components/selected-tags.d.ts +1 -1
  43. package/lib/components/selected-tags.js +1 -1
  44. package/lib/components/switch.d.ts +4 -3
  45. package/lib/components/switch.d.ts.map +1 -1
  46. package/lib/components/switch.js +17 -29
  47. package/lib/components/switch.js.map +1 -1
  48. package/lib/components/tabs.d.ts.map +1 -1
  49. package/lib/components/tabs.js +18 -2
  50. package/lib/components/tabs.js.map +1 -1
  51. package/lib/components/tooltip.d.ts +4 -2
  52. package/lib/components/tooltip.d.ts.map +1 -1
  53. package/lib/components/tooltip.js +109 -70
  54. package/lib/components/tooltip.js.map +1 -1
  55. package/lib/components/wizard.d.ts.map +1 -1
  56. package/lib/components/wizard.js +22 -3
  57. package/lib/components/wizard.js.map +1 -1
  58. package/lib/styles/button.d.ts.map +1 -1
  59. package/lib/styles/button.js +10 -6
  60. package/lib/styles/button.js.map +1 -1
  61. package/lib/styles/calendar-month.d.ts +3 -1
  62. package/lib/styles/calendar-month.d.ts.map +1 -1
  63. package/lib/styles/calendar-month.js +63 -8
  64. package/lib/styles/calendar-month.js.map +1 -1
  65. package/lib/styles/checkbox.d.ts +3 -1
  66. package/lib/styles/checkbox.d.ts.map +1 -1
  67. package/lib/styles/checkbox.js +31 -53
  68. package/lib/styles/checkbox.js.map +1 -1
  69. package/lib/styles/copy.d.ts +3 -1
  70. package/lib/styles/copy.d.ts.map +1 -1
  71. package/lib/styles/copy.js +27 -4
  72. package/lib/styles/copy.js.map +1 -1
  73. package/lib/styles/date-picker.d.ts +3 -1
  74. package/lib/styles/date-picker.d.ts.map +1 -1
  75. package/lib/styles/date-picker.js +52 -98
  76. package/lib/styles/date-picker.js.map +1 -1
  77. package/lib/styles/input.d.ts +3 -1
  78. package/lib/styles/input.d.ts.map +1 -1
  79. package/lib/styles/input.js +58 -119
  80. package/lib/styles/input.js.map +1 -1
  81. package/lib/styles/multiselect.d.ts +3 -1
  82. package/lib/styles/multiselect.d.ts.map +1 -1
  83. package/lib/styles/multiselect.js +26 -2
  84. package/lib/styles/multiselect.js.map +1 -1
  85. package/lib/styles/radio.d.ts +3 -1
  86. package/lib/styles/radio.d.ts.map +1 -1
  87. package/lib/styles/radio.js +23 -20
  88. package/lib/styles/radio.js.map +1 -1
  89. package/lib/styles/select-base.d.ts +9 -0
  90. package/lib/styles/select-base.d.ts.map +1 -0
  91. package/lib/styles/select-base.js +929 -0
  92. package/lib/styles/select-base.js.map +1 -0
  93. package/lib/styles/select.d.ts +3 -3
  94. package/lib/styles/select.d.ts.map +1 -1
  95. package/lib/styles/select.js +20 -18
  96. package/lib/styles/select.js.map +1 -1
  97. package/lib/styles/switch.d.ts +3 -1
  98. package/lib/styles/switch.d.ts.map +1 -1
  99. package/lib/styles/switch.js +23 -8
  100. package/lib/styles/switch.js.map +1 -1
  101. package/lib/styles/tooltip.d.ts +4 -2
  102. package/lib/styles/tooltip.d.ts.map +1 -1
  103. package/lib/styles/tooltip.js +4 -119
  104. package/lib/styles/tooltip.js.map +1 -1
  105. package/lib/utils/icons.d.ts +10 -0
  106. package/lib/utils/icons.d.ts.map +1 -0
  107. package/lib/utils/icons.js +10 -0
  108. package/lib/utils/icons.js.map +1 -0
  109. package/lib/utils/loader-registry.d.ts +2 -2
  110. package/lib/utils/loader-registry.js +2 -2
  111. package/lib/utils/positioning.d.ts +27 -0
  112. package/lib/utils/positioning.d.ts.map +1 -1
  113. package/lib/utils/positioning.js +20 -3
  114. package/lib/utils/positioning.js.map +1 -1
  115. package/lib/version.d.ts +1 -1
  116. package/lib/version.js +1 -1
  117. package/package.json +1 -1
package/css/tyrell.css CHANGED
@@ -344,10 +344,12 @@ COMPONENT TOKENS
344
344
  --ty-input-disabled-color: #9ca3af;
345
345
  --ty-label-color: #374151;
346
346
 
347
- /* Input semantic states */
348
- --ty-input-success-border: var(--ty-color-success);
349
- --ty-input-danger-border: var(--ty-color-danger);
350
- --ty-input-warning-border: var(--ty-color-warning);
347
+ /* Input semantic states — RESTING border for a flavored field. Soft on
348
+ purpose: the full-strength color is reserved for hover/focus, so the
349
+ emphasis ladder (rest → hover → focus+ring) reads like neutral's. */
350
+ --ty-input-success-border: var(--ty-color-success-soft);
351
+ --ty-input-danger-border: var(--ty-color-danger-soft);
352
+ --ty-input-warning-border: var(--ty-color-warning-soft);
351
353
 
352
354
  /* =================================================================
353
355
  SOLID BUTTON FILLS — plain default values (the contract). The smart
@@ -519,17 +521,19 @@ DESIGN SYSTEM TOKENS
519
521
  --ty-transition-shadow: box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1);
520
522
  --ty-transition-transform: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
521
523
 
522
- /* Component Sizes */
523
- --ty-size-xs: 1.5rem;
524
- /* 24px */
524
+ /* Component Sizes — single source of truth for FIELD heights.
525
+ Fields (ty-input, ty-select, ty-date-picker) come in exactly three
526
+ sizes and consume these via min-height: var(--ty-size-*), so the same
527
+ `size` attribute is the same height on every field. Shared scale with
528
+ ty-button's 4px ladder (see button.ts): field sm = button md (32px),
529
+ field md = button lg (36px), field lg = button xl (40px) — a button
530
+ and a field of the paired size sit flush, same height, in a row. */
525
531
  --ty-size-sm: 2rem;
526
532
  /* 32px */
527
- --ty-size-md: 2.5rem;
533
+ --ty-size-md: 2.25rem;
534
+ /* 36px */
535
+ --ty-size-lg: 2.5rem;
528
536
  /* 40px */
529
- --ty-size-lg: 3rem;
530
- /* 48px */
531
- --ty-size-xl: 3.5rem;
532
- /* 56px */
533
537
 
534
538
  /* Z-Index Scale */
535
539
  --ty-z-auto: auto;
@@ -564,6 +568,34 @@ DESIGN SYSTEM TOKENS
564
568
  transparent
565
569
  );
566
570
  --ty-scroll-shadow-transition: opacity 0.2s ease-out;
571
+
572
+ /* =================================================================
573
+ TOOLTIP (default/"dark" flavor)
574
+ Deliberately theme-INDEPENDENT — defined once here, not redeclared in
575
+ html.dark below. A tooltip's job is to pop against whatever it's sitting
576
+ on, light page or dark; every major library (Material, Bootstrap, Ant,
577
+ Shoelace) keeps its default tooltip a fixed dark chip regardless of page
578
+ theme. Override on :root (or scope to a container) to retheme globally
579
+ without touching flavor="light"/"info"/other components.
580
+ Values are pure achromatic gray (R=G=B, no hue) — matches
581
+ --ty-solid-neutral's "no tint" convention. Don't reuse a Tailwind
582
+ slate/cool-gray hex here (e.g. #1f2937) — those carry a real blue
583
+ undertone (blue channel > red/green) and read as a color flavor next to
584
+ genuinely neutral buttons, which was exactly the bug being fixed.
585
+ ================================================================= */
586
+ --ty-tooltip-bg: #262626;
587
+ --ty-tooltip-color: #f5f5f5;
588
+ --ty-tooltip-border: #404040;
589
+
590
+ /* =================================================================
591
+ CALENDAR — "other month" day de-emphasis
592
+ --ty-color-neutral-faint alone is only ~2.5:1 against white — already
593
+ below the 4.5:1 WCAG AA text minimum before the (now-removed) opacity
594
+ fade made it worse still. This is its own token, calibrated to actually
595
+ pass, rather than reusing -faint here. Real bug, caught by adding
596
+ axe-core coverage for the first time, not a design choice being revised.
597
+ ================================================================= */
598
+ --ty-calendar-other-month-color: #6b7280; /* 4.83:1 vs white */
567
599
  }
568
600
 
569
601
  /* =================================================================
@@ -777,6 +809,10 @@ Emphasis logic inverts: lighter = more emphasis
777
809
  rgba(0, 0, 0, 0),
778
810
  transparent
779
811
  );
812
+
813
+ /* Calendar "other month" de-emphasis — see the :root definition for why
814
+ this is its own token instead of --ty-color-neutral-faint. */
815
+ --ty-calendar-other-month-color: #8a8a8a; /* 5.04:1 vs dark content bg (#1a1a1a) */
780
816
  }
781
817
 
782
818
  /* =================================================================
package/dist/tyrell.css CHANGED
@@ -344,10 +344,12 @@ COMPONENT TOKENS
344
344
  --ty-input-disabled-color: #9ca3af;
345
345
  --ty-label-color: #374151;
346
346
 
347
- /* Input semantic states */
348
- --ty-input-success-border: var(--ty-color-success);
349
- --ty-input-danger-border: var(--ty-color-danger);
350
- --ty-input-warning-border: var(--ty-color-warning);
347
+ /* Input semantic states — RESTING border for a flavored field. Soft on
348
+ purpose: the full-strength color is reserved for hover/focus, so the
349
+ emphasis ladder (rest → hover → focus+ring) reads like neutral's. */
350
+ --ty-input-success-border: var(--ty-color-success-soft);
351
+ --ty-input-danger-border: var(--ty-color-danger-soft);
352
+ --ty-input-warning-border: var(--ty-color-warning-soft);
351
353
 
352
354
  /* =================================================================
353
355
  SOLID BUTTON FILLS — plain default values (the contract). The smart
@@ -519,17 +521,19 @@ DESIGN SYSTEM TOKENS
519
521
  --ty-transition-shadow: box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1);
520
522
  --ty-transition-transform: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
521
523
 
522
- /* Component Sizes */
523
- --ty-size-xs: 1.5rem;
524
- /* 24px */
524
+ /* Component Sizes — single source of truth for FIELD heights.
525
+ Fields (ty-input, ty-select, ty-date-picker) come in exactly three
526
+ sizes and consume these via min-height: var(--ty-size-*), so the same
527
+ `size` attribute is the same height on every field. Shared scale with
528
+ ty-button's 4px ladder (see button.ts): field sm = button md (32px),
529
+ field md = button lg (36px), field lg = button xl (40px) — a button
530
+ and a field of the paired size sit flush, same height, in a row. */
525
531
  --ty-size-sm: 2rem;
526
532
  /* 32px */
527
- --ty-size-md: 2.5rem;
533
+ --ty-size-md: 2.25rem;
534
+ /* 36px */
535
+ --ty-size-lg: 2.5rem;
528
536
  /* 40px */
529
- --ty-size-lg: 3rem;
530
- /* 48px */
531
- --ty-size-xl: 3.5rem;
532
- /* 56px */
533
537
 
534
538
  /* Z-Index Scale */
535
539
  --ty-z-auto: auto;
@@ -564,6 +568,34 @@ DESIGN SYSTEM TOKENS
564
568
  transparent
565
569
  );
566
570
  --ty-scroll-shadow-transition: opacity 0.2s ease-out;
571
+
572
+ /* =================================================================
573
+ TOOLTIP (default/"dark" flavor)
574
+ Deliberately theme-INDEPENDENT — defined once here, not redeclared in
575
+ html.dark below. A tooltip's job is to pop against whatever it's sitting
576
+ on, light page or dark; every major library (Material, Bootstrap, Ant,
577
+ Shoelace) keeps its default tooltip a fixed dark chip regardless of page
578
+ theme. Override on :root (or scope to a container) to retheme globally
579
+ without touching flavor="light"/"info"/other components.
580
+ Values are pure achromatic gray (R=G=B, no hue) — matches
581
+ --ty-solid-neutral's "no tint" convention. Don't reuse a Tailwind
582
+ slate/cool-gray hex here (e.g. #1f2937) — those carry a real blue
583
+ undertone (blue channel > red/green) and read as a color flavor next to
584
+ genuinely neutral buttons, which was exactly the bug being fixed.
585
+ ================================================================= */
586
+ --ty-tooltip-bg: #262626;
587
+ --ty-tooltip-color: #f5f5f5;
588
+ --ty-tooltip-border: #404040;
589
+
590
+ /* =================================================================
591
+ CALENDAR — "other month" day de-emphasis
592
+ --ty-color-neutral-faint alone is only ~2.5:1 against white — already
593
+ below the 4.5:1 WCAG AA text minimum before the (now-removed) opacity
594
+ fade made it worse still. This is its own token, calibrated to actually
595
+ pass, rather than reusing -faint here. Real bug, caught by adding
596
+ axe-core coverage for the first time, not a design choice being revised.
597
+ ================================================================= */
598
+ --ty-calendar-other-month-color: #6b7280; /* 4.83:1 vs white */
567
599
  }
568
600
 
569
601
  /* =================================================================
@@ -777,6 +809,10 @@ Emphasis logic inverts: lighter = more emphasis
777
809
  rgba(0, 0, 0, 0),
778
810
  transparent
779
811
  );
812
+
813
+ /* Calendar "other month" de-emphasis — see the :root definition for why
814
+ this is its own token instead of --ty-color-neutral-faint. */
815
+ --ty-calendar-other-month-color: #8a8a8a; /* 5.04:1 vs dark content bg (#1a1a1a) */
780
816
  }
781
817
 
782
818
  /* =================================================================