snice 1.13.2 → 1.13.4

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 (295) hide show
  1. package/bin/templates/base/README.md +1 -1
  2. package/dist/components/accordion/snice-accordion-item.d.ts +25 -0
  3. package/dist/components/accordion/snice-accordion-item.js +260 -0
  4. package/dist/components/accordion/snice-accordion-item.js.map +1 -0
  5. package/dist/components/accordion/snice-accordion.d.ts +28 -0
  6. package/dist/components/accordion/snice-accordion.js +221 -0
  7. package/dist/components/accordion/snice-accordion.js.map +1 -0
  8. package/dist/components/accordion/snice-accordion.types.d.ts +29 -0
  9. package/dist/components/accordion/snice-accordion.types.js +2 -0
  10. package/dist/components/accordion/snice-accordion.types.js.map +1 -0
  11. package/dist/components/alert/snice-alert.d.ts +26 -0
  12. package/dist/components/alert/snice-alert.js +191 -0
  13. package/dist/components/alert/snice-alert.js.map +1 -0
  14. package/dist/components/alert/snice-alert.types.d.ts +11 -0
  15. package/dist/components/alert/snice-alert.types.js +2 -0
  16. package/dist/components/alert/snice-alert.types.js.map +1 -0
  17. package/dist/components/avatar/snice-avatar.d.ts +24 -0
  18. package/dist/components/avatar/snice-avatar.js +177 -0
  19. package/dist/components/avatar/snice-avatar.js.map +1 -0
  20. package/dist/components/avatar/snice-avatar.types.d.ts +12 -0
  21. package/dist/components/avatar/snice-avatar.types.js +2 -0
  22. package/dist/components/avatar/snice-avatar.types.js.map +1 -0
  23. package/dist/components/badge/snice-badge.d.ts +25 -0
  24. package/dist/components/badge/snice-badge.js +157 -0
  25. package/dist/components/badge/snice-badge.js.map +1 -0
  26. package/dist/components/badge/snice-badge.types.d.ts +15 -0
  27. package/dist/components/badge/snice-badge.types.js +2 -0
  28. package/dist/components/badge/snice-badge.types.js.map +1 -0
  29. package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +27 -0
  30. package/dist/components/breadcrumbs/snice-breadcrumbs.js +212 -0
  31. package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -0
  32. package/dist/components/breadcrumbs/snice-breadcrumbs.types.d.ts +23 -0
  33. package/dist/components/breadcrumbs/snice-breadcrumbs.types.js +2 -0
  34. package/dist/components/breadcrumbs/snice-breadcrumbs.types.js.map +1 -0
  35. package/dist/components/breadcrumbs/snice-crumb.d.ts +9 -0
  36. package/dist/components/breadcrumbs/snice-crumb.js +50 -0
  37. package/dist/components/breadcrumbs/snice-crumb.js.map +1 -0
  38. package/dist/components/button/snice-button.d.ts +32 -0
  39. package/dist/components/button/snice-button.js +212 -0
  40. package/dist/components/button/snice-button.js.map +1 -0
  41. package/dist/components/button/snice-button.types.d.ts +23 -0
  42. package/dist/components/button/snice-button.types.js +2 -0
  43. package/dist/components/button/snice-button.types.js.map +1 -0
  44. package/dist/components/card/snice-card.d.ts +19 -0
  45. package/dist/components/card/snice-card.js +132 -0
  46. package/dist/components/card/snice-card.js.map +1 -0
  47. package/dist/components/card/snice-card.types.d.ts +9 -0
  48. package/dist/components/card/snice-card.types.js +2 -0
  49. package/dist/components/card/snice-card.types.js.map +1 -0
  50. package/dist/components/checkbox/snice-checkbox.d.ts +34 -0
  51. package/dist/components/checkbox/snice-checkbox.js +289 -0
  52. package/dist/components/checkbox/snice-checkbox.js.map +1 -0
  53. package/dist/components/checkbox/snice-checkbox.types.d.ts +20 -0
  54. package/dist/components/checkbox/snice-checkbox.types.js +2 -0
  55. package/dist/components/checkbox/snice-checkbox.types.js.map +1 -0
  56. package/dist/components/chip/snice-chip.d.ts +28 -0
  57. package/dist/components/chip/snice-chip.js +203 -0
  58. package/dist/components/chip/snice-chip.js.map +1 -0
  59. package/dist/components/chip/snice-chip.types.d.ts +14 -0
  60. package/dist/components/chip/snice-chip.types.js +2 -0
  61. package/dist/components/chip/snice-chip.types.js.map +1 -0
  62. package/dist/components/date-picker/snice-date-picker.d.ts +82 -0
  63. package/dist/components/date-picker/snice-date-picker.js +880 -0
  64. package/dist/components/date-picker/snice-date-picker.js.map +1 -0
  65. package/dist/components/date-picker/snice-date-picker.types.d.ts +71 -0
  66. package/dist/components/date-picker/snice-date-picker.types.js +2 -0
  67. package/dist/components/date-picker/snice-date-picker.types.js.map +1 -0
  68. package/dist/components/divider/snice-divider.d.ts +17 -0
  69. package/dist/components/divider/snice-divider.js +111 -0
  70. package/dist/components/divider/snice-divider.js.map +1 -0
  71. package/dist/components/divider/snice-divider.types.d.ts +14 -0
  72. package/dist/components/divider/snice-divider.types.js +2 -0
  73. package/dist/components/divider/snice-divider.types.js.map +1 -0
  74. package/dist/components/drawer/snice-drawer.d.ts +37 -0
  75. package/dist/components/drawer/snice-drawer.js +335 -0
  76. package/dist/components/drawer/snice-drawer.js.map +1 -0
  77. package/dist/components/drawer/snice-drawer.types.d.ts +16 -0
  78. package/dist/components/drawer/snice-drawer.types.js +2 -0
  79. package/dist/components/drawer/snice-drawer.types.js.map +1 -0
  80. package/dist/components/input/snice-input.d.ts +65 -0
  81. package/dist/components/input/snice-input.js +603 -0
  82. package/dist/components/input/snice-input.js.map +1 -0
  83. package/dist/components/input/snice-input.types.d.ts +53 -0
  84. package/dist/components/input/snice-input.types.js +2 -0
  85. package/dist/components/input/snice-input.types.js.map +1 -0
  86. package/dist/components/layout/snice-layout-blog.d.ts +4 -0
  87. package/dist/components/layout/snice-layout-blog.js +56 -0
  88. package/dist/components/layout/snice-layout-blog.js.map +1 -0
  89. package/dist/components/layout/snice-layout-card.d.ts +6 -0
  90. package/dist/components/layout/snice-layout-card.js +53 -0
  91. package/dist/components/layout/snice-layout-card.js.map +1 -0
  92. package/dist/components/layout/snice-layout-centered.d.ts +5 -0
  93. package/dist/components/layout/snice-layout-centered.js +38 -0
  94. package/dist/components/layout/snice-layout-centered.js.map +1 -0
  95. package/dist/components/layout/snice-layout-dashboard.d.ts +4 -0
  96. package/dist/components/layout/snice-layout-dashboard.js +53 -0
  97. package/dist/components/layout/snice-layout-dashboard.js.map +1 -0
  98. package/dist/components/layout/snice-layout-fullscreen.d.ts +5 -0
  99. package/dist/components/layout/snice-layout-fullscreen.js +50 -0
  100. package/dist/components/layout/snice-layout-fullscreen.js.map +1 -0
  101. package/dist/components/layout/snice-layout-landing.d.ts +4 -0
  102. package/dist/components/layout/snice-layout-landing.js +55 -0
  103. package/dist/components/layout/snice-layout-landing.js.map +1 -0
  104. package/dist/components/layout/snice-layout-minimal.d.ts +4 -0
  105. package/dist/components/layout/snice-layout-minimal.js +27 -0
  106. package/dist/components/layout/snice-layout-minimal.js.map +1 -0
  107. package/dist/components/layout/snice-layout-sidebar.d.ts +5 -0
  108. package/dist/components/layout/snice-layout-sidebar.js +64 -0
  109. package/dist/components/layout/snice-layout-sidebar.js.map +1 -0
  110. package/dist/components/layout/snice-layout-split.d.ts +6 -0
  111. package/dist/components/layout/snice-layout-split.js +47 -0
  112. package/dist/components/layout/snice-layout-split.js.map +1 -0
  113. package/dist/components/layout/snice-layout.d.ts +4 -0
  114. package/dist/components/layout/snice-layout.js +43 -0
  115. package/dist/components/layout/snice-layout.js.map +1 -0
  116. package/dist/components/layout/snice-layout.types.d.ts +3 -0
  117. package/dist/components/layout/snice-layout.types.js +2 -0
  118. package/dist/components/layout/snice-layout.types.js.map +1 -0
  119. package/dist/components/login/snice-login.d.ts +45 -0
  120. package/dist/components/login/snice-login.js +385 -0
  121. package/dist/components/login/snice-login.js.map +1 -0
  122. package/dist/components/login/snice-login.types.d.ts +31 -0
  123. package/dist/components/login/snice-login.types.js +2 -0
  124. package/dist/components/login/snice-login.types.js.map +1 -0
  125. package/dist/components/modal/snice-modal.d.ts +32 -0
  126. package/dist/components/modal/snice-modal.js +288 -0
  127. package/dist/components/modal/snice-modal.js.map +1 -0
  128. package/dist/components/modal/snice-modal.types.d.ts +18 -0
  129. package/dist/components/modal/snice-modal.types.js +2 -0
  130. package/dist/components/modal/snice-modal.types.js.map +1 -0
  131. package/dist/components/pagination/snice-pagination.d.ts +26 -0
  132. package/dist/components/pagination/snice-pagination.js +373 -0
  133. package/dist/components/pagination/snice-pagination.js.map +1 -0
  134. package/dist/components/pagination/snice-pagination.types.d.ts +18 -0
  135. package/dist/components/pagination/snice-pagination.types.js +2 -0
  136. package/dist/components/pagination/snice-pagination.types.js.map +1 -0
  137. package/dist/components/progress/snice-progress.d.ts +35 -0
  138. package/dist/components/progress/snice-progress.js +295 -0
  139. package/dist/components/progress/snice-progress.js.map +1 -0
  140. package/dist/components/progress/snice-progress.types.d.ts +18 -0
  141. package/dist/components/progress/snice-progress.types.js +2 -0
  142. package/dist/components/progress/snice-progress.types.js.map +1 -0
  143. package/dist/components/radio/snice-radio.d.ts +33 -0
  144. package/dist/components/radio/snice-radio.js +286 -0
  145. package/dist/components/radio/snice-radio.js.map +1 -0
  146. package/dist/components/radio/snice-radio.types.d.ts +19 -0
  147. package/dist/components/radio/snice-radio.types.js +2 -0
  148. package/dist/components/radio/snice-radio.types.js.map +1 -0
  149. package/dist/components/select/snice-option.d.ts +17 -0
  150. package/dist/components/select/snice-option.js +77 -0
  151. package/dist/components/select/snice-option.js.map +1 -0
  152. package/dist/components/select/snice-option.types.d.ts +14 -0
  153. package/dist/components/select/snice-option.types.js +2 -0
  154. package/dist/components/select/snice-option.types.js.map +1 -0
  155. package/dist/components/select/snice-select.d.ts +89 -0
  156. package/dist/components/select/snice-select.js +900 -0
  157. package/dist/components/select/snice-select.js.map +1 -0
  158. package/dist/components/select/snice-select.types.d.ts +49 -0
  159. package/dist/components/select/snice-select.types.js +2 -0
  160. package/dist/components/select/snice-select.types.js.map +1 -0
  161. package/dist/components/skeleton/snice-skeleton.d.ts +16 -0
  162. package/dist/components/skeleton/snice-skeleton.js +159 -0
  163. package/dist/components/skeleton/snice-skeleton.js.map +1 -0
  164. package/dist/components/skeleton/snice-skeleton.types.d.ts +10 -0
  165. package/dist/components/skeleton/snice-skeleton.types.js +2 -0
  166. package/dist/components/skeleton/snice-skeleton.types.js.map +1 -0
  167. package/dist/components/switch/snice-switch.d.ts +38 -0
  168. package/dist/components/switch/snice-switch.js +309 -0
  169. package/dist/components/switch/snice-switch.js.map +1 -0
  170. package/dist/components/switch/snice-switch.types.d.ts +21 -0
  171. package/dist/components/switch/snice-switch.types.js +2 -0
  172. package/dist/components/switch/snice-switch.types.js.map +1 -0
  173. package/dist/components/symbols.d.ts +1 -0
  174. package/dist/components/symbols.js +20 -0
  175. package/dist/components/symbols.js.map +1 -0
  176. package/dist/components/table/snice-cell-boolean.d.ts +21 -0
  177. package/dist/components/table/snice-cell-boolean.js +152 -0
  178. package/dist/components/table/snice-cell-boolean.js.map +1 -0
  179. package/dist/components/table/snice-cell-date.d.ts +24 -0
  180. package/dist/components/table/snice-cell-date.js +240 -0
  181. package/dist/components/table/snice-cell-date.js.map +1 -0
  182. package/dist/components/table/snice-cell-duration.d.ts +16 -0
  183. package/dist/components/table/snice-cell-duration.js +123 -0
  184. package/dist/components/table/snice-cell-duration.js.map +1 -0
  185. package/dist/components/table/snice-cell-filesize.d.ts +16 -0
  186. package/dist/components/table/snice-cell-filesize.js +119 -0
  187. package/dist/components/table/snice-cell-filesize.js.map +1 -0
  188. package/dist/components/table/snice-cell-number.d.ts +23 -0
  189. package/dist/components/table/snice-cell-number.js +202 -0
  190. package/dist/components/table/snice-cell-number.js.map +1 -0
  191. package/dist/components/table/snice-cell-progress.d.ts +17 -0
  192. package/dist/components/table/snice-cell-progress.js +114 -0
  193. package/dist/components/table/snice-cell-progress.js.map +1 -0
  194. package/dist/components/table/snice-cell-rating.d.ts +17 -0
  195. package/dist/components/table/snice-cell-rating.js +113 -0
  196. package/dist/components/table/snice-cell-rating.js.map +1 -0
  197. package/dist/components/table/snice-cell-sparkline.d.ts +29 -0
  198. package/dist/components/table/snice-cell-sparkline.js +290 -0
  199. package/dist/components/table/snice-cell-sparkline.js.map +1 -0
  200. package/dist/components/table/snice-cell-text.d.ts +19 -0
  201. package/dist/components/table/snice-cell-text.js +153 -0
  202. package/dist/components/table/snice-cell-text.js.map +1 -0
  203. package/dist/components/table/snice-cell.d.ts +32 -0
  204. package/dist/components/table/snice-cell.js +451 -0
  205. package/dist/components/table/snice-cell.js.map +1 -0
  206. package/dist/components/table/snice-column.d.ts +62 -0
  207. package/dist/components/table/snice-column.js +440 -0
  208. package/dist/components/table/snice-column.js.map +1 -0
  209. package/dist/components/table/snice-header.d.ts +33 -0
  210. package/dist/components/table/snice-header.js +303 -0
  211. package/dist/components/table/snice-header.js.map +1 -0
  212. package/dist/components/table/snice-progress.d.ts +10 -0
  213. package/dist/components/table/snice-progress.js +91 -0
  214. package/dist/components/table/snice-progress.js.map +1 -0
  215. package/dist/components/table/snice-rating.d.ts +9 -0
  216. package/dist/components/table/snice-rating.js +68 -0
  217. package/dist/components/table/snice-rating.js.map +1 -0
  218. package/dist/components/table/snice-row.d.ts +43 -0
  219. package/dist/components/table/snice-row.js +365 -0
  220. package/dist/components/table/snice-row.js.map +1 -0
  221. package/dist/components/table/snice-table.d.ts +69 -0
  222. package/dist/components/table/snice-table.js +814 -0
  223. package/dist/components/table/snice-table.js.map +1 -0
  224. package/dist/components/table/snice-table.types.d.ts +137 -0
  225. package/dist/components/table/snice-table.types.js +2 -0
  226. package/dist/components/table/snice-table.types.js.map +1 -0
  227. package/dist/components/tabs/snice-tab-panel.d.ts +12 -0
  228. package/dist/components/tabs/snice-tab-panel.js +78 -0
  229. package/dist/components/tabs/snice-tab-panel.js.map +1 -0
  230. package/dist/components/tabs/snice-tab.d.ts +13 -0
  231. package/dist/components/tabs/snice-tab.js +90 -0
  232. package/dist/components/tabs/snice-tab.js.map +1 -0
  233. package/dist/components/tabs/snice-tabs.d.ts +34 -0
  234. package/dist/components/tabs/snice-tabs.js +367 -0
  235. package/dist/components/tabs/snice-tabs.js.map +1 -0
  236. package/dist/components/tabs/snice-tabs.types.d.ts +23 -0
  237. package/dist/components/tabs/snice-tabs.types.js +2 -0
  238. package/dist/components/tabs/snice-tabs.types.js.map +1 -0
  239. package/dist/components/toast/snice-toast-container.d.ts +25 -0
  240. package/dist/components/toast/snice-toast-container.js +251 -0
  241. package/dist/components/toast/snice-toast-container.js.map +1 -0
  242. package/dist/components/toast/snice-toast.d.ts +23 -0
  243. package/dist/components/toast/snice-toast.js +316 -0
  244. package/dist/components/toast/snice-toast.js.map +1 -0
  245. package/dist/components/toast/snice-toast.types.d.ts +30 -0
  246. package/dist/components/toast/snice-toast.types.js +2 -0
  247. package/dist/components/toast/snice-toast.types.js.map +1 -0
  248. package/dist/components/tooltip/snice-tooltip.d.ts +50 -0
  249. package/dist/components/tooltip/snice-tooltip.js +656 -0
  250. package/dist/components/tooltip/snice-tooltip.js.map +1 -0
  251. package/dist/components/tooltip/snice-tooltip.types.d.ts +18 -0
  252. package/dist/components/tooltip/snice-tooltip.types.js +2 -0
  253. package/dist/components/tooltip/snice-tooltip.types.js.map +1 -0
  254. package/dist/components/transitions.d.ts +11 -0
  255. package/dist/components/transitions.js +69 -0
  256. package/dist/components/transitions.js.map +1 -0
  257. package/dist/src/controller.d.ts +61 -0
  258. package/dist/src/controller.js +297 -0
  259. package/dist/src/controller.js.map +1 -0
  260. package/dist/src/element.d.ts +77 -0
  261. package/dist/src/element.js +805 -0
  262. package/dist/src/element.js.map +1 -0
  263. package/dist/src/events.d.ts +37 -0
  264. package/dist/src/events.js +289 -0
  265. package/dist/src/events.js.map +1 -0
  266. package/dist/src/global.d.ts +7 -0
  267. package/dist/src/global.js +23 -0
  268. package/dist/src/global.js.map +1 -0
  269. package/{src/index.ts → dist/src/index.d.ts} +1 -1
  270. package/dist/src/index.js +8 -0
  271. package/dist/src/index.js.map +1 -0
  272. package/dist/src/observe.d.ts +26 -0
  273. package/dist/src/observe.js +329 -0
  274. package/dist/src/observe.js.map +1 -0
  275. package/dist/src/request-response.d.ts +46 -0
  276. package/dist/src/request-response.js +267 -0
  277. package/dist/src/request-response.js.map +1 -0
  278. package/dist/src/router.d.ts +87 -0
  279. package/dist/src/router.js +375 -0
  280. package/dist/src/router.js.map +1 -0
  281. package/dist/src/symbols.d.ts +29 -0
  282. package/{src/symbols.ts → dist/src/symbols.js} +2 -12
  283. package/dist/src/symbols.js.map +1 -0
  284. package/dist/src/transitions.d.ts +50 -0
  285. package/dist/src/transitions.js +199 -0
  286. package/dist/src/transitions.js.map +1 -0
  287. package/package.json +6 -8
  288. package/src/controller.ts +0 -347
  289. package/src/element.ts +0 -897
  290. package/src/events.ts +0 -349
  291. package/src/global.ts +0 -31
  292. package/src/observe.ts +0 -414
  293. package/src/request-response.ts +0 -336
  294. package/src/router.ts +0 -552
  295. package/src/transitions.ts +0 -264
@@ -0,0 +1,27 @@
1
+ import type { BreadcrumbItem, BreadcrumbSeparator, BreadcrumbSize, SniceBreadcrumbsElement } from './snice-breadcrumbs.types';
2
+ export declare class SniceBreadcrumbs extends HTMLElement implements SniceBreadcrumbsElement {
3
+ items: BreadcrumbItem[];
4
+ separator: BreadcrumbSeparator;
5
+ size: BreadcrumbSize;
6
+ maxItems: number;
7
+ breadcrumbElement?: HTMLElement;
8
+ private collapsed;
9
+ private slotItems;
10
+ html(): string;
11
+ css(): string;
12
+ private getAllItems;
13
+ private getVisibleItems;
14
+ handleEllipsisClick(): void;
15
+ handleLinkClick(event: MouseEvent): {
16
+ item: BreadcrumbItem;
17
+ index: number;
18
+ href: string;
19
+ label: string;
20
+ };
21
+ private handleSlotChange;
22
+ init(): void;
23
+ updateBreadcrumb(): void;
24
+ setItems(items: BreadcrumbItem[]): void;
25
+ private renderIcon;
26
+ private render;
27
+ }
@@ -0,0 +1,212 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { element, property, watch, query, dispatch, on, ready } from '../../src/index';
11
+ import css from './snice-breadcrumbs.css?inline';
12
+ let SniceBreadcrumbs = class SniceBreadcrumbs extends HTMLElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.items = [];
16
+ this.separator = '/';
17
+ this.size = 'medium';
18
+ this.maxItems = 0;
19
+ this.collapsed = true;
20
+ this.slotItems = [];
21
+ }
22
+ html() {
23
+ const allItems = this.getAllItems();
24
+ const visibleItems = this.getVisibleItems(allItems);
25
+ const hasCollapsed = this.maxItems > 0 && allItems.length > this.maxItems && this.collapsed;
26
+ return /*html*/ `
27
+ <slot style="display: none"></slot>
28
+ <nav aria-label="Breadcrumb">
29
+ <ol class="breadcrumb ${hasCollapsed ? 'breadcrumb--collapsed' : ''}">
30
+ ${visibleItems.map((item, index) => {
31
+ const isLast = index === visibleItems.length - 1;
32
+ const isActive = item.active || isLast;
33
+ const isHidden = hasCollapsed && index > 0 && index < visibleItems.length - 2;
34
+ return /*html*/ `
35
+ <li class="breadcrumb-item ${isActive ? 'breadcrumb-item--active' : ''} ${isHidden ? 'breadcrumb-item--hidden' : ''}">
36
+ ${item.href && !isActive ? /*html*/ `
37
+ <a href="${item.href}"
38
+ class="breadcrumb-link"
39
+ aria-current="${isActive ? 'page' : ''}"
40
+ tabindex="0">
41
+ ${this.renderIcon(item)}
42
+ ${item.label}
43
+ </a>
44
+ ` : /*html*/ `
45
+ <span class="breadcrumb-text"
46
+ aria-current="${isActive ? 'page' : ''}">
47
+ ${this.renderIcon(item)}
48
+ ${item.label}
49
+ </span>
50
+ `}
51
+ ${!isLast ? /*html*/ `
52
+ <span class="breadcrumb-separator" aria-hidden="true">
53
+ ${this.separator}
54
+ </span>
55
+ ` : ''}
56
+ </li>
57
+ ${hasCollapsed && index === 0 && allItems.length > this.maxItems ? /*html*/ `
58
+ <li class="breadcrumb-item">
59
+ <button class="breadcrumb-ellipsis"
60
+ aria-label="Show all breadcrumbs"
61
+ tabindex="0">
62
+ •••
63
+ </button>
64
+ <span class="breadcrumb-separator" aria-hidden="true">
65
+ ${this.separator}
66
+ </span>
67
+ </li>
68
+ ` : ''}
69
+ `;
70
+ }).join('')}
71
+ </ol>
72
+ </nav>
73
+ `;
74
+ }
75
+ css() {
76
+ return css;
77
+ }
78
+ getAllItems() {
79
+ // Prefer slot items if available, otherwise use items property
80
+ return this.slotItems.length > 0 ? this.slotItems : this.items;
81
+ }
82
+ getVisibleItems(allItems) {
83
+ if (this.maxItems <= 0 || allItems.length <= this.maxItems || !this.collapsed) {
84
+ return allItems;
85
+ }
86
+ // Show first item and last (maxItems - 1) items
87
+ const firstItem = allItems[0];
88
+ const lastItems = allItems.slice(-(this.maxItems - 1));
89
+ return [firstItem, ...lastItems];
90
+ }
91
+ handleEllipsisClick() {
92
+ this.collapsed = false;
93
+ this.render();
94
+ }
95
+ handleLinkClick(event) {
96
+ const target = event.target;
97
+ const label = target.textContent?.trim() || '';
98
+ const href = target.getAttribute('href') || '';
99
+ // Find the item index
100
+ const allItems = this.getAllItems();
101
+ const index = allItems.findIndex(item => item.label === label);
102
+ return {
103
+ item: allItems[index],
104
+ index,
105
+ href,
106
+ label
107
+ };
108
+ }
109
+ handleSlotChange() {
110
+ const slot = this.shadowRoot?.querySelector('slot');
111
+ if (!slot)
112
+ return;
113
+ const crumbs = slot.assignedElements().filter(el => el.tagName.toLowerCase() === 'snice-crumb');
114
+ this.slotItems = crumbs.map(crumb => ({
115
+ label: crumb.label || crumb.textContent?.trim() || '',
116
+ href: crumb.href || undefined,
117
+ icon: crumb.icon || undefined,
118
+ iconImage: crumb.iconImage || undefined,
119
+ active: crumb.active || false
120
+ }));
121
+ this.render();
122
+ }
123
+ init() {
124
+ // Setup slot change handling
125
+ const slot = this.shadowRoot?.querySelector('slot');
126
+ if (slot) {
127
+ slot.addEventListener('slotchange', () => this.handleSlotChange());
128
+ // Initial check for slotted content
129
+ this.handleSlotChange();
130
+ }
131
+ }
132
+ updateBreadcrumb() {
133
+ this.collapsed = true;
134
+ // Only render if not using slot items, otherwise slot change will handle it
135
+ if (!this.slotItems || this.slotItems.length === 0) {
136
+ this.render();
137
+ }
138
+ }
139
+ setItems(items) {
140
+ this.items = items;
141
+ }
142
+ renderIcon(item) {
143
+ return /*html*/ `
144
+ <img class="breadcrumb-icon-image" src="${item.iconImage || ''}" alt="" ${item.iconImage ? '' : 'hidden'}>
145
+ <span class="breadcrumb-icon" ${item.icon ? '' : 'hidden'}>${item.icon || ''}</span>
146
+ `;
147
+ }
148
+ render() {
149
+ const shadow = this.shadowRoot;
150
+ if (shadow) {
151
+ shadow.innerHTML = '';
152
+ if (this.css) {
153
+ const style = document.createElement('style');
154
+ style.textContent = this.css();
155
+ shadow.appendChild(style);
156
+ }
157
+ const template = document.createElement('template');
158
+ template.innerHTML = this.html();
159
+ shadow.appendChild(template.content.cloneNode(true));
160
+ }
161
+ }
162
+ };
163
+ __decorate([
164
+ property({ type: Array }),
165
+ __metadata("design:type", Array)
166
+ ], SniceBreadcrumbs.prototype, "items", void 0);
167
+ __decorate([
168
+ property({ reflect: true }),
169
+ __metadata("design:type", String)
170
+ ], SniceBreadcrumbs.prototype, "separator", void 0);
171
+ __decorate([
172
+ property({ reflect: true }),
173
+ __metadata("design:type", String)
174
+ ], SniceBreadcrumbs.prototype, "size", void 0);
175
+ __decorate([
176
+ property({ type: Number, reflect: true }),
177
+ __metadata("design:type", Object)
178
+ ], SniceBreadcrumbs.prototype, "maxItems", void 0);
179
+ __decorate([
180
+ query('.breadcrumb'),
181
+ __metadata("design:type", HTMLElement)
182
+ ], SniceBreadcrumbs.prototype, "breadcrumbElement", void 0);
183
+ __decorate([
184
+ on('click', '.breadcrumb-ellipsis'),
185
+ __metadata("design:type", Function),
186
+ __metadata("design:paramtypes", []),
187
+ __metadata("design:returntype", void 0)
188
+ ], SniceBreadcrumbs.prototype, "handleEllipsisClick", null);
189
+ __decorate([
190
+ on('click', '.breadcrumb-link'),
191
+ dispatch('breadcrumb-click'),
192
+ __metadata("design:type", Function),
193
+ __metadata("design:paramtypes", [MouseEvent]),
194
+ __metadata("design:returntype", void 0)
195
+ ], SniceBreadcrumbs.prototype, "handleLinkClick", null);
196
+ __decorate([
197
+ ready(),
198
+ __metadata("design:type", Function),
199
+ __metadata("design:paramtypes", []),
200
+ __metadata("design:returntype", void 0)
201
+ ], SniceBreadcrumbs.prototype, "init", null);
202
+ __decorate([
203
+ watch('items', 'separator', 'maxItems'),
204
+ __metadata("design:type", Function),
205
+ __metadata("design:paramtypes", []),
206
+ __metadata("design:returntype", void 0)
207
+ ], SniceBreadcrumbs.prototype, "updateBreadcrumb", null);
208
+ SniceBreadcrumbs = __decorate([
209
+ element('snice-breadcrumbs')
210
+ ], SniceBreadcrumbs);
211
+ export { SniceBreadcrumbs };
212
+ //# sourceMappingURL=snice-breadcrumbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-breadcrumbs.js","sourceRoot":"","sources":["../../../components/breadcrumbs/snice-breadcrumbs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type BreadcrumbSeparator = '/' | '>' | '»' | '•' | '|';
2
+ export type BreadcrumbSize = 'small' | 'medium' | 'large';
3
+ export interface BreadcrumbItem {
4
+ label: string;
5
+ href?: string;
6
+ icon?: string;
7
+ iconImage?: string;
8
+ active?: boolean;
9
+ }
10
+ export interface SniceBreadcrumbsElement extends HTMLElement {
11
+ items: BreadcrumbItem[];
12
+ separator: BreadcrumbSeparator;
13
+ size: BreadcrumbSize;
14
+ maxItems: number;
15
+ setItems(items: BreadcrumbItem[]): void;
16
+ }
17
+ export interface SniceCrumbElement extends HTMLElement {
18
+ label: string;
19
+ href: string;
20
+ icon: string;
21
+ iconImage: string;
22
+ active: boolean;
23
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=snice-breadcrumbs.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-breadcrumbs.types.js","sourceRoot":"","sources":["../../../components/breadcrumbs/snice-breadcrumbs.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { SniceCrumbElement } from './snice-breadcrumbs.types';
2
+ export declare class SniceCrumb extends HTMLElement implements SniceCrumbElement {
3
+ label: string;
4
+ href: string;
5
+ icon: string;
6
+ iconImage: string;
7
+ active: boolean;
8
+ connectedCallback(): void;
9
+ }
@@ -0,0 +1,50 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { element, property } from '../../src/index';
11
+ let SniceCrumb = class SniceCrumb extends HTMLElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.label = '';
15
+ this.href = '';
16
+ this.icon = '';
17
+ this.iconImage = '';
18
+ this.active = false;
19
+ }
20
+ // No shadow DOM - this is a data element
21
+ connectedCallback() {
22
+ // Hide the element as it's only for data
23
+ this.style.display = 'none';
24
+ }
25
+ };
26
+ __decorate([
27
+ property({ reflect: true }),
28
+ __metadata("design:type", Object)
29
+ ], SniceCrumb.prototype, "label", void 0);
30
+ __decorate([
31
+ property({ reflect: true }),
32
+ __metadata("design:type", Object)
33
+ ], SniceCrumb.prototype, "href", void 0);
34
+ __decorate([
35
+ property({ reflect: true }),
36
+ __metadata("design:type", Object)
37
+ ], SniceCrumb.prototype, "icon", void 0);
38
+ __decorate([
39
+ property({ attribute: 'icon-image', reflect: true }),
40
+ __metadata("design:type", Object)
41
+ ], SniceCrumb.prototype, "iconImage", void 0);
42
+ __decorate([
43
+ property({ type: Boolean, reflect: true }),
44
+ __metadata("design:type", Object)
45
+ ], SniceCrumb.prototype, "active", void 0);
46
+ SniceCrumb = __decorate([
47
+ element('snice-crumb')
48
+ ], SniceCrumb);
49
+ export { SniceCrumb };
50
+ //# sourceMappingURL=snice-crumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-crumb.js","sourceRoot":"","sources":["../../../components/breadcrumbs/snice-crumb.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAI7C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,WAAW;IAApC;;QAEL,UAAK,GAAG,EAAE,CAAC;QAGX,SAAI,GAAG,EAAE,CAAC;QAGV,SAAI,GAAG,EAAE,CAAC;QAGV,cAAS,GAAG,EAAE,CAAC;QAGf,WAAM,GAAG,KAAK,CAAC;IAOjB,CAAC;IALC,yCAAyC;IACzC,iBAAiB;QACf,yCAAyC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC9B,CAAC;CACF,CAAA;AAnBC;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;yCACjB;AAGX;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wCAClB;AAGV;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wCAClB;AAGV;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;6CACtC;AAGf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;0CAC5B;AAdJ,UAAU;IADtB,OAAO,CAAC,aAAa,CAAC;GACV,UAAU,CAqBtB"}
@@ -0,0 +1,32 @@
1
+ import type { ButtonVariant, ButtonSize, IconPlacement, SniceButtonElement } from './snice-button.types';
2
+ export declare class SniceButton extends HTMLElement implements SniceButtonElement {
3
+ variant: ButtonVariant;
4
+ size: ButtonSize;
5
+ disabled: boolean;
6
+ loading: boolean;
7
+ outline: boolean;
8
+ pill: boolean;
9
+ circle: boolean;
10
+ href: string;
11
+ target: string;
12
+ download: string;
13
+ icon: string;
14
+ iconPlacement: IconPlacement;
15
+ button?: HTMLButtonElement;
16
+ spinner?: HTMLElement;
17
+ label?: HTMLElement;
18
+ iconElement?: HTMLImageElement;
19
+ html(): string;
20
+ css(): string;
21
+ updateButtonClasses(): void;
22
+ updateDisabledState(): void;
23
+ setLoading(loading: boolean): void;
24
+ setDisabled(disabled: boolean): void;
25
+ setVariant(variant: typeof this.variant): void;
26
+ handleClick(event: MouseEvent): {
27
+ originalEvent: MouseEvent;
28
+ } | undefined;
29
+ focus(options?: FocusOptions): void;
30
+ blur(): void;
31
+ click(): void;
32
+ }
@@ -0,0 +1,212 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { element, property, query, on, dispatch, watch } from '../../src/index';
11
+ import css from './snice-button.css?inline';
12
+ let SniceButton = class SniceButton extends HTMLElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.variant = 'default';
16
+ this.size = 'medium';
17
+ this.disabled = false;
18
+ this.loading = false;
19
+ this.outline = false;
20
+ this.pill = false;
21
+ this.circle = false;
22
+ this.href = '';
23
+ this.target = '';
24
+ this.download = '';
25
+ this.icon = '';
26
+ this.iconPlacement = 'start';
27
+ }
28
+ html() {
29
+ const classes = [
30
+ 'button',
31
+ `button--${this.variant || 'default'}`,
32
+ `button--${this.size || 'medium'}`,
33
+ this.outline ? 'button--outline' : '',
34
+ this.pill ? 'button--pill' : '',
35
+ this.circle ? 'button--circle' : '',
36
+ this.loading ? 'button--loading' : '',
37
+ this.disabled ? 'button--disabled' : '',
38
+ this.icon ? `button--has-icon` : '',
39
+ this.icon ? `button--icon-${this.iconPlacement}` : ''
40
+ ].filter(Boolean).join(' ');
41
+ const iconElement = this.icon ? /*html*/ `
42
+ <img class="icon" src="${this.icon}" alt="" part="icon" />
43
+ ` : '';
44
+ return /*html*/ `
45
+ <button class="${classes}" type="button" ${this.disabled ? 'disabled' : ''} part="base">
46
+ <span class="spinner" part="spinner"></span>
47
+ ${this.iconPlacement === 'start' ? iconElement : ''}
48
+ <span class="label" part="label">
49
+ <slot></slot>
50
+ </span>
51
+ ${this.iconPlacement === 'end' ? iconElement : ''}
52
+ </button>
53
+ `;
54
+ }
55
+ css() {
56
+ return css;
57
+ }
58
+ updateButtonClasses() {
59
+ if (!this.button)
60
+ return;
61
+ // Rebuild all classes based on current state
62
+ const classes = [
63
+ 'button',
64
+ `button--${this.variant}`,
65
+ `button--${this.size}`,
66
+ this.outline ? 'button--outline' : '',
67
+ this.pill ? 'button--pill' : '',
68
+ this.circle ? 'button--circle' : '',
69
+ this.loading ? 'button--loading' : '',
70
+ this.disabled ? 'button--disabled' : '',
71
+ this.icon ? `button--has-icon` : '',
72
+ this.icon ? `button--icon-${this.iconPlacement}` : ''
73
+ ].filter(Boolean);
74
+ // Set the className directly to avoid class manipulation issues
75
+ this.button.className = classes.join(' ');
76
+ }
77
+ updateDisabledState() {
78
+ if (this.button) {
79
+ this.button.disabled = this.disabled;
80
+ }
81
+ }
82
+ // Keep these methods for backwards compatibility if needed
83
+ setLoading(loading) {
84
+ this.loading = loading;
85
+ }
86
+ setDisabled(disabled) {
87
+ this.disabled = disabled;
88
+ }
89
+ setVariant(variant) {
90
+ this.variant = variant;
91
+ }
92
+ handleClick(event) {
93
+ if (this.disabled || this.loading) {
94
+ event.preventDefault();
95
+ event.stopPropagation();
96
+ return;
97
+ }
98
+ // Handle navigation if href is set
99
+ if (this.href) {
100
+ if (this.download) {
101
+ const a = document.createElement('a');
102
+ a.href = this.href;
103
+ a.download = this.download;
104
+ a.click();
105
+ }
106
+ else if (this.target) {
107
+ window.open(this.href, this.target);
108
+ }
109
+ else {
110
+ window.location.href = this.href;
111
+ }
112
+ }
113
+ return { originalEvent: event };
114
+ }
115
+ focus(options) {
116
+ this.button?.focus(options);
117
+ }
118
+ blur() {
119
+ this.button?.blur();
120
+ }
121
+ click() {
122
+ this.button?.click();
123
+ }
124
+ };
125
+ __decorate([
126
+ property({ reflect: true }),
127
+ __metadata("design:type", String)
128
+ ], SniceButton.prototype, "variant", void 0);
129
+ __decorate([
130
+ property({ reflect: true }),
131
+ __metadata("design:type", String)
132
+ ], SniceButton.prototype, "size", void 0);
133
+ __decorate([
134
+ property({ type: Boolean, reflect: true }),
135
+ __metadata("design:type", Object)
136
+ ], SniceButton.prototype, "disabled", void 0);
137
+ __decorate([
138
+ property({ type: Boolean, reflect: true }),
139
+ __metadata("design:type", Object)
140
+ ], SniceButton.prototype, "loading", void 0);
141
+ __decorate([
142
+ property({ type: Boolean, reflect: true }),
143
+ __metadata("design:type", Object)
144
+ ], SniceButton.prototype, "outline", void 0);
145
+ __decorate([
146
+ property({ type: Boolean, reflect: true }),
147
+ __metadata("design:type", Object)
148
+ ], SniceButton.prototype, "pill", void 0);
149
+ __decorate([
150
+ property({ type: Boolean, reflect: true }),
151
+ __metadata("design:type", Object)
152
+ ], SniceButton.prototype, "circle", void 0);
153
+ __decorate([
154
+ property({ type: String, reflect: true }),
155
+ __metadata("design:type", Object)
156
+ ], SniceButton.prototype, "href", void 0);
157
+ __decorate([
158
+ property({ type: String, reflect: true }),
159
+ __metadata("design:type", Object)
160
+ ], SniceButton.prototype, "target", void 0);
161
+ __decorate([
162
+ property({ type: String, reflect: true }),
163
+ __metadata("design:type", Object)
164
+ ], SniceButton.prototype, "download", void 0);
165
+ __decorate([
166
+ property({ type: String, reflect: true }),
167
+ __metadata("design:type", Object)
168
+ ], SniceButton.prototype, "icon", void 0);
169
+ __decorate([
170
+ property({ attribute: 'icon-placement', reflect: true }),
171
+ __metadata("design:type", String)
172
+ ], SniceButton.prototype, "iconPlacement", void 0);
173
+ __decorate([
174
+ query('.button'),
175
+ __metadata("design:type", HTMLButtonElement)
176
+ ], SniceButton.prototype, "button", void 0);
177
+ __decorate([
178
+ query('.spinner'),
179
+ __metadata("design:type", HTMLElement)
180
+ ], SniceButton.prototype, "spinner", void 0);
181
+ __decorate([
182
+ query('.label'),
183
+ __metadata("design:type", HTMLElement)
184
+ ], SniceButton.prototype, "label", void 0);
185
+ __decorate([
186
+ query('.icon'),
187
+ __metadata("design:type", HTMLImageElement)
188
+ ], SniceButton.prototype, "iconElement", void 0);
189
+ __decorate([
190
+ watch('*'),
191
+ __metadata("design:type", Function),
192
+ __metadata("design:paramtypes", []),
193
+ __metadata("design:returntype", void 0)
194
+ ], SniceButton.prototype, "updateButtonClasses", null);
195
+ __decorate([
196
+ watch('disabled'),
197
+ __metadata("design:type", Function),
198
+ __metadata("design:paramtypes", []),
199
+ __metadata("design:returntype", void 0)
200
+ ], SniceButton.prototype, "updateDisabledState", null);
201
+ __decorate([
202
+ on('click'),
203
+ dispatch('@snice/click'),
204
+ __metadata("design:type", Function),
205
+ __metadata("design:paramtypes", [MouseEvent]),
206
+ __metadata("design:returntype", void 0)
207
+ ], SniceButton.prototype, "handleClick", null);
208
+ SniceButton = __decorate([
209
+ element('snice-button')
210
+ ], SniceButton);
211
+ export { SniceButton };
212
+ //# sourceMappingURL=snice-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-button.js","sourceRoot":"","sources":["../../../components/button/snice-button.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,GAAG,MAAM,2BAA2B,CAAC;AAIrC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAAW;IAArC;;QAEL,YAAO,GAAkB,SAAS,CAAC;QAGnC,SAAI,GAAe,QAAQ,CAAC;QAG5B,aAAQ,GAAG,KAAK,CAAC;QAGjB,YAAO,GAAG,KAAK,CAAC;QAGhB,YAAO,GAAG,KAAK,CAAC;QAGhB,SAAI,GAAG,KAAK,CAAC;QAGb,WAAM,GAAG,KAAK,CAAC;QAGf,SAAI,GAAG,EAAE,CAAC;QAGV,WAAM,GAAG,EAAE,CAAC;QAGZ,aAAQ,GAAG,EAAE,CAAC;QAGd,SAAI,GAAG,EAAE,CAAC;QAGV,kBAAa,GAAkB,OAAO,CAAC;IAgIzC,CAAC;IAjHC,IAAI;QACF,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,WAAW,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;YACtC,WAAW,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;SACtD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;+BACb,IAAI,CAAC,IAAI;KACnC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,QAAQ,CAAA;uBACI,OAAO,mBAAmB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;UAEtE,IAAI,CAAC,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;;;;UAIjD,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;;KAEpD,CAAC;IACJ,CAAC;IAED,GAAG;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,mBAAmB;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,6CAA6C;QAC7C,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,WAAW,IAAI,CAAC,OAAO,EAAE;YACzB,WAAW,IAAI,CAAC,IAAI,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;SACtD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAElB,gEAAgE;QAChE,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAGD,mBAAmB;QACjB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvC,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,QAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,UAAU,CAAC,OAA4B;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAID,WAAW,CAAC,KAAiB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACnB,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC3B,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAsB;QAC1B,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAjKC;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;4CACO;AAGnC;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;yCACA;AAG5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;6CAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;4CAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;4CAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;yCAC9B;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;2CAC5B;AAGf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;yCAChC;AAGV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;2CAC9B;AAGZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;6CAC5B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;yCAChC;AAGV;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;kDAClB;AAIvC;IADC,KAAK,CAAC,SAAS,CAAC;8BACR,iBAAiB;2CAAC;AAG3B;IADC,KAAK,CAAC,UAAU,CAAC;8BACR,WAAW;4CAAC;AAGtB;IADC,KAAK,CAAC,QAAQ,CAAC;8BACR,WAAW;0CAAC;AAGpB;IADC,KAAK,CAAC,OAAO,CAAC;8BACD,gBAAgB;gDAAC;AAqC/B;IADC,KAAK,CAAC,GAAG,CAAC;;;;sDAoBV;AAGD;IADC,KAAK,CAAC,UAAU,CAAC;;;;sDAKjB;AAiBD;IAFC,EAAE,CAAC,OAAO,CAAC;IACX,QAAQ,CAAC,cAAc,CAAC;;qCACN,UAAU;;8CAsB5B;AAtJU,WAAW;IADvB,OAAO,CAAC,cAAc,CAAC;GACX,WAAW,CAmKvB"}
@@ -0,0 +1,23 @@
1
+ export type ButtonVariant = 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'text';
2
+ export type ButtonSize = 'small' | 'medium' | 'large';
3
+ export type IconPlacement = 'start' | 'end';
4
+ export interface SniceButtonElement extends HTMLElement {
5
+ variant: ButtonVariant;
6
+ size: ButtonSize;
7
+ disabled: boolean;
8
+ loading: boolean;
9
+ outline: boolean;
10
+ pill: boolean;
11
+ circle: boolean;
12
+ href: string;
13
+ target: string;
14
+ download: string;
15
+ icon: string;
16
+ iconPlacement: IconPlacement;
17
+ focus(options?: FocusOptions): void;
18
+ blur(): void;
19
+ click(): void;
20
+ }
21
+ export interface ButtonClickDetail {
22
+ button: SniceButtonElement;
23
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=snice-button.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-button.types.js","sourceRoot":"","sources":["../../../components/button/snice-button.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import type { CardVariant, CardSize, SniceCardElement } from './snice-card.types';
2
+ export declare class SniceCard extends HTMLElement implements SniceCardElement {
3
+ variant: CardVariant;
4
+ size: CardSize;
5
+ clickable: boolean;
6
+ selected: boolean;
7
+ disabled: boolean;
8
+ private hasHeader;
9
+ private hasFooter;
10
+ html(): string;
11
+ css(): string;
12
+ init(): void;
13
+ private setupSlotListeners;
14
+ private checkSlots;
15
+ handleClick(event: MouseEvent): {
16
+ selected: boolean;
17
+ } | undefined;
18
+ handleKeydown(event: KeyboardEvent): void;
19
+ }