@feugene/granularity 0.45.0 → 0.47.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.
- package/README.md +3 -3
- package/dist/chunks/{x-circle-BCBURwyX.js → check-circle-Bnrb-CGJ.js} +8 -32
- package/dist/chunks/check-circle-Bnrb-CGJ.js.map +1 -0
- package/dist/chunks/{config-BqT6PMzO.js → config-B42iJ48O.js} +5 -1
- package/dist/chunks/{config-BqT6PMzO.js.map → config-B42iJ48O.js.map} +1 -1
- package/dist/chunks/{config-BGCyyXiD.js → config-BAse0laT.js} +5 -1
- package/dist/chunks/{config-BGCyyXiD.js.map → config-BAse0laT.js.map} +1 -1
- package/dist/chunks/{config-MmPym-Z7.js → config-BLP94dPY.js} +5 -1
- package/dist/chunks/{config-MmPym-Z7.js.map → config-BLP94dPY.js.map} +1 -1
- package/dist/chunks/{config-CjKpUcmy.js → config-Bdf1bt-m.js} +25 -16
- package/dist/chunks/config-Bdf1bt-m.js.map +1 -0
- package/dist/chunks/{config-CIkdsWUk.js → config-CIUU9ZpY.js} +4 -1
- package/dist/chunks/config-CIUU9ZpY.js.map +1 -0
- package/dist/chunks/{config-BhfNgyWL.js → config-DENqOoh0.js} +5 -1
- package/dist/chunks/config-DENqOoh0.js.map +1 -0
- package/dist/chunks/{config-ChnYtO4o.js → config-bjDf8nBf.js} +16 -1
- package/dist/chunks/config-bjDf8nBf.js.map +1 -0
- package/dist/chunks/controlState-DoImKciE.js +35 -0
- package/dist/chunks/controlState-DoImKciE.js.map +1 -0
- package/dist/chunks/{en-DiHzFact.js → en-DjTnfTqM.js} +3 -1
- package/dist/chunks/en-DjTnfTqM.js.map +1 -0
- package/dist/chunks/{es-1ZL6NtkB.js → es-Bc_t3FI8.js} +3 -1
- package/dist/chunks/es-Bc_t3FI8.js.map +1 -0
- package/dist/chunks/{es-CeKkMxZ_.js → es-DIFzSXSZ.js} +3 -3
- package/dist/chunks/{es-CeKkMxZ_.js.map → es-DIFzSXSZ.js.map} +1 -1
- package/dist/chunks/{generated-DAKeOOqm.js → generated-CQ4h6Ieq.js} +28 -0
- package/dist/chunks/{generated-DAKeOOqm.js.map → generated-CQ4h6Ieq.js.map} +1 -1
- package/dist/chunks/{granular-provider-D_8_l-gM.js → granular-provider-AKukmYva.js} +7 -7
- package/dist/chunks/{granular-provider-D_8_l-gM.js.map → granular-provider-AKukmYva.js.map} +1 -1
- package/dist/chunks/{ru-Dr2RYn0P.js → ru-Bb-co59W.js} +3 -1
- package/dist/chunks/ru-Bb-co59W.js.map +1 -0
- package/dist/chunks/x-circle-BigSZy8m.js +26 -0
- package/dist/chunks/x-circle-BigSZy8m.js.map +1 -0
- package/dist/components/GrAlert/chunks/{GrAlert-D72y1IEh.js → GrAlert-CfEZghSY.js} +2 -1
- package/dist/components/GrAlert/chunks/{GrAlert-D72y1IEh.js.map → GrAlert-CfEZghSY.js.map} +1 -1
- package/dist/components/GrAlert/index.js +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-D396_JrW.js → GrAutocomplete-C-uovdv8.js} +320 -224
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-C-uovdv8.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +1 -1
- package/dist/components/GrAutocomplete/styles.css +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-9mTR-YZ_.js → GrColorPicker-BRM_4lyI.js} +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-9mTR-YZ_.js.map → GrColorPicker-BRM_4lyI.js.map} +1 -1
- package/dist/components/GrColorPicker/index.js +1 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-Ha4s3DMT.js.map → GrCommandPalette-BJHmkDQv.js.map} +1 -1
- package/dist/components/GrCommandPalette/index.js +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-e15nFI8M.js → GrConfirmDialog-BzUQwbec.js} +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-e15nFI8M.js.map → GrConfirmDialog-BzUQwbec.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrDataTable/chunks/{GrDataTable-xNSmO_I-.js → GrDataTable-Dp9Fp_P5.js} +606 -499
- package/dist/components/GrDataTable/chunks/GrDataTable-Dp9Fp_P5.js.map +1 -0
- package/dist/components/GrDataTable/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-BmXiYmUp.js → GrDialogService-Dtq0ZCN5.js} +3 -3
- package/dist/components/GrDialogService/chunks/{GrDialogService-BmXiYmUp.js.map → GrDialogService-Dtq0ZCN5.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrFormField/chunks/GrFormField-DO61vxpS.js.map +1 -1
- package/dist/components/GrInput/chunks/{GrInput-TFeBm3gQ.js → GrInput-DV4gMWPR.js} +40 -11
- package/dist/components/GrInput/chunks/GrInput-DV4gMWPR.js.map +1 -0
- package/dist/components/GrInput/index.js +2 -2
- package/dist/components/GrInputTag/chunks/{GrInputTag-Ci8AO1ze.js → GrInputTag-CO0YU-ok.js} +30 -6
- package/dist/components/GrInputTag/chunks/GrInputTag-CO0YU-ok.js.map +1 -0
- package/dist/components/GrInputTag/index.js +2 -2
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-CdlWMGnF.js → GrJsonViewer-D7CyWzhT.js} +2 -2
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-CdlWMGnF.js.map → GrJsonViewer-D7CyWzhT.js.map} +1 -1
- package/dist/components/GrJsonViewer/index.js +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-CL5QhOmx.js → GrNumberInput-BI6-vkcs.js} +48 -16
- package/dist/components/GrNumberInput/chunks/GrNumberInput-BI6-vkcs.js.map +1 -0
- package/dist/components/GrNumberInput/index.js +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-DhbNZHEF.js → GrPagination-BbaF5eXk.js} +10 -7
- package/dist/components/GrPagination/chunks/GrPagination-BbaF5eXk.js.map +1 -0
- package/dist/components/GrPagination/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-8RxQsOQ_.js → GrPromptDialog-BEL-QgwE.js} +3 -3
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-8RxQsOQ_.js.map → GrPromptDialog-BEL-QgwE.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-NEEJZ8zi.js → GrResponseErrorBanner-Bdd5c07x.js} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-NEEJZ8zi.js.map → GrResponseErrorBanner-Bdd5c07x.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-ZvBvEQDZ.js → GrResponseErrorBanner-DySe1ym4.js} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-ZvBvEQDZ.js.map → GrResponseErrorBanner-DySe1ym4.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/index.js +2 -2
- package/dist/components/GrSelect/chunks/{GrSelect-Do1iAyp1.js → GrSelect-0iI4wdR_.js} +3 -3
- package/dist/components/GrSelect/chunks/{GrSelect-Do1iAyp1.js.map → GrSelect-0iI4wdR_.js.map} +1 -1
- package/dist/components/GrSelect/index.js +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-BII3w61K.js → GrTextarea-Bfgc0DD2.js} +73 -32
- package/dist/components/GrTextarea/chunks/GrTextarea-Bfgc0DD2.js.map +1 -0
- package/dist/components/GrTextarea/index.js +2 -2
- package/dist/components/GrToaster/chunks/{GrToaster-D-sV-9of.js → GrToaster-CZixNk0l.js} +2 -1
- package/dist/components/GrToaster/chunks/{GrToaster-D-sV-9of.js.map → GrToaster-CZixNk0l.js.map} +1 -1
- package/dist/components/GrToaster/index.js +1 -1
- package/dist/components/GrTransfer/chunks/{GrTransfer-8FA78ny6.js → GrTransfer-DdfBUf35.js} +2 -2
- package/dist/components/GrTransfer/chunks/{GrTransfer-8FA78ny6.js.map → GrTransfer-DdfBUf35.js.map} +1 -1
- package/dist/components/GrTransfer/index.js +1 -1
- package/dist/components/GrTree/chunks/{GrTree-DnDGW0xO.js → GrTree-6yZrncJE.js} +52 -18
- package/dist/components/GrTree/chunks/GrTree-6yZrncJE.js.map +1 -0
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTree/styles.css +1 -1
- package/dist/components/GrTreeSections/chunks/{GrTreeSections-D2PQ87mw.js → GrTreeSections-DcmDcLwj.js} +5 -3
- package/dist/components/GrTreeSections/chunks/GrTreeSections-DcmDcLwj.js.map +1 -0
- package/dist/components/GrTreeSections/index.js +2 -2
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DzheDCuZ.js → GrTreeSelect-B6KoDYiZ.js} +44 -19
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B6KoDYiZ.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +30 -30
- package/dist/theme.js +1 -1
- package/dist/tokens.js +1 -1
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteNavigation.d.ts +39 -0
- package/dist/types/components/GrAutocomplete/composables/useAutocompletePanel.d.ts +36 -0
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteValues.d.ts +28 -0
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteVirtual.d.ts +33 -0
- package/dist/types/components/GrAutocomplete/composables/useRemoteOptions.d.ts +33 -0
- package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +1 -1
- package/dist/types/components/GrDataTable/composables/useDataTableColumnOrder.d.ts +45 -0
- package/dist/types/components/GrDataTable/composables/useDataTableColumnWidths.d.ts +38 -0
- package/dist/types/components/GrDataTable/composables/useDataTableLayout.d.ts +29 -0
- package/dist/types/components/GrDataTable/composables/useDataTableRowKeys.d.ts +16 -0
- package/dist/types/components/GrDataTable/composables/useDataTableSelection.d.ts +32 -0
- package/dist/types/components/GrDataTable/composables/useDataTableSort.d.ts +37 -0
- package/dist/types/components/GrFormField/GrFormField.vue.d.ts +7 -1
- package/dist/types/components/GrPagination/GrPagination.vue.d.ts +17 -2
- package/dist/types/components/GrPagination/grPaginationStyles.d.ts +15 -6
- package/dist/types/components/GrPagination/index.d.ts +1 -1
- package/dist/types/components/GrTree/grTreeStyles.d.ts +1 -1
- package/dist/types/components/GrTreeSections/grTreeSectionsStyles.d.ts +15 -0
- package/dist/types/components/shared/controlState.d.ts +36 -0
- package/dist/types/i18n/messages/en.d.ts +4 -0
- package/dist/types/i18n/messages/es.d.ts +4 -0
- package/dist/types/i18n/messages/ru.d.ts +4 -0
- package/dist/web-types.json +4 -3
- package/package.json +1 -1
- package/dist/chunks/config-BhfNgyWL.js.map +0 -1
- package/dist/chunks/config-CIkdsWUk.js.map +0 -1
- package/dist/chunks/config-ChnYtO4o.js.map +0 -1
- package/dist/chunks/config-CjKpUcmy.js.map +0 -1
- package/dist/chunks/en-DiHzFact.js.map +0 -1
- package/dist/chunks/es-1ZL6NtkB.js.map +0 -1
- package/dist/chunks/ru-Dr2RYn0P.js.map +0 -1
- package/dist/chunks/x-circle-BCBURwyX.js.map +0 -1
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-D396_JrW.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-xNSmO_I-.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-TFeBm3gQ.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-Ci8AO1ze.js.map +0 -1
- package/dist/components/GrNumberInput/chunks/GrNumberInput-CL5QhOmx.js.map +0 -1
- package/dist/components/GrPagination/chunks/GrPagination-DhbNZHEF.js.map +0 -1
- package/dist/components/GrTextarea/chunks/GrTextarea-BII3w61K.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-DnDGW0xO.js.map +0 -1
- package/dist/components/GrTreeSections/chunks/GrTreeSections-D2PQ87mw.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DzheDCuZ.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-Ha4s3DMT.js → GrCommandPalette-BJHmkDQv.js} +1 -1
package/README.md
CHANGED
|
@@ -91,10 +91,10 @@ from its own chunk, so a granular import already brings everything it needs.
|
|
|
91
91
|
<!-- entry-sizes:generated:start lang=en -->
|
|
92
92
|
| What you import | gzip | of the barrel |
|
|
93
93
|
| --- | ---: | ---: |
|
|
94
|
-
| the whole package from the root |
|
|
94
|
+
| the whole package from the root | 601.8 kB | 100 % |
|
|
95
95
|
| the lightest component — `GrButtonGroup` | 1.8 kB | < 1 % |
|
|
96
|
-
| the median component — `
|
|
97
|
-
| the 5 heaviest together |
|
|
96
|
+
| the median component — `GrChip` | 15.4 kB | 3 % |
|
|
97
|
+
| the 5 heaviest together | 177.4 kB | 29 % |
|
|
98
98
|
|
|
99
99
|
These numbers **do not add up**: shared code is counted again in every row but paid for once, which is why
|
|
100
100
|
the set is shown as a union rather than a sum. They are an upper bound — the gzip of everything a subpath
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createElementBlock, createElementVNode, markRaw, openBlock } from "vue";
|
|
2
2
|
//#region ~icons/lucide/alert-triangle
|
|
3
|
-
var _hoisted_1$
|
|
3
|
+
var _hoisted_1$1 = {
|
|
4
4
|
viewBox: "0 0 24 24",
|
|
5
5
|
width: "1.2em",
|
|
6
6
|
height: "1.2em"
|
|
7
7
|
};
|
|
8
|
-
function render$
|
|
9
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
8
|
+
function render$2(_ctx, _cache) {
|
|
9
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
|
|
10
10
|
fill: "none",
|
|
11
11
|
stroke: "currentColor",
|
|
12
12
|
"stroke-linecap": "round",
|
|
@@ -17,30 +17,10 @@ function render$3(_ctx, _cache) {
|
|
|
17
17
|
}
|
|
18
18
|
var alert_triangle_default = markRaw({
|
|
19
19
|
name: "lucide-alert-triangle",
|
|
20
|
-
render: render$3
|
|
21
|
-
});
|
|
22
|
-
//#endregion
|
|
23
|
-
//#region ~icons/lucide/check-circle
|
|
24
|
-
var _hoisted_1$1 = {
|
|
25
|
-
viewBox: "0 0 24 24",
|
|
26
|
-
width: "1.2em",
|
|
27
|
-
height: "1.2em"
|
|
28
|
-
};
|
|
29
|
-
function render$2(_ctx, _cache) {
|
|
30
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [createElementVNode("g", {
|
|
31
|
-
fill: "none",
|
|
32
|
-
stroke: "currentColor",
|
|
33
|
-
"stroke-linecap": "round",
|
|
34
|
-
"stroke-linejoin": "round",
|
|
35
|
-
"stroke-width": "2"
|
|
36
|
-
}, [createElementVNode("path", { d: "M21.801 10A10 10 0 1 1 17 3.335" }), createElementVNode("path", { d: "m9 11l3 3L22 4" })], -1)])]);
|
|
37
|
-
}
|
|
38
|
-
var check_circle_default = markRaw({
|
|
39
|
-
name: "lucide-check-circle",
|
|
40
20
|
render: render$2
|
|
41
21
|
});
|
|
42
22
|
//#endregion
|
|
43
|
-
//#region ~icons/lucide/
|
|
23
|
+
//#region ~icons/lucide/check-circle
|
|
44
24
|
var _hoisted_1 = {
|
|
45
25
|
viewBox: "0 0 24 24",
|
|
46
26
|
width: "1.2em",
|
|
@@ -53,15 +33,11 @@ function render$1(_ctx, _cache) {
|
|
|
53
33
|
"stroke-linecap": "round",
|
|
54
34
|
"stroke-linejoin": "round",
|
|
55
35
|
"stroke-width": "2"
|
|
56
|
-
}, [createElementVNode("
|
|
57
|
-
cx: "12",
|
|
58
|
-
cy: "12",
|
|
59
|
-
r: "10"
|
|
60
|
-
}), createElementVNode("path", { d: "m15 9l-6 6m0-6l6 6" })], -1)])]);
|
|
36
|
+
}, [createElementVNode("path", { d: "M21.801 10A10 10 0 1 1 17 3.335" }), createElementVNode("path", { d: "m9 11l3 3L22 4" })], -1)])]);
|
|
61
37
|
}
|
|
62
|
-
var
|
|
63
|
-
name: "lucide-
|
|
38
|
+
var check_circle_default = markRaw({
|
|
39
|
+
name: "lucide-check-circle",
|
|
64
40
|
render: render$1
|
|
65
41
|
});
|
|
66
42
|
//#endregion
|
|
67
|
-
export {
|
|
43
|
+
export { alert_triangle_default as n, check_circle_default as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-circle-Bnrb-CGJ.js","names":[],"sources":[],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
+
import { i as controlStateIconColors, r as controlStateIconClass } from "./controlState-DoImKciE.js";
|
|
2
3
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
4
|
//#region src/components/GrInputTag/grInputTagStyles.ts
|
|
4
5
|
var wrapperSizeClassBySize = {
|
|
@@ -57,7 +58,10 @@ var grInputTagSafelist = [.../* @__PURE__ */ new Set([
|
|
|
57
58
|
...splitClassTokens(wrapperEnabledClass),
|
|
58
59
|
...splitClassTokens(wrapperDisabledClass),
|
|
59
60
|
...splitClassTokens(clearButtonClass),
|
|
60
|
-
...splitClassTokens(spinnerClass)
|
|
61
|
+
...splitClassTokens(spinnerClass),
|
|
62
|
+
...splitClassTokens(controlStateIconClass),
|
|
63
|
+
...Object.values(controlStateIconColors).flatMap(splitClassTokens),
|
|
64
|
+
...splitClassTokens("sr-only")
|
|
61
65
|
])];
|
|
62
66
|
//#endregion
|
|
63
67
|
//#region src/components/GrInputTag/config.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-B42iJ48O.js","names":[],"sources":["../../src/components/GrInputTag/grInputTagStyles.ts","../../src/components/GrInputTag/safelist.ts","../../src/components/GrInputTag/config.ts"],"sourcesContent":["import type { GrControlState } from '../shared/sizes'\n\nimport type { GrInputSize } from '../GrInput/GrInput.vue'\n\nexport type GrInputTagSize = GrInputSize\nexport type GrInputTagState = GrControlState\n\nexport const wrapperSizeClassBySize: Record<GrInputTagSize, string> = {\n xs: 'min-h-7 px-2.5 py-1 gap-1.5',\n sm: 'min-h-8 px-3 py-1 gap-1.5',\n md: 'min-h-10 px-3 py-1.5 gap-2',\n lg: 'min-h-11 px-4 py-2 gap-2',\n}\n\nexport const inputSizeClassBySize: Record<GrInputTagSize, string> = {\n xs: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\nexport const wrapperBorderClassByState: Record<GrInputTagState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-within:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-within:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-within:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidWrapperBorderClass = 'border-[var(--gr-invalid-brd)] focus-within:ring-[var(--gr-invalid-ring)]'\n\nexport const wrapperBaseClass = 'w-full flex flex-wrap items-center rounded-[var(--gr-radius-control)] border text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] focus-within:ring-2 focus-within:ring-[var(--gr-ring)]'\n\nexport const wrapperEnabledClass = 'bg-[var(--gr-bg)] cursor-text'\n\n/**\n * Заблокированное поле гасится фоном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста. Фон взаимоисключающий с `wrapperEnabledClass` —\n * два `bg-*` одной специфичности разрулил бы порядок в сгенерированном CSS.\n */\nexport const wrapperDisabledClass = 'bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] cursor-not-allowed'\n\nexport const clearButtonClass = 'ml-auto shrink-0 inline-flex items-center justify-center rounded-[var(--gr-radius-control)] p-0.5 text-[var(--gr-muted-fg)] transition-colors hover:text-[var(--gr-fg)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const spinnerClass = 'shrink-0 inline-flex items-center justify-center text-[var(--gr-muted-fg)]'\n\nexport function grInputTagWrapperClass(options: {\n size: GrInputTagSize\n state: GrInputTagState\n invalid: boolean\n disabled: boolean\n}): string {\n return [\n wrapperBaseClass,\n wrapperSizeClassBySize[options.size],\n options.invalid ? invalidWrapperBorderClass : wrapperBorderClassByState[options.state],\n options.disabled ? wrapperDisabledClass : wrapperEnabledClass,\n ].join(' ')\n}\n\nexport function grInputTagInputClass(size: GrInputTagSize): string {\n return inputSizeClassBySize[size]\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport { controlStateIconClass, controlStateIconColors } from '../shared/controlState'\nimport {\n clearButtonClass,\n inputSizeClassBySize,\n invalidWrapperBorderClass,\n spinnerClass,\n wrapperBaseClass,\n wrapperBorderClassByState,\n wrapperDisabledClass,\n wrapperEnabledClass,\n wrapperSizeClassBySize,\n} from './grInputTagStyles'\n\nexport const grInputTagSafelist = [...new Set([\n ...Object.values(wrapperSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(inputSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(wrapperBorderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidWrapperBorderClass),\n ...splitClassTokens(wrapperBaseClass),\n ...splitClassTokens(wrapperEnabledClass),\n ...splitClassTokens(wrapperDisabledClass),\n ...splitClassTokens(clearButtonClass),\n ...splitClassTokens(spinnerClass),\n // Общий модуль лежит в чанке без адреса — его классы объявляет каждый импортёр.\n ...splitClassTokens(controlStateIconClass),\n ...Object.values(controlStateIconColors).flatMap(splitClassTokens),\n ...splitClassTokens('sr-only'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grInputTagSafelist } from './safelist'\n\nexport const grInputTagConfig = defineGranularComponent(import.meta.url, {\n name: 'GrInputTag',\n dependencies: ['GrChip', 'GrIcon'],\n safelist: grInputTagSafelist,\n})\n"],"mappings":";;;;AAOA,IAAa,yBAAyD;CACpE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,4BAA6D;CACxE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,4BAA4B;AAEzC,IAAa,mBAAmB;AAEhC,IAAa,sBAAsB;;;;;;AAOnC,IAAa,uBAAuB;AAEpC,IAAa,mBAAmB;AAEhC,IAAa,eAAe;AAE5B,SAAgB,uBAAuB,SAK5B;CACT,OAAO;EACL;EACA,uBAAuB,QAAQ;EAC/B,QAAQ,UAAU,4BAA4B,0BAA0B,QAAQ;EAChF,QAAQ,WAAW,uBAAuB;CAC5C,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,SAAgB,qBAAqB,MAA8B;CACjE,OAAO,qBAAqB;AAC9B;;;ACpDA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,YAAY;CAEhC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,iBAAiB,SAAS;AAC/B,CAAC,CAAC;;;ACxBF,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,cAAc,CAAC,UAAU,QAAQ;CACjC,UAAU;AACZ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { n as splitClassTokens, t as flattenTransitionTokens } from "./classTokens-8v2XC74x.js";
|
|
2
2
|
import { n as panelPopTransition, t as overlayPanelSurfaceClass } from "./overlayPanelSurface-BKeMhRx4.js";
|
|
3
|
+
import { i as controlStateIconColors, r as controlStateIconClass } from "./controlState-DoImKciE.js";
|
|
3
4
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
5
|
//#region src/components/GrTreeSelect/grTreeSelectStyles.ts
|
|
5
6
|
var sizeClassBySize = {
|
|
@@ -65,7 +66,10 @@ var grTreeSelectSafelist = [.../* @__PURE__ */ new Set([
|
|
|
65
66
|
...splitClassTokens(shellDisabledClass),
|
|
66
67
|
...splitClassTokens(grTreeSelectPanelClass),
|
|
67
68
|
...splitClassTokens(grTreeSelectStateClass),
|
|
68
|
-
...flattenTransitionTokens(panelPopTransition)
|
|
69
|
+
...flattenTransitionTokens(panelPopTransition),
|
|
70
|
+
...splitClassTokens(controlStateIconClass),
|
|
71
|
+
...Object.values(controlStateIconColors).flatMap(splitClassTokens),
|
|
72
|
+
...splitClassTokens("absolute top-1/2 -translate-y-1/2 right-9 sr-only")
|
|
69
73
|
])];
|
|
70
74
|
//#endregion
|
|
71
75
|
//#region src/components/GrTreeSelect/config.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-BAse0laT.js","names":[],"sources":["../../src/components/GrTreeSelect/grTreeSelectStyles.ts","../../src/components/GrTreeSelect/safelist.ts","../../src/components/GrTreeSelect/config.ts"],"sourcesContent":["import type { GrControlState } from '../shared/sizes'\nimport { overlayPanelSurfaceClass } from '../shared/overlayPanelSurface'\n\nimport type { GrInputSize } from '../GrInput'\n\nexport type GrTreeSelectState = GrControlState\n\nexport const sizeClassBySize: Record<GrInputSize, string> = {\n xs: 'h-7 px-2.5 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-8 px-3 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-10 px-3 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-11 px-4 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\n/**\n * Горизонтальный отступ из `sizeClassBySize`, но числом: аддоны задают паддинг\n * инлайн-стилем, а он перекрывает класс — значение нужно обеим формам, и\n * расходиться им нельзя.\n */\nexport const paddingX: Record<GrInputSize, string> = {\n xs: '10px',\n sm: '12px',\n md: '12px',\n lg: '16px',\n}\n\n/** Ширина зоны шеврона/крестика справа (`pr-9` в классе триггера). */\nexport const trailingZoneWidth = '2.25rem'\n\nexport const borderClassByState: Record<GrTreeSelectState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-visible:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-visible:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-visible:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidBorderClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\n/**\n * Disabled красится фоном и цветом текста, а не прозрачностью: `opacity`\n * разбавляет выверенные на AA токены и роняет контраст подписи.\n */\nexport const shellEnabledClass = 'bg-[var(--gr-bg)] text-[var(--gr-fg)]'\nexport const shellDisabledClass = 'bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] cursor-not-allowed'\n\nexport function grTreeSelectClass(options: {\n size: GrInputSize\n state: GrTreeSelectState\n invalid: boolean\n disabled?: boolean\n}): string {\n return [\n sizeClassBySize[options.size],\n 'pr-9',\n options.disabled ? shellDisabledClass : shellEnabledClass,\n options.invalid ? invalidBorderClass : borderClassByState[options.state],\n ].join(' ')\n}\n\nexport const grTreeSelectPanelClass = `${overlayPanelSurfaceClass} overflow-hidden`\n\n/**\n * Строка состояния панели: загрузка и «нет данных». По центру и с двойным\n * воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.\n * Слева она расходилась с содержимым дерева на паддинг скроллера.\n */\nexport const grTreeSelectStateClass = 'flex items-center justify-center gap-2 px-3 py-4 text-center text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n","import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { controlStateIconClass, controlStateIconColors } from '../shared/controlState'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n borderClassByState,\n grTreeSelectPanelClass,\n grTreeSelectStateClass,\n invalidBorderClass,\n shellDisabledClass,\n shellEnabledClass,\n sizeClassBySize,\n} from './grTreeSelectStyles'\n\nexport const grTreeSelectSafelist = [...new Set([\n ...Object.values(sizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n 'pr-9',\n ...splitClassTokens(shellEnabledClass),\n ...splitClassTokens(shellDisabledClass),\n ...splitClassTokens(grTreeSelectPanelClass),\n ...splitClassTokens(grTreeSelectStateClass),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n // Общий модуль лежит в чанке без адреса — его классы объявляет каждый импортёр.\n ...splitClassTokens(controlStateIconClass),\n ...Object.values(controlStateIconColors).flatMap(splitClassTokens),\n ...splitClassTokens('absolute top-1/2 -translate-y-1/2 right-9 sr-only'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTreeSelectSafelist } from './safelist'\n\nexport const grTreeSelectConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTreeSelect',\n /**\n * Слой панели задаёт `useFloating` → `floatingLayerZIndex`: имя приходит\n * параметром, а `var()` собирается в рантайме (`overlayStack.ts`). В\n * исходниках `var(--gr-z-*)` не встречается, статический скан их не видит.\n *\n * `gr-z-modal` — из ветки `calc(var(--gr-z-modal) + N)`: панель, открытая\n * внутри модалки, встаёт над ней.\n */\n dynamicTokens: ['gr-z-dropdown', 'gr-z-modal'],\n safelist: grTreeSelectSafelist,\n dependencies: ['GrInput', 'GrTree'],\n})\n"],"mappings":";;;;;AAOA,IAAa,kBAA+C;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,WAAwC;CACnD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,oBAAoB;AAEjC,IAAa,qBAAwD;CACnE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,qBAAqB;;;;;AAMlC,IAAa,oBAAoB;AACjC,IAAa,qBAAqB;AAElC,SAAgB,kBAAkB,SAKvB;CACT,OAAO;EACL,gBAAgB,QAAQ;EACxB;EACA,QAAQ,WAAW,qBAAqB;EACxC,QAAQ,UAAU,qBAAqB,mBAAmB,QAAQ;CACpE,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,IAAa,yBAAyB,GAAG,yBAAyB;;;;;;AAOlE,IAAa,yBAAyB;;;AC1DtC,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC;CACA,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,sBAAsB;CAI1C,GAAG,wBAAwB,kBAAkB;CAE7C,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,iBAAiB,mDAAmD;AACzE,CAAC,CAAC;;;AC1BF,IAAa,qBAAqB,wBAAwB,YAAY,KAAK;CACzE,MAAM;;;;;;;;;CASN,eAAe,CAAC,iBAAiB,YAAY;CAC7C,UAAU;CACV,cAAc,CAAC,WAAW,QAAQ;AACpC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
+
import { i as controlStateIconColors, r as controlStateIconClass } from "./controlState-DoImKciE.js";
|
|
2
3
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
4
|
//#region src/components/GrNumberInput/grNumberInputStyles.ts
|
|
4
5
|
var sizeClassBySize = {
|
|
@@ -51,7 +52,10 @@ var grNumberInputSafelist = [.../* @__PURE__ */ new Set([
|
|
|
51
52
|
...splitClassTokens(disabledShellClass),
|
|
52
53
|
...splitClassTokens(stepperCompactClass),
|
|
53
54
|
...splitClassTokens(stepperWideClass),
|
|
54
|
-
...splitClassTokens(clearButtonClass)
|
|
55
|
+
...splitClassTokens(clearButtonClass),
|
|
56
|
+
...splitClassTokens(controlStateIconClass),
|
|
57
|
+
...Object.values(controlStateIconColors).flatMap(splitClassTokens),
|
|
58
|
+
...splitClassTokens("absolute top-1/2 -translate-y-1/2 sr-only")
|
|
55
59
|
])];
|
|
56
60
|
//#endregion
|
|
57
61
|
//#region src/components/GrNumberInput/config.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-BLP94dPY.js","names":[],"sources":["../../src/components/GrNumberInput/grNumberInputStyles.ts","../../src/components/GrNumberInput/safelist.ts","../../src/components/GrNumberInput/config.ts"],"sourcesContent":["import type { GrComponentSize, GrControlState } from '../shared/sizes'\n\nexport type GrNumberInputState = GrControlState\nexport type GrNumberInputSize = GrComponentSize\nexport type GrNumberInputControlsDirection = 'vertical' | 'horizontal'\nexport type GrNumberInputTextAlign = 'left' | 'center' | 'right'\n\n// Backward-compatible type aliases.\nexport type NumberInputSize = GrNumberInputSize\nexport type NumberInputControlsDirection = GrNumberInputControlsDirection\n\nexport const sizeClassBySize: Record<GrNumberInputSize, string> = {\n xs: 'h-7 px-2.5 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-8 px-3 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-10 px-3 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-11 px-4 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\nexport const textAlignClassByAlign: Record<GrNumberInputTextAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nexport const borderClassByState: Record<GrNumberInputState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-within:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-within:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-within:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidBorderClass = 'border-[var(--gr-invalid-brd)] focus-within:ring-[var(--gr-invalid-ring)]'\n\n/**\n * Недоступное поле гасится токенами, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста и роняет контраст подписи.\n */\nexport const disabledShellClass = 'bg-[var(--gr-disabled-bg)] text-[var(--gr-disabled-fg)] cursor-not-allowed'\n\nconst stepperBaseClass = 'inline-flex items-center justify-center text-[var(--gr-muted-fg)] hover:bg-[var(--gr-muted)] active:bg-[var(--gr-muted)] disabled:cursor-not-allowed disabled:text-[var(--gr-disabled-fg)] disabled:hover:bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/** Компактная кнопка вертикального стека ± . */\nexport const stepperCompactClass = `h-4 w-7 rounded-[var(--gr-radius-sm)] ${stepperBaseClass}`\n\n/** Кнопка бокового стека ± — занимает всю высоту поля. */\nexport const stepperWideClass = `h-full w-full ${stepperBaseClass}`\n\nexport const clearButtonClass = 'absolute top-1/2 -translate-y-1/2 inline-flex h-5 w-5 items-center justify-center rounded-[var(--gr-radius-full)] text-[var(--gr-muted-fg)] hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport function grNumberInputShellClass(options: { disabled: boolean, state: GrNumberInputState, invalid: boolean }): string {\n return [\n options.disabled ? disabledShellClass : '',\n options.invalid ? invalidBorderClass : borderClassByState[options.state],\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function grNumberInputInputClass(options: { size: GrNumberInputSize, textAlign: GrNumberInputTextAlign }): string {\n return [\n sizeClassBySize[options.size],\n textAlignClassByAlign[options.textAlign],\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport { controlStateIconClass, controlStateIconColors } from '../shared/controlState'\nimport {\n borderClassByState,\n clearButtonClass,\n disabledShellClass,\n invalidBorderClass,\n stepperCompactClass,\n stepperWideClass,\n sizeClassBySize,\n textAlignClassByAlign,\n} from './grNumberInputStyles'\n\n// В safelist кладём только динамические токены, выбираемые по ключам в рантайме\n// (`size`/`textAlign`/`state`/`disabled`). Литералы shell/input/controls прописаны\n// статически в шаблоне — UnoCSS находит их сканом.\nexport const grNumberInputSafelist = [...new Set([\n ...Object.values(sizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(textAlignClassByAlign).flatMap(splitClassTokens),\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n ...splitClassTokens(disabledShellClass),\n ...splitClassTokens(stepperCompactClass),\n ...splitClassTokens(stepperWideClass),\n ...splitClassTokens(clearButtonClass),\n // Общий модуль лежит в чанке без адреса — его классы объявляет каждый импортёр.\n ...splitClassTokens(controlStateIconClass),\n ...Object.values(controlStateIconColors).flatMap(splitClassTokens),\n ...splitClassTokens('absolute top-1/2 -translate-y-1/2 sr-only'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grNumberInputSafelist } from './safelist'\n\nexport const grNumberInputConfig = defineGranularComponent(import.meta.url, {\n name: 'GrNumberInput',\n dependencies: ['GrIcon'],\n safelist: grNumberInputSafelist,\n})\n"],"mappings":";;;;AAWA,IAAa,kBAAqD;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,wBAAgE;CAC3E,MAAM;CACN,QAAQ;CACR,OAAO;AACT;AAEA,IAAa,qBAAyD;CACpE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,qBAAqB;;;;;AAMlC,IAAa,qBAAqB;AAElC,IAAM,mBAAmB;;AAGzB,IAAa,sBAAsB,yCAAyC;;AAG5E,IAAa,mBAAmB,iBAAiB;AAEjD,IAAa,mBAAmB;AAEhC,SAAgB,wBAAwB,SAAqF;CAC3H,OAAO,CACL,QAAQ,WAAW,qBAAqB,IACxC,QAAQ,UAAU,qBAAqB,mBAAmB,QAAQ,MACpE,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,wBAAwB,SAAiF;CACvH,OAAO,CACL,gBAAgB,QAAQ,OACxB,sBAAsB,QAAQ,UAChC,CAAC,CAAC,KAAK,GAAG;AACZ;;;ACpDA,IAAa,wBAAwB,CAAC,mBAAG,IAAI,IAAI;CAC/C,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,gBAAgB;CAEpC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,iBAAiB,2CAA2C;AACjE,CAAC,CAAC;;;ACzBF,IAAa,sBAAsB,wBAAwB,YAAY,KAAK;CAC1E,MAAM;CACN,cAAc,CAAC,QAAQ;CACvB,UAAU;AACZ,CAAC"}
|
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
|
|
2
2
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
3
|
//#region src/components/GrPagination/grPaginationStyles.ts
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Номер страницы и многоточие: одна и та же коробка, чтобы ряд не прыгал.
|
|
6
|
+
*
|
|
7
|
+
* Высоты — шкала `GrButton` (`28/32/40/44`), а не своя. Номера стоят с
|
|
8
|
+
* навигационными кнопками в одном ряду, и собственная шкала это ломала:
|
|
9
|
+
* `sm` и `md` были одной коробкой `h-8`, а кнопке приходилось выдавать размер
|
|
10
|
+
* на ступень ниже имени. Имя `pageBoxSizes`, а не `pageSizes`, потому что
|
|
11
|
+
* `pageSizes` — проп со списком размеров страницы, и одно имя на два разных
|
|
12
|
+
* понятия в одном компоненте читается как ошибка.
|
|
13
|
+
*/
|
|
14
|
+
var pageBoxSizes = {
|
|
6
15
|
xs: "h-7 min-w-7 px-1.5 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]",
|
|
7
16
|
sm: "h-8 min-w-8 px-2 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]",
|
|
8
|
-
md: "h-
|
|
9
|
-
lg: "h-
|
|
17
|
+
md: "h-10 min-w-10 px-2 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]",
|
|
18
|
+
lg: "h-11 min-w-11 px-3 text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]"
|
|
10
19
|
};
|
|
11
20
|
/** Коробка та же, что у номера, но поле́ уже: многоточию не нужен клик-таргет. */
|
|
12
21
|
var ellipsisSizes = {
|
|
13
22
|
xs: "h-7 min-w-7 px-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]",
|
|
14
23
|
sm: "h-8 min-w-8 px-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]",
|
|
15
|
-
md: "h-
|
|
16
|
-
lg: "h-
|
|
24
|
+
md: "h-10 min-w-10 px-1 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]",
|
|
25
|
+
lg: "h-11 min-w-11 px-2 text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]"
|
|
17
26
|
};
|
|
18
27
|
/** Вспомогательный текст: индикатор «текущая / всего» и подпись у поля перехода. */
|
|
19
28
|
var labelSizes = {
|
|
@@ -25,8 +34,8 @@ var labelSizes = {
|
|
|
25
34
|
var jumperSizes = {
|
|
26
35
|
xs: "h-7 w-12 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]",
|
|
27
36
|
sm: "h-8 w-14 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]",
|
|
28
|
-
md: "h-
|
|
29
|
-
lg: "h-
|
|
37
|
+
md: "h-10 w-14 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]",
|
|
38
|
+
lg: "h-11 w-16 text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]"
|
|
30
39
|
};
|
|
31
40
|
var rowGaps = {
|
|
32
41
|
xs: "gap-2",
|
|
@@ -47,21 +56,21 @@ var pageSizeSelectWidths = {
|
|
|
47
56
|
lg: "min-w-[112px]"
|
|
48
57
|
};
|
|
49
58
|
/**
|
|
50
|
-
* Навигационные кнопки берут размер
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
59
|
+
* Навигационные кнопки берут свой размер один в один: коробка номера теперь
|
|
60
|
+
* той же высоты, что и `GrButton` того же имени, и сдвигать ступень больше не
|
|
61
|
+
* нужно. Отображение оставлено явным — оно называет инвариант «кнопка и номер
|
|
62
|
+
* одного роста», который иначе держался бы на совпадении двух шкал.
|
|
54
63
|
*/
|
|
55
64
|
var navButtonSizes = {
|
|
56
65
|
xs: "xs",
|
|
57
66
|
sm: "sm",
|
|
58
|
-
md: "
|
|
59
|
-
lg: "
|
|
67
|
+
md: "md",
|
|
68
|
+
lg: "lg"
|
|
60
69
|
};
|
|
61
70
|
//#endregion
|
|
62
71
|
//#region src/components/GrPagination/safelist.ts
|
|
63
72
|
var grPaginationSafelist = [.../* @__PURE__ */ new Set([
|
|
64
|
-
...Object.values(
|
|
73
|
+
...Object.values(pageBoxSizes).flatMap(splitClassTokens),
|
|
65
74
|
...Object.values(ellipsisSizes).flatMap(splitClassTokens),
|
|
66
75
|
...Object.values(labelSizes).flatMap(splitClassTokens),
|
|
67
76
|
...Object.values(jumperSizes).flatMap(splitClassTokens),
|
|
@@ -77,4 +86,4 @@ var grPaginationConfig = defineGranularComponent(import.meta.url, {
|
|
|
77
86
|
safelist: grPaginationSafelist
|
|
78
87
|
});
|
|
79
88
|
//#endregion
|
|
80
|
-
export { labelSizes as a,
|
|
89
|
+
export { labelSizes as a, pageListGaps as c, jumperSizes as i, pageSizeSelectWidths as l, grPaginationSafelist as n, navButtonSizes as o, ellipsisSizes as r, pageBoxSizes as s, grPaginationConfig as t, rowGaps as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-Bdf1bt-m.js","names":[],"sources":["../../src/components/GrPagination/grPaginationStyles.ts","../../src/components/GrPagination/safelist.ts","../../src/components/GrPagination/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrPaginationSize = GrComponentSize\n\n/**\n * Номер страницы и многоточие: одна и та же коробка, чтобы ряд не прыгал.\n *\n * Высоты — шкала `GrButton` (`28/32/40/44`), а не своя. Номера стоят с\n * навигационными кнопками в одном ряду, и собственная шкала это ломала:\n * `sm` и `md` были одной коробкой `h-8`, а кнопке приходилось выдавать размер\n * на ступень ниже имени. Имя `pageBoxSizes`, а не `pageSizes`, потому что\n * `pageSizes` — проп со списком размеров страницы, и одно имя на два разных\n * понятия в одном компоненте читается как ошибка.\n */\nexport const pageBoxSizes: Record<GrPaginationSize, string> = {\n xs: 'h-7 min-w-7 px-1.5 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'h-8 min-w-8 px-2 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'h-10 min-w-10 px-2 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'h-11 min-w-11 px-3 text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\n/** Коробка та же, что у номера, но поле́ уже: многоточию не нужен клик-таргет. */\nexport const ellipsisSizes: Record<GrPaginationSize, string> = {\n xs: 'h-7 min-w-7 px-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'h-8 min-w-8 px-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'h-10 min-w-10 px-1 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'h-11 min-w-11 px-2 text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\n/** Вспомогательный текст: индикатор «текущая / всего» и подпись у поля перехода. */\nexport const labelSizes: Record<GrPaginationSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\nexport const jumperSizes: Record<GrPaginationSize, string> = {\n xs: 'h-7 w-12 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'h-8 w-14 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'h-10 w-14 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'h-11 w-16 text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\nexport const rowGaps: Record<GrPaginationSize, string> = {\n xs: 'gap-2',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-3',\n}\n\nexport const pageListGaps: Record<GrPaginationSize, string> = {\n xs: 'gap-0.5',\n sm: 'gap-1',\n md: 'gap-1',\n lg: 'gap-1',\n}\n\nexport const pageSizeSelectWidths: Record<GrPaginationSize, string> = {\n xs: 'min-w-[84px]',\n sm: 'min-w-[92px]',\n md: 'min-w-[100px]',\n lg: 'min-w-[112px]',\n}\n\n/**\n * Навигационные кнопки берут свой размер один в один: коробка номера теперь\n * той же высоты, что и `GrButton` того же имени, и сдвигать ступень больше не\n * нужно. Отображение оставлено явным — оно называет инвариант «кнопка и номер\n * одного роста», который иначе держался бы на совпадении двух шкал.\n */\nexport const navButtonSizes: Record<GrPaginationSize, GrComponentSize> = {\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n ellipsisSizes,\n jumperSizes,\n labelSizes,\n pageListGaps,\n pageBoxSizes,\n pageSizeSelectWidths,\n rowGaps,\n} from './grPaginationStyles'\n\nexport const grPaginationSafelist = [...new Set([\n ...Object.values(pageBoxSizes).flatMap(splitClassTokens),\n ...Object.values(ellipsisSizes).flatMap(splitClassTokens),\n ...Object.values(labelSizes).flatMap(splitClassTokens),\n ...Object.values(jumperSizes).flatMap(splitClassTokens),\n ...Object.values(rowGaps).flatMap(splitClassTokens),\n ...Object.values(pageListGaps).flatMap(splitClassTokens),\n ...Object.values(pageSizeSelectWidths).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grPaginationSafelist } from './safelist'\n\nexport const grPaginationConfig = defineGranularComponent(import.meta.url, {\n name: 'GrPagination',\n dependencies: ['GrButton', 'GrSelect'],\n safelist: grPaginationSafelist,\n})\n"],"mappings":";;;;;;;;;;;;;AAcA,IAAa,eAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,aAA+C;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,cAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,UAA4C;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,eAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAyD;CACpE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;AAQA,IAAa,iBAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;ACjEA,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB;CACtD,GAAG,OAAO,OAAO,OAAO,CAAC,CAAC,QAAQ,gBAAgB;CAClD,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;AACjE,CAAC,CAAC;;;ACfF,IAAa,qBAAqB,wBAAwB,YAAY,KAAK;CACzE,MAAM;CACN,cAAc,CAAC,YAAY,UAAU;CACrC,UAAU;AACZ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
+
import { i as controlStateIconColors, r as controlStateIconClass } from "./controlState-DoImKciE.js";
|
|
2
3
|
import { d as shellEnabledClass, f as sizes, i as addonSegmentSuffixClass, l as shellBaseClass, m as textAlign, n as addonInlineSuffixClass, p as states, r as addonSegmentPrefixClass, s as invalidClass, t as addonInlinePrefixClass, u as shellDisabledClass } from "./grInputStyles-DgQYjJvD.js";
|
|
3
4
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
5
|
//#region src/components/GrInput/safelist.ts
|
|
@@ -13,7 +14,9 @@ var grInputSafelist = [.../* @__PURE__ */ new Set([
|
|
|
13
14
|
...splitClassTokens(addonSegmentPrefixClass),
|
|
14
15
|
...splitClassTokens(addonSegmentSuffixClass),
|
|
15
16
|
...splitClassTokens(addonInlinePrefixClass),
|
|
16
|
-
...splitClassTokens(addonInlineSuffixClass)
|
|
17
|
+
...splitClassTokens(addonInlineSuffixClass),
|
|
18
|
+
...splitClassTokens(controlStateIconClass),
|
|
19
|
+
...Object.values(controlStateIconColors).flatMap(splitClassTokens)
|
|
17
20
|
])];
|
|
18
21
|
//#endregion
|
|
19
22
|
//#region src/components/GrInput/config.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-CIUU9ZpY.js","names":[],"sources":["../../src/components/GrInput/safelist.ts","../../src/components/GrInput/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport { controlStateIconClass, controlStateIconColors } from '../shared/controlState'\nimport {\n addonInlinePrefixClass,\n addonInlineSuffixClass,\n addonSegmentPrefixClass,\n addonSegmentSuffixClass,\n invalidClass,\n shellBaseClass,\n shellDisabledClass,\n shellEnabledClass,\n sizes,\n states,\n textAlign,\n} from './grInputStyles'\n\nexport const grInputSafelist = [...new Set([\n ...Object.values(sizes).flatMap(splitClassTokens),\n ...Object.values(textAlign).flatMap(splitClassTokens),\n ...Object.values(states).flatMap(splitClassTokens),\n ...splitClassTokens(invalidClass),\n ...splitClassTokens(shellBaseClass),\n ...splitClassTokens(shellEnabledClass),\n ...splitClassTokens(shellDisabledClass),\n ...splitClassTokens(addonSegmentPrefixClass),\n ...splitClassTokens(addonSegmentSuffixClass),\n ...splitClassTokens(addonInlinePrefixClass),\n ...splitClassTokens(addonInlineSuffixClass),\n // Общий модуль лежит в чанке без адреса — его классы объявляет каждый импортёр.\n ...splitClassTokens(controlStateIconClass),\n ...Object.values(controlStateIconColors).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\nimport { grInputSafelist } from './safelist'\n\nexport const grInputConfig = defineGranularComponent(import.meta.url, {\n name: 'GrInput',\n safelist: grInputSafelist,\n})\n"],"mappings":";;;;;AAgBA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,OAAO,OAAO,KAAK,CAAC,CAAC,QAAQ,gBAAgB;CAChD,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,MAAM,CAAC,CAAC,QAAQ,gBAAgB;CACjD,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,sBAAsB;CAE1C,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;AACnE,CAAC,CAAC;;;AC5BF,IAAa,gBAAgB,wBAAwB,YAAY,KAAK;CACpE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
+
import { i as controlStateIconColors, r as controlStateIconClass } from "./controlState-DoImKciE.js";
|
|
2
3
|
import { a as enabledSurfaceClass, c as lineCountClass, i as disabledSurfaceClass, l as resizeClass, n as countClass, r as countRowClass, s as invalidBorderClass, t as borderClassByState, u as sizes } from "./grTextareaStyles-Bp35BGna.js";
|
|
3
4
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
5
|
//#region src/components/GrTextarea/safelist.ts
|
|
@@ -11,7 +12,10 @@ var grTextareaSafelist = [.../* @__PURE__ */ new Set([
|
|
|
11
12
|
...splitClassTokens(disabledSurfaceClass),
|
|
12
13
|
...splitClassTokens(countClass),
|
|
13
14
|
...splitClassTokens(countRowClass),
|
|
14
|
-
...splitClassTokens(lineCountClass)
|
|
15
|
+
...splitClassTokens(lineCountClass),
|
|
16
|
+
...splitClassTokens(controlStateIconClass),
|
|
17
|
+
...Object.values(controlStateIconColors).flatMap(splitClassTokens),
|
|
18
|
+
...splitClassTokens("absolute top-2 right-10 right-2 sr-only")
|
|
15
19
|
])];
|
|
16
20
|
//#endregion
|
|
17
21
|
//#region src/components/GrTextarea/config.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DENqOoh0.js","names":[],"sources":["../../src/components/GrTextarea/safelist.ts","../../src/components/GrTextarea/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport { controlStateIconClass, controlStateIconColors } from '../shared/controlState'\nimport {\n borderClassByState,\n countClass,\n countRowClass,\n lineCountClass,\n disabledSurfaceClass,\n enabledSurfaceClass,\n invalidBorderClass,\n resizeClass,\n sizes,\n} from './grTextareaStyles'\n\nexport const grTextareaSafelist = [...new Set([\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n ...Object.values(sizes).flatMap(splitClassTokens),\n ...Object.values(resizeClass).flatMap(splitClassTokens),\n ...splitClassTokens(enabledSurfaceClass),\n ...splitClassTokens(disabledSurfaceClass),\n ...splitClassTokens(countClass),\n ...splitClassTokens(countRowClass),\n ...splitClassTokens(lineCountClass),\n // Общий модуль лежит в чанке без адреса — его классы объявляет каждый импортёр.\n ...splitClassTokens(controlStateIconClass),\n ...Object.values(controlStateIconColors).flatMap(splitClassTokens),\n ...splitClassTokens('absolute top-2 right-10 right-2 sr-only'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTextareaSafelist } from './safelist'\n\nexport const grTextareaConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTextarea',\n safelist: grTextareaSafelist,\n})\n"],"mappings":";;;;;AAcA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,OAAO,OAAO,KAAK,CAAC,CAAC,QAAQ,gBAAgB;CAChD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB;CACtD,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAElC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,iBAAiB,yCAAyC;AAC/D,CAAC,CAAC;;;ACxBF,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -9,6 +9,21 @@ var treeSectionsRootClass = "flex flex-col gap-4";
|
|
|
9
9
|
var treeSectionsHeadClass = "flex items-baseline gap-2 pb-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] uppercase tracking-wider text-[var(--gr-muted-fg)] border-b border-[var(--gr-brd)]";
|
|
10
10
|
var treeSectionsCountClass = "ml-auto text-[var(--gr-muted-fg)] [font-variant-numeric:tabular-nums]";
|
|
11
11
|
var treeSectionsGroupClass = "flex flex-col gap-1";
|
|
12
|
+
/**
|
|
13
|
+
* Собственный вид строк секций. Задаётся на самом дереве, а не на обёртке:
|
|
14
|
+
* `GrTree` объявляет значения по умолчанию на своём корне, и переменная,
|
|
15
|
+
* выставленная предком, до строки не доходит вовсе — её перекрывает
|
|
16
|
+
* собственное объявление дерева.
|
|
17
|
+
*
|
|
18
|
+
* Полоса у выбранной строки несёт то же, что заголовок группы, —
|
|
19
|
+
* принадлежность: подложка выбора отступает на отступ уровня, и на вложенных
|
|
20
|
+
* строках выбор переставал попадать в один вертикальный ряд с остальными.
|
|
21
|
+
*/
|
|
22
|
+
var treeSectionsRowVars = {
|
|
23
|
+
"--gr-tree-row-min-height": "32px",
|
|
24
|
+
"--gr-tree-row-radius": "7px",
|
|
25
|
+
"--gr-tree-row-current-bar-width": "2px"
|
|
26
|
+
};
|
|
12
27
|
//#endregion
|
|
13
28
|
//#region src/components/GrTreeSections/safelist.ts
|
|
14
29
|
var grTreeSectionsSafelist = [.../* @__PURE__ */ new Set([
|
|
@@ -25,4 +40,4 @@ var grTreeSectionsConfig = defineGranularComponent(import.meta.url, {
|
|
|
25
40
|
safelist: grTreeSectionsSafelist
|
|
26
41
|
});
|
|
27
42
|
//#endregion
|
|
28
|
-
export { treeSectionsHeadClass as a, treeSectionsGroupClass as i, grTreeSectionsSafelist as n, treeSectionsRootClass as o, treeSectionsCountClass as r, grTreeSectionsConfig as t };
|
|
43
|
+
export { treeSectionsHeadClass as a, treeSectionsGroupClass as i, grTreeSectionsSafelist as n, treeSectionsRootClass as o, treeSectionsCountClass as r, treeSectionsRowVars as s, grTreeSectionsConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-bjDf8nBf.js","names":[],"sources":["../../src/components/GrTreeSections/grTreeSectionsStyles.ts","../../src/components/GrTreeSections/safelist.ts","../../src/components/GrTreeSections/config.ts"],"sourcesContent":["export const treeSectionsRootClass = 'flex flex-col gap-4'\n\n/**\n * Заголовок группы набирается капителью и отделяется линией: он объявляет\n * рубрику, а не узел, и должен читаться иначе, чем строки под ним.\n */\nexport const treeSectionsHeadClass = 'flex items-baseline gap-2 pb-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] uppercase tracking-wider text-[var(--gr-muted-fg)] border-b border-[var(--gr-brd)]'\n\nexport const treeSectionsCountClass = 'ml-auto text-[var(--gr-muted-fg)] [font-variant-numeric:tabular-nums]'\n\nexport const treeSectionsGroupClass = 'flex flex-col gap-1'\n\n/**\n * Собственный вид строк секций. Задаётся на самом дереве, а не на обёртке:\n * `GrTree` объявляет значения по умолчанию на своём корне, и переменная,\n * выставленная предком, до строки не доходит вовсе — её перекрывает\n * собственное объявление дерева.\n *\n * Полоса у выбранной строки несёт то же, что заголовок группы, —\n * принадлежность: подложка выбора отступает на отступ уровня, и на вложенных\n * строках выбор переставал попадать в один вертикальный ряд с остальными.\n */\nexport const treeSectionsRowVars = {\n '--gr-tree-row-min-height': '32px',\n '--gr-tree-row-radius': '7px',\n '--gr-tree-row-current-bar-width': '2px',\n} as const\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n treeSectionsCountClass,\n treeSectionsGroupClass,\n treeSectionsHeadClass,\n treeSectionsRootClass,\n} from './grTreeSectionsStyles'\n\nexport const grTreeSectionsSafelist = [...new Set([\n ...splitClassTokens(treeSectionsRootClass),\n ...splitClassTokens(treeSectionsHeadClass),\n ...splitClassTokens(treeSectionsCountClass),\n ...splitClassTokens(treeSectionsGroupClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTreeSectionsSafelist } from './safelist'\n\nexport const grTreeSectionsConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTreeSections',\n dependencies: ['GrTree'],\n safelist: grTreeSectionsSafelist,\n})\n"],"mappings":";;;AAAA,IAAa,wBAAwB;;;;;AAMrC,IAAa,wBAAwB;AAErC,IAAa,yBAAyB;AAEtC,IAAa,yBAAyB;;;;;;;;;;;AAYtC,IAAa,sBAAsB;CACjC,4BAA4B;CAC5B,wBAAwB;CACxB,mCAAmC;AACrC;;;ACjBA,IAAa,yBAAyB,CAAC,mBAAG,IAAI,IAAI;CAChD,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,sBAAsB;AAC5C,CAAC,CAAC;;;ACVF,IAAa,uBAAuB,wBAAwB,YAAY,KAAK;CAC3E,MAAM;CACN,cAAc,CAAC,QAAQ;CACvB,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/components/shared/controlState.ts
|
|
2
|
+
/**
|
|
3
|
+
* `danger` в набор не входит намеренно. Его смысл уже несут два канала:
|
|
4
|
+
* `aria-invalid` для скринридера и текст ошибки от `GrFormField` для глаз.
|
|
5
|
+
* Третья иконка рядом с ними — шум, а не признак.
|
|
6
|
+
*/
|
|
7
|
+
var controlStateIconClass = "pointer-events-none flex h-6 w-6 shrink-0 items-center justify-center";
|
|
8
|
+
/**
|
|
9
|
+
* Цвет иконки — роль `-text`, а не насыщенный тон: `--gr-success` выверен как
|
|
10
|
+
* заливка и в роли текста не добирает AA. Гейт `styleTokens` это ловит.
|
|
11
|
+
*/
|
|
12
|
+
var controlStateIconColors = {
|
|
13
|
+
success: "text-[var(--gr-success-text)]",
|
|
14
|
+
warning: "text-[var(--gr-warning-text)]"
|
|
15
|
+
};
|
|
16
|
+
/** Ключ локали подписи. Текст один на все контролы: состояние у них общее. */
|
|
17
|
+
var controlStateTextKey = {
|
|
18
|
+
success: "gr.common.stateSuccess",
|
|
19
|
+
warning: "gr.common.stateWarning"
|
|
20
|
+
};
|
|
21
|
+
var controlStateFallbackText = {
|
|
22
|
+
success: "Valid",
|
|
23
|
+
warning: "Warning"
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Показывать ли признак: только у `success`/`warning` и только пока поле не
|
|
27
|
+
* объявлено невалидным. Иначе галочка «корректно» соседствовала бы с
|
|
28
|
+
* `aria-invalid="true"` и противоречила ему.
|
|
29
|
+
*/
|
|
30
|
+
function controlSignalState(state, invalid) {
|
|
31
|
+
if (invalid) return void 0;
|
|
32
|
+
if (state === "success" || state === "warning") return state;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { controlStateTextKey as a, controlStateIconColors as i, controlStateFallbackText as n, controlStateIconClass as r, controlSignalState as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlState-DoImKciE.js","names":[],"sources":["../../src/components/shared/controlState.ts"],"sourcesContent":["/**\n * Небуквенный признак состояния форм-контрола.\n *\n * `state=\"success\"`/`\"warning\"` до этого несли смысл **только цветом рамки**, а\n * это WCAG 1.4.1: цвет не может быть единственным носителем информации. Иконка\n * добавляет форму, а скрытая подпись — программный канал: у `success` и\n * `warning`, в отличие от `danger`, ARIA-состояния не существует вовсе, и\n * объявить их нечем, кроме текста в `aria-describedby`.\n *\n * Модуль общий на пять контролов (`GrInput`, `GrTextarea`, `GrNumberInput`,\n * `GrInputTag`, `GrTreeSelect`), поэтому его классы обязан объявить **каждый**\n * импортёр: в `dist` общий модуль лежит в чанке без адреса и в область скана\n * пресета не попадает.\n */\n\n/** Состояния, у которых признак есть. `danger` его не получает — см. ниже. */\nexport type GrControlSignalState = 'success' | 'warning'\n\n/**\n * `danger` в набор не входит намеренно. Его смысл уже несут два канала:\n * `aria-invalid` для скринридера и текст ошибки от `GrFormField` для глаз.\n * Третья иконка рядом с ними — шум, а не признак.\n */\nexport const controlStateIconClass = 'pointer-events-none flex h-6 w-6 shrink-0 items-center justify-center'\n\n/**\n * Цвет иконки — роль `-text`, а не насыщенный тон: `--gr-success` выверен как\n * заливка и в роли текста не добирает AA. Гейт `styleTokens` это ловит.\n */\nexport const controlStateIconColors: Record<GrControlSignalState, string> = {\n success: 'text-[var(--gr-success-text)]',\n warning: 'text-[var(--gr-warning-text)]',\n}\n\n/** Ключ локали подписи. Текст один на все контролы: состояние у них общее. */\nexport const controlStateTextKey: Record<GrControlSignalState, string> = {\n success: 'gr.common.stateSuccess',\n warning: 'gr.common.stateWarning',\n}\n\nexport const controlStateFallbackText: Record<GrControlSignalState, string> = {\n success: 'Valid',\n warning: 'Warning',\n}\n\n/**\n * Показывать ли признак: только у `success`/`warning` и только пока поле не\n * объявлено невалидным. Иначе галочка «корректно» соседствовала бы с\n * `aria-invalid=\"true\"` и противоречила ему.\n */\nexport function controlSignalState(\n state: string | undefined,\n invalid: boolean,\n): GrControlSignalState | undefined {\n if (invalid)\n return undefined\n if (state === 'success' || state === 'warning')\n return state\n\n return undefined\n}\n"],"mappings":";;;;;;AAuBA,IAAa,wBAAwB;;;;;AAMrC,IAAa,yBAA+D;CAC1E,SAAS;CACT,SAAS;AACX;;AAGA,IAAa,sBAA4D;CACvE,SAAS;CACT,SAAS;AACX;AAEA,IAAa,2BAAiE;CAC5E,SAAS;CACT,SAAS;AACX;;;;;;AAOA,SAAgB,mBACd,OACA,SACkC;CAClC,IAAI,SACF,OAAO,KAAA;CACT,IAAI,UAAU,aAAa,UAAU,WACnC,OAAO;AAGX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-DjTnfTqM.js","names":[],"sources":["../../src/i18n/locales/en.json"],"sourcesContent":["{\n \"transfer\": {\n \"sourceTitle\": \"Available\",\n \"targetTitle\": \"Selected\",\n \"search\": \"Search\",\n \"toTarget\": \"Move to selected\",\n \"toSource\": \"Move back to available\",\n \"selectAll\": \"Select everything shown\",\n \"moveUp\": \"Move earlier\",\n \"moveDown\": \"Move later\",\n \"selected\": \"{count} of {total}\",\n \"shown\": \"Showing {shown} of {total}\",\n \"empty\": \"Nothing here yet\",\n \"emptyFiltered\": \"Nothing matches the search\",\n \"moved\": \"{count} moved to {list}\",\n \"reordered\": \"Position {position} of {count}\",\n \"reorderFiltered\": \"Reordering is off while a search is active\",\n \"cancelled\": \"Move cancelled\"\n },\n \"carousel\": {\n \"roledescription\": \"carousel\",\n \"slideRoledescription\": \"slide\",\n \"slidePosition\": \"{index} of {total}\",\n \"previous\": \"Previous slide\",\n \"next\": \"Next slide\",\n \"play\": \"Start automatic slide show\",\n \"pause\": \"Stop automatic slide show\",\n \"indicators\": \"Slides\",\n \"autoplayStopped\": \"Automatic slide show stopped\"\n },\n \"chip\": {\n \"remove\": \"Remove\",\n \"removeNamed\": \"Remove {label}\"\n },\n \"common\": {\n \"confirm\": \"Confirm\",\n \"cancel\": \"Cancel\",\n \"add\": \"Add\",\n \"clear\": \"Clear\",\n \"close\": \"Close\",\n \"stateSuccess\": \"Valid\",\n \"stateWarning\": \"Warning\"\n },\n \"loading\": {\n \"defaultText\": \"Loading...\"\n },\n \"steps\": {\n \"label\": \"Progress\",\n \"status\": \"Step {step} of {count}\",\n \"completed\": \"completed\",\n \"error\": \"has errors\"\n },\n \"treeSelect\": {\n \"filterPlaceholder\": \"Search…\",\n \"empty\": \"No data\",\n \"loading\": \"Loading…\"\n },\n \"badgeWrap\": {\n \"count\": \"{count} new\"\n },\n \"avatar\": {\n \"group\": \"People\",\n \"groupOverflow\": \"and {count} more\",\n \"status\": {\n \"online\": \"online\",\n \"offline\": \"offline\",\n \"busy\": \"busy\",\n \"away\": \"away\"\n }\n },\n \"tree\": {\n \"drag\": \"Drag\",\n \"expand\": \"Expand\",\n \"collapse\": \"Collapse\",\n \"moved\": \"Moved {label}\"\n },\n \"select\": {\n \"customValuePlaceholder\": \"Add value…\",\n \"addOption\": \"Add \\\"{value}\\\"\",\n \"clearOption\": \"None\",\n \"searchPlaceholder\": \"Search…\",\n \"loading\": \"Loading…\",\n \"noResults\": \"No results\",\n \"removeTag\": \"Remove {label}\"\n },\n \"dataTable\": {\n \"loading\": \"Loading…\",\n \"empty\": \"No data\",\n \"selectAll\": \"Select all rows\",\n \"selectRow\": \"Select row\",\n \"sortAsc\": \"Activate to sort ascending\",\n \"sortDesc\": \"Activate to sort descending\",\n \"sortNone\": \"Activate to remove sorting\",\n \"moveColumn\": \"Move column {label}\",\n \"columnMoved\": \"Column {label} moved to position {position} of {count}\",\n \"resizeColumn\": \"Width of column {label}\",\n \"columnResized\": \"Column {label} is {width} pixels wide\"\n },\n \"breadcrumbs\": {\n \"label\": \"Breadcrumb\",\n \"expand\": \"Show hidden path\"\n },\n \"autocomplete\": {\n \"loading\": \"Loading…\",\n \"noResults\": \"No results\",\n \"addOption\": \"Add \\\"{value}\\\"\",\n \"removeValue\": \"Remove {label}\",\n \"typeMore\": {\n \"one\": \"Type at least {n} character\",\n \"other\": \"Type at least {n} characters\"\n }\n },\n \"form\": {\n \"required\": \"This field is required\",\n \"min\": \"Minimum is {min}\",\n \"max\": \"Maximum is {max}\",\n \"len\": \"Length must be {len}\",\n \"pattern\": \"Invalid format\",\n \"email\": \"Enter a valid email\",\n \"url\": \"Enter a valid URL\",\n \"file\": \"Invalid file\",\n \"invalid\": \"Invalid value\",\n \"readonly\": \"Read only\",\n \"validating\": \"Checking…\"\n },\n \"dialog\": {\n \"confirm\": {\n \"title\": \"Confirm\"\n },\n \"prompt\": {\n \"title\": \"Prompt\",\n \"label\": \"Value\",\n \"required\": \"Enter a value.\"\n },\n \"ok\": \"OK\"\n },\n \"switch\": {\n \"loading\": \"Saving…\"\n },\n \"slider\": {\n \"min\": \"min\",\n \"max\": \"max\"\n },\n \"sidebar\": {\n \"expand\": \"Expand sidebar\",\n \"collapse\": \"Collapse sidebar\"\n },\n \"splitter\": {\n \"label\": \"Resize panels\"\n },\n \"statistic\": {\n \"trendUp\": \"Increase\",\n \"trendDown\": \"Decrease\",\n \"trendFlat\": \"No change\"\n },\n \"pagination\": {\n \"label\": \"Pagination\",\n \"pageSize\": \"Page size\",\n \"prev\": \"Prev\",\n \"next\": \"Next\",\n \"page\": \"Page {n}\",\n \"first\": \"First page\",\n \"last\": \"Last page\",\n \"jumpTo\": \"Go to\",\n \"total\": \"{from}–{to} of {total}\",\n \"status\": \"Page {page} of {count}\"\n },\n \"navbar\": {\n \"openMenu\": \"Open menu\"\n },\n \"scrollSpy\": {\n \"label\": \"On this page\"\n },\n \"responseError\": {\n \"networkTitle\": \"No connection to the server\",\n \"networkMessage\": \"Check your internet connection and try again.\",\n \"abortedTitle\": \"Request cancelled\",\n \"abortedMessage\": \"The request was cancelled.\",\n \"validationTitle\": \"Check the data\",\n \"validationMessage\": \"The server returned a validation error. Fix the fields and try again.\",\n \"clientTitle\": \"Request error\",\n \"clientMessage\": \"The server rejected the request.\",\n \"serverTitle\": \"Server error\",\n \"serverMessage\": \"A server error occurred. Please try again.\",\n \"unknownTitle\": \"Something went wrong\",\n \"unknownMessage\": \"The operation could not be completed. Please try again.\",\n \"statusLabel\": \"HTTP {status}\",\n \"retryLabel\": \"Retry\",\n \"dismissLabel\": \"Dismiss\"\n },\n \"colors\": {\n \"neutral\": \"Neutral\",\n \"success\": \"Success\",\n \"warning\": \"Warning\",\n \"danger\": \"Danger\",\n \"info\": \"Info\",\n \"primary\": \"Primary\",\n \"slate\": \"Slate\",\n \"azure\": \"Azure\"\n },\n \"drawer\": {\n \"title\": \"Drawer\"\n },\n \"modal\": {\n \"title\": \"Dialog\"\n },\n \"numberInput\": {\n \"increase\": \"Increase\",\n \"decrease\": \"Decrease\"\n },\n \"toaster\": {\n \"dismiss\": \"Dismiss\",\n \"region\": \"Notifications\"\n },\n \"inputTag\": {\n \"removeTag\": \"Remove tag\",\n \"removeTagNamed\": \"Remove tag {tag}\",\n \"clearAll\": \"Clear all tags\",\n \"added\": \"Tag added: {tag}\",\n \"addedMany\": \"{count} tags added\",\n \"removed\": \"Tag removed: {tag}\",\n \"cleared\": \"All tags removed\",\n \"limitReached\": \"Tag limit reached\"\n },\n \"fileUpload\": {\n \"placeholder\": \"Drag files here or click to select\",\n \"progress\": \"Upload progress\",\n \"uploading\": \"Uploading…\",\n \"success\": \"Upload complete\",\n \"error\": \"Upload failed\",\n \"remove\": \"Remove {fileName}\",\n \"retry\": \"Retry upload\",\n \"retryFile\": \"Retry {fileName}\",\n \"abortFile\": \"Cancel upload of {fileName}\",\n \"statusPending\": \"Pending\",\n \"statusUploading\": \"Uploading\",\n \"statusSuccess\": \"Uploaded\",\n \"statusError\": \"Failed\"\n },\n \"formFile\": {\n \"upload\": \"Upload file\",\n \"change\": \"Change file\",\n \"remove\": \"Remove\",\n \"clearAll\": \"Clear all\",\n \"placeholder\": \"No files selected\",\n \"validateError\": \"Failed to validate dropped files\",\n \"removeFile\": \"Remove {fileName}\"\n },\n \"imageViewer\": {\n \"close\": \"Close image viewer\",\n \"prev\": \"Previous image\",\n \"next\": \"Next image\",\n \"zoomIn\": \"Zoom in\",\n \"zoomOut\": \"Zoom out\",\n \"resetZoom\": \"Reset zoom\",\n \"zoomToNatural\": \"Actual size (1:1)\",\n \"rotateLeft\": \"Rotate left\",\n \"rotateRight\": \"Rotate right\",\n \"download\": \"Download image\",\n \"empty\": \"No image\",\n \"label\": \"Image viewer\",\n \"position\": \"Image {index} of {total}\"\n },\n \"formErrorBanner\": {\n \"validationTitle\": \"Check the form fields\",\n \"validationMessage\": \"The server rejected the data. Fix the highlighted fields and try again.\",\n \"clientTitle\": \"Failed to save\",\n \"serverTitle\": \"Save error\",\n \"serverMessage\": \"Could not save the data. Please try again later.\"\n },\n \"uploadErrorBanner\": {\n \"networkTitle\": \"Failed to upload files\",\n \"networkMessage\": \"Check your connection and try again.\",\n \"validationTitle\": \"Files did not pass validation\",\n \"validationMessage\": \"Some of the files do not meet the requirements.\",\n \"serverTitle\": \"Upload error on the server\",\n \"serverMessage\": \"The server could not process the upload. Please try again.\"\n },\n \"input\": {\n \"clear\": \"Clear\",\n \"showPassword\": \"Show password\",\n \"hidePassword\": \"Hide password\",\n \"limitReached\": \"Character limit reached\"\n },\n \"textarea\": {\n \"lines\": {\n \"one\": \"{n} line\",\n \"other\": \"{n} lines\"\n }\n },\n \"rating\": {\n \"label\": \"Rating\",\n \"valueText\": \"{value} of {max}\",\n \"valueTextWithLabel\": \"{value} of {max}, {label}\"\n },\n \"commandPalette\": {\n \"label\": \"Command palette\",\n \"placeholder\": \"Type a command or search…\",\n \"empty\": \"Nothing found\",\n \"recent\": \"Recent\",\n \"loading\": \"Loading…\"\n },\n \"delta\": {\n \"increase\": \"increase\"\n },\n \"filePreview\": {\n \"label\": \"File\"\n },\n \"fileValidation\": {\n \"accept\": \"File \\\"{fileName}\\\" does not match accept=\\\"{accept}\\\"\",\n \"extension\": \"File \\\"{fileName}\\\" has disallowed extension \\\".{extension}\\\"\",\n \"mimeType\": \"File \\\"{fileName}\\\" has disallowed mime type \\\"{mimeType}\\\"\",\n \"mimeTypeFallback\": \"File \\\"{fileName}\\\" has fallback mime type \\\"{mimeType}\\\"\",\n \"maxFileSize\": \"File \\\"{fileName}\\\" is too large ({size} bytes), maxBytes={maxBytes}\",\n \"maxCount\": \"Too many files selected ({count}), maxCount={maxCount}\",\n \"maxTotalSize\": \"Total files size is too large ({total} bytes), maxTotalSizeBytes={maxBytes}\"\n },\n \"kbd\": {\n \"command\": \"Command\",\n \"option\": \"Option\",\n \"shift\": \"Shift\",\n \"control\": \"Control\",\n \"enter\": \"Enter\",\n \"escape\": \"Escape\",\n \"tab\": \"Tab\",\n \"backspace\": \"Backspace\",\n \"delete\": \"Delete\",\n \"pageUp\": \"Page Up\",\n \"pageDown\": \"Page Down\",\n \"arrowUp\": \"Arrow Up\",\n \"arrowDown\": \"Arrow Down\",\n \"arrowLeft\": \"Arrow Left\",\n \"arrowRight\": \"Arrow Right\",\n \"then\": \"then\"\n },\n \"link\": {\n \"opensInNewTab\": \"opens in a new tab\"\n },\n \"colorPicker\": {\n \"panelLabel\": \"Color picker\",\n \"hue\": \"Hue\",\n \"saturation\": \"Saturation\",\n \"lightness\": \"Lightness\",\n \"opacity\": \"Opacity\",\n \"hexLabel\": \"Hex value\",\n \"presetsLabel\": \"Color presets\",\n \"swatchLabel\": \"Color {color}\"\n },\n \"collapse\": {\n \"empty\": \"Nothing here yet\"\n },\n \"list\": {\n \"empty\": \"Nothing here yet\"\n },\n \"button\": {\n \"loading\": \"Loading…\"\n },\n \"table\": {\n \"empty\": \"Nothing here yet\"\n },\n \"timeline\": {\n \"empty\": \"Nothing here yet\"\n },\n \"tabs\": {\n \"empty\": \"Nothing here yet\",\n \"close\": \"Close tab\"\n },\n \"bottomNav\": {\n \"label\": \"Bottom navigation\",\n \"badge\": \"{count} new\"\n },\n \"emptyState\": {\n \"title\": \"Nothing here yet\"\n },\n \"sortable\": {\n \"label\": \"Sortable list\",\n \"handle\": \"Reorder\",\n \"empty\": \"Nothing to sort yet\",\n \"grabbed\": \"Grabbed. Position {position} of {count}\",\n \"moved\": \"Position {position} of {count}\",\n \"dropped\": \"Dropped at position {position} of {count}\",\n \"cancelled\": \"Move cancelled\"\n },\n \"jsonViewer\": {\n \"search\": \"Search key or value\",\n \"expandAll\": \"Expand all\",\n \"collapseAll\": \"Collapse all\",\n \"copy\": \"Copy value\",\n \"copied\": \"Value copied\",\n \"copyFailed\": \"Could not copy value\",\n \"moreItems\": \"more\"\n },\n \"contextMenu\": {\n \"label\": \"Context menu\"\n }\n}\n"],"mappings":""}
|
|
@@ -37,7 +37,9 @@ var common = {
|
|
|
37
37
|
"cancel": "Cancelar",
|
|
38
38
|
"add": "Añadir",
|
|
39
39
|
"clear": "Limpiar",
|
|
40
|
-
"close": "Cerrar"
|
|
40
|
+
"close": "Cerrar",
|
|
41
|
+
"stateSuccess": "Válido",
|
|
42
|
+
"stateWarning": "Advertencia"
|
|
41
43
|
};
|
|
42
44
|
var loading = { "defaultText": "Cargando..." };
|
|
43
45
|
var steps = {
|