@vasakgroup/vue-libvasak 0.3.5 → 0.4.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.
@@ -0,0 +1,30 @@
1
+ type __VLS_Props = {
2
+ modelValue?: string;
3
+ placeholder?: string;
4
+ /** Lo que oye un lector de pantalla en la lupa. */
5
+ label?: string;
6
+ /**
7
+ * Plegado aunque la barra sea horizontal.
8
+ *
9
+ * Vertical se pliega siempre: ahí no es una preferencia, es que no entra.
10
+ */
11
+ collapsed?: boolean;
12
+ };
13
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ search: (valor: string) => any;
15
+ close: () => any;
16
+ "update:modelValue": (valor: string) => any;
17
+ open: () => any;
18
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ onSearch?: ((valor: string) => any) | undefined;
20
+ onClose?: (() => any) | undefined;
21
+ "onUpdate:modelValue"?: ((valor: string) => any) | undefined;
22
+ onOpen?: (() => any) | undefined;
23
+ }>, {
24
+ label: string;
25
+ collapsed: boolean;
26
+ modelValue: string;
27
+ placeholder: string;
28
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
29
+ declare const _default: typeof __VLS_export;
30
+ export default _default;
@@ -4,6 +4,11 @@ import SideGroup from "./sidebar/SideGroup.vue";
4
4
  import SelectField from "./forms/SelectField.vue";
5
5
  import ThemeIcon from "./icons/ThemeIcon.vue";
6
6
  import WindowFrame from "./window/WindowFrame.vue";
7
+ import AppBar from "./window/AppBar.vue";
8
+ import WindowControls from "./window/WindowControls.vue";
9
+ import TabBar from "./tabs/TabBar.vue";
10
+ import TabItem from "./tabs/TabItem.vue";
11
+ import BarSearch from "./bar/BarSearch.vue";
7
12
  import ActionButton from "./controls/ActionButton.vue";
8
13
  import ConfigSection from "./layout/ConfigSection.vue";
9
14
  import DeviceCard from "./cards/DeviceCard.vue";
@@ -18,5 +23,9 @@ declare const _default: {
18
23
  install(app: App): void;
19
24
  };
20
25
  export default _default;
21
- export { SideBar, SideButton, SideGroup, SelectField, ThemeIcon, WindowFrame, ActionButton, ConfigSection, DeviceCard, FormGroup, ListCard, SliderControl, SwitchToggle, ToggleControl, TrayIconButton, };
26
+ export { SideBar, SideButton, SideGroup, SelectField, ThemeIcon, WindowFrame, AppBar, WindowControls, TabBar, TabItem, BarSearch, ActionButton, ConfigSection, DeviceCard, FormGroup, ListCard, SliderControl, SwitchToggle, ToggleControl, TrayIconButton, };
22
27
  export type { SidebarCategory, SidebarItem } from "./sidebar/tipos";
28
+ export type { AccionDePestana, ElementoDePestana } from "./tabs/tipos";
29
+ export type { ContextoDeLaBarra, OrientacionDeLaBarra, PosicionDeLaBarra, } from "./window/tipos";
30
+ export { CLAVE_DE_LA_BARRA, esPosicion, orientacionDe, POSICIONES, usarLaBarra } from "./window/tipos";
31
+ export { posicionDe, usarLaPosicionDeLaBarra } from "./window/preferencia";
@@ -0,0 +1,44 @@
1
+ import type { ElementoDePestana } from './tipos';
2
+ type __VLS_Props = {
3
+ tabs: ElementoDePestana[];
4
+ /** El identificador de la activa. */
5
+ modelValue?: string;
6
+ /** Sin esto no se dibuja el botón de pestaña nueva. */
7
+ newLabel?: string;
8
+ closeLabel?: string;
9
+ /** Lo que se oye en una pestaña con cambios sin guardar. */
10
+ dirtyLabel?: string;
11
+ /** Para una barra que no deja reordenar. */
12
+ fixedOrder?: boolean;
13
+ };
14
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
+ menu: (carga: {
16
+ id: string;
17
+ x: number;
18
+ y: number;
19
+ }) => any;
20
+ select: (id: string) => any;
21
+ close: (id: string) => any;
22
+ "update:modelValue": (id: string) => any;
23
+ new: () => any;
24
+ reorder: (tabs: ElementoDePestana[]) => any;
25
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
26
+ onMenu?: ((carga: {
27
+ id: string;
28
+ x: number;
29
+ y: number;
30
+ }) => any) | undefined;
31
+ onSelect?: ((id: string) => any) | undefined;
32
+ onClose?: ((id: string) => any) | undefined;
33
+ "onUpdate:modelValue"?: ((id: string) => any) | undefined;
34
+ onNew?: (() => any) | undefined;
35
+ onReorder?: ((tabs: ElementoDePestana[]) => any) | undefined;
36
+ }>, {
37
+ modelValue: string;
38
+ closeLabel: string;
39
+ dirtyLabel: string;
40
+ newLabel: string;
41
+ fixedOrder: boolean;
42
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
43
+ declare const _default: typeof __VLS_export;
44
+ export default _default;
@@ -0,0 +1,43 @@
1
+ import type { ElementoDePestana } from './tipos';
2
+ type __VLS_Props = {
3
+ tab: ElementoDePestana;
4
+ active?: boolean;
5
+ closeLabel?: string;
6
+ /**
7
+ * Lo que se dice de una pestaña con cambios sin guardar.
8
+ *
9
+ * El punto es lo único que lo indicaba, y va `aria-hidden`: quien usa un
10
+ * lector de pantalla podía cerrar una pestaña modificada sin enterarse.
11
+ * Entra por propiedad porque una librería que traduce obliga a todas las
12
+ * aplicaciones a compartir sus claves.
13
+ */
14
+ dirtyLabel?: string;
15
+ /** El índice dentro de la barra, para el foco itinerante. */
16
+ tabindex?: number;
17
+ };
18
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
+ menu: (posicion: {
20
+ x: number;
21
+ y: number;
22
+ }) => any;
23
+ select: () => any;
24
+ close: () => any;
25
+ mover: (cuanto: 1 | -1) => any;
26
+ navegar: (a: "anterior" | "siguiente" | "primera" | "ultima") => any;
27
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
28
+ onMenu?: ((posicion: {
29
+ x: number;
30
+ y: number;
31
+ }) => any) | undefined;
32
+ onSelect?: (() => any) | undefined;
33
+ onClose?: (() => any) | undefined;
34
+ onMover?: ((cuanto: 1 | -1) => any) | undefined;
35
+ onNavegar?: ((a: "anterior" | "siguiente" | "primera" | "ultima") => any) | undefined;
36
+ }>, {
37
+ active: boolean;
38
+ closeLabel: string;
39
+ dirtyLabel: string;
40
+ tabindex: number;
41
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
+ declare const _default: typeof __VLS_export;
43
+ export default _default;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Una pestaña, tal como la dibuja la barra compartida.
3
+ *
4
+ * El escritorio tenía tres barras de pestañas distintas —la terminal, el gestor
5
+ * de archivos y el editor de texto— con prestaciones que no se solapaban: el
6
+ * editor era el único con el punto de «sin guardar», la terminal la única con
7
+ * vista previa al pasar por encima, y el menú de «cerrar las demás» estaba en
8
+ * dos de las tres. Esto es la unión, para que una pestaña se comporte igual en
9
+ * cualquier ventana.
10
+ */
11
+ export interface ElementoDePestana {
12
+ id: string;
13
+ /** Lo que se lee. Si se corta, el `title` lo dice entero. */
14
+ label: string;
15
+ /** Un nombre del tema de iconos del escritorio, no una ruta. */
16
+ icon?: string;
17
+ /**
18
+ * Tiene cambios sin guardar.
19
+ *
20
+ * Se dibuja como un punto y, si además se puede cerrar, el punto **es** el
21
+ * botón de cerrar hasta que el puntero pasa por encima: así no hay dos
22
+ * cosas peleando por el mismo lugar en una pestaña de ciento treinta y seis
23
+ * píxeles.
24
+ */
25
+ dirty?: boolean;
26
+ /** Por omisión se puede cerrar. */
27
+ closable?: boolean;
28
+ /** Lo que dice la vista previa al pasar por encima; sin esto, el `label`. */
29
+ tooltip?: string;
30
+ }
31
+ /** Una acción del menú contextual de una pestaña. */
32
+ export interface AccionDePestana {
33
+ id: string;
34
+ label: string;
35
+ icon?: string;
36
+ /** Se dibuja apagada, pero sigue alcanzable para un lector de pantalla. */
37
+ disabled?: boolean;
38
+ }
@@ -0,0 +1,38 @@
1
+ import { type PosicionDeLaBarra } from './tipos';
2
+ type __VLS_Props = {
3
+ /** Sin esto toma la del marco que la envuelve. */
4
+ position?: PosicionDeLaBarra | null;
5
+ title?: string;
6
+ /** Los nombres de los controles de ventana, traducidos por la aplicación. */
7
+ minimizeLabel?: string;
8
+ maximizeLabel?: string;
9
+ closeLabel?: string;
10
+ /** Para una ventana sin botones propios: un diálogo, un asistente. */
11
+ hideControls?: boolean;
12
+ };
13
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
14
+ type __VLS_Slots = {} & {
15
+ identidad?: (props: typeof __VLS_1) => any;
16
+ } & {
17
+ titulo?: (props: typeof __VLS_3) => any;
18
+ } & {
19
+ default?: (props: typeof __VLS_5) => any;
20
+ } & {
21
+ acciones?: (props: typeof __VLS_7) => any;
22
+ };
23
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
24
+ title: string;
25
+ minimizeLabel: string;
26
+ maximizeLabel: string;
27
+ closeLabel: string;
28
+ position: PosicionDeLaBarra | null;
29
+ hideControls: boolean;
30
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
31
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
32
+ declare const _default: typeof __VLS_export;
33
+ export default _default;
34
+ type __VLS_WithSlots<T, S> = T & {
35
+ new (): {
36
+ $slots: S;
37
+ };
38
+ };
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ minimizeLabel?: string;
3
+ maximizeLabel?: string;
4
+ closeLabel?: string;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
7
+ minimizeLabel: string;
8
+ maximizeLabel: string;
9
+ closeLabel: string;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -1,14 +1,35 @@
1
+ import { type PosicionDeLaBarra } from './tipos';
1
2
  type __VLS_Props = {
3
+ /** Fija la barra a un lado, ignorando la preferencia del escritorio. */
4
+ position?: PosicionDeLaBarra | null;
2
5
  title?: string;
3
- image?: string;
6
+ minimizeLabel?: string;
7
+ maximizeLabel?: string;
8
+ closeLabel?: string;
9
+ hideControls?: boolean;
10
+ /** Para una ventana que dibuja su propia barra o no lleva ninguna. */
11
+ hideBar?: boolean;
4
12
  };
5
- declare var __VLS_6: {};
13
+ declare var __VLS_8: {}, __VLS_11: {}, __VLS_14: {}, __VLS_16: {}, __VLS_18: {};
6
14
  type __VLS_Slots = {} & {
7
- default?: (props: typeof __VLS_6) => any;
15
+ identidad?: (props: typeof __VLS_8) => any;
16
+ } & {
17
+ titulo?: (props: typeof __VLS_11) => any;
18
+ } & {
19
+ acciones?: (props: typeof __VLS_14) => any;
20
+ } & {
21
+ barra?: (props: typeof __VLS_16) => any;
22
+ } & {
23
+ default?: (props: typeof __VLS_18) => any;
8
24
  };
9
25
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
10
26
  title: string;
11
- image: string;
27
+ minimizeLabel: string;
28
+ maximizeLabel: string;
29
+ closeLabel: string;
30
+ position: PosicionDeLaBarra | null;
31
+ hideControls: boolean;
32
+ hideBar: boolean;
12
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
34
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
35
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * De dónde sale la posición de la barra.
3
+ *
4
+ * De `~/.config/vasak/vasak.conf`, en `window.barPosition`, que es la misma
5
+ * configuración del escritorio que ya traen las fuentes, el tema y los iconos.
6
+ * Que sea de ahí y no de cada aplicación es el punto: moverla en un lado la
7
+ * mueve en todas.
8
+ *
9
+ * # Por qué una clave que el plugin no declara
10
+ *
11
+ * `VSKConfig` no la tiene en su tipo, pero el modelo de Rust guarda todo lo que
12
+ * no conoce en un `serde(flatten)` y lo devuelve tal cual, así que la clave
13
+ * sobrevive a cada lectura y a cada escritura. Es el mismo camino por el que
14
+ * pasan los widgets del escritorio, que los escribe y los lee sólo el
15
+ * escritorio. Si algún día se vuelve parte del tipo, esto sigue andando.
16
+ *
17
+ * # Y por qué tolera que no haya nada
18
+ *
19
+ * Una ventana se dibuja antes de que la configuración llegue, y puede abrirse
20
+ * fuera de Tauri —una prueba, una vista previa— donde no hay configuración
21
+ * ninguna. En los dos casos la respuesta es «arriba», que es donde la barra
22
+ * estuvo siempre.
23
+ */
24
+ import { type Ref } from 'vue';
25
+ import { type PosicionDeLaBarra } from './tipos';
26
+ /** Saca la posición de una configuración ya leída, o `null` si no dice nada. */
27
+ export declare function posicionDe(configuracion: unknown): PosicionDeLaBarra | null;
28
+ /**
29
+ * La posición de la barra, siguiendo a la configuración.
30
+ *
31
+ * Se vuelve a leer con cada `config-changed`, que es el evento que el gestor de
32
+ * configuración emite al guardar: mover la barra en Configuración la mueve en
33
+ * las ventanas abiertas sin cerrarlas.
34
+ */
35
+ export declare function usarLaPosicionDeLaBarra(porOmision?: PosicionDeLaBarra): Ref<PosicionDeLaBarra>;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * El contrato entre el marco de la ventana y lo que vive en su barra.
3
+ *
4
+ * La barra puede quedar arriba, abajo, a la izquierda o a la derecha, y lo que
5
+ * se pone adentro tiene que amoldarse: unas pestañas que se desbordan a lo
6
+ * ancho no se desbordan igual a lo alto, y un campo de texto de doscientos
7
+ * píxeles no entra en una barra de cuarenta y ocho.
8
+ *
9
+ * El marco lo **provee** y los componentes lo **inyectan**, en vez de que cada
10
+ * aplicación baje la orientación por propiedades hasta el último nieto. Eso es
11
+ * lo que permite que una barra de pestañas escrita en su repositorio se amolde
12
+ * sin que nadie la toque.
13
+ */
14
+ import { type InjectionKey, type Ref } from 'vue';
15
+ /** Dónde queda la barra dentro de la ventana. */
16
+ export type PosicionDeLaBarra = 'top' | 'bottom' | 'left' | 'right';
17
+ /**
18
+ * Cómo se acomoda lo que va adentro.
19
+ *
20
+ * Es lo que la mayoría de los componentes necesita saber: arriba y abajo se
21
+ * comportan igual, y la izquierda y la derecha también.
22
+ */
23
+ export type OrientacionDeLaBarra = 'horizontal' | 'vertical';
24
+ export interface ContextoDeLaBarra {
25
+ posicion: Ref<PosicionDeLaBarra>;
26
+ orientacion: Ref<OrientacionDeLaBarra>;
27
+ /** `true` cuando la barra es vertical, que es lo que más se pregunta. */
28
+ vertical: Ref<boolean>;
29
+ }
30
+ export declare const CLAVE_DE_LA_BARRA: InjectionKey<ContextoDeLaBarra>;
31
+ /** La orientación de las cuatro posiciones. */
32
+ export declare function orientacionDe(posicion: PosicionDeLaBarra): OrientacionDeLaBarra;
33
+ /** Las cuatro, para validar lo que venga de la configuración. */
34
+ export declare const POSICIONES: readonly PosicionDeLaBarra[];
35
+ export declare function esPosicion(valor: unknown): valor is PosicionDeLaBarra;
36
+ /**
37
+ * La orientación de la barra que envuelve a este componente.
38
+ *
39
+ * Fuera de un marco devuelve horizontal: un componente de barra montado suelto
40
+ * —en una prueba, en una vista previa— tiene que dibujarse igual, no reventar.
41
+ *
42
+ * Los tres son `ref` de verdad y no objetos con una propiedad `value`. Vue
43
+ * desenvuelve en la plantilla lo que **es** una ref; un objeto que se le
44
+ * parece llega entero, y un objeto siempre es verdadero: con el respaldo
45
+ * falsificado, `vertical` daba verdadero y todo lo que se montara fuera de un
46
+ * marco se dibujaba de costado. Lo encontró una prueba de `aria-orientation`.
47
+ */
48
+ export declare function usarLaBarra(): ContextoDeLaBarra;