@erplora/outfitkit 0.1.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.
Files changed (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +457 -0
  3. package/dist/base/anchor.d.ts +13 -0
  4. package/dist/base/define.d.ts +1 -0
  5. package/dist/base/relay.d.ts +1 -0
  6. package/dist/cdn.d.ts +96 -0
  7. package/dist/components/ok-app-launcher/ok-app-launcher.d.ts +57 -0
  8. package/dist/components/ok-audio/ok-audio.d.ts +45 -0
  9. package/dist/components/ok-avatar/ok-avatar.d.ts +36 -0
  10. package/dist/components/ok-avatar-group/ok-avatar-group.d.ts +38 -0
  11. package/dist/components/ok-bar-list/ok-bar-list.d.ts +36 -0
  12. package/dist/components/ok-bento/ok-bento.d.ts +17 -0
  13. package/dist/components/ok-bento-item/ok-bento-item.d.ts +34 -0
  14. package/dist/components/ok-calculator/ok-calculator.d.ts +46 -0
  15. package/dist/components/ok-calendar/ok-calendar.d.ts +63 -0
  16. package/dist/components/ok-carousel/ok-carousel.d.ts +48 -0
  17. package/dist/components/ok-chart/ok-chart.d.ts +55 -0
  18. package/dist/components/ok-chat/ok-chat.d.ts +54 -0
  19. package/dist/components/ok-coachmark/ok-coachmark.d.ts +69 -0
  20. package/dist/components/ok-code/ok-code.d.ts +28 -0
  21. package/dist/components/ok-color-picker/ok-color-picker.d.ts +63 -0
  22. package/dist/components/ok-combo/ok-combo.d.ts +46 -0
  23. package/dist/components/ok-command-palette/ok-command-palette.d.ts +72 -0
  24. package/dist/components/ok-contact-form/ok-contact-form.d.ts +54 -0
  25. package/dist/components/ok-cropper/ok-cropper.d.ts +60 -0
  26. package/dist/components/ok-cta-band/ok-cta-band.d.ts +18 -0
  27. package/dist/components/ok-currency/ok-currency.d.ts +31 -0
  28. package/dist/components/ok-data-table/ok-data-table.d.ts +312 -0
  29. package/dist/components/ok-date-picker/ok-date-picker.d.ts +81 -0
  30. package/dist/components/ok-detail-list/ok-detail-list.d.ts +30 -0
  31. package/dist/components/ok-diff/ok-diff.d.ts +38 -0
  32. package/dist/components/ok-donut/ok-donut.d.ts +38 -0
  33. package/dist/components/ok-drawer/ok-drawer.d.ts +56 -0
  34. package/dist/components/ok-dropzone/ok-dropzone.d.ts +48 -0
  35. package/dist/components/ok-empty-state/ok-empty-state.d.ts +16 -0
  36. package/dist/components/ok-error-page/ok-error-page.d.ts +77 -0
  37. package/dist/components/ok-event-card/ok-event-card.d.ts +56 -0
  38. package/dist/components/ok-feature-card/ok-feature-card.d.ts +23 -0
  39. package/dist/components/ok-file-item/ok-file-item.d.ts +31 -0
  40. package/dist/components/ok-file-manager/ok-file-manager.d.ts +145 -0
  41. package/dist/components/ok-footer/ok-footer.d.ts +10 -0
  42. package/dist/components/ok-funnel/ok-funnel.d.ts +31 -0
  43. package/dist/components/ok-gallery/ok-gallery.d.ts +34 -0
  44. package/dist/components/ok-gauge/ok-gauge.d.ts +49 -0
  45. package/dist/components/ok-heatmap/ok-heatmap.d.ts +45 -0
  46. package/dist/components/ok-hero/ok-hero.d.ts +10 -0
  47. package/dist/components/ok-hover-card/ok-hover-card.d.ts +76 -0
  48. package/dist/components/ok-icon-tile/ok-icon-tile.d.ts +24 -0
  49. package/dist/components/ok-image/ok-image.d.ts +56 -0
  50. package/dist/components/ok-inline-feedback/ok-inline-feedback.d.ts +33 -0
  51. package/dist/components/ok-invoice/ok-invoice.d.ts +137 -0
  52. package/dist/components/ok-json-viewer/ok-json-viewer.d.ts +31 -0
  53. package/dist/components/ok-kanban/ok-kanban.d.ts +56 -0
  54. package/dist/components/ok-kbd/ok-kbd.d.ts +21 -0
  55. package/dist/components/ok-keyboard/ok-keyboard.d.ts +35 -0
  56. package/dist/components/ok-kpi/ok-kpi.d.ts +24 -0
  57. package/dist/components/ok-language-select/ok-language-select.d.ts +31 -0
  58. package/dist/components/ok-lightbox/ok-lightbox.d.ts +59 -0
  59. package/dist/components/ok-logo-cloud/ok-logo-cloud.d.ts +14 -0
  60. package/dist/components/ok-loyalty-card/ok-loyalty-card.d.ts +35 -0
  61. package/dist/components/ok-mail/ok-mail.d.ts +117 -0
  62. package/dist/components/ok-menu/ok-menu.d.ts +75 -0
  63. package/dist/components/ok-menubar/ok-menubar.d.ts +75 -0
  64. package/dist/components/ok-navbar/ok-navbar.d.ts +42 -0
  65. package/dist/components/ok-notification-center/ok-notification-center.d.ts +79 -0
  66. package/dist/components/ok-org-chart/ok-org-chart.d.ts +67 -0
  67. package/dist/components/ok-otp/ok-otp.d.ts +31 -0
  68. package/dist/components/ok-page-header/ok-page-header.d.ts +23 -0
  69. package/dist/components/ok-pagination/ok-pagination.d.ts +44 -0
  70. package/dist/components/ok-pdf/ok-pdf.d.ts +32 -0
  71. package/dist/components/ok-phone/ok-phone.d.ts +48 -0
  72. package/dist/components/ok-pinpad/ok-pinpad.d.ts +29 -0
  73. package/dist/components/ok-pricing-card/ok-pricing-card.d.ts +31 -0
  74. package/dist/components/ok-product-card/ok-product-card.d.ts +25 -0
  75. package/dist/components/ok-qr/ok-qr.d.ts +24 -0
  76. package/dist/components/ok-qty-stepper/ok-qty-stepper.d.ts +35 -0
  77. package/dist/components/ok-range-dual/ok-range-dual.d.ts +38 -0
  78. package/dist/components/ok-rating/ok-rating.d.ts +33 -0
  79. package/dist/components/ok-receipt/ok-receipt.d.ts +103 -0
  80. package/dist/components/ok-reveal/ok-reveal.d.ts +21 -0
  81. package/dist/components/ok-rich-text/ok-rich-text.d.ts +46 -0
  82. package/dist/components/ok-scheduler/ok-scheduler.d.ts +74 -0
  83. package/dist/components/ok-select-card/ok-select-card.d.ts +37 -0
  84. package/dist/components/ok-signature/ok-signature.d.ts +55 -0
  85. package/dist/components/ok-skeleton/ok-skeleton.d.ts +40 -0
  86. package/dist/components/ok-sparkline/ok-sparkline.d.ts +27 -0
  87. package/dist/components/ok-split-button/ok-split-button.d.ts +49 -0
  88. package/dist/components/ok-splitter/ok-splitter.d.ts +36 -0
  89. package/dist/components/ok-stat/ok-stat.d.ts +16 -0
  90. package/dist/components/ok-status-dot/ok-status-dot.d.ts +24 -0
  91. package/dist/components/ok-status-pill/ok-status-pill.d.ts +22 -0
  92. package/dist/components/ok-stepper/ok-stepper.d.ts +33 -0
  93. package/dist/components/ok-store/ok-store.d.ts +33 -0
  94. package/dist/components/ok-tag-input/ok-tag-input.d.ts +39 -0
  95. package/dist/components/ok-testimonial/ok-testimonial.d.ts +21 -0
  96. package/dist/components/ok-time-picker/ok-time-picker.d.ts +50 -0
  97. package/dist/components/ok-timeline/ok-timeline.d.ts +33 -0
  98. package/dist/components/ok-tree/ok-tree.d.ts +46 -0
  99. package/dist/components/ok-video/ok-video.d.ts +49 -0
  100. package/dist/components/ok-widget-board/ok-widget-board.d.ts +71 -0
  101. package/dist/components/ok-wizard/ok-wizard.d.ts +30 -0
  102. package/dist/define.js +8 -0
  103. package/dist/erplora.css +112 -0
  104. package/dist/index.d.ts +158 -0
  105. package/dist/index.js +197 -0
  106. package/dist/layout.css +338 -0
  107. package/dist/ok-app-launcher.js +396 -0
  108. package/dist/ok-audio.js +308 -0
  109. package/dist/ok-avatar-group.js +158 -0
  110. package/dist/ok-avatar.js +179 -0
  111. package/dist/ok-bar-list.js +189 -0
  112. package/dist/ok-bento-item.js +168 -0
  113. package/dist/ok-bento.js +63 -0
  114. package/dist/ok-calculator.js +406 -0
  115. package/dist/ok-calendar.js +541 -0
  116. package/dist/ok-carousel.js +352 -0
  117. package/dist/ok-chart.js +325 -0
  118. package/dist/ok-chat.js +320 -0
  119. package/dist/ok-coachmark.js +500 -0
  120. package/dist/ok-code.js +190 -0
  121. package/dist/ok-color-picker.js +569 -0
  122. package/dist/ok-combo.js +294 -0
  123. package/dist/ok-command-palette.js +448 -0
  124. package/dist/ok-contact-form.js +288 -0
  125. package/dist/ok-cropper.js +404 -0
  126. package/dist/ok-cta-band.js +134 -0
  127. package/dist/ok-currency.js +172 -0
  128. package/dist/ok-data-table.js +1281 -0
  129. package/dist/ok-date-picker.js +736 -0
  130. package/dist/ok-detail-list.js +156 -0
  131. package/dist/ok-diff.js +200 -0
  132. package/dist/ok-donut.js +280 -0
  133. package/dist/ok-drawer.js +357 -0
  134. package/dist/ok-dropzone.js +376 -0
  135. package/dist/ok-empty-state.js +104 -0
  136. package/dist/ok-error-page.js +547 -0
  137. package/dist/ok-event-card.js +384 -0
  138. package/dist/ok-feature-card.js +152 -0
  139. package/dist/ok-file-item.js +259 -0
  140. package/dist/ok-file-manager.js +1116 -0
  141. package/dist/ok-footer.js +67 -0
  142. package/dist/ok-funnel.js +181 -0
  143. package/dist/ok-gallery.js +293 -0
  144. package/dist/ok-gauge.js +385 -0
  145. package/dist/ok-heatmap.js +268 -0
  146. package/dist/ok-hero.js +43 -0
  147. package/dist/ok-hover-card.js +480 -0
  148. package/dist/ok-icon-tile.js +123 -0
  149. package/dist/ok-image.js +471 -0
  150. package/dist/ok-inline-feedback.js +221 -0
  151. package/dist/ok-invoice.js +229 -0
  152. package/dist/ok-json-viewer.js +330 -0
  153. package/dist/ok-kanban.js +427 -0
  154. package/dist/ok-kbd.js +159 -0
  155. package/dist/ok-keyboard.js +402 -0
  156. package/dist/ok-kpi.js +147 -0
  157. package/dist/ok-language-select.js +188 -0
  158. package/dist/ok-lightbox.js +490 -0
  159. package/dist/ok-logo-cloud.js +92 -0
  160. package/dist/ok-loyalty-card.js +353 -0
  161. package/dist/ok-mail.js +562 -0
  162. package/dist/ok-menu.js +529 -0
  163. package/dist/ok-menubar.js +628 -0
  164. package/dist/ok-navbar.js +306 -0
  165. package/dist/ok-notification-center.js +545 -0
  166. package/dist/ok-org-chart.js +619 -0
  167. package/dist/ok-otp.js +199 -0
  168. package/dist/ok-page-header.js +202 -0
  169. package/dist/ok-pagination.js +366 -0
  170. package/dist/ok-pdf.js +160 -0
  171. package/dist/ok-phone.js +225 -0
  172. package/dist/ok-pinpad.js +171 -0
  173. package/dist/ok-pricing-card.js +184 -0
  174. package/dist/ok-product-card.js +178 -0
  175. package/dist/ok-qr.js +652 -0
  176. package/dist/ok-qty-stepper.js +212 -0
  177. package/dist/ok-range-dual.js +280 -0
  178. package/dist/ok-rating.js +199 -0
  179. package/dist/ok-receipt.js +183 -0
  180. package/dist/ok-reveal.js +94 -0
  181. package/dist/ok-rich-text.js +538 -0
  182. package/dist/ok-scheduler.js +518 -0
  183. package/dist/ok-select-card.js +231 -0
  184. package/dist/ok-signature.js +267 -0
  185. package/dist/ok-skeleton.js +345 -0
  186. package/dist/ok-sparkline.js +150 -0
  187. package/dist/ok-split-button.js +251 -0
  188. package/dist/ok-splitter.js +289 -0
  189. package/dist/ok-stat.js +77 -0
  190. package/dist/ok-status-dot.js +163 -0
  191. package/dist/ok-status-pill.js +123 -0
  192. package/dist/ok-stepper.js +299 -0
  193. package/dist/ok-store.js +83 -0
  194. package/dist/ok-tag-input.js +358 -0
  195. package/dist/ok-testimonial.js +136 -0
  196. package/dist/ok-time-picker.js +472 -0
  197. package/dist/ok-timeline.js +251 -0
  198. package/dist/ok-tree.js +266 -0
  199. package/dist/ok-video.js +362 -0
  200. package/dist/ok-widget-board.js +265 -0
  201. package/dist/ok-wizard.js +153 -0
  202. package/dist/outfitkit.js +96 -0
  203. package/dist/shared/anchor.js +14 -0
  204. package/dist/store/controller.d.ts +17 -0
  205. package/dist/store/idb.d.ts +16 -0
  206. package/dist/store/store.d.ts +39 -0
  207. package/dist/store-controller.js +31 -0
  208. package/dist/store.js +182 -0
  209. package/dist/theme.example.css +70 -0
  210. package/package.json +147 -0
@@ -0,0 +1,59 @@
1
+ import { LitElement } from 'lit';
2
+ export type OkLightboxItemType = 'img' | 'video';
3
+ export interface OkLightboxItem {
4
+ /** URL del medio (imagen o vídeo). */
5
+ src: string;
6
+ /** Texto alternativo / nombre de fichero mostrado en la cabecera. */
7
+ alt?: string;
8
+ /** Tipo de medio; por defecto `img`. */
9
+ type?: OkLightboxItemType;
10
+ /** URL opcional para la miniatura del filmstrip (si difiere de `src`). */
11
+ thumb?: string;
12
+ }
13
+ export interface OkLightboxLabels {
14
+ /** aria-label del botón anterior. */
15
+ prev: string;
16
+ /** aria-label del botón siguiente. */
17
+ next: string;
18
+ /** aria-label del botón cerrar. */
19
+ close: string;
20
+ /** aria-label del botón descargar. */
21
+ download: string;
22
+ /** aria-label del botón pantalla completa. */
23
+ fullscreen: string;
24
+ }
25
+ export declare class OkLightbox extends LitElement {
26
+ static styles: import("lit").CSSResult;
27
+ /** Medios a mostrar. */
28
+ items: OkLightboxItem[];
29
+ /** Índice activo (0-based). */
30
+ index: number;
31
+ /** Muestra/oculta el visor. */
32
+ open: boolean;
33
+ /** Textos traducibles (merge sobre los defaults en inglés). */
34
+ labels: Partial<OkLightboxLabels>;
35
+ private shown;
36
+ private get t();
37
+ private portalRoot;
38
+ disconnectedCallback(): void;
39
+ private readonly onKeydown;
40
+ private bind;
41
+ private unbind;
42
+ private ensurePortal;
43
+ protected updated(changed: Map<string, unknown>): void;
44
+ private get safeIndex();
45
+ private prefersReducedMotion;
46
+ private go;
47
+ private setIndex;
48
+ private requestClose;
49
+ private fileName;
50
+ render(): unknown;
51
+ private overlayTemplate;
52
+ private renderThumb;
53
+ private toggleFullscreen;
54
+ }
55
+ declare global {
56
+ interface HTMLElementTagNameMap {
57
+ 'ok-lightbox': OkLightbox;
58
+ }
59
+ }
@@ -0,0 +1,14 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class OkLogoCloud extends LitElement {
3
+ static styles: import("lit").CSSResult;
4
+ /** Etiqueta opcional encima de los logos. */
5
+ label?: string;
6
+ /** Desplaza la fila en bucle (duplica los logos en el HTML para continuidad). */
7
+ marquee: boolean;
8
+ render(): unknown;
9
+ }
10
+ declare global {
11
+ interface HTMLElementTagNameMap {
12
+ 'ok-logo-cloud': OkLogoCloud;
13
+ }
14
+ }
@@ -0,0 +1,35 @@
1
+ import { LitElement } from 'lit';
2
+ /** Nivel/tier de la tarjeta de fidelización. */
3
+ export type OkLoyaltyTier = 'silver' | 'gold' | 'platinum' | 'brand';
4
+ /** Tamaño de la tarjeta. */
5
+ export type OkLoyaltySize = 'sm' | 'md' | 'lg';
6
+ export declare class OkLoyaltyCard extends LitElement {
7
+ static styles: import("lit").CSSResult;
8
+ /** Nombre del titular de la tarjeta. */
9
+ holder?: string;
10
+ /** Número de socio/tarjeta (se renderiza en mono). */
11
+ number?: string;
12
+ /** Puntos de fidelización (string o número, se muestra tal cual). */
13
+ points?: string;
14
+ /** Etiqueta bajo el valor de puntos. */
15
+ pointsLabel: string;
16
+ /** Nombre de marca/programa en la cabecera. */
17
+ brand: string;
18
+ /** Nivel/tier visual. */
19
+ tier: OkLoyaltyTier;
20
+ /** Etiqueta del badge de tier (por defecto = el tier capitalizado). */
21
+ tierLabel?: string;
22
+ /** Texto previo al valor "miembro desde / caduca". */
23
+ metaLabel: string;
24
+ /** Valor de la meta (fecha de alta o caducidad, ej. "03 / 24"). */
25
+ metaValue?: string;
26
+ /** Tamaño de la tarjeta. */
27
+ size: OkLoyaltySize;
28
+ private get badgeText();
29
+ render(): unknown;
30
+ }
31
+ declare global {
32
+ interface HTMLElementTagNameMap {
33
+ 'ok-loyalty-card': OkLoyaltyCard;
34
+ }
35
+ }
@@ -0,0 +1,117 @@
1
+ import { LitElement } from 'lit';
2
+ /** Carpeta del buzón (Bandeja, Enviados, Borradores…). */
3
+ export interface OkMailFolder {
4
+ /** Id estable de la carpeta. */
5
+ id: string;
6
+ /** Etiqueta visible. */
7
+ label: string;
8
+ /** Nombre de un ion-icon opcional. */
9
+ icon?: string;
10
+ /** Nº de mensajes no leídos (badge). */
11
+ count?: number;
12
+ }
13
+ /** Mensaje de correo. */
14
+ export interface OkMailMessage {
15
+ /** Id estable del mensaje. */
16
+ id: string;
17
+ /** Id de la carpeta a la que pertenece. */
18
+ folderId: string;
19
+ /** Remitente. */
20
+ from: {
21
+ name: string;
22
+ email: string;
23
+ };
24
+ /** Destinatarios (correos). */
25
+ to?: string[];
26
+ /** Asunto. */
27
+ subject: string;
28
+ /** Vista previa (1 línea, atenuada). */
29
+ preview?: string;
30
+ /** Cuerpo completo (texto). */
31
+ body?: string;
32
+ /** Fecha ISO. */
33
+ date: string;
34
+ /** ¿Leído? (si no, se resalta). */
35
+ read?: boolean;
36
+ /** ¿Destacado con estrella? */
37
+ starred?: boolean;
38
+ /** Adjuntos. */
39
+ attachments?: Array<{
40
+ name: string;
41
+ size?: number;
42
+ }>;
43
+ }
44
+ /** Textos humanos de ok-mail (i18n; default inglés, override vía prop `labels`). */
45
+ export interface OkMailLabels {
46
+ /** Botón "Redactar". */
47
+ compose: string;
48
+ /** Placeholder del buscador. */
49
+ searchPlaceholder: string;
50
+ /** aria-label del punto de no leído. */
51
+ unread: string;
52
+ /** aria-label para destacar un mensaje. */
53
+ star: string;
54
+ /** aria-label para quitar el destacado de un mensaje. */
55
+ unstar: string;
56
+ /** Estado vacío: lista sin mensajes. */
57
+ noMessages: string;
58
+ /** Estado vacío: ningún mensaje seleccionado. */
59
+ selectMessage: string;
60
+ /** aria-label del botón atrás (móvil). */
61
+ back: string;
62
+ /** aria-label de Responder. */
63
+ reply: string;
64
+ /** aria-label de Reenviar. */
65
+ forward: string;
66
+ /** aria-label de Archivar. */
67
+ archive: string;
68
+ /** aria-label de Eliminar. */
69
+ delete: string;
70
+ /** Etiqueta "Para:" en la cabecera de lectura. */
71
+ to: string;
72
+ }
73
+ export declare class OkMail extends LitElement {
74
+ static styles: import("lit").CSSResult;
75
+ /** Carpetas del buzón. */
76
+ folders: OkMailFolder[];
77
+ /** Mensajes (de todas las carpetas; se filtran por `activeFolder`). */
78
+ messages: OkMailMessage[];
79
+ /** Id de la carpeta activa. */
80
+ activeFolder: string;
81
+ /** Id del mensaje seleccionado (panel de lectura). */
82
+ activeMessage: string;
83
+ /** Muestra el buscador en la lista de mensajes. */
84
+ searchable: boolean;
85
+ /** Overrides de textos humanos (i18n). Se fusionan sobre los defaults en inglés. */
86
+ labels: Partial<OkMailLabels>;
87
+ /** Textos efectivos (defaults inglés + overrides). */
88
+ private get t();
89
+ private q;
90
+ private emit;
91
+ /** Vista móvil derivada del estado activo: las tabs están siempre arriba, así que el cuerpo
92
+ * solo alterna entre la lista y la lectura (message si hay mensaje seleccionado, si no list). */
93
+ private get mobileView();
94
+ updated(): void;
95
+ /** Iniciales de un nombre para el avatar (p.ej. "Ana Pérez" → "AP"). */
96
+ private initials;
97
+ /** Fecha en formato corto con Intl (hora si es hoy, día/mes si es este año, si no fecha completa). */
98
+ private fmtDate;
99
+ /** Tamaño legible de un adjunto (B/KB/MB). */
100
+ private fmtSize;
101
+ /** Mensajes de la carpeta activa filtrados por el buscador (preview/asunto/remitente). */
102
+ private get folderMessages();
103
+ private onFolderSelect;
104
+ private onSearch;
105
+ private onMessageSelect;
106
+ private onStar;
107
+ private renderTopbar;
108
+ private renderTabs;
109
+ private renderList;
110
+ private renderReader;
111
+ render(): unknown;
112
+ }
113
+ declare global {
114
+ interface HTMLElementTagNameMap {
115
+ 'ok-mail': OkMail;
116
+ }
117
+ }
@@ -0,0 +1,75 @@
1
+ import { LitElement } from 'lit';
2
+ export interface OkMenuEntry {
3
+ /** Identificador único de la entrada (clave que se emite en `ok-select`). */
4
+ id?: string;
5
+ /** Texto visible de la entrada. */
6
+ label?: string;
7
+ /** Nombre de un ionicon (o SVG/`data:` ya resuelto) pintado antes del label. */
8
+ icon?: string;
9
+ /** Atajo de teclado mostrado a la derecha en mono (decorativo, p.ej. "⌘S"). */
10
+ shortcut?: string;
11
+ /** Pinta la entrada en color de peligro (borrar, etc.). */
12
+ danger?: boolean;
13
+ /** Deshabilita la entrada (no seleccionable, no abre submenú). */
14
+ disabled?: boolean;
15
+ /** Estado marcado para roles checkbox/radio (dibuja el check a la izquierda). */
16
+ checked?: boolean;
17
+ /** Rol ARIA del item: por defecto `menuitem`. */
18
+ role?: 'menuitem' | 'checkbox' | 'radio';
19
+ /** Si es `true`, dibuja una línea divisoria en lugar de una entrada. */
20
+ divider?: boolean;
21
+ /** Si está presente (sin `id`/acción), dibuja una etiqueta de sección en mayúsculas. */
22
+ section?: string;
23
+ /** Hijos: si tiene, la entrada abre un submenú en cascada (chevron, hover/teclado). */
24
+ children?: OkMenuEntry[];
25
+ }
26
+ /** Lado horizontal/vertical de anclaje del panel respecto al disparador. */
27
+ export type OkMenuAnchor = 'br' | 'bl' | 'tr' | 'tl';
28
+ /** Ancho mínimo del panel. */
29
+ export type OkMenuWidth = 'sm' | 'md' | 'lg';
30
+ /** Modo de disparo: click en el trigger, o contextmenu (click derecho) en el área. */
31
+ export type OkMenuTrigger = 'click' | 'context';
32
+ export declare class OkMenu extends LitElement {
33
+ static styles: import("lit").CSSResult;
34
+ /** Entradas del menú (array declarativo). */
35
+ items: OkMenuEntry[];
36
+ /** Modo de disparo: `click` (sobre el slot) o `context` (click derecho). */
37
+ trigger: OkMenuTrigger;
38
+ /** Lado de anclaje en modo click. */
39
+ anchor: OkMenuAnchor;
40
+ /** Ancho mínimo del panel. */
41
+ width: OkMenuWidth;
42
+ /** Estado abierto/cerrado (reflejado). */
43
+ open: boolean;
44
+ /** Volteo horizontal calculado por computeAnchor (true → alinear a la derecha). */
45
+ private flipEnd;
46
+ /** Volteo vertical calculado por computeAnchor (true → abrir hacia arriba). */
47
+ private flipAbove;
48
+ /** Coordenadas del cursor en modo contextual (relativas al host). */
49
+ private ctxX;
50
+ private ctxY;
51
+ /** id del submenú abierto (uno por nivel raíz). */
52
+ private openSub;
53
+ private onDocPointer;
54
+ private onKeydown;
55
+ private focusableItems;
56
+ connectedCallback(): void;
57
+ disconnectedCallback(): void;
58
+ private onContextMenu;
59
+ private onTriggerClick;
60
+ private openMenu;
61
+ private close;
62
+ private measureAnchor;
63
+ private activate;
64
+ private isResolvedSvg;
65
+ private renderIcon;
66
+ private renderEntry;
67
+ private toggleSub;
68
+ private onItemKeydown;
69
+ render(): unknown;
70
+ }
71
+ declare global {
72
+ interface HTMLElementTagNameMap {
73
+ 'ok-menu': OkMenu;
74
+ }
75
+ }
@@ -0,0 +1,75 @@
1
+ import { LitElement } from 'lit';
2
+ export interface OkMenuItem {
3
+ /** Identificador único del item (clave de selección). */
4
+ id: string;
5
+ /** Texto visible del item (ignorado si `separator`). */
6
+ label?: string;
7
+ /** Nombre de un ionicon opcional, mostrado antes del label. */
8
+ icon?: string;
9
+ /** Atajo de teclado mostrado a la derecha (solo decorativo, p.ej. "⌘S"). */
10
+ shortcut?: string;
11
+ /** Deshabilita el item (no seleccionable, no abre submenú). */
12
+ disabled?: boolean;
13
+ /** Si es `true`, dibuja una línea divisoria en lugar de un item. */
14
+ separator?: boolean;
15
+ /** Hijos: si tiene, el item abre un submenú al lado (hover/flecha). */
16
+ children?: OkMenuItem[];
17
+ }
18
+ export interface OkMenu {
19
+ /** Identificador único del menú. */
20
+ id: string;
21
+ /** Texto visible en la barra (Archivo / Editar / Ver…). */
22
+ label: string;
23
+ /** Items del desplegable. */
24
+ items: OkMenuItem[];
25
+ }
26
+ export interface OkMenubarLabels {
27
+ /** aria-label y texto del botón hamburguesa móvil. */
28
+ menu: string;
29
+ }
30
+ export declare class OkMenubar extends LitElement {
31
+ static styles: import("lit").CSSResult;
32
+ /** Menús de la barra (cada uno con su lista de items). */
33
+ menus: OkMenu[];
34
+ /** Textos traducibles (merge sobre los defaults en inglés). */
35
+ labels: Partial<OkMenubarLabels>;
36
+ private get t();
37
+ private openMenuId;
38
+ private openPath;
39
+ private activeItemId;
40
+ private mobileOpen;
41
+ private accExpanded;
42
+ private isMobile;
43
+ private ro?;
44
+ connectedCallback(): void;
45
+ disconnectedCallback(): void;
46
+ private readonly onDocClick;
47
+ private readonly onKeydown;
48
+ private bind;
49
+ private unbind;
50
+ private openMenu;
51
+ private toggleMenu;
52
+ private hoverMenu;
53
+ private closeAll;
54
+ private emitOpen;
55
+ private openSub;
56
+ private hoverItem;
57
+ private selectItem;
58
+ private focusableItems;
59
+ private moveActive;
60
+ private onMenuKeydown;
61
+ private cycleTopMenu;
62
+ private toggleMobile;
63
+ private toggleAccordion;
64
+ private renderItem;
65
+ private renderBar;
66
+ private renderAccItem;
67
+ private renderMobile;
68
+ render(): unknown;
69
+ protected firstUpdated(): void;
70
+ }
71
+ declare global {
72
+ interface HTMLElementTagNameMap {
73
+ 'ok-menubar': OkMenubar;
74
+ }
75
+ }
@@ -0,0 +1,42 @@
1
+ import { LitElement } from 'lit';
2
+ export interface OkNavbarLabels {
3
+ /** aria-label del botón hamburguesa (abre el menú). */
4
+ menu: string;
5
+ /** aria-label del botón de cerrar el panel. */
6
+ close: string;
7
+ }
8
+ export declare class OkNavbar extends LitElement {
9
+ static styles: import("lit").CSSResult;
10
+ /** Fija la navbar arriba al hacer scroll. */
11
+ sticky: boolean;
12
+ /** Fondo de cristal (translúcido + desenfoque). Combínalo con `sticky`. */
13
+ glass: boolean;
14
+ /** Estado del panel móvil (reflejado; controla el ion-modal). */
15
+ open: boolean;
16
+ /** Textos i18n (parcial; se mezclan sobre los defaults en inglés). */
17
+ labels: Partial<OkNavbarLabels>;
18
+ /** Viewport móvil (≤800px): los slots se proyectan en la barra solo en desktop. */
19
+ private isMobile;
20
+ private mq;
21
+ private modal;
22
+ private linksHost;
23
+ private actionsHost;
24
+ private closeBtn;
25
+ /** Nodos light-DOM movidos al panel (en orden original) para devolverlos al host. */
26
+ private movedNodes;
27
+ private get t();
28
+ connectedCallback(): void;
29
+ disconnectedCallback(): void;
30
+ protected updated(changed: Map<PropertyKey, unknown>): void;
31
+ private onMqChange;
32
+ private openPanel;
33
+ private buildModal;
34
+ private presentPanel;
35
+ private restoreNodes;
36
+ render(): unknown;
37
+ }
38
+ declare global {
39
+ interface HTMLElementTagNameMap {
40
+ 'ok-navbar': OkNavbar;
41
+ }
42
+ }
@@ -0,0 +1,79 @@
1
+ import { LitElement } from 'lit';
2
+ /** Variante de color del icono redondo (tinte de estado). */
3
+ export type OkNotifVariant = 'leaf' | 'warn' | 'info' | 'brand';
4
+ /** Una notificación de la bandeja. */
5
+ export interface OkNotification {
6
+ /** Identificador único (clave de lectura/selección). */
7
+ id: string;
8
+ /**
9
+ * Icono del avatar redondo. Dos formas:
10
+ * • NOMBRE de ionicon (p. ej. `checkmark-outline`) → `ion-icon name`;
11
+ * • SVG ya resuelto (`<svg…>` o `data:` URI) → `ion-icon icon` (hosts offline/horneados).
12
+ * Si se omite se usa un icono de campana por defecto.
13
+ */
14
+ icon?: string;
15
+ /** Tinte de estado del avatar (default neutro). */
16
+ variant?: OkNotifVariant;
17
+ /** Texto principal. Puede traer HTML simple (<b>…</b>) → se pinta con unsafeHTML controlado. */
18
+ text: string;
19
+ /** Línea secundaria mono (contexto, cita, referencia). */
20
+ meta?: string;
21
+ /** Marca de tiempo relativa ya formateada por el consumidor (p. ej. "12:42", "ayer"). */
22
+ time?: string;
23
+ /** Si es no-leída: marca el punto lateral y cuenta en el badge. */
24
+ unread?: boolean;
25
+ }
26
+ /** Chip de filtro de la cabecera. */
27
+ export interface OkNotifFilter {
28
+ /** Identificador del filtro (se emite en `ok-filter`). */
29
+ id: string;
30
+ /** Texto visible del chip. */
31
+ label: string;
32
+ }
33
+ /** Textos humanos (i18n; default inglés, override vía prop `labels`). */
34
+ export interface OkNotifLabels {
35
+ /** Texto del footer (marcar todas como leídas). */
36
+ markAllRead: string;
37
+ /** aria-label del botón de cerrar (X). */
38
+ close: string;
39
+ /** Título del estado vacío. */
40
+ emptyTitle: string;
41
+ /** Texto del estado vacío. */
42
+ emptyText: string;
43
+ }
44
+ export declare class OkNotificationCenter extends LitElement {
45
+ static styles: import("lit").CSSResult;
46
+ /** Notificaciones a mostrar (datos declarativos). */
47
+ items: OkNotification[];
48
+ /** Chips de filtro de la cabecera. */
49
+ filters: OkNotifFilter[];
50
+ /** Id del filtro activo. */
51
+ active?: string;
52
+ /** Abierto/cerrado (modo controlado por el padre). */
53
+ open: boolean;
54
+ /** Título de la cabecera. */
55
+ title: string;
56
+ /** Textos traducibles (merge sobre los defaults en inglés). */
57
+ labels: Partial<OkNotifLabels>;
58
+ private get t();
59
+ private get unreadCount();
60
+ private readonly onKeydown;
61
+ connectedCallback(): void;
62
+ disconnectedCallback(): void;
63
+ private isResolvedSvg;
64
+ private requestClose;
65
+ private onItemClick;
66
+ private onMarkAll;
67
+ private onFilter;
68
+ protected updated(changed: Map<string, unknown>): void;
69
+ private renderAvatar;
70
+ private renderText;
71
+ private renderItem;
72
+ private renderEmpty;
73
+ render(): unknown;
74
+ }
75
+ declare global {
76
+ interface HTMLElementTagNameMap {
77
+ 'ok-notification-center': OkNotificationCenter;
78
+ }
79
+ }
@@ -0,0 +1,67 @@
1
+ import { LitElement } from 'lit';
2
+ /** Un nodo del organigrama (recursivo vía `children`). */
3
+ export interface OrgNode {
4
+ /** Identificador único (opcional, útil para keys). */
5
+ id?: string;
6
+ /** Nombre de la persona/unidad. */
7
+ name: string;
8
+ /** Rol o cargo (línea secundaria muted). */
9
+ role?: string;
10
+ /** URL de avatar del propio nodo (no usada en el stack de equipo). */
11
+ avatar?: string;
12
+ /** Tamaño del equipo que reporta a este nodo → genera el stack de avatares (+N). */
13
+ team?: number;
14
+ /** Hijos directos en la jerarquía. */
15
+ children?: OrgNode[];
16
+ }
17
+ export declare class OkOrgChart extends LitElement {
18
+ static styles: import("lit").CSSResult;
19
+ /** Nodo raíz del organigrama (con `children` recursivos). */
20
+ root: OrgNode | null;
21
+ /** Máximo de avatares mostrados en el stack antes del «+N» (resto). */
22
+ maxAvatars: number;
23
+ /** Alto del viewport en px (el organigrama vive dentro y se navega con pan/zoom). */
24
+ height: number;
25
+ private tx;
26
+ private ty;
27
+ private k;
28
+ private grabbing;
29
+ private collapsed;
30
+ private contentW;
31
+ private contentH;
32
+ private fitted;
33
+ private pointers;
34
+ private panStart;
35
+ private pinchStart;
36
+ private wrapEl;
37
+ private ro;
38
+ private userMoved;
39
+ private layout;
40
+ /** Renderiza el stack de avatares (+N) para el tamaño de equipo de un nodo. */
41
+ private renderTeam;
42
+ /** Iniciales del nombre (1ª letra del primer y último término), para el avatar sin imagen. */
43
+ private initialsOf;
44
+ /** Recoge/expande la rama de un nodo y emite `ok-node-toggle`. */
45
+ private toggle;
46
+ /** Renderiza un nodo posicionado (HTML absoluto en coordenadas del mundo). */
47
+ private renderNode;
48
+ /** Encuadra todo el organigrama en el viewport con un pequeño margen. */
49
+ fit(): void;
50
+ /** Recentra el organigrama en el viewport MANTENIENDO el zoom actual. */
51
+ center(): void;
52
+ private zoomAround;
53
+ private zoomBy;
54
+ private onWheel;
55
+ private onPointerDown;
56
+ private onPointerMove;
57
+ private onPointerUp;
58
+ protected firstUpdated(): void;
59
+ protected updated(changed: Map<string, unknown>): void;
60
+ disconnectedCallback(): void;
61
+ render(): unknown;
62
+ }
63
+ declare global {
64
+ interface HTMLElementTagNameMap {
65
+ 'ok-org-chart': OkOrgChart;
66
+ }
67
+ }
@@ -0,0 +1,31 @@
1
+ import { LitElement } from 'lit';
2
+ export interface OkOtpLabels {
3
+ /** aria-label de cada casilla. Recibe el índice (1-based) y el total. */
4
+ digitLabel: (index: number, length: number) => string;
5
+ }
6
+ export declare class OkOtp extends LitElement {
7
+ static styles: import("lit").CSSResult;
8
+ /** Número de casillas de la OTP. */
9
+ length: number;
10
+ /** Valor actual (string de dígitos). */
11
+ value: string;
12
+ /** Textos traducibles (merge sobre los defaults en inglés). */
13
+ labels: Partial<OkOtpLabels>;
14
+ private get t();
15
+ private firstInput?;
16
+ private get inputs();
17
+ private focusAt;
18
+ private syncFromInputs;
19
+ private onInput;
20
+ private onKeydown;
21
+ private onPaste;
22
+ private distribute;
23
+ private digitAt;
24
+ protected firstUpdated(): void;
25
+ render(): unknown;
26
+ }
27
+ declare global {
28
+ interface HTMLElementTagNameMap {
29
+ 'ok-otp': OkOtp;
30
+ }
31
+ }
@@ -0,0 +1,23 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class OkPageHeader extends LitElement {
3
+ static styles: import("lit").CSSResult;
4
+ /** Título de la página/sección. */
5
+ heading: string;
6
+ /** Nivel semántico del heading: 1 (def, h1) | 2 (h2, sub-página). */
7
+ level: 1 | 2;
8
+ /** Subtítulo atenuado bajo el título. */
9
+ description?: string;
10
+ /** Variante densa para sub-páginas (reflejado para CSS). */
11
+ compact: boolean;
12
+ private hasBreadcrumbs;
13
+ private hasMeta;
14
+ private hasActions;
15
+ private hasExtra;
16
+ private onSlotChange;
17
+ render(): unknown;
18
+ }
19
+ declare global {
20
+ interface HTMLElementTagNameMap {
21
+ 'ok-page-header': OkPageHeader;
22
+ }
23
+ }
@@ -0,0 +1,44 @@
1
+ import { LitElement } from 'lit';
2
+ export type PaginationVariant = 'default' | 'compact';
3
+ export declare class OkPagination extends LitElement {
4
+ static styles: import("lit").CSSResult;
5
+ /** Total de elementos (no de páginas). */
6
+ total: number;
7
+ /** Página actual (base 1). */
8
+ page: number;
9
+ /** Tamaño de página (elementos por página). */
10
+ pageSize: number;
11
+ /** Nº de páginas vecinas mostradas a cada lado de la activa. */
12
+ siblingCount: number;
13
+ /** Nº de páginas fijas mostradas en cada extremo (inicio/fin). */
14
+ boundaryCount: number;
15
+ /** Variante visual: numerada completa o compacta (prev/valor/next). */
16
+ variant: PaginationVariant;
17
+ /** Muestra el texto informativo "X–Y de Z". */
18
+ info: boolean;
19
+ /** Opciones de filas por página; si se pasan, muestra un ion-select. */
20
+ pageSizeOptions?: number[];
21
+ /** Etiqueta accesible del nav. */
22
+ label: string;
23
+ /** Nº total de páginas (mínimo 1). */
24
+ private get pageCount();
25
+ /** Página actual saneada al rango [1, pageCount]. */
26
+ private get current();
27
+ /** Construye la lista de tokens (números + elipsis) según sibling/boundary counts. */
28
+ private get range();
29
+ /** Rango entero [from, to] como array (vacío si from > to). */
30
+ private seq;
31
+ private goTo;
32
+ private onSizeChange;
33
+ /** Chevron SVG (izq/der) dibujado a mano. */
34
+ private chevron;
35
+ private renderInfo;
36
+ private renderPageSize;
37
+ private renderNav;
38
+ render(): unknown;
39
+ }
40
+ declare global {
41
+ interface HTMLElementTagNameMap {
42
+ 'ok-pagination': OkPagination;
43
+ }
44
+ }