@diplodoc/client 5.7.6 → 5.7.8

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.
@@ -1 +1 @@
1
- * @diplodoc-platform/team
1
+ * @diplodoc-platform/team @diplodoc-bot
@@ -29,19 +29,10 @@ jobs:
29
29
  with:
30
30
  fetch-depth: 0
31
31
 
32
- - name: Setup Node.js
33
- uses: actions/setup-node@v4
32
+ - name: Setup Node.js and install dependencies
33
+ uses: diplodoc-platform/setup-node-action@v1
34
34
  with:
35
- node-version: ${{ vars.NODE_VERSION }}
36
- cache: 'npm'
37
-
38
- - name: Install latest npm (>= 11.5.1)
39
- run: |
40
- [ "$(printf '%s\n' "11.5.1" "$(npm -v)" | sort -V | head -n1)" = "11.5.1" ] || npm install -g npm@11.5.1
41
- shell: bash
42
-
43
- - name: Install dependencies
44
- run: npm ci
35
+ node-version: ${{ vars.NODE_VERSION || '24' }}
45
36
 
46
37
  - name: Run tests with coverage
47
38
  id: coverage-run
@@ -62,8 +53,15 @@ jobs:
62
53
  path: coverage/
63
54
  retention-days: 7
64
55
 
56
+ # Secrets aren't exposed to workflows triggered by pull_request from a fork,
57
+ # so SONAR_TOKEN is empty and SonarCloud responds with "Project not found".
58
+ # Skip the scan in that case — coverage artifact is still uploaded above.
65
59
  - name: SonarCloud Scan
66
- if: success() && steps.coverage-run.outputs.ran == 'true'
60
+ if: |
61
+ success() &&
62
+ steps.coverage-run.outputs.ran == 'true' &&
63
+ (github.event_name != 'pull_request' ||
64
+ github.event.pull_request.head.repo.full_name == github.repository)
67
65
  uses: SonarSource/sonarqube-scan-action@v7.0.0
68
66
  env:
69
67
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -16,6 +16,10 @@ jobs:
16
16
  update-package-lock:
17
17
  name: Update package-lock.json
18
18
  runs-on: ubuntu-latest
19
+ # Skip for PRs from forks: the bot token isn't available in fork context
20
+ # (actions/checkout fails with "Input required: token"), and we couldn't
21
+ # push back into the fork's branch anyway.
22
+ if: github.event.pull_request.head.repo.full_name == github.repository
19
23
  steps:
20
24
  - name: Checkout code
21
25
  uses: actions/checkout@v4
@@ -25,16 +29,11 @@ jobs:
25
29
  token: ${{ secrets.YC_UI_BOT_GITHUB_TOKEN }}
26
30
 
27
31
  - name: Setup Node.js
28
- uses: actions/setup-node@v4
32
+ uses: diplodoc-platform/setup-node-action@v1
29
33
  with:
30
- node-version: ${{ vars.NODE_VERSION }}
34
+ node-version: ${{ vars.NODE_VERSION || '24' }}
31
35
  registry-url: 'https://registry.npmjs.org'
32
- cache: 'npm'
33
-
34
- - name: Install latest npm (>= 11.5.1)
35
- run: |
36
- [ "$(printf '%s\n' "11.5.1" "$(npm -v)" | sort -V | head -n1)" = "11.5.1" ] || npm install -g npm@11.5.1
37
- shell: bash
36
+ run-install: 'false'
38
37
 
39
38
  - name: Regenerate package-lock.json
40
39
  run: npm install --no-workspaces --package-lock-only --ignore-scripts
@@ -59,19 +59,16 @@ jobs:
59
59
  fetch-depth: 0
60
60
 
61
61
  - name: Setup Node.js
62
- uses: actions/setup-node@v4
62
+ uses: diplodoc-platform/setup-node-action@v1
63
63
  with:
64
- node-version: ${{ vars.NODE_VERSION }}
64
+ node-version: ${{ vars.NODE_VERSION || '24' }}
65
65
  registry-url: 'https://registry.npmjs.org'
66
+ cache: ''
67
+ run-install: 'false'
66
68
 
67
69
  - uses: codex-team/action-nodejs-package-info@v1
68
70
  id: package
69
71
 
70
- - name: Install latest npm (>= 11.5.1)
71
- run: |
72
- [ "$(printf '%s\n' "11.5.1" "$(npm -v)" | sort -V | head -n1)" = "11.5.1" ] || npm install -g npm@11.5.1
73
- shell: bash
74
-
75
72
  - name: Install dependencies
76
73
  if: inputs.release_type != 'deprecate'
77
74
  run: npm ci
@@ -125,14 +122,21 @@ jobs:
125
122
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
126
123
 
127
124
  # === DEPRECATE STEPS ===
125
+ # workflow_dispatch inputs are user-controlled. Do not interpolate them
126
+ # directly into a shell script (${{ inputs.* }} in run:) — pass them
127
+ # through env: and reference as "$VAR" so quotes / $(...) / ;-chains in
128
+ # input values cannot escape into the shell.
128
129
  - name: Validate deprecate inputs
129
130
  if: github.event_name == 'workflow_dispatch' && inputs.release_type == 'deprecate'
131
+ env:
132
+ INPUT_DEPRECATE_VERSION: ${{ inputs.deprecate_version }}
133
+ INPUT_DEPRECATE_MESSAGE: ${{ inputs.deprecate_message }}
130
134
  run: |
131
- if [[ -z "${{ inputs.deprecate_version }}" ]]; then
135
+ if [[ -z "$INPUT_DEPRECATE_VERSION" ]]; then
132
136
  echo "::error::deprecate_version is required for deprecate action"
133
137
  exit 1
134
138
  fi
135
- if [[ -z "${{ inputs.deprecate_message }}" ]]; then
139
+ if [[ -z "$INPUT_DEPRECATE_MESSAGE" ]]; then
136
140
  echo "::error::deprecate_message is required for deprecate action"
137
141
  exit 1
138
142
  fi
@@ -141,23 +145,25 @@ jobs:
141
145
  if: github.event_name == 'workflow_dispatch' && inputs.release_type == 'deprecate'
142
146
  env:
143
147
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
148
+ # See note above the "Validate deprecate inputs" step.
149
+ PACKAGE_NAME: ${{ steps.package.outputs.name }}
150
+ INPUT_DEPRECATE_VERSION: ${{ inputs.deprecate_version }}
151
+ INPUT_DEPRECATE_MESSAGE: ${{ inputs.deprecate_message }}
152
+ INPUT_DEPRECATE_NEW_LATEST: ${{ inputs.deprecate_new_latest }}
144
153
  run: |
145
154
  set -e
146
155
 
147
- PACKAGE="${{ steps.package.outputs.name }}"
148
- LATEST="$(npm view $PACKAGE@latest version 2>/dev/null || echo '')"
149
- VERSION="${{ inputs.deprecate_version }}"
150
- MESSAGE="${{ inputs.deprecate_message }}"
151
- TARGET="$PACKAGE@$VERSION"
156
+ LATEST="$(npm view "$PACKAGE_NAME@latest" version 2>/dev/null || echo '')"
157
+ TARGET="$PACKAGE_NAME@$INPUT_DEPRECATE_VERSION"
152
158
 
153
- if [[ "$LATEST" == "$VERSION" ]]; then
154
- if [[ -z "${{ inputs.deprecate_new_latest }}" ]]; then
159
+ if [[ "$LATEST" == "$INPUT_DEPRECATE_VERSION" ]]; then
160
+ if [[ -z "$INPUT_DEPRECATE_NEW_LATEST" ]]; then
155
161
  echo "::error::deprecate_new_latest is required when deprecating the current latest version ($LATEST)"
156
162
  exit 1
157
163
  fi
158
- echo "::notice::Setting new latest tag to $PACKAGE@${{ inputs.deprecate_new_latest }}"
159
- npm dist-tag add "$PACKAGE@${{ inputs.deprecate_new_latest }}" latest
164
+ echo "::notice::Setting new latest tag to $PACKAGE_NAME@$INPUT_DEPRECATE_NEW_LATEST"
165
+ npm dist-tag add "$PACKAGE_NAME@$INPUT_DEPRECATE_NEW_LATEST" latest
160
166
  fi
161
167
 
162
- echo "::notice::Deprecating $TARGET. Reason: $MESSAGE"
163
- npm deprecate "$TARGET" "$MESSAGE"
168
+ echo "::notice::Deprecating $TARGET. Reason: $INPUT_DEPRECATE_MESSAGE"
169
+ npm deprecate "$TARGET" "$INPUT_DEPRECATE_MESSAGE"
@@ -22,19 +22,10 @@ jobs:
22
22
  - name: Checkout code
23
23
  uses: actions/checkout@v4
24
24
 
25
- - name: Setup Node.js
26
- uses: actions/setup-node@v4
25
+ - name: Setup Node.js and install dependencies
26
+ uses: diplodoc-platform/setup-node-action@v1
27
27
  with:
28
- node-version: ${{ vars.NODE_VERSION }}
29
- cache: 'npm'
30
-
31
- - name: Install latest npm (>= 11.5.1)
32
- run: |
33
- [ "$(printf '%s\n' "11.5.1" "$(npm -v)" | sort -V | head -n1)" = "11.5.1" ] || npm install -g npm@11.5.1
34
- shell: bash
35
-
36
- - name: Install dependencies
37
- run: npm ci
28
+ node-version: ${{ vars.NODE_VERSION || '24' }}
38
29
 
39
30
  - name: Run npm audit
40
31
  id: audit
@@ -30,19 +30,10 @@ jobs:
30
30
  with:
31
31
  fetch-depth: 0
32
32
 
33
- - name: Setup Node.js
34
- uses: actions/setup-node@v4
33
+ - name: Setup Node.js and install dependencies
34
+ uses: diplodoc-platform/setup-node-action@v1
35
35
  with:
36
- node-version: ${{ vars.NODE_VERSION }}
37
- cache: 'npm'
38
-
39
- - name: Install latest npm (>= 11.5.1)
40
- run: |
41
- [ "$(printf '%s\n' "11.5.1" "$(npm -v)" | sort -V | head -n1)" = "11.5.1" ] || npm install -g npm@11.5.1
42
- shell: bash
43
-
44
- - name: Install dependencies
45
- run: npm ci
36
+ node-version: ${{ vars.NODE_VERSION || '24' }}
46
37
 
47
38
  - name: Run type check
48
39
  run: npm run typecheck
@@ -38,6 +38,7 @@ on:
38
38
  - '@diplodoc/search-extension'
39
39
  - '@diplodoc/tabs-extension'
40
40
 
41
+
41
42
  update_as_dev:
42
43
  description: 'Update as devDependency (only for single package selection)'
43
44
  required: false
@@ -67,58 +68,56 @@ jobs:
67
68
  fetch-depth: 0
68
69
  token: ${{ secrets.YC_UI_BOT_GITHUB_TOKEN }}
69
70
 
70
- - name: Setup Node.js
71
- uses: actions/setup-node@v4
71
+ - name: Setup Node.js and install dependencies
72
+ uses: diplodoc-platform/setup-node-action@v1
72
73
  with:
73
- node-version: ${{ vars.NODE_VERSION }}
74
+ node-version: ${{ vars.NODE_VERSION || '24' }}
74
75
  registry-url: 'https://registry.npmjs.org'
75
- cache: 'npm'
76
-
77
- - name: Install latest npm (>= 11.5.1)
78
- run: |
79
- [ "$(printf '%s\n' "11.5.1" "$(npm -v)" | sort -V | head -n1)" = "11.5.1" ] || npm install -g npm@11.5.1
80
- shell: bash
81
-
82
- - name: Install dependencies
83
- run: npm ci
84
76
 
85
77
  - name: Update packages
78
+ # workflow_dispatch inputs are user-controlled. Never interpolate them
79
+ # directly into a shell script (${{ inputs.* }} in run:) — pass them
80
+ # through env: and reference as "$VAR" so quotes / $(...) / ;-chains
81
+ # in input values cannot escape into the shell.
82
+ env:
83
+ INPUT_PACKAGES: ${{ inputs.packages }}
84
+ INPUT_PACKAGE: ${{ inputs.package }}
85
+ INPUT_VERSION: ${{ inputs.version }}
86
+ INPUT_UPDATE_AS_DEV: ${{ inputs.update_as_dev }}
86
87
  run: |
87
88
  set -e
88
89
 
89
90
  # Determine which packages to update
90
- if [[ -n "${{ inputs.packages }}" ]]; then
91
+ if [[ -n "$INPUT_PACKAGES" ]]; then
91
92
  # Use multi-selection field with dev: prefix support
92
- PACKAGES_INPUT="${{ inputs.packages }}"
93
-
94
93
  # Parse comma-separated packages
95
- IFS=',' read -ra PACKAGES <<< "$PACKAGES_INPUT"
96
-
94
+ IFS=',' read -ra PACKAGES <<< "$INPUT_PACKAGES"
95
+
97
96
  for PACKAGE_ENTRY in "${PACKAGES[@]}"; do
98
97
  # Trim whitespace
99
98
  PACKAGE_ENTRY=$(echo "$PACKAGE_ENTRY" | xargs)
100
-
99
+
101
100
  # Check for dev: prefix
102
101
  if [[ "$PACKAGE_ENTRY" == dev:* ]]; then
103
102
  PACKAGE="${PACKAGE_ENTRY#dev:}"
104
- echo "::info::Updating $PACKAGE to ${{ inputs.version }} as devDependency"
105
- npm install --no-workspaces --save-dev "$PACKAGE@${{ inputs.version }}"
103
+ echo "::info::Updating $PACKAGE to $INPUT_VERSION as devDependency"
104
+ npm install --no-workspaces --save-dev "$PACKAGE@$INPUT_VERSION"
106
105
  else
107
106
  PACKAGE="$PACKAGE_ENTRY"
108
- echo "::info::Updating $PACKAGE to ${{ inputs.version }}"
109
- npm install --no-workspaces "$PACKAGE@${{ inputs.version }}"
107
+ echo "::info::Updating $PACKAGE to $INPUT_VERSION"
108
+ npm install --no-workspaces "$PACKAGE@$INPUT_VERSION"
110
109
  fi
111
110
  done
112
- elif [[ -n "${{ inputs.package }}" ]]; then
111
+ elif [[ -n "$INPUT_PACKAGE" ]]; then
113
112
  # Use single selection field
114
- PACKAGE="${{ inputs.package }}"
115
-
116
- if [[ "${{ inputs.update_as_dev }}" == "true" ]]; then
117
- echo "::info::Updating $PACKAGE to ${{ inputs.version }} as devDependency"
118
- npm install --no-workspaces --save-dev "$PACKAGE@${{ inputs.version }}"
113
+ PACKAGE="$INPUT_PACKAGE"
114
+
115
+ if [[ "$INPUT_UPDATE_AS_DEV" == "true" ]]; then
116
+ echo "::info::Updating $PACKAGE to $INPUT_VERSION as devDependency"
117
+ npm install --no-workspaces --save-dev "$PACKAGE@$INPUT_VERSION"
119
118
  else
120
- echo "::info::Updating $PACKAGE to ${{ inputs.version }}"
121
- npm install --no-workspaces "$PACKAGE@${{ inputs.version }}"
119
+ echo "::info::Updating $PACKAGE to $INPUT_VERSION"
120
+ npm install --no-workspaces "$PACKAGE@$INPUT_VERSION"
122
121
  fi
123
122
  else
124
123
  echo "::error::Either package or packages must be specified"
@@ -131,6 +130,12 @@ jobs:
131
130
  - name: Create and publish PR
132
131
  env:
133
132
  GH_TOKEN: ${{ secrets.YC_UI_BOT_GITHUB_TOKEN }}
133
+ # See "Update packages" step above — inputs go through env, never
134
+ # via ${{ inputs.* }} into the shell body.
135
+ INPUT_PACKAGES: ${{ inputs.packages }}
136
+ INPUT_PACKAGE: ${{ inputs.package }}
137
+ INPUT_VERSION: ${{ inputs.version }}
138
+ INPUT_UPDATE_AS_DEV: ${{ inputs.update_as_dev }}
134
139
  run: |
135
140
  set -e
136
141
 
@@ -141,19 +146,18 @@ jobs:
141
146
  fi
142
147
 
143
148
  # Determine which packages to update
144
- if [[ -n "${{ inputs.packages }}" ]]; then
149
+ FIRST_PACKAGE=""
150
+ if [[ -n "$INPUT_PACKAGES" ]]; then
145
151
  # Use multi-selection field with dev: prefix support
146
- PACKAGES_INPUT="${{ inputs.packages }}"
147
-
148
152
  # Parse comma-separated packages
149
- IFS=',' read -ra PACKAGES <<< "$PACKAGES_INPUT"
150
-
153
+ IFS=',' read -ra PACKAGES <<< "$INPUT_PACKAGES"
154
+
151
155
  # Get actual installed versions for all packages
152
156
  VERSIONS=""
153
157
  for PACKAGE_ENTRY in "${PACKAGES[@]}"; do
154
158
  # Trim whitespace
155
159
  PACKAGE_ENTRY=$(echo "$PACKAGE_ENTRY" | xargs)
156
-
160
+
157
161
  # Check for dev: prefix
158
162
  if [[ "$PACKAGE_ENTRY" == dev:* ]]; then
159
163
  PACKAGE="${PACKAGE_ENTRY#dev:}"
@@ -162,23 +166,25 @@ jobs:
162
166
  PACKAGE="$PACKAGE_ENTRY"
163
167
  DEV_PREFIX=""
164
168
  fi
165
-
169
+
166
170
  VERSION=$(npm explore --no-workspaces "$PACKAGE" "node -pe 'require(\"./package.json\").version'" --shell sh)
167
171
  if [[ -n "$VERSIONS" ]]; then
168
172
  VERSIONS="$VERSIONS, "
169
173
  fi
170
174
  VERSIONS="$VERSIONS$DEV_PREFIX$PACKAGE@$VERSION"
171
175
  done
172
- elif [[ -n "${{ inputs.package }}" ]]; then
176
+ FIRST_PACKAGE=$(echo "$INPUT_PACKAGES" | cut -d',' -f1 | xargs)
177
+ elif [[ -n "$INPUT_PACKAGE" ]]; then
173
178
  # Use single selection field
174
- PACKAGE="${{ inputs.package }}"
179
+ PACKAGE="$INPUT_PACKAGE"
175
180
  VERSION=$(npm explore --no-workspaces "$PACKAGE" "node -pe 'require(\"./package.json\").version'" --shell sh)
176
-
177
- if [[ "${{ inputs.update_as_dev }}" == "true" ]]; then
181
+
182
+ if [[ "$INPUT_UPDATE_AS_DEV" == "true" ]]; then
178
183
  VERSIONS="dev:$PACKAGE@$VERSION"
179
184
  else
180
185
  VERSIONS="$PACKAGE@$VERSION"
181
186
  fi
187
+ FIRST_PACKAGE="$PACKAGE"
182
188
  else
183
189
  echo "::error::Either package or packages must be specified"
184
190
  exit 1
@@ -188,16 +194,19 @@ jobs:
188
194
  git config --global user.email "95919151+yc-ui-bot@users.noreply.github.com"
189
195
  git config --global user.name "yc-ui-bot"
190
196
 
191
- # Create branch name (use first package for simplicity)
192
- # Remove dev: prefix and @ symbol for valid branch name
193
- FIRST_PACKAGE=$(echo "$PACKAGES_INPUT" | cut -d',' -f1 | xargs)
197
+ # Create branch name sanitize FIRST_PACKAGE so a hostile npm name
198
+ # (e.g. one containing `/`, spaces, or `;`) cannot escape into the
199
+ # branch ref or surrounding git commands.
194
200
  FIRST_PACKAGE=$(echo "$FIRST_PACKAGE" | sed 's/^dev://; s/@//g')
195
- BRANCH_NAME="ci/update-deps/$FIRST_PACKAGE-${{ inputs.version }}"
196
- git push -f origin :$BRANCH_NAME || true
197
- git checkout -b $BRANCH_NAME
201
+ SAFE_FIRST_PACKAGE=$(echo "$FIRST_PACKAGE" | tr -c 'A-Za-z0-9._-' '_')
202
+ SAFE_VERSION=$(echo "$INPUT_VERSION" | tr -c 'A-Za-z0-9._-' '_')
203
+ BRANCH_NAME="ci/update-deps/${SAFE_FIRST_PACKAGE}-${SAFE_VERSION}"
204
+
205
+ git push -f origin ":$BRANCH_NAME" || true
206
+ git checkout -b "$BRANCH_NAME"
198
207
  git add package.json package-lock.json
199
208
  git commit -m "fix(deps): Update $VERSIONS" --no-verify
200
- git push -u origin $BRANCH_NAME
209
+ git push -u origin "$BRANCH_NAME"
201
210
 
202
211
  # Create PR
203
212
  gh pr create --title "fix(deps): Update $VERSIONS" --body "Automated dependency update" --base master
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "5.7.6"
2
+ ".": "5.7.8"
3
3
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.7.8](https://github.com/diplodoc-platform/client/compare/v5.7.7...v5.7.8) (2026-06-10)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **deps:** Update dev:@diplodoc/mermaid-extension@2.1.2 ([338f29e](https://github.com/diplodoc-platform/client/commit/338f29ed1d76c6cd8af507baabe1dd4ff521c81e))
9
+
10
+ ## [5.7.7](https://github.com/diplodoc-platform/client/compare/v5.7.6...v5.7.7) (2026-06-01)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **deps:** Update @diplodoc/components@5.9.5 ([cb726fe](https://github.com/diplodoc-platform/client/commit/cb726fe8a6b697e70565e77f02d88b1ab112a823))
16
+
3
17
  ## [5.7.6](https://github.com/diplodoc-platform/client/compare/v5.7.5...v5.7.6) (2026-05-29)
4
18
 
5
19
 
@@ -4,14 +4,14 @@
4
4
  "976-40cbc1d2518eb8ea.js"
5
5
  ],
6
6
  "js": [
7
- "vendor-fefbbd2336b585a3.js",
7
+ "vendor-524b1f13dac0da4a.js",
8
8
  "search-286bba91cb85430c.js",
9
9
  "react-869ecca253e3f1ec.js"
10
10
  ],
11
11
  "css": [
12
- "vendor-d5e0c222434c650d.css",
12
+ "vendor-da21b7bb600238a3.css",
13
13
  "search-0580ed74afc78bb6.css",
14
- "vendor-91614c3a68c7424d.rtl.css",
14
+ "vendor-1d6206fadf034682.rtl.css",
15
15
  "app-61bec9b6ec295f5c.rtl.css",
16
16
  "search-a556879086a8816e.rtl.css"
17
17
  ]
@@ -22,13 +22,13 @@
22
22
  ],
23
23
  "js": [
24
24
  "app-c3e8973ab1d89cc8.js",
25
- "vendor-fefbbd2336b585a3.js",
25
+ "vendor-524b1f13dac0da4a.js",
26
26
  "react-869ecca253e3f1ec.js"
27
27
  ],
28
28
  "css": [
29
- "vendor-d5e0c222434c650d.css",
29
+ "vendor-da21b7bb600238a3.css",
30
30
  "app-b63bbc0bca8257d4.css",
31
- "vendor-91614c3a68c7424d.rtl.css",
31
+ "vendor-1d6206fadf034682.rtl.css",
32
32
  "app-61bec9b6ec295f5c.rtl.css",
33
33
  "search-a556879086a8816e.rtl.css"
34
34
  ]
@@ -200,6 +200,7 @@ a.pc-image-card_border_shadow,.pc-image-card_border_shadow{box-shadow:0px 4px 24
200
200
  .dropdown-content{display:flex;flex-direction:column;gap:var(--g-spacing-3)}@media(min-width: 769px){.dropdown-content{flex-direction:row}}
201
201
  .dc-mobile-dropdown{display:flex;justify-content:space-between;align-items:center;padding:10px 4px 10px 12px;width:100%}.dc-mobile-dropdown__foldable .dc-mobile-dropdown__list{display:flex;padding:4px 12px;flex-direction:column;border-radius:11px;background:var(--g-color-base-generic)}.dc-mobile-dropdown__list-item{display:flex;padding:10px 28px 10px 12px;gap:4px;width:100%;margin:0;font-weight:400}.dc-mobile-dropdown__icon{transition:transform 150ms}.dc-mobile-dropdown__icon_up{transform:rotate(-180deg)}@media(min-width: 769px){.dc-mobile-dropdown{display:none}.pc-navigation-item:has(.dc-mobile-dropdown){display:none}}
202
202
  .pc-navigation-item__content_type_label{cursor:default}
203
+ .pc-navigation-dropdown{cursor:pointer}
203
204
  .g-hotkey{display:inline-block;padding:1px 5px;border-radius:var(--g-border-radius-xs)}.g-hotkey,.g-hotkey kbd{font-family:var(--g-text-body-font-family);font-weight:var(--g-text-body-font-weight);font-size:var(--g-text-body-1-font-size);line-height:var(--g-text-body-1-line-height)}.g-hotkey_view_light{color:var(--g-color-text-primary);background-color:var(--g-color-base-generic)}.g-hotkey_view_light .g-hotkey__plus{color:var(--g-color-text-hint)}.g-hotkey_view_dark{color:var(--g-color-text-light-complementary);background-color:var(--g-color-base-light-simple-hover)}.g-hotkey_view_dark .g-hotkey__plus{color:var(--g-color-text-light-hint)}
204
205
  .g-tooltip{--_--text-color: var(--g-tooltip-text-color, var(--g-color-text-primary));--_--background-color: var(--g-tooltip-background-color, var(--g-color-base-float));--_--padding: var(--g-tooltip-padding, var(--g-spacing-1) var(--g-spacing-2));--_--border-radius: var(--g-tooltip-border-radius, 4px);--_--box-shadow: var(--g-tooltip-box-shadow, 0 1px 5px 0 var(--g-color-sfx-shadow));display:-webkit-box;-webkit-box-orient:vertical;-ms-box-orient:vertical;-webkit-line-clamp:20;-moz-line-clamp:20;-ms-line-clamp:20;box-sizing:border-box;padding:var(--_--padding);max-width:360px;background-color:var(--_--background-color);box-shadow:var(--_--box-shadow);border-radius:4px;border-radius:var(--_--border-radius);overflow:hidden;text-overflow:ellipsis}
205
206
  .g-action-tooltip{--g-tooltip-text-color: var(--g-color-text-light-primary);--g-tooltip-background-color: var(--g-color-base-float-heavy);--g-tooltip-padding: var(--g-spacing-2) var(--g-spacing-3)}.g-action-tooltip__heading{display:flex;align-items:baseline;justify-content:space-between}.g-action-tooltip__title{color:var(--g-color-text-light-primary)}.g-action-tooltip__hotkey{margin-inline-start:var(--g-spacing-2)}.g-action-tooltip__description{margin-block-start:var(--g-spacing-1);color:var(--g-color-text-light-secondary)}