@pgcorp/ui-kit 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +89 -0
  2. package/dist/assets/src/components/shared/_internal/{SDialogSurface.css_vue_type_style_index_0_src_979bf586_scoped_979bf586_lang.css → SDialogSurface.css_vue_type_style_index_0_src_d1b65adf_scoped_d1b65adf_lang.css} +1 -1
  3. package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_091d7325_scoped_091d7325_lang.css +2 -0
  4. package/dist/assets/src/components/shared/containers/{SModal.css_vue_type_style_index_0_src_64c62e90_scoped_64c62e90_lang.css → SModal.css_vue_type_style_index_0_src_23373daf_scoped_23373daf_lang.css} +1 -1
  5. package/dist/assets/src/components/shared/controls/{SButton.css_vue_type_style_index_0_src_49f356bb_scoped_49f356bb_lang.css → SButton.css_vue_type_style_index_0_src_52ad38b1_scoped_52ad38b1_lang.css} +1 -1
  6. package/dist/assets/src/components/shared/controls/{SInputText.css_vue_type_style_index_0_src_6d42d245_scoped_6d42d245_lang.css → SInputText.css_vue_type_style_index_0_src_a9c5f1aa_scoped_a9c5f1aa_lang.css} +1 -1
  7. package/dist/assets/src/components/shared/controls/{SLink.css_vue_type_style_index_0_src_fc6fdfb3_scoped_fc6fdfb3_lang.css → SLink.css_vue_type_style_index_0_src_c7ae14e1_scoped_c7ae14e1_lang.css} +1 -1
  8. package/dist/assets/src/components/shared/data-display/SCodeBlock.css_vue_type_style_index_0_src_78557968_scoped_78557968_lang.css +2 -0
  9. package/dist/assets/src/components/shared/data-display/{SCodeEditor.css_vue_type_style_index_0_src_cad79088_scoped_cad79088_lang.css → SCodeEditor.css_vue_type_style_index_0_src_124ca461_scoped_124ca461_lang.css} +1 -1
  10. package/dist/assets/src/components/shared/data-display/SCodeWorkspaceEditor.css_vue_type_style_index_0_src_b200dc8e_scoped_b200dc8e_lang.css +2 -0
  11. package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_195d5c06_scoped_195d5c06_lang.css +2 -0
  12. package/dist/assets/src/components/shared/navigation/{SBottomNav.vue_vue_type_style_index_0_scoped_a0d16ca3_lang.css → SBottomNav.vue_vue_type_style_index_0_scoped_b3963080_lang.css} +1 -1
  13. package/dist/assets/src/components/shared/navigation/{SBreadcrumbs.css_vue_type_style_index_0_src_e2c5851e_scoped_e2c5851e_lang.css → SBreadcrumbs.css_vue_type_style_index_0_src_f836963c_scoped_f836963c_lang.css} +1 -1
  14. package/dist/assets/src/components/shared/persona/_internal/SPersonaRunConsole.css_vue_type_style_index_0_src_21bf807e_scoped_21bf807e_lang.css +2 -0
  15. package/dist/index.js +4 -2
  16. package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.d.ts +243 -0
  17. package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.js +7 -0
  18. package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.d.ts +721 -239
  19. package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.js +244 -4
  20. package/dist/src/components/icons/_internal/sputnigUiIconRuntime.d.ts +18 -0
  21. package/dist/src/components/icons/_internal/sputnigUiIconRuntime.js +99 -0
  22. package/dist/src/components/icons/sputnigUiIcons.d.ts +5 -81
  23. package/dist/src/components/icons/sputnigUiIcons.js +238 -394
  24. package/dist/src/components/layout/SAppShell.vue.d.ts +2 -2
  25. package/dist/src/components/layout/SSideMenuButton.vue.d.ts +1 -1
  26. package/dist/src/components/layout/_internal/SAppBrand.vue.d.ts +3 -3
  27. package/dist/src/components/layout/types.d.ts +2 -2
  28. package/dist/src/components/shared/_internal/SDialogSurface.vue.d.ts +2 -1
  29. package/dist/src/components/shared/_internal/SDialogSurface.vue.js +2 -2
  30. package/dist/src/components/shared/_internal/SDialogSurface.vue_vue_type_script_setup_true_lang.js +38 -37
  31. package/dist/src/components/shared/_internal/SMenuItem.vue_vue_type_script_setup_true_lang.js +1 -1
  32. package/dist/src/components/shared/_internal/SToastItem.vue_vue_type_script_setup_true_lang.js +1 -1
  33. package/dist/src/components/shared/_internal/STreeNode.vue_vue_type_script_setup_true_lang.js +1 -1
  34. package/dist/src/components/shared/_internal/dialogSurface.d.ts +3 -0
  35. package/dist/src/components/shared/_internal/dialogSurface.js +23 -19
  36. package/dist/src/components/shared/containers/SCloudChromeRow.vue_vue_type_script_setup_true_lang.js +44 -44
  37. package/dist/src/components/shared/containers/SDrawer.vue.d.ts +7 -1
  38. package/dist/src/components/shared/containers/SDrawer.vue.js +2 -2
  39. package/dist/src/components/shared/containers/SDrawer.vue_vue_type_script_setup_true_lang.js +49 -44
  40. package/dist/src/components/shared/containers/SModal.vue.d.ts +7 -1
  41. package/dist/src/components/shared/containers/SModal.vue.js +2 -2
  42. package/dist/src/components/shared/containers/SModal.vue_vue_type_script_setup_true_lang.js +48 -41
  43. package/dist/src/components/shared/controls/SButton.vue.d.ts +32 -2
  44. package/dist/src/components/shared/controls/SButton.vue.js +2 -2
  45. package/dist/src/components/shared/controls/SButton.vue_vue_type_script_setup_true_lang.js +77 -79
  46. package/dist/src/components/shared/controls/SCheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
  47. package/dist/src/components/shared/controls/SComboboxTrigger.vue_vue_type_script_setup_true_lang.js +1 -1
  48. package/dist/src/components/shared/controls/SContextToggleButton.vue_vue_type_script_setup_true_lang.js +1 -1
  49. package/dist/src/components/shared/controls/SDragHandle.vue_vue_type_script_setup_true_lang.js +21 -21
  50. package/dist/src/components/shared/controls/SInputText.vue.d.ts +6 -0
  51. package/dist/src/components/shared/controls/SInputText.vue.js +2 -2
  52. package/dist/src/components/shared/controls/SInputText.vue_vue_type_script_setup_true_lang.js +117 -97
  53. package/dist/src/components/shared/controls/SLink.vue.d.ts +17 -1
  54. package/dist/src/components/shared/controls/SLink.vue.js +2 -2
  55. package/dist/src/components/shared/controls/SLink.vue_vue_type_script_setup_true_lang.js +22 -22
  56. package/dist/src/components/shared/controls/SListboxOption.vue_vue_type_script_setup_true_lang.js +1 -1
  57. package/dist/src/components/shared/controls/STextarea.d.ts +1 -1
  58. package/dist/src/components/shared/controls/STextarea.vue.d.ts +12 -18
  59. package/dist/src/components/shared/controls/_internal/SInlineTokenSurface.vue_vue_type_script_lang.js +1 -1
  60. package/dist/src/components/shared/data-display/SActionListItem.vue.d.ts +1 -1
  61. package/dist/src/components/shared/data-display/SChip.vue_vue_type_script_setup_true_lang.js +1 -1
  62. package/dist/src/components/shared/data-display/SCodeBlock.vue.d.ts +33 -11
  63. package/dist/src/components/shared/data-display/SCodeBlock.vue.js +2 -2
  64. package/dist/src/components/shared/data-display/SCodeBlock.vue_vue_type_script_setup_true_lang.js +77 -75
  65. package/dist/src/components/shared/data-display/SCodeEditor.vue.d.ts +22 -10
  66. package/dist/src/components/shared/data-display/SCodeEditor.vue.js +2 -2
  67. package/dist/src/components/shared/data-display/SCodeEditor.vue_vue_type_script_setup_true_lang.js +44 -44
  68. package/dist/src/components/shared/data-display/SCodeSearchPanel.vue_vue_type_script_setup_true_lang.js +1 -1
  69. package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue.js +2 -2
  70. package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue_vue_type_script_setup_true_lang.js +3 -3
  71. package/dist/src/components/shared/data-display/SCopyField.vue_vue_type_script_setup_true_lang.js +1 -1
  72. package/dist/src/components/shared/data-display/SDocBlock.vue_vue_type_script_setup_true_lang.js +1 -1
  73. package/dist/src/components/shared/data-display/SExpandableText.vue_vue_type_script_setup_true_lang.js +1 -1
  74. package/dist/src/components/shared/data-display/SMessage.vue_vue_type_script_setup_true_lang.js +1 -1
  75. package/dist/src/components/shared/data-display/STable.vue_vue_type_script_setup_true_lang.js +1 -1
  76. package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue.js +2 -2
  77. package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue_vue_type_script_setup_true_lang.js +2 -2
  78. package/dist/src/components/shared/database/SSqlEditor.vue_vue_type_script_setup_true_lang.js +7 -10
  79. package/dist/src/components/shared/navigation/SBottomNav.vue.js +2 -2
  80. package/dist/src/components/shared/navigation/SBottomNav.vue_vue_type_script_setup_true_lang.js +70 -68
  81. package/dist/src/components/shared/navigation/SBreadcrumbs.vue.js +2 -2
  82. package/dist/src/components/shared/navigation/SBreadcrumbs.vue_vue_type_script_setup_true_lang.js +20 -21
  83. package/dist/src/components/shared/persona/SPersonaProjectPicker.vue_vue_type_script_setup_true_lang.js +1 -1
  84. package/dist/src/components/shared/persona/_internal/SPersonaRunConsole.vue.js +2 -2
  85. package/dist/src/components/shared/persona/_internal/SPersonaRunConsole.vue_vue_type_script_setup_true_lang.js +6 -3
  86. package/dist/src/composables/useDialogOverlay.d.ts +2 -0
  87. package/dist/src/composables/useDialogOverlay.js +14 -7
  88. package/dist/src/internal/feedbackPresentation.js +1 -1
  89. package/docs/accessibility.md +10 -0
  90. package/docs/public-api.md +12 -0
  91. package/docs/versioning.md +38 -10
  92. package/package.json +1 -1
  93. package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_1226da98_scoped_1226da98_lang.css +0 -2
  94. package/dist/assets/src/components/shared/data-display/SCodeBlock.css_vue_type_style_index_0_src_aad45526_scoped_aad45526_lang.css +0 -2
  95. package/dist/assets/src/components/shared/data-display/SCodeWorkspaceEditor.css_vue_type_style_index_0_src_864bce1d_scoped_864bce1d_lang.css +0 -2
  96. package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_63180598_scoped_63180598_lang.css +0 -2
  97. package/dist/assets/src/components/shared/persona/_internal/SPersonaRunConsole.css_vue_type_style_index_0_src_c71f59d4_scoped_c71f59d4_lang.css +0 -2
@@ -3,13 +3,13 @@ import { registerLayer as t } from "../internal/layerStack.js";
3
3
  import { nextTick as n, onBeforeUnmount as r, ref as i, watch as a } from "vue";
4
4
  //#region src/composables/useDialogOverlay.ts
5
5
  function o(o) {
6
- let s = i(null), c = i({}), l = i({}), u = null, d = (e) => {
6
+ let s = i(null), c = i({}), l = i({}), u = null, d = 0, f = (e) => {
7
7
  if (e === null || e instanceof HTMLElement) {
8
8
  s.value = e;
9
9
  return;
10
10
  }
11
11
  throw TypeError("Dialog overlay panel ref обязан указывать на HTMLElement");
12
- }, f = () => {
12
+ }, p = () => {
13
13
  if (u) return;
14
14
  let n = typeof document < "u" && document.activeElement instanceof HTMLElement ? document.activeElement : null;
15
15
  u = t({
@@ -22,18 +22,25 @@ function o(o) {
22
22
  trapFocus: (t) => e(t, s, !0),
23
23
  requestDismiss: () => o.requestClose()
24
24
  }), c.value = { zIndex: u.zIndex }, l.value = { zIndex: `calc(${u.zIndex} + var(--s-layer-overlay-surface-offset))` };
25
- }, p = (e = !0) => {
25
+ }, m = (e = !0) => {
26
26
  u?.unregister({ restoreFocus: e }), u = null, c.value = {}, l.value = {};
27
27
  };
28
28
  return a(o.open, async (e, t) => {
29
+ d += 1;
30
+ let r = d;
29
31
  if (e) {
30
- f(), await n(), o.open.value && s.value?.focus();
32
+ if (p(), await n(), r !== d || !o.open.value || u === null) return;
33
+ let e = s.value;
34
+ if (!e) return;
35
+ e.focus(), r === d && o.open.value && u !== null && o.opened?.();
31
36
  return;
32
37
  }
33
- p(!!t);
34
- }, { immediate: !0 }), r(() => p(!1)), {
38
+ m(!!t);
39
+ }, { immediate: !0 }), r(() => {
40
+ d += 1, m(!1);
41
+ }), {
35
42
  panelRef: s,
36
- setPanelElement: d,
43
+ setPanelElement: f,
37
44
  backdropStyle: c,
38
45
  surfaceStyle: l
39
46
  };
@@ -1,5 +1,5 @@
1
1
  import { UI_KIT_MESSAGES as e, createUiKitTranslate as t } from "../locales/messages.js";
2
- import { AlertTriangle as n, CheckCircle2 as r, Info as i, LoaderCircle as a, XCircle as o } from "../components/icons/sputnigUiIcons.js";
2
+ import { AlertTriangle as n, CheckCircle2 as r, Info as i, LoaderCircle as a, XCircle as o } from "../components/icons/_internal/generatedSputnigUiIconComponents.js";
3
3
  //#region src/internal/feedbackPresentation.ts
4
4
  var s = {
5
5
  neutral: {
@@ -13,6 +13,11 @@
13
13
  Consumer обязан передавать человекочитаемые labels и не заменять семантику
14
14
  компонента локальными DOM listeners или CSS.
15
15
 
16
+ `SModal` и `SDrawer` сохраняют видимый заголовок как accessible name диалога
17
+ через `aria-labelledby`. `headingLevel` равен `2` по умолчанию для
18
+ самостоятельного диалога после `h1` страницы; вложенная композиция передаёт
19
+ фактический уровень document outline числом от `1` до `6`.
20
+
16
21
  `SChart` требует явный `accessibility` contract. Содержательный график получает
17
22
  accessible name через `mode: 'label'` или `mode: 'labelledby'` и по умолчанию
18
23
  рендерит assistive data table. `mode: 'decorative'` допустим только когда те же
@@ -32,6 +37,11 @@ Interactive semantics belong to UI-kit leaf components. They own:
32
37
  Consumers must provide human-readable labels and must not replace component
33
38
  semantics with local DOM listeners or CSS.
34
39
 
40
+ `SModal` and `SDrawer` retain the visible title as the dialog's accessible name
41
+ through `aria-labelledby`. `headingLevel` defaults to `2` for a standalone
42
+ dialog following the page `h1`; a nested composition passes its actual document
43
+ outline level as an integer from `1` through `6`.
44
+
35
45
  `SChart` requires an explicit `accessibility` contract. A meaningful chart gets
36
46
  an accessible name through `mode: 'label'` or `mode: 'labelledby'` and renders
37
47
  an assistive data table by default. `mode: 'decorative'` is valid only when a
@@ -62,6 +62,12 @@ callbacks и trust flags не входят в API.
62
62
  `sm/md/lg = 32/36/40 px` и label typography `12/14/14 px`; тот же
63
63
  `density="compact"` у `SInputText` даёт совместимую геометрию поля без
64
64
  consumer CSS.
65
+ `SInputText.minLength` и `SInputText.maxLength` передают строгие
66
+ неотрицательные safe integers нативному textual input; `minLength <= maxLength`
67
+ проверяется до рендера, а numeric/temporal families отвергают этот контракт.
68
+ `SModal.headingLevel` и `SDrawer.headingLevel` принимают только `1 | 2 | 3 | 4 |
69
+ 5 | 6`, используют `2` по умолчанию и сохраняют связь видимого заголовка с
70
+ dialog surface через `aria-labelledby`.
65
71
  `shared/data-display/SScrollViewport.vue` владеет accessible scroll region,
66
72
  разрешёнными осями, semantic block size, root-only keyboard navigation и
67
73
  ResizeObserver lifecycle. `shared/data-display/scrollViewport` экспортирует
@@ -132,6 +138,12 @@ and trust flags are not part of the API.
132
138
  `sm/md/lg = 32/36/40 px` with `12/14/14 px` label typography. The matching
133
139
  `SInputText.density="compact"` exposes the same field geometry without consumer
134
140
  CSS.
141
+ `SInputText.minLength` and `SInputText.maxLength` pass strict non-negative safe
142
+ integers to the native textual input. `minLength <= maxLength` is validated
143
+ before rendering, and numeric/temporal families reject this contract.
144
+ `SModal.headingLevel` and `SDrawer.headingLevel` accept `1 | 2 | 3 | 4 | 5 | 6`
145
+ only, default to `2`, and preserve the visible-title relationship with the
146
+ dialog surface through `aria-labelledby`.
135
147
  `shared/data-display/SScrollViewport.vue` owns the accessible scroll region,
136
148
  enabled axes, semantic block size, root-only keyboard navigation, and
137
149
  ResizeObserver lifecycle. `shared/data-display/scrollViewport` exports
@@ -16,11 +16,15 @@ consumer builds и browser proof. Один и тот же номер верси
16
16
  Корневая команда `make ui-kit-release-check` выполняет последовательность:
17
17
 
18
18
  1. release contract;
19
- 2. полный LVS consumer gate;
20
- 3. полный CSS consumer gate;
21
- 4. полный TestOps consumer gate;
22
- 5. smoke опубликованного package boundary;
23
- 6. dependency audit.
19
+ 2. LVS backend;
20
+ 3. LVS frontend static quality;
21
+ 4. LVS frontend unit coverage;
22
+ 5. LVS Storybook/browser proof;
23
+ 6. LVS product end-to-end proof;
24
+ 7. полный CSS consumer gate;
25
+ 8. полный TestOps consumer gate;
26
+ 9. smoke опубликованного package boundary;
27
+ 10. dependency audit.
24
28
 
25
29
  Успешная стадия получает receipt с хешем tracked inputs, своей командой,
26
30
  релевантными версиями toolchain, конфигурацией workers/окружения и fingerprints
@@ -29,12 +33,23 @@ dependency manifest или lock-файла, команды, применимог
29
33
  конфигурации инвалидирует соответствующую стадию; зависящие от неё стадии также
30
34
  выполняются повторно. Независимые совместимые receipts сохраняются. Dependency
31
35
  audit действителен шесть часов, потому что состояние advisory registry является
32
- внешним входом.
36
+ внешним входом. Его dependency fingerprint исключает только release metadata
37
+ (`name`/`version`) собственного workspace; изменение dependency fields или
38
+ разрешённого графа lock-файла всегда требует нового audit.
33
39
 
34
40
  `make ui-kit-release-proof-verify` проверяет полный набор receipts для точного Git
35
41
  commit/tree. Release artifact содержит digest этого proof и публикуется только
36
42
  командой `make ui-kit-publish`. Ручного пропуска стадий в release contract нет.
37
43
 
44
+ Для нового release tree используется `make ui-kit-release-proof-staged`. Команда
45
+ требует, чтобы все tracked-изменения были добавлены в index, а untracked и
46
+ unstaged-файлы отсутствовали. До и после каждой стадии проверяется точный
47
+ `git write-tree`, поэтому proof нельзя случайно получить для меняющегося набора
48
+ файлов. После коммита этого же дерева `make ui-kit-release-proof-verify` принимает
49
+ staged proof без повторного запуска зелёных стадий. Другой итоговый tree,
50
+ изменение зависимости, lock-файла, применимого toolchain или переменной окружения
51
+ инвалидирует соответствующие receipts по их входам.
52
+
38
53
  ## English
39
54
 
40
55
  The package follows Semantic Versioning:
@@ -48,9 +63,10 @@ consumer-build, and browser-proof checks. A version number is never republished.
48
63
 
49
64
  ### Release proof
50
65
 
51
- The root `make ui-kit-release-check` target runs the release contract, the full
52
- LVS, CSS, and TestOps consumer gates, package-boundary smoke, and the dependency
53
- audit in sequence.
66
+ The root `make ui-kit-release-check` target runs the release contract, separate
67
+ LVS backend, frontend static-quality, unit-coverage, Storybook/browser, and
68
+ product end-to-end stages, the full CSS and TestOps consumer gates,
69
+ package-boundary smoke, and the dependency audit in sequence.
54
70
 
55
71
  Each successful stage receives a receipt containing the tracked-input digest,
56
72
  command, applicable toolchain versions, worker/environment configuration, and
@@ -58,9 +74,21 @@ dependency fingerprints. A matching receipt is reused. Changes to source files,
58
74
  dependency manifests or lockfiles, the stage command, applicable toolchain, or
59
75
  configuration invalidate the affected stage and its dependants while preserving
60
76
  independent compatible receipts. The dependency-audit receipt expires after six
61
- hours because registry advisory state is an external input.
77
+ hours because registry advisory state is an external input. Its dependency
78
+ fingerprint excludes only the workspace's own release metadata (`name` and
79
+ `version`); dependency-field or resolved lock-graph changes always require a
80
+ fresh audit.
62
81
 
63
82
  `make ui-kit-release-proof-verify` validates the complete receipt set against the
64
83
  exact Git commit and tree. The release artifact embeds this proof digest and is
65
84
  published only through `make ui-kit-publish`. The release contract has no manual
66
85
  stage-skip option.
86
+
87
+ Use `make ui-kit-release-proof-staged` for a new release tree. Every tracked
88
+ change must be staged, with no untracked or unstaged files. The runner verifies
89
+ the exact `git write-tree` value before and after every stage, so a changing tree
90
+ cannot receive release proof. Once that exact tree is committed,
91
+ `make ui-kit-release-proof-verify` accepts the staged proof without rerunning
92
+ green stages. A different final tree, dependency or lockfile change, applicable
93
+ toolchain change, or relevant environment change invalidates the matching
94
+ receipts according to their declared inputs.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pgcorp/ui-kit",
3
- "version": "0.10.1",
3
+ "version": "0.11.0",
4
4
  "description": "Typed Vue 3 design system with accessible components, semantic themes, and workbench patterns.",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- .s-drawer-backdrop[data-v-1226da98]{background:var(--s-overlay-backdrop-surface);-webkit-backdrop-filter:blur(var(--s-overlay-backdrop-blur));backdrop-filter:blur(var(--s-overlay-backdrop-blur));position:fixed;inset:0}.s-drawer-shell[data-v-1226da98]{position:fixed;inset:0}.s-drawer-positioner[data-v-1226da98]{justify-content:flex-end;align-items:stretch;display:flex;position:absolute;inset:0}.s-drawer-positioner[data-placement=bottom][data-v-1226da98]{justify-content:stretch;align-items:flex-end}.s-drawer-backdrop-enter-active[data-v-1226da98],.s-drawer-backdrop-leave-active[data-v-1226da98]{transition:opacity var(--s-motion-standard) ease}.s-drawer-backdrop-enter-from[data-v-1226da98],.s-drawer-backdrop-leave-to[data-v-1226da98]{opacity:0}.s-drawer-panel-enter-active[data-v-1226da98],.s-drawer-panel-leave-active[data-v-1226da98]{transition:opacity var(--s-motion-standard) ease, transform var(--s-motion-standard) ease}.s-drawer-panel-enter-from[data-v-1226da98],.s-drawer-panel-leave-to[data-v-1226da98]{opacity:0;transform:translate(1.5rem)}.s-drawer-shell[data-placement=bottom].s-drawer-panel-enter-from[data-v-1226da98],.s-drawer-shell[data-placement=bottom].s-drawer-panel-leave-to[data-v-1226da98]{transform:translateY(1.5rem)}@media (width<=767px){.s-drawer-shell[data-placement=right].s-drawer-panel-enter-from[data-v-1226da98],.s-drawer-shell[data-placement=right].s-drawer-panel-leave-to[data-v-1226da98]{transform:translateY(1.5rem)}}@media (prefers-reduced-motion:reduce){.s-drawer-backdrop-enter-active[data-v-1226da98],.s-drawer-backdrop-leave-active[data-v-1226da98],.s-drawer-panel-enter-active[data-v-1226da98],.s-drawer-panel-leave-active[data-v-1226da98]{transition:none}.s-drawer-panel-enter-from[data-v-1226da98],.s-drawer-panel-leave-to[data-v-1226da98]{transform:none}}
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-aad45526],[data-v-aad45526]:before,[data-v-aad45526]:after,[data-v-aad45526]::backdrop{--tw-border-style:solid;--tw-font-weight:initial}}}.s-code-block[data-v-aad45526]{border-radius:var(--radius-md,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-surface-200,#e2e8f0);background-color:var(--color-surface-0,#fff);position:relative}.s-code-block[data-v-aad45526]:where(.dark,.dark *){border-color:var(--color-surface-700,#334155);background-color:#1e293b80}@supports (color:color-mix(in lab, red, red)){.s-code-block[data-v-aad45526]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-800,#1e293b) 50%, transparent)}}.s-code-block[data-v-aad45526]{contain:layout paint;content-visibility:auto;contain-intrinsic-size:100px;width:100%;min-width:0;max-width:100%;overflow:hidden}.s-code-block--viewport[data-v-aad45526]{flex-direction:column;display:flex}.s-code-block--interactive[data-v-aad45526]{contain:none;content-visibility:visible;contain-intrinsic-size:auto}.s-code-block--radius-none[data-v-aad45526]{border-radius:0}.s-code-block--radius-xl[data-v-aad45526]{border-radius:var(--radius-2xl,1rem)}.s-code-block-header[data-v-aad45526]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-surface-200,#e2e8f0);padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 1.5);justify-content:space-between;align-items:center;display:flex}.s-code-block-header[data-v-aad45526]:where(.dark,.dark *){border-color:var(--color-surface-700,#334155)}.s-code-block-header[data-v-aad45526]{flex:none}.s-code-block-editor-region[data-v-aad45526]{width:100%;min-width:0;min-height:0;display:flex}.s-code-block--viewport .s-code-block-editor-region[data-v-aad45526]{flex:auto}.s-code-block-info[data-v-aad45526]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-surface-500,#64748b);display:flex}.s-code-block-info[data-v-aad45526]:where(.dark,.dark *){color:var(--color-surface-400,#94a3b8)}.s-code-block-filename[data-v-aad45526]{--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600)}.s-code-block-language[data-v-aad45526]{font-family:var(--font-mono,"IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace)}.s-code-block-plain[data-v-aad45526]{width:100%;min-width:0;max-width:100%;color:var(--color-text);font-family:var(--font-mono);white-space:pre;tab-size:inherit;background:0 0;margin:0;padding:.75rem;font-size:.875rem;line-height:1.5;overflow:auto}.s-code-block-plain[data-v-aad45526]:focus-visible{outline:var(--s-focus-ring-width) solid var(--s-focus-ring-color);outline-offset:var(--s-focus-ring-inset-offset)}.s-code-block-plain[data-viewport=content][data-v-aad45526]{max-height:var(--s-code-editor-viewport-content-max)}.s-code-block-plain[data-viewport=document][data-v-aad45526]{overflow:visible}.s-code-block-plain[data-viewport=compact][data-v-aad45526]{height:var(--s-code-editor-viewport-compact)}.s-code-block-plain[data-viewport=standard][data-v-aad45526]{height:var(--s-code-editor-viewport-standard)}.s-code-block-plain[data-viewport=expanded][data-v-aad45526]{height:var(--s-code-editor-viewport-expanded)}.s-code-block-plain[data-viewport=fill][data-v-aad45526]{height:100%}.s-code-block-plain__lines[data-v-aad45526]{min-width:max-content;display:block}.s-code-block-plain__line[data-v-aad45526]{grid-template-columns:max-content minmax(0,1fr);display:grid}.s-code-block-plain__line[data-line-numbers=hidden][data-v-aad45526]{display:block}.s-code-block-plain__line-number[data-v-aad45526]{min-width:2.5rem;color:var(--color-text-muted);text-align:end;-webkit-user-select:none;user-select:none;padding-inline-end:.75rem}.s-code-block-plain__line-content[data-v-aad45526]{min-width:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- .s-code-workspace-editor[data-v-864bce1d]{background-color:var(--color-surface-0,#fff);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.s-code-workspace-editor[data-v-864bce1d]:where(.dark,.dark *){background-color:var(--color-surface-900,#0f172a)}.s-code-workspace-editor[data-v-864bce1d]{width:100%;height:100%}.s-code-workspace-editor[data-empty=true][data-v-864bce1d]{min-height:var(--s-code-editor-viewport-compact);padding:var(--s-space-section-gap);justify-content:center;align-items:center}
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-63180598],[data-v-63180598]:before,[data-v-63180598]:after,[data-v-63180598]::backdrop{--tw-font-weight:initial;--tw-border-style:solid}}}.s-rich-document__paragraph[data-v-63180598]{min-width:0;margin:0}.s-rich-document__heading[data-v-63180598]{--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-surface-950,#020617)}.s-rich-document__heading[data-v-63180598]:where(.dark,.dark *){color:var(--color-surface-50,#f8fafc)}.s-rich-document__heading[data-v-63180598]{min-width:0;margin:0;line-height:1.25}h1.s-rich-document__heading[data-v-63180598]{font-size:var(--text-3xl,1.875rem);line-height:var(--tw-leading,var(--text-3xl--line-height,calc(2.25 / 1.875)))}h2.s-rich-document__heading[data-v-63180598]{font-size:var(--text-2xl,1.5rem);line-height:var(--tw-leading,var(--text-2xl--line-height,calc(2 / 1.5)))}h3.s-rich-document__heading[data-v-63180598]{font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)))}h4.s-rich-document__heading[data-v-63180598]{font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75 / 1.125)))}h5.s-rich-document__heading[data-v-63180598],h6.s-rich-document__heading[data-v-63180598]{font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height,calc(1.5 / 1)))}.s-rich-document__list[data-v-63180598]{gap:var(--s-space-content-gap);margin:0;padding-inline-start:1.5rem;display:grid}ul.s-rich-document__list[data-v-63180598]{list-style:outside}ol.s-rich-document__list[data-v-63180598]{list-style:decimal}.s-rich-document__list[data-task-list=true][data-v-63180598]{padding-inline-start:0;list-style:none}.s-rich-document__task-item[data-v-63180598]{align-items:start;gap:var(--s-space-control-gap);grid-template-columns:auto minmax(0,1fr);display:grid}.s-rich-document__list-item-content[data-v-63180598],.s-rich-document__footnote-definition[data-v-63180598]{gap:var(--s-space-content-gap);min-width:0;display:grid}.s-rich-document__footnote-definition[data-v-63180598]{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-surface-200,#e2e8f0);padding-top:calc(var(--spacing,.25rem) * 3);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-surface-600,#475569)}.s-rich-document__footnote-definition[data-v-63180598]:where(.dark,.dark *){border-color:var(--color-surface-700,#334155);color:var(--color-surface-300,#cbd5e1)}.s-rich-document__footnote-definition[data-v-63180598]{scroll-margin-block-start:var(--s-space-section-gap)}.s-rich-document__quote[data-v-63180598]{border-left-style:var(--tw-border-style);border-left-width:4px;border-color:var(--color-primary-300,#93c5fd);color:var(--color-surface-600,#475569)}.s-rich-document__quote[data-v-63180598]:where(.dark,.dark *){border-color:var(--color-primary-700,#1d4ed8);color:var(--color-surface-300,#cbd5e1)}.s-rich-document__quote[data-v-63180598]{gap:var(--s-space-content-gap);margin:0;padding-inline-start:var(--s-space-section-gap);display:grid}.s-rich-document__divider[data-v-63180598]{border-style:var(--tw-border-style);border-width:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-surface-200,#e2e8f0)}.s-rich-document__divider[data-v-63180598]:where(.dark,.dark *){border-color:var(--color-surface-700,#334155)}.s-rich-document__divider[data-v-63180598]{width:100%;margin:0}.s-rich-document__figure[data-v-63180598]{gap:var(--s-space-content-gap);min-width:0;margin:0;display:grid}.s-rich-document__image[data-v-63180598]{border-radius:var(--radius-lg,1rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-surface-200,#e2e8f0);background-color:var(--color-surface-50,#f8fafc)}.s-rich-document__image[data-v-63180598]:where(.dark,.dark *){border-color:var(--color-surface-700,#334155);background-color:var(--color-surface-900,#0f172a)}.s-rich-document__image[data-v-63180598]{width:auto;max-width:100%;height:auto;margin-inline:auto;display:block}.s-rich-document__caption[data-v-63180598],.s-rich-document__resource-description[data-v-63180598]{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-surface-500,#64748b)}:is(.s-rich-document__caption[data-v-63180598],.s-rich-document__resource-description[data-v-63180598]):where(.dark,.dark *){color:var(--color-surface-400,#94a3b8)}.s-rich-document__caption[data-v-63180598]{text-align:center}.s-rich-document__resource[data-v-63180598]{align-items:center;gap:var(--s-space-content-gap);flex-wrap:wrap;min-width:0;display:flex}.s-rich-document__callout-content[data-v-63180598]{gap:var(--s-space-content-gap);min-width:0;display:grid}.s-rich-document__actions[data-v-63180598]{align-items:center;gap:var(--s-space-content-gap);flex-wrap:wrap;min-width:0;display:flex}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- .s-persona-run-console-shell[data-v-c71f59d4]{min-width:0;min-height:0;container-type:inline-size}.s-persona-run-console[data-v-c71f59d4]{gap:calc(var(--spacing,.25rem) * 4);min-width:0;min-height:0;display:grid}.s-persona-run-console[data-density=comfortable][data-v-c71f59d4]{gap:calc(var(--spacing,.25rem) * 4)}.s-persona-run-console[data-density=compact][data-v-c71f59d4]{gap:calc(var(--spacing,.25rem) * 3)}.s-persona-run-console__section[data-v-c71f59d4]{min-width:0;min-height:0}.s-persona-run-console__detail[data-v-c71f59d4]{gap:calc(var(--spacing,.25rem) * 4);min-height:0;display:grid}.s-persona-run-console__actions-line[data-v-c71f59d4]{margin-top:calc(var(--spacing,.25rem) * 3);align-items:center;gap:calc(var(--spacing,.25rem) * 2);flex-wrap:wrap;display:flex}@container (width>=52rem){.s-persona-run-console[data-density=comfortable][data-v-c71f59d4]{grid-template-columns:minmax(18rem,.72fr) minmax(28rem,1.28fr)}.s-persona-run-console[data-density=compact][data-v-c71f59d4]{grid-template-columns:minmax(16rem,.72fr) minmax(24rem,1.28fr)}}