@gravity-ui/querieskit 1.3.0 → 1.3.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 (511) hide show
  1. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.js +4 -4
  2. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.js.map +1 -1
  3. package/build/cjs/modules/HistoryLayout/HistoryLayout.d.ts +1 -1
  4. package/build/cjs/modules/HistoryLayout/HistoryLayout.js +1 -1
  5. package/build/cjs/modules/HistoryLayout/HistoryLayout.js.map +1 -1
  6. package/build/cjs/modules/RowsList/RowsList.css +4 -0
  7. package/build/cjs/modules/RowsList/RowsList.css.map +1 -1
  8. package/build/cjs/types/queryList.d.ts +1 -1
  9. package/build/cjs/types/queryList.js.map +1 -1
  10. package/build/cjs/widgets/QueriesHistory/QueriesHistory.js +1 -2
  11. package/build/cjs/widgets/QueriesHistory/QueriesHistory.js.map +1 -1
  12. package/build/cjs/widgets/QueriesHistory/QueriesHistory.stories.d.ts +1 -0
  13. package/build/cjs/widgets/QueriesHistory/QueriesHistory.stories.js +82 -1
  14. package/build/cjs/widgets/QueriesHistory/QueriesHistory.stories.js.map +1 -1
  15. package/build/cjs/widgets/SavedQueries/SavedQueries.stories.js.map +1 -1
  16. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.js +4 -4
  17. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.js.map +1 -1
  18. package/build/esm/modules/HistoryLayout/HistoryLayout.d.ts +1 -1
  19. package/build/esm/modules/HistoryLayout/HistoryLayout.js +1 -1
  20. package/build/esm/modules/HistoryLayout/HistoryLayout.js.map +1 -1
  21. package/build/esm/modules/RowsList/RowsList.css +4 -0
  22. package/build/esm/modules/RowsList/RowsList.css.map +1 -1
  23. package/build/esm/modules/RowsList/RowsList.scss +3 -0
  24. package/build/esm/types/queryList.d.ts +1 -1
  25. package/build/esm/types/queryList.js.map +1 -1
  26. package/build/esm/widgets/QueriesHistory/QueriesHistory.js +1 -2
  27. package/build/esm/widgets/QueriesHistory/QueriesHistory.js.map +1 -1
  28. package/build/esm/widgets/QueriesHistory/QueriesHistory.stories.d.ts +1 -0
  29. package/build/esm/widgets/QueriesHistory/QueriesHistory.stories.js +81 -0
  30. package/build/esm/widgets/QueriesHistory/QueriesHistory.stories.js.map +1 -1
  31. package/build/esm/widgets/SavedQueries/SavedQueries.stories.js.map +1 -1
  32. package/package.json +29 -2
  33. package/.agents/skills/code-review-checklist/SKILL.md +0 -94
  34. package/.agents/skills/github-pr-review/SKILL.md +0 -24
  35. package/.agents/skills/gravity-ui/SKILL.md +0 -175
  36. package/.agents/skills/gravity-ui/references/icons.md +0 -60
  37. package/.agents/skills/gravity-ui/references/layout.md +0 -366
  38. package/.agents/skills/gravity-ui/references/package-routing.md +0 -424
  39. package/.agents/skills/gravity-ui/references/theming.md +0 -309
  40. package/.agents/skills/gravity-ui/rules/hallucination-traps.md +0 -361
  41. package/.agents/skills/gravity-ui/scripts/icon-image-search.sh +0 -63
  42. package/.eslintignore +0 -3
  43. package/.github/workflows/ci.yml +0 -25
  44. package/.github/workflows/main-preview.yml +0 -31
  45. package/.github/workflows/pr-preview-build.yml +0 -13
  46. package/.github/workflows/pr-preview-deploy.yml +0 -22
  47. package/.github/workflows/pr-title.yml +0 -27
  48. package/.github/workflows/release.yml +0 -20
  49. package/.nvmrc +0 -1
  50. package/.prettierrc.js +0 -1
  51. package/.storybook/main.ts +0 -31
  52. package/.storybook/preview.tsx +0 -43
  53. package/.storybook/redefinition.css +0 -3
  54. package/.storybook/tsconfig.json +0 -9
  55. package/.stylelintrc +0 -9
  56. package/AGENTS.md +0 -129
  57. package/CHANGELOG.md +0 -103
  58. package/CODEOWNERS +0 -2
  59. package/CONTRIBUTING.md +0 -31
  60. package/NOTICES.md +0 -8
  61. package/app-builder.config.ts +0 -9
  62. package/commitlint.config.cjs +0 -6
  63. package/eslint.config.mjs +0 -53
  64. package/plans/i18n-rules.md +0 -116
  65. package/plans/navigation-architecture.md +0 -262
  66. package/plans/queries-history-structure.md +0 -143
  67. package/plans/queries-navigation-architecture-review.md +0 -217
  68. package/plans/styles-rules.md +0 -137
  69. package/skills-lock.json +0 -11
  70. package/src/components/AddChartButton/AddChartButton.scss +0 -12
  71. package/src/components/AddChartButton/AddChartButton.stories.tsx +0 -34
  72. package/src/components/AddChartButton/AddChartButton.tsx +0 -139
  73. package/src/components/AddChartButton/index.ts +0 -6
  74. package/src/components/AttachmentList/AttachmentList.scss +0 -25
  75. package/src/components/AttachmentList/AttachmentList.stories.tsx +0 -243
  76. package/src/components/AttachmentList/AttachmentList.tsx +0 -67
  77. package/src/components/AttachmentList/helpers/getIconByAttachmentName.ts +0 -36
  78. package/src/components/AttachmentList/helpers/objectLinkValidator.ts +0 -40
  79. package/src/components/AttachmentList/helpers/stringRequiredValidator.ts +0 -24
  80. package/src/components/AttachmentList/hooks/useKeyDownFormControl.ts +0 -22
  81. package/src/components/AttachmentList/hooks/useLabelRef.ts +0 -25
  82. package/src/components/AttachmentList/i18n/dicts.ts +0 -4
  83. package/src/components/AttachmentList/i18n/en.json +0 -10
  84. package/src/components/AttachmentList/i18n/index.ts +0 -5
  85. package/src/components/AttachmentList/i18n/ru.json +0 -10
  86. package/src/components/AttachmentList/index.ts +0 -4
  87. package/src/components/AttachmentList/internal/AttachmentItem/AttachmentItem.scss +0 -23
  88. package/src/components/AttachmentList/internal/AttachmentItem/AttachmentItem.tsx +0 -75
  89. package/src/components/AttachmentList/internal/AttachmentItem/index.ts +0 -2
  90. package/src/components/AttachmentList/internal/EditAttachmentItem/EditAttachmentItem.tsx +0 -21
  91. package/src/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.scss +0 -21
  92. package/src/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.tsx +0 -194
  93. package/src/components/AttachmentList/internal/EditAttachmentItem/FileEdit.tsx +0 -92
  94. package/src/components/AttachmentList/internal/EditAttachmentItem/index.ts +0 -4
  95. package/src/components/AttachmentListPlaceholder/AttachmentListPlaceholder.scss +0 -5
  96. package/src/components/AttachmentListPlaceholder/AttachmentListPlaceholder.stories.tsx +0 -30
  97. package/src/components/AttachmentListPlaceholder/AttachmentListPlaceholder.tsx +0 -72
  98. package/src/components/AttachmentListPlaceholder/assets/empty-attachments.svg +0 -14
  99. package/src/components/AttachmentListPlaceholder/i18n/dicts.ts +0 -4
  100. package/src/components/AttachmentListPlaceholder/i18n/en.json +0 -7
  101. package/src/components/AttachmentListPlaceholder/i18n/index.ts +0 -5
  102. package/src/components/AttachmentListPlaceholder/i18n/ru.json +0 -7
  103. package/src/components/AttachmentListPlaceholder/index.ts +0 -2
  104. package/src/components/Breadcrumbs/Breadcrumbs.scss +0 -25
  105. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -114
  106. package/src/components/Breadcrumbs/helpers/parsePathSegments.ts +0 -16
  107. package/src/components/Breadcrumbs/i18n/dicts.ts +0 -4
  108. package/src/components/Breadcrumbs/i18n/en.json +0 -4
  109. package/src/components/Breadcrumbs/i18n/index.ts +0 -5
  110. package/src/components/Breadcrumbs/i18n/ru.json +0 -4
  111. package/src/components/Breadcrumbs/index.ts +0 -2
  112. package/src/components/Chart/Chart.scss +0 -40
  113. package/src/components/Chart/Chart.stories.tsx +0 -75
  114. package/src/components/Chart/Chart.tsx +0 -120
  115. package/src/components/Chart/i18n/dicts.ts +0 -4
  116. package/src/components/Chart/i18n/en.json +0 -6
  117. package/src/components/Chart/i18n/index.ts +0 -5
  118. package/src/components/Chart/i18n/ru.json +0 -6
  119. package/src/components/Chart/index.ts +0 -2
  120. package/src/components/ChartEditorForm/ChartEditorForm.scss +0 -20
  121. package/src/components/ChartEditorForm/ChartEditorForm.stories.tsx +0 -88
  122. package/src/components/ChartEditorForm/ChartEditorForm.tsx +0 -120
  123. package/src/components/ChartEditorForm/helpers/resolveLabels.ts +0 -17
  124. package/src/components/ChartEditorForm/i18n/dicts.ts +0 -4
  125. package/src/components/ChartEditorForm/i18n/en.json +0 -12
  126. package/src/components/ChartEditorForm/i18n/index.ts +0 -5
  127. package/src/components/ChartEditorForm/i18n/ru.json +0 -12
  128. package/src/components/ChartEditorForm/index.ts +0 -7
  129. package/src/components/ChartEditorForm/internal/Field.tsx +0 -11
  130. package/src/components/ChartEditorForm/types.ts +0 -44
  131. package/src/components/ClusterRow/ClusterRow.tsx +0 -34
  132. package/src/components/ClusterRow/index.ts +0 -2
  133. package/src/components/Dashboard/Dashboard.scss +0 -4
  134. package/src/components/Dashboard/Dashboard.stories.scss +0 -18
  135. package/src/components/Dashboard/Dashboard.stories.tsx +0 -248
  136. package/src/components/Dashboard/Dashboard.tsx +0 -51
  137. package/src/components/Dashboard/helpers/createDefaultLayout.ts +0 -43
  138. package/src/components/Dashboard/hooks/useDashboardConfig.ts +0 -63
  139. package/src/components/Dashboard/index.ts +0 -2
  140. package/src/components/Dashboard/internal/DashPlate.scss +0 -23
  141. package/src/components/Dashboard/internal/DashPlate.tsx +0 -35
  142. package/src/components/Dashboard/internal/DashboardProvider.tsx +0 -37
  143. package/src/components/Dashboard/types.ts +0 -21
  144. package/src/components/DataTable/DataTable.scss +0 -27
  145. package/src/components/DataTable/DataTable.stories.tsx +0 -65
  146. package/src/components/DataTable/DataTable.tsx +0 -100
  147. package/src/components/DataTable/index.ts +0 -1
  148. package/src/components/EditableRowTitle/EditableRowTitle.tsx +0 -67
  149. package/src/components/EditableRowTitle/index.ts +0 -2
  150. package/src/components/EmptyContent/EmptyContent.scss +0 -3
  151. package/src/components/EmptyContent/EmptyContent.tsx +0 -57
  152. package/src/components/EmptyContent/i18n/dicts.ts +0 -4
  153. package/src/components/EmptyContent/i18n/en.json +0 -7
  154. package/src/components/EmptyContent/i18n/index.ts +0 -5
  155. package/src/components/EmptyContent/i18n/ru.json +0 -7
  156. package/src/components/EmptyContent/index.ts +0 -1
  157. package/src/components/ErrorTree/ErrorTree.stories.tsx +0 -94
  158. package/src/components/ErrorTree/ErrorTree.tsx +0 -30
  159. package/src/components/ErrorTree/helpers/formatAttributes.ts +0 -9
  160. package/src/components/ErrorTree/helpers/getIntermediateChain.ts +0 -21
  161. package/src/components/ErrorTree/i18n/dicts.ts +0 -4
  162. package/src/components/ErrorTree/i18n/en.json +0 -11
  163. package/src/components/ErrorTree/i18n/index.ts +0 -5
  164. package/src/components/ErrorTree/i18n/ru.json +0 -13
  165. package/src/components/ErrorTree/index.ts +0 -1
  166. package/src/components/ErrorTree/internal/ErrorTreeChildren.scss +0 -5
  167. package/src/components/ErrorTree/internal/ErrorTreeChildren.tsx +0 -25
  168. package/src/components/ErrorTree/internal/ErrorTreeNode.scss +0 -95
  169. package/src/components/ErrorTree/internal/ErrorTreeNode.tsx +0 -178
  170. package/src/components/ErrorTree/internal/IntermediateMessages.scss +0 -13
  171. package/src/components/ErrorTree/internal/IntermediateMessages.tsx +0 -127
  172. package/src/components/FieldsSearchToolbar/FieldsSearchToolbar.tsx +0 -48
  173. package/src/components/FieldsSearchToolbar/index.ts +0 -2
  174. package/src/components/FieldsSelector/FieldsSelector.scss +0 -18
  175. package/src/components/FieldsSelector/FieldsSelector.stories.tsx +0 -48
  176. package/src/components/FieldsSelector/FieldsSelector.tsx +0 -92
  177. package/src/components/FieldsSelector/i18n/dicts.ts +0 -4
  178. package/src/components/FieldsSelector/i18n/en.json +0 -3
  179. package/src/components/FieldsSelector/i18n/index.ts +0 -5
  180. package/src/components/FieldsSelector/i18n/ru.json +0 -3
  181. package/src/components/FieldsSelector/index.ts +0 -2
  182. package/src/components/HistoryFilter/HistoryFilter.scss +0 -5
  183. package/src/components/HistoryFilter/HistoryFilter.stories.tsx +0 -69
  184. package/src/components/HistoryFilter/HistoryFilter.tsx +0 -64
  185. package/src/components/HistoryFilter/i18n/dicts.ts +0 -4
  186. package/src/components/HistoryFilter/i18n/en.json +0 -4
  187. package/src/components/HistoryFilter/i18n/index.ts +0 -5
  188. package/src/components/HistoryFilter/i18n/ru.json +0 -4
  189. package/src/components/HistoryFilter/index.ts +0 -1
  190. package/src/components/HistoryGroupHeader/HistoryGroupHeader.scss +0 -7
  191. package/src/components/HistoryGroupHeader/HistoryGroupHeader.tsx +0 -18
  192. package/src/components/HistoryGroupHeader/index.ts +0 -1
  193. package/src/components/HistoryPrivateIcon/HistoryPrivateIcon.scss +0 -7
  194. package/src/components/HistoryPrivateIcon/HistoryPrivateIcon.tsx +0 -22
  195. package/src/components/HistoryPrivateIcon/index.ts +0 -1
  196. package/src/components/Icons/LogoCPlusPlus.tsx +0 -34
  197. package/src/components/Icons/index.ts +0 -1
  198. package/src/components/LazyList/LazyList.scss +0 -13
  199. package/src/components/LazyList/LazyList.tsx +0 -97
  200. package/src/components/LazyList/index.ts +0 -2
  201. package/src/components/ListSpinner/ListSpinner.scss +0 -3
  202. package/src/components/ListSpinner/ListSpinner.tsx +0 -18
  203. package/src/components/ListSpinner/index.ts +0 -2
  204. package/src/components/MonacoEditor/MonacoEditor.tsx +0 -112
  205. package/src/components/MonacoEditor/MonacoEditorThemes.tsx +0 -73
  206. package/src/components/MonacoEditor/index.ts +0 -11
  207. package/src/components/MonacoEditor/monaco-yql-languages/_.contribution.ts +0 -193
  208. package/src/components/MonacoEditor/monaco-yql-languages/clickhouse/clickhouse.contribution.ts +0 -14
  209. package/src/components/MonacoEditor/monaco-yql-languages/clickhouse/clickhouse.keywords.ts +0 -146
  210. package/src/components/MonacoEditor/monaco-yql-languages/clickhouse/clickhouse.ts +0 -217
  211. package/src/components/MonacoEditor/monaco-yql-languages/constants.ts +0 -6
  212. package/src/components/MonacoEditor/monaco-yql-languages/fillers/monaco-editor-core.ts +0 -3
  213. package/src/components/MonacoEditor/monaco-yql-languages/index.ts +0 -1
  214. package/src/components/MonacoEditor/monaco-yql-languages/monaco.contribution.ts +0 -5
  215. package/src/components/MonacoEditor/monaco-yql-languages/s-expressions/s-expressions.contribution.ts +0 -14
  216. package/src/components/MonacoEditor/monaco-yql-languages/s-expressions/s-expressions.keywords.ts +0 -97
  217. package/src/components/MonacoEditor/monaco-yql-languages/s-expressions/s-expressions.ts +0 -170
  218. package/src/components/MonacoEditor/monaco-yql-languages/themes/themes.contribution.ts +0 -35
  219. package/src/components/MonacoEditor/monaco-yql-languages/yql/yql.contribution.ts +0 -14
  220. package/src/components/MonacoEditor/monaco-yql-languages/yql/yql.keywords.ts +0 -13
  221. package/src/components/MonacoEditor/monaco-yql-languages/yql/yql.ts +0 -178
  222. package/src/components/MonacoEditor/monaco-yql-languages/yql_ansi/yql_ansi.contribution.ts +0 -14
  223. package/src/components/MonacoEditor/monaco-yql-languages/yql_ansi/yql_ansi.keywords.ts +0 -45
  224. package/src/components/MonacoEditor/monaco-yql-languages/yql_ansi/yql_ansi.ts +0 -142
  225. package/src/components/NavigationActionButtons/NavigationActionButtons.tsx +0 -46
  226. package/src/components/NavigationActionButtons/index.ts +0 -2
  227. package/src/components/NavigationItemRow/NavigationItemRow.tsx +0 -28
  228. package/src/components/NavigationItemRow/index.ts +0 -2
  229. package/src/components/PathEditor/PathEditor.scss +0 -41
  230. package/src/components/PathEditor/PathEditor.stories.helpers.ts +0 -118
  231. package/src/components/PathEditor/PathEditor.stories.tsx +0 -57
  232. package/src/components/PathEditor/PathEditor.tsx +0 -380
  233. package/src/components/PathEditor/helpers/suggestions.ts +0 -40
  234. package/src/components/PathEditor/i18n/dicts.ts +0 -4
  235. package/src/components/PathEditor/i18n/en.json +0 -4
  236. package/src/components/PathEditor/i18n/index.ts +0 -5
  237. package/src/components/PathEditor/i18n/ru.json +0 -4
  238. package/src/components/PathEditor/index.ts +0 -2
  239. package/src/components/QueryDuration/QueryDuration.scss +0 -6
  240. package/src/components/QueryDuration/QueryDuration.stories.tsx +0 -40
  241. package/src/components/QueryDuration/QueryDuration.tsx +0 -21
  242. package/src/components/QueryDuration/index.ts +0 -1
  243. package/src/components/QueryDuration/useQueryDuration.ts +0 -34
  244. package/src/components/QueryResultsTable/QueryResultsTable.scss +0 -65
  245. package/src/components/QueryResultsTable/QueryResultsTable.tsx +0 -112
  246. package/src/components/QueryResultsTable/helpers/formatQueryResultType.ts +0 -76
  247. package/src/components/QueryResultsTable/helpers/formatQueryResultValue.ts +0 -38
  248. package/src/components/QueryResultsTable/i18n/dicts.ts +0 -4
  249. package/src/components/QueryResultsTable/i18n/en.json +0 -5
  250. package/src/components/QueryResultsTable/i18n/index.ts +0 -4
  251. package/src/components/QueryResultsTable/i18n/ru.json +0 -5
  252. package/src/components/QueryResultsTable/index.ts +0 -3
  253. package/src/components/QueryResultsTable/internal/QueryResultCell.tsx +0 -63
  254. package/src/components/QueryStatusIcon/QueryStatusIcon.scss +0 -17
  255. package/src/components/QueryStatusIcon/QueryStatusIcon.stories.tsx +0 -50
  256. package/src/components/QueryStatusIcon/QueryStatusIcon.tsx +0 -37
  257. package/src/components/QueryStatusIcon/index.ts +0 -1
  258. package/src/components/RowActionsMenu/RowActionsMenu.tsx +0 -47
  259. package/src/components/RowActionsMenu/index.ts +0 -2
  260. package/src/components/RowLink/RowLink.scss +0 -8
  261. package/src/components/RowLink/RowLink.tsx +0 -23
  262. package/src/components/RowLink/index.ts +0 -2
  263. package/src/components/SearchRowLayout/SearchRowLayout.scss +0 -18
  264. package/src/components/SearchRowLayout/SearchRowLayout.tsx +0 -45
  265. package/src/components/SearchRowLayout/helpers/fitQueryToVisibleLines.ts +0 -10
  266. package/src/components/SearchRowLayout/helpers/monacoConfig.ts +0 -25
  267. package/src/components/SearchRowLayout/index.ts +0 -2
  268. package/src/components/SearchWithButtons/SearchWithButtons.scss +0 -10
  269. package/src/components/SearchWithButtons/SearchWithButtons.stories.tsx +0 -107
  270. package/src/components/SearchWithButtons/SearchWithButtons.tsx +0 -56
  271. package/src/components/SearchWithButtons/index.ts +0 -2
  272. package/src/components/SimpleForm/CheckboxGroupField.tsx +0 -53
  273. package/src/components/SimpleForm/RangeDatePickerField.tsx +0 -50
  274. package/src/components/SimpleForm/SelectField.tsx +0 -24
  275. package/src/components/SimpleForm/SimpleForm.stories.tsx +0 -115
  276. package/src/components/SimpleForm/SimpleForm.tsx +0 -65
  277. package/src/components/SimpleForm/SwitchField.tsx +0 -23
  278. package/src/components/SimpleForm/helpers/controlsRegistry.ts +0 -24
  279. package/src/components/SimpleForm/helpers/getInitialValues.ts +0 -10
  280. package/src/components/SimpleForm/helpers/index.ts +0 -2
  281. package/src/components/SimpleForm/index.ts +0 -7
  282. package/src/components/SkeletonRows/SkeletonRows.tsx +0 -24
  283. package/src/components/SkeletonRows/index.ts +0 -2
  284. package/src/components/index.ts +0 -71
  285. package/src/constants/query.ts +0 -10
  286. package/src/constants/row.ts +0 -2
  287. package/src/helpers/buildColumnsFromKeys.ts +0 -17
  288. package/src/helpers/createUuid.ts +0 -3
  289. package/src/helpers/getDefaultNavigationIcon.ts +0 -33
  290. package/src/helpers/getListKey.ts +0 -12
  291. package/src/helpers/getParentPath.ts +0 -10
  292. package/src/helpers/isEmptyValue.ts +0 -2
  293. package/src/helpers/isFieldVisible.ts +0 -20
  294. package/src/helpers/isObjectEqual.ts +0 -15
  295. package/src/helpers/time.ts +0 -29
  296. package/src/helpers/useDebouncedValue.ts +0 -14
  297. package/src/helpers/useLoadMoreSentinel.ts +0 -31
  298. package/src/helpers/useToggle.ts +0 -11
  299. package/src/helpers/useVisibleColumns.ts +0 -26
  300. package/src/i18n/index.ts +0 -26
  301. package/src/index.ts +0 -12
  302. package/src/modules/Attachments/Attachments.scss +0 -10
  303. package/src/modules/Attachments/Attachments.stories.tsx +0 -112
  304. package/src/modules/Attachments/Attachments.tsx +0 -336
  305. package/src/modules/Attachments/i18n/dicts.ts +0 -4
  306. package/src/modules/Attachments/i18n/en.json +0 -5
  307. package/src/modules/Attachments/i18n/index.ts +0 -5
  308. package/src/modules/Attachments/i18n/ru.json +0 -5
  309. package/src/modules/Attachments/index.ts +0 -2
  310. package/src/modules/ChartEditor/ChartEditor.scss +0 -12
  311. package/src/modules/ChartEditor/ChartEditor.tsx +0 -116
  312. package/src/modules/ChartEditor/i18n/dicts.ts +0 -4
  313. package/src/modules/ChartEditor/i18n/en.json +0 -3
  314. package/src/modules/ChartEditor/i18n/index.ts +0 -5
  315. package/src/modules/ChartEditor/i18n/ru.json +0 -3
  316. package/src/modules/ChartEditor/index.ts +0 -2
  317. package/src/modules/ChartEditor/story/ChartEditor.stories.tsx +0 -186
  318. package/src/modules/ChartEditor/story/mockData.ts +0 -222
  319. package/src/modules/ChartEditor/types.ts +0 -18
  320. package/src/modules/ClustersList/ClustersList.scss +0 -11
  321. package/src/modules/ClustersList/ClustersList.tsx +0 -49
  322. package/src/modules/ClustersList/index.ts +0 -2
  323. package/src/modules/HistoryComparisonActions/HistoryComparisonActions.scss +0 -4
  324. package/src/modules/HistoryComparisonActions/HistoryComparisonActions.tsx +0 -42
  325. package/src/modules/HistoryComparisonActions/index.ts +0 -2
  326. package/src/modules/HistoryHeader/HistoryHeader.stories.tsx +0 -47
  327. package/src/modules/HistoryHeader/HistoryHeader.tsx +0 -58
  328. package/src/modules/HistoryHeader/index.ts +0 -1
  329. package/src/modules/HistoryHeader/internal/FullSearchToggleButton.tsx +0 -16
  330. package/src/modules/HistoryLayout/HistoryLayout.scss +0 -7
  331. package/src/modules/HistoryLayout/HistoryLayout.tsx +0 -43
  332. package/src/modules/HistoryLayout/index.ts +0 -2
  333. package/src/modules/HistoryRow/HistoryRow.scss +0 -32
  334. package/src/modules/HistoryRow/HistoryRow.stories.tsx +0 -91
  335. package/src/modules/HistoryRow/HistoryRow.tsx +0 -77
  336. package/src/modules/HistoryRow/index.ts +0 -1
  337. package/src/modules/HistorySearchRow/HistorySearchRow.scss +0 -13
  338. package/src/modules/HistorySearchRow/HistorySearchRow.stories.tsx +0 -52
  339. package/src/modules/HistorySearchRow/HistorySearchRow.tsx +0 -62
  340. package/src/modules/HistorySearchRow/helpers/resolveMonacoLanguage.ts +0 -19
  341. package/src/modules/HistorySearchRow/index.ts +0 -1
  342. package/src/modules/NavigationDetail/NavigationDetail.scss +0 -13
  343. package/src/modules/NavigationDetail/NavigationDetail.tsx +0 -121
  344. package/src/modules/NavigationDetail/helpers/getInitialTab.ts +0 -9
  345. package/src/modules/NavigationDetail/helpers/getVisibleTabs.ts +0 -5
  346. package/src/modules/NavigationDetail/index.ts +0 -2
  347. package/src/modules/NavigationDetail/internal/NavigationDetailTabs.tsx +0 -32
  348. package/src/modules/NavigationHeader/NavigationHeader.stories.tsx +0 -118
  349. package/src/modules/NavigationHeader/NavigationHeader.tsx +0 -33
  350. package/src/modules/NavigationHeader/index.ts +0 -2
  351. package/src/modules/NavigationItemsList/NavigationItemsList.scss +0 -65
  352. package/src/modules/NavigationItemsList/NavigationItemsList.tsx +0 -92
  353. package/src/modules/NavigationItemsList/index.ts +0 -2
  354. package/src/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.tsx +0 -45
  355. package/src/modules/NavigationItemsList/internal/NavigationItemsListHeader.scss +0 -6
  356. package/src/modules/NavigationItemsList/internal/NavigationItemsListHeader.tsx +0 -54
  357. package/src/modules/NavigationItemsList/internal/useParentRow.ts +0 -23
  358. package/src/modules/NavigationMeta/NavigationMeta.scss +0 -25
  359. package/src/modules/NavigationMeta/NavigationMeta.tsx +0 -81
  360. package/src/modules/NavigationMeta/helpers/buildMetaGroups.tsx +0 -27
  361. package/src/modules/NavigationMeta/i18n/dicts.ts +0 -4
  362. package/src/modules/NavigationMeta/i18n/en.json +0 -4
  363. package/src/modules/NavigationMeta/i18n/index.ts +0 -5
  364. package/src/modules/NavigationMeta/i18n/ru.json +0 -4
  365. package/src/modules/NavigationMeta/index.ts +0 -3
  366. package/src/modules/NavigationMeta/story/NavigationMeta.stories.tsx +0 -80
  367. package/src/modules/NavigationMeta/story/mockData.ts +0 -22
  368. package/src/modules/NavigationPreview/NavigationPreview.scss +0 -32
  369. package/src/modules/NavigationPreview/NavigationPreview.tsx +0 -155
  370. package/src/modules/NavigationPreview/helpers/buildPreviewColumns.tsx +0 -11
  371. package/src/modules/NavigationPreview/helpers/filterPreviewRows.ts +0 -29
  372. package/src/modules/NavigationPreview/i18n/dicts.ts +0 -4
  373. package/src/modules/NavigationPreview/i18n/en.json +0 -3
  374. package/src/modules/NavigationPreview/i18n/index.ts +0 -5
  375. package/src/modules/NavigationPreview/i18n/ru.json +0 -3
  376. package/src/modules/NavigationPreview/index.ts +0 -4
  377. package/src/modules/NavigationPreview/story/NavigationPreview.stories.tsx +0 -123
  378. package/src/modules/NavigationPreview/story/mockData.ts +0 -14
  379. package/src/modules/NavigationSchema/NavigationSchema.scss +0 -24
  380. package/src/modules/NavigationSchema/NavigationSchema.tsx +0 -118
  381. package/src/modules/NavigationSchema/helpers/buildSchemaColumns.tsx +0 -54
  382. package/src/modules/NavigationSchema/helpers/filterSchema.ts +0 -18
  383. package/src/modules/NavigationSchema/i18n/dicts.ts +0 -4
  384. package/src/modules/NavigationSchema/i18n/en.json +0 -9
  385. package/src/modules/NavigationSchema/i18n/index.ts +0 -5
  386. package/src/modules/NavigationSchema/i18n/ru.json +0 -9
  387. package/src/modules/NavigationSchema/index.ts +0 -4
  388. package/src/modules/NavigationSchema/story/NavigationSchema.stories.tsx +0 -112
  389. package/src/modules/NavigationSchema/story/mockData.ts +0 -9
  390. package/src/modules/NavigationView/NavigationView.scss +0 -44
  391. package/src/modules/NavigationView/NavigationView.tsx +0 -60
  392. package/src/modules/NavigationView/helpers/buildViewColumns.tsx +0 -11
  393. package/src/modules/NavigationView/i18n/dicts.ts +0 -4
  394. package/src/modules/NavigationView/i18n/en.json +0 -3
  395. package/src/modules/NavigationView/i18n/index.ts +0 -5
  396. package/src/modules/NavigationView/i18n/ru.json +0 -3
  397. package/src/modules/NavigationView/index.ts +0 -3
  398. package/src/modules/NavigationView/internal/NavigationViewSectionItem.tsx +0 -70
  399. package/src/modules/NavigationView/story/NavigationView.stories.tsx +0 -110
  400. package/src/modules/NavigationView/story/mockData.ts +0 -35
  401. package/src/modules/QueriesList/QueriesList.scss +0 -10
  402. package/src/modules/QueriesList/QueriesList.tsx +0 -98
  403. package/src/modules/QueriesList/index.ts +0 -2
  404. package/src/modules/QueryStatistics/QueryStatistics.scss +0 -3
  405. package/src/modules/QueryStatistics/QueryStatistics.tsx +0 -125
  406. package/src/modules/QueryStatistics/helpers.ts +0 -96
  407. package/src/modules/QueryStatistics/i18n/dicts.ts +0 -4
  408. package/src/modules/QueryStatistics/i18n/en.json +0 -16
  409. package/src/modules/QueryStatistics/i18n/index.ts +0 -4
  410. package/src/modules/QueryStatistics/i18n/ru.json +0 -16
  411. package/src/modules/QueryStatistics/index.ts +0 -13
  412. package/src/modules/QueryStatistics/internal/MetricCell.scss +0 -12
  413. package/src/modules/QueryStatistics/internal/MetricCell.tsx +0 -99
  414. package/src/modules/QueryStatistics/internal/QueryStatisticsTable.scss +0 -8
  415. package/src/modules/QueryStatistics/internal/QueryStatisticsTable.tsx +0 -135
  416. package/src/modules/QueryStatistics/internal/QueryStatisticsToolbar.scss +0 -1
  417. package/src/modules/QueryStatistics/internal/QueryStatisticsToolbar.tsx +0 -61
  418. package/src/modules/QueryStatistics/story/QueryStatistics.stories.tsx +0 -71
  419. package/src/modules/RowsList/RowsList.scss +0 -5
  420. package/src/modules/RowsList/RowsList.tsx +0 -96
  421. package/src/modules/RowsList/helpers/prepareRowData.ts +0 -61
  422. package/src/modules/RowsList/index.ts +0 -2
  423. package/src/modules/SavedQueryRow/SavedQueryRow.scss +0 -20
  424. package/src/modules/SavedQueryRow/SavedQueryRow.tsx +0 -60
  425. package/src/modules/SavedQueryRow/index.ts +0 -2
  426. package/src/modules/SavedQuerySearchRow/SavedQuerySearchRow.scss +0 -15
  427. package/src/modules/SavedQuerySearchRow/SavedQuerySearchRow.tsx +0 -58
  428. package/src/modules/SavedQuerySearchRow/index.ts +0 -2
  429. package/src/modules/TutorialRow/TutorialRow.scss +0 -9
  430. package/src/modules/TutorialRow/TutorialRow.stories.tsx +0 -43
  431. package/src/modules/TutorialRow/TutorialRow.tsx +0 -25
  432. package/src/modules/TutorialRow/index.ts +0 -2
  433. package/src/modules/TutorialSearchRow/TutorialSearchRow.scss +0 -5
  434. package/src/modules/TutorialSearchRow/TutorialSearchRow.stories.tsx +0 -44
  435. package/src/modules/TutorialSearchRow/TutorialSearchRow.tsx +0 -33
  436. package/src/modules/TutorialSearchRow/index.ts +0 -2
  437. package/src/modules/index.ts +0 -50
  438. package/src/types/declarations.d.ts +0 -25
  439. package/src/types/errorTree.ts +0 -30
  440. package/src/types/forms.ts +0 -33
  441. package/src/types/history.ts +0 -12
  442. package/src/types/navigation.ts +0 -209
  443. package/src/types/pathEditor.ts +0 -29
  444. package/src/types/queryList.ts +0 -92
  445. package/src/types/queryResults.ts +0 -48
  446. package/src/types/queryStatistics.ts +0 -67
  447. package/src/types/savedQueries.ts +0 -7
  448. package/src/types/tutorial.ts +0 -3
  449. package/src/widgets/DashboardCharts/DashboardCharts.scss +0 -25
  450. package/src/widgets/DashboardCharts/DashboardCharts.tsx +0 -214
  451. package/src/widgets/DashboardCharts/helpers/chartTypeIcons.ts +0 -33
  452. package/src/widgets/DashboardCharts/i18n/dicts.ts +0 -4
  453. package/src/widgets/DashboardCharts/i18n/en.json +0 -7
  454. package/src/widgets/DashboardCharts/i18n/index.ts +0 -5
  455. package/src/widgets/DashboardCharts/i18n/ru.json +0 -7
  456. package/src/widgets/DashboardCharts/index.ts +0 -2
  457. package/src/widgets/DashboardCharts/internal/EmptyDashboardPlaceholder.tsx +0 -26
  458. package/src/widgets/DashboardCharts/story/DashboardCharts.stories.scss +0 -6
  459. package/src/widgets/DashboardCharts/story/DashboardCharts.stories.tsx +0 -77
  460. package/src/widgets/DashboardCharts/story/mockData.ts +0 -419
  461. package/src/widgets/DashboardCharts/types.ts +0 -30
  462. package/src/widgets/QueriesHistory/QueriesHistory.scss +0 -3
  463. package/src/widgets/QueriesHistory/QueriesHistory.stories.tsx +0 -276
  464. package/src/widgets/QueriesHistory/QueriesHistory.tsx +0 -71
  465. package/src/widgets/QueriesHistory/i18n/dicts.ts +0 -4
  466. package/src/widgets/QueriesHistory/i18n/en.json +0 -3
  467. package/src/widgets/QueriesHistory/i18n/index.ts +0 -5
  468. package/src/widgets/QueriesHistory/i18n/ru.json +0 -3
  469. package/src/widgets/QueriesHistory/index.ts +0 -2
  470. package/src/widgets/QueriesHistory/internal/HistoryRowContent.tsx +0 -22
  471. package/src/widgets/QueriesNavigation/QueriesNavigation.scss +0 -9
  472. package/src/widgets/QueriesNavigation/QueriesNavigation.stories.tsx +0 -409
  473. package/src/widgets/QueriesNavigation/QueriesNavigation.tsx +0 -195
  474. package/src/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.tsx +0 -8
  475. package/src/widgets/QueriesNavigation/helpers/createNavigationDetailResolver.ts +0 -28
  476. package/src/widgets/QueriesNavigation/helpers/createTableDetailConfig.tsx +0 -127
  477. package/src/widgets/QueriesNavigation/i18n/dicts.ts +0 -4
  478. package/src/widgets/QueriesNavigation/i18n/en.json +0 -10
  479. package/src/widgets/QueriesNavigation/i18n/index.ts +0 -5
  480. package/src/widgets/QueriesNavigation/i18n/ru.json +0 -10
  481. package/src/widgets/QueriesNavigation/index.ts +0 -13
  482. package/src/widgets/QueryResults/QueryResults.scss +0 -25
  483. package/src/widgets/QueryResults/QueryResults.stories.tsx +0 -155
  484. package/src/widgets/QueryResults/QueryResults.tsx +0 -121
  485. package/src/widgets/QueryResults/i18n/dicts.ts +0 -4
  486. package/src/widgets/QueryResults/i18n/en.json +0 -10
  487. package/src/widgets/QueryResults/i18n/index.ts +0 -4
  488. package/src/widgets/QueryResults/i18n/ru.json +0 -12
  489. package/src/widgets/QueryResults/index.ts +0 -2
  490. package/src/widgets/QueryResults/internal/QueryResultsSchema.tsx +0 -41
  491. package/src/widgets/SavedQueries/SavedQueries.scss +0 -3
  492. package/src/widgets/SavedQueries/SavedQueries.stories.tsx +0 -192
  493. package/src/widgets/SavedQueries/SavedQueries.tsx +0 -77
  494. package/src/widgets/SavedQueries/SavedQueryRowContent.tsx +0 -26
  495. package/src/widgets/SavedQueries/i18n/dicts.ts +0 -4
  496. package/src/widgets/SavedQueries/i18n/en.json +0 -3
  497. package/src/widgets/SavedQueries/i18n/index.ts +0 -4
  498. package/src/widgets/SavedQueries/i18n/ru.json +0 -3
  499. package/src/widgets/SavedQueries/index.ts +0 -2
  500. package/src/widgets/TutorialsHistory/TutorialRowContent.tsx +0 -16
  501. package/src/widgets/TutorialsHistory/TutorialsHistory.scss +0 -3
  502. package/src/widgets/TutorialsHistory/TutorialsHistory.stories.tsx +0 -135
  503. package/src/widgets/TutorialsHistory/TutorialsHistory.tsx +0 -63
  504. package/src/widgets/TutorialsHistory/i18n/dicts.ts +0 -4
  505. package/src/widgets/TutorialsHistory/i18n/en.json +0 -3
  506. package/src/widgets/TutorialsHistory/i18n/index.ts +0 -5
  507. package/src/widgets/TutorialsHistory/i18n/ru.json +0 -3
  508. package/src/widgets/TutorialsHistory/index.ts +0 -2
  509. package/src/widgets/index.ts +0 -20
  510. package/tsconfig.json +0 -20
  511. package/tsconfig.publish.json +0 -11
@@ -1,175 +0,0 @@
1
- ---
2
- name: gravity-ui
3
- description: Builds, fixes, styles, and composes UI with the Gravity UI design system — the React ecosystem of @gravity-ui/* packages (uikit, charts, table, navigation, date-components, icons, and more). Routes to the correct package when look-alikes exist, applies theming and required setup, and prevents invented component APIs. Applies when working with @gravity-ui imports, uikit, ThemeProvider, --g- CSS tokens, or any prompt (EN or RU) mentioning gravity-ui, гравити, дизайн-система, компоненты, дашборд, таблица, график, or форма.
4
- ---
5
-
6
- # Building UI with Gravity UI
7
-
8
- Build UI on **real** Gravity UI components, not from memory. Gravity UI is a
9
- multi-package React design system (`@gravity-ui/*`), so the two things that go
10
- wrong are picking the wrong package and using an API from the wrong version.
11
- This skill routes you to the right package, grounds you in the installed
12
- version, and stops you from inventing APIs — match the installed versions and
13
- follow the ecosystem catalog instead of guessing.
14
-
15
- ## Step 0 — pick the right package first (ecosystem routing)
16
-
17
- Before doing anything else, work out which `@gravity-ui/*` library the task
18
- needs. Do not guess from training data — the ecosystem has look-alike packages
19
- (`charts` vs `chartkit`, uikit `Table` vs `@gravity-ui/table`, `date-components`
20
- vs `date-utils`, …) and picking the wrong one is the #1 failure.
21
-
22
- Open [`references/package-routing.md`](references/package-routing.md) and read
23
- its top: it is the ecosystem catalog, with the live-vs-offline source order,
24
- the "painful pairs" disambiguation, and a one-line "what it's for / what to use
25
- instead" per package. Use it to choose the package, then come back here for
26
- Step 1.
27
-
28
- Only after the package is chosen, run Step 1 to ground in that package's
29
- installed version and API.
30
-
31
- ## Step 1 — ground in the installed version of the chosen package
32
-
33
- 1. **Read `package.json`.** Note each installed `@gravity-ui/*` package and its
34
- version. The installed version is the source of truth, not your memory.
35
- Resolve ranges from `node_modules` (`<pkg>/package.json` `version` field), not
36
- the range string in the root `package.json`.
37
-
38
- 2. **Fetch the docs for the package you are about to use, in this order,
39
- stopping at the first source that answers your question:**
40
-
41
- (a) **LOCAL** — start with `node_modules/@gravity-ui/<pkg>/dist/docs/INDEX.md` or `node_modules/@gravity-ui/<pkg>/build/docs/INDEX.md`.
42
- If `INDEX.md` is absent for this package, fall back to the package's root `node_modules/@gravity-ui/<pkg>/README.md`.
43
- This is the *exact* installed version — always preferred for version-sensitive questions.
44
- (b) **ONLINE** — per-package llms.txt at the **major line**:
45
- `https://gravity-ui.com/llms/<pkg>/<major>/llms.txt`
46
- (e.g. `/llms/uikit/7/llms.txt` for `^7.2.1`). The major-line URL serves the
47
- latest minor of that major — it tracks the major but not the exact patch.
48
- Use it when LOCAL has no docs for the package.
49
-
50
- 3. **Fallback rule — never silently proceed on a failed or empty source:**
51
-
52
- - If LOCAL has no README / `dist/docs` / `build/docs` for the package, or they are empty
53
- → fetch the ONLINE major-line llms.txt (b).
54
- - If the ONLINE request fails — network timeout, DNS, connection refused
55
- (air-gapped / corporate proxy), HTTP 404 (major not hosted), or an empty /
56
- non-markdown body → fall back to LOCAL README + dist/docs or build/docs (a).
57
- - **Do NOT use the `/llms/<pkg>/llms.txt` "latest" alias** as a fallback — it
58
- serves the newest major, which may differ from the installed one and have a
59
- different API. The major-line URL is the versioned fallback; below it, go
60
- LOCAL, not "latest".
61
- - If BOTH are unreachable for a package → STOP and tell the user the
62
- package's docs are unreachable. Do not guess its API from training data.
63
-
64
- ## Step 2 — implement on the chosen packages, then typecheck
65
-
66
- 1. **Implement using only the `@gravity-ui/*` packages chosen in Step 0 and
67
- confirmed installed in Step 1.** Import from those packages exactly — do
68
- not substitute look-alike libraries (MUI, Ant, plain `<input>`) and do not
69
- reach for a `@gravity-ui/*` package that Step 1 did not confirm installed.
70
- Follow the prop APIs from the docs you just read, not memory; if a prop
71
- you want is not documented, it does not exist — use the documented one, or
72
- ask the user.
73
-
74
- 2. **Apply the cross-cutting rules** in `rules/hallucination-traps.md` while
75
- writing: typography variants, the flex contract, theming/ladders,
76
- `Button view`, `Icon data`. Per-component traps live in the package's own
77
- `dist/docs`.
78
-
79
- 3. **Typecheck before declaring done.** Run the project's typecheck command
80
- (typically `tsc --noEmit`; for monorepos, the workspace's typecheck script).
81
- Fix every error before reporting completion — a type error almost always
82
- means a wrong/invented prop, a wrong import path, or a version mismatch,
83
- which is precisely what Steps 0–1 were meant to prevent.
84
-
85
- - If the typecheck surfaces a prop/path that contradicts the docs you read
86
- in Step 1, trust the **installed version** (the typechecker), not the
87
- docs snapshot — the docs may be from a different minor. Re-ground: read
88
- the package's `dist/docs/INDEX.md` in `node_modules` for the exact
89
- installed types.
90
- - If the typecheck is unavailable (no TS in the project), say so
91
- explicitly and ask the user how they want to verify; do not silently
92
- skip verification.
93
- - **Escape hatch.** If the user explicitly waived verification ("just
94
- sketch it", "quick prototype", "no need to check"), you may skip the
95
- typecheck — but state this plainly in your reply: *"typecheck skipped by
96
- user request — code is not verified"*. Do not skip silently.
97
-
98
- ## Hard rules
99
-
100
- - **`@gravity-ui/uikit` MUST be installed in every Gravity UI project.** It is
101
- the base component + design-token library every other `@gravity-ui/*` package
102
- builds on; without it components render unstyled. If `package.json` lacks it,
103
- stop and have the user install and configure it first (setup:
104
- `https://gravity-ui.com/llms/uikit/llms.txt`).
105
- - **Read `package.json` before importing any `@gravity-ui/*` package.** Never
106
- assume a package is installed; never assume its major version.
107
- - **Do not invent props or components.** Before using a component API you are
108
- not 100% sure of, check `rules/hallucination-traps.md` (ecosystem patterns)
109
- and the component's README in `dist/docs`. If still unsure, ask the user
110
- rather than guessing.
111
- - **Never guess icon names** — they are hallucinated more often than not. To
112
- match an icon from a screenshot/photo/mock, run `scripts/icon-image-search.sh`
113
- (reverse image search). With only a description, look the name up on
114
- `gravity-ui.com/icons` or ask the user — do not invent one. Then pass it as an
115
- object (`<Icon data={CheckIcon} />`), never a string key. See
116
- `references/icons.md`.
117
- - **Theming uses semantic `--g-*` tokens.** Never hardcode colors (`#fff`,
118
- `blue-500`); never hand-write `dark:` overrides. Full token tables live in
119
- `references/theming.md`; the cross-cutting traps (partial brand overrides,
120
- scoped vs nested `ThemeProvider`, controls on a brand background) live in
121
- `rules/hallucination-traps.md`.
122
- - **Required setup is package-specific** (style imports, `ThemeProvider`,
123
- peer-deps). It lives in each package's root README under "Required setup" —
124
- read it once per package, do not rely on memory.
125
-
126
- ## What NOT to do
127
-
128
- These are the five most common ways agents break Gravity UI code. They are
129
- already implied by the rules above; this section exists as an explicit
130
- stop-sign. If you are about to do any of these, stop and re-ground.
131
-
132
- - **Do not substitute non-Gravity libraries.** No MUI, Ant Design, plain
133
- `<input>`/`<button>`, or look-alike component libs. Use the `@gravity-ui/*`
134
- package the task needs.
135
- - **Do not invent component APIs or props.** If a prop is not in the docs you
136
- read in Step 1, it does not exist — do not write `variant=`, `color=`,
137
- `name=` (on `Icon`), or a `header-3` variant. Use the documented prop or
138
- ask the user. See `rules/hallucination-traps.md`.
139
- - **Do not use the `/llms/<pkg>/llms.txt` "latest" alias as a fallback.** It
140
- serves the newest major, which may differ from the installed one and have a
141
- different API. The versioned online fallback is the major-line URL
142
- (`/llms/<pkg>/<major>/llms.txt`); below that, go LOCAL.
143
- - **Do not partial-brand.** Setting only `--g-color-base-brand` leaves
144
- selection, focus, links and contrast on the default accent — a mismatched
145
- UI. Override the full brand token set, on each theme you support.
146
- - **Do not override internal markup with `[class*='…']` / ID selectors.**
147
- That's written against one DOM structure and breaks silently when the
148
- component changes. Climb the customization ladder
149
- (global token → component CSS API → narrow flagged hack) before ever
150
- touching structure.
151
-
152
- ## Deeper material — read on demand
153
-
154
- These files live alongside this SKILL.md and load only when relevant:
155
-
156
- - `references/package-routing.md` — offline snapshot of the ecosystem catalog
157
- (`gravity-ui.com/llms.txt`), refreshed each skill release. Used as the
158
- offline fallback in Step 0.
159
- - `references/theming.md` — verbatim copy of uikit's `docs/theming.md`:
160
- `--g-*` token layers, `ThemeProvider`, branding, custom themes, scoped
161
- themes, `uikit-themer`. The bundled copy may lag — read
162
- `node_modules/@gravity-ui/uikit/build/docs/guides/theming.md` for the
163
- version-matched file.
164
- - `references/layout.md` — verbatim copy of uikit's `docs/layout.md`:
165
- spacing scale (`--g-spacing-*`), `Flex`/`Box`, `Row`/`Col`/`Container`
166
- grid, breakpoints, `useLayoutContext`.
167
- - `references/icons.md` — finding an icon by image
168
- (`scripts/icon-image-search.sh`) or on gravity-ui.com/icons; the
169
- object-vs-string rendering rule.
170
- - `rules/hallucination-traps.md` — Incorrect/Correct pairs for the most
171
- commonly invented APIs: typography variants (`header-3..6` don't exist, no
172
- `Heading`), the flex contract (`min-width:0`, who shrinks), theming traps
173
- (partial brand overrides, scoped vs nested `ThemeProvider`, customization
174
- ladder), `Button view` not `variant`, `Icon data` not `name`. Per-component
175
- traps live in each package's `dist/docs`, not here.
@@ -1,60 +0,0 @@
1
- # Icons — finding the right `@gravity-ui/icons` name
2
-
3
- Icon names are hallucinated more often than not. **Never guess.** Find the real
4
- name, then render it correctly.
5
-
6
- ## By image (screenshot / photo / mock) — preferred
7
-
8
- When the user has a picture of the icon — a screenshot, a design mock, a photo —
9
- use **reverse image search**:
10
-
11
- ```
12
- scripts/icon-image-search.sh <path-to-image>
13
- ```
14
-
15
- It POSTs the image to `https://gravity-ui.com/api/icons-search` and prints the
16
- closest `@gravity-ui/icons` names. The script infers the content type from the
17
- extension; force it if ambiguous: `--png` / `--jpeg`.
18
-
19
- **Image requirements:** send a small image of the icon *alone* — ideally
20
- **square** and tightly cropped to the glyph (no surrounding UI, large
21
- whitespace, or several icons in one shot). A full-page screenshot gives worse
22
- matches, so crop to the icon first if needed.
23
-
24
- Workflow:
25
- 1. Have the user drop the image into the project, or point you at its path — a
26
- small, square crop of just the icon.
27
- 2. Run the script (it needs `curl`).
28
- 3. The response is JSON: `{"results":[{"name","componentName","style","score"}, …]}`
29
- sorted by descending `score` (0–1). Use **`componentName`** (PascalCase) for
30
- the import: `import { Sphere } from '@gravity-ui/icons'`.
31
- 4. If the top scores are close (within ~0.02) or the image is low-res, show the
32
- user the top few candidates and ask which one — don't pick the first blindly.
33
- 5. Render the chosen component (below).
34
-
35
- ## When you only have a description (no image)
36
-
37
- This skill ships **no text-search endpoint**. To avoid inventing a name:
38
-
39
- - Look the icon up on the catalog at `https://gravity-ui.com/icons`.
40
- - If still unclear, ask the user for a screenshot and run image search.
41
-
42
- Do not guess a name from memory.
43
-
44
- ## Rendering the chosen icon
45
-
46
- - The glyph set is `@gravity-ui/icons`; the renderer is uikit's `Icon`. Two
47
- packages, two roles — don't confuse them.
48
- - Import the icon component and pass it via uikit's `Icon` `data` prop:
49
-
50
- ```tsx
51
- import { Icon } from '@gravity-ui/uikit';
52
- import { ShieldCheck } from '@gravity-ui/icons';
53
- import '@gravity-ui/uikit/styles/styles.css';
54
-
55
- <Icon data={ShieldCheck} size={16} />
56
- ```
57
-
58
- - Pass the icon as an **object** (`data={ShieldCheck}`), never as a string key.
59
- - For a custom or brand icon not in the set, import your own SVG and pass it to
60
- `Icon` — do not expect it to live in `@gravity-ui/icons`.
@@ -1,366 +0,0 @@
1
- # Layout — spacing scale, `Flex`/`Box`, grid (`Row`/`Col`/`Container`)
2
-
3
- > **Source of truth:** this is a verbatim copy of
4
- > [`@gravity-ui/uikit`'s `docs/layout.md`](https://github.com/gravity-ui/uikit/blob/main/docs/layout.md).
5
- > The current version in the installed `node_modules` may differ — for the exact
6
- > file matching your version, read
7
- > `node_modules/@gravity-ui/uikit/build/docs/guides/layout.md` (or fetch the
8
- > version-pinned copy at `gravity-ui.com/llms/uikit/<major>/llms.txt`).
9
- >
10
- > This copy is bundled offline. If a token or prop you need is missing or looks
11
- > different here, prefer the version-matched source over this snapshot.
12
-
13
- This reference covers the **spacing scale, layout components, and responsive
14
- breakpoints**. For the **flex-contract traps** — who shrinks vs who holds, why
15
- `min-width:0` matters, scroll-vs-page — see
16
- [`../rules/hallucination-traps.md`](../rules/hallucination-traps.md).
17
-
18
- ---
19
-
20
- # Layout components and spacings
21
-
22
- This guide covers UIKit's layout foundations: a shared **spacing** scale (`--g-spacing-*`, used
23
- everywhere via tokens and props) and a responsive **grid** (`Container`/`Row`/`Col`), plus the
24
- flexbox-based `Flex`/`Box` primitives built on top of them. Compose pages from these instead of
25
- raw `div`s and inline styles.
26
-
27
- ## Spacing
28
-
29
- Spacing in UIKit is a **scale**, not free-form pixels. You reference a step (`1`, `2`, … `10`)
30
- and the design system turns it into a concrete size. Sticking to the scale is what keeps rhythm
31
- consistent across the whole app, and lets you rescale everything from a single variable.
32
-
33
- ### The scale
34
-
35
- Every step is a multiple of a base unit (`--g-spacing-base`, `4px` by default), so `step × 4px`:
36
-
37
- | Step | CSS variable | Size |
38
- | ----- | ------------------ | ---- |
39
- | `0` | `--g-spacing-0` | 0 |
40
- | `0.5` | `--g-spacing-half` | 2px |
41
- | `1` | `--g-spacing-1` | 4px |
42
- | `2` | `--g-spacing-2` | 8px |
43
- | `3` | `--g-spacing-3` | 12px |
44
- | `4` | `--g-spacing-4` | 16px |
45
- | `5` | `--g-spacing-5` | 20px |
46
- | `6` | `--g-spacing-6` | 24px |
47
- | `7` | `--g-spacing-7` | 28px |
48
- | `8` | `--g-spacing-8` | 32px |
49
- | `9` | `--g-spacing-9` | 36px |
50
- | `10` | `--g-spacing-10` | 40px |
51
-
52
- Because every step is derived from `--g-spacing-base`, changing that one value rescales the
53
- entire spacing system proportionally (see [Customization](#customization)).
54
-
55
- ### Ways to apply spacing
56
-
57
- There are three ways to consume the scale — pick by context:
58
-
59
- **1. Component props** — spacing **between** children of `Flex`/`Box`, via the `gap` prop:
60
-
61
- ```tsx
62
- import {Flex} from '@gravity-ui/uikit';
63
-
64
- <Flex gap={5}>
65
- <Button />
66
- <Button />
67
- </Flex>; // 20px between children
68
- ```
69
-
70
- **2. CSS custom properties** — the same steps as `--g-spacing-{step}` variables, for use in your
71
- own styles (e.g. `--g-spacing-half` for the `0.5` step):
72
-
73
- ```css
74
- .example-class {
75
- margin-right: var(--g-spacing-5); /* 20px */
76
- padding: var(--g-spacing-2) var(--g-spacing-4);
77
- }
78
- ```
79
-
80
- **3. The `spacing()` utility** — for one-off margins/paddings on any element without hand-writing
81
- class names. It returns a generated class name string:
82
-
83
- ```tsx
84
- import {spacing} from '@gravity-ui/uikit';
85
-
86
- <>
87
- <Button className={spacing({mr: 5})}>button 1</Button>
88
- <Button className={spacing({mt: 2, px: 4})}>button 2</Button>
89
- </>;
90
- ```
91
-
92
- `sp` is a shorter alias: `import {sp} from '@gravity-ui/uikit'` → `sp({mr: 5})`.
93
-
94
- Supported keys (each takes a scale step):
95
-
96
- | Key | Property |
97
- | ------------------- | --------------------------------- |
98
- | `m` | `margin` |
99
- | `mt` `mr` `mb` `ml` | `margin-top/right/bottom/left` |
100
- | `mx` | horizontal margin (left + right) |
101
- | `my` | vertical margin (top + bottom) |
102
- | `p` | `padding` |
103
- | `pt` `pr` `pb` `pl` | `padding-top/right/bottom/left` |
104
- | `px` | horizontal padding (left + right) |
105
- | `py` | vertical padding (top + bottom) |
106
-
107
- You can pass a second argument to merge extra class names: `spacing({mr: 5}, myClassName)`.
108
-
109
- > **Rule of thumb:** `gap` for spacing between siblings in a `Flex`/`Box`; the `spacing()`/`sp()`
110
- > utility for one-off offsets on an element; raw `--g-spacing-*` variables inside your own CSS.
111
- > Always use scale steps, never hard-coded pixels.
112
-
113
- ### Customization
114
-
115
- Override the base unit to rescale the whole system. Do it via CSS at the project level:
116
-
117
- ```css
118
- :root {
119
- --g-spacing-base: 5px; /* now step 5 = 25px, etc. */
120
- }
121
- ```
122
-
123
- Or through the layout theme, which keeps the JS `Space` values and CSS variables in sync:
124
-
125
- ```tsx
126
- import {ThemeProvider, LayoutTheme} from '@gravity-ui/uikit';
127
-
128
- const config: LayoutTheme = {
129
- spaceBaseSize: 5,
130
- };
131
-
132
- export const App = () => {
133
- return (
134
- <ThemeProvider layout={{config, fixBreakpoints: true}}>
135
- {...}
136
- </ThemeProvider>
137
- );
138
- };
139
- ```
140
-
141
- ## Screen sizes:
142
-
143
- We use **mobile-first** approach. It means that you should adapt your app for desktop after completing development of mobile version.
144
- The default breakpoints are:
145
-
146
- - `xs` - < 576px
147
- - `s` - ≥ 576px;
148
- - `m` - ≥ 768px;
149
- - `l` - ≥ 1080px;
150
- - `xl` - ≥ 1200px;
151
- - `xxl` - ≥ 1400px;
152
- - `xxxl` - ≥ 1920px;
153
-
154
- To override a breakpoint use the `breakpoints` property in the layout config:
155
-
156
- ```tsx
157
- const APP_LAYOUT_THEME: LayoutTheme = {
158
- spaceBaseSize: 4,
159
- components: {
160
- container: {
161
- gutters: 3,
162
- media: {
163
- l: {
164
- gutters: 5,
165
- },
166
- },
167
- },
168
- },
169
- breakpoints: {
170
- s: 320,
171
- l: 980,
172
- },
173
- };
174
-
175
- <ThemeProvider layout={{config: APP_LAYOUT_THEME}}>
176
- {...}
177
- </ThemeProvider>;
178
- ```
179
-
180
- ## Box
181
-
182
- The `Box` component is a developer friend and basic block to build other components. Aware about spacing, its own sizes and most commonly used CSS properties.
183
-
184
- Use it to declaratively describe elements with a fixed height/width. It also has built-in support for the most commonly used properties, such as `overflow`.
185
- It is mainly used as a base unit for other components such as `Flex` and `Card`.
186
-
187
- It is also well suited for use as a base for data loading containers, for example:
188
-
189
- ```tsx
190
- import React, {Suspense} from 'react';
191
- import {Flex, Loader} from '@gravity-ui/uikit';
192
-
193
- // `Flex` extended from `Box` component and enriched flexbox model properties
194
- <Flex centerContent width="100%" height="100%">
195
- <Suspense fallback={<Loader size="m" />}>
196
- <LazyLoadedComponent />
197
- </Suspense>
198
- </Flex>;
199
- ```
200
-
201
- ## Layout Grid
202
-
203
- Main components to describe 12-th column grid layout for your app.
204
- Supports nested grids. This should be used when you have mobile and desktop app versions.
205
-
206
- ```tsx
207
- import {Row, Col} from '@gravity-ui/uikit';
208
-
209
- <Row space="5">
210
- <Col size="4">...</Col>
211
- <Col size="4">...</Col>
212
- <Col size="4">...</Col>
213
- </Row>;
214
- ```
215
-
216
- ### Row
217
-
218
- **Props**
219
-
220
- - `space` - specify horizontal spacing between child `Col` components;
221
- - `spaceRow` - specify vertical spacing between child `Col` components. By default, it takes values from the `space` prop.
222
-
223
- ### Col
224
-
225
- How many columns of your 12-th column layout will take content.
226
- Must be used as a child of `Row` component.
227
-
228
- **Props**
229
-
230
- - `size` - column width in column number (if omitted the column will occupy all free space in the row)
231
-
232
- ```tsx
233
- import {Row, Col} from '@gravity-ui/uikit';
234
-
235
- <Row
236
- /**
237
- * In this example we override default theme behavior.
238
- *
239
- * space={{s: '1', xl:'5'}}
240
- */
241
- space="5"
242
- >
243
- <Col
244
- // Will be:
245
- // 12 for "xs" and "s"
246
- // 6 for "m" and "l"
247
- // 4 for "xl" and "xxl"
248
- size={[12, {m: 6, xl: 4}]}
249
- />
250
- </Row>;
251
- ```
252
-
253
- > Grid system use negative margins under the hood. So you can specify background-color css property directly in `Col` components. Use wrapper components in such cases.
254
-
255
- ## Container
256
-
257
- Center you content. Almost always it should be one per page. Manage max width corresponding to current screen size
258
-
259
- **Props**
260
-
261
- - `gutters` - left and right content padding. Needed when you content width equals screen width;
262
- - `maxWidth` - limits screen width for specific screen size;
263
- - `spaceRow` - ability to specify spacing between children `Row` components
264
-
265
- ## Flex
266
-
267
- CSS `Flexbox` model representation in `jsx` world. Has built-in `spacing` to manage space between children. All flex properties are available in props.
268
- For most used properties it supports object syntax config to override behavior in different screen sizes.
269
-
270
- #### Examples
271
-
272
- _Space between children components in row direction_
273
-
274
- ```jsx
275
- import {Flex, TextInput, Button} from '@gravity-ui/uikit';
276
-
277
- <Flex space="5">
278
- <TextInput />
279
- <Button />
280
- </Flex>;
281
- ```
282
-
283
- _Nested `Flex` example_
284
-
285
- ```jsx
286
- import {Flex, TextInput, Button, Table} from '@gravity-ui/uikit';
287
-
288
- <Flex direction="column" space="5">
289
- <Flex space="5">
290
- <TextInput />
291
- <Button />
292
- </Flex>
293
- <Table />
294
- </Flex>;
295
- ```
296
-
297
- _Responsible example_
298
-
299
- ```jsx
300
- import {Flex, TextInput, Button} from '@gravity-ui/uikit';
301
-
302
- <Flex
303
- // direction: column will be applied to l, xl, xxl, xxxl screen sizes here
304
- direction={{l: 'column'}}
305
- space={{s: '5', m: '3'}}
306
- >
307
- <TextInput />
308
- <Button />
309
- </Flex>;
310
- ```
311
-
312
- ## Hooks
313
-
314
- ### useLayoutContext
315
-
316
- Hook `useLayoutContext` provide ability to use `LayoutTheme` and helper functions to work with media queries.
317
-
318
- It returns the following methods and objects:
319
-
320
- - `theme` - `LayoutTheme` object;
321
- - `activeMediaQuery` - returns current [Screen sizes](#screen-sizes) keys.
322
-
323
- ```tsx
324
- import {useLayoutContext} from '@gravity-ui/uikit';
325
-
326
- const Component = () => {
327
- const {activeMediaQuery} = useLayoutContext();
328
-
329
- return (
330
- <>{activeMediaQuery === 'l' ? <Text>I render only on screen resolution "l"</Text> : null}</>
331
- );
332
- };
333
- ```
334
-
335
- - `isMediaActive` - returns `true` if passed value is equal to or greater than the current active media. It is necessary to implement logic of adaptive elements for **mobile-first** approach.
336
-
337
- ```tsx
338
- import {useLayoutContext} from '@gravity-ui/uikit';
339
-
340
- // this example will be shown on xl, xxl and xxxl screen sizes
341
- const Component = () => {
342
- const {isMediaActive} = useLayoutContext();
343
-
344
- return (
345
- <>{isMediaActive('xl') ? <Text>I render on "xl", "xxl" and "xxxl" screen sizes</Text> : null}</>
346
- );
347
- };
348
- ```
349
-
350
- - `getClosestMediaProps` - it works in a similar way as `isMediaActive`, but takes a map with screen media as an argument. Returns the nearest available value in the map taking into account the **mobile-first** approach.
351
-
352
- ```tsx
353
- import {useLayoutContext} from '@gravity-ui/uikit';
354
-
355
- const mapOfPropsByScreen = {
356
- s: "i'm will be shown on 's' and 'n' screen size",
357
- l: "i'm will be shown on 'l' and 'xl' screen size",
358
- xxl: "i'm will be shown on 'xxl' and 'xxxl' screen size",
359
- };
360
-
361
- const Component = () => {
362
- const {getClosestMediaProps} = useLayoutContext();
363
-
364
- return <Text>{getClosestMediaProps(mapOfPropsByScreen)}</Text>;
365
- };
366
- ```