@omnisass/library 0.2.0 → 2026.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.editorconfig +13 -0
  2. package/.omnisass/scripts/bump-version.sh +288 -0
  3. package/.sassdoc.yaml +21 -0
  4. package/.vscode/settings.json +17 -0
  5. package/_configs.scss +10 -45
  6. package/index.scss +5 -91
  7. package/modules/utilities/converters/_convert-em2px.scss +3 -49
  8. package/modules/utilities/converters/_convert-hex2rgb.scss +2 -44
  9. package/modules/utilities/converters/_convert-hex2rgba.scss +2 -57
  10. package/modules/utilities/converters/_convert-px2em.scss +3 -62
  11. package/modules/utilities/converters/_convert-px2rem.scss +3 -62
  12. package/modules/utilities/converters/_convert-rem2px.scss +3 -62
  13. package/modules/utilities/converters/_index.scss +10 -0
  14. package/modules/utilities/getters/_index.scss +23 -0
  15. package/modules/utilities/getters/color/_get-color-brightness.scss +2 -48
  16. package/modules/utilities/getters/color/_get-color-darkest.scss +13 -68
  17. package/modules/utilities/getters/list/_get-list-item-end.scss +2 -29
  18. package/modules/utilities/getters/list/_get-list-item-start.scss +2 -29
  19. package/modules/utilities/getters/list/_get-list-item.scss +6 -82
  20. package/modules/utilities/getters/number/_get-number-from-percent.scss +2 -40
  21. package/modules/utilities/getters/number/_get-number-height-by-ratio.scss +3 -35
  22. package/modules/utilities/getters/number/_get-number-max-safe.scss +112 -0
  23. package/modules/utilities/getters/number/_get-number-max.scss +10 -88
  24. package/modules/utilities/getters/number/_get-number-min-safe.scss +114 -0
  25. package/modules/utilities/getters/number/_get-number-min.scss +9 -84
  26. package/modules/utilities/getters/number/_get-number-percentage-of.scss +2 -58
  27. package/modules/utilities/getters/number/_get-number-unit.scss +5 -46
  28. package/modules/utilities/getters/number/_get-number-width-by-ratio.scss +3 -56
  29. package/modules/utilities/helpers/_index.scss +44 -0
  30. package/modules/utilities/helpers/color/_color-blend-steps.scss +5 -89
  31. package/modules/utilities/helpers/color/_color-blend.scss +11 -85
  32. package/modules/utilities/helpers/color/_color-hue-shift.scss +7 -61
  33. package/modules/utilities/helpers/color/_color-scale.scss +7 -74
  34. package/modules/utilities/helpers/color/_color-shade.scss +2 -60
  35. package/modules/utilities/helpers/color/_color-tint.scss +2 -60
  36. package/modules/utilities/helpers/color/_color-triad.scss +9 -53
  37. package/modules/utilities/helpers/list/_list-dedupe.scss +9 -50
  38. package/modules/utilities/helpers/list/_list-insert-at.scss +16 -86
  39. package/modules/utilities/helpers/list/_list-merge.scss +1 -1
  40. package/modules/utilities/helpers/list/_list-remove-at.scss +9 -71
  41. package/modules/utilities/helpers/list/_list-sum-numbers-safe.scss +17 -81
  42. package/modules/utilities/helpers/list/_list-sum-numbers.scss +9 -57
  43. package/modules/utilities/helpers/number/_number-ceil-to.scss +1 -1
  44. package/modules/utilities/helpers/number/_number-clamp-max.scss +1 -1
  45. package/modules/utilities/helpers/number/_number-clamp-min.scss +1 -1
  46. package/modules/utilities/helpers/number/_number-clamp.scss +1 -1
  47. package/modules/utilities/helpers/number/_number-denormalize.scss +1 -1
  48. package/modules/utilities/helpers/number/_number-fibonacci.scss +2 -2
  49. package/modules/utilities/helpers/number/_number-floor-to.scss +1 -1
  50. package/modules/utilities/helpers/number/_number-format-with-separator.scss +4 -4
  51. package/modules/utilities/helpers/number/_number-normalize.scss +1 -1
  52. package/modules/utilities/helpers/number/_number-random-between-int.scss +1 -1
  53. package/modules/utilities/helpers/number/_number-random-between.scss +1 -1
  54. package/modules/utilities/helpers/number/_number-range.scss +7 -7
  55. package/modules/utilities/helpers/number/_number-round-to-nearest.scss +1 -1
  56. package/modules/utilities/helpers/number/_number-round-to.scss +1 -1
  57. package/modules/utilities/helpers/number/_number-strip-unit.scss +2 -14
  58. package/modules/utilities/helpers/string/_string-capitalize.scss +1 -1
  59. package/modules/utilities/helpers/string/_string-replace.scss +1 -1
  60. package/modules/utilities/helpers/string/_string-trim-end.scss +2 -2
  61. package/modules/utilities/helpers/string/_string-trim-start.scss +2 -2
  62. package/modules/utilities/helpers/string/_string-trim.scss +1 -1
  63. package/modules/utilities/loggers/_index.scss +6 -0
  64. package/modules/utilities/validators/_index.scss +38 -0
  65. package/modules/utilities/validators/{misc/_is-time.scss → _is-time.scss} +2 -2
  66. package/modules/utilities/validators/color/_is-color-light.scss +1 -1
  67. package/modules/utilities/validators/color/_is-color-list.scss +1 -1
  68. package/modules/utilities/validators/list/_is-list-contained.scss +1 -1
  69. package/modules/utilities/validators/number/_is-int-even.scss +1 -1
  70. package/modules/utilities/validators/number/_is-int-odd.scss +1 -1
  71. package/modules/utilities/validators/number/_is-int.scss +1 -1
  72. package/modules/utilities/validators/number/_is-number-has-unit.scss +1 -1
  73. package/modules/utilities/validators/number/_is-number-negative.scss +1 -1
  74. package/modules/utilities/validators/number/_is-number-positive.scss +1 -1
  75. package/modules/utilities/validators/number/_is-number-unitless.scss +1 -1
  76. package/modules/utilities/validators/number/_is-number-zero.scss +1 -1
  77. package/modules/utilities/validators/string/_is-string-contained.scss +25 -25
  78. package/modules/utilities/validators/string/_is-string-empty.scss +1 -1
  79. package/modules/utilities/validators/string/_is-string-ending-with.scss +1 -1
  80. package/modules/utilities/validators/string/_is-string-starting-with.scss +1 -1
  81. package/modules/utilities/validators/type-of/_is-boolean.scss +1 -1
  82. package/modules/utilities/validators/type-of/_is-color.scss +1 -1
  83. package/modules/utilities/validators/type-of/_is-list.scss +1 -1
  84. package/modules/utilities/validators/type-of/_is-map.scss +1 -1
  85. package/modules/utilities/validators/type-of/_is-number.scss +1 -1
  86. package/modules/utilities/validators/type-of/_is-string.scss +1 -1
  87. package/modules/utilities/validators/type-of/_is-type.scss +1 -1
  88. package/package.json +5 -6
  89. package/package.scss +3 -3
  90. package/playground/index.scss +8 -0
  91. package/modules/utilities/converters/_convert-camel2kebab.scss +0 -186
  92. package/modules/utilities/converters/_convert-kebab2camel.scss +0 -232
  93. package/modules/utilities/converters/_convert-kebab2snake.scss +0 -118
  94. package/modules/utilities/converters/_convert-snake2kebab.scss +0 -173
  95. package/modules/utilities/helpers/misc/_url-encode.configs.scss +0 -64
  96. package/modules/utilities/helpers/misc/_url-encode.scss +0 -148
  97. package/modules/utilities/loggers/_log-invalid-type.scss +0 -151
  98. package/modules/utilities/loggers/_log-invalid-value.scss +0 -151
  99. package/test.md +0 -168
  100. package/test.scss +0 -405
  101. package/test.sh +0 -149
package/.editorconfig ADDED
@@ -0,0 +1,13 @@
1
+ root = true
2
+
3
+ [*]
4
+ end_of_line = lf
5
+ insert_final_newline = true
6
+ indent_style = tab
7
+ tab_width = 2
8
+ charset = utf-8
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.{yml,yaml,md}]
12
+ indent_style = space
13
+ indent_size = 2
@@ -0,0 +1,288 @@
1
+ #!/bin/bash
2
+
3
+ # Файлы для обновления
4
+ PACKAGE_JSON="package.json"
5
+ PACKAGE_SCSS="package.scss"
6
+
7
+ # Цвета для вывода
8
+ RED='\033[0;31m'
9
+ GREEN='\033[0;32m'
10
+ YELLOW='\033[1;33m'
11
+ BLUE='\033[0;34m'
12
+ PURPLE='\033[0;35m'
13
+ CYAN='\033[0;36m'
14
+ NC='\033[0m' # No Color
15
+
16
+ # Проверяем существование файлов
17
+ if [ ! -f "$PACKAGE_JSON" ]; then
18
+ echo -e "${RED}❌ Ошибка: Файл $PACKAGE_JSON не найден!${NC}"
19
+ exit 1
20
+ fi
21
+
22
+ if [ ! -f "$PACKAGE_SCSS" ]; then
23
+ echo -e "${RED}❌ Ошибка: Файл $PACKAGE_SCSS не найден!${NC}"
24
+ exit 1
25
+ fi
26
+
27
+ # Функции для получения версий из разных файлов
28
+ get_json_version() {
29
+ local file="$1"
30
+ if [ -f "$file" ]; then
31
+ # Ищем строку с version в package.json
32
+ local version=$(grep -o '"version": "[^"]*"' "$file" | head -1 | cut -d'"' -f4)
33
+ echo "$version"
34
+ else
35
+ echo ""
36
+ fi
37
+ }
38
+
39
+ get_scss_version() {
40
+ local file="$1"
41
+ if [ -f "$file" ]; then
42
+ # Ищем строку с $version в SCSS файле (поддерживает разные форматы)
43
+ local version=$(grep -o '\$version:\s*"[^"]*"' "$file" | head -1 | sed -E 's/\$version:\s*"([^"]*)"/\1/')
44
+ if [ -z "$version" ]; then
45
+ # Пробуем другой формат (с одинарными кавычками)
46
+ version=$(grep -o "\$version:\s*'[^']*'" "$file" | head -1 | sed -E "s/\$version:\s*'([^']*)'/\1/")
47
+ fi
48
+ echo "$version"
49
+ else
50
+ echo ""
51
+ fi
52
+ }
53
+
54
+ # Получаем текущие версии из файлов
55
+ JSON_VERSION=$(get_json_version "$PACKAGE_JSON")
56
+ SCSS_VERSION=$(get_scss_version "$PACKAGE_SCSS")
57
+
58
+ echo -e "${BLUE}🚀 Скрипт обновления версии проекта${NC}"
59
+ echo -e "${BLUE} ================================${NC}"
60
+
61
+ # Получаем текущую дату для автоматической части версии
62
+ CURRENT_YEAR=$(date +%Y)
63
+ CURRENT_MONTH=$(date +%m)
64
+ BASE_VERSION="$CURRENT_YEAR.$CURRENT_MONTH"
65
+
66
+ echo -e " Автоматическая часть версии: ${YELLOW}$BASE_VERSION${NC}"
67
+ echo ""
68
+
69
+ echo -e "${GREEN}📦 Текущие версии в файлах:${NC}"
70
+ echo -e "└─ ${CYAN}package.json${NC}: ${YELLOW}$JSON_VERSION${NC}"
71
+ echo -e "└─ ${CYAN}package.scss${NC}: ${YELLOW}$SCSS_VERSION${NC}"
72
+ echo ""
73
+
74
+ # Проверяем, совпадают ли версии в файлах
75
+ if [ "$JSON_VERSION" != "$SCSS_VERSION" ]; then
76
+ echo -e "${YELLOW}⚠️ Внимание: Версии в файлах не совпадают!${NC}"
77
+ echo -e "${PURPLE} Предлагаю использовать версию из package.json как основную${NC}"
78
+ echo ""
79
+ fi
80
+
81
+ # Используем версию из package.json как основную для анализа
82
+ CURRENT_VERSION="$JSON_VERSION"
83
+ if [ -z "$CURRENT_VERSION" ]; then
84
+ CURRENT_VERSION="$SCSS_VERSION"
85
+ fi
86
+
87
+ if [ -z "$CURRENT_VERSION" ]; then
88
+ echo -e "${RED}❌ Ошибка: Не удалось определить текущую версию!${NC}"
89
+ exit 1
90
+ fi
91
+
92
+ echo -e "${GREEN}🔍 Анализ текущей версии:${NC} ${YELLOW}$CURRENT_VERSION${NC}"
93
+
94
+ # Извлекаем компоненты текущей версии
95
+ if [[ $CURRENT_VERSION =~ ^([0-9]{4}\.[0-9]{2})\.([0-9]+)(-(alpha|beta|rc)\.([0-9]+))?$ ]]; then
96
+ OLD_BASE=${BASH_REMATCH[1]}
97
+ OLD_PATCH=${BASH_REMATCH[2]}
98
+ OLD_TYPE=${BASH_REMATCH[4]}
99
+ OLD_TYPE_NUM=${BASH_REMATCH[5]}
100
+
101
+ echo -e "${CYAN} Разбор версии:${NC}"
102
+ echo -e " ├─ Базовая часть: ${PURPLE}$OLD_BASE${NC} (автоназначение)"
103
+ echo -e " ├─ Патч: ${PURPLE}$OLD_PATCH${NC}"
104
+
105
+ if [ -n "$OLD_TYPE" ]; then
106
+ echo -e " ├─ Тип: ${PURPLE}$OLD_TYPE${NC}"
107
+ echo -e " └─ Номер типа: ${PURPLE}$OLD_TYPE_NUM${NC}"
108
+ else
109
+ echo -e " └─ Тип: ${PURPLE}release${NC}"
110
+ fi
111
+
112
+ echo -e ""
113
+
114
+ # Предлагаем следующий патч
115
+ if [ "$OLD_BASE" == "$BASE_VERSION" ]; then
116
+ SUGGESTED_PATCH=$((OLD_PATCH + 1))
117
+ echo -e "${GREEN}📅 Следующий патч в текущем месяце: $SUGGESTED_PATCH${NC}"
118
+ else
119
+ SUGGESTED_PATCH=1
120
+ echo -e "${GREEN}🗓️ Новый месяц, начинаем с патча: $SUGGESTED_PATCH${NC}"
121
+ fi
122
+ else
123
+ echo -e "${YELLOW}⚠️ Не удалось разобрать текущую версию${NC}"
124
+ SUGGESTED_PATCH=1
125
+ fi
126
+
127
+ echo ""
128
+
129
+ # Запрашиваем номер патча
130
+ read -p "🩹 Введите номер патча [${SUGGESTED_PATCH}]: " PATCH_NUMBER
131
+ PATCH_NUMBER=${PATCH_NUMBER:-$SUGGESTED_PATCH}
132
+
133
+ # Проверяем корректность введенного патча
134
+ if ! [[ "$PATCH_NUMBER" =~ ^[0-9]+$ ]]; then
135
+ echo -e "${RED}❌ Ошибка: Номер патча должен быть числом!${NC}"
136
+ exit 1
137
+ fi
138
+
139
+ # Запрашиваем тип версии
140
+ echo ""
141
+ echo -e "${CYAN}📋 Типы версий:${NC}"
142
+ echo -e "└─ ${GREEN}1) alpha${NC} - альфа-версия для внутреннего тестирования"
143
+ echo -e "└─ ${GREEN}2) beta${NC} - бета-версия для ограниченного круга тестировщиков"
144
+ echo -e "└─ ${GREEN}3) rc${NC} - release candidate (кандидат на релиз)"
145
+ echo -e "└─ ${GREEN}4) release${NC} - финальный релиз (без суффикса)"
146
+ echo ""
147
+
148
+ while true; do
149
+ read -p "🎯 Выберите тип версии (1-4) [4]: " VERSION_TYPE
150
+ VERSION_TYPE=${VERSION_TYPE:-4}
151
+
152
+ case $VERSION_TYPE in
153
+ 1)
154
+ TYPE="alpha"
155
+ read -p "🔢 Введите номер $TYPE-версии [1]: " TYPE_NUMBER
156
+ TYPE_NUMBER=${TYPE_NUMBER:-1}
157
+ if ! [[ "$TYPE_NUMBER" =~ ^[0-9]+$ ]]; then
158
+ echo -e "${RED}❌ Ошибка: Номер $TYPE-версии должен быть числом!${NC}"
159
+ continue
160
+ fi
161
+ VERSION="$BASE_VERSION.$PATCH_NUMBER-$TYPE.$TYPE_NUMBER"
162
+ break
163
+ ;;
164
+ 2)
165
+ TYPE="beta"
166
+ read -p "🔢 Введите номер $TYPE-версии [1]: " TYPE_NUMBER
167
+ TYPE_NUMBER=${TYPE_NUMBER:-1}
168
+ if ! [[ "$TYPE_NUMBER" =~ ^[0-9]+$ ]]; then
169
+ echo -e "${RED}❌ Ошибка: Номер $TYPE-версии должен быть числом!${NC}"
170
+ continue
171
+ fi
172
+ VERSION="$BASE_VERSION.$PATCH_NUMBER-$TYPE.$TYPE_NUMBER"
173
+ break
174
+ ;;
175
+ 3)
176
+ TYPE="rc"
177
+ read -p "🔢 Введите номер $TYPE-версии [1]: " TYPE_NUMBER
178
+ TYPE_NUMBER=${TYPE_NUMBER:-1}
179
+ if ! [[ "$TYPE_NUMBER" =~ ^[0-9]+$ ]]; then
180
+ echo -e "${RED}❌ Ошибка: Номер $TYPE-версии должен быть числом!${NC}"
181
+ continue
182
+ fi
183
+ VERSION="$BASE_VERSION.$PATCH_NUMBER-$TYPE.$TYPE_NUMBER"
184
+ break
185
+ ;;
186
+ 4)
187
+ VERSION="$BASE_VERSION.$PATCH_NUMBER"
188
+ echo -e "${GREEN}ℹ️ Выбрана release версия${NC}"
189
+ break
190
+ ;;
191
+ *)
192
+ echo -e "${RED}❌ Неверный выбор! Введите число от 1 до 4${NC}"
193
+ ;;
194
+ esac
195
+ done
196
+
197
+ # Финальное подтверждение
198
+ echo ""
199
+ echo -e "${BLUE}📋 План обновления:${NC}"
200
+ echo -e "└─ ${CYAN}package.json:${NC} ${YELLOW}$JSON_VERSION${NC} → ${GREEN}$VERSION${NC}"
201
+ echo -e "└─ ${CYAN}package.scss:${NC} ${YELLOW}$SCSS_VERSION${NC} → ${GREEN}$VERSION${NC}"
202
+ echo ""
203
+
204
+ read -p "✅ Всё верно? Обновить версию? (y/N): " CONFIRM
205
+
206
+ if [[ $CONFIRM != "y" && $CONFIRM != "Y" ]]; then
207
+ echo -e "${RED}❌ Обновление отменено${NC}"
208
+ exit 0
209
+ fi
210
+
211
+ # Функция для обновления версии в файле
212
+ update_version_in_file() {
213
+ local file=$1
214
+ local pattern=$2
215
+ local new_version=$3
216
+ local file_type=$4
217
+
218
+ echo -e "${CYAN}♻️ Обновление $file_type...${NC}"
219
+
220
+ if [[ "$OSTYPE" == "darwin"* ]]; then
221
+ # macOS
222
+ if [ "$file_type" == "SCSS" ]; then
223
+ # Для SCSS файлов
224
+ sed -i '' "s/\$version:[[:space:]]*\"[^\"]*\"/\$version: \"$new_version\"/g" "$file"
225
+ # Проверяем одинарные кавычки
226
+ sed -i '' "s/\$version:[[:space:]]*'[^']*'/\$version: '$new_version'/g" "$file"
227
+ else
228
+ # Для JSON файлов
229
+ sed -i '' "s/\"version\":[[:space:]]*\"[^\"]*\"/\"version\": \"$new_version\"/g" "$file"
230
+ fi
231
+ else
232
+ # Linux
233
+ if [ "$file_type" == "SCSS" ]; then
234
+ # Для SCSS файлов
235
+ sed -i "s/\$version:[[:space:]]*\"[^\"]*\"/\$version: \"$new_version\"/g" "$file"
236
+ # Проверяем одинарные кавычки
237
+ sed -i "s/\$version:[[:space:]]*'[^']*'/\$version: '$new_version'/g" "$file"
238
+ else
239
+ # Для JSON файлов
240
+ sed -i "s/\"version\":[[:space:]]*\"[^\"]*\"/\"version\": \"$new_version\"/g" "$file"
241
+ fi
242
+ fi
243
+ }
244
+
245
+ # Обновление версий
246
+ echo ""
247
+ echo -e "${BLUE}🔄 Начинаю обновление...${NC}"
248
+
249
+ # Обновляем package.json
250
+ update_version_in_file "$PACKAGE_JSON" '"version"' "$VERSION" "JSON"
251
+
252
+ # Обновляем package.scss
253
+ update_version_in_file "$PACKAGE_SCSS" '\$version' "$VERSION" "SCSS"
254
+
255
+ # Получаем обновленные версии для проверки
256
+ NEW_JSON_VERSION=$(get_json_version "$PACKAGE_JSON")
257
+ NEW_SCSS_VERSION=$(get_scss_version "$PACKAGE_SCSS")
258
+
259
+ echo ""
260
+ echo -e "${GREEN}🎉 Версия успешно обновлена!${NC}"
261
+ echo -e "${BLUE}📊 Итоговые версии:${NC}"
262
+ echo -e "└─ package.json: ${YELLOW}$NEW_JSON_VERSION${NC}"
263
+ echo -e "└─ package.scss: ${YELLOW}$NEW_SCSS_VERSION${NC}"
264
+
265
+ # Проверяем, что версии совпадают
266
+ if [ "$NEW_JSON_VERSION" == "$NEW_SCSS_VERSION" ] && [ "$NEW_JSON_VERSION" == "$VERSION" ]; then
267
+ echo ""
268
+ echo -e "${GREEN}✅ Все версии успешно синхронизированы!${NC}"
269
+ echo -e " OmniSass $VERSION готова к публикации."
270
+ else
271
+ echo ""
272
+ echo -e "${YELLOW}⚠️ Внимание: Версии в файлах не совпадают после обновления!${NC}"
273
+ echo -e "${RED} Требуется ручная проверка файлов.${NC}"
274
+ fi
275
+
276
+ echo ""
277
+
278
+ read -p "📤 Зафиксировать коммит (y/N): " COMMIT_CONFIRM
279
+
280
+ if [[ $COMMIT_CONFIRM != "y" && $COMMIT_CONFIRM != "Y" ]]; then
281
+ echo -e "${RED}❌ Фиксация коммита отменена.${NC}"
282
+ exit 0
283
+ fi
284
+
285
+ git add .
286
+ git commit -m "feat: повысил версию пакета до $VERSION"
287
+
288
+ echo "✅ Коммит зафиксирован!"
package/.sassdoc.yaml ADDED
@@ -0,0 +1,21 @@
1
+ dest: ./sassdoc
2
+ theme: default
3
+ package: ./package.json
4
+ display:
5
+ access:
6
+ - public
7
+ - private
8
+ alias: false
9
+ exclude:
10
+ - ./package.scss
11
+ groups:
12
+ undefined: Базовые функции
13
+ package: OmniSass / Информация о библиотеке
14
+ libconf: OmniSass / Настройки библиотеки
15
+ utilities-aliases: Утилиты / Алиасы функций
16
+ utilities-helpers: Утилиты / Вспомогательные функции
17
+ utilities-validators: Утилиты / Функции для валидации значений
18
+ utilities-converters: Утилиты / Конверторы значений
19
+ utilities-getters: Утилиты / Функции для получения значений
20
+ utilities-setters: Утилиты / Функции для установки значений
21
+ utilities-loggers: Утилиты / Функции для логгирования
@@ -0,0 +1,17 @@
1
+ {
2
+ "files.exclude": {
3
+ ".codeassistant": false,
4
+ ".omnisass": false,
5
+ ".vscode": false,
6
+ "package-lock.json": false,
7
+ "LICENSE": false,
8
+ ".sassdoc.yaml": false,
9
+ ".npmignore": false,
10
+ ".gitignore": false,
11
+ ".editorconfig": false,
12
+ "node_modules": false,
13
+ "README.md": false,
14
+ "sassdoc": false,
15
+ ".sourcecraft": false
16
+ }
17
+ }
package/_configs.scss CHANGED
@@ -9,60 +9,25 @@
9
9
  /// осуществлять тонкую настройку отдельных модулей.
10
10
  ///
11
11
  /// При использовании этого модуля пространство имён для этих
12
- /// конфигов рекомендуется указывать как `libconfigs`.
12
+ /// конфигов рекомендуется указывать как `libconf`.
13
13
  /// ---
14
- /// @group libconfigs
14
+ /// @group libconf
15
15
  ////
16
16
 
17
- /// Включает или выключает строгий режим компиляции OmniSass.
18
- ///
19
- /// Когда строгий режим включен (`true`), компилятор будет
20
- /// выбрасывать ошибки при использовании устаревших функций,
21
- /// нерекомендуемых практик или потенциально проблемных
22
- /// конструкций. Это помогает писать более чистый и совместимый
23
- /// код.
24
- /// ---
17
+ /// @todo Дописать комментарий
25
18
  /// @name set-strict-mode
26
19
  /// @access public
27
- /// @example scss Отключение режима
28
- /// @use 'omnisass' as libomnisass with (
29
- /// $set-strict-mode: false
30
- /// );
31
20
  /// @type Boolean
32
21
  $set-strict-mode: true !default;
33
22
 
34
- /// RUSSIAN:
35
- /// Устанавливает язык для системных сообщений и логов
36
- /// компилятора.
37
- ///
38
- /// Определяет язык, на котором будут выводиться предупреждения,
39
- /// ошибки и другие системные сообщения во время компиляции
40
- /// Sass-кода. Поддерживаемые значения: 'ru' (русский), 'en'
41
- /// (английский).
42
- ///
43
- /// > Наличие новых языков можно проверить в документации.
44
- ///
45
- /// ENGLISH:
46
- /// Sets the language for system messages and compiler logs.
47
- ///
48
- /// Defines the language in which warnings, errors, and other
49
- /// system messages will be displayed during compilation of
50
- /// the Sass code. Supported values: 'ru' (Russian), 'en'
51
- /// (English).
52
- ///
53
- /// > The availability of new languages can be checked in the
54
- /// > documentation.
55
- /// ---
56
- /// @name set-loglang
57
- /// @access public
58
- /// @example scss Отключение режима
59
- /// @use 'omnisass' as libomnisass with (
60
- /// $set-loglang: 'en'
61
- /// );
62
- /// @type String
63
- $set-loglang: 'ru' !default;
64
-
23
+ /// @todo Дописать комментарий
65
24
  /// @name set-fingerprint
66
25
  /// @access public
67
26
  /// @type Boolean
68
27
  $set-fingerprint: true !default;
28
+
29
+ /// @todo Дописать комментарий
30
+ /// @name set-loglang
31
+ /// @access public
32
+ /// @type String
33
+ $set-loglang: 'ru' !default;
package/index.scss CHANGED
@@ -1,95 +1,9 @@
1
1
  @charset "UTF-8";
2
2
 
3
- @forward 'configs';
4
3
  @forward 'package';
4
+ @forward 'configs';
5
5
 
6
- /// Converters
7
- @forward 'modules/utilities/converters/convert-camel2kebab';
8
- @forward 'modules/utilities/converters/convert-em2px';
9
- @forward 'modules/utilities/converters/convert-hex2rgb';
10
- @forward 'modules/utilities/converters/convert-hex2rgba';
11
- @forward 'modules/utilities/converters/convert-kebab2camel';
12
- @forward 'modules/utilities/converters/convert-kebab2snake';
13
- @forward 'modules/utilities/converters/convert-px2em';
14
- @forward 'modules/utilities/converters/convert-px2rem';
15
- @forward 'modules/utilities/converters/convert-rem2px';
16
- @forward 'modules/utilities/converters/convert-snake2kebab';
17
-
18
- // Getters
19
- @forward 'modules/utilities/getters/color/get-color-brightness';
20
- @forward 'modules/utilities/getters/color/get-color-darkest';
21
- @forward 'modules/utilities/getters/list/get-list-item';
22
- @forward 'modules/utilities/getters/list/get-list-item-end';
23
- @forward 'modules/utilities/getters/list/get-list-item-start';
24
- @forward 'modules/utilities/getters/number/get-number-from-percent';
25
- @forward 'modules/utilities/getters/number/get-number-height-by-ratio';
26
- @forward 'modules/utilities/getters/number/get-number-max';
27
- @forward 'modules/utilities/getters/number/get-number-min';
28
- @forward 'modules/utilities/getters/number/get-number-percentage-of';
29
- @forward 'modules/utilities/getters/number/get-number-unit';
30
- @forward 'modules/utilities/getters/number/get-number-width-by-ratio';
31
-
32
- // Helpers
33
- @forward 'modules/utilities/helpers/color/color-blend';
34
- @forward 'modules/utilities/helpers/color/color-blend-steps';
35
- @forward 'modules/utilities/helpers/color/color-hue-shift';
36
- @forward 'modules/utilities/helpers/color/color-scale';
37
- @forward 'modules/utilities/helpers/color/color-shade';
38
- @forward 'modules/utilities/helpers/color/color-tint';
39
- @forward 'modules/utilities/helpers/color/color-triad';
40
- @forward 'modules/utilities/helpers/list/list-dedupe';
41
- @forward 'modules/utilities/helpers/list/list-insert-at';
42
- @forward 'modules/utilities/helpers/list/list-merge';
43
- @forward 'modules/utilities/helpers/list/list-remove-at';
44
- @forward 'modules/utilities/helpers/list/list-sum-numbers';
45
- @forward 'modules/utilities/helpers/list/list-sum-numbers-safe';
46
- @forward 'modules/utilities/helpers/misc/url-encode';
47
- @forward 'modules/utilities/helpers/number/number-ceil-to';
48
- @forward 'modules/utilities/helpers/number/number-clamp';
49
- @forward 'modules/utilities/helpers/number/number-clamp-max';
50
- @forward 'modules/utilities/helpers/number/number-clamp-min';
51
- @forward 'modules/utilities/helpers/number/number-denormalize';
52
- @forward 'modules/utilities/helpers/number/number-fibonacci';
53
- @forward 'modules/utilities/helpers/number/number-floor-to';
54
- @forward 'modules/utilities/helpers/number/number-format-with-separator';
55
- @forward 'modules/utilities/helpers/number/number-normalize';
56
- @forward 'modules/utilities/helpers/number/number-random-between';
57
- @forward 'modules/utilities/helpers/number/number-random-between-int';
58
- @forward 'modules/utilities/helpers/number/number-range';
59
- @forward 'modules/utilities/helpers/number/number-round-to';
60
- @forward 'modules/utilities/helpers/number/number-round-to-nearest';
61
- @forward 'modules/utilities/helpers/number/number-strip-unit';
62
- @forward 'modules/utilities/helpers/string/string-capitalize';
63
- @forward 'modules/utilities/helpers/string/string-replace';
64
- @forward 'modules/utilities/helpers/string/string-trim';
65
- @forward 'modules/utilities/helpers/string/string-trim-end';
66
- @forward 'modules/utilities/helpers/string/string-trim-start';
67
-
68
- // Loggers
69
- @forward 'modules/utilities/loggers/log-invalid-type';
70
- @forward 'modules/utilities/loggers/log-invalid-value';
71
-
72
- // Validators
73
- @forward 'modules/utilities/validators/color/is-color-light';
74
- @forward 'modules/utilities/validators/color/is-color-list';
75
- @forward 'modules/utilities/validators/list/is-list-contained';
76
- @forward 'modules/utilities/validators/misc/is-time';
77
- @forward 'modules/utilities/validators/number/is-int';
78
- @forward 'modules/utilities/validators/number/is-int-even';
79
- @forward 'modules/utilities/validators/number/is-int-odd';
80
- @forward 'modules/utilities/validators/number/is-number-has-unit';
81
- @forward 'modules/utilities/validators/number/is-number-negative';
82
- @forward 'modules/utilities/validators/number/is-number-positive';
83
- @forward 'modules/utilities/validators/number/is-number-unitless';
84
- @forward 'modules/utilities/validators/number/is-number-zero';
85
- @forward 'modules/utilities/validators/string/is-string-contained';
86
- @forward 'modules/utilities/validators/string/is-string-empty';
87
- @forward 'modules/utilities/validators/string/is-string-ending-with';
88
- @forward 'modules/utilities/validators/string/is-string-starting-with';
89
- @forward 'modules/utilities/validators/type-of/is-boolean';
90
- @forward 'modules/utilities/validators/type-of/is-color';
91
- @forward 'modules/utilities/validators/type-of/is-list';
92
- @forward 'modules/utilities/validators/type-of/is-map';
93
- @forward 'modules/utilities/validators/type-of/is-number';
94
- @forward 'modules/utilities/validators/type-of/is-string';
95
- @forward 'modules/utilities/validators/type-of/is-type';
6
+ @forward 'modules/utilities/converters';
7
+ @forward 'modules/utilities/getters';
8
+ @forward 'modules/utilities/helpers';
9
+ @forward 'modules/utilities/validators';
@@ -1,6 +1,4 @@
1
- @use '../helpers/number/number-strip-unit' as *;
2
- @use '../loggers/log-invalid-type' as *;
3
- @use '../validators/type-of/is-number' as *;
1
+ @use '../helpers' as helpers; // need number/number-strip-unit
4
2
 
5
3
  /// Конвертирует значения из относительных единиц (`em`) в
6
4
  /// пиксели (`px`).
@@ -26,7 +24,7 @@
26
24
  /// ---
27
25
  /// @name convert-em2px
28
26
  /// @group utilities-converters
29
- /// @since 2025.12.27
27
+ /// @since 0.0.1
30
28
  /// @access public
31
29
  /// @author Murad Rustamov (therteenten)
32
30
  /// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
@@ -191,49 +189,5 @@
191
189
  /// нечисловых значений. Для корректной работы оба
192
190
  /// аргумента должны быть числами.
193
191
  @function convert-em2px($em, $base: 16px) {
194
-
195
- // Проверка типа первого параметра: ожидается числовое
196
- // значение в единицах em. Единица em является относительной
197
- // и рассчитывается относительно размера шрифта родительского
198
- // элемента.
199
- @if not is-number($em) {
200
-
201
- // Если $em не является числом, логируем ошибку через
202
- // отладочное сообщение.
203
- @return log-invalid-type(
204
- 'convert-em2px',
205
- $em,
206
- '$em',
207
- 'number'
208
- );
209
-
210
- }
211
-
212
- // Основная логика выполняется только если $value является
213
- // корректной строкой.
214
- @else {
215
-
216
- // Формула конвертации: px = em × базовый_размер_шрифта.
217
- //
218
- // Алгоритм вычислений:
219
- // 1. number-strip-unit($em) - удаляем единицу измерения
220
- // 'em' из первого значения
221
- // Пример: 1.5em → 1.5 (число без единиц)
222
- // 2. number-strip-unit($base) - удаляем единицу измерения
223
- // из базового размера
224
- // Пример: 16px → 16 (число без единиц)
225
- // 3. Умножаем безразмерные числа: (число em) × (базовый размер)
226
- // Пример: 1.5 × 16 = 24
227
- // 4. Умножаем результат на 1px для добавления единицы
228
- // измерения пикселей
229
- // Пример: 24 × 1px = 24px
230
- //
231
- // Ключевая особенность: результат в пикселях зависит от
232
- // базового размера шрифта. В отличие от rem, который зависит
233
- // от корневого элемента, em зависит от размера шрифта
234
- // непосредственного родителя.
235
- @return number-strip-unit($em) * number-strip-unit($base) * 1px;
236
-
237
- }
238
-
192
+ @return helpers.number-strip-unit($em) * helpers.number-strip-unit($base) * 1px;
239
193
  }
@@ -1,6 +1,4 @@
1
1
  @use 'sass:color';
2
- @use '../validators/type-of/is-color' as *;
3
- @use '../loggers/log-invalid-type' as *;
4
2
 
5
3
  /// Преобразует цвет из HEX формата в строку формата RGB.
6
4
  ///
@@ -12,7 +10,7 @@
12
10
  /// ---
13
11
  /// @name convert-hex2rgb
14
12
  /// @group utilities-converters
15
- /// @since 2025.12.27
13
+ /// @since 0.0.1
16
14
  /// @access public
17
15
  /// @author Murad Rustamov (therteenten)
18
16
  /// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
@@ -53,45 +51,5 @@
53
51
  /// Если передан некорректный цвет, может вызвать ошибку
54
52
  /// Sass.
55
53
  @function convert-hex2rgb($color) {
56
-
57
- // Проверка типа входного параметра: ожидается
58
- // цветовое значение.
59
- // Функция is-color() проверяет, является ли $color
60
- // валидным цветом CSS.
61
- @if not is-color($color) {
62
-
63
- // Если $color не является цветом, возвращаем ошибку через
64
- // стандартную функцию логирования. Это предотвращает
65
- // выполнение операции конвертации с некорректными данными.
66
- @return log-invalid-type(
67
- 'convert-hex2rgb',
68
- $color,
69
- '$color',
70
- 'color'
71
- );
72
-
73
- }
74
-
75
- // Основная логика выполняется только если $value является
76
- // корректной строкой.
77
- @else {
78
-
79
- // Формула преобразования: создаем строку формата rgb()
80
- // из компонентов цвета.
81
- //
82
- // Алгоритм преобразования:
83
- // 1. Извлекаем красный канал: color.channel($color, "red", $space: rgb)
84
- // Возвращает числовое значение от 0 до 255
85
- // 2. Извлекаем зеленый канал: color.channel($color, "green", $space: rgb)
86
- // 3. Извлекаем синий канал: color.channel($color, "blue", $space: rgb)
87
- // 4. Формируем строку: rgb(красный, зеленый, синий)
88
- //
89
- // Ключевая особенность: функция возвращает строку, а не цветовой тип,
90
- // из-за интерполяции #{} внутри строки.
91
- // Это может быть полезно для генерации CSS переменных или
92
- // вставки значений в CSS-функции.
93
- @return 'rgb(#{color.channel($color, "red", $space: rgb)}, #{color.channel($color, "green", $space: rgb)}, #{color.channel($color, "blue", $space: rgb)})';
94
-
95
- }
96
-
54
+ @return "rgb(#{color.channel($color, "red", $space: rgb)}, #{color.channel($color, "green", $space: rgb)}, #{color.channel($color, "blue", $space: rgb)})";
97
55
  }