@weeehaoooz/talos-ui 0.1.0 → 0.1.2

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 (187) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +115 -18
  3. package/fesm2022/weeehaoooz-talos-ui-button.mjs.map +1 -0
  4. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs +3110 -0
  5. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs.map +1 -0
  6. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs +2414 -0
  7. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs.map +1 -0
  8. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs +1039 -0
  9. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs.map +1 -0
  10. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs +2885 -0
  11. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs.map +1 -0
  12. package/fesm2022/weeehaoooz-talos-ui-form.mjs +10799 -0
  13. package/fesm2022/weeehaoooz-talos-ui-form.mjs.map +1 -0
  14. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +1320 -11
  15. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  16. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +119 -72
  17. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  18. package/fesm2022/weeehaoooz-talos-ui.mjs +22190 -15213
  19. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  20. package/package.json +20 -135
  21. package/styles/_breadcrumb.scss +16 -0
  22. package/styles/_button-group.scss +156 -7
  23. package/styles/_buttons.scss +156 -8
  24. package/styles/_dropdown.scss +438 -0
  25. package/styles/_form-controls.scss +13 -0
  26. package/styles/_progress-bar.scss +43 -0
  27. package/styles/_skeleton.scss +176 -0
  28. package/styles/_spinner.scss +58 -0
  29. package/styles/_variables.scss +37 -0
  30. package/styles/index.scss +6 -1
  31. package/types/weeehaoooz-talos-ui-button.d.ts +92 -0
  32. package/types/weeehaoooz-talos-ui-button.d.ts.map +1 -0
  33. package/types/weeehaoooz-talos-ui-data-display.d.ts +1018 -0
  34. package/types/weeehaoooz-talos-ui-data-display.d.ts.map +1 -0
  35. package/types/weeehaoooz-talos-ui-data-viz.d.ts +839 -0
  36. package/types/weeehaoooz-talos-ui-data-viz.d.ts.map +1 -0
  37. package/types/weeehaoooz-talos-ui-dropdown.d.ts +187 -0
  38. package/types/weeehaoooz-talos-ui-dropdown.d.ts.map +1 -0
  39. package/types/weeehaoooz-talos-ui-feedback.d.ts +1495 -0
  40. package/types/weeehaoooz-talos-ui-feedback.d.ts.map +1 -0
  41. package/types/weeehaoooz-talos-ui-form.d.ts +2639 -0
  42. package/types/weeehaoooz-talos-ui-form.d.ts.map +1 -0
  43. package/types/weeehaoooz-talos-ui-layout.d.ts +851 -3
  44. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -1
  45. package/types/weeehaoooz-talos-ui-nav.d.ts +36 -10
  46. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -1
  47. package/types/weeehaoooz-talos-ui.d.ts +6949 -4137
  48. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
  49. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
  50. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -93
  51. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
  52. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
  53. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
  54. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
  55. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
  56. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
  57. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
  58. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
  59. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
  60. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
  61. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
  62. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
  63. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
  64. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
  65. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
  66. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
  67. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
  68. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
  69. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
  70. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
  71. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
  72. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
  73. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
  74. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
  75. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
  76. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
  77. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
  78. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
  79. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
  80. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
  81. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
  82. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
  83. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
  84. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
  85. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
  86. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
  87. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
  88. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
  89. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
  90. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
  91. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
  92. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
  93. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
  94. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
  95. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
  96. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
  97. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
  98. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
  99. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
  100. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
  101. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
  102. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
  103. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
  104. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
  105. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
  106. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
  107. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
  108. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
  109. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
  110. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
  111. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
  112. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
  113. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
  114. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
  115. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
  116. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
  117. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
  118. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -59
  119. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
  120. package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
  121. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
  122. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
  123. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
  124. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
  125. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
  126. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
  127. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
  128. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
  129. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
  130. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
  131. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
  132. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
  133. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
  134. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
  135. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
  136. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
  137. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
  138. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
  139. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
  140. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
  141. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
  142. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
  143. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
  144. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
  145. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
  146. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
  147. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
  148. package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
  149. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
  150. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
  151. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
  152. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
  153. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
  154. package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
  155. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
  156. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
  157. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
  158. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
  159. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
  160. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
  161. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
  162. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
  163. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
  164. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
  165. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
  166. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
  167. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
  168. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
  169. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
  170. package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
  171. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
  172. package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
  173. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
  174. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
  175. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
  176. package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
  177. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
  178. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
  179. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
  180. package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
  181. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
  182. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
  183. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
  184. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
  185. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
  186. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
  187. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
@@ -0,0 +1,438 @@
1
+ /* ==========================================================================
2
+ Talos UI Dropdown & Cascading Sub-Menu - Design System Tokens & Theming
3
+ ========================================================================== */
4
+
5
+ @keyframes talos-dropdown-enter {
6
+ 0% {
7
+ opacity: 0;
8
+ transform: scale(0.96) translateY(-4px);
9
+ }
10
+ 100% {
11
+ opacity: 1;
12
+ transform: scale(1) translateY(0);
13
+ }
14
+ }
15
+
16
+ @keyframes talos-submenu-enter {
17
+ 0% {
18
+ opacity: 0;
19
+ transform: scale(0.96) translateX(-4px);
20
+ }
21
+ 100% {
22
+ opacity: 1;
23
+ transform: scale(1) translateX(0);
24
+ }
25
+ }
26
+
27
+ /* Base CDK Overlay Pane Container for Dropdowns & Sub-menus */
28
+ .cdk-overlay-pane:has(.talos-dropdown-panel) {
29
+ z-index: 1050;
30
+ pointer-events: auto;
31
+ }
32
+
33
+ /* Floating Dropdown Panel Container */
34
+ .talos-dropdown-panel {
35
+ display: flex;
36
+ flex-direction: column;
37
+ box-sizing: border-box;
38
+ background-color: var(--talos-dropdown-bg, var(--talos-card-bg, var(--talos-bg-surface, #ffffff)));
39
+ border: 1px solid var(--talos-dropdown-border, var(--talos-border-default, #cbd5e1));
40
+ border-radius: var(--talos-dropdown-radius, var(--talos-radius-md, 0.375rem));
41
+ box-shadow: var(--talos-dropdown-shadow, var(--talos-shadow-dropdown, 0 10px 25px -5px rgba(0, 0, 0, 0.08), 0 4px 6px -2px rgba(0, 0, 0, 0.04)));
42
+ padding: var(--talos-dropdown-padding, 0.25rem);
43
+ outline: none;
44
+ overflow: visible;
45
+ backdrop-filter: blur(16px);
46
+ -webkit-backdrop-filter: blur(16px);
47
+ animation: talos-dropdown-enter 0.16s cubic-bezier(0.16, 1, 0.3, 1) forwards;
48
+ user-select: none;
49
+ }
50
+
51
+ /* Dropdown Section Header */
52
+ .talos-dropdown-header {
53
+ display: flex;
54
+ align-items: center;
55
+ padding: 0.375rem 0.5rem 0.1875rem;
56
+ font-family: var(--talos-font-sans, inherit);
57
+ font-size: var(--talos-font-size-2xs, 0.6875rem);
58
+ font-weight: var(--talos-font-weight-bold, 700);
59
+ text-transform: uppercase;
60
+ letter-spacing: 0.05em;
61
+ color: var(--talos-text-muted, #64748b);
62
+ box-sizing: border-box;
63
+ }
64
+
65
+ /* Dropdown Item Host */
66
+ .talos-dropdown-item-host {
67
+ display: block;
68
+ width: 100%;
69
+ box-sizing: border-box;
70
+
71
+ /* Button / Link Base */
72
+ .talos-dropdown-item-btn,
73
+ .talos-dropdown-item-link {
74
+ display: flex;
75
+ align-items: center;
76
+ width: 100%;
77
+ min-height: var(--talos-dropdown-item-height, 1.875rem);
78
+ padding: 0.25rem 0.5rem;
79
+ border-radius: var(--talos-dropdown-item-radius, var(--talos-radius-sm, 0.25rem));
80
+ border: 1px solid transparent;
81
+ background: transparent;
82
+ color: var(--talos-text-primary, #0f172a);
83
+ font-family: var(--talos-font-sans, inherit);
84
+ font-size: var(--talos-font-size-sm, 0.8125rem);
85
+ font-weight: var(--talos-font-weight-medium, 500);
86
+ text-align: left;
87
+ text-decoration: none;
88
+ line-height: var(--talos-line-height-tight, 1.25);
89
+ cursor: pointer;
90
+ box-sizing: border-box;
91
+ transition: background-color var(--talos-transition, 0.15s ease),
92
+ color var(--talos-transition, 0.15s ease),
93
+ border-color var(--talos-transition, 0.15s ease);
94
+ gap: 0.4375rem;
95
+
96
+ &:hover,
97
+ &:focus-visible {
98
+ background-color: var(--talos-dropdown-hover-bg, var(--talos-bg-subtle, #f1f5f9));
99
+ color: var(--talos-text-primary, #0f172a);
100
+ outline: none;
101
+ }
102
+
103
+ &:active {
104
+ background-color: var(--talos-dropdown-active-bg, var(--talos-border-subtle, #e2e8f0));
105
+ }
106
+ }
107
+
108
+ /* Submenu is open active state on parent item */
109
+ &.is-submenu-open {
110
+ .talos-dropdown-item-btn,
111
+ .talos-dropdown-item-link {
112
+ background-color: var(--talos-dropdown-hover-bg, var(--talos-bg-subtle, #f1f5f9));
113
+ color: var(--talos-primary, #2563eb);
114
+
115
+ .talos-dropdown-item-submenu-arrow {
116
+ color: var(--talos-primary, #2563eb);
117
+ transform: translateX(1px);
118
+ }
119
+ }
120
+ }
121
+
122
+ /* Checkmark Container */
123
+ .talos-dropdown-item-check {
124
+ display: inline-flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ width: 0.9375rem;
128
+ height: 0.9375rem;
129
+ margin-right: -0.125rem;
130
+ flex-shrink: 0;
131
+ color: var(--talos-primary, #2563eb);
132
+
133
+ svg,
134
+ lucide-icon,
135
+ > * {
136
+ width: 0.8125rem !important;
137
+ height: 0.8125rem !important;
138
+ display: block;
139
+ stroke-width: 2.25px;
140
+ }
141
+ }
142
+
143
+ /* Prefix Icon */
144
+ .talos-dropdown-item-icon {
145
+ display: inline-flex;
146
+ align-items: center;
147
+ justify-content: center;
148
+ flex-shrink: 0;
149
+ width: 0.9375rem;
150
+ height: 0.9375rem;
151
+ color: var(--talos-text-muted, #64748b);
152
+ transition: color var(--talos-transition, 0.15s ease);
153
+
154
+ svg,
155
+ lucide-icon,
156
+ > * {
157
+ width: 0.9375rem !important;
158
+ height: 0.9375rem !important;
159
+ max-width: 0.9375rem !important;
160
+ max-height: 0.9375rem !important;
161
+ display: block;
162
+ flex-shrink: 0;
163
+ stroke-width: 1.85px;
164
+ }
165
+ }
166
+
167
+ .talos-dropdown-item-btn:hover .talos-dropdown-item-icon,
168
+ .talos-dropdown-item-link:hover .talos-dropdown-item-icon {
169
+ color: var(--talos-text-primary, #0f172a);
170
+ }
171
+
172
+ /* Main Label */
173
+ .talos-dropdown-item-label {
174
+ flex: 1;
175
+ white-space: nowrap;
176
+ overflow: hidden;
177
+ text-overflow: ellipsis;
178
+ }
179
+
180
+ /* Badges */
181
+ .talos-dropdown-item-badge {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ font-size: var(--talos-font-size-2xs, 0.6875rem);
186
+ font-weight: var(--talos-font-weight-semibold, 600);
187
+ padding: 0.0625rem 0.375rem;
188
+ border-radius: var(--talos-radius-full, 9999px);
189
+ line-height: 1.2;
190
+ flex-shrink: 0;
191
+
192
+ &.badge-primary {
193
+ background-color: var(--talos-primary-subtle-bg, #eff6ff);
194
+ color: var(--talos-primary, #2563eb);
195
+ }
196
+ &.badge-secondary {
197
+ background-color: var(--talos-neutral-subtle-bg, #f8fafc);
198
+ color: var(--talos-neutral-text, #475569);
199
+ }
200
+ &.badge-success {
201
+ background-color: var(--talos-success-subtle-bg, #f0fdf4);
202
+ color: var(--talos-success, #16a34a);
203
+ }
204
+ &.badge-info {
205
+ background-color: var(--talos-info-subtle-bg, #f0f9ff);
206
+ color: var(--talos-info, #0284c7);
207
+ }
208
+ &.badge-warning {
209
+ background-color: var(--talos-warning-subtle-bg, #fffbeb);
210
+ color: var(--talos-warning, #d97706);
211
+ }
212
+ &.badge-danger {
213
+ background-color: var(--talos-danger-subtle-bg, #fef2f2);
214
+ color: var(--talos-danger, #ef4444);
215
+ }
216
+ &.badge-subtle {
217
+ background-color: var(--talos-bg-subtle, #f1f5f9);
218
+ color: var(--talos-text-muted, #64748b);
219
+ }
220
+ }
221
+
222
+ /* Keyboard Shortcut */
223
+ .talos-dropdown-item-shortcut {
224
+ display: inline-flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+ margin-left: auto;
228
+ font-family: var(--talos-font-mono, monospace);
229
+ font-size: var(--talos-font-size-2xs, 0.6875rem);
230
+ font-weight: var(--talos-font-weight-medium, 500);
231
+ color: var(--talos-text-muted, #64748b);
232
+ background-color: var(--talos-bg-subtle, rgba(0, 0, 0, 0.04));
233
+ border: 1px solid var(--talos-border-subtle, rgba(0, 0, 0, 0.06));
234
+ border-radius: var(--talos-radius-xs, 0.125rem);
235
+ padding: 0.0625rem 0.25rem;
236
+ line-height: 1;
237
+ letter-spacing: 0.02em;
238
+ }
239
+
240
+ /* Sub-menu Chevron Arrow */
241
+ .talos-dropdown-item-submenu-arrow {
242
+ display: inline-flex;
243
+ align-items: center;
244
+ justify-content: center;
245
+ margin-left: auto;
246
+ width: 0.8125rem;
247
+ height: 0.8125rem;
248
+ color: var(--talos-text-muted, #64748b);
249
+ transition: transform var(--talos-transition, 0.15s ease), color var(--talos-transition, 0.15s ease);
250
+
251
+ svg,
252
+ lucide-icon,
253
+ > * {
254
+ width: 0.75rem !important;
255
+ height: 0.75rem !important;
256
+ display: block;
257
+ stroke-width: 2px;
258
+ }
259
+ }
260
+
261
+ .talos-dropdown-item-btn:hover .talos-dropdown-item-submenu-arrow,
262
+ .talos-dropdown-item-link:hover .talos-dropdown-item-submenu-arrow {
263
+ color: var(--talos-text-primary, #0f172a);
264
+ transform: translateX(1px);
265
+ }
266
+
267
+ /* Danger / Destructive Variant */
268
+ &.is-danger {
269
+ .talos-dropdown-item-btn,
270
+ .talos-dropdown-item-link {
271
+ color: var(--talos-danger, #ef4444);
272
+
273
+ .talos-dropdown-item-icon {
274
+ color: var(--talos-danger, #ef4444);
275
+ }
276
+
277
+ &:hover,
278
+ &:focus-visible {
279
+ background-color: var(--talos-danger-subtle-bg, #fef2f2);
280
+ color: var(--talos-danger-hover, #dc2626);
281
+
282
+ .talos-dropdown-item-icon {
283
+ color: var(--talos-danger-hover, #dc2626);
284
+ }
285
+ }
286
+
287
+ &:active {
288
+ background-color: var(--talos-danger-subtle-bg-hover, #fee2e2);
289
+ }
290
+ }
291
+ }
292
+
293
+ /* Disabled State */
294
+ &.is-disabled {
295
+ pointer-events: none;
296
+ opacity: 0.45;
297
+
298
+ .talos-dropdown-item-btn,
299
+ .talos-dropdown-item-link {
300
+ cursor: not-allowed;
301
+ color: var(--talos-text-muted, #64748b);
302
+ }
303
+ }
304
+ }
305
+
306
+ /* Hairline Divider */
307
+ .talos-dropdown-divider {
308
+ display: block;
309
+ width: 100%;
310
+ height: 1px;
311
+ margin: 0.25rem 0;
312
+ background-color: var(--talos-dropdown-border, var(--talos-border-subtle, #f1f5f9));
313
+ border: none;
314
+ box-sizing: border-box;
315
+ }
316
+
317
+ /* Dark Mode Token Enforcement Layer */
318
+ :root[data-theme="dark"],
319
+ :root.dark,
320
+ [data-theme="dark"],
321
+ [data-mode="dark"],
322
+ .dark,
323
+ .dark-theme {
324
+ .talos-dropdown-panel {
325
+ background-color: var(--talos-dropdown-bg, var(--talos-card-bg, #0f172a));
326
+ border-color: var(--talos-dropdown-border, var(--talos-border-default, rgba(255, 255, 255, 0.1)));
327
+ box-shadow: 0 20px 40px -8px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(255, 255, 255, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.05);
328
+ }
329
+
330
+ .talos-dropdown-header {
331
+ color: var(--talos-text-muted, #94a3b8);
332
+ }
333
+
334
+ .talos-dropdown-item-host {
335
+ .talos-dropdown-item-btn,
336
+ .talos-dropdown-item-link {
337
+ color: var(--talos-text-primary, #f8fafc);
338
+
339
+ &:hover,
340
+ &:focus-visible {
341
+ background-color: var(--talos-dropdown-hover-bg, var(--talos-bg-subtle, rgba(255, 255, 255, 0.08)));
342
+ color: #ffffff;
343
+ }
344
+
345
+ &:active {
346
+ background-color: var(--talos-neutral-subtle-bg-hover, rgba(255, 255, 255, 0.12));
347
+ }
348
+ }
349
+
350
+ &.is-submenu-open {
351
+ .talos-dropdown-item-btn,
352
+ .talos-dropdown-item-link {
353
+ background-color: var(--talos-dropdown-hover-bg, var(--talos-bg-subtle, rgba(255, 255, 255, 0.08)));
354
+ color: var(--talos-primary, #3b82f6);
355
+
356
+ .talos-dropdown-item-submenu-arrow {
357
+ color: var(--talos-primary, #3b82f6);
358
+ }
359
+ }
360
+ }
361
+
362
+ .talos-dropdown-item-icon {
363
+ color: var(--talos-text-muted, #94a3b8);
364
+ }
365
+
366
+ .talos-dropdown-item-btn:hover .talos-dropdown-item-icon,
367
+ .talos-dropdown-item-link:hover .talos-dropdown-item-icon {
368
+ color: #ffffff;
369
+ }
370
+
371
+ .talos-dropdown-item-submenu-arrow {
372
+ color: var(--talos-text-muted, #94a3b8);
373
+ }
374
+
375
+ .talos-dropdown-item-btn:hover .talos-dropdown-item-submenu-arrow,
376
+ .talos-dropdown-item-link:hover .talos-dropdown-item-submenu-arrow {
377
+ color: #ffffff;
378
+ }
379
+
380
+ .talos-dropdown-item-shortcut {
381
+ color: var(--talos-text-muted, #94a3b8);
382
+ background-color: var(--talos-bg-subtle, rgba(255, 255, 255, 0.08));
383
+ border-color: rgba(255, 255, 255, 0.06);
384
+ }
385
+
386
+ .talos-dropdown-item-badge {
387
+ &.badge-primary {
388
+ background-color: var(--talos-primary-subtle-bg, rgba(59, 130, 246, 0.2));
389
+ color: var(--talos-primary-text, #93c5fd);
390
+ }
391
+ &.badge-secondary {
392
+ background-color: var(--talos-neutral-subtle-bg, rgba(148, 163, 184, 0.15));
393
+ color: var(--talos-neutral-text, #e2e8f0);
394
+ }
395
+ &.badge-success {
396
+ background-color: var(--talos-success-subtle-bg, rgba(22, 163, 74, 0.2));
397
+ color: #86efac;
398
+ }
399
+ &.badge-warning {
400
+ background-color: var(--talos-warning-subtle-bg, rgba(217, 119, 6, 0.2));
401
+ color: #fde68a;
402
+ }
403
+ &.badge-danger {
404
+ background-color: var(--talos-danger-subtle-bg, rgba(239, 68, 68, 0.2));
405
+ color: #fca5a5;
406
+ }
407
+ &.badge-subtle {
408
+ background-color: var(--talos-bg-subtle, rgba(255, 255, 255, 0.08));
409
+ color: var(--talos-text-muted, #94a3b8);
410
+ }
411
+ }
412
+
413
+ &.is-danger {
414
+ .talos-dropdown-item-btn,
415
+ .talos-dropdown-item-link {
416
+ color: var(--talos-danger, #ef4444);
417
+
418
+ .talos-dropdown-item-icon {
419
+ color: var(--talos-danger, #ef4444);
420
+ }
421
+
422
+ &:hover,
423
+ &:focus-visible {
424
+ background-color: var(--talos-danger-subtle-bg, rgba(239, 68, 68, 0.16));
425
+ color: #fca5a5;
426
+
427
+ .talos-dropdown-item-icon {
428
+ color: #fca5a5;
429
+ }
430
+ }
431
+ }
432
+ }
433
+ }
434
+
435
+ .talos-dropdown-divider {
436
+ background-color: var(--talos-dropdown-border, var(--talos-border-subtle, rgba(255, 255, 255, 0.08)));
437
+ }
438
+ }
@@ -194,6 +194,19 @@ textarea[talosTextarea] {
194
194
  resize: vertical;
195
195
  }
196
196
 
197
+ /* Number Input Normalization (Suppress tiny browser spinners in favor of Talos steppers) */
198
+ input[type="number"].form-control,
199
+ input[type="number"].talos-input,
200
+ input[type="number"][talosInput] {
201
+ -moz-appearance: textfield;
202
+
203
+ &::-webkit-outer-spin-button,
204
+ &::-webkit-inner-spin-button {
205
+ -webkit-appearance: none;
206
+ margin: 0;
207
+ }
208
+ }
209
+
197
210
  /* Sizing Variations for Inputs & Textareas */
198
211
  .form-control-sm,
199
212
  .input-sm {
@@ -0,0 +1,43 @@
1
+ /* ==========================================================================
2
+ Talos UI Progress Bar Styles & Tokens
3
+ ========================================================================== */
4
+
5
+ :root {
6
+ --talos-progress-height-xs: 2px;
7
+ --talos-progress-height-sm: 4px;
8
+ --talos-progress-height-md: 8px;
9
+ --talos-progress-height-lg: 12px;
10
+ --talos-progress-height-xl: 18px;
11
+
12
+ --talos-progress-track-bg: #e2e8f0;
13
+ --talos-progress-fill-bg: var(--talos-primary, #2563eb);
14
+ --talos-progress-buffer-bg: #93c5fd;
15
+
16
+ --talos-progress-buffer-primary: #93c5fd;
17
+ --talos-progress-buffer-secondary: #94a3b8;
18
+ --talos-progress-buffer-neutral: #94a3b8;
19
+ --talos-progress-buffer-success: #86efac;
20
+ --talos-progress-buffer-warning: #fcd34d;
21
+ --talos-progress-buffer-danger: #fca5a5;
22
+ --talos-progress-buffer-info: #7dd3fc;
23
+ --talos-progress-buffer-gradient: #c4b5fd;
24
+ }
25
+
26
+ [data-theme='dark'],
27
+ [data-mode='dark'],
28
+ .dark,
29
+ .dark-theme {
30
+ --talos-progress-track-bg: rgba(255, 255, 255, 0.1);
31
+ --talos-progress-fill-bg: var(--talos-primary, #3b82f6);
32
+ --talos-progress-buffer-bg: rgba(59, 130, 246, 0.35);
33
+
34
+ --talos-progress-buffer-primary: rgba(59, 130, 246, 0.35);
35
+ --talos-progress-buffer-secondary: rgba(148, 163, 184, 0.25);
36
+ --talos-progress-buffer-neutral: rgba(148, 163, 184, 0.25);
37
+ --talos-progress-buffer-success: rgba(34, 197, 94, 0.35);
38
+ --talos-progress-buffer-warning: rgba(245, 158, 11, 0.35);
39
+ --talos-progress-buffer-danger: rgba(239, 68, 68, 0.35);
40
+ --talos-progress-buffer-info: rgba(14, 165, 233, 0.35);
41
+ --talos-progress-buffer-gradient: rgba(99, 102, 241, 0.35);
42
+ }
43
+
@@ -0,0 +1,176 @@
1
+ /* ==========================================================================
2
+ Talos UI Skeleton Loader Styles & Directives
3
+ ========================================================================== */
4
+
5
+ @keyframes talos-skeleton-shimmer {
6
+ 0% {
7
+ background-position: 200% 0;
8
+ }
9
+ 100% {
10
+ background-position: -200% 0;
11
+ }
12
+ }
13
+
14
+ @keyframes talos-skeleton-shimmer-slide {
15
+ 0% {
16
+ transform: translateX(-100%);
17
+ }
18
+ 100% {
19
+ transform: translateX(100%);
20
+ }
21
+ }
22
+
23
+ @keyframes talos-skeleton-pulse {
24
+ 0% {
25
+ opacity: 1;
26
+ }
27
+ 50% {
28
+ opacity: 0.45;
29
+ }
30
+ 100% {
31
+ opacity: 1;
32
+ }
33
+ }
34
+
35
+ // ── Global Directive Attached Styles ([talosSkeleton]) ──
36
+ .talos-skeleton-attached.talos-skeleton-active {
37
+ position: relative !important;
38
+ pointer-events: none !important;
39
+ user-select: none !important;
40
+ cursor: default !important;
41
+ color: transparent !important;
42
+ background-color: var(--talos-border-subtle, #e2e8f0) !important;
43
+ border-color: transparent !important;
44
+ box-shadow: none !important;
45
+ overflow: hidden !important;
46
+
47
+ // Mask all child elements (SVGs, icons, nested spans, badges)
48
+ * {
49
+ visibility: hidden !important;
50
+ }
51
+
52
+ // Handle replaced elements (img, video) so the image disappears and the skeleton shines
53
+ &[src],
54
+ &:is(img),
55
+ &:is(video) {
56
+ object-position: -99999px -99999px !important;
57
+ background: linear-gradient(
58
+ 90deg,
59
+ #e2e8f0 0%,
60
+ #ffffff 50%,
61
+ #e2e8f0 100%
62
+ ) !important;
63
+ background-size: 200% 100% !important;
64
+ animation: talos-skeleton-shimmer 1.5s infinite linear !important;
65
+ }
66
+
67
+ // Shapes
68
+ &.talos-skeleton--circular {
69
+ border-radius: 50% !important;
70
+ aspect-ratio: 1 / 1 !important;
71
+ }
72
+
73
+ &.talos-skeleton--rounded {
74
+ border-radius: var(--talos-radius-md, 0.375rem) !important;
75
+ }
76
+
77
+ &.talos-skeleton--rectangular {
78
+ border-radius: var(--talos-radius-xs, 0.125rem) !important;
79
+ }
80
+
81
+ // Shimmer Wave Animation
82
+ &.talos-skeleton--shimmer {
83
+ background: linear-gradient(
84
+ 90deg,
85
+ #e2e8f0 0%,
86
+ #f8fafc 50%,
87
+ #e2e8f0 100%
88
+ ) !important;
89
+ background-size: 200% 100% !important;
90
+ animation: talos-skeleton-shimmer 1.5s infinite linear !important;
91
+
92
+ // Glowing beam slide overlay across all tag elements
93
+ &::after {
94
+ content: '' !important;
95
+ position: absolute !important;
96
+ top: 0 !important;
97
+ left: 0 !important;
98
+ width: 100% !important;
99
+ height: 100% !important;
100
+ transform: translateX(-100%);
101
+ background: linear-gradient(
102
+ 90deg,
103
+ rgba(255, 255, 255, 0) 0%,
104
+ rgba(255, 255, 255, 0.75) 50%,
105
+ rgba(255, 255, 255, 0) 100%
106
+ ) !important;
107
+ animation: talos-skeleton-shimmer-slide 1.5s infinite ease-in-out !important;
108
+ pointer-events: none !important;
109
+ z-index: 2 !important;
110
+ }
111
+ }
112
+
113
+ // Pulse Breathing Animation
114
+ &.talos-skeleton--pulse {
115
+ animation: talos-skeleton-pulse 1.8s ease-in-out 0.5s infinite !important;
116
+ }
117
+
118
+ // Static / No Animation
119
+ &.talos-skeleton--no-animation {
120
+ animation: none !important;
121
+
122
+ &::after {
123
+ display: none !important;
124
+ }
125
+ }
126
+ }
127
+
128
+ // ── Dark Mode Overrides for Directive Skeleton ──
129
+ :root[data-theme="dark"],
130
+ [data-theme="dark"],
131
+ .dark {
132
+ .talos-skeleton-attached.talos-skeleton-active {
133
+ background-color: var(--talos-bg-subtle, #1e293b) !important;
134
+
135
+ &[src],
136
+ &:is(img),
137
+ &:is(video) {
138
+ background: linear-gradient(
139
+ 90deg,
140
+ #1e293b 0%,
141
+ #334155 50%,
142
+ #1e293b 100%
143
+ ) !important;
144
+ }
145
+
146
+ &.talos-skeleton--shimmer {
147
+ background: linear-gradient(
148
+ 90deg,
149
+ #1e293b 0%,
150
+ #334155 50%,
151
+ #1e293b 100%
152
+ ) !important;
153
+
154
+ &::after {
155
+ background: linear-gradient(
156
+ 90deg,
157
+ rgba(255, 255, 255, 0) 0%,
158
+ rgba(255, 255, 255, 0.16) 50%,
159
+ rgba(255, 255, 255, 0) 100%
160
+ ) !important;
161
+ }
162
+ }
163
+ }
164
+ }
165
+
166
+ // ── Reduced Motion Accessibility ──
167
+ @media (prefers-reduced-motion: reduce) {
168
+ .talos-skeleton-attached.talos-skeleton-active {
169
+ animation: none !important;
170
+ opacity: 0.85 !important;
171
+
172
+ &::after {
173
+ display: none !important;
174
+ }
175
+ }
176
+ }