@i-rent/component-library 0.0.1
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 +180 -0
- package/dist/component-library.js +16457 -0
- package/dist/component-library.umd.cjs +20 -0
- package/nuxt.ts +30 -0
- package/package.json +95 -0
- package/src/scss/_colors.scss +75 -0
- package/src/scss/_themes.scss +69 -0
- package/src/scss/_typography.scss +38 -0
- package/src/scss/_utilities.scss +144 -0
- package/src/scss/_variables.scss +84 -0
- package/src/scss/main.scss +5 -0
package/nuxt.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { defineNuxtModule, addComponent } from '@nuxt/kit'
|
|
2
|
+
import { fileURLToPath } from 'node:url'
|
|
3
|
+
import { dirname, resolve } from 'node:path'
|
|
4
|
+
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
6
|
+
const __dirname = dirname(__filename)
|
|
7
|
+
|
|
8
|
+
export default defineNuxtModule({
|
|
9
|
+
meta: {
|
|
10
|
+
name: 'component-library',
|
|
11
|
+
configKey: 'componentLibrary'
|
|
12
|
+
},
|
|
13
|
+
setup() {
|
|
14
|
+
const bundlePath = resolve(__dirname, './dist/component-library.js')
|
|
15
|
+
const components: Array<{ name: string; export: string }> = [
|
|
16
|
+
{ name: 'IButton', export: 'IButton' },
|
|
17
|
+
{ name: 'ICalendar', export: 'ICalendar' },
|
|
18
|
+
{ name: 'IOccupancyCalendar', export: 'IOccupancyCalendar' },
|
|
19
|
+
{ name: 'IDatePicker', export: 'IDatePicker' },
|
|
20
|
+
{ name: 'IIcon', export: 'IIcon' },
|
|
21
|
+
{ name: 'ITooltip', export: 'ITooltip' },
|
|
22
|
+
{ name: 'IInput', export: 'IInput' },
|
|
23
|
+
{ name: 'IMap', export: 'IMap' },
|
|
24
|
+
{ name: 'ICard', export: 'ICard' },
|
|
25
|
+
]
|
|
26
|
+
components.forEach(({ name, export: exportName }) => {
|
|
27
|
+
addComponent({ name, filePath: bundlePath, export: exportName })
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
})
|
package/package.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@i-rent/component-library",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=18",
|
|
8
|
+
"pnpm": ">=9"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"nuxt.ts",
|
|
13
|
+
"src/scss"
|
|
14
|
+
],
|
|
15
|
+
"main": "./dist/component-library.umd.cjs",
|
|
16
|
+
"module": "./dist/component-library.js",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"import": "./dist/component-library.js",
|
|
20
|
+
"require": "./dist/component-library.umd.cjs"
|
|
21
|
+
},
|
|
22
|
+
"./nuxt": "./nuxt.ts",
|
|
23
|
+
"./scss/variables": {
|
|
24
|
+
"sass": "./src/scss/_variables.scss"
|
|
25
|
+
},
|
|
26
|
+
"./scss/main": {
|
|
27
|
+
"sass": "./src/scss/main.scss"
|
|
28
|
+
},
|
|
29
|
+
"./scss/*": {
|
|
30
|
+
"sass": "./src/scss/*"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"supercluster": "^8.0.1"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@chromatic-com/storybook": "^5.2.1",
|
|
38
|
+
"@googlemaps/js-api-loader": "^1.16.8",
|
|
39
|
+
"@nuxt/kit": "^3.0.0 || ^4.0.0",
|
|
40
|
+
"@playwright/test": "^1.59.1",
|
|
41
|
+
"@storybook/addon-docs": "10.4.6",
|
|
42
|
+
"@storybook/addon-onboarding": "10.4.6",
|
|
43
|
+
"@storybook/addon-themes": "10.4.6",
|
|
44
|
+
"@storybook/vue3-vite": "10.4.6",
|
|
45
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
46
|
+
"@testing-library/vue": "^8.1.0",
|
|
47
|
+
"@tsconfig/node22": "^22.0.0",
|
|
48
|
+
"@types/google.maps": "^3.58.1",
|
|
49
|
+
"@types/node": "^22.9.3",
|
|
50
|
+
"@types/supercluster": "^7.1.3",
|
|
51
|
+
"@vitejs/plugin-vue": "^5.2.1",
|
|
52
|
+
"@vitest/coverage-v8": "^4.1.5",
|
|
53
|
+
"@vue/eslint-config-prettier": "^10.1.0",
|
|
54
|
+
"@vue/eslint-config-typescript": "^14.1.3",
|
|
55
|
+
"@vue/test-utils": "^2.4.8",
|
|
56
|
+
"@vue/tsconfig": "^0.7.0",
|
|
57
|
+
"autoprefixer": "^10.4.20",
|
|
58
|
+
"baseline-browser-mapping": "^2.9.12",
|
|
59
|
+
"cross-env": "^10.1.0",
|
|
60
|
+
"date-fns": "^4.1.0",
|
|
61
|
+
"eslint": "^9.14.0",
|
|
62
|
+
"eslint-plugin-storybook": "10.4.6",
|
|
63
|
+
"eslint-plugin-vue": "^9.30.0",
|
|
64
|
+
"happy-dom": "^20.9.0",
|
|
65
|
+
"postcss": "^8.4.49",
|
|
66
|
+
"prettier": "^3.3.3",
|
|
67
|
+
"sass": "^1.83.0",
|
|
68
|
+
"storybook": "10.4.6",
|
|
69
|
+
"typescript": "~5.6.3",
|
|
70
|
+
"vite": "^6.0.1",
|
|
71
|
+
"vite-plugin-vue-devtools": "^7.6.5",
|
|
72
|
+
"vitest": "^4.1.5",
|
|
73
|
+
"vue": "^3.5.13",
|
|
74
|
+
"vue-tsc": "^2.1.10"
|
|
75
|
+
},
|
|
76
|
+
"scripts": {
|
|
77
|
+
"prepare-corepack": "npm install -g corepack",
|
|
78
|
+
"install-pnpm": "corepack enable && corepack install && pnpm install",
|
|
79
|
+
"setup": "npm run prepare-corepack && npm run install-pnpm",
|
|
80
|
+
"dev": "vite",
|
|
81
|
+
"build": "vue-tsc --noEmit && vite build",
|
|
82
|
+
"build:watch": "vite build --watch",
|
|
83
|
+
"preview": "vite preview",
|
|
84
|
+
"type-check": "vue-tsc --build",
|
|
85
|
+
"lint": "eslint . --fix",
|
|
86
|
+
"format": "prettier --write src/",
|
|
87
|
+
"test": "vitest",
|
|
88
|
+
"test:run": "vitest run",
|
|
89
|
+
"test:e2e": "playwright test",
|
|
90
|
+
"test:e2e:ui": "playwright test --ui",
|
|
91
|
+
"coverage": "vitest run --coverage",
|
|
92
|
+
"storybook": "cross-env STORYBOOK=true storybook dev -p 6006",
|
|
93
|
+
"build-storybook": "cross-env STORYBOOK=true storybook build"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
@use './variables' as *;
|
|
2
|
+
|
|
3
|
+
:root,
|
|
4
|
+
:host {
|
|
5
|
+
/*------------------------------------*/
|
|
6
|
+
// # Primary — la fuente de verdad vive en _themes.scss (deriva del tema
|
|
7
|
+
// activo vía --i-theme-h / --i-theme-s). Acá solo se derivan los tints/shades.
|
|
8
|
+
// Fallback #0786be por si _themes.scss no estuviera cargado.
|
|
9
|
+
/*------------------------------------*/
|
|
10
|
+
--i-theme-primary: var(--i-theme-brand-40, #0786be);
|
|
11
|
+
--i-theme-primary-lighten-5: oklch(from var(--i-theme-primary) clamp(0, calc(l + 0.30), 1) c h);
|
|
12
|
+
--i-theme-primary-lighten-4: oklch(from var(--i-theme-primary) clamp(0, calc(l + 0.24), 1) c h);
|
|
13
|
+
--i-theme-primary-lighten-3: oklch(from var(--i-theme-primary) clamp(0, calc(l + 0.18), 1) c h);
|
|
14
|
+
--i-theme-primary-lighten-2: oklch(from var(--i-theme-primary) clamp(0, calc(l + 0.12), 1) c h);
|
|
15
|
+
--i-theme-primary-lighten-1: oklch(from var(--i-theme-primary) clamp(0, calc(l + 0.06), 1) c h);
|
|
16
|
+
--i-theme-primary-darken-1: oklch(from var(--i-theme-primary) clamp(0, calc(l - 0.06), 1) c h);
|
|
17
|
+
--i-theme-primary-darken-2: oklch(from var(--i-theme-primary) clamp(0, calc(l - 0.12), 1) c h);
|
|
18
|
+
--i-theme-primary-darken-3: oklch(from var(--i-theme-primary) clamp(0, calc(l - 0.18), 1) c h);
|
|
19
|
+
--i-theme-primary-darken-4: oklch(from var(--i-theme-primary) clamp(0, calc(l - 0.24), 1) c h);
|
|
20
|
+
// compat aliases
|
|
21
|
+
--i-theme-primary-light-2: var(--i-theme-primary-lighten-2);
|
|
22
|
+
--i-theme-primary-light-1: var(--i-theme-primary-lighten-1);
|
|
23
|
+
--i-theme-primary-dark-1: var(--i-theme-primary-darken-1);
|
|
24
|
+
--i-theme-primary-dark-2: var(--i-theme-primary-darken-2);
|
|
25
|
+
/*------------------------------------*/
|
|
26
|
+
// # Black
|
|
27
|
+
/*------------------------------------*/
|
|
28
|
+
--i-theme-black-light-2: #636069;
|
|
29
|
+
--i-theme-black-light-1: #514e56;
|
|
30
|
+
--i-theme-black: #3d3b40;
|
|
31
|
+
--i-theme-black-dark-1: #454349;
|
|
32
|
+
--i-theme-black-dark-2: #28272a;
|
|
33
|
+
/*------------------------------------*/
|
|
34
|
+
// # White
|
|
35
|
+
/*------------------------------------*/
|
|
36
|
+
--i-theme-white-dark-2: #bbb9c0;
|
|
37
|
+
--i-theme-white-dark-1: #dbdadd;
|
|
38
|
+
--i-theme-white: #efeef0;
|
|
39
|
+
--i-theme-white-light-1: #f7f7f8;
|
|
40
|
+
--i-theme-white-light-2: #fff;
|
|
41
|
+
/*------------------------------------*/
|
|
42
|
+
// # Status and Feedback
|
|
43
|
+
/*------------------------------------*/
|
|
44
|
+
--i-theme-success: #23c197;
|
|
45
|
+
--i-theme-warning: #ffc964;
|
|
46
|
+
--i-theme-error: #ff3838;
|
|
47
|
+
--i-theme-disabled: #a4abb6;
|
|
48
|
+
/*------------------------------------*/
|
|
49
|
+
// # Reservations types
|
|
50
|
+
/*------------------------------------*/
|
|
51
|
+
--i-theme-green: #8eda91;
|
|
52
|
+
--i-theme-grey: #7b7b7b;
|
|
53
|
+
--i-theme-orange: #ff8f20;
|
|
54
|
+
--i-theme-light-blue: #33c3fd;
|
|
55
|
+
--i-theme-teal: #04c8b0;
|
|
56
|
+
/*------------------------------------*/
|
|
57
|
+
// # Font Color
|
|
58
|
+
/*------------------------------------*/
|
|
59
|
+
--i-font-color: #28272a;
|
|
60
|
+
--i-font-color-shade: #3e3d3f;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
:root[data-theme='dark'],
|
|
64
|
+
:host([data-theme='dark']) {
|
|
65
|
+
--i-font-color: #f7f7f8;
|
|
66
|
+
--i-font-color-shade: #dededf;
|
|
67
|
+
/*------------------------------------*/
|
|
68
|
+
// # Reservations types
|
|
69
|
+
/*------------------------------------*/
|
|
70
|
+
--i-theme-green: #5eca62;
|
|
71
|
+
--i-theme-grey: #7b7b7b;
|
|
72
|
+
--i-theme-orange: #ff8f20;
|
|
73
|
+
--i-theme-light-blue: #33c3fd;
|
|
74
|
+
--i-theme-teal: #04c8b0;
|
|
75
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Themes — sistema de marca por hue + saturation (mecánica del proyecto
|
|
3
|
+
// webs_individuals_script, naming propio --i-theme-*).
|
|
4
|
+
//
|
|
5
|
+
// Cada tema setea SOLO dos tokens privados: --i-theme-h (hue) y --i-theme-s
|
|
6
|
+
// (saturation). Toda la escala --i-theme-brand-* se re-deriva sola por cascada
|
|
7
|
+
// con hsl(). Agregar un tema = 2 números.
|
|
8
|
+
//
|
|
9
|
+
// Selectores duales:
|
|
10
|
+
// :host([theme='X']) → modo Web Component (shadow DOM)
|
|
11
|
+
// [theme='X'] → modo Vue normal (el atributo hereda a los hijos)
|
|
12
|
+
//
|
|
13
|
+
// Stops de lightness idénticos al origen (brand-40 = primary, brand-30 = hover).
|
|
14
|
+
// ============================================================================
|
|
15
|
+
|
|
16
|
+
// Hue/saturation base (default sky). Sólo acá: es el punto de partida heredable.
|
|
17
|
+
:root,
|
|
18
|
+
:host {
|
|
19
|
+
--i-theme-h: 191; // sky default
|
|
20
|
+
--i-theme-s: 100%;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Escala derivada — declarada en :root, :host Y [theme].
|
|
24
|
+
// CLAVE: una custom property que usa var() se resuelve en el elemento donde se
|
|
25
|
+
// DECLARA, no donde se usa. Por eso la escala debe re-declararse en cada elemento
|
|
26
|
+
// que pueda portar un `theme`, para que se re-derive con el hue/saturation LOCAL.
|
|
27
|
+
// (En el origen esto es gratis porque el theme vive en el mismo :host que la escala.)
|
|
28
|
+
:root,
|
|
29
|
+
:host,
|
|
30
|
+
[theme] {
|
|
31
|
+
// Escala de marca derivada — 95 (más claro) → 05 (más oscuro)
|
|
32
|
+
--i-theme-brand-95: hsl(var(--i-theme-h), var(--i-theme-s), 94%);
|
|
33
|
+
--i-theme-brand-90: hsl(var(--i-theme-h), var(--i-theme-s), 89%);
|
|
34
|
+
--i-theme-brand-80: hsl(var(--i-theme-h), var(--i-theme-s), 78%);
|
|
35
|
+
--i-theme-brand-70: hsl(var(--i-theme-h), var(--i-theme-s), 66%);
|
|
36
|
+
--i-theme-brand-60: hsl(var(--i-theme-h), var(--i-theme-s), 55%);
|
|
37
|
+
--i-theme-brand-50: hsl(var(--i-theme-h), var(--i-theme-s), 44%);
|
|
38
|
+
--i-theme-brand-40: hsl(var(--i-theme-h), var(--i-theme-s), 35%);
|
|
39
|
+
--i-theme-brand-30: hsl(var(--i-theme-h), var(--i-theme-s), 26%);
|
|
40
|
+
--i-theme-brand-20: hsl(var(--i-theme-h), var(--i-theme-s), 18%);
|
|
41
|
+
--i-theme-brand-10: hsl(var(--i-theme-h), var(--i-theme-s), 9%);
|
|
42
|
+
--i-theme-brand-05: hsl(var(--i-theme-h), var(--i-theme-s), 0%);
|
|
43
|
+
|
|
44
|
+
// Aliases de marca — fuente de verdad del primary (deriva del tema activo)
|
|
45
|
+
--i-theme-primary: var(--i-theme-brand-40);
|
|
46
|
+
--i-theme-primary-hover: var(--i-theme-brand-30);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ── 19 temas nombrados (h/s portados de webs_individuals_script) ────────────
|
|
50
|
+
:host([theme='aqua']), [theme='aqua'] { --i-theme-h: 177; --i-theme-s: 73%; }
|
|
51
|
+
:host([theme='beige']), [theme='beige'] { --i-theme-h: 38; --i-theme-s: 32%; }
|
|
52
|
+
:host([theme='blue']), [theme='blue'] { --i-theme-h: 219; --i-theme-s: 100%; }
|
|
53
|
+
:host([theme='blueAf']), [theme='blueAf'] { --i-theme-h: 196; --i-theme-s: 80%; }
|
|
54
|
+
:host([theme='classic']), [theme='classic'] { --i-theme-h: 332; --i-theme-s: 79%; }
|
|
55
|
+
:host([theme='crimson']), [theme='crimson'] { --i-theme-h: 349; --i-theme-s: 84%; }
|
|
56
|
+
:host([theme='gold']), [theme='gold'] { --i-theme-h: 50; --i-theme-s: 34%; }
|
|
57
|
+
:host([theme='green']), [theme='green'] { --i-theme-h: 138; --i-theme-s: 40%; }
|
|
58
|
+
:host([theme='green2']), [theme='green2'] { --i-theme-h: 142; --i-theme-s: 75%; }
|
|
59
|
+
:host([theme='grey']), [theme='grey'] { --i-theme-h: 0; --i-theme-s: 0%; }
|
|
60
|
+
:host([theme='navy']), [theme='navy'] { --i-theme-h: 218; --i-theme-s: 26%; }
|
|
61
|
+
:host([theme='oldPink']), [theme='oldPink'] { --i-theme-h: 345; --i-theme-s: 50%; }
|
|
62
|
+
:host([theme='orange']), [theme='orange'] { --i-theme-h: 33; --i-theme-s: 93%; }
|
|
63
|
+
:host([theme='peach']), [theme='peach'] { --i-theme-h: 29; --i-theme-s: 94%; }
|
|
64
|
+
:host([theme='pink']), [theme='pink'] { --i-theme-h: 323; --i-theme-s: 97%; }
|
|
65
|
+
:host([theme='purple']), [theme='purple'] { --i-theme-h: 250; --i-theme-s: 77%; }
|
|
66
|
+
:host([theme='red']), [theme='red'] { --i-theme-h: 357; --i-theme-s: 88%; }
|
|
67
|
+
:host([theme='sand']), [theme='sand'] { --i-theme-h: 42; --i-theme-s: 25%; }
|
|
68
|
+
:host([theme='sky']), [theme='sky'] { --i-theme-h: 191; --i-theme-s: 100%; }
|
|
69
|
+
:host([theme='violet']), [theme='violet'] { --i-theme-h: 300; --i-theme-s: 100%; }
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
@use './variables' as *;
|
|
2
|
+
|
|
3
|
+
/*------------------------------------*/
|
|
4
|
+
// # Font Import (opcional, solo si se necesita)
|
|
5
|
+
// El usuario puede importar el font manualmente o usar esta variable
|
|
6
|
+
/*------------------------------------*/
|
|
7
|
+
@if $i-font-import-url {
|
|
8
|
+
@import url($i-font-import-url);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/*------------------------------------*/
|
|
12
|
+
// # Component Font Styles
|
|
13
|
+
// Los fonts se aplican SOLO a los componentes de la librería
|
|
14
|
+
// NO afectan el proyecto principal
|
|
15
|
+
/*------------------------------------*/
|
|
16
|
+
.i-btn,
|
|
17
|
+
.i-input,
|
|
18
|
+
.i-tooltip,
|
|
19
|
+
.i-icon,
|
|
20
|
+
.i-calendar,
|
|
21
|
+
.i-calendar-occupancy,
|
|
22
|
+
.i-date-picker {
|
|
23
|
+
font-family: $i-font-family;
|
|
24
|
+
font-size: $i-font-size;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/*------------------------------------*/
|
|
28
|
+
// # Component Text Colors
|
|
29
|
+
// Los colores de texto se aplican SOLO a los componentes
|
|
30
|
+
/*------------------------------------*/
|
|
31
|
+
.i-btn,
|
|
32
|
+
.i-tooltip__label {
|
|
33
|
+
color: var(--i-font-color);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.i-input {
|
|
37
|
+
color: var(--i-font-color-shade);
|
|
38
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
@use './variables' as *;
|
|
2
|
+
|
|
3
|
+
/*------------------------------------*/
|
|
4
|
+
// # 1. Ripple
|
|
5
|
+
// # 2. Border radius
|
|
6
|
+
/*------------------------------------*/
|
|
7
|
+
|
|
8
|
+
/*------------------------------------*/
|
|
9
|
+
// # 1. Ripple
|
|
10
|
+
/*------------------------------------*/
|
|
11
|
+
@if $i-ripple {
|
|
12
|
+
.i-ripple {
|
|
13
|
+
position: relative;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.i-ripple:after {
|
|
18
|
+
content: '';
|
|
19
|
+
position: absolute;
|
|
20
|
+
top: 50%;
|
|
21
|
+
left: 50%;
|
|
22
|
+
width: 5px;
|
|
23
|
+
height: 5px;
|
|
24
|
+
background-color: rgb(30, 30, 30, 0.08);
|
|
25
|
+
opacity: 0;
|
|
26
|
+
border-radius: 100%;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@keyframes i-ripple {
|
|
30
|
+
0% {
|
|
31
|
+
transform: scale(0, 0);
|
|
32
|
+
opacity: 1;
|
|
33
|
+
}
|
|
34
|
+
20% {
|
|
35
|
+
transform: scale(25, 25);
|
|
36
|
+
opacity: 1;
|
|
37
|
+
}
|
|
38
|
+
100% {
|
|
39
|
+
opacity: 0;
|
|
40
|
+
transform: scale(40, 40);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.i-ripple:focus:not(:active)::after {
|
|
45
|
+
animation: i-ripple 1s ease-out;
|
|
46
|
+
}
|
|
47
|
+
.i-ripple:active {
|
|
48
|
+
box-shadow: none;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/*------------------------------------*/
|
|
53
|
+
// # 2. Borders radius
|
|
54
|
+
/*------------------------------------*/
|
|
55
|
+
@if $i-border-pill {
|
|
56
|
+
.i-border-pill {
|
|
57
|
+
border-radius: 999px;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@if $i-border-smooth {
|
|
62
|
+
.i-border-smooth {
|
|
63
|
+
border-radius: 0.5rem;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@if $i-border-elegant {
|
|
68
|
+
.i-border-elegant {
|
|
69
|
+
border-radius: 0.12rem;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/*------------------------------------*/
|
|
74
|
+
// # 3. Scrollbar
|
|
75
|
+
/*------------------------------------*/
|
|
76
|
+
|
|
77
|
+
%scrollbar-base {
|
|
78
|
+
--scrollbar-size: 6px;
|
|
79
|
+
--scrollbar-padding: 1rem;
|
|
80
|
+
--scrollbar-radius: 999px;
|
|
81
|
+
--scrollbar-thumb-color: oklch(from var(--i-theme-primary, #0786be) l c h / 0.45);
|
|
82
|
+
--scrollbar-thumb-color-hover: oklch(from var(--i-theme-primary, #0786be) l c h / 0.70);
|
|
83
|
+
|
|
84
|
+
scrollbar-width: thin !important;
|
|
85
|
+
scrollbar-color: var(--scrollbar-thumb-color) transparent !important;
|
|
86
|
+
|
|
87
|
+
&::-webkit-scrollbar {
|
|
88
|
+
width: var(--scrollbar-size) !important;
|
|
89
|
+
height: var(--scrollbar-size) !important;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
&::-webkit-scrollbar-track {
|
|
93
|
+
background-color: transparent !important;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
&::-webkit-scrollbar-thumb {
|
|
97
|
+
background-color: var(--scrollbar-thumb-color) !important;
|
|
98
|
+
border-radius: var(--scrollbar-radius) !important;
|
|
99
|
+
border: 2px solid transparent !important;
|
|
100
|
+
background-clip: content-box !important;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&::-webkit-scrollbar-thumb:hover {
|
|
104
|
+
background-color: var(--scrollbar-thumb-color-hover) !important;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@if $i-scrollbar or $i-scrollbar-y or $i-scrollbar-x or $i-scrollbar-both {
|
|
109
|
+
@if $i-scrollbar {
|
|
110
|
+
.i-scrollbar {
|
|
111
|
+
@extend %scrollbar-base;
|
|
112
|
+
padding-inline-end: var(--scrollbar-padding) !important;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@if $i-scrollbar-y {
|
|
117
|
+
.i-scrollbar-y {
|
|
118
|
+
@extend %scrollbar-base;
|
|
119
|
+
overflow-y: auto !important;
|
|
120
|
+
overflow-x: hidden !important;
|
|
121
|
+
padding-inline-end: var(--scrollbar-padding) !important;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@if $i-scrollbar-x {
|
|
126
|
+
.i-scrollbar-x {
|
|
127
|
+
@extend %scrollbar-base;
|
|
128
|
+
overflow-x: auto !important;
|
|
129
|
+
overflow-y: hidden !important;
|
|
130
|
+
padding-inline-end: var(--scrollbar-padding) !important;
|
|
131
|
+
padding-block-end: var(--scrollbar-padding) !important;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@if $i-scrollbar-both {
|
|
136
|
+
.i-scrollbar-both {
|
|
137
|
+
@extend %scrollbar-base;
|
|
138
|
+
overflow-y: auto !important;
|
|
139
|
+
overflow-x: auto !important;
|
|
140
|
+
padding-inline-end: var(--scrollbar-padding) !important;
|
|
141
|
+
padding-block-end: var(--scrollbar-padding) !important;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/*------------------------------------*/
|
|
2
|
+
// # Font Variables
|
|
3
|
+
// Variables SASS para fonts (NO se aplican globalmente)
|
|
4
|
+
/*------------------------------------*/
|
|
5
|
+
$i-font-family: 'Roboto', sans-serif !default;
|
|
6
|
+
$i-font-size: 16px !default;
|
|
7
|
+
$i-font-import-url: 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap' !default;
|
|
8
|
+
|
|
9
|
+
/*------------------------------------*/
|
|
10
|
+
// # Utility Modifiers Variables
|
|
11
|
+
// Controla qué modificadores están disponibles
|
|
12
|
+
// 1 = habilitado, 0 o null = deshabilitado
|
|
13
|
+
/*------------------------------------*/
|
|
14
|
+
|
|
15
|
+
// Border radius modifiers
|
|
16
|
+
$i-border-pill: 1 !default;
|
|
17
|
+
$i-border-smooth: 1 !default;
|
|
18
|
+
$i-border-elegant: 1 !default;
|
|
19
|
+
|
|
20
|
+
// Ripple modifier
|
|
21
|
+
$i-ripple: 1 !default;
|
|
22
|
+
|
|
23
|
+
// Scrollbar modifiers
|
|
24
|
+
$i-scrollbar: 1 !default;
|
|
25
|
+
$i-scrollbar-y: 1 !default;
|
|
26
|
+
$i-scrollbar-x: 1 !default;
|
|
27
|
+
$i-scrollbar-both: 1 !default;
|
|
28
|
+
|
|
29
|
+
// Colors
|
|
30
|
+
$i-theme-black-light-2: #636069 !default;
|
|
31
|
+
$i-theme-black-light-1: #514e56 !default;
|
|
32
|
+
$i-theme-black: #3d3b40 !default;
|
|
33
|
+
$i-theme-black-dark-1: #454349 !default;
|
|
34
|
+
$i-theme-black-dark-2: #28272a !default;
|
|
35
|
+
/*------------------------------------*/
|
|
36
|
+
// # White
|
|
37
|
+
/*------------------------------------*/
|
|
38
|
+
$i-theme-white-dark-2: #bbb9c0 !default;
|
|
39
|
+
$i-theme-white-dark-1: #dbdadd !default;
|
|
40
|
+
$i-theme-white: #efeef0 !default;
|
|
41
|
+
$i-theme-white-light-1: #f7f7f8 !default;
|
|
42
|
+
$i-theme-white-light-2: #fff !default;
|
|
43
|
+
/*------------------------------------*/
|
|
44
|
+
// # Primary
|
|
45
|
+
/*------------------------------------*/
|
|
46
|
+
$i-theme-primary-light-2: #3dc1f3 !default;
|
|
47
|
+
$i-theme-primary-light-1: #14aae3 !default;
|
|
48
|
+
$i-theme-primary: #0786be !default;
|
|
49
|
+
$i-theme-primary-dark-1: #076d9d !default;
|
|
50
|
+
$i-theme-primary-dark-2: #0a5c82 !default;
|
|
51
|
+
$i-theme-primary-rgb: 7 134 190 !default;
|
|
52
|
+
/*------------------------------------*/
|
|
53
|
+
// # Status and Feedback
|
|
54
|
+
/*------------------------------------*/
|
|
55
|
+
$i-theme-success: #23c197 !default;
|
|
56
|
+
$i-theme-warning: #ffc964 !default;
|
|
57
|
+
$i-theme-error: #ff3838 !default;
|
|
58
|
+
$i-theme-disabled: #a4abb6 !default;
|
|
59
|
+
/*------------------------------------*/
|
|
60
|
+
// # Reservations types
|
|
61
|
+
/*------------------------------------*/
|
|
62
|
+
$i-theme-green: #8eda91 !default;
|
|
63
|
+
$i-theme-grey: #7b7b7b !default;
|
|
64
|
+
$i-theme-orange: #ff8f20 !default;
|
|
65
|
+
$i-theme-light-blue: #33c3fd !default;
|
|
66
|
+
$i-theme-teal: #04c8b0 !default;
|
|
67
|
+
/*------------------------------------*/
|
|
68
|
+
// # Font Color
|
|
69
|
+
/*------------------------------------*/
|
|
70
|
+
$i-font-color: #28272a !default;
|
|
71
|
+
$i-font-color-shade: #3e3d3f !default;
|
|
72
|
+
|
|
73
|
+
/*------------------------------------*/
|
|
74
|
+
// # Component Modifiers (forwarded)
|
|
75
|
+
// Modificadores de componentes expuestos para override
|
|
76
|
+
/*------------------------------------*/
|
|
77
|
+
@forward '../stories/i-button/_modifiers';
|
|
78
|
+
@forward '../stories/i-calendar/_modifiers';
|
|
79
|
+
@forward '../stories/i-occupancy-calendar/_modifiers';
|
|
80
|
+
@forward '../stories/i-input/_modifiers';
|
|
81
|
+
@forward '../stories/i-icon/_modifiers';
|
|
82
|
+
@forward '../stories/i-tooltip/_modifiers';
|
|
83
|
+
@forward '../stories/i-date-picker/_modifiers';
|
|
84
|
+
@forward '../stories/i-map/_modifiers';
|