@feugene/granularity 0.40.0 → 0.41.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 (63) hide show
  1. package/README.md +5 -4
  2. package/dist/chunks/{en-NpP9e7lC.js → en-CuuLfNHX.js} +1 -7
  3. package/dist/chunks/{en-NpP9e7lC.js.map → en-CuuLfNHX.js.map} +1 -1
  4. package/dist/chunks/{es-DaeA2Ql-.js → es-CSnmrcMw.js} +1 -7
  5. package/dist/chunks/{es-DaeA2Ql-.js.map → es-CSnmrcMw.js.map} +1 -1
  6. package/dist/chunks/{es-Do2CNrC2.js → es-CsmvfESn.js} +3 -3
  7. package/dist/chunks/{es-Do2CNrC2.js.map → es-CsmvfESn.js.map} +1 -1
  8. package/dist/chunks/{generated-BcfXQY4j.js → generated-B95IBXs6.js} +0 -56
  9. package/dist/chunks/{generated-BcfXQY4j.js.map → generated-B95IBXs6.js.map} +1 -1
  10. package/dist/chunks/{granular-provider-vVZ-76bP.js → granular-provider-BshNi2la.js} +0 -2
  11. package/dist/chunks/granular-provider-BshNi2la.js.map +1 -0
  12. package/dist/chunks/{ru-Bg9-DPmg.js → ru-BKWafECI.js} +1 -7
  13. package/dist/chunks/{ru-Bg9-DPmg.js.map → ru-BKWafECI.js.map} +1 -1
  14. package/dist/components/GrDataTable/chunks/{GrDataTable-BYYG_XZA.js.map → GrDataTable-DpyipOFx.js.map} +1 -1
  15. package/dist/components/GrDataTable/index.js +1 -1
  16. package/dist/components/GrImageViewer/chunks/{GrImageViewer-BV38WM3x.js.map → GrImageViewer-Dd2gJ-j_.js.map} +1 -1
  17. package/dist/components/GrImageViewer/index.js +1 -1
  18. package/dist/components/GrInputTag/chunks/{GrInputTag-DhfUNOA5.js.map → GrInputTag-3Au5HWZL.js.map} +1 -1
  19. package/dist/components/GrInputTag/index.js +1 -1
  20. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-CdtmUpZ3.js → GrJsonViewer-CDGOX3C0.js} +30 -4
  21. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-CdtmUpZ3.js.map → GrJsonViewer-CDGOX3C0.js.map} +1 -1
  22. package/dist/components/GrJsonViewer/index.js +1 -1
  23. package/dist/components/GrTree/chunks/{GrTree-CkELQwR8.js.map → GrTree-BFWFc0Bm.js.map} +1 -1
  24. package/dist/components/GrTree/index.js +1 -1
  25. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-BTb8e1az.js → GrTreeSelect-DJa2lYGe.js} +1 -1
  26. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-BTb8e1az.js.map → GrTreeSelect-DJa2lYGe.js.map} +1 -1
  27. package/dist/components/GrTreeSelect/index.js +1 -1
  28. package/dist/granular-provider-node.js +1 -1
  29. package/dist/granular-provider.js +1 -1
  30. package/dist/i18n/all.js +1 -1
  31. package/dist/i18n/index.js +1 -1
  32. package/dist/index.js +8 -10
  33. package/dist/theme.js +1 -1
  34. package/dist/tokens.js +1 -1
  35. package/dist/types/components/GrJsonViewer/GrJsonViewer.vue.d.ts +1 -1
  36. package/dist/types/granular-provider/shared.d.ts +0 -1
  37. package/dist/types/i18n/messages/en.d.ts +0 -10
  38. package/dist/types/i18n/messages/es.d.ts +0 -10
  39. package/dist/types/i18n/messages/ru.d.ts +0 -10
  40. package/dist/types/index.d.ts +0 -1
  41. package/dist/web-types.json +37 -122
  42. package/package.json +1 -5
  43. package/dist/chunks/config-DolULhjJ.js +0 -92
  44. package/dist/chunks/config-DolULhjJ.js.map +0 -1
  45. package/dist/chunks/copy-DChChcq-.js +0 -29
  46. package/dist/chunks/copy-DChChcq-.js.map +0 -1
  47. package/dist/chunks/granular-provider-vVZ-76bP.js.map +0 -1
  48. package/dist/components/GrCodeBlock/chunks/GrCodeBlock-BUOwKwQE.js +0 -315
  49. package/dist/components/GrCodeBlock/chunks/GrCodeBlock-BUOwKwQE.js.map +0 -1
  50. package/dist/components/GrCodeBlock/index.js +0 -3
  51. package/dist/components/GrCodeBlock/styles.css +0 -1
  52. package/dist/types/components/GrCodeBlock/GrCodeBlock.vue.d.ts +0 -79
  53. package/dist/types/components/GrCodeBlock/config.d.ts +0 -1
  54. package/dist/types/components/GrCodeBlock/defaults.d.ts +0 -21
  55. package/dist/types/components/GrCodeBlock/grCodeBlockStyles.d.ts +0 -53
  56. package/dist/types/components/GrCodeBlock/index.d.ts +0 -6
  57. package/dist/types/components/GrCodeBlock/safelist.d.ts +0 -1
  58. package/dist/types/components/GrCodeBlock/serializeCode.d.ts +0 -19
  59. package/dist/types/components/GrCodeBlock/tokenizeJson.d.ts +0 -22
  60. package/dist/components/GrDataTable/chunks/{GrDataTable-BYYG_XZA.js → GrDataTable-DpyipOFx.js} +1 -1
  61. package/dist/components/GrImageViewer/chunks/{GrImageViewer-BV38WM3x.js → GrImageViewer-Dd2gJ-j_.js} +1 -1
  62. package/dist/components/GrInputTag/chunks/{GrInputTag-DhfUNOA5.js → GrInputTag-3Au5HWZL.js} +1 -1
  63. package/dist/components/GrTree/chunks/{GrTree-CkELQwR8.js → GrTree-BFWFc0Bm.js} +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@feugene/granularity",
4
- "version": "0.40.0",
4
+ "version": "0.41.0",
5
5
  "framework": "vue",
6
6
  "js-types-syntax": "typescript",
7
7
  "description-markup": "markdown",
@@ -1798,91 +1798,6 @@
1798
1798
  ]
1799
1799
  }
1800
1800
  },
1801
- {
1802
- "name": "GrCodeBlock",
1803
- "source": {
1804
- "module": "@feugene/granularity/components/GrCodeBlock",
1805
- "symbol": "GrCodeBlock"
1806
- },
1807
- "props": [
1808
- {
1809
- "name": "size",
1810
- "default": "undefined",
1811
- "value": {
1812
- "kind": "expression",
1813
- "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | undefined"
1814
- }
1815
- },
1816
- {
1817
- "name": "ariaLabel",
1818
- "description": "Имя области прокрутки. Безымянную скринридер объявляет просто «регион».",
1819
- "default": "undefined",
1820
- "value": {
1821
- "kind": "expression",
1822
- "type": "string | undefined"
1823
- }
1824
- },
1825
- {
1826
- "name": "language",
1827
- "default": "\"json\"",
1828
- "value": {
1829
- "kind": "expression",
1830
- "type": "GrCodeBlockLanguage | undefined"
1831
- }
1832
- },
1833
- {
1834
- "name": "maxHeight",
1835
- "description": "Высота, после которой включается вертикальный скролл.",
1836
- "default": "undefined",
1837
- "value": {
1838
- "kind": "expression",
1839
- "type": "string | number | undefined"
1840
- }
1841
- },
1842
- {
1843
- "name": "copyable",
1844
- "description": "Кнопка копирования. Без защищённого контекста не рисуется вовсе.",
1845
- "default": "undefined",
1846
- "value": {
1847
- "kind": "expression",
1848
- "type": "boolean | undefined"
1849
- }
1850
- },
1851
- {
1852
- "name": "wrap",
1853
- "description": "Переносить длинные строки вместо горизонтальной прокрутки.",
1854
- "default": "undefined",
1855
- "value": {
1856
- "kind": "expression",
1857
- "type": "boolean | undefined"
1858
- }
1859
- },
1860
- {
1861
- "name": "lineNumbers",
1862
- "default": "undefined",
1863
- "value": {
1864
- "kind": "expression",
1865
- "type": "boolean | undefined"
1866
- }
1867
- },
1868
- {
1869
- "name": "code",
1870
- "required": true,
1871
- "description": "Строка или значение: объект сериализуется с отступом.",
1872
- "value": {
1873
- "kind": "expression",
1874
- "type": "unknown"
1875
- }
1876
- }
1877
- ],
1878
- "js": {
1879
- "events": [
1880
- {
1881
- "name": "copy"
1882
- }
1883
- ]
1884
- }
1885
- },
1886
1801
  {
1887
1802
  "name": "GrCollapse",
1888
1803
  "source": {
@@ -2221,15 +2136,6 @@
2221
2136
  "type": "GrCommandItem[] | undefined"
2222
2137
  }
2223
2138
  },
2224
- {
2225
- "name": "maxHeight",
2226
- "description": "Максимальная высота списка, px.",
2227
- "default": "360",
2228
- "value": {
2229
- "kind": "expression",
2230
- "type": "number | undefined"
2231
- }
2232
- },
2233
2139
  {
2234
2140
  "name": "emptyText",
2235
2141
  "default": "undefined",
@@ -2256,6 +2162,15 @@
2256
2162
  "type": "string | null | undefined"
2257
2163
  }
2258
2164
  },
2165
+ {
2166
+ "name": "maxHeight",
2167
+ "description": "Максимальная высота списка, px.",
2168
+ "default": "360",
2169
+ "value": {
2170
+ "kind": "expression",
2171
+ "type": "number | undefined"
2172
+ }
2173
+ },
2259
2174
  {
2260
2175
  "name": "showHotkeyHint",
2261
2176
  "description": "Показывать подсказку сочетания в поле ввода.",
@@ -5942,15 +5857,6 @@
5942
5857
  "type": "string | number | undefined"
5943
5858
  }
5944
5859
  },
5945
- {
5946
- "name": "copyable",
5947
- "description": "Кнопка копирования узла в строке.",
5948
- "default": "undefined",
5949
- "value": {
5950
- "kind": "expression",
5951
- "type": "boolean | undefined"
5952
- }
5953
- },
5954
5860
  {
5955
5861
  "name": "rootLabel",
5956
5862
  "description": "Подпись корня. По умолчанию `$` — так адресуют путь JSONPath и dev-tools.",
@@ -5996,6 +5902,15 @@
5996
5902
  "type": "boolean | undefined"
5997
5903
  }
5998
5904
  },
5905
+ {
5906
+ "name": "copyable",
5907
+ "description": "Кнопка копирования узла в строке.",
5908
+ "default": "undefined",
5909
+ "value": {
5910
+ "kind": "expression",
5911
+ "type": "boolean | undefined"
5912
+ }
5913
+ },
5999
5914
  {
6000
5915
  "name": "value",
6001
5916
  "required": true,
@@ -10201,15 +10116,6 @@
10201
10116
  "type": "boolean | undefined"
10202
10117
  }
10203
10118
  },
10204
- {
10205
- "name": "maxHeight",
10206
- "description": "Максимальная высота скролл-контейнера (включает вертикальный скролл). Число трактуется как пиксели. Нужен для работы `stickyHeader`.",
10207
- "default": "undefined",
10208
- "value": {
10209
- "kind": "expression",
10210
- "type": "string | number | undefined"
10211
- }
10212
- },
10213
10119
  {
10214
10120
  "name": "empty",
10215
10121
  "description": "Таблица пуста. По умолчанию определяется по содержимому слота.",
@@ -10228,6 +10134,15 @@
10228
10134
  "type": "string | undefined"
10229
10135
  }
10230
10136
  },
10137
+ {
10138
+ "name": "maxHeight",
10139
+ "description": "Максимальная высота скролл-контейнера (включает вертикальный скролл). Число трактуется как пиксели. Нужен для работы `stickyHeader`.",
10140
+ "default": "undefined",
10141
+ "value": {
10142
+ "kind": "expression",
10143
+ "type": "string | number | undefined"
10144
+ }
10145
+ },
10231
10146
  {
10232
10147
  "name": "caption",
10233
10148
  "description": "Текст caption для screen reader'ов. Рендерится как `<caption class=\"sr-only\">`, если не передан слот `#caption`.",
@@ -10908,15 +10823,6 @@
10908
10823
  "type": "Placement | undefined"
10909
10824
  }
10910
10825
  },
10911
- {
10912
- "name": "text",
10913
- "description": "Текст подсказки. Разметка вместо текста — слот `#content`.",
10914
- "default": "undefined",
10915
- "value": {
10916
- "kind": "expression",
10917
- "type": "string | undefined"
10918
- }
10919
- },
10920
10826
  {
10921
10827
  "name": "offsetPx",
10922
10828
  "description": "Зазор между триггером и панелью, px.",
@@ -10944,6 +10850,15 @@
10944
10850
  "type": "number | undefined"
10945
10851
  }
10946
10852
  },
10853
+ {
10854
+ "name": "text",
10855
+ "description": "Текст подсказки. Разметка вместо текста — слот `#content`.",
10856
+ "default": "undefined",
10857
+ "value": {
10858
+ "kind": "expression",
10859
+ "type": "string | undefined"
10860
+ }
10861
+ },
10947
10862
  {
10948
10863
  "name": "iconColor",
10949
10864
  "description": "Цвет триггер-иконки (CSS color). По умолчанию — `var(--gr-muted-fg)`.",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@feugene/granularity",
3
3
  "description": "Granularity design system package with Vue 3 components, consumed via the `@feugene/unocss-preset-granular` preset.",
4
- "version": "0.40.0",
4
+ "version": "0.41.0",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": {
7
7
  "name": "Evgeniy Fureev",
@@ -118,10 +118,6 @@
118
118
  "types": "./dist/types/components/GrChipGroup/index.d.ts",
119
119
  "import": "./dist/components/GrChipGroup/index.js"
120
120
  },
121
- "./components/GrCodeBlock": {
122
- "types": "./dist/types/components/GrCodeBlock/index.d.ts",
123
- "import": "./dist/components/GrCodeBlock/index.js"
124
- },
125
121
  "./components/GrCollapse": {
126
122
  "types": "./dist/types/components/GrCollapse/index.d.ts",
127
123
  "import": "./dist/components/GrCollapse/index.js"
@@ -1,92 +0,0 @@
1
- import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
2
- import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
3
- //#region src/components/GrCodeBlock/grCodeBlockStyles.ts
4
- /**
5
- * Классы `GrCodeBlock`.
6
- *
7
- * Роли подсветки перечислены целиком, по литералу на ветку: UnoCSS сканирует
8
- * исходный текст файла, и собранное шаблонной строкой имя уехало бы в CSS как
9
- * литерал.
10
- */
11
- /**
12
- * Зацепка собственного CSS компонента (номера строк). Не утилита: CSS она не
13
- * порождает, поэтому в `safelist` не идёт — там гейт справедливо считает такую
14
- * запись мёртвой.
15
- */
16
- var codeBlockHookClass = "gr-code-block";
17
- /** Включает колонку номеров. Тоже зацепка, не утилита. */
18
- var codeBlockNumberedClass = "gr-code-block--numbered";
19
- /**
20
- * Поверхность держит корень, а не `<pre>`: кнопка копирования стоит рядом со
21
- * скроллером, и жёлоб под неё обязан быть частью блока, а не полем страницы.
22
- */
23
- var codeBlockRootClass = "relative rounded-[var(--gr-radius-md)] bg-[var(--gr-code-block-bg,var(--gr-muted))] text-[var(--gr-code-block-fg,var(--gr-fg))]";
24
- /**
25
- * Полоса под кнопку: 28 px самой кнопки плюс отбивка `right-1`.
26
- *
27
- * Кнопка не может висеть поверх `<pre>`: полосу прокрутки браузер рисует у
28
- * правого края скроллера, в тех же 8–15 px, и накрытую кнопкой её не ухватить
29
- * мышью. Отступами это не лечится — их пришлось бы взять больше ширины самой
30
- * кнопки, и «угол» перестал бы быть углом. Витринный `doc/CodeBlock.vue` решает
31
- * то же самое шапкой; у пакетного блока шапки нет, поэтому место отдаётся
32
- * жёлобом.
33
- */
34
- var codeBlockGutterClass = "pr-9";
35
- /** Скроллер обязан показывать фокус: он стоит в таб-порядке. */
36
- var codeBlockScrollClass = "overflow-auto focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]";
37
- var codeBlockWrapClass = "whitespace-pre-wrap break-words";
38
- var codeBlockNowrapClass = "whitespace-pre";
39
- /** Кнопка копирования: правый верхний угол, внутри жёлоба. */
40
- var codeBlockCopyClass = "absolute right-1 top-1 z-[1]";
41
- var codeBlockPaddings = {
42
- xs: "p-2",
43
- sm: "p-2.5",
44
- md: "p-3",
45
- lg: "p-4"
46
- };
47
- var codeBlockTextSizes = {
48
- xs: "text-[length:var(--gr-control-text-3xs)] leading-[var(--gr-control-leading-3xs)]",
49
- sm: "text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)]",
50
- md: "text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]",
51
- lg: "text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]"
52
- };
53
- /**
54
- * Роли подсветки. Дефолты — ссылки на `-text`-роли темы: они переключаются
55
- * вместе с ней, поэтому подсветка работает в обеих без своего theme-слоя.
56
- *
57
- * Число взято от `azure`, а не от `info`: `info` — синий в двух шагах от индиго
58
- * `primary`, и пара «ключ ↔ число» давала ΔE 9.4 в светлой теме и 7.8 в тёмной.
59
- * В `{"count": 42}` эти два цвета стоят через двоеточие и читались бы как один.
60
- * С `azure` расстояние 53.8 и 16.6. Гейт — `grCodeBlockContrast.test.ts`.
61
- */
62
- var codeTokenClass = {
63
- key: "text-[var(--gr-code-block-key,var(--gr-primary-text))]",
64
- string: "text-[var(--gr-code-block-string,var(--gr-success-text))]",
65
- number: "text-[var(--gr-code-block-number,var(--gr-azure-text))]",
66
- literal: "text-[var(--gr-code-block-literal,var(--gr-warning-text))]",
67
- punctuation: "text-[var(--gr-code-block-fg,var(--gr-fg))]",
68
- plain: ""
69
- };
70
- //#endregion
71
- //#region src/components/GrCodeBlock/safelist.ts
72
- var grCodeBlockSafelist = [.../* @__PURE__ */ new Set([
73
- ...splitClassTokens(codeBlockRootClass),
74
- ...splitClassTokens("m-0"),
75
- ...splitClassTokens(codeBlockScrollClass),
76
- ...splitClassTokens(codeBlockWrapClass),
77
- ...splitClassTokens(codeBlockNowrapClass),
78
- ...splitClassTokens(codeBlockCopyClass),
79
- ...splitClassTokens(codeBlockGutterClass),
80
- ...Object.values(codeBlockPaddings).flatMap(splitClassTokens),
81
- ...Object.values(codeBlockTextSizes).flatMap(splitClassTokens),
82
- ...Object.values(codeTokenClass).flatMap(splitClassTokens)
83
- ])];
84
- //#endregion
85
- //#region src/components/GrCodeBlock/config.ts
86
- var grCodeBlockConfig = defineGranularComponent(import.meta.url, {
87
- name: "GrCodeBlock",
88
- dependencies: ["GrButton"],
89
- safelist: grCodeBlockSafelist
90
- });
91
- //#endregion
92
- export { codeBlockHookClass as a, codeBlockPaddings as c, codeBlockTextSizes as d, codeBlockWrapClass as f, codeBlockGutterClass as i, codeBlockRootClass as l, grCodeBlockSafelist as n, codeBlockNowrapClass as o, codeTokenClass as p, codeBlockCopyClass as r, codeBlockNumberedClass as s, grCodeBlockConfig as t, codeBlockScrollClass as u };
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-DolULhjJ.js","names":[],"sources":["../../src/components/GrCodeBlock/grCodeBlockStyles.ts","../../src/components/GrCodeBlock/safelist.ts","../../src/components/GrCodeBlock/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrCodeTokenKind } from './tokenizeJson'\n\n/**\n * Классы `GrCodeBlock`.\n *\n * Роли подсветки перечислены целиком, по литералу на ветку: UnoCSS сканирует\n * исходный текст файла, и собранное шаблонной строкой имя уехало бы в CSS как\n * литерал.\n */\n\n/**\n * Зацепка собственного CSS компонента (номера строк). Не утилита: CSS она не\n * порождает, поэтому в `safelist` не идёт — там гейт справедливо считает такую\n * запись мёртвой.\n */\nexport const codeBlockHookClass = 'gr-code-block'\n\n/** Включает колонку номеров. Тоже зацепка, не утилита. */\nexport const codeBlockNumberedClass = 'gr-code-block--numbered'\n\n/**\n * Поверхность держит корень, а не `<pre>`: кнопка копирования стоит рядом со\n * скроллером, и жёлоб под неё обязан быть частью блока, а не полем страницы.\n */\nexport const codeBlockRootClass = 'relative rounded-[var(--gr-radius-md)] bg-[var(--gr-code-block-bg,var(--gr-muted))] text-[var(--gr-code-block-fg,var(--gr-fg))]'\n\n/**\n * Полоса под кнопку: 28 px самой кнопки плюс отбивка `right-1`.\n *\n * Кнопка не может висеть поверх `<pre>`: полосу прокрутки браузер рисует у\n * правого края скроллера, в тех же 8–15 px, и накрытую кнопкой её не ухватить\n * мышью. Отступами это не лечится — их пришлось бы взять больше ширины самой\n * кнопки, и «угол» перестал бы быть углом. Витринный `doc/CodeBlock.vue` решает\n * то же самое шапкой; у пакетного блока шапки нет, поэтому место отдаётся\n * жёлобом.\n */\nexport const codeBlockGutterClass = 'pr-9'\n\n/** Браузерный отступ `<pre>`: фон и радиус живут на корне, полю здесь не место. */\nexport const codeBlockSurfaceClass = 'm-0'\n\n/** Скроллер обязан показывать фокус: он стоит в таб-порядке. */\nexport const codeBlockScrollClass = 'overflow-auto focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const codeBlockWrapClass = 'whitespace-pre-wrap break-words'\nexport const codeBlockNowrapClass = 'whitespace-pre'\n\n/** Кнопка копирования: правый верхний угол, внутри жёлоба. */\nexport const codeBlockCopyClass = 'absolute right-1 top-1 z-[1]'\n\nexport const codeBlockPaddings: Record<GrComponentSize, string> = {\n xs: 'p-2',\n sm: 'p-2.5',\n md: 'p-3',\n lg: 'p-4',\n}\n\nexport const codeBlockTextSizes: Record<GrComponentSize, string> = {\n xs: 'text-[length:var(--gr-control-text-3xs)] leading-[var(--gr-control-leading-3xs)]',\n sm: 'text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)]',\n md: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n lg: 'text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n}\n\n/**\n * Роли подсветки. Дефолты — ссылки на `-text`-роли темы: они переключаются\n * вместе с ней, поэтому подсветка работает в обеих без своего theme-слоя.\n *\n * Число взято от `azure`, а не от `info`: `info` — синий в двух шагах от индиго\n * `primary`, и пара «ключ ↔ число» давала ΔE 9.4 в светлой теме и 7.8 в тёмной.\n * В `{\"count\": 42}` эти два цвета стоят через двоеточие и читались бы как один.\n * С `azure` расстояние 53.8 и 16.6. Гейт — `grCodeBlockContrast.test.ts`.\n */\nexport const codeTokenClass: Record<GrCodeTokenKind, string> = {\n key: 'text-[var(--gr-code-block-key,var(--gr-primary-text))]',\n string: 'text-[var(--gr-code-block-string,var(--gr-success-text))]',\n number: 'text-[var(--gr-code-block-number,var(--gr-azure-text))]',\n literal: 'text-[var(--gr-code-block-literal,var(--gr-warning-text))]',\n punctuation: 'text-[var(--gr-code-block-fg,var(--gr-fg))]',\n plain: '',\n}\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n codeBlockCopyClass,\n codeBlockGutterClass,\n codeBlockNowrapClass,\n codeBlockPaddings,\n codeBlockRootClass,\n codeBlockScrollClass,\n codeBlockSurfaceClass,\n codeBlockTextSizes,\n codeBlockWrapClass,\n codeTokenClass,\n} from './grCodeBlockStyles'\n\n// Классы из вычисляемых мап (роль токена, размер) UnoCSS сканом не находит —\n// только safelist. Литералы хелпера туда же: на сборке он уезжает в общий чанк.\n//\n// `codeBlockHookClass` и `codeBlockNumberedClass` сюда НЕ идут: это селекторы\n// собственного `<style>` компонента, CSS из них не порождается, и гейт\n// `documentedConfig` справедливо считал бы такую запись мёртвой.\nexport const grCodeBlockSafelist = [...new Set([\n ...splitClassTokens(codeBlockRootClass),\n ...splitClassTokens(codeBlockSurfaceClass),\n ...splitClassTokens(codeBlockScrollClass),\n ...splitClassTokens(codeBlockWrapClass),\n ...splitClassTokens(codeBlockNowrapClass),\n ...splitClassTokens(codeBlockCopyClass),\n ...splitClassTokens(codeBlockGutterClass),\n ...Object.values(codeBlockPaddings).flatMap(splitClassTokens),\n ...Object.values(codeBlockTextSizes).flatMap(splitClassTokens),\n ...Object.values(codeTokenClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCodeBlockSafelist } from './safelist'\n\nexport const grCodeBlockConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCodeBlock',\n dependencies: ['GrButton'],\n safelist: grCodeBlockSafelist,\n})\n"],"mappings":";;;;;;;;;;;;;;;AAiBA,IAAa,qBAAqB;;AAGlC,IAAa,yBAAyB;;;;;AAMtC,IAAa,qBAAqB;;;;;;;;;;;AAYlC,IAAa,uBAAuB;;AAMpC,IAAa,uBAAuB;AAEpC,IAAa,qBAAqB;AAClC,IAAa,uBAAuB;;AAGpC,IAAa,qBAAqB;AAElC,IAAa,oBAAqD;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,qBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;;;AAWA,IAAa,iBAAkD;CAC7D,KAAK;CACL,QAAQ;CACR,QAAQ;CACR,SAAS;CACT,aAAa;CACb,OAAO;AACT;;;AC7DA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAA,KAAsC;CACzC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;AAC3D,CAAC,CAAC;;;AC5BF,IAAa,oBAAoB,wBAAwB,YAAY,KAAK;CACxE,MAAM;CACN,cAAc,CAAC,UAAU;CACzB,UAAU;AACZ,CAAC"}
@@ -1,29 +0,0 @@
1
- import { createElementBlock, createElementVNode, markRaw, openBlock } from "vue";
2
- //#region ~icons/lucide/copy
3
- var _hoisted_1 = {
4
- viewBox: "0 0 24 24",
5
- width: "1.2em",
6
- height: "1.2em"
7
- };
8
- function render$1(_ctx, _cache) {
9
- return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [createElementVNode("g", {
10
- fill: "none",
11
- stroke: "currentColor",
12
- "stroke-linecap": "round",
13
- "stroke-linejoin": "round",
14
- "stroke-width": "2"
15
- }, [createElementVNode("rect", {
16
- width: "14",
17
- height: "14",
18
- x: "8",
19
- y: "8",
20
- rx: "2",
21
- ry: "2"
22
- }), createElementVNode("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })], -1)])]);
23
- }
24
- var copy_default = markRaw({
25
- name: "lucide-copy",
26
- render: render$1
27
- });
28
- //#endregion
29
- export { copy_default as t };
@@ -1 +0,0 @@
1
- {"version":3,"file":"copy-DChChcq-.js","names":[],"sources":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"granular-provider-vVZ-76bP.js","names":[],"sources":["../../src/components/GrDialog/config.ts","../../src/components/GrResponseErrorBanner/config.ts","../../src/granular-provider/shared.ts","../../src/granular-provider/index.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDialogSafelist } from './safelist'\n\nexport const grDialogConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDialog',\n dependencies: ['GrButton', 'GrModal'],\n safelist: grDialogSafelist,\n})\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grResponseErrorBannerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrResponseErrorBanner',\n dependencies: ['GrAlert', 'GrButton'],\n})\n","// `id`, `theme.*`, `packageBaseUrl` и реестр компонентов провайдера.\n//\n// Все `new URL('../styles/...', import.meta.url)` обязаны лежать именно здесь:\n// `shared.ts` в одной директории с `index.ts` / `node.ts`, поэтому\n// относительные пути совпадают. Для браузера безопасно — бандлеры\n// транслируют такие литералы в статические asset-URL.\n//\n// `apps/showcase/scripts/generate-component-api.mjs` читает список компонентов\n// из `Object.keys(granularityComponentConfigs)` через vite SSR.\nimport {\n defineGranularProvider,\n type GranularComponentDescriptor,\n type GranularProvider,\n resolvePackageBaseUrl,\n} from '@feugene/unocss-preset-granular/contract'\n// <granularity:components:imports> — блок генерируется `yarn generate:registry`\nimport { grAlertConfig } from '../components/GrAlert/config'\nimport { grAutocompleteConfig } from '../components/GrAutocomplete/config'\nimport { grAvatarConfig } from '../components/GrAvatar/config'\nimport { grBadgeConfig } from '../components/GrBadge/config'\nimport { grBadgeWrapConfig } from '../components/GrBadgeWrap/config'\nimport { grBottomNavConfig } from '../components/GrBottomNav/config'\nimport { grBreadcrumbsConfig } from '../components/GrBreadcrumbs/config'\nimport { grButtonConfig } from '../components/GrButton/config'\nimport { grButtonGroupConfig } from '../components/GrButtonGroup/config'\nimport { grCardConfig } from '../components/GrCard/config'\nimport { grCheckboxConfig } from '../components/GrCheckbox/config'\nimport { grCheckboxGroupConfig } from '../components/GrCheckboxGroup/config'\nimport { grChipConfig } from '../components/GrChip/config'\nimport { grChipGroupConfig } from '../components/GrChipGroup/config'\nimport { grCodeBlockConfig } from '../components/GrCodeBlock/config'\nimport { grCollapseConfig } from '../components/GrCollapse/config'\nimport { grColorPickerConfig } from '../components/GrColorPicker/config'\nimport { grCommandPaletteConfig } from '../components/GrCommandPalette/config'\nimport { grConfigProviderConfig } from '../components/GrConfigProvider/config'\nimport { grConfirmDialogConfig } from '../components/GrConfirmDialog/config'\nimport { grContextMenuConfig } from '../components/GrContextMenu/config'\nimport { grDataTableConfig } from '../components/GrDataTable/config'\nimport { grDeltaConfig } from '../components/GrDelta/config'\nimport { grDescriptionListConfig } from '../components/GrDescriptionList/config'\nimport { grDialogConfig } from '../components/GrDialog/config'\nimport { grDialogServiceConfig } from '../components/GrDialogService/config'\nimport { grDividerConfig } from '../components/GrDivider/config'\nimport { grDrawerConfig } from '../components/GrDrawer/config'\nimport { grDropdownConfig } from '../components/GrDropdown/config'\nimport { grDropdownMenuConfig } from '../components/GrDropdownMenu/config'\nimport { grEmptyStateConfig } from '../components/GrEmptyState/config'\nimport { grFilePreviewConfig } from '../components/GrFilePreview/config'\nimport { grFileUploadConfig } from '../components/GrFileUpload/config'\nimport { grFormConfig } from '../components/GrForm/config'\nimport { grFormFieldConfig } from '../components/GrFormField/config'\nimport { grFormFileConfig } from '../components/GrFormFile/config'\nimport { grFormSectionConfig } from '../components/GrFormSection/config'\nimport { grIconConfig } from '../components/GrIcon/config'\nimport { grImageViewerConfig } from '../components/GrImageViewer/config'\nimport { grInputConfig } from '../components/GrInput/config'\nimport { grInputTagConfig } from '../components/GrInputTag/config'\nimport { grJsonViewerConfig } from '../components/GrJsonViewer/config'\nimport { grKbdConfig } from '../components/GrKbd/config'\nimport { grLinkConfig } from '../components/GrLink/config'\nimport { grListConfig } from '../components/GrList/config'\nimport { grLoadingConfig } from '../components/GrLoading/config'\nimport { grModalConfig } from '../components/GrModal/config'\nimport { grNavbarConfig } from '../components/GrNavbar/config'\nimport { grNumberInputConfig } from '../components/GrNumberInput/config'\nimport { grPaginationConfig } from '../components/GrPagination/config'\nimport { grPopoverConfig } from '../components/GrPopover/config'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config'\nimport { grProgressCircleConfig } from '../components/GrProgressCircle/config'\nimport { grPromptDialogConfig } from '../components/GrPromptDialog/config'\nimport { grRadioConfig } from '../components/GrRadio/config'\nimport { grRadioGroupConfig } from '../components/GrRadioGroup/config'\nimport { grRatingConfig } from '../components/GrRating/config'\nimport { grResponseErrorBannerConfig } from '../components/GrResponseErrorBanner/config'\nimport { grSegmentedConfig } from '../components/GrSegmented/config'\nimport { grSelectConfig } from '../components/GrSelect/config'\nimport { grSidebarConfig } from '../components/GrSidebar/config'\nimport { grSkeletonConfig } from '../components/GrSkeleton/config'\nimport { grSliderConfig } from '../components/GrSlider/config'\nimport { grSortableListConfig } from '../components/GrSortableList/config'\nimport { grSplitterConfig } from '../components/GrSplitter/config'\nimport { grStatisticConfig } from '../components/GrStatistic/config'\nimport { grStepsConfig } from '../components/GrSteps/config'\nimport { grSwitchConfig } from '../components/GrSwitch/config'\nimport { grTableConfig } from '../components/GrTable/config'\nimport { grTabPanelsConfig } from '../components/GrTabPanels/config'\nimport { grTabsConfig } from '../components/GrTabs/config'\nimport { grTextareaConfig } from '../components/GrTextarea/config'\nimport { grTimelineConfig } from '../components/GrTimeline/config'\nimport { grToasterConfig } from '../components/GrToaster/config'\nimport { grTooltipConfig } from '../components/GrTooltip/config'\nimport { grTreeConfig } from '../components/GrTree/config'\nimport { grTreeSelectConfig } from '../components/GrTreeSelect/config'\nimport { grValueConfig } from '../components/GrValue/config'\n// </granularity:components:imports>\n\n/** Идентификатор провайдера — совпадает с именем пакета. */\nexport const GRANULARITY_PROVIDER_ID = '@feugene/granularity'\n\n// Не заменять на `new URL('..', import.meta.url)`: Vite и rolldown распознают\n// этот литерал и подставляют `data:`-URL, после чего scan-директории пустеют.\nconst packageBaseUrl = resolvePackageBaseUrl(import.meta.url)\n\n/** Встроенные темы пакета. Единственный источник правды о списке тем. */\nexport const granularityThemeNames = ['light', 'dark'] as const\nexport type GranularityThemeName = (typeof granularityThemeNames)[number]\n\n/** Темы, активные по умолчанию, если окружение не переопределяет выбор. */\nexport const granularityDefaultThemes: readonly GranularityThemeName[] = ['light']\n\nconst theme = {\n baseCssUrl: new URL('../styles/base.css', import.meta.url).href,\n tokensCssUrl: new URL('../styles/tokens.css', import.meta.url).href,\n themes: {\n light: new URL('../styles/themes/light.css', import.meta.url).href,\n dark: new URL('../styles/themes/dark.css', import.meta.url).href,\n },\n defaultThemes: granularityDefaultThemes,\n} as const\n\n/**\n * Реестр публичных компонентов. Ключи совпадают с subpath-экспортом\n * `@feugene/granularity/components/<Name>`.\n */\nexport const granularityComponentConfigs = {\n // <granularity:components:registry> — блок генерируется `yarn generate:registry`\n GrAlert: grAlertConfig,\n GrAutocomplete: grAutocompleteConfig,\n GrAvatar: grAvatarConfig,\n GrBadge: grBadgeConfig,\n GrBadgeWrap: grBadgeWrapConfig,\n GrBottomNav: grBottomNavConfig,\n GrBreadcrumbs: grBreadcrumbsConfig,\n GrButton: grButtonConfig,\n GrButtonGroup: grButtonGroupConfig,\n GrCard: grCardConfig,\n GrCheckbox: grCheckboxConfig,\n GrCheckboxGroup: grCheckboxGroupConfig,\n GrChip: grChipConfig,\n GrChipGroup: grChipGroupConfig,\n GrCodeBlock: grCodeBlockConfig,\n GrCollapse: grCollapseConfig,\n GrColorPicker: grColorPickerConfig,\n GrCommandPalette: grCommandPaletteConfig,\n GrConfigProvider: grConfigProviderConfig,\n GrConfirmDialog: grConfirmDialogConfig,\n GrContextMenu: grContextMenuConfig,\n GrDataTable: grDataTableConfig,\n GrDelta: grDeltaConfig,\n GrDescriptionList: grDescriptionListConfig,\n GrDialog: grDialogConfig,\n GrDialogService: grDialogServiceConfig,\n GrDivider: grDividerConfig,\n GrDrawer: grDrawerConfig,\n GrDropdown: grDropdownConfig,\n GrDropdownMenu: grDropdownMenuConfig,\n GrEmptyState: grEmptyStateConfig,\n GrFilePreview: grFilePreviewConfig,\n GrFileUpload: grFileUploadConfig,\n GrForm: grFormConfig,\n GrFormField: grFormFieldConfig,\n GrFormFile: grFormFileConfig,\n GrFormSection: grFormSectionConfig,\n GrIcon: grIconConfig,\n GrImageViewer: grImageViewerConfig,\n GrInput: grInputConfig,\n GrInputTag: grInputTagConfig,\n GrJsonViewer: grJsonViewerConfig,\n GrKbd: grKbdConfig,\n GrLink: grLinkConfig,\n GrList: grListConfig,\n GrLoading: grLoadingConfig,\n GrModal: grModalConfig,\n GrNavbar: grNavbarConfig,\n GrNumberInput: grNumberInputConfig,\n GrPagination: grPaginationConfig,\n GrPopover: grPopoverConfig,\n GrProgressBar: grProgressBarConfig,\n GrProgressCircle: grProgressCircleConfig,\n GrPromptDialog: grPromptDialogConfig,\n GrRadio: grRadioConfig,\n GrRadioGroup: grRadioGroupConfig,\n GrRating: grRatingConfig,\n GrResponseErrorBanner: grResponseErrorBannerConfig,\n GrSegmented: grSegmentedConfig,\n GrSelect: grSelectConfig,\n GrSidebar: grSidebarConfig,\n GrSkeleton: grSkeletonConfig,\n GrSlider: grSliderConfig,\n GrSortableList: grSortableListConfig,\n GrSplitter: grSplitterConfig,\n GrStatistic: grStatisticConfig,\n GrSteps: grStepsConfig,\n GrSwitch: grSwitchConfig,\n GrTable: grTableConfig,\n GrTabPanels: grTabPanelsConfig,\n GrTabs: grTabsConfig,\n GrTextarea: grTextareaConfig,\n GrTimeline: grTimelineConfig,\n GrToaster: grToasterConfig,\n GrTooltip: grTooltipConfig,\n GrTree: grTreeConfig,\n GrTreeSelect: grTreeSelectConfig,\n GrValue: grValueConfig,\n // </granularity:components:registry>\n}\n\nexport type GranularityComponentName = keyof typeof granularityComponentConfigs\n\n/** Базовый набор компонентов в порядке реестра. */\nconst baseComponents: readonly GranularComponentDescriptor[] = Object.values(\n granularityComponentConfigs,\n)\n\n/**\n * Собирает granular-provider пакета.\n *\n * `overrides` — точка расширения для потребителя: дескриптор с именем из\n * базового реестра заменяет его, остальные дописываются в конец.\n */\nexport function createGranularityProvider(\n overrides: readonly GranularComponentDescriptor[] = [],\n): GranularProvider {\n const overrideByName = new Map(\n overrides.map(component => [component.name, component]),\n )\n const components: GranularComponentDescriptor[] = [\n ...baseComponents.map(component => overrideByName.get(component.name) ?? component),\n ...overrides.filter(component => !baseComponents.some(base => base.name === component.name)),\n ]\n\n return defineGranularProvider({\n id: GRANULARITY_PROVIDER_ID,\n contractVersion: 1,\n packageBaseUrl,\n components,\n theme,\n })\n}\n","import { createGranularityProvider } from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider()\n\nexport default granularityProvider\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAa,iBAAiB,wBAAwB,YAAY,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,SAAS;CACpC,UAAU;AACZ,CAAC;;;ACND,IAAa,8BAA8B,wBAAwB,YAAY,KAAK;CAClF,MAAM;CACN,cAAc,CAAC,WAAW,UAAU;AACtC,CAAC;;;;AC4FD,IAAa,0BAA0B;AAIvC,IAAM,iBAAiB,sBAAsB,YAAY,GAAG;;AAG5D,IAAa,wBAAwB,CAAC,SAAS,MAAM;;AAIrD,IAAa,2BAA4D,CAAC,OAAO;AAEjF,IAAM,QAAQ;CACZ,YAAY,IAAA,IAAA,q5KAAA,KAAA,YAAA,GAAA,CAA8C,CAAC;CAC3D,cAAc,IAAA,IAAA,65YAAA,KAAA,YAAA,GAAA,CAAgD,CAAC;CAC/D,QAAQ;EACN,OAAO,IAAA,IAAA,iyYAAA,KAAA,YAAA,GAAA,CAAsD,CAAC;EAC9D,MAAM,IAAA,IAAA,y/SAAA,KAAA,YAAA,GAAA,CAAqD,CAAC;CAC9D;CACA,eAAe;AACjB;;;;;AAMA,IAAa,8BAA8B;CAEzC,SAAS;CACT,gBAAgB;CAChB,UAAU;CACV,SAAS;CACT,aAAa;CACb,aAAa;CACb,eAAe;CACf,UAAU;CACV,eAAe;CACf,QAAQ;CACR,YAAY;CACZ,iBAAiB;CACjB,QAAQ;CACR,aAAa;CACb,aAAa;CACb,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,eAAe;CACf,aAAa;CACb,SAAS;CACT,mBAAmB;CACnB,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,eAAe;CACf,cAAc;CACd,QAAQ;CACR,aAAa;CACb,YAAY;CACZ,eAAe;CACf,QAAQ;CACR,eAAe;CACf,SAAS;CACT,YAAY;CACZ,cAAc;CACd,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,eAAe;CACf,cAAc;CACd,WAAW;CACX,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,cAAc;CACd,UAAU;CACV,uBAAuB;CACvB,aAAa;CACb,UAAU;CACV,WAAW;CACX,YAAY;CACZ,UAAU;CACV,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,SAAS;CACT,UAAU;CACV,SAAS;CACT,aAAa;CACb,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,WAAW;CACX,QAAQ;CACR,cAAc;CACd,SAAS;AAEX;;AAKA,IAAM,iBAAyD,OAAO,OACpE,2BACF;;;;;;;AAQA,SAAgB,0BACd,YAAoD,CAAC,GACnC;CAClB,MAAM,iBAAiB,IAAI,IACzB,UAAU,KAAI,cAAa,CAAC,UAAU,MAAM,SAAS,CAAC,CACxD;CACA,MAAM,aAA4C,CAChD,GAAG,eAAe,KAAI,cAAa,eAAe,IAAI,UAAU,IAAI,KAAK,SAAS,GAClF,GAAG,UAAU,QAAO,cAAa,CAAC,eAAe,MAAK,SAAQ,KAAK,SAAS,UAAU,IAAI,CAAC,CAC7F;CAEA,OAAO,uBAAuB;EAC5B,IAAI;EACJ,iBAAiB;EACjB;EACA;EACA;CACF,CAAC;AACH;;;AC1OA,IAAa,sBAAsB,0BAA0B"}