@moodlehq/design-system 4.0.0 → 5.0.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 +16 -6
- package/dist/components/_index.legacy.scss +1893 -0
- package/dist/components/activity-icon/ActivityIcon.d.ts +3 -3
- package/dist/components/activity-icon/ActivityIcon.js +5 -5
- package/dist/components/activity-icon/ActivityIcon.js.map +1 -1
- package/dist/components/activity-icon/index.css +99 -0
- package/dist/components/badge/Badge.d.ts +1 -1
- package/dist/components/badge/{Badge2.js → Badge.js} +1 -2
- package/dist/components/badge/Badge.js.map +1 -0
- package/dist/components/badge/index.css +115 -0
- package/dist/components/badge/index.js +1 -1
- package/dist/components/button/index.css +295 -0
- package/dist/components/checkbox/index.css +181 -0
- package/dist/components/choicebox/Choicebox.d.ts +21 -0
- package/dist/components/choicebox/Choicebox.js +55 -0
- package/dist/components/choicebox/Choicebox.js.map +1 -0
- package/dist/components/choicebox/index.css +364 -0
- package/dist/components/choicebox/index.d.ts +1 -0
- package/dist/components/choicebox/index.js +2 -0
- package/dist/components/close-button/CloseButton.d.ts +1 -1
- package/dist/components/close-button/index.css +47 -0
- package/dist/components/favourite-button/FavouriteButton.d.ts +15 -0
- package/dist/components/favourite-button/FavouriteButton.js +25 -0
- package/dist/components/favourite-button/FavouriteButton.js.map +1 -0
- package/dist/components/favourite-button/index.css +86 -0
- package/dist/components/favourite-button/index.d.ts +2 -0
- package/dist/components/favourite-button/index.js +2 -0
- package/dist/components/index.css +12 -0
- package/dist/components/index.d.ts +12 -0
- package/dist/components/link/Link.d.ts +11 -0
- package/dist/components/link/Link.js +65 -0
- package/dist/components/link/Link.js.map +1 -0
- package/dist/components/link/index.css +122 -0
- package/dist/components/link/index.d.ts +1 -0
- package/dist/components/link/index.js +2 -0
- package/dist/components/nav-pill/NavPill.d.ts +21 -0
- package/dist/components/nav-pill/NavPill.js +54 -0
- package/dist/components/nav-pill/NavPill.js.map +1 -0
- package/dist/components/nav-pill/index.css +96 -0
- package/dist/components/nav-pill/index.d.ts +1 -0
- package/dist/components/nav-pill/index.js +2 -0
- package/dist/components/pagination/Pagination.d.ts +32 -0
- package/dist/components/pagination/Pagination.js +100 -0
- package/dist/components/pagination/Pagination.js.map +1 -0
- package/dist/components/pagination/index.css +139 -0
- package/dist/components/pagination/index.d.ts +1 -0
- package/dist/components/pagination/index.js +2 -0
- package/dist/components/pagination/pagination.helpers.d.ts +26 -0
- package/dist/components/pagination/pagination.helpers.js +136 -0
- package/dist/components/pagination/pagination.helpers.js.map +1 -0
- package/dist/components/progress-bar/ProgressBar.d.ts +35 -0
- package/dist/components/progress-bar/ProgressBar.js +86 -0
- package/dist/components/progress-bar/ProgressBar.js.map +1 -0
- package/dist/components/progress-bar/index.css +193 -0
- package/dist/components/progress-bar/index.d.ts +1 -0
- package/dist/components/progress-bar/index.js +2 -0
- package/dist/components/radio/index.css +133 -0
- package/dist/index.css +1101 -150
- package/dist/index.js +8 -2
- package/{tokens → dist/tokens}/css/colors.css +7 -4
- package/{tokens → dist/tokens}/css/primitives.css +1 -1
- package/{tokens → dist/tokens}/scss/_colors.scss +8 -5
- package/{tokens → dist/tokens}/scss/_index_css_vars.scss +3 -0
- package/{tokens → dist/tokens}/scss/_primitives.scss +1 -1
- package/{tokens → dist/tokens}/scss/_typography.scss +1 -1
- package/package.json +16 -7
- package/dist/components/badge/Badge2.js.map +0 -1
- /package/{tokens → dist/tokens}/css/borders.css +0 -0
- /package/{tokens → dist/tokens}/css/breakpoints.css +0 -0
- /package/{tokens → dist/tokens}/css/index.css +0 -0
- /package/{tokens → dist/tokens}/css/shadows.css +0 -0
- /package/{tokens → dist/tokens}/css/sizes.css +0 -0
- /package/{tokens → dist/tokens}/css/spacing.css +0 -0
- /package/{tokens → dist/tokens}/css/typography.css +0 -0
- /package/{tokens → dist/tokens}/scss/_borders.scss +0 -0
- /package/{tokens → dist/tokens}/scss/_breakpoints.scss +0 -0
- /package/{tokens → dist/tokens}/scss/_index.legacy.scss +0 -0
- /package/{tokens → dist/tokens}/scss/_index.scss +0 -0
- /package/{tokens → dist/tokens}/scss/_shadows.scss +0 -0
- /package/{tokens → dist/tokens}/scss/_sizes.scss +0 -0
- /package/{tokens → dist/tokens}/scss/_spacing.scss +0 -0
package/dist/index.js
CHANGED
|
@@ -2,9 +2,15 @@
|
|
|
2
2
|
/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
4
|
import { ActivityIcon } from "./components/activity-icon/ActivityIcon.js";
|
|
5
|
-
import { Badge } from "./components/badge/
|
|
5
|
+
import { Badge } from "./components/badge/Badge.js";
|
|
6
6
|
import { Button } from "./components/button/Button.js";
|
|
7
7
|
import { Checkbox } from "./components/checkbox/Checkbox.js";
|
|
8
|
+
import { Choicebox } from "./components/choicebox/Choicebox.js";
|
|
8
9
|
import { CloseButton } from "./components/close-button/CloseButton.js";
|
|
10
|
+
import { FavouriteButton } from "./components/favourite-button/FavouriteButton.js";
|
|
11
|
+
import { Link } from "./components/link/Link.js";
|
|
12
|
+
import { NavPill } from "./components/nav-pill/NavPill.js";
|
|
13
|
+
import { Pagination } from "./components/pagination/Pagination.js";
|
|
14
|
+
import { ProgressBar } from "./components/progress-bar/ProgressBar.js";
|
|
9
15
|
import { Radio } from "./components/radio/Radio.js";
|
|
10
|
-
export { ActivityIcon, Badge, Button, Checkbox, CloseButton, Radio };
|
|
16
|
+
export { ActivityIcon, Badge, Button, Checkbox, Choicebox, CloseButton, FavouriteButton, Link, NavPill, Pagination, ProgressBar, Radio };
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
--mds-bg-feedback-primary-default: var(--mds-color-blue-500);
|
|
27
27
|
--mds-bg-feedback-primary-light: var(--mds-color-blue-50);
|
|
28
28
|
--mds-bg-feedback-primary-subtle: var(--mds-color-blue-100);
|
|
29
|
-
--mds-bg-feedback-secondary-default: var(--mds-color-gray-
|
|
29
|
+
--mds-bg-feedback-secondary-default: var(--mds-color-gray-300);
|
|
30
30
|
--mds-bg-feedback-secondary-subtle: var(--mds-color-gray-100);
|
|
31
31
|
--mds-bg-feedback-success-default: var(--mds-color-green-500);
|
|
32
32
|
--mds-bg-feedback-success-light: var(--mds-color-green-50);
|
|
@@ -44,9 +44,12 @@
|
|
|
44
44
|
--mds-bg-interactive-primary-default-light: var(--mds-color-blue-50);
|
|
45
45
|
--mds-bg-interactive-primary-disabled: var(--mds-color-blue-200);
|
|
46
46
|
--mds-bg-interactive-primary-hover: var(--mds-color-blue-600);
|
|
47
|
-
--mds-bg-interactive-secondary-default: var(--mds-color-gray-
|
|
47
|
+
--mds-bg-interactive-secondary-default: var(--mds-color-gray-300);
|
|
48
48
|
--mds-bg-interactive-secondary-disabled: var(--mds-color-gray-200);
|
|
49
|
-
--mds-bg-interactive-secondary-hover: var(--mds-color-gray-
|
|
49
|
+
--mds-bg-interactive-secondary-hover: var(--mds-color-gray-400);
|
|
50
|
+
--mds-bg-nav-pill-hover: var(--mds-color-gray-200);
|
|
51
|
+
--mds-bg-nav-pill-pressed: var(--mds-color-gray-300);
|
|
52
|
+
--mds-bg-nav-pill-selected: var(--mds-color-gray-200);
|
|
50
53
|
--mds-bg-surface-default: var(--mds-color-gray-white);
|
|
51
54
|
--mds-bg-surface-strong: var(--mds-color-gray-200);
|
|
52
55
|
--mds-bg-surface-subtle: var(--mds-color-gray-100);
|
|
@@ -62,7 +65,7 @@
|
|
|
62
65
|
--mds-border-interactive-primary-active: var(--mds-color-blue-600);
|
|
63
66
|
--mds-border-interactive-primary-disabled: var(--mds-color-blue-300);
|
|
64
67
|
--mds-border-interactive-secondary-active: var(--mds-color-gray-700);
|
|
65
|
-
--mds-border-interactive-secondary-default: var(--mds-color-gray-
|
|
68
|
+
--mds-border-interactive-secondary-default: var(--mds-color-gray-500);
|
|
66
69
|
--mds-border-interactive-secondary-disabled: var(--mds-color-gray-500);
|
|
67
70
|
--mds-border-interactive-secondary-hover: var(--mds-color-gray-600);
|
|
68
71
|
--mds-border-subtle: var(--mds-color-gray-200);
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
--mds-scale-1700: 6rem;
|
|
131
131
|
--mds-scale-1800: 50rem;
|
|
132
132
|
--mds-typography-font-family-monospace: Menlo;
|
|
133
|
-
--mds-typography-font-family-sans-serif:
|
|
133
|
+
--mds-typography-font-family-sans-serif: Noto sans;
|
|
134
134
|
--mds-typography-font-size-0: 0rem;
|
|
135
135
|
--mds-typography-font-size-1: 1rem;
|
|
136
136
|
--mds-typography-font-size-2: 2rem;
|
|
@@ -24,7 +24,7 @@ $mds-bg-feedback-info-subtle: #cce6ea !default;
|
|
|
24
24
|
$mds-bg-feedback-primary-default: #0f6cbf !default;
|
|
25
25
|
$mds-bg-feedback-primary-light: #e7f0f9 !default;
|
|
26
26
|
$mds-bg-feedback-primary-subtle: #cfe2f2 !default;
|
|
27
|
-
$mds-bg-feedback-secondary-default: #
|
|
27
|
+
$mds-bg-feedback-secondary-default: #dee2e6 !default;
|
|
28
28
|
$mds-bg-feedback-secondary-subtle: #f8f9fa !default;
|
|
29
29
|
$mds-bg-feedback-success-default: #357a32 !default;
|
|
30
30
|
$mds-bg-feedback-success-light: #ebf2ea !default;
|
|
@@ -42,10 +42,13 @@ $mds-bg-interactive-primary-default: #0f6cbf !default;
|
|
|
42
42
|
$mds-bg-interactive-primary-default-light: #e7f0f9 !default;
|
|
43
43
|
$mds-bg-interactive-primary-disabled: #9fc4e5 !default;
|
|
44
44
|
$mds-bg-interactive-primary-hover: #0c5699 !default;
|
|
45
|
-
$mds-bg-interactive-secondary-active: #
|
|
46
|
-
$mds-bg-interactive-secondary-default: #
|
|
45
|
+
$mds-bg-interactive-secondary-active: #dee2e6 !default;
|
|
46
|
+
$mds-bg-interactive-secondary-default: #dee2e6 !default;
|
|
47
47
|
$mds-bg-interactive-secondary-disabled: #e9ecef !default;
|
|
48
|
-
$mds-bg-interactive-secondary-hover: #
|
|
48
|
+
$mds-bg-interactive-secondary-hover: #ced4da !default;
|
|
49
|
+
$mds-bg-nav-pill-hover: #e9ecef !default;
|
|
50
|
+
$mds-bg-nav-pill-pressed: #dee2e6 !default;
|
|
51
|
+
$mds-bg-nav-pill-selected: #e9ecef !default;
|
|
49
52
|
$mds-bg-surface-default: #ffffff !default;
|
|
50
53
|
$mds-bg-surface-strong: #e9ecef !default;
|
|
51
54
|
$mds-bg-surface-subtle: #f8f9fa !default;
|
|
@@ -65,7 +68,7 @@ $mds-border-interactive-primary-default: #0f6cbf !default;
|
|
|
65
68
|
$mds-border-interactive-primary-disabled: #6fa7d9 !default;
|
|
66
69
|
$mds-border-interactive-primary-hover: #0f6cbf !default;
|
|
67
70
|
$mds-border-interactive-secondary-active: #495057 !default;
|
|
68
|
-
$mds-border-interactive-secondary-default: #
|
|
71
|
+
$mds-border-interactive-secondary-default: #8f959e !default;
|
|
69
72
|
$mds-border-interactive-secondary-disabled: #8f959e !default;
|
|
70
73
|
$mds-border-interactive-secondary-hover: #6a737b !default;
|
|
71
74
|
$mds-border-subtle: #e9ecef !default;
|
|
@@ -65,6 +65,9 @@
|
|
|
65
65
|
--mds-bg-interactive-secondary-default: #{$mds-bg-interactive-secondary-default};
|
|
66
66
|
--mds-bg-interactive-secondary-disabled: #{$mds-bg-interactive-secondary-disabled};
|
|
67
67
|
--mds-bg-interactive-secondary-hover: #{$mds-bg-interactive-secondary-hover};
|
|
68
|
+
--mds-bg-nav-pill-hover: #{$mds-bg-nav-pill-hover};
|
|
69
|
+
--mds-bg-nav-pill-pressed: #{$mds-bg-nav-pill-pressed};
|
|
70
|
+
--mds-bg-nav-pill-selected: #{$mds-bg-nav-pill-selected};
|
|
68
71
|
--mds-bg-surface-default: #{$mds-bg-surface-default};
|
|
69
72
|
--mds-bg-surface-strong: #{$mds-bg-surface-strong};
|
|
70
73
|
--mds-bg-surface-subtle: #{$mds-bg-surface-subtle};
|
|
@@ -128,7 +128,7 @@ $mds-scale-1600: 5rem !default;
|
|
|
128
128
|
$mds-scale-1700: 6rem !default;
|
|
129
129
|
$mds-scale-1800: 50rem !default;
|
|
130
130
|
$mds-typography-font-family-monospace: Menlo !default;
|
|
131
|
-
$mds-typography-font-family-sans-serif:
|
|
131
|
+
$mds-typography-font-family-sans-serif: Noto sans !default;
|
|
132
132
|
$mds-typography-font-size-0: 0rem !default;
|
|
133
133
|
$mds-typography-font-size-1: 1rem !default;
|
|
134
134
|
$mds-typography-font-size-2: 2rem !default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
// THIS FILE IS AUTO-GENERATED BY STYLE DICTIONARY — DO NOT EDIT DIRECTLY.
|
|
3
3
|
|
|
4
|
-
$mds-font-family-base:
|
|
4
|
+
$mds-font-family-base: Noto sans !default; // Default typeface for all UI text. Ensures global consistency.
|
|
5
5
|
$mds-font-family-code: Menlo !default; // Typeface for code, preformatted text, or monospace contexts.
|
|
6
6
|
$mds-font-size-displays-1: 5rem !default; // Display style, largest.
|
|
7
7
|
$mds-font-size-displays-2: 4.5rem !default; // Display style, extra-large.
|
package/package.json
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moodlehq/design-system",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "The Moodle Design System",
|
|
5
5
|
"files": [
|
|
6
6
|
"/dist",
|
|
7
|
-
"/tokens/css",
|
|
8
|
-
"/tokens/scss",
|
|
9
7
|
"/css.d.ts"
|
|
10
8
|
],
|
|
11
9
|
"exports": {
|
|
@@ -17,18 +15,27 @@
|
|
|
17
15
|
"types": "./css.d.ts",
|
|
18
16
|
"default": "./dist/index.css"
|
|
19
17
|
},
|
|
18
|
+
"./components/css": {
|
|
19
|
+
"default": "./dist/components/index.css"
|
|
20
|
+
},
|
|
21
|
+
"./components/scss/legacy": {
|
|
22
|
+
"default": "./dist/components/_index.legacy.scss"
|
|
23
|
+
},
|
|
20
24
|
"./components/*": {
|
|
21
25
|
"types": "./dist/components/*/index.d.ts",
|
|
22
26
|
"import": "./dist/components/*/index.js"
|
|
23
27
|
},
|
|
28
|
+
"./components/*/css": {
|
|
29
|
+
"default": "./dist/components/*/index.css"
|
|
30
|
+
},
|
|
24
31
|
"./tokens/css": {
|
|
25
|
-
"default": "./tokens/css/index.css"
|
|
32
|
+
"default": "./dist/tokens/css/index.css"
|
|
26
33
|
},
|
|
27
34
|
"./tokens/scss": {
|
|
28
|
-
"default": "./tokens/scss/_index.scss"
|
|
35
|
+
"default": "./dist/tokens/scss/_index.scss"
|
|
29
36
|
},
|
|
30
37
|
"./tokens/scss/legacy": {
|
|
31
|
-
"default": "./tokens/scss/_index.legacy.scss"
|
|
38
|
+
"default": "./dist/tokens/scss/_index.legacy.scss"
|
|
32
39
|
}
|
|
33
40
|
},
|
|
34
41
|
"type": "module",
|
|
@@ -56,6 +63,7 @@
|
|
|
56
63
|
"@storybook/addon-a11y": "^10.1.2",
|
|
57
64
|
"@storybook/addon-coverage": "^3.0.0",
|
|
58
65
|
"@storybook/addon-docs": "^10.1.2",
|
|
66
|
+
"@storybook/addon-mcp": "^0.5.0",
|
|
59
67
|
"@storybook/addon-themes": "^10.1.2",
|
|
60
68
|
"@storybook/addon-vitest": "^10.1.2",
|
|
61
69
|
"@storybook/react-vite": "^10.1.2",
|
|
@@ -107,7 +115,8 @@
|
|
|
107
115
|
"test-unit-coverage": "VITEST_STORYBOOK=false vitest run --coverage",
|
|
108
116
|
"test-storybook": "VITEST_STORYBOOK=true vitest run",
|
|
109
117
|
"storybook": "storybook dev -p 6006",
|
|
110
|
-
"build": "tsc && vite build",
|
|
118
|
+
"build": "npm run build-component-index && npm run build-tokens && tsc && vite build",
|
|
119
|
+
"build-component-index": "tsx scripts/generate-component-index.ts",
|
|
111
120
|
"build-storybook": "storybook build",
|
|
112
121
|
"build-docs": "tsx scripts/build-docs.ts",
|
|
113
122
|
"build-tokens": "tsx scripts/tokens.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Badge2.js","names":[],"sources":["../../../components/badge/Badge.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactElement } from 'react';\nimport { isValidElement } from 'react';\nimport './badge.css';\n\ntype BadgeVariant =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info';\n\ntype IconElement = ReactElement<'i' | 'svg'>;\n\n// Runtime guard — icon props must be <i> or <svg> elements\nconst isIconElement = (el: unknown, propName: string): el is IconElement => {\n const valid = isValidElement(el) && (el.type === 'i' || el.type === 'svg');\n if (!valid && el != null && import.meta.env.DEV) {\n console.error(`Badge: \\`${propName}\\` must be an <i> or <svg> element.`);\n }\n return valid;\n};\n\nconst allowedVariants: BadgeVariant[] = [\n 'primary',\n 'secondary',\n 'success',\n 'danger',\n 'warning',\n 'info',\n];\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n /** Visible badge text. Must be a caller-supplied translated string. */\n label: string;\n /** Colour/semantic variant. Defaults to `primary`. */\n variant?: BadgeVariant;\n /** When true, renders the low-contrast (subtle) style with a light background and border. */\n subtle?: boolean;\n /** When true, renders fully rounded pill shape instead of the default slight rounding. */\n pill?: boolean;\n /** Optional icon rendered before the label. Must be an `<i>` or `<svg>` element. Mutually exclusive with `endIcon`. */\n startIcon?: IconElement;\n /** Optional icon rendered after the label. Must be an `<i>` or `<svg>` element. Mutually exclusive with `startIcon`. */\n endIcon?: IconElement;\n}\n\nexport const Badge = ({\n label,\n variant,\n subtle = false,\n pill = false,\n startIcon,\n endIcon,\n className,\n ...props\n}: BadgeProps) => {\n const resolvedVariant =\n variant && allowedVariants.includes(variant as BadgeVariant)\n ? variant\n : 'primary';\n\n const resolvedStartIcon = isIconElement(startIcon, 'startIcon')\n ? startIcon\n : null;\n let resolvedEndIcon = isIconElement(endIcon, 'endIcon') ? endIcon : null;\n\n if (import.meta.env.DEV) {\n if (variant && !allowedVariants.includes(variant as BadgeVariant)) {\n console.warn(\n `[MDS Badge] Invalid variant \"${variant}\". Falling back to \"primary\". Allowed: ${allowedVariants.join(', ')}`,\n );\n }\n if (resolvedStartIcon && resolvedEndIcon) {\n console.warn(\n '[MDS Badge] `startIcon` and `endIcon` are mutually exclusive. Rendering `startIcon` only.',\n );\n }\n }\n\n // Only one icon can be rendered at a time; startIcon takes precedence when both are provided.\n if (resolvedStartIcon && resolvedEndIcon) {\n resolvedEndIcon = null;\n }\n\n const classes = ['mds-badge', 'badge', `mds-badge--${resolvedVariant}`];\n if (resolvedStartIcon || resolvedEndIcon) classes.push('mds-badge--has-icon');\n if (subtle) classes.push('mds-badge--subtle');\n if (pill) classes.push('mds-badge--pill');\n if (className) classes.push(className);\n\n return (\n <span className={classes.join(' ')} {...props}>\n {resolvedStartIcon}\n {label}\n {resolvedEndIcon}\n </span>\n );\n};\n"],"mappings":";;;;AAeA,IAAM,iBAAiB,IAAa,aAAwC;CAK1E,OAJc,eAAe,EAAE,MAAM,GAAG,SAAS,OAAO,GAAG,SAAS;AAKtE;AAEA,IAAM,kBAAkC;CACtC;CACA;CACA;CACA;CACA;CACA;AACF;AAiBA,IAAa,SAAS,EACpB,OACA,SACA,SAAS,OACT,OAAO,OACP,WACA,SACA,WACA,GAAG,YACa;CAChB,MAAM,kBACJ,WAAW,gBAAgB,SAAS,OAAuB,IACvD,UACA;CAEN,MAAM,oBAAoB,cAAc,WAAW,WAAW,IAC1D,YACA;CACJ,IAAI,kBAAkB,cAAc,SAAS,SAAS,IAAI,UAAU;CAgBpE,IAAI,qBAAqB,iBACvB,kBAAkB;CAGpB,MAAM,UAAU;EAAC;EAAa;EAAS,cAAc;CAAiB;CACtE,IAAI,qBAAqB,iBAAiB,QAAQ,KAAK,qBAAqB;CAC5E,IAAI,QAAQ,QAAQ,KAAK,mBAAmB;CAC5C,IAAI,MAAM,QAAQ,KAAK,iBAAiB;CACxC,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OACE,qBAAC,QAAD;EAAM,WAAW,QAAQ,KAAK,GAAG;EAAG,GAAI;YAAxC;GACG;GACA;GACA;EACG;;AAEV"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|