itube-specs 0.0.918 → 0.0.920

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 (57) hide show
  1. package/assets/scss/themes/dark/_theme.scss +61 -0
  2. package/assets/scss/themes/light/_theme.scss +61 -0
  3. package/assets/scss/vars/_palette.scss +7 -0
  4. package/components/card/webcam/index.vue +703 -0
  5. package/components/card/webcam/languages.vue +122 -0
  6. package/components/filter/model.vue +56 -1
  7. package/components/grid/webcams.vue +78 -0
  8. package/components/player/core.vue +15 -1
  9. package/components/ui/switcher.vue +114 -0
  10. package/components/view/webcams.vue +370 -0
  11. package/components/webcam/counters.vue +113 -0
  12. package/components/webcam/header.vue +128 -0
  13. package/components/webcam/icon.vue +49 -0
  14. package/components/webcam/main.vue +101 -0
  15. package/components/webcam/stripcash-card.vue +77 -0
  16. package/composables/fetch/use-fetch-models-count.ts +20 -0
  17. package/composables/fetch/use-fetch-webcam-models.ts +45 -0
  18. package/composables/fetch/use-fetch-webcams.ts +51 -0
  19. package/composables/use-webcam-preview-slot.ts +44 -0
  20. package/lib/index.ts +1 -0
  21. package/lib/scheme/sort-webcams.ts +22 -0
  22. package/nuxt.config.ts +1 -0
  23. package/package.json +3 -2
  24. package/pages/webcams/[[tag]].vue +75 -0
  25. package/runtime/constants/webcams.ts +17 -0
  26. package/runtime/index.ts +1 -0
  27. package/server/api/models/count.get.ts +18 -0
  28. package/server/api/webcams/block.get.ts +49 -0
  29. package/server/api/webcams/list.post.ts +41 -0
  30. package/services/api/models.service.ts +20 -0
  31. package/services/api/webcams.service.ts +34 -0
  32. package/types/index.d.ts +7 -0
  33. package/types/stripcash-model.d.ts +55 -0
  34. package/types/switcher-item.d.ts +13 -0
  35. package/types/webcam-counts.d.ts +29 -0
  36. package/types/webcam-facet.d.ts +7 -0
  37. package/types/webcam-model.d.ts +36 -0
  38. package/types/webcam-models-response.d.ts +12 -0
  39. package/types/webcams-config.d.ts +14 -0
  40. package/utils/webcams/__tests__/adapters.test.ts +22 -0
  41. package/utils/webcams/__tests__/build-model-link.test.ts +29 -0
  42. package/utils/webcams/__tests__/count-filters.test.ts +12 -0
  43. package/utils/webcams/__tests__/goal-percent.test.ts +16 -0
  44. package/utils/webcams/__tests__/model-tags.test.ts +22 -0
  45. package/utils/webcams/__tests__/normalize-facets.test.ts +52 -0
  46. package/utils/webcams/__tests__/resolve-stream-preview.test.ts +35 -0
  47. package/utils/webcams/__tests__/to-filter-payload.test.ts +17 -0
  48. package/utils/webcams/adapters.ts +30 -0
  49. package/utils/webcams/build-model-link.ts +22 -0
  50. package/utils/webcams/count-filters.ts +14 -0
  51. package/utils/webcams/facets.ts +31 -0
  52. package/utils/webcams/goal-percent.ts +6 -0
  53. package/utils/webcams/lang-to-flag.ts +73 -0
  54. package/utils/webcams/model-tags.ts +24 -0
  55. package/utils/webcams/normalize-facets.ts +57 -0
  56. package/utils/webcams/resolve-stream-preview.ts +30 -0
  57. package/utils/webcams/to-filter-payload.ts +16 -0
@@ -1057,3 +1057,64 @@ $document-text: $color-zinc-400;
1057
1057
  $document-heading: $color-white;
1058
1058
  $document-link: $color-indigo-400;
1059
1059
  $document-link--hover: $color-indigo-300;
1060
+
1061
+ // ─── Вебкам-блок ───
1062
+ $webcam-icon-text: $color-white;
1063
+ $webcam-icon-bg: $color-white-10;
1064
+ $webcam-header-promo-text: $color-white;
1065
+ $webcam-header-promo-bg: $color-indigo-600;
1066
+ $webcam-header-promo-bg--hover: $color-indigo-500;
1067
+ $webcam-counters-text: $color-emerald-400;
1068
+ $webcam-counters-bg: $color-emerald-500-10;
1069
+ $webcam-counters-dot: $color-emerald-400;
1070
+ $webcam-counters-language-text: $color-zinc-300;
1071
+ $webcam-counters-language-bg: $color-zinc-800-70;
1072
+ $card-webcam-poster-bg: $color-zinc-800;
1073
+ $card-webcam-online-dot: $color-emerald-400;
1074
+ $card-webcam-online-ring: $color-black-42;
1075
+ $card-webcam-badge-text: $color-white-90;
1076
+ $card-webcam-badge-bg: $color-black-45;
1077
+ $card-webcam-badge-border: $color-white-25;
1078
+ $card-webcam-badge-shadow: $color-black-90;
1079
+ $card-webcam-goal-text: $color-white;
1080
+ $card-webcam-goal-label: $color-zinc-400;
1081
+ $card-webcam-goal-percent: $color-white-70;
1082
+ $card-webcam-goal-plain-text: $color-zinc-300;
1083
+ $card-webcam-goal-plain-percent: $color-zinc-400;
1084
+ $card-webcam-goal-track-bg: $color-white-15;
1085
+ $card-webcam-goal-fill-bg: $color-emerald-400;
1086
+ $card-webcam-goal-shade-from: $color-black-95;
1087
+ $card-webcam-goal-shade-via: $color-black-70;
1088
+ $card-webcam-name-text: $color-white;
1089
+ $card-webcam-name-text--hover: $color-indigo-300;
1090
+ $card-webcam-meta-text: $color-zinc-500;
1091
+ $card-webcam-meta-text--hover: $color-zinc-300;
1092
+ $card-webcam-tag-text: $color-zinc-300;
1093
+ $card-webcam-tag-bg: $color-zinc-800;
1094
+ $card-webcam-tag-text--hover: $color-white;
1095
+ $card-webcam-tag-bg--hover: $color-zinc-700;
1096
+ $page-webcams-divider: $color-zinc-700;
1097
+ $page-webcams-control-bg: $color-zinc-800-30;
1098
+ $page-webcams-control-border: $color-zinc-700-30;
1099
+ $page-webcams-control-text: $color-white;
1100
+
1101
+ // ─── Switcher ───
1102
+ $switcher-bg: $color-zinc-900-80;
1103
+ $switcher-border: $color-zinc-800;
1104
+ $switcher-text: $color-zinc-400;
1105
+ $switcher-text--hover: $color-white;
1106
+ $switcher-text--active: $color-white;
1107
+ $switcher-bg--active: $color-indigo-600;
1108
+ $switcher-icon: $color-zinc-500;
1109
+ $switcher-icon--active: $color-emerald-400;
1110
+ $switcher-subtitle: $color-zinc-600;
1111
+ $switcher-subtitle--active: $color-white-60;
1112
+
1113
+ // ─── Filter: сброс всех фильтров в облаке чипсов ───
1114
+ $filter-model-clear-text: $color-zinc-500;
1115
+ $filter-model-clear-text--hover: $color-white;
1116
+
1117
+ // ─── Вебкам-карточка (продолжение) ───
1118
+ $card-webcam-languages-border: $color-white-20;
1119
+ $card-webcam-languages-fallback-bg: $color-zinc-800;
1120
+ $card-webcam-languages-fallback-icon: $color-zinc-300;
@@ -1085,3 +1085,64 @@ $document-text: $color-gray-700;
1085
1085
  $document-heading: $color-gray-900;
1086
1086
  $document-link: $color-indigo-400;
1087
1087
  $document-link--hover: $color-indigo-300;
1088
+
1089
+ // ─── Вебкам-блок ───
1090
+ $webcam-icon-text: $color-gray-700;
1091
+ $webcam-icon-bg: $color-gray-200;
1092
+ $webcam-header-promo-text: $color-white;
1093
+ $webcam-header-promo-bg: $color-indigo-600;
1094
+ $webcam-header-promo-bg--hover: $color-indigo-500;
1095
+ $webcam-counters-text: $color-emerald-600;
1096
+ $webcam-counters-bg: $color-emerald-500-10;
1097
+ $webcam-counters-dot: $color-emerald-500;
1098
+ $webcam-counters-language-text: $color-gray-700;
1099
+ $webcam-counters-language-bg: $color-gray-200;
1100
+ $card-webcam-poster-bg: $color-gray-200;
1101
+ $card-webcam-online-dot: $color-emerald-500;
1102
+ $card-webcam-online-ring: $color-black-25;
1103
+ $card-webcam-badge-text: $color-white;
1104
+ $card-webcam-badge-bg: $color-black-45;
1105
+ $card-webcam-badge-border: $color-white-25;
1106
+ $card-webcam-badge-shadow: $color-black-90;
1107
+ $card-webcam-goal-text: $color-white;
1108
+ $card-webcam-goal-label: $color-gray-300;
1109
+ $card-webcam-goal-percent: $color-white-70;
1110
+ $card-webcam-goal-plain-text: $color-gray-700;
1111
+ $card-webcam-goal-plain-percent: $color-gray-500;
1112
+ $card-webcam-goal-track-bg: $color-white-15;
1113
+ $card-webcam-goal-fill-bg: $color-emerald-400;
1114
+ $card-webcam-goal-shade-from: $color-black-95;
1115
+ $card-webcam-goal-shade-via: $color-black-70;
1116
+ $card-webcam-name-text: $color-gray-950;
1117
+ $card-webcam-name-text--hover: $color-indigo-600;
1118
+ $card-webcam-meta-text: $color-gray-500;
1119
+ $card-webcam-meta-text--hover: $color-gray-700;
1120
+ $card-webcam-tag-text: $color-gray-700;
1121
+ $card-webcam-tag-bg: $color-gray-200;
1122
+ $card-webcam-tag-text--hover: $color-gray-950;
1123
+ $card-webcam-tag-bg--hover: $color-gray-300;
1124
+ $page-webcams-divider: $color-gray-300;
1125
+ $page-webcams-control-bg: $color-gray-100;
1126
+ $page-webcams-control-border: $color-gray-200;
1127
+ $page-webcams-control-text: $color-gray-950;
1128
+
1129
+ // ─── Switcher ───
1130
+ $switcher-bg: $color-gray-100;
1131
+ $switcher-border: $color-gray-200;
1132
+ $switcher-text: $color-gray-500;
1133
+ $switcher-text--hover: $color-gray-950;
1134
+ $switcher-text--active: $color-white;
1135
+ $switcher-bg--active: $color-indigo-600;
1136
+ $switcher-icon: $color-gray-500;
1137
+ $switcher-icon--active: $color-emerald-400;
1138
+ $switcher-subtitle: $color-gray-500;
1139
+ $switcher-subtitle--active: $color-white-60;
1140
+
1141
+ // ─── Filter: сброс всех фильтров в облаке чипсов ───
1142
+ $filter-model-clear-text: $color-gray-500;
1143
+ $filter-model-clear-text--hover: $color-gray-950;
1144
+
1145
+ // ─── Вебкам-карточка (продолжение) ───
1146
+ $card-webcam-languages-border: $color-gray-300;
1147
+ $card-webcam-languages-fallback-bg: $color-gray-200;
1148
+ $card-webcam-languages-fallback-icon: $color-gray-600;
@@ -5,6 +5,7 @@ $color-zinc-950-0: lab(2.51107% .242703 -.886115 / 0%); // zinc-950 / 0%
5
5
  $color-zinc-950-75: lab(2.51107% .242703 -.886115 / 75%); // zinc-950 / 75%
6
6
  $color-zinc-950-90: lab(2.51107% .242703 -.886115 / 90%); // zinc-950 / 90%
7
7
  $color-zinc-900: lab(8.30603% .618205 -2.16572); // #18181b
8
+ $color-zinc-900-80: lab(8.30603% .618205 -2.16572 / 80%);
8
9
  $color-zinc-900-70: lab(8.30603% .618205 -2.16572 / 70%); // zinc-900 / 70%
9
10
  $color-zinc-900-60: lab(8.30603% .618205 -2.16572 / 60%); // zinc-900 / 60%
10
11
  $color-zinc-900-50: lab(8.30603% .618205 -2.16572 / 50%); // #18181b
@@ -59,6 +60,7 @@ $color-indigo-500-20: lab(48.295% 38.3129 -81.9673 / 20%);
59
60
  $color-indigo-500-40: lab(48.295% 38.3129 -81.9673 / 40%);
60
61
  $color-indigo-500-50: lab(48.295% 38.3129 -81.9673 / 50%);
61
62
  $color-indigo-600: lab(38.4009% 52.6132 -92.3857); // #4f39f6
63
+ $color-indigo-600-10: lab(38.4009% 52.6132 -92.3857 / 10%);
62
64
  $color-indigo-600-20: lab(38.4009% 52.6132 -92.3857 / 20%);
63
65
  $color-indigo-600-90: lab(38.4009% 52.6132 -92.3857 / 90%);
64
66
  $color-indigo-700: lab(32.4486% 49.2217 -84.6695); // #432dd7
@@ -99,6 +101,7 @@ $mono-white-5: lab(100% 0 0 / 5%);
99
101
 
100
102
  // $color- duplicates of the mono-black/mono-white opacity scale
101
103
  $color-black-100: lab(0% 0 0);
104
+ $color-black-90: lab(0% 0 0 / 90%);
102
105
  $color-black-95: lab(0% 0 0 / 95%);
103
106
  $color-black-75: lab(0% 0 0 / 75%);
104
107
  $color-black-70: lab(0% 0 0 / 70%);
@@ -113,11 +116,13 @@ $color-black-10: lab(0% 0 0 / 10%);
113
116
  $color-black-5: lab(0% 0 0 / 5%);
114
117
  $color-white-100: lab(100% 0 0);
115
118
  $color-white-90: lab(100% 0 0 / 90%);
119
+ $color-white-70: lab(100% 0 0 / 70%);
116
120
  $color-white-75: lab(100% 0 0 / 75%);
117
121
  $color-white-60: lab(100% 0 0 / 60%);
118
122
  $color-white-50: lab(100% 0 0 / 50%);
119
123
  $color-white-45: lab(100% 0 0 / 45%);
120
124
  $color-white-25: lab(100% 0 0 / 25%);
125
+ $color-white-15: lab(100% 0 0 / 15%);
121
126
  $color-white-20: lab(100% 0 0 / 20%);
122
127
  $color-white-10: lab(100% 0 0 / 10%);
123
128
  $color-white-5: lab(100% 0 0 / 5%);
@@ -138,6 +143,8 @@ $color-red-900-50: color-mix(in oklab, #{$color-red-900} 50%, transparent);
138
143
  $color-red-925: color-mix(in oklab, #{$color-red-900} 90%, #{$color-black});
139
144
  $color-red-950: lab(13.003% 29.04 16.7519);
140
145
  $color-emerald-400: lab(75.0771% -60.7313 19.4147);
146
+ $color-emerald-500-10: lab(66.9756% -58.27 19.5419 / 10%);
147
+ $color-emerald-500-20: lab(66.9756% -58.27 19.5419 / 20%);
141
148
  $color-emerald-500: lab(66.9756% -58.27 19.5419);
142
149
  $color-emerald-600: lab(55.0481% -49.9246 15.93);
143
150
  $color-amber-400: lab(80.1641% 16.6016 99.2089);