sp-component 0.0.2 → 0.0.3

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 (114) hide show
  1. package/dist/components/accordion/sp-accordion-item.css.js +1 -1
  2. package/dist/components/accordion/sp-accordion.css.js +1 -1
  3. package/dist/components/alert/sp-alert.css.js +1 -1
  4. package/dist/components/autocomplete/sp-autocomplete.css.js +1 -1
  5. package/dist/components/autocomplete/sp-autocomplete.template.d.ts.map +1 -1
  6. package/dist/components/autocomplete/sp-autocomplete.template.js +14 -13
  7. package/dist/components/avatar/sp-avatar.css.js +1 -1
  8. package/dist/components/badge/sp-badge.css.js +1 -1
  9. package/dist/components/badge/sp-badge.d.ts +2 -0
  10. package/dist/components/badge/sp-badge.d.ts.map +1 -1
  11. package/dist/components/badge/sp-badge.js +34 -31
  12. package/dist/components/breadcrumb/sp-breadcrumb-item.css.js +1 -1
  13. package/dist/components/breadcrumb/sp-breadcrumb.css.js +1 -1
  14. package/dist/components/button/sp-button.css.js +1 -1
  15. package/dist/components/calendar/sp-calendar-date-picker.css.js +1 -1
  16. package/dist/components/calendar/sp-calendar.css.js +1 -1
  17. package/dist/components/calendar/sp-calendar.d.ts +1 -0
  18. package/dist/components/calendar/sp-calendar.d.ts.map +1 -1
  19. package/dist/components/calendar/sp-calendar.js +29 -29
  20. package/dist/components/card/sp-card.css.js +1 -1
  21. package/dist/components/card/sp-card.template.d.ts.map +1 -1
  22. package/dist/components/card/sp-card.template.js +25 -16
  23. package/dist/components/carousel/sp-carousel-slide.css.js +2 -2
  24. package/dist/components/carousel/sp-carousel.css.js +1 -1
  25. package/dist/components/checkbox/sp-checkbox.css.js +1 -1
  26. package/dist/components/checkbox-group/sp-checkbox-group.css.js +1 -1
  27. package/dist/components/color-picker/sp-color-picker.css.js +1 -1
  28. package/dist/components/color-picker/sp-color-picker.template.d.ts.map +1 -1
  29. package/dist/components/color-picker/sp-color-picker.template.js +15 -14
  30. package/dist/components/combobox/sp-combobox.css.js +1 -1
  31. package/dist/components/combobox/sp-combobox.d.ts.map +1 -1
  32. package/dist/components/combobox/sp-combobox.js +26 -20
  33. package/dist/components/command-palette/sp-command-palette.css.js +1 -1
  34. package/dist/components/confirm-dialog/sp-confirm-dialog.css.js +1 -1
  35. package/dist/components/copy-button/sp-copy-button.css.js +1 -1
  36. package/dist/components/divider/sp-divider.css.js +1 -1
  37. package/dist/components/drawer/sp-drawer.css.js +1 -1
  38. package/dist/components/drawer/sp-drawer.d.ts +4 -0
  39. package/dist/components/drawer/sp-drawer.d.ts.map +1 -1
  40. package/dist/components/drawer/sp-drawer.js +78 -69
  41. package/dist/components/empty-state/sp-empty-state.css.js +1 -1
  42. package/dist/components/file-upload/sp-file-upload.css.js +1 -1
  43. package/dist/components/form-field/sp-form-field.css.js +1 -1
  44. package/dist/components/gallery/sp-gallery.css.js +1 -1
  45. package/dist/components/icon/sp-icon.css.js +2 -2
  46. package/dist/components/input/sp-input.css.js +1 -1
  47. package/dist/components/kbd/sp-kbd.css.js +1 -1
  48. package/dist/components/menu/sp-menu-item.css.js +1 -1
  49. package/dist/components/menu/sp-menu.css.js +1 -1
  50. package/dist/components/menu/sp-menu.d.ts +1 -0
  51. package/dist/components/menu/sp-menu.d.ts.map +1 -1
  52. package/dist/components/menu/sp-menu.js +33 -33
  53. package/dist/components/modal/sp-modal.css.js +1 -1
  54. package/dist/components/modal/sp-modal.d.ts +2 -0
  55. package/dist/components/modal/sp-modal.d.ts.map +1 -1
  56. package/dist/components/modal/sp-modal.js +60 -51
  57. package/dist/components/navbar/sp-navbar.css.js +2 -2
  58. package/dist/components/number-input/sp-number-input.css.js +1 -1
  59. package/dist/components/number-input/sp-number-input.d.ts.map +1 -1
  60. package/dist/components/number-input/sp-number-input.js +55 -52
  61. package/dist/components/otp-input/sp-otp-input.css.js +1 -1
  62. package/dist/components/pagination/sp-pagination.css.js +1 -1
  63. package/dist/components/popover/sp-popover.css.js +1 -1
  64. package/dist/components/progress-bar/sp-progress-bar.css.js +1 -1
  65. package/dist/components/radio/sp-radio-group.css.js +1 -1
  66. package/dist/components/radio/sp-radio.css.js +1 -1
  67. package/dist/components/radio/sp-radio.d.ts +1 -0
  68. package/dist/components/radio/sp-radio.d.ts.map +1 -1
  69. package/dist/components/radio/sp-radio.js +19 -16
  70. package/dist/components/rating/sp-rating.css.js +2 -2
  71. package/dist/components/scroll-area/sp-scroll-area.css.js +1 -1
  72. package/dist/components/scroll-area/sp-scroll-area.d.ts +1 -0
  73. package/dist/components/scroll-area/sp-scroll-area.d.ts.map +1 -1
  74. package/dist/components/scroll-area/sp-scroll-area.js +43 -44
  75. package/dist/components/select/sp-select.css.js +1 -1
  76. package/dist/components/sidebar/sp-sidebar.css.js +1 -1
  77. package/dist/components/skeleton/sp-skeleton.css.js +1 -1
  78. package/dist/components/slider/sp-slider.css.js +1 -1
  79. package/dist/components/spinner/sp-spinner.css.js +1 -1
  80. package/dist/components/split-panel/sp-split-panel.css.js +1 -1
  81. package/dist/components/stat/sp-stat.css.js +1 -1
  82. package/dist/components/stepper/sp-stepper.css.js +1 -1
  83. package/dist/components/switch/sp-switch.css.js +1 -1
  84. package/dist/components/table/sp-table.css.js +1 -1
  85. package/dist/components/table/sp-table.d.ts +80 -17
  86. package/dist/components/table/sp-table.d.ts.map +1 -1
  87. package/dist/components/table/sp-table.js +237 -82
  88. package/dist/components/table/sp-table.template.d.ts.map +1 -1
  89. package/dist/components/table/sp-table.template.js +337 -67
  90. package/dist/components/table/sp-table.types.d.ts +22 -0
  91. package/dist/components/table/sp-table.types.d.ts.map +1 -1
  92. package/dist/components/tabs/sp-tab.css.js +2 -2
  93. package/dist/components/tabs/sp-tabs.css.js +1 -1
  94. package/dist/components/tag/sp-tag.css.js +1 -1
  95. package/dist/components/tag-input/sp-tag-input.css.js +2 -2
  96. package/dist/components/textarea/sp-textarea.css.js +1 -1
  97. package/dist/components/time-picker/sp-time-picker.css.js +1 -1
  98. package/dist/components/timeline/sp-timeline.css.js +1 -1
  99. package/dist/components/toast/sp-toast.css.js +1 -1
  100. package/dist/components/toast/sp-toast.d.ts +1 -0
  101. package/dist/components/toast/sp-toast.d.ts.map +1 -1
  102. package/dist/components/toast/sp-toast.js +32 -33
  103. package/dist/components/toast-stack/sp-toast-stack.css.js +1 -1
  104. package/dist/components/tooltip/sp-tooltip.css.js +2 -2
  105. package/dist/components/tree/sp-tree-item.css.js +1 -1
  106. package/dist/components/tree/sp-tree.css.js +2 -2
  107. package/dist/components/visually-hidden/sp-visually-hidden.css.js +2 -2
  108. package/dist/config.d.ts +28 -0
  109. package/dist/config.d.ts.map +1 -0
  110. package/dist/config.js +44 -0
  111. package/dist/index.d.ts +2 -0
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +2 -0
  114. package/package.json +13 -9
@@ -1,103 +1,373 @@
1
1
  import { nothing as s, html as e } from "lit";
2
- import { classMap as h } from "lit/directives/class-map.js";
3
- function p() {
4
- const c = this.data.length > 0 && this.selectedRows.size === this.data.length, n = this.selectedRows.size > 0 && this.selectedRows.size < this.data.length, i = this.columns.length + (this.selectable ? 1 : 0);
2
+ import { classMap as g } from "lit/directives/class-map.js";
3
+ import { SpConfig as h } from "../../config.js";
4
+ function m() {
5
+ const c = this._visibleColumns, o = this._pagedData, $ = o.length > 0 && this.selectedRows.size === o.length, u = this.selectedRows.size > 0 && this.selectedRows.size < o.length, p = c.length + (this.selectable ? 1 : 0) + (this.actions.length ? 1 : 0), b = this._filteredData, d = this._hasActiveFilters, n = this.virtual ? this._virtualSlice : null;
5
6
  return e`
6
- <div class="sp-table-wrapper">
7
+ <!-- ── Toolbar ── -->
8
+ ${this.searchable || this.columns.length > 0 ? e`
9
+ <div class="sp-table-toolbar">
10
+ ${this.searchable ? e`
11
+ <div class="sp-table-search">
12
+ <span class="sp-table-search-icon">
13
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
14
+ <circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/>
15
+ </svg>
16
+ </span>
17
+ <input
18
+ class="sp-table-search-input"
19
+ type="search"
20
+ placeholder=${h.locale.table.searchPlaceholder}
21
+ .value=${this._globalSearch}
22
+ @input=${(t) => this._handleGlobalSearch(t.target.value)}
23
+ />
24
+ ${this._globalSearch ? e`<button class="sp-table-search-clear" @click=${this._clearFilters} title="Clear search">✕</button>` : s}
25
+ </div>
26
+ ` : s}
27
+
28
+ <div class="sp-table-toolbar-end">
29
+ ${d ? e`
30
+ <button class="sp-table-chip-clear" @click=${this._clearFilters}>
31
+ ${h.locale.table.clearFilters}
32
+ </button>
33
+ ` : s}
34
+
35
+ <!-- Column visibility picker -->
36
+ <div class="sp-table-col-picker-wrap">
37
+ <button
38
+ class="sp-table-icon-btn"
39
+ title="Show/hide columns"
40
+ @click=${() => {
41
+ this._showColPicker = !this._showColPicker;
42
+ }}
43
+ aria-expanded=${this._showColPicker}
44
+ >
45
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
46
+ <rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/>
47
+ <rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/>
48
+ </svg>
49
+ ${h.locale.table.columnsLabel}
50
+ </button>
51
+ ${this._showColPicker ? e`
52
+ <div class="sp-table-col-picker" @click=${(t) => t.stopPropagation()}>
53
+ <div class="sp-table-col-picker-title">Toggle columns</div>
54
+ ${this._orderedColumns.map((t) => e`
55
+ <label class="sp-table-col-picker-item">
56
+ <input
57
+ type="checkbox"
58
+ .checked=${!this._hiddenCols.has(t.key)}
59
+ @change=${() => this._toggleColumn(t.key)}
60
+ />
61
+ ${t.label}
62
+ </label>
63
+ `)}
64
+ </div>
65
+ ` : s}
66
+ </div>
67
+
68
+ ${b.length !== this.data.length ? e`<span class="sp-table-count">${b.length} / ${this.data.length} rows</span>` : e`<span class="sp-table-count">${this.data.length} rows</span>`}
69
+
70
+ ${this.pageSize && this.pageSizeOptions.length > 1 ? e`
71
+ <div class="sp-table-page-size">
72
+ <label class="sp-table-page-size-label">${h.locale.table.rowsLabel}</label>
73
+ <select
74
+ class="sp-table-page-size-select"
75
+ .value=${String(this.pageSize)}
76
+ @change=${(t) => this._handlePageSizeChange(Number(t.target.value))}
77
+ aria-label="Rows per page"
78
+ >
79
+ ${this.pageSizeOptions.map((t) => e`
80
+ <option value=${t} ?selected=${this.pageSize === t}>${t}</option>
81
+ `)}
82
+ </select>
83
+ </div>
84
+ ` : s}
85
+ </div>
86
+ </div>
87
+ ` : s}
88
+
89
+ <!-- ── Table ── -->
90
+ <div
91
+ class="sp-table-wrapper"
92
+ style=${this.virtual ? `max-height: ${this.maxHeight}; overflow-y: auto;` : s}
93
+ @scroll=${this.virtual ? this._onVirtualScroll : s}
94
+ @click=${() => {
95
+ this._showColPicker = !1, this._openFilterCol = null;
96
+ }}
97
+ >
7
98
  <table class="sp-table">
8
99
  ${this.caption ? e`<caption class="sp-table-caption">${this.caption}</caption>` : s}
100
+
9
101
  <thead>
102
+ <!-- Column header row -->
10
103
  <tr>
11
- ${this.selectable ? e`
12
- <th class="sp-table-th sp-table-th--checkbox" scope="col">
13
- <input
14
- type="checkbox"
15
- .checked=${c}
16
- .indeterminate=${n}
17
- @change=${(t) => this._handleSelectAll(
18
- t.target.checked
19
- )}
20
- aria-label="Select all rows"
21
- />
22
- </th>
23
- ` : s}
24
- ${this.columns.map(
25
- (t) => e`
26
- <th
27
- class=${h({
28
- "sp-table-th": !0,
29
- "sp-table-th--sortable": !!t.sortable,
30
- "sp-table-th--sorted": this.sortKey === t.key,
31
- "sp-table-th--sticky": this.stickyHeader
32
- })}
33
- scope="col"
34
- style=${t.width ? `width: ${t.width}` : s}
35
- aria-sort=${t.sortable ? this.sortKey === t.key ? this.sortDirection === "asc" ? "ascending" : this.sortDirection === "desc" ? "descending" : "none" : "none" : s}
36
- @click=${() => this._handleSort(t)}
104
+ ${this.selectable ? e`<th class="sp-table-th sp-table-th--checkbox" scope="col">
105
+ <input
106
+ type="checkbox"
107
+ .checked=${$}
108
+ .indeterminate=${u}
109
+ @change=${(t) => this._handleSelectAll(t.target.checked)}
110
+ aria-label="Select all rows"
111
+ />
112
+ </th>` : s}
113
+
114
+ ${c.map((t, l) => e`
115
+ <th
116
+ class=${g({
117
+ "sp-table-th": !0,
118
+ "sp-table-th--sortable": !!t.sortable,
119
+ "sp-table-th--sorted": this.sortKey === t.key,
120
+ "sp-table-th--sticky": this.stickyHeader,
121
+ "sp-table-th--dragging": this._dragFromIndex === l,
122
+ "sp-table-th--dragover": this._dragOverIndex === l,
123
+ "sp-table-th--reorderable": this.reorderable
124
+ })}
125
+ scope="col"
126
+ style=${t.width ? `width: ${t.width}` : s}
127
+ draggable=${this.reorderable ? "true" : "false"}
128
+ aria-sort=${t.sortable ? this.sortKey === t.key ? this.sortDirection === "asc" ? "ascending" : this.sortDirection === "desc" ? "descending" : "none" : "none" : s}
129
+ @click=${() => this._handleSort(t)}
130
+ @dragstart=${(a) => this._handleDragStart(a, l)}
131
+ @dragover=${(a) => this._handleDragOver(a, l)}
132
+ @dragleave=${this._handleDragLeave}
133
+ @drop=${(a) => this._handleDrop(a, l)}
134
+ @dragend=${this._handleDragEnd}
135
+ >
136
+ <span
137
+ class="sp-table-th-content"
138
+ style=${t.align ? `justify-content: ${t.align === "right" ? "flex-end" : t.align === "center" ? "center" : "flex-start"}` : s}
37
139
  >
38
- <span
39
- class="sp-table-th-content"
40
- style=${t.align ? `justify-content: ${t.align === "right" ? "flex-end" : t.align === "center" ? "center" : "flex-start"}` : s}
41
- >
42
- ${t.label}
43
- ${t.sortable ? e`<span class="sp-table-sort-icon">${this.sortKey === t.key ? this.sortDirection === "asc" ? "↑" : this.sortDirection === "desc" ? "↓" : "↕" : "↕"}</span>` : s}
44
- </span>
45
- </th>
46
- `
47
- )}
140
+ ${this.reorderable ? e`<span class="sp-table-drag-handle" title="Drag to reorder">⋮⋮</span>` : s}
141
+ ${t.label}
142
+ ${t.sortable ? e`<span class="sp-table-sort-icon">
143
+ ${this.sortKey === t.key ? this.sortDirection === "asc" ? "↑" : this.sortDirection === "desc" ? "↓" : "↕" : "↕"}
144
+ </span>` : s}
145
+ ${t.filterable ? e`
146
+ <button
147
+ class="sp-table-filter-icon-btn ${this._filters[t.key] ? "sp-table-filter-icon-btn--active" : ""}"
148
+ title="Filter by ${t.label}"
149
+ aria-label="Filter by ${t.label}"
150
+ @click=${(a) => {
151
+ a.stopPropagation(), this._toggleFilterCol(t.key);
152
+ }}
153
+ >
154
+ <svg width="11" height="11" viewBox="0 0 24 24" fill="currentColor" stroke="none">
155
+ <path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
156
+ </svg>
157
+ </button>
158
+ ` : s}
159
+ </span>
160
+
161
+ ${t.filterable && this._openFilterCol === t.key ? e`
162
+ <div class="sp-table-col-filter-pop" @click=${(a) => a.stopPropagation()}>
163
+ <div class="sp-table-col-filter-pop-label">${h.locale.table.filterLabel.replace("{col}", t.label)}</div>
164
+ <div class="sp-table-col-filter-pop-row">
165
+ <input
166
+ class="sp-table-col-filter-pop-input"
167
+ type="search"
168
+ placeholder="Type to filter…"
169
+ .value=${this._filters[t.key] ?? ""}
170
+ @input=${(a) => this._handleFilter(t.key, a.target.value)}
171
+ aria-label="Filter by ${t.label}"
172
+ />
173
+ ${this._filters[t.key] ? e`
174
+ <button
175
+ class="sp-table-col-filter-pop-clear"
176
+ title="Clear filter"
177
+ @click=${() => {
178
+ this._handleFilter(t.key, ""), this._openFilterCol = null;
179
+ }}
180
+ >✕</button>
181
+ ` : s}
182
+ </div>
183
+ </div>
184
+ ` : s}
185
+ </th>
186
+ `)}
187
+
188
+ ${this.actions.length ? e`<th class="sp-table-th sp-table-th--actions" scope="col">${h.locale.table.actionsLabel}</th>` : s}
48
189
  </tr>
49
190
  </thead>
191
+
50
192
  <tbody>
51
193
  ${this.loading ? e`
194
+ <tr>
195
+ <td colspan=${p} class="sp-table-empty">
196
+ <div class="sp-table-loading">
197
+ <svg class="sp-table-spin" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
198
+ <path d="M21 12a9 9 0 1 1-6.219-8.56"/>
199
+ </svg>
200
+ ${h.locale.table.loading}
201
+ </div>
202
+ </td>
203
+ </tr>
204
+ ` : o.length === 0 ? e`
52
205
  <tr>
53
- <td colspan=${i} class="sp-table-empty">
54
- <div class="sp-table-loading">Loading...</div>
206
+ <td colspan=${p} class="sp-table-empty">
207
+ <div class="sp-table-empty-inner">
208
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" style="color:var(--sp-border-strong,#9ca3af)">
209
+ <circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/>
210
+ </svg>
211
+ <span>${d ? "No results match the current filters." : this.emptyText}</span>
212
+ ${d ? e`<button class="sp-table-chip-clear" @click=${this._clearFilters}>${h.locale.table.clearFilters}</button>` : s}
213
+ </div>
55
214
  </td>
56
215
  </tr>
57
- ` : this.data.length === 0 ? e`
58
- <tr>
59
- <td colspan=${i} class="sp-table-empty">${this.emptyText}</td>
60
- </tr>
61
- ` : this.data.map(
62
- (t, a) => e`
63
- <tr
64
- class=${h({
216
+ ` : this.virtual && n ? e`
217
+ <tr style="height: ${n.topPad}px; border: none;"><td colspan="${p}" style="padding:0;border:0;"></td></tr>
218
+ ${n.rows.map((t, l) => {
219
+ const a = n.startIndex + l, i = a;
220
+ return e`
221
+ <tr class=${g({
65
222
  "sp-table-row": !0,
66
223
  "sp-table-row--striped": this.striped && a % 2 === 1,
67
224
  "sp-table-row--selected": this.selectedRows.has(a)
68
- })}
69
- >
70
- ${this.selectable ? e`
225
+ })}>
226
+ ${this.selectable ? e`
71
227
  <td class="sp-table-td sp-table-td--checkbox">
72
228
  <input
73
229
  type="checkbox"
74
230
  .checked=${this.selectedRows.has(a)}
75
- @change=${(l) => this._handleRowSelect(
76
- a,
77
- l.target.checked
78
- )}
231
+ @change=${(r) => this._handleRowSelect(a, r.target.checked)}
79
232
  aria-label="Select row ${a + 1}"
80
233
  />
81
234
  </td>
82
235
  ` : s}
83
- ${this.columns.map(
84
- (l) => e`
236
+
237
+ ${c.map((r) => e`
85
238
  <td
86
239
  class="sp-table-td"
87
- style=${l.align ? `text-align: ${l.align}` : s}
240
+ style=${r.align ? `text-align: ${r.align}` : s}
88
241
  >
89
- ${t[l.key] ?? ""}
242
+ ${r.render ? e`${r.render(t[r.key], t)}` : t[r.key] ?? ""}
90
243
  </td>
91
- `
92
- )}
93
- </tr>
94
- `
95
- )}
244
+ `)}
245
+
246
+ ${this.actions.length ? e`
247
+ <td class="sp-table-td sp-table-td--actions">
248
+ <div class="sp-table-actions">
249
+ ${this.actions.map((r) => e`
250
+ <button
251
+ class="sp-table-action-btn sp-table-action-btn--${r.variant ?? "ghost"}"
252
+ title=${r.label}
253
+ @click=${(v) => {
254
+ v.stopPropagation(), this._handleAction(r, t, i);
255
+ }}
256
+ >
257
+ ${r.icon ? e`<span>${r.icon}</span>` : s}
258
+ ${r.label}
259
+ </button>
260
+ `)}
261
+ </div>
262
+ </td>
263
+ ` : s}
264
+ </tr>
265
+ `;
266
+ })}
267
+ <tr style="height: ${n.bottomPad}px; border: none;"><td colspan="${p}" style="padding:0;border:0;"></td></tr>
268
+ ` : o.map((t, l) => {
269
+ const a = this.pageSize ? (this._page - 1) * this.pageSize + l : l;
270
+ return e`
271
+ <tr class=${g({
272
+ "sp-table-row": !0,
273
+ "sp-table-row--striped": this.striped && l % 2 === 1,
274
+ "sp-table-row--selected": this.selectedRows.has(l)
275
+ })}>
276
+ ${this.selectable ? e`
277
+ <td class="sp-table-td sp-table-td--checkbox">
278
+ <input
279
+ type="checkbox"
280
+ .checked=${this.selectedRows.has(l)}
281
+ @change=${(i) => this._handleRowSelect(l, i.target.checked)}
282
+ aria-label="Select row ${l + 1}"
283
+ />
284
+ </td>
285
+ ` : s}
286
+
287
+ ${c.map((i) => e`
288
+ <td
289
+ class="sp-table-td"
290
+ style=${i.align ? `text-align: ${i.align}` : s}
291
+ >
292
+ ${i.render ? e`${i.render(t[i.key], t)}` : t[i.key] ?? ""}
293
+ </td>
294
+ `)}
295
+
296
+ ${this.actions.length ? e`
297
+ <td class="sp-table-td sp-table-td--actions">
298
+ <div class="sp-table-actions">
299
+ ${this.actions.map((i) => e`
300
+ <button
301
+ class="sp-table-action-btn sp-table-action-btn--${i.variant ?? "ghost"}"
302
+ title=${i.label}
303
+ @click=${(r) => {
304
+ r.stopPropagation(), this._handleAction(i, t, a);
305
+ }}
306
+ >
307
+ ${i.icon ? e`<span>${i.icon}</span>` : s}
308
+ ${i.label}
309
+ </button>
310
+ `)}
311
+ </div>
312
+ </td>
313
+ ` : s}
314
+ </tr>
315
+ `;
316
+ })}
96
317
  </tbody>
97
318
  </table>
98
319
  </div>
320
+
321
+ <!-- ── Pagination footer ── -->
322
+ ${this.pageSize && this._totalPages > 1 && !this.virtual ? e`
323
+ <div class="sp-table-pagination">
324
+ <span class="sp-table-page-info">
325
+ ${(this._page - 1) * this.pageSize + 1}–${Math.min(this._page * this.pageSize, b.length)}
326
+ ${h.locale.table.ofTotal.replace("{total}", String(b.length))}
327
+ </span>
328
+ <div class="sp-table-page-btns">
329
+ <button
330
+ class="sp-table-page-btn"
331
+ ?disabled=${this._page === 1}
332
+ @click=${() => this._goToPage(1)}
333
+ title="First page"
334
+ >«</button>
335
+ <button
336
+ class="sp-table-page-btn"
337
+ ?disabled=${this._page === 1}
338
+ @click=${() => this._goToPage(this._page - 1)}
339
+ title="Previous page"
340
+ >‹</button>
341
+
342
+ ${Array.from({ length: this._totalPages }, (t, l) => l + 1).filter((t) => Math.abs(t - this._page) <= 2 || t === 1 || t === this._totalPages).reduce(
343
+ (t, l, a, i) => (a > 0 && l - i[a - 1] > 1 && t.push("..."), t.push(l), t),
344
+ []
345
+ ).map(
346
+ (t) => t === "..." ? e`<span class="sp-table-page-ellipsis">…</span>` : e`
347
+ <button
348
+ class="sp-table-page-btn ${t === this._page ? "sp-table-page-btn--active" : ""}"
349
+ @click=${() => this._goToPage(t)}
350
+ >${t}</button>
351
+ `
352
+ )}
353
+
354
+ <button
355
+ class="sp-table-page-btn"
356
+ ?disabled=${this._page === this._totalPages}
357
+ @click=${() => this._goToPage(this._page + 1)}
358
+ title="Next page"
359
+ >›</button>
360
+ <button
361
+ class="sp-table-page-btn"
362
+ ?disabled=${this._page === this._totalPages}
363
+ @click=${() => this._goToPage(this._totalPages)}
364
+ title="Last page"
365
+ >»</button>
366
+ </div>
367
+ </div>
368
+ ` : s}
99
369
  `;
100
370
  }
101
371
  export {
102
- p as tableTemplate
372
+ m as tableTemplate
103
373
  };
@@ -3,8 +3,19 @@ export interface SpTableColumn {
3
3
  key: string;
4
4
  label: string;
5
5
  sortable?: boolean;
6
+ filterable?: boolean;
7
+ hidden?: boolean;
6
8
  width?: string;
7
9
  align?: "left" | "center" | "right";
10
+ /** Custom cell renderer — receives the cell value and full row */
11
+ render?: (value: unknown, row: Record<string, unknown>) => string;
12
+ }
13
+ export interface SpTableAction {
14
+ label: string;
15
+ icon?: string;
16
+ variant?: "primary" | "secondary" | "ghost" | "destructive";
17
+ /** Called with the row data and row index */
18
+ onClick: (row: Record<string, unknown>, index: number) => void;
8
19
  }
9
20
  export interface SpTableProps {
10
21
  columns: SpTableColumn[];
@@ -20,5 +31,16 @@ export interface SpTableProps {
20
31
  stickyHeader: boolean;
21
32
  selectable: boolean;
22
33
  caption: string;
34
+ reorderable: boolean;
35
+ searchable: boolean;
36
+ pageSize: number;
37
+ pageSizeOptions: number[];
38
+ actions: SpTableAction[];
39
+ /** Enables virtual scrolling (replaces pagination) */
40
+ virtual: boolean;
41
+ /** Row height in px for virtual scroll calculations */
42
+ rowHeight: number;
43
+ /** Container height for virtual scroll */
44
+ maxHeight: string;
23
45
  }
24
46
  //# sourceMappingURL=sp-table.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sp-table.types.d.ts","sourceRoot":"","sources":["../../../src/components/table/sp-table.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,oBAAoB,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"sp-table.types.d.ts","sourceRoot":"","sources":["../../../src/components/table/sp-table.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,kEAAkE;IAClE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CACnE;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC;IAC5D,6CAA6C;IAC7C,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,oBAAoB,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -1,4 +1,4 @@
1
- const t = ":host{display:inline-block}.sp-tab-button{background:none;border:none;cursor:pointer;padding:10px 16px;font-size:14px;font-weight:500;color:var(--sp-text-muted, #6b7280);border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap;font-family:inherit}.sp-tab-button:hover:not(:disabled){color:var(--sp-text-secondary, #374151)}.sp-tab-button--active{color:var(--sp-primary, #3b82f6);border-bottom-color:var(--sp-primary, #3b82f6)}.sp-tab-button:disabled{opacity:.5;cursor:not-allowed}:host([active]) .sp-tab-button{color:var(--sp-primary, #3b82f6);border-bottom-color:var(--sp-primary, #3b82f6)}.sp-tab-button:focus-visible{outline:2px solid var(--sp-primary, #3b82f6);outline-offset:2px;border-radius:4px}.sp-tab-icon{display:inline-flex;align-items:center;margin-right:6px;font-size:16px;line-height:1}.sp-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;font-size:11px;font-weight:600;border-radius:9px;background:var(--sp-border-subtle, #e5e7eb);color:var(--sp-text-secondary, #374151);line-height:1}.sp-tab-button--active .sp-tab-badge{background:var(--sp-primary-bg-hover, #dbeafe);color:var(--sp-primary-active, #1d4ed8)}.sp-tab-close{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:6px;border-radius:3px;font-size:14px;line-height:1;color:var(--sp-text-placeholder, #9ca3af);cursor:pointer}.sp-tab-close:hover{background:var(--sp-border-subtle, #e5e7eb);color:var(--sp-text-secondary, #374151)}@media(prefers-reduced-motion:reduce){.sp-tab-button{transition:none}}";
1
+ const e = "*,*:before,*:after{box-sizing:border-box}:host{display:inline-block}.sp-tab-button{background:none;border:none;cursor:pointer;padding:10px 16px;font-size:14px;font-weight:500;color:var(--sp-text-muted, #6b7280);border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap;font-family:inherit}.sp-tab-button:hover:not(:disabled){color:var(--sp-text-secondary, #374151)}.sp-tab-button--active{color:var(--sp-primary, #3b82f6);border-bottom-color:var(--sp-primary, #3b82f6)}.sp-tab-button:disabled{opacity:.5;cursor:not-allowed}:host([active]) .sp-tab-button{color:var(--sp-primary, #3b82f6);border-bottom-color:var(--sp-primary, #3b82f6)}.sp-tab-button:focus-visible{outline:2px solid var(--sp-primary, #3b82f6);outline-offset:2px;border-radius:4px}.sp-tab-icon{display:inline-flex;align-items:center;margin-right:6px;font-size:16px;line-height:1}.sp-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;font-size:11px;font-weight:600;border-radius:9px;background:var(--sp-border-subtle, #e5e7eb);color:var(--sp-text-secondary, #374151);line-height:1}.sp-tab-button--active .sp-tab-badge{background:var(--sp-primary-bg-hover, #dbeafe);color:var(--sp-primary-active, #1d4ed8)}.sp-tab-close{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:6px;border-radius:3px;font-size:14px;line-height:1;color:var(--sp-text-placeholder, #9ca3af);cursor:pointer}.sp-tab-close:hover{background:var(--sp-border-subtle, #e5e7eb);color:var(--sp-text-secondary, #374151)}@media(prefers-reduced-motion:reduce){.sp-tab-button{transition:none}}";
2
2
  export {
3
- t as default
3
+ e as default
4
4
  };
@@ -1,4 +1,4 @@
1
- const e = ':host{display:block}.sp-tabs-nav-wrapper{position:relative;display:flex;align-items:center}.sp-tabs-nav{display:flex;border-bottom:1px solid var(--sp-border-subtle, #e5e7eb);overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}.sp-tabs-nav::-webkit-scrollbar{display:none}.sp-tabs-scroll-btn{flex-shrink:0;background:none;border:none;cursor:pointer;font-size:20px;color:var(--sp-text-muted, #6b7280);padding:0 4px;line-height:1;border-bottom:1px solid var(--sp-border-subtle, #e5e7eb);height:100%;display:flex;align-items:center}.sp-tabs-scroll-btn:hover{color:var(--sp-text-secondary, #374151);background:var(--sp-bg-muted, #f3f4f6)}.sp-tabs-scroll-btn:focus-visible{outline:2px solid var(--sp-primary, #3b82f6);outline-offset:-2px}.sp-tabs-content{padding:16px 0}:host([placement="left"]) .sp-tabs,:host([placement="right"]) .sp-tabs{display:flex;gap:0}:host([placement="left"]) .sp-tabs-nav-wrapper{flex-direction:column;border-right:1px solid var(--sp-border-subtle, #e5e7eb)}:host([placement="left"]) .sp-tabs-nav{flex-direction:column;border-bottom:none;padding-right:0}:host([placement="right"]) .sp-tabs-nav-wrapper{flex-direction:column;border-left:1px solid var(--sp-border-subtle, #e5e7eb);order:1}:host([placement="right"]) .sp-tabs-nav{flex-direction:column;border-bottom:none}:host([placement="left"]) .sp-tabs-content,:host([placement="right"]) .sp-tabs-content{flex:1;padding:0 16px}:host([placement="bottom"]) .sp-tabs{display:flex;flex-direction:column-reverse}:host([placement="bottom"]) .sp-tabs-nav{border-bottom:none;border-top:1px solid var(--sp-border-subtle, #e5e7eb)}:host([placement="bottom"]) .sp-tabs-scroll-btn{border-bottom:none;border-top:1px solid var(--sp-border-subtle, #e5e7eb)}:host([placement="left"]) sp-tab .sp-tab-button,:host([placement="right"]) sp-tab .sp-tab-button{border-bottom:none;border-right:2px solid transparent}';
1
+ const e = '*,*:before,*:after{box-sizing:border-box}:host{display:block}.sp-tabs-nav-wrapper{position:relative;display:flex;align-items:center}.sp-tabs-nav{display:flex;border-bottom:1px solid var(--sp-border-subtle, #e5e7eb);overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}.sp-tabs-nav::-webkit-scrollbar{display:none}.sp-tabs-scroll-btn{flex-shrink:0;background:none;border:none;cursor:pointer;font-size:20px;color:var(--sp-text-muted, #6b7280);padding:0 4px;line-height:1;border-bottom:1px solid var(--sp-border-subtle, #e5e7eb);height:100%;display:flex;align-items:center}.sp-tabs-scroll-btn:hover{color:var(--sp-text-secondary, #374151);background:var(--sp-bg-muted, #f3f4f6)}.sp-tabs-scroll-btn:focus-visible{outline:2px solid var(--sp-primary, #3b82f6);outline-offset:-2px}.sp-tabs-content{padding:16px 0}:host([placement="left"]) .sp-tabs,:host([placement="right"]) .sp-tabs{display:flex;gap:0}:host([placement="left"]) .sp-tabs-nav-wrapper{flex-direction:column;border-right:1px solid var(--sp-border-subtle, #e5e7eb)}:host([placement="left"]) .sp-tabs-nav{flex-direction:column;border-bottom:none;padding-right:0}:host([placement="right"]) .sp-tabs-nav-wrapper{flex-direction:column;border-left:1px solid var(--sp-border-subtle, #e5e7eb);order:1}:host([placement="right"]) .sp-tabs-nav{flex-direction:column;border-bottom:none}:host([placement="left"]) .sp-tabs-content,:host([placement="right"]) .sp-tabs-content{flex:1;padding:0 16px}:host([placement="bottom"]) .sp-tabs{display:flex;flex-direction:column-reverse}:host([placement="bottom"]) .sp-tabs-nav{border-bottom:none;border-top:1px solid var(--sp-border-subtle, #e5e7eb)}:host([placement="bottom"]) .sp-tabs-scroll-btn{border-bottom:none;border-top:1px solid var(--sp-border-subtle, #e5e7eb)}:host([placement="left"]) sp-tab .sp-tab-button,:host([placement="right"]) sp-tab .sp-tab-button{border-bottom:none;border-right:2px solid transparent}';
2
2
  export {
3
3
  e as default
4
4
  };
@@ -1,4 +1,4 @@
1
- const e = ':host{display:inline-flex}:host([disabled]){opacity:.5;pointer-events:none}.sp-tag{display:inline-flex;align-items:center;gap:4px;border-radius:4px;font-weight:500;white-space:nowrap}:host([size="sm"]) .sp-tag{padding:1px 6px;font-size:11px}:host([size="md"]) .sp-tag{padding:2px 8px;font-size:12px}:host([size="lg"]) .sp-tag{padding:4px 12px;font-size:14px}:host([variant="primary"]) .sp-tag{background:var(--sp-primary-bg-hover, #dbeafe);color:var(--sp-primary-active, #1d4ed8)}:host([variant="secondary"]) .sp-tag{background:var(--sp-bg-muted, #f3f4f6);color:var(--sp-text-secondary, #374151)}:host([variant="success"]) .sp-tag{background:#dcfce7;color:#15803d}:host([variant="warning"]) .sp-tag{background:#fef9c3;color:#a16207}:host([variant="danger"]) .sp-tag{background:#fee2e2;color:#b91c1c}:host([variant="neutral"]) .sp-tag{background:var(--sp-border-subtle, #e5e7eb);color:#4b5563}.sp-tag-remove{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:0;opacity:.7;color:inherit;line-height:1}.sp-tag-remove:hover{opacity:1}.sp-tag-remove:focus-visible{outline:2px solid var(--sp-primary, #3b82f6);outline-offset:2px}@media(prefers-reduced-motion:reduce){:host{transition:none!important}button,a,[role=button]{transition:none!important}}';
1
+ const e = '*,*:before,*:after{box-sizing:border-box}:host{display:inline-flex}:host([disabled]){opacity:.5;pointer-events:none}.sp-tag{display:inline-flex;align-items:center;gap:4px;border-radius:4px;font-weight:500;white-space:nowrap}:host([size="sm"]) .sp-tag{padding:1px 6px;font-size:11px}:host([size="md"]) .sp-tag{padding:2px 8px;font-size:12px}:host([size="lg"]) .sp-tag{padding:4px 12px;font-size:14px}:host([variant="primary"]) .sp-tag{background:var(--sp-primary-bg-hover, #dbeafe);color:var(--sp-primary-active, #1d4ed8)}:host([variant="secondary"]) .sp-tag{background:var(--sp-bg-muted, #f3f4f6);color:var(--sp-text-secondary, #374151)}:host([variant="success"]) .sp-tag{background:#dcfce7;color:#15803d}:host([variant="warning"]) .sp-tag{background:#fef9c3;color:#a16207}:host([variant="danger"]) .sp-tag{background:#fee2e2;color:#b91c1c}:host([variant="neutral"]) .sp-tag{background:var(--sp-border-subtle, #e5e7eb);color:#4b5563}.sp-tag-remove{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:0;opacity:.7;color:inherit;line-height:1}.sp-tag-remove:hover{opacity:1}.sp-tag-remove:focus-visible{outline:2px solid var(--sp-primary, #3b82f6);outline-offset:2px}@media(prefers-reduced-motion:reduce){:host{transition:none!important}button,a,[role=button]{transition:none!important}}';
2
2
  export {
3
3
  e as default
4
4
  };
@@ -1,4 +1,4 @@
1
- const p = ":host{display:block}.sp-tag-input{display:flex;flex-direction:column;gap:4px;font-family:inherit}.sp-tag-input-label{display:block;font-size:14px;font-weight:500;color:var(--sp-text-secondary, #374151);margin-bottom:4px}.sp-tag-input-field{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 10px;border:1px solid var(--sp-border, #d1d5db);border-radius:6px;background:var(--sp-bg, #ffffff);cursor:text;transition:border-color .2s,box-shadow .2s;min-height:40px;box-sizing:border-box}.sp-tag-input--focused .sp-tag-input-field,.sp-tag-input-field:focus-within{border-color:var(--sp-primary, #3b82f6);box-shadow:0 0 0 3px var(--sp-primary-focus, rgba(59, 130, 246, .15));outline:none}.sp-tag-input--error .sp-tag-input-field{border-color:var(--sp-error, #FF4D4F);box-shadow:0 0 0 3px var(--sp-error-focus, rgba(255, 77, 79, .15))}.sp-tag-input--disabled .sp-tag-input-field{background:var(--sp-bg-subtle, #f9fafb);cursor:not-allowed;opacity:.6}.sp-tag-input--sm .sp-tag-input-field{padding:4px 8px;min-height:32px;font-size:12px}.sp-tag-input--md .sp-tag-input-field{padding:6px 10px;min-height:40px;font-size:14px}.sp-tag-input--lg .sp-tag-input-field{padding:8px 12px;min-height:48px;font-size:16px}.sp-tag-input-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--sp-primary-bg, #eff6ff);border:1px solid var(--sp-primary-bg-hover, #bfdbfe);border-radius:999px;font-size:13px;color:var(--sp-primary-active, #1d4ed8);animation:sp-chip-enter .15s ease;flex-shrink:0}@keyframes sp-chip-enter{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.sp-tag-input-chip-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-tag-input-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--sp-primary-active, #1d4ed8);cursor:pointer;font-size:12px;line-height:1;transition:background .15s;flex-shrink:0}.sp-tag-input-chip-remove:hover{background:var(--sp-primary-bg-hover, #bfdbfe)}.sp-tag-input-input{flex:1;min-width:80px;border:none;outline:none;background:transparent;font-family:inherit;font-size:inherit;color:var(--sp-text, #111827);padding:2px 0}.sp-tag-input-input::placeholder{color:var(--sp-text-placeholder, #9ca3af)}.sp-tag-input-input:disabled{cursor:not-allowed}.sp-tag-input-hint{font-size:12px;color:var(--sp-text-muted, #6b7280);margin-top:2px}.sp-tag-input-error{font-size:12px;color:var(--sp-error, #FF4D4F);margin-top:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}";
1
+ const i = "*,*:before,*:after{box-sizing:border-box}:host{display:block}.sp-tag-input{display:flex;flex-direction:column;gap:4px;font-family:inherit}.sp-tag-input-label{display:block;font-size:14px;font-weight:500;color:var(--sp-text-secondary, #374151);margin-bottom:4px}.sp-tag-input-field{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 10px;border:1px solid var(--sp-border, #d1d5db);border-radius:6px;background:var(--sp-bg, #ffffff);cursor:text;transition:border-color .2s,box-shadow .2s;min-height:40px;box-sizing:border-box}.sp-tag-input--focused .sp-tag-input-field,.sp-tag-input-field:focus-within{border-color:var(--sp-primary, #3b82f6);box-shadow:0 0 0 3px var(--sp-primary-focus, rgba(59, 130, 246, .15));outline:none}.sp-tag-input--error .sp-tag-input-field{border-color:var(--sp-error, #FF4D4F);box-shadow:0 0 0 3px var(--sp-error-focus, rgba(255, 77, 79, .15))}.sp-tag-input--disabled .sp-tag-input-field{background:var(--sp-bg-subtle, #f9fafb);cursor:not-allowed;opacity:.6}.sp-tag-input--sm .sp-tag-input-field{padding:4px 8px;min-height:32px;font-size:12px}.sp-tag-input--md .sp-tag-input-field{padding:6px 10px;min-height:40px;font-size:14px}.sp-tag-input--lg .sp-tag-input-field{padding:8px 12px;min-height:48px;font-size:16px}.sp-tag-input-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--sp-primary-bg, #eff6ff);border:1px solid var(--sp-primary-bg-hover, #bfdbfe);border-radius:999px;font-size:13px;color:var(--sp-primary-active, #1d4ed8);animation:sp-chip-enter .15s ease;flex-shrink:0}@keyframes sp-chip-enter{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.sp-tag-input-chip-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-tag-input-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--sp-primary-active, #1d4ed8);cursor:pointer;font-size:12px;line-height:1;transition:background .15s;flex-shrink:0}.sp-tag-input-chip-remove:hover{background:var(--sp-primary-bg-hover, #bfdbfe)}.sp-tag-input-input{flex:1;min-width:80px;border:none;outline:none;background:transparent;font-family:inherit;font-size:inherit;color:var(--sp-text, #111827);padding:2px 0}.sp-tag-input-input::placeholder{color:var(--sp-text-placeholder, #9ca3af)}.sp-tag-input-input:disabled{cursor:not-allowed}.sp-tag-input-hint{font-size:12px;color:var(--sp-text-muted, #6b7280);margin-top:2px}.sp-tag-input-error{font-size:12px;color:var(--sp-error, #FF4D4F);margin-top:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}";
2
2
  export {
3
- p as default
3
+ i as default
4
4
  };
@@ -1,4 +1,4 @@
1
- const e = ':host{display:block;font-family:inherit}.sp-textarea-label{display:block;font-size:14px;font-weight:500;color:var(--sp-text-secondary, #374151);margin-bottom:4px}.sp-required{color:var(--sp-error, #FF4D4F)}textarea{width:100%;padding:8px 12px;border:1px solid var(--sp-border, #d1d5db);border-radius:4px;font-family:inherit;font-size:14px;color:var(--sp-text, #111827);background:var(--sp-bg, white);outline:none;box-sizing:border-box;transition:border-color .2s;resize:vertical;min-height:80px}textarea:focus-visible{border-color:var(--sp-primary, #3b82f6);outline:2px solid var(--sp-primary-focus, rgba(59, 130, 246, .2));outline-offset:-1px}textarea.sp-textarea--error{border-color:var(--sp-error, #FF4D4F)}textarea.sp-textarea--error:focus-visible{border-color:var(--sp-error, #FF4D4F);outline-color:var(--sp-error-focus, rgba(255, 77, 79, .2))}:host([resize="none"]) textarea{resize:none}:host([resize="horizontal"]) textarea{resize:horizontal}:host([resize="both"]) textarea{resize:both}:host([disabled]) textarea{opacity:.5;cursor:not-allowed;background:var(--sp-bg-subtle, #f9fafb);resize:none}:host([readonly]) textarea{background:var(--sp-bg-subtle, #f9fafb)}.sp-textarea-footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.sp-textarea-error{font-size:12px;color:var(--sp-error, #FF4D4F)}.sp-textarea-hint{font-size:12px;color:var(--sp-text-muted, #6b7280)}.sp-textarea-count{font-size:12px;color:var(--sp-text-placeholder, #9ca3af);margin-left:auto}textarea.sp-textarea--auto-resize{resize:none;overflow:hidden}@media(max-width:479px){:host{width:100%}.sp-textarea-wrapper{width:100%}textarea{width:100%;box-sizing:border-box}}@media(prefers-reduced-motion:reduce){textarea{transition:none}}';
1
+ const e = '*,*:before,*:after{box-sizing:border-box}:host{display:block;font-family:inherit}.sp-textarea-label{display:block;font-size:14px;font-weight:500;color:var(--sp-text-secondary, #374151);margin-bottom:4px}.sp-required{color:var(--sp-error, #FF4D4F)}textarea{width:100%;padding:8px 12px;border:1px solid var(--sp-border, #d1d5db);border-radius:4px;font-family:inherit;font-size:14px;color:var(--sp-text, #111827);background:var(--sp-bg, white);outline:none;box-sizing:border-box;transition:border-color .2s;resize:vertical;min-height:80px}textarea:focus-visible{border-color:var(--sp-primary, #3b82f6);outline:2px solid var(--sp-primary-focus, rgba(59, 130, 246, .2));outline-offset:-1px}textarea.sp-textarea--error{border-color:var(--sp-error, #FF4D4F)}textarea.sp-textarea--error:focus-visible{border-color:var(--sp-error, #FF4D4F);outline-color:var(--sp-error-focus, rgba(255, 77, 79, .2))}:host([resize="none"]) textarea{resize:none}:host([resize="horizontal"]) textarea{resize:horizontal}:host([resize="both"]) textarea{resize:both}:host([disabled]) textarea{opacity:.5;cursor:not-allowed;background:var(--sp-bg-subtle, #f9fafb);resize:none}:host([readonly]) textarea{background:var(--sp-bg-subtle, #f9fafb)}.sp-textarea-footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.sp-textarea-error{font-size:12px;color:var(--sp-error, #FF4D4F)}.sp-textarea-hint{font-size:12px;color:var(--sp-text-muted, #6b7280)}.sp-textarea-count{font-size:12px;color:var(--sp-text-placeholder, #9ca3af);margin-left:auto}textarea.sp-textarea--auto-resize{resize:none;overflow:hidden}@media(max-width:479px){:host{width:100%}.sp-textarea-wrapper{width:100%}textarea{width:100%;box-sizing:border-box}}@media(prefers-reduced-motion:reduce){textarea{transition:none}}';
2
2
  export {
3
3
  e as default
4
4
  };
@@ -1,4 +1,4 @@
1
- const e = ':host{display:block;font-family:inherit;position:relative}.sp-time-picker-label{display:block;font-size:14px;font-weight:500;color:var(--sp-text-secondary, #374151);margin-bottom:4px}.sp-required{color:var(--sp-error, #FF4D4F)}.sp-time-picker-field{display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--sp-border, #d1d5db);border-radius:6px;background:var(--sp-bg, white);cursor:pointer;transition:border-color .2s,box-shadow .2s;min-width:160px}.sp-time-picker-field:hover:not(.sp-time-picker-field--disabled){border-color:var(--sp-border-strong, #9ca3af)}.sp-time-picker-field--open{border-color:var(--sp-primary, #3b82f6);box-shadow:0 0 0 2px var(--sp-primary-focus, rgba(59, 130, 246, .2))}.sp-time-picker-field--error{border-color:var(--sp-error, #FF4D4F)}.sp-time-picker-field--disabled{opacity:.5;cursor:not-allowed;background:var(--sp-bg-subtle, #f9fafb)}.sp-time-picker-icon{color:var(--sp-text-placeholder, #9ca3af);flex-shrink:0}.sp-time-picker-input{flex:1;border:none;outline:none;background:transparent;font-size:14px;font-family:inherit;color:var(--sp-text, #111827);padding:8px 0;cursor:pointer;min-width:0}.sp-time-picker-input::placeholder{color:var(--sp-text-placeholder, #9ca3af)}.sp-time-picker-input:disabled{cursor:not-allowed}.sp-time-picker-clear{border:none;background:none;cursor:pointer;color:var(--sp-text-placeholder, #9ca3af);padding:0;font-size:18px;line-height:1;display:flex;align-items:center}.sp-time-picker-clear:hover{color:var(--sp-text-secondary, #374151)}.sp-time-picker-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:1000;width:220px;background:var(--sp-bg, white);border:1px solid var(--sp-border-subtle, #e5e7eb);border-radius:10px;box-shadow:0 10px 25px #0000001f,0 4px 8px #0000000f;overflow:hidden}.sp-time-picker-columns{display:flex;align-items:center;justify-content:center;gap:4px;padding:16px 16px 8px}.sp-time-picker-col{display:flex;flex-direction:column;align-items:center;gap:4px}.sp-time-picker-sep{font-size:20px;font-weight:600;color:var(--sp-text-secondary, #374151);margin-bottom:2px}.sp-time-picker-arrow{border:none;background:none;cursor:pointer;color:var(--sp-text-muted, #6b7280);font-size:10px;padding:4px 8px;border-radius:4px;line-height:1;transition:background .15s,color .15s}.sp-time-picker-arrow:hover{background:var(--sp-bg-muted, #f3f4f6);color:var(--sp-text, #111827)}.sp-time-picker-value{font-size:20px;font-weight:600;font-family:monospace;color:var(--sp-text, #111827);min-width:2ch;text-align:center}.sp-time-picker-col--period .sp-time-picker-value{font-size:16px;font-family:inherit}.sp-time-picker-presets{max-height:160px;overflow-y:auto;border-top:1px solid var(--sp-bg-muted, #f3f4f6);padding:4px 0;scrollbar-width:thin;scrollbar-color:var(--sp-border, #d1d5db) transparent}.sp-time-picker-option{display:block;width:100%;padding:6px 16px;border:none;background:none;cursor:pointer;text-align:left;font-size:13px;font-family:monospace;color:var(--sp-text-secondary, #374151);transition:background .1s}.sp-time-picker-option:hover{background:var(--sp-bg-muted, #f3f4f6)}.sp-time-picker-option--selected{background:var(--sp-primary-bg, #eff6ff);color:var(--sp-primary-hover, #2563eb);font-weight:600}.sp-time-picker-actions{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-top:1px solid var(--sp-bg-muted, #f3f4f6);gap:8px}.sp-time-picker-now,.sp-time-picker-ok{border:none;cursor:pointer;border-radius:6px;padding:6px 14px;font-size:13px;font-family:inherit;font-weight:500;transition:background .15s}.sp-time-picker-now{background:var(--sp-bg-muted, #f3f4f6);color:var(--sp-text-secondary, #374151)}.sp-time-picker-now:hover{background:var(--sp-border-subtle, #e5e7eb)}.sp-time-picker-ok{background:var(--sp-primary, #3b82f6);color:var(--sp-bg, white)}.sp-time-picker-ok:hover{background:var(--sp-primary-hover, #2563eb)}.sp-time-picker-error{display:block;font-size:12px;color:var(--sp-error, #FF4D4F);margin-top:4px}.sp-time-picker-hint{display:block;font-size:12px;color:var(--sp-text-muted, #6b7280);margin-top:4px}:host([size="sm"]) .sp-time-picker-field{padding:0 8px}:host([size="sm"]) .sp-time-picker-input{padding:5px 0;font-size:12px}:host([size="lg"]) .sp-time-picker-field{padding:0 16px}:host([size="lg"]) .sp-time-picker-input{padding:12px 0;font-size:16px}:host([disabled]) .sp-time-picker-field{opacity:.5;cursor:not-allowed;background:var(--sp-bg-subtle, #f9fafb)}@media(prefers-reduced-motion:reduce){.sp-time-picker-field,.sp-time-picker-arrow,.sp-time-picker-option,.sp-time-picker-now,.sp-time-picker-ok{transition:none}}';
1
+ const e = '*,*:before,*:after{box-sizing:border-box}:host{display:block;font-family:inherit;position:relative}.sp-time-picker-label{display:block;font-size:14px;font-weight:500;color:var(--sp-text-secondary, #374151);margin-bottom:4px}.sp-required{color:var(--sp-error, #FF4D4F)}.sp-time-picker-field{display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--sp-border, #d1d5db);border-radius:6px;background:var(--sp-bg, white);cursor:pointer;transition:border-color .2s,box-shadow .2s;min-width:160px}.sp-time-picker-field:hover:not(.sp-time-picker-field--disabled){border-color:var(--sp-border-strong, #9ca3af)}.sp-time-picker-field--open{border-color:var(--sp-primary, #3b82f6);box-shadow:0 0 0 2px var(--sp-primary-focus, rgba(59, 130, 246, .2))}.sp-time-picker-field--error{border-color:var(--sp-error, #FF4D4F)}.sp-time-picker-field--disabled{opacity:.5;cursor:not-allowed;background:var(--sp-bg-subtle, #f9fafb)}.sp-time-picker-icon{color:var(--sp-text-placeholder, #9ca3af);flex-shrink:0}.sp-time-picker-input{flex:1;border:none;outline:none;background:transparent;font-size:14px;font-family:inherit;color:var(--sp-text, #111827);padding:8px 0;cursor:pointer;min-width:0}.sp-time-picker-input::placeholder{color:var(--sp-text-placeholder, #9ca3af)}.sp-time-picker-input:disabled{cursor:not-allowed}.sp-time-picker-clear{border:none;background:none;cursor:pointer;color:var(--sp-text-placeholder, #9ca3af);padding:0;font-size:18px;line-height:1;display:flex;align-items:center}.sp-time-picker-clear:hover{color:var(--sp-text-secondary, #374151)}.sp-time-picker-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:1000;width:220px;background:var(--sp-bg, white);border:1px solid var(--sp-border-subtle, #e5e7eb);border-radius:10px;box-shadow:0 10px 25px #0000001f,0 4px 8px #0000000f;overflow:hidden}.sp-time-picker-columns{display:flex;align-items:center;justify-content:center;gap:4px;padding:16px 16px 8px}.sp-time-picker-col{display:flex;flex-direction:column;align-items:center;gap:4px}.sp-time-picker-sep{font-size:20px;font-weight:600;color:var(--sp-text-secondary, #374151);margin-bottom:2px}.sp-time-picker-arrow{border:none;background:none;cursor:pointer;color:var(--sp-text-muted, #6b7280);font-size:10px;padding:4px 8px;border-radius:4px;line-height:1;transition:background .15s,color .15s}.sp-time-picker-arrow:hover{background:var(--sp-bg-muted, #f3f4f6);color:var(--sp-text, #111827)}.sp-time-picker-value{font-size:20px;font-weight:600;font-family:monospace;color:var(--sp-text, #111827);min-width:2ch;text-align:center}.sp-time-picker-col--period .sp-time-picker-value{font-size:16px;font-family:inherit}.sp-time-picker-presets{max-height:160px;overflow-y:auto;border-top:1px solid var(--sp-bg-muted, #f3f4f6);padding:4px 0;scrollbar-width:thin;scrollbar-color:var(--sp-border, #d1d5db) transparent}.sp-time-picker-option{display:block;width:100%;padding:6px 16px;border:none;background:none;cursor:pointer;text-align:left;font-size:13px;font-family:monospace;color:var(--sp-text-secondary, #374151);transition:background .1s}.sp-time-picker-option:hover{background:var(--sp-bg-muted, #f3f4f6)}.sp-time-picker-option--selected{background:var(--sp-primary-bg, #eff6ff);color:var(--sp-primary-hover, #2563eb);font-weight:600}.sp-time-picker-actions{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-top:1px solid var(--sp-bg-muted, #f3f4f6);gap:8px}.sp-time-picker-now,.sp-time-picker-ok{border:none;cursor:pointer;border-radius:6px;padding:6px 14px;font-size:13px;font-family:inherit;font-weight:500;transition:background .15s}.sp-time-picker-now{background:var(--sp-bg-muted, #f3f4f6);color:var(--sp-text-secondary, #374151)}.sp-time-picker-now:hover{background:var(--sp-border-subtle, #e5e7eb)}.sp-time-picker-ok{background:var(--sp-primary, #3b82f6);color:var(--sp-bg, white)}.sp-time-picker-ok:hover{background:var(--sp-primary-hover, #2563eb)}.sp-time-picker-error{display:block;font-size:12px;color:var(--sp-error, #FF4D4F);margin-top:4px}.sp-time-picker-hint{display:block;font-size:12px;color:var(--sp-text-muted, #6b7280);margin-top:4px}:host([size="sm"]) .sp-time-picker-field{padding:0 8px}:host([size="sm"]) .sp-time-picker-input{padding:5px 0;font-size:12px}:host([size="lg"]) .sp-time-picker-field{padding:0 16px}:host([size="lg"]) .sp-time-picker-input{padding:12px 0;font-size:16px}:host([disabled]) .sp-time-picker-field{opacity:.5;cursor:not-allowed;background:var(--sp-bg-subtle, #f9fafb)}@media(prefers-reduced-motion:reduce){.sp-time-picker-field,.sp-time-picker-arrow,.sp-time-picker-option,.sp-time-picker-now,.sp-time-picker-ok{transition:none}}';
2
2
  export {
3
3
  e as default
4
4
  };
@@ -1,4 +1,4 @@
1
- const e = ":host{display:block}.sp-timeline{display:flex;flex-direction:column}.sp-timeline-item{display:flex;gap:16px}.sp-timeline-indicator{display:flex;flex-direction:column;align-items:center;flex-shrink:0}.sp-timeline-dot{width:12px;height:12px;border-radius:50%;background:var(--sp-border, #d1d5db);border:2px solid var(--sp-bg, white);box-shadow:0 0 0 2px var(--sp-border, #d1d5db);flex-shrink:0;margin-top:3px}.sp-timeline-item--default .sp-timeline-dot{background:var(--sp-text-muted, #6b7280);box-shadow:0 0 0 2px var(--sp-text-muted, #6b7280)}.sp-timeline-item--success .sp-timeline-dot{background:#22c55e;box-shadow:0 0 0 2px #22c55e}.sp-timeline-item--warning .sp-timeline-dot{background:var(--sp-warning, #FAAD14);box-shadow:0 0 0 2px var(--sp-warning, #FAAD14)}.sp-timeline-item--error .sp-timeline-dot{background:var(--sp-error, #FF4D4F);box-shadow:0 0 0 2px var(--sp-error, #FF4D4F)}.sp-timeline-item--info .sp-timeline-dot{background:var(--sp-primary, #3b82f6);box-shadow:0 0 0 2px var(--sp-primary, #3b82f6)}.sp-timeline-line{width:2px;flex:1;background:var(--sp-timeline-line-color, var(--sp-border-subtle, #e5e7eb));min-height:24px;margin-top:4px}.sp-timeline-content{padding-bottom:24px;flex:1}.sp-timeline-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.sp-timeline-label{font-size:14px;font-weight:600;color:var(--sp-text, #111827)}.sp-timeline-time{font-size:12px;color:var(--sp-text-placeholder, #9ca3af);flex-shrink:0}.sp-timeline-description{font-size:14px;color:var(--sp-text-muted, #6b7280);margin:4px 0 0;line-height:1.5}.sp-timeline-dot--icon{display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1}.sp-timeline--alternate .sp-timeline-item{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:flex-start}.sp-timeline--alternate .sp-timeline-content{padding-bottom:24px}.sp-timeline--alternate .sp-timeline-content--alt{text-align:right}.sp-timeline--alternate .sp-timeline-indicator{grid-column:2}@media(max-width:640px){.sp-timeline--alternate .sp-timeline-item{display:flex;grid-template-columns:unset}.sp-timeline--alternate .sp-timeline-content--alt{display:none}.sp-timeline--alternate .sp-timeline-item--right .sp-timeline-content{display:block}.sp-timeline--alternate .sp-timeline-item--right .sp-timeline-indicator{grid-column:unset}}@media(prefers-reduced-motion:reduce){:host{transition:none!important}}";
1
+ const e = "*,*:before,*:after{box-sizing:border-box}:host{display:block}.sp-timeline{display:flex;flex-direction:column}.sp-timeline-item{display:flex;gap:16px}.sp-timeline-indicator{display:flex;flex-direction:column;align-items:center;flex-shrink:0}.sp-timeline-dot{width:12px;height:12px;border-radius:50%;background:var(--sp-border, #d1d5db);border:2px solid var(--sp-bg, white);box-shadow:0 0 0 2px var(--sp-border, #d1d5db);flex-shrink:0;margin-top:3px}.sp-timeline-item--default .sp-timeline-dot{background:var(--sp-text-muted, #6b7280);box-shadow:0 0 0 2px var(--sp-text-muted, #6b7280)}.sp-timeline-item--success .sp-timeline-dot{background:#22c55e;box-shadow:0 0 0 2px #22c55e}.sp-timeline-item--warning .sp-timeline-dot{background:var(--sp-warning, #FAAD14);box-shadow:0 0 0 2px var(--sp-warning, #FAAD14)}.sp-timeline-item--error .sp-timeline-dot{background:var(--sp-error, #FF4D4F);box-shadow:0 0 0 2px var(--sp-error, #FF4D4F)}.sp-timeline-item--info .sp-timeline-dot{background:var(--sp-primary, #3b82f6);box-shadow:0 0 0 2px var(--sp-primary, #3b82f6)}.sp-timeline-line{width:2px;flex:1;background:var(--sp-timeline-line-color, var(--sp-border-subtle, #e5e7eb));min-height:24px;margin-top:4px}.sp-timeline-content{padding-bottom:24px;flex:1}.sp-timeline-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.sp-timeline-label{font-size:14px;font-weight:600;color:var(--sp-text, #111827)}.sp-timeline-time{font-size:12px;color:var(--sp-text-placeholder, #9ca3af);flex-shrink:0}.sp-timeline-description{font-size:14px;color:var(--sp-text-muted, #6b7280);margin:4px 0 0;line-height:1.5}.sp-timeline-dot--icon{display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1}.sp-timeline--alternate .sp-timeline-item{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:flex-start}.sp-timeline--alternate .sp-timeline-content{padding-bottom:24px}.sp-timeline--alternate .sp-timeline-content--alt{text-align:right}.sp-timeline--alternate .sp-timeline-indicator{grid-column:2}@media(max-width:640px){.sp-timeline--alternate .sp-timeline-item{display:flex;grid-template-columns:unset}.sp-timeline--alternate .sp-timeline-content--alt{display:none}.sp-timeline--alternate .sp-timeline-item--right .sp-timeline-content{display:block}.sp-timeline--alternate .sp-timeline-item--right .sp-timeline-indicator{grid-column:unset}}@media(prefers-reduced-motion:reduce){:host{transition:none!important}}";
2
2
  export {
3
3
  e as default
4
4
  };
@@ -1,4 +1,4 @@
1
- const o = ':host{display:block;pointer-events:none}:host([open]){pointer-events:auto}.sp-toast{position:relative;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:6px;box-shadow:0 4px 12px #00000026;font-size:14px;max-width:360px;opacity:0;transform:translateY(-8px);transition:opacity .25s,transform .25s;pointer-events:none;overflow:hidden}.sp-toast--open{opacity:1;transform:translateY(0);pointer-events:auto}.sp-toast-icon{flex-shrink:0;font-size:16px}.sp-toast-message{flex:1;line-height:1.4}.sp-toast-close{background:none;border:none;cursor:pointer;opacity:.6;font-size:14px;padding:0;flex-shrink:0}.sp-toast-close:hover{opacity:1}.sp-toast-action{background:none;border:none;cursor:pointer;font-size:13px;font-weight:600;padding:2px 6px;border-radius:4px;flex-shrink:0;text-decoration:none}:host([variant="neutral"]) .sp-toast{background:var(--sp-text-secondary, #1f2937);color:var(--sp-bg, white)}:host([variant="neutral"]) .sp-toast-action{color:#93c5fd}:host([variant="info"]) .sp-toast{background:var(--sp-primary-bg, #eff6ff);border:1px solid #bfdbfe;color:#1e40af}:host([variant="info"]) .sp-toast-action{color:var(--sp-primary-active, #1d4ed8)}:host([variant="success"]) .sp-toast{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}:host([variant="success"]) .sp-toast-action{color:#15803d}:host([variant="warning"]) .sp-toast{background:var(--sp-warning-bg, #FFFBE6);border:1px solid #fde68a;color:#92400e}:host([variant="warning"]) .sp-toast-action{color:#b45309}:host([variant="error"]) .sp-toast{background:var(--sp-error-bg, #FFF2F0);border:1px solid #fecaca;color:#991b1b}:host([variant="error"]) .sp-toast-action{color:#b91c1c}.sp-toast-close:focus-visible,.sp-toast-action:focus-visible{outline:2px solid var(--sp-primary, #3b82f6);outline-offset:2px}@keyframes sp-toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.sp-toast-progress{position:absolute;bottom:0;left:0;right:0;height:3px;background:currentColor;opacity:.35;transform-origin:left;animation:sp-toast-progress linear forwards}@media(max-width:480px){:host{width:100%}.sp-toast{max-width:100%;width:100%;box-sizing:border-box}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}:host{animation:none;transition:none}}';
1
+ const o = '*,*:before,*:after{box-sizing:border-box}:host{display:block;pointer-events:none}:host([open]){pointer-events:auto}.sp-toast{position:relative;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:6px;box-shadow:0 4px 12px #00000026;font-size:14px;max-width:360px;opacity:0;transform:translateY(-8px);transition:opacity .25s,transform .25s;pointer-events:none;overflow:hidden}.sp-toast--open{opacity:1;transform:translateY(0);pointer-events:auto}.sp-toast-icon{flex-shrink:0;font-size:16px}.sp-toast-message{flex:1;line-height:1.4}.sp-toast-close{background:none;border:none;cursor:pointer;opacity:.6;font-size:14px;padding:0;flex-shrink:0}.sp-toast-close:hover{opacity:1}.sp-toast-action{background:none;border:none;cursor:pointer;font-size:13px;font-weight:600;padding:2px 6px;border-radius:4px;flex-shrink:0;text-decoration:none}:host([variant="neutral"]) .sp-toast{background:var(--sp-text-secondary, #1f2937);color:var(--sp-bg, white)}:host([variant="neutral"]) .sp-toast-action{color:#93c5fd}:host([variant="info"]) .sp-toast{background:var(--sp-primary-bg, #eff6ff);border:1px solid #bfdbfe;color:#1e40af}:host([variant="info"]) .sp-toast-action{color:var(--sp-primary-active, #1d4ed8)}:host([variant="success"]) .sp-toast{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}:host([variant="success"]) .sp-toast-action{color:#15803d}:host([variant="warning"]) .sp-toast{background:var(--sp-warning-bg, #FFFBE6);border:1px solid #fde68a;color:#92400e}:host([variant="warning"]) .sp-toast-action{color:#b45309}:host([variant="error"]) .sp-toast{background:var(--sp-error-bg, #FFF2F0);border:1px solid #fecaca;color:#991b1b}:host([variant="error"]) .sp-toast-action{color:#b91c1c}.sp-toast-close:focus-visible,.sp-toast-action:focus-visible{outline:2px solid var(--sp-primary, #3b82f6);outline-offset:2px}@keyframes sp-toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.sp-toast-progress{position:absolute;bottom:0;left:0;right:0;height:3px;background:currentColor;opacity:.35;transform-origin:left;animation:sp-toast-progress linear forwards}@media(max-width:480px){:host{width:100%}.sp-toast{max-width:100%;width:100%;box-sizing:border-box}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}:host{animation:none;transition:none}}';
2
2
  export {
3
3
  o as default
4
4
  };
@@ -34,6 +34,7 @@ export declare class SpToastComponent extends LitElement {
34
34
  actionHref: string;
35
35
  pauseOnHover: boolean;
36
36
  private _timer;
37
+ private _afterHideTimer;
37
38
  private _pausedAt;
38
39
  private _remainingTime;
39
40
  private _startTime;