@weeehaoooz/talos-ui 0.1.0

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 (180) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs +237 -0
  4. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +1 -0
  5. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +93 -0
  6. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +1 -0
  7. package/fesm2022/weeehaoooz-talos-ui-core.mjs +438 -0
  8. package/fesm2022/weeehaoooz-talos-ui-core.mjs.map +1 -0
  9. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +233 -0
  10. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +1 -0
  11. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +361 -0
  12. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +1 -0
  13. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +312 -0
  14. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +1 -0
  15. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +235 -0
  16. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +1 -0
  17. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +462 -0
  18. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +1 -0
  19. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +805 -0
  20. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +1 -0
  21. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +267 -0
  22. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +1 -0
  23. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +351 -0
  24. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +1 -0
  25. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +566 -0
  26. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +1 -0
  27. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +534 -0
  28. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +1 -0
  29. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +446 -0
  30. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +1 -0
  31. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +376 -0
  32. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +1 -0
  33. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +147 -0
  34. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +1 -0
  35. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +242 -0
  36. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +1 -0
  37. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +514 -0
  38. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +1 -0
  39. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +548 -0
  40. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +1 -0
  41. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +692 -0
  42. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +1 -0
  43. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +761 -0
  44. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +1 -0
  45. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +896 -0
  46. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +1 -0
  47. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +872 -0
  48. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +1 -0
  49. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +119 -0
  50. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +1 -0
  51. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +135 -0
  52. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +1 -0
  53. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +666 -0
  54. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +1 -0
  55. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +147 -0
  56. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +1 -0
  57. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +33 -0
  58. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +1 -0
  59. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +455 -0
  60. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +1 -0
  61. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +379 -0
  62. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +1 -0
  63. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +297 -0
  64. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +1 -0
  65. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +661 -0
  66. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +1 -0
  67. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +346 -0
  68. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +1 -0
  69. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +896 -0
  70. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +1 -0
  71. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +252 -0
  72. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +1 -0
  73. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +916 -0
  74. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +1 -0
  75. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +851 -0
  76. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -0
  77. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +897 -0
  78. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -0
  79. package/fesm2022/weeehaoooz-talos-ui.mjs +17058 -0
  80. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -0
  81. package/package.json +203 -0
  82. package/schematics/collection.json +10 -0
  83. package/schematics/ng-add/index.d.ts +3 -0
  84. package/schematics/ng-add/index.js +99 -0
  85. package/schematics/ng-add/schema.d.ts +10 -0
  86. package/schematics/ng-add/schema.js +2 -0
  87. package/schematics/ng-add/schema.json +52 -0
  88. package/styles/_alert.scss +56 -0
  89. package/styles/_badge.scss +279 -0
  90. package/styles/_button-group.scss +470 -0
  91. package/styles/_buttons.scss +442 -0
  92. package/styles/_card.scss +18 -0
  93. package/styles/_dialog.scss +116 -0
  94. package/styles/_drop-zone.scss +19 -0
  95. package/styles/_form-controls.scss +660 -0
  96. package/styles/_slide-toggle.scss +171 -0
  97. package/styles/_status-tag.scss +108 -0
  98. package/styles/_timeline.scss +19 -0
  99. package/styles/_tooltip.scss +32 -0
  100. package/styles/_typography.scss +279 -0
  101. package/styles/_variables.scss +590 -0
  102. package/styles/index.scss +15 -0
  103. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +59 -0
  104. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +1 -0
  105. package/types/weeehaoooz-talos-ui-button-button.d.ts +38 -0
  106. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +1 -0
  107. package/types/weeehaoooz-talos-ui-core.d.ts +95 -0
  108. package/types/weeehaoooz-talos-ui-core.d.ts.map +1 -0
  109. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +119 -0
  110. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +1 -0
  111. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +135 -0
  112. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +1 -0
  113. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +144 -0
  114. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +1 -0
  115. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +83 -0
  116. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +1 -0
  117. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +255 -0
  118. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +1 -0
  119. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +204 -0
  120. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +1 -0
  121. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +101 -0
  122. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +1 -0
  123. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +138 -0
  124. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +1 -0
  125. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +161 -0
  126. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +1 -0
  127. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +212 -0
  128. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +1 -0
  129. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +259 -0
  130. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +1 -0
  131. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +147 -0
  132. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +1 -0
  133. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +32 -0
  134. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +1 -0
  135. package/types/weeehaoooz-talos-ui-form-affix.d.ts +88 -0
  136. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +1 -0
  137. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +113 -0
  138. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +1 -0
  139. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +165 -0
  140. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +1 -0
  141. package/types/weeehaoooz-talos-ui-form-chips.d.ts +152 -0
  142. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +1 -0
  143. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +144 -0
  144. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +1 -0
  145. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +138 -0
  146. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +1 -0
  147. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +148 -0
  148. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +1 -0
  149. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +44 -0
  150. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +1 -0
  151. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +48 -0
  152. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +1 -0
  153. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +227 -0
  154. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +1 -0
  155. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +42 -0
  156. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +1 -0
  157. package/types/weeehaoooz-talos-ui-form-input.d.ts +15 -0
  158. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +1 -0
  159. package/types/weeehaoooz-talos-ui-form-otp.d.ts +111 -0
  160. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +1 -0
  161. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +145 -0
  162. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +1 -0
  163. package/types/weeehaoooz-talos-ui-form-radio.d.ts +84 -0
  164. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +1 -0
  165. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +181 -0
  166. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +1 -0
  167. package/types/weeehaoooz-talos-ui-form-rating.d.ts +110 -0
  168. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +1 -0
  169. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +195 -0
  170. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +1 -0
  171. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +79 -0
  172. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +1 -0
  173. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +192 -0
  174. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +1 -0
  175. package/types/weeehaoooz-talos-ui-layout.d.ts +286 -0
  176. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -0
  177. package/types/weeehaoooz-talos-ui-nav.d.ts +384 -0
  178. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -0
  179. package/types/weeehaoooz-talos-ui.d.ts +5050 -0
  180. package/types/weeehaoooz-talos-ui.d.ts.map +1 -0
@@ -0,0 +1,660 @@
1
+ /* Talos UI Form Controls & Utility Classes */
2
+
3
+ .form-group {
4
+ display: flex;
5
+ flex-direction: column;
6
+ margin-bottom: 0.875rem;
7
+ position: relative;
8
+
9
+ .form-label,
10
+ .talos-field-label {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ font-size: var(--talos-control-font-size, 0.8125rem);
14
+ font-weight: 600;
15
+ color: var(--talos-text-color, #0f172a);
16
+ margin-bottom: 0.375rem;
17
+
18
+ .required-star {
19
+ color: var(--talos-error-color, #ef4444);
20
+ margin-left: 0.125rem;
21
+ }
22
+ }
23
+
24
+ .field-error {
25
+ font-size: 0.75rem;
26
+ color: var(--talos-error-color, #ef4444);
27
+ margin-top: 0.25rem;
28
+ font-weight: 500;
29
+ }
30
+
31
+ .field-help {
32
+ font-size: 0.75rem;
33
+ color: var(--talos-text-muted, #64748b);
34
+ margin-top: 0.25rem;
35
+ }
36
+ }
37
+
38
+ /* Floating Label Wrapper Styles */
39
+ .talos-floating-field {
40
+ position: relative;
41
+ display: flex;
42
+ flex-direction: column;
43
+ width: 100%;
44
+
45
+ .talos-floating-label {
46
+ position: absolute;
47
+ left: var(--talos-control-padding-x, 0.625rem);
48
+ top: 50%;
49
+ transform: translateY(-50%);
50
+ font-size: var(--talos-control-font-size, 0.8125rem);
51
+ font-weight: 500;
52
+ color: var(--talos-input-placeholder-color, #94a3b8);
53
+ pointer-events: none;
54
+ user-select: none;
55
+ background-color: var(--talos-input-bg, var(--talos-card-bg, #ffffff));
56
+ padding: 0 0.25rem;
57
+ border-radius: 0.25rem;
58
+ line-height: 1;
59
+ z-index: 2;
60
+ transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1),
61
+ font-size 0.18s cubic-bezier(0.4, 0, 0.2, 1),
62
+ color 0.18s cubic-bezier(0.4, 0, 0.2, 1),
63
+ top 0.18s cubic-bezier(0.4, 0, 0.2, 1);
64
+
65
+ .required-star {
66
+ color: var(--talos-error-color, #ef4444);
67
+ margin-left: 0.125rem;
68
+ }
69
+ }
70
+
71
+ &:has(textarea) .talos-floating-label:not(.is-floated) {
72
+ top: 0.5rem;
73
+ transform: none;
74
+ }
75
+
76
+ &.is-floated .talos-floating-label,
77
+ &:focus-within .talos-floating-label {
78
+ top: 0 !important;
79
+ transform: translateY(-50%) scale(0.85) !important;
80
+ font-size: 0.75rem;
81
+ font-weight: 600;
82
+ color: var(--talos-primary-color, #2563eb);
83
+ }
84
+
85
+ &.is-invalid .talos-floating-label {
86
+ color: var(--talos-error-color, #ef4444);
87
+ }
88
+ }
89
+
90
+ /* Hide placeholder when inside an unfloated floating-label container */
91
+ .talos-floating-field:not(.is-floated):not(:focus-within),
92
+ talos-form-field.is-floating:not(.is-floated),
93
+ .talos-form-field-host.is-floating:not(.is-floated) {
94
+
95
+ .talos-input::placeholder,
96
+ input::placeholder,
97
+ textarea::placeholder {
98
+ color: transparent !important;
99
+ opacity: 0 !important;
100
+ -webkit-text-fill-color: transparent;
101
+ }
102
+ }
103
+
104
+ .talos-floating-field.is-floated,
105
+ .talos-floating-field:focus-within,
106
+ talos-form-field.is-floating.is-floated,
107
+ .talos-form-field-host.is-floating.is-floated {
108
+
109
+ .talos-input::placeholder,
110
+ input::placeholder,
111
+ textarea::placeholder {
112
+ color: var(--talos-input-placeholder-color, #94a3b8);
113
+ opacity: 1;
114
+ -webkit-text-fill-color: initial;
115
+ transition: opacity 0.15s ease, color 0.15s ease;
116
+ }
117
+ }
118
+
119
+ /* Base Input & Textarea Form Controls */
120
+ .form-control,
121
+ .talos-input {
122
+ --input-bg: var(--talos-input-bg, var(--talos-card-bg, #ffffff));
123
+ --input-border: var(--talos-input-border, var(--talos-border-color, #cbd5e1));
124
+ --input-border-hover: var(--talos-input-border-hover, var(--talos-border-hover, #64748b));
125
+ --input-border-focus: var(--talos-input-border-focus, var(--talos-border-focus, #2563eb));
126
+ --input-shadow-focus: var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, 0.15));
127
+ --input-color: var(--talos-input-color, var(--talos-text-color, #0f172a));
128
+ --input-placeholder-color: var(--talos-input-placeholder-color, #94a3b8);
129
+ --input-radius: var(--talos-border-radius, 0.375rem);
130
+ --input-height: var(--talos-control-height, 2.25rem);
131
+ --input-padding-x: var(--talos-control-padding-x, 0.625rem);
132
+ --input-font-size: var(--talos-control-font-size, 0.8125rem);
133
+
134
+ display: block;
135
+ width: 100%;
136
+ height: var(--input-height);
137
+ padding: 0 var(--input-padding-x);
138
+ font-size: var(--input-font-size);
139
+ font-family: inherit;
140
+ line-height: 1.25rem;
141
+ color: var(--input-color);
142
+ background-color: var(--input-bg);
143
+ border: 1px solid var(--input-border);
144
+ border-radius: var(--input-radius);
145
+ outline: none;
146
+ box-sizing: border-box;
147
+ transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
148
+
149
+ &::placeholder {
150
+ color: var(--input-placeholder-color);
151
+ opacity: 1;
152
+ }
153
+
154
+ &:hover:not(:disabled):not([readonly]):not(.is-disabled) {
155
+ border-color: var(--input-border-hover);
156
+ }
157
+
158
+ &:focus,
159
+ &:focus-visible {
160
+ border-color: var(--input-border-focus);
161
+ box-shadow: var(--input-shadow-focus);
162
+ }
163
+
164
+ &:disabled,
165
+ &.is-disabled,
166
+ &[disabled] {
167
+ background-color: var(--talos-input-disabled-bg, var(--talos-bg-color, #f8fafc));
168
+ border-color: var(--talos-input-disabled-border, #e2e8f0);
169
+ color: var(--talos-input-disabled-color, #94a3b8);
170
+ cursor: not-allowed;
171
+ opacity: 0.6;
172
+ }
173
+
174
+ &.is-invalid,
175
+ &:invalid.ng-touched {
176
+ border-color: var(--talos-error-color, #ef4444);
177
+
178
+ &:focus,
179
+ &:focus-visible {
180
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);
181
+ }
182
+ }
183
+ }
184
+
185
+ /* Textarea Specific Styling Overrides */
186
+ textarea.form-control,
187
+ textarea.talos-input,
188
+ textarea[talosInput],
189
+ textarea[talosTextarea] {
190
+ height: auto;
191
+ min-height: 5rem;
192
+ padding: 0.5rem var(--input-padding-x);
193
+ line-height: 1.5;
194
+ resize: vertical;
195
+ }
196
+
197
+ /* Sizing Variations for Inputs & Textareas */
198
+ .form-control-sm,
199
+ .input-sm {
200
+ --input-height: 2rem;
201
+ --input-padding-x: 0.5rem;
202
+ --input-font-size: 0.8125rem;
203
+ --input-radius: 0.25rem;
204
+ }
205
+
206
+ textarea.form-control-sm,
207
+ textarea.input-sm,
208
+ textarea[size="sm"] {
209
+ min-height: 4rem;
210
+ padding: 0.375rem 0.5rem;
211
+ }
212
+
213
+ .form-control-md,
214
+ .input-md {
215
+ --input-height: 2.25rem;
216
+ --input-padding-x: 0.625rem;
217
+ --input-font-size: 0.8125rem;
218
+ --input-radius: 0.375rem;
219
+ }
220
+
221
+ textarea.form-control-md,
222
+ textarea.input-md,
223
+ textarea[size="md"] {
224
+ min-height: 5rem;
225
+ padding: 0.5rem 0.625rem;
226
+ }
227
+
228
+ .form-control-lg,
229
+ .input-lg {
230
+ --input-height: 2.625rem;
231
+ --input-padding-x: 0.75rem;
232
+ --input-font-size: 0.875rem;
233
+ --input-radius: 0.375rem;
234
+ }
235
+
236
+ textarea.form-control-lg,
237
+ textarea.input-lg,
238
+ textarea[size="lg"] {
239
+ min-height: 6.25rem;
240
+ padding: 0.625rem 0.75rem;
241
+ }
242
+
243
+ /* Talos Checkbox Directive Styling */
244
+ .talos-checkbox {
245
+ --checkbox-size: 1.125rem;
246
+ --checkbox-bg: var(--talos-input-bg, var(--talos-card-bg, #ffffff));
247
+ --checkbox-border: var(--talos-input-border, var(--talos-border-color, #cbd5e1));
248
+ --checkbox-border-hover: var(--talos-input-border-hover, var(--talos-border-hover, #64748b));
249
+ --checkbox-color: var(--talos-primary-color, #2563eb);
250
+ --checkbox-color-hover: var(--talos-primary-hover, #1d4ed8);
251
+ --checkbox-mark-color: #ffffff;
252
+ --checkbox-radius: 0.25rem;
253
+ --checkbox-focus-ring: var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, 0.15));
254
+
255
+ appearance: none;
256
+ -webkit-appearance: none;
257
+ display: inline-block;
258
+ vertical-align: middle;
259
+ width: var(--checkbox-size);
260
+ height: var(--checkbox-size);
261
+ margin: 0;
262
+ padding: 0;
263
+ background-color: var(--checkbox-bg);
264
+ background-position: center;
265
+ background-repeat: no-repeat;
266
+ background-size: contain;
267
+ border: 1px solid var(--checkbox-border);
268
+ border-radius: var(--checkbox-radius);
269
+ outline: none;
270
+ cursor: pointer;
271
+ box-sizing: border-box;
272
+ flex-shrink: 0;
273
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
274
+
275
+ &:hover:not(:disabled) {
276
+ border-color: var(--checkbox-border-hover);
277
+ }
278
+
279
+ &:focus-visible {
280
+ box-shadow: var(--checkbox-focus-ring);
281
+ border-color: var(--checkbox-color);
282
+ }
283
+
284
+ &:checked {
285
+ background-color: var(--checkbox-color);
286
+ border-color: var(--checkbox-color);
287
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3E%3Cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3E%3C/svg%3E");
288
+
289
+ &:hover:not(:disabled) {
290
+ background-color: var(--checkbox-color-hover);
291
+ border-color: var(--checkbox-color-hover);
292
+ }
293
+ }
294
+
295
+ &:indeterminate,
296
+ &.is-indeterminate {
297
+ background-color: var(--checkbox-color);
298
+ border-color: var(--checkbox-color);
299
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3E%3Cpath fill-rule='evenodd' d='M4 8a.75.75 0 01.75-.75h6.5a.75.75 0 010 1.5h-6.5A.75.75 0 014 8z' clip-rule='evenodd'/%3E%3C/svg%3E");
300
+
301
+ &:hover:not(:disabled) {
302
+ background-color: var(--checkbox-color-hover);
303
+ border-color: var(--checkbox-color-hover);
304
+ }
305
+ }
306
+
307
+ /* Sizing Variations */
308
+ &.checkbox-sm {
309
+ --checkbox-size: 0.9375rem;
310
+ --checkbox-radius: 0.1875rem;
311
+ }
312
+
313
+ &.checkbox-md {
314
+ --checkbox-size: 1.125rem;
315
+ --checkbox-radius: 0.25rem;
316
+ }
317
+
318
+ &.checkbox-lg {
319
+ --checkbox-size: 1.375rem;
320
+ --checkbox-radius: 0.3125rem;
321
+ }
322
+
323
+ /* Color Variants */
324
+ &.talos-checkbox-primary {
325
+ --checkbox-color: var(--talos-primary-color, #2563eb);
326
+ --checkbox-color-hover: var(--talos-primary-hover, #1d4ed8);
327
+ --checkbox-focus-ring: var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, 0.15));
328
+ }
329
+
330
+ &.talos-checkbox-secondary {
331
+ --checkbox-color: #475569;
332
+ --checkbox-color-hover: #334155;
333
+ --checkbox-focus-ring: 0 0 0 3px rgba(71, 85, 105, 0.15);
334
+ }
335
+
336
+ &.talos-checkbox-success {
337
+ --checkbox-color: #16a34a;
338
+ --checkbox-color-hover: #15803d;
339
+ --checkbox-focus-ring: 0 0 0 3px rgba(22, 163, 74, 0.15);
340
+ }
341
+
342
+ &.talos-checkbox-danger {
343
+ --checkbox-color: var(--talos-error-color, #ef4444);
344
+ --checkbox-color-hover: #dc2626;
345
+ --checkbox-focus-ring: 0 0 0 3px rgba(239, 68, 68, 0.15);
346
+ }
347
+
348
+ /* Disabled State */
349
+ &:disabled,
350
+ &[disabled] {
351
+ background-color: var(--talos-input-disabled-bg, #f1f5f9);
352
+ border-color: var(--talos-input-disabled-border, #cbd5e1);
353
+ cursor: not-allowed;
354
+ opacity: 0.65;
355
+
356
+ &:checked,
357
+ &:indeterminate,
358
+ &.is-indeterminate {
359
+ background-color: var(--talos-input-disabled-color, #94a3b8);
360
+ border-color: var(--talos-input-disabled-color, #94a3b8);
361
+ }
362
+ }
363
+
364
+ /* Invalid / Error State */
365
+ &.is-invalid {
366
+ border-color: var(--talos-error-color, #ef4444);
367
+
368
+ &:focus-visible {
369
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);
370
+ }
371
+ }
372
+ }
373
+
374
+ /* Talos Radio Directive & Radio Component Styling */
375
+ .talos-radio {
376
+ --radio-size: 1.125rem;
377
+ --radio-bg: var(--talos-input-bg, var(--talos-card-bg, #ffffff));
378
+ --radio-border: var(--talos-input-border, var(--talos-border-color, #cbd5e1));
379
+ --radio-border-hover: var(--talos-input-border-hover, var(--talos-border-hover, #64748b));
380
+ --radio-color: var(--talos-primary-color, #2563eb);
381
+ --radio-color-hover: var(--talos-primary-hover, #1d4ed8);
382
+ --radio-focus-ring: var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, 0.15));
383
+
384
+ appearance: none;
385
+ -webkit-appearance: none;
386
+ display: inline-block;
387
+ vertical-align: middle;
388
+ width: var(--radio-size);
389
+ height: var(--radio-size);
390
+ margin: 0;
391
+ padding: 0;
392
+ background-color: var(--radio-bg);
393
+ background-position: center;
394
+ background-repeat: no-repeat;
395
+ background-size: contain;
396
+ border: 1px solid var(--radio-border);
397
+ border-radius: 50%;
398
+ outline: none;
399
+ cursor: pointer;
400
+ box-sizing: border-box;
401
+ flex-shrink: 0;
402
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
403
+
404
+ &:hover:not(:disabled) {
405
+ border-color: var(--radio-border-hover);
406
+ }
407
+
408
+ &:focus-visible {
409
+ box-shadow: var(--radio-focus-ring);
410
+ border-color: var(--radio-color);
411
+ }
412
+
413
+ &:checked {
414
+ background-color: var(--radio-bg);
415
+ border-color: var(--radio-color);
416
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232563eb'%3E%3Ccircle cx='8' cy='8' r='4'/%3E%3C/svg%3E");
417
+
418
+ &:hover:not(:disabled) {
419
+ border-color: var(--radio-color-hover);
420
+ }
421
+ }
422
+
423
+ /* Sizing Variations */
424
+ &.radio-sm {
425
+ --radio-size: 0.9375rem;
426
+ }
427
+
428
+ &.radio-md {
429
+ --radio-size: 1.125rem;
430
+ }
431
+
432
+ &.radio-lg {
433
+ --radio-size: 1.375rem;
434
+ }
435
+
436
+ /* Color Variants */
437
+ &.talos-radio-primary {
438
+ --radio-color: var(--talos-primary-color, #2563eb);
439
+ --radio-color-hover: var(--talos-primary-hover, #1d4ed8);
440
+ --radio-focus-ring: var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, 0.15));
441
+
442
+ &:checked {
443
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232563eb'%3E%3Ccircle cx='8' cy='8' r='4'/%3E%3C/svg%3E");
444
+ }
445
+ }
446
+
447
+ &.talos-radio-secondary {
448
+ --radio-color: #475569;
449
+ --radio-color-hover: #334155;
450
+ --radio-focus-ring: 0 0 0 3px rgba(71, 85, 105, 0.15);
451
+
452
+ &:checked {
453
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23475569'%3E%3Ccircle cx='8' cy='8' r='4'/%3E%3C/svg%3E");
454
+ }
455
+ }
456
+
457
+ &.talos-radio-success {
458
+ --radio-color: #16a34a;
459
+ --radio-color-hover: #15803d;
460
+ --radio-focus-ring: 0 0 0 3px rgba(22, 163, 74, 0.15);
461
+
462
+ &:checked {
463
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2316a34a'%3E%3Ccircle cx='8' cy='8' r='4'/%3E%3C/svg%3E");
464
+ }
465
+ }
466
+
467
+ &.talos-radio-danger {
468
+ --radio-color: var(--talos-error-color, #ef4444);
469
+ --radio-color-hover: #dc2626;
470
+ --radio-focus-ring: 0 0 0 3px rgba(239, 68, 68, 0.15);
471
+
472
+ &:checked {
473
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ef4444'%3E%3Ccircle cx='8' cy='8' r='4'/%3E%3C/svg%3E");
474
+ }
475
+ }
476
+
477
+ /* Disabled State */
478
+ &:disabled,
479
+ &[disabled] {
480
+ background-color: var(--talos-input-disabled-bg, #f1f5f9);
481
+ border-color: var(--talos-input-disabled-border, #cbd5e1);
482
+ cursor: not-allowed;
483
+ opacity: 0.65;
484
+
485
+ &:checked {
486
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2394a3b8'%3E%3Ccircle cx='8' cy='8' r='4'/%3E%3C/svg%3E");
487
+ border-color: var(--talos-input-disabled-color, #94a3b8);
488
+ }
489
+ }
490
+
491
+ /* Invalid / Error State */
492
+ &.is-invalid {
493
+ border-color: var(--talos-error-color, #ef4444);
494
+
495
+ &:focus-visible {
496
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);
497
+ }
498
+ }
499
+ }
500
+
501
+ /* Radio Group & Wrapper Layout Styling */
502
+ .talos-radio-group {
503
+ display: flex;
504
+
505
+ &.direction-vertical {
506
+ flex-direction: column;
507
+ gap: 0.625rem;
508
+ }
509
+
510
+ &.direction-horizontal {
511
+ flex-direction: row;
512
+ flex-wrap: wrap;
513
+ align-items: center;
514
+ gap: 1.25rem;
515
+ }
516
+ }
517
+
518
+ .talos-radio-host {
519
+ display: inline-block;
520
+ }
521
+
522
+ .talos-radio-wrapper {
523
+ display: inline-flex;
524
+ align-items: center;
525
+ gap: 0.5rem;
526
+ cursor: pointer;
527
+ user-select: none;
528
+ font-size: var(--talos-control-font-size, 0.875rem);
529
+ color: var(--talos-text-color, #0f172a);
530
+ line-height: 1.25;
531
+
532
+ &.is-disabled {
533
+ cursor: not-allowed;
534
+ opacity: 0.65;
535
+
536
+ .talos-radio-label {
537
+ color: var(--talos-text-muted, #64748b);
538
+ }
539
+ }
540
+ }
541
+
542
+ /* ─── Affix Elements (Prefix & Suffix / Postfix) ─────────────────────────── */
543
+ .talos-affix-element,
544
+ .talos-input-prefix,
545
+ .talos-input-suffix,
546
+ [talosPrefix],
547
+ [talosSuffix],
548
+ [talosPostfix],
549
+ [talosTextPrefix],
550
+ [talosTextSuffix],
551
+ [talosTextPostfix],
552
+ [talosLead],
553
+ [talosTrail],
554
+ [talosStart],
555
+ [talosEnd] {
556
+ display: inline-flex;
557
+ align-items: center;
558
+ justify-content: center;
559
+ font-size: var(--talos-control-font-size, 0.8125rem);
560
+ color: var(--talos-text-muted, #64748b);
561
+ line-height: 1;
562
+ user-select: none;
563
+ pointer-events: none;
564
+ white-space: nowrap;
565
+
566
+ &.affix-interactive,
567
+ &:is(button, a),
568
+ button,
569
+ a {
570
+ pointer-events: auto;
571
+ }
572
+ }
573
+
574
+ .talos-text-prefix,
575
+ .talos-text-suffix {
576
+ font-weight: 500;
577
+ color: var(--talos-text-muted, #64748b);
578
+ letter-spacing: normal;
579
+ }
580
+
581
+ /* ─── Standardized Affix Buttons ────────────────────────────────────────── */
582
+ .talos-affix-btn,
583
+ [talosAffixButton],
584
+ [talos-affix-button],
585
+ button.talos-affix-element,
586
+ button.talos-input-prefix,
587
+ button.talos-input-suffix,
588
+ button[talosPrefix],
589
+ button[talosSuffix],
590
+ button[talosPostfix],
591
+ button[talosLead],
592
+ button[talosTrail],
593
+ button[talosStart],
594
+ button[talosEnd],
595
+ [talosPrefix] button,
596
+ [talosSuffix] button,
597
+ [talosPostfix] button,
598
+ [talosLead] button,
599
+ [talosTrail] button,
600
+ [talosStart] button,
601
+ [talosEnd] button,
602
+ .talos-input-prefix button,
603
+ .talos-input-suffix button,
604
+ .talos-affix-element button,
605
+ .affix-interactive:is(button) {
606
+ display: inline-flex;
607
+ align-items: center;
608
+ justify-content: center;
609
+ box-sizing: border-box;
610
+ width: var(--talos-affix-btn-size, var(--talos-affix-btn-size-md, 1.5rem));
611
+ height: var(--talos-affix-btn-size, var(--talos-affix-btn-size-md, 1.5rem));
612
+ min-width: var(--talos-affix-btn-size, var(--talos-affix-btn-size-md, 1.5rem));
613
+ padding: 0;
614
+ margin: 0;
615
+ background: transparent;
616
+ border: none;
617
+ outline: none;
618
+ border-radius: var(--talos-affix-btn-radius, var(--talos-radius-sm, 0.25rem));
619
+ color: var(--talos-affix-btn-color, var(--talos-text-muted, #64748b));
620
+ cursor: pointer;
621
+ pointer-events: auto;
622
+ user-select: none;
623
+ line-height: 1;
624
+ flex-shrink: 0;
625
+ text-decoration: none;
626
+ font-size: var(--talos-affix-btn-icon-size, var(--talos-affix-btn-icon-size-md, 0.875rem));
627
+ transition: color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;
628
+
629
+ svg,
630
+ i,
631
+ [lucideIcon],
632
+ .lucide {
633
+ width: var(--talos-affix-btn-icon-size, var(--talos-affix-btn-icon-size-md, 0.875rem));
634
+ height: var(--talos-affix-btn-icon-size, var(--talos-affix-btn-icon-size-md, 0.875rem));
635
+ flex-shrink: 0;
636
+ stroke-width: 2;
637
+ }
638
+
639
+ &:hover:not(:disabled):not(.is-disabled) {
640
+ color: var(--talos-affix-btn-hover-color, var(--talos-text-color, #0f172a));
641
+ background-color: var(--talos-affix-btn-hover-bg, var(--talos-bg-subtle, rgba(148, 163, 184, 0.15)));
642
+ box-shadow: none;
643
+ }
644
+
645
+ &:active:not(:disabled):not(.is-disabled) {
646
+ background-color: var(--talos-affix-btn-active-bg, rgba(148, 163, 184, 0.25));
647
+ }
648
+
649
+ &:focus-visible:not(:disabled):not(.is-disabled) {
650
+ outline: none;
651
+ box-shadow: var(--talos-focus-ring, 0 0 0 2px rgba(37, 99, 235, 0.25));
652
+ }
653
+
654
+ &:disabled,
655
+ &.is-disabled {
656
+ opacity: 0.5;
657
+ cursor: not-allowed;
658
+ pointer-events: none;
659
+ }
660
+ }