snice 1.14.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/bin/templates/base/tsconfig.json +5 -4
  2. package/components/accordion/demo.html +403 -0
  3. package/components/accordion/snice-accordion-item.css +85 -0
  4. package/components/accordion/snice-accordion-item.ts +226 -0
  5. package/components/accordion/snice-accordion.css +31 -0
  6. package/components/accordion/snice-accordion.ts +182 -0
  7. package/components/accordion/snice-accordion.types.ts +32 -0
  8. package/components/alert/demo.html +445 -0
  9. package/components/alert/snice-alert.css +195 -0
  10. package/components/alert/snice-alert.ts +141 -0
  11. package/components/alert/snice-alert.types.ts +12 -0
  12. package/components/avatar/demo.html +598 -0
  13. package/components/avatar/snice-avatar.css +131 -0
  14. package/components/avatar/snice-avatar.ts +136 -0
  15. package/components/avatar/snice-avatar.types.ts +13 -0
  16. package/components/badge/demo.html +523 -0
  17. package/components/badge/snice-badge.css +161 -0
  18. package/components/badge/snice-badge.ts +117 -0
  19. package/components/badge/snice-badge.types.ts +16 -0
  20. package/components/breadcrumbs/demo.html +404 -0
  21. package/components/breadcrumbs/snice-breadcrumbs.css +133 -0
  22. package/components/breadcrumbs/snice-breadcrumbs.ts +191 -0
  23. package/components/breadcrumbs/snice-breadcrumbs.types.ts +26 -0
  24. package/components/breadcrumbs/snice-crumb.ts +26 -0
  25. package/components/button/demo.html +42 -0
  26. package/components/button/snice-button.css +230 -0
  27. package/components/button/snice-button.ts +169 -0
  28. package/components/button/snice-button.types.ts +25 -0
  29. package/components/card/demo.html +525 -0
  30. package/components/card/snice-card.css +140 -0
  31. package/components/card/snice-card.ts +102 -0
  32. package/components/card/snice-card.types.ts +10 -0
  33. package/components/checkbox/demo.html +253 -0
  34. package/components/checkbox/snice-checkbox.css +164 -0
  35. package/components/checkbox/snice-checkbox.ts +223 -0
  36. package/components/checkbox/snice-checkbox.types.ts +22 -0
  37. package/components/chip/demo.html +383 -0
  38. package/components/chip/snice-chip.css +195 -0
  39. package/components/chip/snice-chip.ts +139 -0
  40. package/components/chip/snice-chip.types.ts +15 -0
  41. package/components/date-picker/README.md +233 -0
  42. package/components/date-picker/demo.html +191 -0
  43. package/components/date-picker/snice-date-picker.css +330 -0
  44. package/components/date-picker/snice-date-picker.ts +777 -0
  45. package/components/date-picker/snice-date-picker.types.ts +83 -0
  46. package/components/divider/demo.html +233 -0
  47. package/components/divider/snice-divider.css +155 -0
  48. package/components/divider/snice-divider.ts +69 -0
  49. package/components/divider/snice-divider.types.ts +15 -0
  50. package/components/drawer/demo.html +328 -0
  51. package/components/drawer/snice-drawer.css +476 -0
  52. package/components/drawer/snice-drawer.ts +287 -0
  53. package/components/drawer/snice-drawer.types.ts +17 -0
  54. package/components/global.d.ts +14 -0
  55. package/components/input/demo.html +303 -0
  56. package/components/input/snice-input.css +257 -0
  57. package/components/input/snice-input.ts +442 -0
  58. package/components/input/snice-input.types.ts +59 -0
  59. package/components/input/test.html +77 -0
  60. package/components/layout/README.md +260 -0
  61. package/components/layout/demo.html +538 -0
  62. package/components/layout/snice-layout-blog.css +129 -0
  63. package/components/layout/snice-layout-blog.ts +48 -0
  64. package/components/layout/snice-layout-card.css +104 -0
  65. package/components/layout/snice-layout-card.ts +35 -0
  66. package/components/layout/snice-layout-centered.css +51 -0
  67. package/components/layout/snice-layout-centered.ts +22 -0
  68. package/components/layout/snice-layout-dashboard.css +98 -0
  69. package/components/layout/snice-layout-dashboard.ts +45 -0
  70. package/components/layout/snice-layout-fullscreen.css +72 -0
  71. package/components/layout/snice-layout-fullscreen.ts +34 -0
  72. package/components/layout/snice-layout-landing.css +92 -0
  73. package/components/layout/snice-layout-landing.ts +47 -0
  74. package/components/layout/snice-layout-minimal.css +16 -0
  75. package/components/layout/snice-layout-minimal.ts +19 -0
  76. package/components/layout/snice-layout-sidebar.css +117 -0
  77. package/components/layout/snice-layout-sidebar.ts +48 -0
  78. package/components/layout/snice-layout-split.css +103 -0
  79. package/components/layout/snice-layout-split.ts +29 -0
  80. package/components/layout/snice-layout.css +72 -0
  81. package/components/layout/snice-layout.ts +35 -0
  82. package/components/layout/snice-layout.types.ts +5 -0
  83. package/components/login/demo-auth-controller.ts +185 -0
  84. package/components/login/demo.html +470 -0
  85. package/components/login/snice-login.css +204 -0
  86. package/components/login/snice-login.ts +337 -0
  87. package/components/login/snice-login.types.ts +34 -0
  88. package/components/modal/demo.html +291 -0
  89. package/components/modal/snice-modal.css +203 -0
  90. package/components/modal/snice-modal.ts +233 -0
  91. package/components/modal/snice-modal.types.ts +21 -0
  92. package/components/pagination/demo.html +395 -0
  93. package/components/pagination/snice-pagination.ts +333 -0
  94. package/components/pagination/snice-pagination.types.ts +21 -0
  95. package/components/progress/demo.html +510 -0
  96. package/components/progress/snice-progress.css +267 -0
  97. package/components/progress/snice-progress.ts +247 -0
  98. package/components/progress/snice-progress.types.ts +19 -0
  99. package/components/radio/demo.html +287 -0
  100. package/components/radio/snice-radio.css +171 -0
  101. package/components/radio/snice-radio.ts +218 -0
  102. package/components/radio/snice-radio.types.ts +21 -0
  103. package/components/select/demo.html +511 -0
  104. package/components/select/snice-option.ts +52 -0
  105. package/components/select/snice-option.types.ts +14 -0
  106. package/components/select/snice-select.css +392 -0
  107. package/components/select/snice-select.ts +796 -0
  108. package/components/select/snice-select.types.ts +55 -0
  109. package/components/skeleton/demo.html +514 -0
  110. package/components/skeleton/snice-skeleton.css +109 -0
  111. package/components/skeleton/snice-skeleton.ts +126 -0
  112. package/components/skeleton/snice-skeleton.types.ts +11 -0
  113. package/components/switch/demo.html +284 -0
  114. package/components/switch/snice-switch.css +221 -0
  115. package/components/switch/snice-switch.ts +229 -0
  116. package/components/switch/snice-switch.types.ts +23 -0
  117. package/components/symbols.ts +23 -0
  118. package/components/table/demo-table-controller.ts +100 -0
  119. package/components/table/demo.html +480 -0
  120. package/components/table/snice-cell-boolean.ts +112 -0
  121. package/components/table/snice-cell-date.ts +210 -0
  122. package/components/table/snice-cell-duration.ts +91 -0
  123. package/components/table/snice-cell-filesize.ts +90 -0
  124. package/components/table/snice-cell-number.ts +165 -0
  125. package/components/table/snice-cell-progress.ts +83 -0
  126. package/components/table/snice-cell-rating.ts +82 -0
  127. package/components/table/snice-cell-sparkline.ts +253 -0
  128. package/components/table/snice-cell-text.ts +125 -0
  129. package/components/table/snice-cell.css +296 -0
  130. package/components/table/snice-cell.ts +473 -0
  131. package/components/table/snice-column.ts +353 -0
  132. package/components/table/snice-header.css +243 -0
  133. package/components/table/snice-header.ts +261 -0
  134. package/components/table/snice-progress.ts +66 -0
  135. package/components/table/snice-rating.ts +45 -0
  136. package/components/table/snice-row.css +255 -0
  137. package/components/table/snice-row.ts +331 -0
  138. package/components/table/snice-table.css +241 -0
  139. package/components/table/snice-table.ts +737 -0
  140. package/components/table/snice-table.types.ts +158 -0
  141. package/components/tabs/demo.html +487 -0
  142. package/components/tabs/snice-tab-panel.css +264 -0
  143. package/components/tabs/snice-tab-panel.ts +47 -0
  144. package/components/tabs/snice-tab.css +96 -0
  145. package/components/tabs/snice-tab.ts +65 -0
  146. package/components/tabs/snice-tabs.css +189 -0
  147. package/components/tabs/snice-tabs.ts +332 -0
  148. package/components/tabs/snice-tabs.types.ts +28 -0
  149. package/components/theme/theme.css +234 -0
  150. package/components/toast/demo.html +329 -0
  151. package/components/toast/snice-toast-container.ts +256 -0
  152. package/components/toast/snice-toast.css +213 -0
  153. package/components/toast/snice-toast.ts +276 -0
  154. package/components/toast/snice-toast.types.ts +35 -0
  155. package/components/tooltip/demo.html +350 -0
  156. package/components/tooltip/snice-tooltip-portal.css +79 -0
  157. package/components/tooltip/snice-tooltip.css +117 -0
  158. package/components/tooltip/snice-tooltip.ts +612 -0
  159. package/components/tooltip/snice-tooltip.types.ts +32 -0
  160. package/components/transitions.ts +94 -0
  161. package/components/tsconfig.json +18 -0
  162. package/dist/index.cjs +441 -329
  163. package/dist/index.cjs.map +1 -1
  164. package/dist/index.cjs.min.map +1 -1
  165. package/dist/index.esm.js +441 -329
  166. package/dist/index.esm.js.map +1 -1
  167. package/dist/index.esm.min.js +3 -3
  168. package/dist/index.esm.min.js.map +1 -1
  169. package/dist/index.iife.js +441 -329
  170. package/dist/index.iife.js.map +1 -1
  171. package/dist/index.iife.min.js +3 -3
  172. package/dist/index.iife.min.js.map +1 -1
  173. package/dist/symbols.esm.js +1 -1
  174. package/dist/transitions.esm.js +1 -1
  175. package/dist/types/controller.d.ts +1 -1
  176. package/dist/types/element.d.ts +10 -10
  177. package/dist/types/events.d.ts +2 -2
  178. package/dist/types/index.d.ts +1 -1
  179. package/dist/types/observe.d.ts +1 -1
  180. package/dist/types/request-response.d.ts +2 -3
  181. package/dist/types/router.d.ts +1 -1
  182. package/package.json +9 -3
  183. package/dist/index.cjs.min +0 -15
  184. package/dist/symbols.cjs +0 -103
  185. package/dist/transitions.cjs +0 -219
@@ -0,0 +1,395 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Snice Pagination Demo</title>
7
+ <style>
8
+ body {
9
+ font-family: system-ui, -apple-system, sans-serif;
10
+ max-width: 1200px;
11
+ margin: 0 auto;
12
+ padding: 40px 20px;
13
+ background: #f3f4f6;
14
+ }
15
+
16
+ h1 {
17
+ color: #111827;
18
+ margin-bottom: 32px;
19
+ }
20
+
21
+ .demo-section {
22
+ background: white;
23
+ padding: 24px;
24
+ border-radius: 12px;
25
+ margin-bottom: 32px;
26
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
27
+ }
28
+
29
+ .demo-section h2 {
30
+ color: #374151;
31
+ margin-top: 0;
32
+ margin-bottom: 20px;
33
+ font-size: 20px;
34
+ }
35
+
36
+ .demo-row {
37
+ margin-bottom: 24px;
38
+ }
39
+
40
+ .demo-label {
41
+ font-size: 14px;
42
+ color: #6b7280;
43
+ margin-bottom: 8px;
44
+ }
45
+
46
+ .demo-controls {
47
+ display: flex;
48
+ gap: 12px;
49
+ margin-top: 20px;
50
+ flex-wrap: wrap;
51
+ align-items: center;
52
+ }
53
+
54
+ .demo-control {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 8px;
58
+ }
59
+
60
+ .demo-control label {
61
+ font-size: 14px;
62
+ color: #6b7280;
63
+ }
64
+
65
+ .demo-control input[type="number"] {
66
+ width: 80px;
67
+ padding: 4px 8px;
68
+ border: 1px solid #e5e7eb;
69
+ border-radius: 4px;
70
+ font-size: 14px;
71
+ }
72
+
73
+ .demo-control select {
74
+ padding: 4px 8px;
75
+ border: 1px solid #e5e7eb;
76
+ border-radius: 4px;
77
+ font-size: 14px;
78
+ background: white;
79
+ }
80
+
81
+ .demo-button {
82
+ padding: 8px 16px;
83
+ background: #3b82f6;
84
+ color: white;
85
+ border: none;
86
+ border-radius: 6px;
87
+ font-size: 14px;
88
+ cursor: pointer;
89
+ transition: background-color 0.2s;
90
+ }
91
+
92
+ .demo-button:hover {
93
+ background: #2563eb;
94
+ }
95
+
96
+ .event-log {
97
+ margin-top: 16px;
98
+ padding: 12px;
99
+ background: #f9fafb;
100
+ border: 1px solid #e5e7eb;
101
+ border-radius: 6px;
102
+ font-family: monospace;
103
+ font-size: 13px;
104
+ max-height: 200px;
105
+ overflow-y: auto;
106
+ }
107
+
108
+ .event-log-entry {
109
+ padding: 4px 0;
110
+ border-bottom: 1px solid #e5e7eb;
111
+ }
112
+
113
+ .event-log-entry:last-child {
114
+ border-bottom: none;
115
+ }
116
+
117
+ code {
118
+ background: #f3f4f6;
119
+ padding: 2px 4px;
120
+ border-radius: 3px;
121
+ font-size: 13px;
122
+ }
123
+ </style>
124
+ <script type="module">
125
+ import '../../src/index.ts';
126
+ import './snice-pagination.ts';
127
+
128
+ window.addEventListener('DOMContentLoaded', () => {
129
+ // Get pagination elements
130
+ const basicPagination = document.getElementById('basic-pagination');
131
+ const advancedPagination = document.getElementById('advanced-pagination');
132
+ const customPagination = document.getElementById('custom-pagination');
133
+
134
+ // Event logging
135
+ const eventLog = document.getElementById('event-log');
136
+ let eventCounter = 0;
137
+
138
+ function logEvent(source, detail) {
139
+ eventCounter++;
140
+ const entry = document.createElement('div');
141
+ entry.className = 'event-log-entry';
142
+ entry.innerHTML = `[${eventCounter}] <strong>${source}:</strong> Page changed to ${detail.page} (previous: ${detail.previousPage})`;
143
+ eventLog.insertBefore(entry, eventLog.firstChild);
144
+
145
+ // Keep only last 10 entries
146
+ while (eventLog.children.length > 10) {
147
+ eventLog.removeChild(eventLog.lastChild);
148
+ }
149
+ }
150
+
151
+ // Listen for pagination events
152
+ basicPagination.addEventListener('@snice/pagination-change', (e) => {
153
+ logEvent('Basic', e.detail);
154
+ });
155
+
156
+ advancedPagination.addEventListener('@snice/pagination-change', (e) => {
157
+ logEvent('Advanced', e.detail);
158
+ });
159
+
160
+ customPagination.addEventListener('@snice/pagination-change', (e) => {
161
+ logEvent('Custom', e.detail);
162
+ document.getElementById('current-page').textContent = e.detail.page;
163
+ });
164
+
165
+ // Controls for customizable pagination
166
+ document.getElementById('update-pagination').addEventListener('click', () => {
167
+ const total = parseInt(document.getElementById('total-pages').value);
168
+ const current = parseInt(document.getElementById('current-page-input').value);
169
+ const siblings = parseInt(document.getElementById('siblings').value);
170
+ const size = document.getElementById('size-select').value;
171
+ const variant = document.getElementById('variant-select').value;
172
+ const showFirst = document.getElementById('show-first').checked;
173
+ const showLast = document.getElementById('show-last').checked;
174
+ const showPrev = document.getElementById('show-prev').checked;
175
+ const showNext = document.getElementById('show-next').checked;
176
+
177
+ customPagination.total = total;
178
+ customPagination.current = current;
179
+ customPagination.siblings = siblings;
180
+ customPagination.size = size;
181
+ customPagination.variant = variant;
182
+ customPagination.showFirst = showFirst;
183
+ customPagination.showLast = showLast;
184
+ customPagination.showPrev = showPrev;
185
+ customPagination.showNext = showNext;
186
+
187
+ document.getElementById('current-page').textContent = current;
188
+ });
189
+
190
+ // API method demonstrations
191
+ document.getElementById('go-to-5').addEventListener('click', () => {
192
+ customPagination.goToPage(5);
193
+ });
194
+
195
+ document.getElementById('next-page').addEventListener('click', () => {
196
+ customPagination.nextPage();
197
+ });
198
+
199
+ document.getElementById('prev-page').addEventListener('click', () => {
200
+ customPagination.previousPage();
201
+ });
202
+
203
+ document.getElementById('first-page').addEventListener('click', () => {
204
+ customPagination.firstPage();
205
+ });
206
+
207
+ document.getElementById('last-page').addEventListener('click', () => {
208
+ customPagination.lastPage();
209
+ });
210
+ });
211
+ </script>
212
+ </head>
213
+ <body>
214
+ <h1>Snice Pagination Component Demo</h1>
215
+
216
+ <div class="demo-section">
217
+ <h2>Basic Pagination</h2>
218
+ <div class="demo-row">
219
+ <div class="demo-label">Default pagination with 10 pages</div>
220
+ <snice-pagination
221
+ id="basic-pagination"
222
+ current="1"
223
+ total="10">
224
+ </snice-pagination>
225
+ </div>
226
+ </div>
227
+
228
+ <div class="demo-section">
229
+ <h2>Advanced Examples</h2>
230
+
231
+ <div class="demo-row">
232
+ <div class="demo-label">Large dataset (100 pages, current page 50)</div>
233
+ <snice-pagination
234
+ id="advanced-pagination"
235
+ current="50"
236
+ total="100"
237
+ siblings="1">
238
+ </snice-pagination>
239
+ </div>
240
+
241
+ <div class="demo-row">
242
+ <div class="demo-label">Small size, rounded variant</div>
243
+ <snice-pagination
244
+ current="3"
245
+ total="5"
246
+ size="small"
247
+ variant="rounded">
248
+ </snice-pagination>
249
+ </div>
250
+
251
+ <div class="demo-row">
252
+ <div class="demo-label">Large size, text variant</div>
253
+ <snice-pagination
254
+ current="2"
255
+ total="7"
256
+ size="large"
257
+ variant="text">
258
+ </snice-pagination>
259
+ </div>
260
+
261
+ <div class="demo-row">
262
+ <div class="demo-label">Without first/last buttons</div>
263
+ <snice-pagination
264
+ current="4"
265
+ total="10"
266
+ show-first="false"
267
+ show-last="false">
268
+ </snice-pagination>
269
+ </div>
270
+
271
+ <div class="demo-row">
272
+ <div class="demo-label">Without prev/next buttons</div>
273
+ <snice-pagination
274
+ current="3"
275
+ total="8"
276
+ show-prev="false"
277
+ show-next="false">
278
+ </snice-pagination>
279
+ </div>
280
+
281
+ <div class="demo-row">
282
+ <div class="demo-label">More siblings (shows more pages)</div>
283
+ <snice-pagination
284
+ current="10"
285
+ total="20"
286
+ siblings="3">
287
+ </snice-pagination>
288
+ </div>
289
+ </div>
290
+
291
+ <div class="demo-section">
292
+ <h2>Customizable Pagination</h2>
293
+
294
+ <div class="demo-row">
295
+ <snice-pagination
296
+ id="custom-pagination"
297
+ current="1"
298
+ total="20"
299
+ siblings="1">
300
+ </snice-pagination>
301
+ <p style="margin-top: 12px; color: #6b7280; font-size: 14px;">
302
+ Current page: <strong id="current-page">1</strong>
303
+ </p>
304
+ </div>
305
+
306
+ <div class="demo-controls">
307
+ <div class="demo-control">
308
+ <label>Total pages:</label>
309
+ <input type="number" id="total-pages" value="20" min="1" max="100">
310
+ </div>
311
+
312
+ <div class="demo-control">
313
+ <label>Current page:</label>
314
+ <input type="number" id="current-page-input" value="1" min="1">
315
+ </div>
316
+
317
+ <div class="demo-control">
318
+ <label>Siblings:</label>
319
+ <input type="number" id="siblings" value="1" min="0" max="5">
320
+ </div>
321
+
322
+ <div class="demo-control">
323
+ <label>Size:</label>
324
+ <select id="size-select">
325
+ <option value="small">Small</option>
326
+ <option value="medium" selected>Medium</option>
327
+ <option value="large">Large</option>
328
+ </select>
329
+ </div>
330
+
331
+ <div class="demo-control">
332
+ <label>Variant:</label>
333
+ <select id="variant-select">
334
+ <option value="default" selected>Default</option>
335
+ <option value="rounded">Rounded</option>
336
+ <option value="text">Text</option>
337
+ </select>
338
+ </div>
339
+ </div>
340
+
341
+ <div class="demo-controls">
342
+ <div class="demo-control">
343
+ <label>
344
+ <input type="checkbox" id="show-first" checked> Show First
345
+ </label>
346
+ </div>
347
+
348
+ <div class="demo-control">
349
+ <label>
350
+ <input type="checkbox" id="show-last" checked> Show Last
351
+ </label>
352
+ </div>
353
+
354
+ <div class="demo-control">
355
+ <label>
356
+ <input type="checkbox" id="show-prev" checked> Show Prev
357
+ </label>
358
+ </div>
359
+
360
+ <div class="demo-control">
361
+ <label>
362
+ <input type="checkbox" id="show-next" checked> Show Next
363
+ </label>
364
+ </div>
365
+
366
+ <button id="update-pagination" class="demo-button">Update Pagination</button>
367
+ </div>
368
+ </div>
369
+
370
+ <div class="demo-section">
371
+ <h2>API Methods</h2>
372
+ <p style="color: #6b7280; font-size: 14px; margin-bottom: 16px;">
373
+ Use these buttons to test the pagination API methods on the custom pagination above.
374
+ </p>
375
+
376
+ <div class="demo-controls">
377
+ <button id="go-to-5" class="demo-button">Go to Page 5</button>
378
+ <button id="next-page" class="demo-button">Next Page</button>
379
+ <button id="prev-page" class="demo-button">Previous Page</button>
380
+ <button id="first-page" class="demo-button">First Page</button>
381
+ <button id="last-page" class="demo-button">Last Page</button>
382
+ </div>
383
+ </div>
384
+
385
+ <div class="demo-section">
386
+ <h2>Event Log</h2>
387
+ <div class="demo-label">Listen for <code>@snice/pagination-change</code> events</div>
388
+ <div id="event-log" class="event-log">
389
+ <div class="event-log-entry" style="color: #6b7280;">
390
+ Pagination events will appear here...
391
+ </div>
392
+ </div>
393
+ </div>
394
+ </body>
395
+ </html>