@erplora/outfitkit 0.1.14 → 0.1.16

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 (54) hide show
  1. package/dist/base/icons.d.ts +59 -0
  2. package/dist/base/icons.test.d.ts +1 -0
  3. package/dist/cdn.d.ts +1 -0
  4. package/dist/components/ok-data-table/csv-encoding.d.ts +4 -0
  5. package/dist/components/ok-data-table/csv-encoding.test.d.ts +1 -0
  6. package/dist/components/ok-kpi/ok-kpi.d.ts +1 -1
  7. package/dist/components/ok-theme-picker/ok-theme-picker.d.ts +46 -0
  8. package/dist/components/ok-theme-picker/ok-theme-picker.test.d.ts +1 -0
  9. package/dist/index.d.ts +4 -2
  10. package/dist/index.js +4 -0
  11. package/dist/ok-app-launcher.js +4 -3
  12. package/dist/ok-audio.js +4 -3
  13. package/dist/ok-calendar.js +4 -3
  14. package/dist/ok-carousel.js +3 -2
  15. package/dist/ok-chat.js +2 -1
  16. package/dist/ok-combo.js +2 -1
  17. package/dist/ok-command-palette.js +3 -2
  18. package/dist/ok-data-table.js +27 -16
  19. package/dist/ok-date-picker.js +4 -3
  20. package/dist/ok-drawer.js +3 -2
  21. package/dist/ok-dropzone.js +5 -4
  22. package/dist/ok-empty-state.js +2 -1
  23. package/dist/ok-error-page.js +2 -1
  24. package/dist/ok-file-manager.js +5 -4
  25. package/dist/ok-icon-tile.js +2 -1
  26. package/dist/ok-inline-feedback.js +8 -7
  27. package/dist/ok-kpi.js +7 -6
  28. package/dist/ok-lightbox.js +7 -6
  29. package/dist/ok-mail.js +10 -9
  30. package/dist/ok-menu.js +2 -1
  31. package/dist/ok-menubar.js +6 -5
  32. package/dist/ok-notification-center.js +4 -3
  33. package/dist/ok-pdf.js +4 -3
  34. package/dist/ok-pinpad.js +3 -2
  35. package/dist/ok-qty-stepper.js +3 -2
  36. package/dist/ok-rating.js +3 -2
  37. package/dist/ok-scheduler.js +3 -2
  38. package/dist/ok-select-card.js +2 -1
  39. package/dist/ok-signature.js +3 -2
  40. package/dist/ok-split-button.js +3 -2
  41. package/dist/ok-status-pill.js +2 -1
  42. package/dist/ok-stepper.js +2 -1
  43. package/dist/ok-tag-input.js +2 -1
  44. package/dist/ok-theme-picker.js +221 -0
  45. package/dist/ok-timeline.js +2 -1
  46. package/dist/ok-tree.js +3 -2
  47. package/dist/ok-video.js +5 -4
  48. package/dist/ok-widget-board.js +2 -1
  49. package/dist/outfitkit.bundle.js +3378 -3117
  50. package/dist/outfitkit.js +1 -0
  51. package/dist/palettes.css +422 -0
  52. package/dist/shared/icons.js +194 -0
  53. package/dist/theme/palettes.test.d.ts +1 -0
  54. package/package.json +10 -2
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property, state, query } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { y as iconCloudUploadOutline, z as iconAlertCircleOutline, A as iconDocumentOutline, v as iconCloseOutline } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -302,7 +303,7 @@ class OkDropzone extends LitElement {
302
303
  @dragleave=${this.onDragLeave}
303
304
  @drop=${this.onDrop}
304
305
  >
305
- <ion-icon class="big-icon" name="cloud-upload-outline"></ion-icon>
306
+ <ion-icon class="big-icon" .icon=${iconCloudUploadOutline}></ion-icon>
306
307
  <span class="title">
307
308
  ${titleBefore}<span class="link">${this.t.browse}</span>${titleAfter}
308
309
  </span>
@@ -316,12 +317,12 @@ class OkDropzone extends LitElement {
316
317
  @change=${this.onInputChange}
317
318
  />
318
319
 
319
- ${this.error ? html`<div class="error"><ion-icon name="alert-circle-outline"></ion-icon>${this.error}</div>` : ""}
320
+ ${this.error ? html`<div class="error"><ion-icon .icon=${iconAlertCircleOutline}></ion-icon>${this.error}</div>` : ""}
320
321
 
321
322
  ${this.files.length ? html`<ul class="files">
322
323
  ${this.files.map(
323
324
  (file, i) => html`<li class="file">
324
- <ion-icon class="file-icon" name="document-outline"></ion-icon>
325
+ <ion-icon class="file-icon" .icon=${iconDocumentOutline}></ion-icon>
325
326
  <span class="meta">
326
327
  <span class="name">${file.name}</span>
327
328
  <span class="size">${this.formatSize(file.size)}</span>
@@ -335,7 +336,7 @@ class OkDropzone extends LitElement {
335
336
  this.removeAt(i);
336
337
  }}
337
338
  >
338
- <ion-icon name="close-outline"></ion-icon>
339
+ <ion-icon .icon=${iconCloseOutline}></ion-icon>
339
340
  </button>
340
341
  </li>`
341
342
  )}
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { o as okIcon } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -78,7 +79,7 @@ class OkEmptyState extends LitElement {
78
79
  render() {
79
80
  return html`
80
81
  <div class="wrap">
81
- <ion-icon name=${this.icon} aria-hidden="true"></ion-icon>
82
+ <ion-icon .icon=${okIcon(this.icon)} aria-hidden="true"></ion-icon>
82
83
  ${this.heading ? html`<h2 class="heading">${this.heading}</h2>` : null}
83
84
  ${this.message ? html`<p class="message">${this.message}</p>` : null}
84
85
  <slot></slot>
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property, state } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { o as okIcon } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -406,7 +407,7 @@ class OkErrorPage extends LitElement {
406
407
  <div class="shortcuts" role="list">
407
408
  ${this.shortcuts.map((s) => {
408
409
  const body = html`
409
- ${s.icon ? html`<ion-icon name=${s.icon} aria-hidden="true"></ion-icon>` : null}
410
+ ${s.icon ? html`<ion-icon .icon=${okIcon(s.icon)} aria-hidden="true"></ion-icon>` : null}
410
411
  <span class="shortcut-body">
411
412
  <span class="shortcut-title">${s.title}</span>
412
413
  ${s.desc ? html`<span class="shortcut-desc">${s.desc}</span>` : null}
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property, state, query } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { g as iconChevronForwardOutline, o as okIcon, P as iconFolderOpenOutline } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -770,10 +771,10 @@ class OkFileManager extends LitElement {
770
771
  this.toggle(folder);
771
772
  }}
772
773
  >
773
- <ion-icon name="chevron-forward-outline"></ion-icon>
774
+ <ion-icon .icon=${iconChevronForwardOutline}></ion-icon>
774
775
  </button>
775
776
  <span class="ticon"
776
- ><ion-icon name=${folder.icon || "folder-outline"}></ion-icon
777
+ ><ion-icon .icon=${okIcon(folder.icon || "folder-outline")}></ion-icon
777
778
  ></span>
778
779
  <span class="tlabel" title=${folder.label}>${folder.label}</span>
779
780
  ${folder.count != null ? html`<span class="tcount">${folder.count}</span>` : ""}
@@ -829,7 +830,7 @@ class OkFileManager extends LitElement {
829
830
  ${crumbs.map((c, i) => {
830
831
  const isLast = i === crumbs.length - 1;
831
832
  return html`${i > 0 ? html`<span class="crumb-sep" aria-hidden="true"
832
- ><ion-icon name="chevron-forward-outline"></ion-icon
833
+ ><ion-icon .icon=${iconChevronForwardOutline}></ion-icon
833
834
  ></span>` : ""}<button
834
835
  type="button"
835
836
  class=${`crumb ${isLast ? "current" : ""}`.trim()}
@@ -973,7 +974,7 @@ class OkFileManager extends LitElement {
973
974
  }
974
975
  if (!this.files.length) {
975
976
  return html`<div class="empty">
976
- <ion-icon name="folder-open-outline"></ion-icon>
977
+ <ion-icon .icon=${iconFolderOpenOutline}></ion-icon>
977
978
  <span>${this.t.empty}</span>
978
979
  </div>`;
979
980
  }
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { o as okIcon } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -86,7 +87,7 @@ class OkIconTile extends LitElement {
86
87
  if (this.icon.includes(":")) {
87
88
  return html`<iconify-icon icon=${this.icon} aria-hidden="true"></iconify-icon>`;
88
89
  }
89
- return html`<ion-icon name=${this.icon} aria-hidden="true"></ion-icon>`;
90
+ return html`<ion-icon .icon=${okIcon(this.icon)} aria-hidden="true"></ion-icon>`;
90
91
  }
91
92
  render() {
92
93
  const decorative = !this.label;
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property, state } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { h as iconInformationCircle, j as iconAlertCircle, k as iconWarning, l as iconCheckmarkCircle, o as okIcon, m as iconClose } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -152,16 +153,16 @@ class OkInlineFeedback extends LitElement {
152
153
  defaultIcon() {
153
154
  switch (this.tone) {
154
155
  case "success":
155
- return "checkmark-circle";
156
+ return iconCheckmarkCircle;
156
157
  case "warning":
157
- return "warning";
158
+ return iconWarning;
158
159
  case "danger":
159
- return "alert-circle";
160
+ return iconAlertCircle;
160
161
  case "neutral":
161
- return "information-circle";
162
+ return iconInformationCircle;
162
163
  case "info":
163
164
  default:
164
- return "information-circle";
165
+ return iconInformationCircle;
165
166
  }
166
167
  }
167
168
  // Oculta el banner y avisa al consumidor; éste puede revertir restaurando `hidden=false`.
@@ -173,7 +174,7 @@ class OkInlineFeedback extends LitElement {
173
174
  const iconName = this.icon ?? this.defaultIcon();
174
175
  return html`
175
176
  <div class="box" role="status">
176
- <ion-icon class="icon" name=${iconName} aria-hidden="true"></ion-icon>
177
+ <ion-icon class="icon" .icon=${okIcon(iconName)} aria-hidden="true"></ion-icon>
177
178
  <div class="content">
178
179
  <div class="row">
179
180
  <div class="text">
@@ -187,7 +188,7 @@ class OkInlineFeedback extends LitElement {
187
188
  </div>
188
189
  ${this.dismissible ? html`
189
190
  <button class="close" aria-label=${this.t.dismiss} @click=${this.dismiss}>
190
- <ion-icon name="close" aria-hidden="true"></ion-icon>
191
+ <ion-icon .icon=${iconClose} aria-hidden="true"></ion-icon>
191
192
  </button>
192
193
  ` : null}
193
194
  </div>
package/dist/ok-kpi.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { n as iconTrendingUp, p as iconTrendingDown, q as iconRemove, o as okIcon } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -104,22 +105,22 @@ class OkKpi extends LitElement {
104
105
  }
105
106
  `;
106
107
  }
107
- /** Devuelve el ion-icon de flecha según la tendencia. */
108
+ /** Devuelve el icono de flecha según la tendencia (SVG horneado, ver base/icons.ts). */
108
109
  trendIcon() {
109
- if (this.trend === "up") return "trending-up";
110
- if (this.trend === "down") return "trending-down";
111
- return "remove";
110
+ if (this.trend === "up") return iconTrendingUp;
111
+ if (this.trend === "down") return iconTrendingDown;
112
+ return iconRemove;
112
113
  }
113
114
  render() {
114
115
  return html`
115
116
  <div class="card">
116
117
  <div class="top">
117
118
  ${this.label ? html`<p class="label">${this.label}</p>` : null}
118
- ${this.icon ? html`<ion-icon class="label-icon" name=${this.icon} aria-hidden="true"></ion-icon>` : null}
119
+ ${this.icon ? html`<ion-icon class="label-icon" .icon=${okIcon(this.icon)} aria-hidden="true"></ion-icon>` : null}
119
120
  </div>
120
121
  ${this.value ? html`<p class="value">${this.value}</p>` : null}
121
122
  ${this.delta ? html`<span class="delta ${this.trend}">
122
- <ion-icon name=${this.trendIcon()} aria-hidden="true"></ion-icon>${this.delta}
123
+ <ion-icon .icon=${this.trendIcon()} aria-hidden="true"></ion-icon>${this.delta}
123
124
  </span>` : null}
124
125
  <slot></slot>
125
126
  </div>
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, render, nothing, html } from "lit";
2
2
  import { property, state } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { H as iconExpandOutline, v as iconCloseOutline, t as iconChevronBackOutline, g as iconChevronForwardOutline, D as iconDownloadOutline, O as iconPlayOutline } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -388,7 +389,7 @@ class OkLightbox extends LitElement {
388
389
  rel="noopener"
389
390
  aria-label=${this.t.download}
390
391
  >
391
- <ion-icon name="download-outline"></ion-icon>
392
+ <ion-icon .icon=${iconDownloadOutline}></ion-icon>
392
393
  </a>` : null}
393
394
  <button
394
395
  type="button"
@@ -396,7 +397,7 @@ class OkLightbox extends LitElement {
396
397
  aria-label=${this.t.fullscreen}
397
398
  @click=${() => this.toggleFullscreen()}
398
399
  >
399
- <ion-icon name="expand-outline"></ion-icon>
400
+ <ion-icon .icon=${iconExpandOutline}></ion-icon>
400
401
  </button>
401
402
  <button
402
403
  type="button"
@@ -404,7 +405,7 @@ class OkLightbox extends LitElement {
404
405
  aria-label=${this.t.close}
405
406
  @click=${() => this.requestClose()}
406
407
  >
407
- <ion-icon name="close-outline"></ion-icon>
408
+ <ion-icon .icon=${iconCloseOutline}></ion-icon>
408
409
  </button>
409
410
  </div>
410
411
  </div>
@@ -417,7 +418,7 @@ class OkLightbox extends LitElement {
417
418
  ?disabled=${i <= 0}
418
419
  @click=${() => this.go(-1)}
419
420
  >
420
- <ion-icon name="chevron-back-outline"></ion-icon>
421
+ <ion-icon .icon=${iconChevronBackOutline}></ion-icon>
421
422
  </button>
422
423
 
423
424
  ${current ? isVideo ? html`<video
@@ -435,7 +436,7 @@ class OkLightbox extends LitElement {
435
436
  ?disabled=${i >= total - 1}
436
437
  @click=${() => this.go(1)}
437
438
  >
438
- <ion-icon name="chevron-forward-outline"></ion-icon>
439
+ <ion-icon .icon=${iconChevronForwardOutline}></ion-icon>
439
440
  </button>
440
441
  </div>
441
442
 
@@ -455,7 +456,7 @@ class OkLightbox extends LitElement {
455
456
  aria-label=${this.fileName(item)}
456
457
  @click=${() => this.setIndex(idx)}
457
458
  >
458
- ${isVideo ? html`<span class="vid"><ion-icon name="play-outline"></ion-icon></span>` : html`<img src=${item.thumb ?? item.src} alt="" loading="lazy" />`}
459
+ ${isVideo ? html`<span class="vid"><ion-icon .icon=${iconPlayOutline}></ion-icon></span>` : html`<img src=${item.thumb ?? item.src} alt="" loading="lazy" />`}
459
460
  </button>`;
460
461
  }
461
462
  // Pantalla completa nativa sobre el overlay portado (con fallback silencioso si no se concede).
package/dist/ok-mail.js CHANGED
@@ -2,6 +2,7 @@ import { LitElement, css, nothing, html } from "lit";
2
2
  import { property, state } from "lit/decorators.js";
3
3
  import { repeat } from "lit/directives/repeat.js";
4
4
  import { define } from "./define.js";
5
+ import { i as iconCreateOutline, o as okIcon, a as iconChevronBack, b as iconArrowUndoOutline, c as iconArrowRedoOutline, d as iconArchiveOutline, e as iconTrashOutline, f as iconDocumentAttachOutline } from "./shared/icons.js";
5
6
  var __defProp = Object.defineProperty;
6
7
  var __decorateClass = (decorators, target, key, kind) => {
7
8
  var result = void 0;
@@ -389,7 +390,7 @@ class OkMail extends LitElement {
389
390
  return html`
390
391
  <div class="topbar">
391
392
  <ion-button @click=${() => this.emit("ok-compose", {})}>
392
- <ion-icon slot="start" name="create-outline"></ion-icon>
393
+ <ion-icon slot="start" .icon=${iconCreateOutline}></ion-icon>
393
394
  ${this.t.compose}
394
395
  </ion-button>
395
396
  ${this.searchable ? html`<ion-searchbar
@@ -415,7 +416,7 @@ class OkMail extends LitElement {
415
416
  aria-selected=${f.id === this.activeFolder ? "true" : "false"}
416
417
  @click=${() => this.onFolderSelect(f.id)}
417
418
  >
418
- ${f.icon ? html`<ion-icon name=${f.icon}></ion-icon>` : nothing}
419
+ ${f.icon ? html`<ion-icon .icon=${okIcon(f.icon)}></ion-icon>` : nothing}
419
420
  <span class="tlabel">${f.label}</span>
420
421
  ${f.count ? html`<ion-badge>${f.count}</ion-badge>` : nothing}
421
422
  </button>
@@ -453,7 +454,7 @@ class OkMail extends LitElement {
453
454
  aria-label=${m.starred ? this.t.unstar : this.t.star}
454
455
  @click=${(e) => this.onStar(e, m)}
455
456
  >
456
- <ion-icon name=${m.starred ? "star" : "star-outline"}></ion-icon>
457
+ <ion-icon .icon=${okIcon(m.starred ? "star" : "star-outline")}></ion-icon>
457
458
  </button>
458
459
  </article>
459
460
  `;
@@ -482,20 +483,20 @@ class OkMail extends LitElement {
482
483
  <ion-button fill="clear" size="small" aria-label=${this.t.back} @click=${() => {
483
484
  this.activeMessage = "";
484
485
  }}>
485
- <ion-icon slot="icon-only" name="chevron-back"></ion-icon>
486
+ <ion-icon slot="icon-only" .icon=${iconChevronBack}></ion-icon>
486
487
  </ion-button>
487
488
  </span>
488
489
  <ion-button fill="clear" size="small" aria-label=${this.t.reply} @click=${() => this.emit("ok-reply", { id: m.id })}>
489
- <ion-icon slot="icon-only" name="arrow-undo-outline"></ion-icon>
490
+ <ion-icon slot="icon-only" .icon=${iconArrowUndoOutline}></ion-icon>
490
491
  </ion-button>
491
492
  <ion-button fill="clear" size="small" aria-label=${this.t.forward} @click=${() => this.emit("ok-forward", { id: m.id })}>
492
- <ion-icon slot="icon-only" name="arrow-redo-outline"></ion-icon>
493
+ <ion-icon slot="icon-only" .icon=${iconArrowRedoOutline}></ion-icon>
493
494
  </ion-button>
494
495
  <ion-button fill="clear" size="small" aria-label=${this.t.archive} @click=${() => this.emit("ok-archive", { id: m.id })}>
495
- <ion-icon slot="icon-only" name="archive-outline"></ion-icon>
496
+ <ion-icon slot="icon-only" .icon=${iconArchiveOutline}></ion-icon>
496
497
  </ion-button>
497
498
  <ion-button fill="clear" size="small" color="danger" aria-label=${this.t.delete} @click=${() => this.emit("ok-delete", { id: m.id })}>
498
- <ion-icon slot="icon-only" name="trash-outline"></ion-icon>
499
+ <ion-icon slot="icon-only" .icon=${iconTrashOutline}></ion-icon>
499
500
  </ion-button>
500
501
  </div>
501
502
  <div class="reader-body">
@@ -515,7 +516,7 @@ class OkMail extends LitElement {
515
516
  ${m.attachments.map(
516
517
  (a) => html`
517
518
  <span class="att-chip">
518
- <ion-icon name="document-attach-outline"></ion-icon>
519
+ <ion-icon .icon=${iconDocumentAttachOutline}></ion-icon>
519
520
  <span>${a.name}</span>
520
521
  ${a.size != null ? html`<span class="att-size">${this.fmtSize(a.size)}</span>` : nothing}
521
522
  </span>
package/dist/ok-menu.js CHANGED
@@ -2,6 +2,7 @@ import { LitElement, css, html, nothing } from "lit";
2
2
  import { property, state } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
4
  import { c as computeAnchor } from "./shared/anchor.js";
5
+ import { o as okIcon } from "./shared/icons.js";
5
6
  var __defProp = Object.defineProperty;
6
7
  var __decorateClass = (decorators, target, key, kind) => {
7
8
  var result = void 0;
@@ -409,7 +410,7 @@ class OkMenu extends LitElement {
409
410
  return /^\s*</.test(icon) || icon.startsWith("data:");
410
411
  }
411
412
  renderIcon(icon) {
412
- return this.isResolvedSvg(icon) ? html`<ion-icon .icon=${icon}></ion-icon>` : html`<ion-icon .name=${icon}></ion-icon>`;
413
+ return this.isResolvedSvg(icon) ? html`<ion-icon .icon=${icon}></ion-icon>` : html`<ion-icon .icon=${okIcon(icon)}></ion-icon>`;
413
414
  }
414
415
  renderEntry(entry, key) {
415
416
  if (entry.divider) return html`<li><div class="divider" role="separator"></div></li>`;
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property, state } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { o as okIcon, g as iconChevronForwardOutline, C as iconMenuOutline } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -504,10 +505,10 @@ class OkMenubar extends LitElement {
504
505
  aria-disabled=${item.disabled ? "true" : "false"}
505
506
  @click=${() => hasChildren ? this.openSub(item.id, level) : this.selectItem(item)}
506
507
  >
507
- <span class="icon">${item.icon ? html`<ion-icon .name=${item.icon}></ion-icon>` : ""}</span>
508
+ <span class="icon">${item.icon ? html`<ion-icon .icon=${okIcon(item.icon)}></ion-icon>` : ""}</span>
508
509
  <span class="label">${item.label ?? ""}</span>
509
510
  ${item.shortcut ? html`<span class="shortcut">${item.shortcut}</span>` : ""}
510
- ${hasChildren ? html`<span class="caret"><ion-icon name="chevron-forward-outline"></ion-icon></span>` : ""}
511
+ ${hasChildren ? html`<span class="caret"><ion-icon .icon=${iconChevronForwardOutline}></ion-icon></span>` : ""}
511
512
  </button>
512
513
  ${subOpen ? html`<div class="panel sub" role="menu">
513
514
  ${item.children.map((child) => this.renderItem(child, level + 1))}
@@ -551,7 +552,7 @@ class OkMenubar extends LitElement {
551
552
  aria-disabled=${item.disabled ? "true" : "false"}
552
553
  @click=${() => this.selectItem(item)}
553
554
  >
554
- <span class="icon">${item.icon ? html`<ion-icon .name=${item.icon}></ion-icon>` : ""}</span>
555
+ <span class="icon">${item.icon ? html`<ion-icon .icon=${okIcon(item.icon)}></ion-icon>` : ""}</span>
555
556
  <span class="label">${item.label ?? ""}</span>
556
557
  ${item.shortcut ? html`<span class="shortcut">${item.shortcut}</span>` : ""}
557
558
  </button>
@@ -568,7 +569,7 @@ class OkMenubar extends LitElement {
568
569
  aria-label=${this.t.menu}
569
570
  @click=${() => this.toggleMobile()}
570
571
  >
571
- <ion-icon name="menu-outline"></ion-icon>
572
+ <ion-icon .icon=${iconMenuOutline}></ion-icon>
572
573
  <span>${this.t.menu}</span>
573
574
  </button>
574
575
  ${this.mobileOpen ? html`<div class="accordion" role="menu">
@@ -582,7 +583,7 @@ class OkMenubar extends LitElement {
582
583
  @click=${() => this.toggleAccordion(menu.id)}
583
584
  >
584
585
  <span class="label">${menu.label}</span>
585
- <span class="caret"><ion-icon name="chevron-forward-outline"></ion-icon></span>
586
+ <span class="caret"><ion-icon .icon=${iconChevronForwardOutline}></ion-icon></span>
586
587
  </button>
587
588
  ${expanded ? menu.items.map((item) => this.renderAccItem(item, 0)) : ""}
588
589
  `;
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html, nothing } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { o as okIcon, M as iconNotificationsOffOutline, v as iconCloseOutline } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -434,7 +435,7 @@ class OkNotificationCenter extends LitElement {
434
435
  ${this.isResolvedSvg(icon) ? (
435
436
  // SVG resuelto: lo pinta ion-icon vía prop `icon`.
436
437
  html`<ion-icon .icon=${icon}></ion-icon>`
437
- ) : html`<ion-icon .name=${icon}></ion-icon>`}
438
+ ) : html`<ion-icon .icon=${okIcon(icon)}></ion-icon>`}
438
439
  </span>`;
439
440
  }
440
441
  // Pinta el texto principal interpretando SOLO <b>…</b> (sin HTML arbitrario, seguro para CSP).
@@ -467,7 +468,7 @@ class OkNotificationCenter extends LitElement {
467
468
  }
468
469
  renderEmpty() {
469
470
  return html`<div class="empty">
470
- <span class="ic" aria-hidden="true"><ion-icon name="notifications-off-outline"></ion-icon></span>
471
+ <span class="ic" aria-hidden="true"><ion-icon .icon=${iconNotificationsOffOutline}></ion-icon></span>
471
472
  <span class="e-title">${this.t.emptyTitle}</span>
472
473
  <span class="e-text">${this.t.emptyText}</span>
473
474
  </div>`;
@@ -493,7 +494,7 @@ class OkNotificationCenter extends LitElement {
493
494
  aria-label=${this.t.close}
494
495
  @click=${() => this.requestClose("button")}
495
496
  >
496
- <ion-icon name="close-outline"></ion-icon>
497
+ <ion-icon .icon=${iconCloseOutline}></ion-icon>
497
498
  </button>
498
499
  </header>
499
500
 
package/dist/ok-pdf.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { I as iconOpenOutline, J as iconDocumentTextOutline, D as iconDownloadOutline } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -121,7 +122,7 @@ class OkPdf extends LitElement {
121
122
  aria-label=${this.t.openAria}
122
123
  @click=${this.open}
123
124
  >
124
- <ion-icon slot="start" name="open-outline"></ion-icon>
125
+ <ion-icon slot="start" .icon=${iconOpenOutline}></ion-icon>
125
126
  ${this.t.open}
126
127
  </ion-button>
127
128
  </div>
@@ -129,10 +130,10 @@ class OkPdf extends LitElement {
129
130
  <object data=${this.src} type="application/pdf">
130
131
  <!-- Fallback: el navegador no pudo incrustar el PDF → enlace de descarga. -->
131
132
  <div class="fallback">
132
- <ion-icon name="document-text-outline"></ion-icon>
133
+ <ion-icon .icon=${iconDocumentTextOutline}></ion-icon>
133
134
  <span>${this.t.cannotDisplay}</span>
134
135
  <ion-button fill="solid" size="small" @click=${this.open}>
135
- <ion-icon slot="start" name="download-outline"></ion-icon>
136
+ <ion-icon slot="start" .icon=${iconDownloadOutline}></ion-icon>
136
137
  ${this.t.download}
137
138
  </ion-button>
138
139
  </div>
package/dist/ok-pinpad.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { x as iconBackspaceOutline, o as okIcon } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -160,7 +161,7 @@ class OkPinpad extends LitElement {
160
161
  // Botón de borrado (reutilizado en ambos layouts).
161
162
  renderBackspace() {
162
163
  return html`<ion-button fill="clear" aria-label=${this.t.backspace} @click=${() => this.backspace()}>
163
- <ion-icon slot="icon-only" name="backspace-outline"></ion-icon>
164
+ <ion-icon slot="icon-only" .icon=${iconBackspaceOutline}></ion-icon>
164
165
  </ion-button>`;
165
166
  }
166
167
  // Pinta la pantalla: dots si `masked`, dígitos si no, placeholder si vacío.
@@ -203,7 +204,7 @@ class OkPinpad extends LitElement {
203
204
  fill="clear"
204
205
  aria-label=${this.secondaryLabel ?? this.secondaryIcon}
205
206
  @click=${() => this.secondary()}
206
- ><ion-icon slot="icon-only" name=${this.secondaryIcon}></ion-icon></ion-button>` : html`<span class="spacer" aria-hidden="true"></span>`}
207
+ ><ion-icon slot="icon-only" .icon=${okIcon(this.secondaryIcon)}></ion-icon></ion-button>` : html`<span class="spacer" aria-hidden="true"></span>`}
207
208
  <ion-button fill="outline" aria-label="0" @click=${() => this.press("0")}>0</ion-button>
208
209
  ${this.renderBackspace()}
209
210
  </div>
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { q as iconRemove, K as iconAdd } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -161,7 +162,7 @@ class OkQtyStepper extends LitElement {
161
162
  ?disabled=${this.disabled || atMin}
162
163
  @click=${() => this.decrement()}
163
164
  >
164
- <ion-icon slot="icon-only" name="remove"></ion-icon>
165
+ <ion-icon slot="icon-only" .icon=${iconRemove}></ion-icon>
165
166
  </ion-button>
166
167
  <input
167
168
  class="field"
@@ -183,7 +184,7 @@ class OkQtyStepper extends LitElement {
183
184
  ?disabled=${this.disabled || atMax}
184
185
  @click=${() => this.increment()}
185
186
  >
186
- <ion-icon slot="icon-only" name="add"></ion-icon>
187
+ <ion-icon slot="icon-only" .icon=${iconAdd}></ion-icon>
187
188
  </ion-button>
188
189
  </div>`;
189
190
  }
package/dist/ok-rating.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property, state } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { o as okIcon } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -137,7 +138,7 @@ class OkRating extends LitElement {
137
138
  renderHalfStar(index) {
138
139
  const filled = this.displayValue >= index - 0.5;
139
140
  return html`<span class=${`star half-mode ${filled ? "filled" : ""}`}>
140
- <ion-icon .name=${this.iconFor(index)}></ion-icon>
141
+ <ion-icon .icon=${okIcon(this.iconFor(index))}></ion-icon>
141
142
  ${this.readonly ? "" : html`<span
142
143
  class="half-zone left"
143
144
  @mouseenter=${() => this.onEnter(index - 0.5)}
@@ -161,7 +162,7 @@ class OkRating extends LitElement {
161
162
  @mouseenter=${() => this.onEnter(index)}
162
163
  @click=${() => this.setValue(index)}
163
164
  >
164
- <ion-icon .name=${this.iconFor(index)}></ion-icon>
165
+ <ion-icon .icon=${okIcon(this.iconFor(index))}></ion-icon>
165
166
  </button>`;
166
167
  }
167
168
  render() {
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property, state } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { t as iconChevronBackOutline, g as iconChevronForwardOutline } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -462,7 +463,7 @@ class OkScheduler extends LitElement {
462
463
  aria-label=${this.t.prevDay}
463
464
  @click=${() => this.navDay(-1)}
464
465
  >
465
- <ion-icon slot="icon-only" name="chevron-back-outline"></ion-icon>
466
+ <ion-icon slot="icon-only" .icon=${iconChevronBackOutline}></ion-icon>
466
467
  </ion-button>
467
468
  <span class="title">${this.dayLabel()}</span>
468
469
  <ion-button
@@ -471,7 +472,7 @@ class OkScheduler extends LitElement {
471
472
  aria-label=${this.t.nextDay}
472
473
  @click=${() => this.navDay(1)}
473
474
  >
474
- <ion-icon slot="icon-only" name="chevron-forward-outline"></ion-icon>
475
+ <ion-icon slot="icon-only" .icon=${iconChevronForwardOutline}></ion-icon>
475
476
  </ion-button>
476
477
  </div>
477
478
  <div class="scroll">
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { o as okIcon } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -191,7 +192,7 @@ class OkSelectCard extends LitElement {
191
192
  @keydown=${this.onKeydown}
192
193
  >
193
194
  ${control}
194
- ${this.icon ? html`<span class="icon"><ion-icon name=${this.icon}></ion-icon></span>` : null}
195
+ ${this.icon ? html`<span class="icon"><ion-icon .icon=${okIcon(this.icon)}></ion-icon></span>` : null}
195
196
  <div class="body">
196
197
  ${this.label ? html`<p class="label">${this.label}</p>` : null}
197
198
  ${this.description ? html`<p class="description">${this.description}</p>` : null}
@@ -1,6 +1,7 @@
1
1
  import { LitElement, css, html } from "lit";
2
2
  import { property, query } from "lit/decorators.js";
3
3
  import { define } from "./define.js";
4
+ import { e as iconTrashOutline, D as iconDownloadOutline } from "./shared/icons.js";
4
5
  var __defProp = Object.defineProperty;
5
6
  var __decorateClass = (decorators, target, key, kind) => {
6
7
  var result = void 0;
@@ -216,7 +217,7 @@ class OkSignature extends LitElement {
216
217
  </div>
217
218
  <div class="actions">
218
219
  <ion-button fill="clear" size="small" @click=${() => this.clear()}>
219
- <ion-icon slot="start" name="trash-outline"></ion-icon>
220
+ <ion-icon slot="start" .icon=${iconTrashOutline}></ion-icon>
220
221
  ${this.t.clear}
221
222
  </ion-button>
222
223
  ${this.showExport ? html`<ion-button
@@ -224,7 +225,7 @@ class OkSignature extends LitElement {
224
225
  size="small"
225
226
  @click=${() => this.onExport()}
226
227
  >
227
- <ion-icon slot="start" name="download-outline"></ion-icon>
228
+ <ion-icon slot="start" .icon=${iconDownloadOutline}></ion-icon>
228
229
  ${this.t.export}
229
230
  </ion-button>` : ""}
230
231
  </div>