snice 2.5.4 → 3.2.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 (411) hide show
  1. package/README.md +537 -869
  2. package/bin/templates/base/src/components/counter-button.ts +13 -26
  3. package/bin/templates/base/src/controllers/counter-controller.ts +3 -3
  4. package/dist/components/accordion/snice-accordion-item.d.ts +4 -5
  5. package/dist/components/accordion/snice-accordion-item.js +37 -39
  6. package/dist/components/accordion/snice-accordion-item.js.map +1 -1
  7. package/dist/components/accordion/snice-accordion.d.ts +5 -11
  8. package/dist/components/accordion/snice-accordion.js +51 -52
  9. package/dist/components/accordion/snice-accordion.js.map +1 -1
  10. package/dist/components/alert/snice-alert.d.ts +2 -6
  11. package/dist/components/alert/snice-alert.js +41 -56
  12. package/dist/components/alert/snice-alert.js.map +1 -1
  13. package/dist/components/avatar/snice-avatar.d.ts +2 -6
  14. package/dist/components/avatar/snice-avatar.js +64 -71
  15. package/dist/components/avatar/snice-avatar.js.map +1 -1
  16. package/dist/components/badge/snice-badge.d.ts +2 -3
  17. package/dist/components/badge/snice-badge.js +22 -23
  18. package/dist/components/badge/snice-badge.js.map +1 -1
  19. package/dist/components/banner/snice-banner.d.ts +22 -0
  20. package/dist/components/banner/snice-banner.js +180 -0
  21. package/dist/components/banner/snice-banner.js.map +1 -0
  22. package/dist/components/banner/snice-banner.types.d.ts +14 -0
  23. package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +5 -12
  24. package/dist/components/breadcrumbs/snice-breadcrumbs.js +88 -89
  25. package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  26. package/dist/components/button/snice-button.d.ts +3 -7
  27. package/dist/components/button/snice-button.js +37 -58
  28. package/dist/components/button/snice-button.js.map +1 -1
  29. package/dist/components/card/snice-card.d.ts +5 -8
  30. package/dist/components/card/snice-card.js +71 -56
  31. package/dist/components/card/snice-card.js.map +1 -1
  32. package/dist/components/checkbox/snice-checkbox.d.ts +4 -13
  33. package/dist/components/checkbox/snice-checkbox.js +66 -137
  34. package/dist/components/checkbox/snice-checkbox.js.map +1 -1
  35. package/dist/components/chip/snice-chip.d.ts +5 -11
  36. package/dist/components/chip/snice-chip.js +44 -47
  37. package/dist/components/chip/snice-chip.js.map +1 -1
  38. package/dist/components/color-display/snice-color-display.d.ts +14 -0
  39. package/dist/components/color-display/snice-color-display.js +151 -0
  40. package/dist/components/color-display/snice-color-display.js.map +1 -0
  41. package/dist/components/color-display/snice-color-display.types.d.ts +10 -0
  42. package/dist/components/color-picker/snice-color-picker.d.ts +50 -0
  43. package/dist/components/color-picker/snice-color-picker.js +489 -0
  44. package/dist/components/color-picker/snice-color-picker.js.map +1 -0
  45. package/dist/components/color-picker/snice-color-picker.types.d.ts +19 -0
  46. package/dist/components/date-picker/snice-date-picker.d.ts +11 -11
  47. package/dist/components/date-picker/snice-date-picker.js +134 -133
  48. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  49. package/dist/components/divider/snice-divider.d.ts +2 -4
  50. package/dist/components/divider/snice-divider.js +14 -22
  51. package/dist/components/divider/snice-divider.js.map +1 -1
  52. package/dist/components/drawer/snice-drawer.d.ts +4 -4
  53. package/dist/components/drawer/snice-drawer.js +25 -19
  54. package/dist/components/drawer/snice-drawer.js.map +1 -1
  55. package/dist/components/empty-state/snice-empty-state.d.ts +13 -0
  56. package/dist/components/empty-state/snice-empty-state.js +121 -0
  57. package/dist/components/empty-state/snice-empty-state.js.map +1 -0
  58. package/dist/components/empty-state/snice-empty-state.types.d.ts +9 -0
  59. package/dist/components/file-upload/snice-file-upload.d.ts +45 -0
  60. package/dist/components/file-upload/snice-file-upload.js +394 -0
  61. package/dist/components/file-upload/snice-file-upload.js.map +1 -0
  62. package/dist/components/file-upload/snice-file-upload.types.d.ts +22 -0
  63. package/dist/components/image/snice-image.d.ts +22 -0
  64. package/dist/components/image/snice-image.js +201 -0
  65. package/dist/components/image/snice-image.js.map +1 -0
  66. package/dist/components/image/snice-image.types.d.ts +17 -0
  67. package/dist/components/input/snice-input.d.ts +8 -6
  68. package/dist/components/input/snice-input.js +122 -105
  69. package/dist/components/input/snice-input.js.map +1 -1
  70. package/dist/components/kpi/snice-kpi.d.ts +16 -0
  71. package/dist/components/kpi/snice-kpi.js +162 -0
  72. package/dist/components/kpi/snice-kpi.js.map +1 -0
  73. package/dist/components/kpi/snice-kpi.types.d.ts +12 -0
  74. package/dist/components/layout/snice-layout-blog.d.ts +4 -4
  75. package/dist/components/layout/snice-layout-blog.js +21 -19
  76. package/dist/components/layout/snice-layout-blog.js.map +1 -1
  77. package/dist/components/layout/snice-layout-card.d.ts +2 -2
  78. package/dist/components/layout/snice-layout-card.js +16 -9
  79. package/dist/components/layout/snice-layout-card.js.map +1 -1
  80. package/dist/components/layout/snice-layout-centered.d.ts +2 -2
  81. package/dist/components/layout/snice-layout-centered.js +14 -7
  82. package/dist/components/layout/snice-layout-centered.js.map +1 -1
  83. package/dist/components/layout/snice-layout-dashboard.d.ts +5 -5
  84. package/dist/components/layout/snice-layout-dashboard.js +38 -30
  85. package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
  86. package/dist/components/layout/snice-layout-fullscreen.d.ts +2 -2
  87. package/dist/components/layout/snice-layout-fullscreen.js +17 -10
  88. package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
  89. package/dist/components/layout/snice-layout-landing.d.ts +4 -4
  90. package/dist/components/layout/snice-layout-landing.js +21 -19
  91. package/dist/components/layout/snice-layout-landing.js.map +1 -1
  92. package/dist/components/layout/snice-layout-minimal.d.ts +2 -2
  93. package/dist/components/layout/snice-layout-minimal.js +17 -6
  94. package/dist/components/layout/snice-layout-minimal.js.map +1 -1
  95. package/dist/components/layout/snice-layout-sidebar.d.ts +5 -4
  96. package/dist/components/layout/snice-layout-sidebar.js +42 -20
  97. package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
  98. package/dist/components/layout/snice-layout-split.d.ts +2 -2
  99. package/dist/components/layout/snice-layout-split.js +14 -7
  100. package/dist/components/layout/snice-layout-split.js.map +1 -1
  101. package/dist/components/layout/snice-layout.d.ts +4 -4
  102. package/dist/components/layout/snice-layout.js +16 -10
  103. package/dist/components/layout/snice-layout.js.map +1 -1
  104. package/dist/components/link/snice-link.d.ts +13 -0
  105. package/dist/components/link/snice-link.js +137 -0
  106. package/dist/components/link/snice-link.js.map +1 -0
  107. package/dist/components/link/snice-link.types.d.ts +11 -0
  108. package/dist/components/login/snice-login.d.ts +6 -11
  109. package/dist/components/login/snice-login.js +97 -71
  110. package/dist/components/login/snice-login.js.map +1 -1
  111. package/dist/components/modal/snice-modal.d.ts +5 -9
  112. package/dist/components/modal/snice-modal.js +47 -78
  113. package/dist/components/modal/snice-modal.js.map +1 -1
  114. package/dist/components/nav/snice-nav.d.ts +13 -7
  115. package/dist/components/nav/snice-nav.js +191 -100
  116. package/dist/components/nav/snice-nav.js.map +1 -1
  117. package/dist/components/nav/snice-nav.types.d.ts +3 -3
  118. package/dist/components/pagination/snice-pagination.d.ts +6 -7
  119. package/dist/components/pagination/snice-pagination.js +94 -81
  120. package/dist/components/pagination/snice-pagination.js.map +1 -1
  121. package/dist/components/progress/snice-progress.d.ts +2 -7
  122. package/dist/components/progress/snice-progress.js +41 -98
  123. package/dist/components/progress/snice-progress.js.map +1 -1
  124. package/dist/components/radio/snice-radio.d.ts +4 -4
  125. package/dist/components/radio/snice-radio.js +52 -44
  126. package/dist/components/radio/snice-radio.js.map +1 -1
  127. package/dist/components/select/snice-option.d.ts +2 -1
  128. package/dist/components/select/snice-option.js +12 -5
  129. package/dist/components/select/snice-option.js.map +1 -1
  130. package/dist/components/select/snice-select.d.ts +9 -21
  131. package/dist/components/select/snice-select.js +98 -170
  132. package/dist/components/select/snice-select.js.map +1 -1
  133. package/dist/components/skeleton/snice-skeleton.d.ts +2 -6
  134. package/dist/components/skeleton/snice-skeleton.js +18 -49
  135. package/dist/components/skeleton/snice-skeleton.js.map +1 -1
  136. package/dist/components/slider/snice-slider.d.ts +53 -0
  137. package/dist/components/slider/snice-slider.js +479 -0
  138. package/dist/components/slider/snice-slider.js.map +1 -0
  139. package/dist/components/slider/snice-slider.types.d.ts +26 -0
  140. package/dist/components/snice-cell-C0slgOpe.js +4 -0
  141. package/dist/components/snice-cell-C0slgOpe.js.map +1 -0
  142. package/dist/components/sparkline/snice-sparkline.d.ts +21 -0
  143. package/dist/components/sparkline/snice-sparkline.js +228 -0
  144. package/dist/components/sparkline/snice-sparkline.js.map +1 -0
  145. package/dist/components/sparkline/snice-sparkline.types.d.ts +16 -0
  146. package/dist/components/spinner/snice-spinner.d.ts +10 -0
  147. package/dist/components/spinner/snice-spinner.js +109 -0
  148. package/dist/components/spinner/snice-spinner.js.map +1 -0
  149. package/dist/components/spinner/snice-spinner.types.d.ts +8 -0
  150. package/dist/components/stepper/snice-stepper-panel.d.ts +8 -0
  151. package/dist/components/stepper/snice-stepper-panel.js +70 -0
  152. package/dist/components/stepper/snice-stepper-panel.js.map +1 -0
  153. package/dist/components/stepper/snice-stepper-panel.types.d.ts +4 -0
  154. package/dist/components/stepper/snice-stepper.d.ts +15 -0
  155. package/dist/components/stepper/snice-stepper.js +163 -0
  156. package/dist/components/stepper/snice-stepper.js.map +1 -0
  157. package/dist/components/stepper/snice-stepper.types.d.ts +13 -0
  158. package/dist/components/switch/snice-switch.d.ts +2 -2
  159. package/dist/components/switch/snice-switch.js +38 -26
  160. package/dist/components/switch/snice-switch.js.map +1 -1
  161. package/dist/components/table/snice-cell-actions.d.ts +24 -0
  162. package/dist/components/table/snice-cell-actions.js +149 -0
  163. package/dist/components/table/snice-cell-actions.js.map +1 -0
  164. package/dist/components/table/snice-cell-boolean.d.ts +2 -2
  165. package/dist/components/table/snice-cell-boolean.js +13 -7
  166. package/dist/components/table/snice-cell-boolean.js.map +1 -1
  167. package/dist/components/table/snice-cell-color.d.ts +18 -0
  168. package/dist/components/table/snice-cell-color.js +149 -0
  169. package/dist/components/table/snice-cell-color.js.map +1 -0
  170. package/dist/components/table/snice-cell-currency.d.ts +24 -0
  171. package/dist/components/table/snice-cell-currency.js +235 -0
  172. package/dist/components/table/snice-cell-currency.js.map +1 -0
  173. package/dist/components/table/snice-cell-date.d.ts +2 -2
  174. package/dist/components/table/snice-cell-date.js +14 -8
  175. package/dist/components/table/snice-cell-date.js.map +1 -1
  176. package/dist/components/table/snice-cell-duration.d.ts +2 -2
  177. package/dist/components/table/snice-cell-duration.js +12 -6
  178. package/dist/components/table/snice-cell-duration.js.map +1 -1
  179. package/dist/components/table/snice-cell-email.d.ts +15 -0
  180. package/dist/components/table/snice-cell-email.js +125 -0
  181. package/dist/components/table/snice-cell-email.js.map +1 -0
  182. package/dist/components/table/snice-cell-filesize.d.ts +2 -2
  183. package/dist/components/table/snice-cell-filesize.js +12 -6
  184. package/dist/components/table/snice-cell-filesize.js.map +1 -1
  185. package/dist/components/table/snice-cell-image.d.ts +20 -0
  186. package/dist/components/table/snice-cell-image.js +162 -0
  187. package/dist/components/table/snice-cell-image.js.map +1 -0
  188. package/dist/components/table/snice-cell-json.d.ts +20 -0
  189. package/dist/components/table/snice-cell-json.js +186 -0
  190. package/dist/components/table/snice-cell-json.js.map +1 -0
  191. package/dist/components/table/snice-cell-link.d.ts +17 -0
  192. package/dist/components/table/snice-cell-link.js +142 -0
  193. package/dist/components/table/snice-cell-link.js.map +1 -0
  194. package/dist/components/table/snice-cell-location.d.ts +19 -0
  195. package/dist/components/table/snice-cell-location.js +185 -0
  196. package/dist/components/table/snice-cell-location.js.map +1 -0
  197. package/dist/components/table/snice-cell-number.d.ts +2 -2
  198. package/dist/components/table/snice-cell-number.js +12 -6
  199. package/dist/components/table/snice-cell-number.js.map +1 -1
  200. package/dist/components/table/snice-cell-percentage.d.ts +22 -0
  201. package/dist/components/table/snice-cell-percentage.js +208 -0
  202. package/dist/components/table/snice-cell-percentage.js.map +1 -0
  203. package/dist/components/table/snice-cell-phone.d.ts +18 -0
  204. package/dist/components/table/snice-cell-phone.js +153 -0
  205. package/dist/components/table/snice-cell-phone.js.map +1 -0
  206. package/dist/components/table/snice-cell-progress.d.ts +2 -2
  207. package/dist/components/table/snice-cell-progress.js +12 -6
  208. package/dist/components/table/snice-cell-progress.js.map +1 -1
  209. package/dist/components/table/snice-cell-rating.d.ts +2 -2
  210. package/dist/components/table/snice-cell-rating.js +12 -6
  211. package/dist/components/table/snice-cell-rating.js.map +1 -1
  212. package/dist/components/table/snice-cell-sparkline.d.ts +2 -2
  213. package/dist/components/table/snice-cell-sparkline.js +13 -7
  214. package/dist/components/table/snice-cell-sparkline.js.map +1 -1
  215. package/dist/components/table/snice-cell-status.d.ts +17 -0
  216. package/dist/components/table/snice-cell-status.js +144 -0
  217. package/dist/components/table/snice-cell-status.js.map +1 -0
  218. package/dist/components/table/snice-cell-tag.d.ts +16 -0
  219. package/dist/components/table/snice-cell-tag.js +131 -0
  220. package/dist/components/table/snice-cell-tag.js.map +1 -0
  221. package/dist/components/table/snice-cell-text.d.ts +2 -2
  222. package/dist/components/table/snice-cell-text.js +14 -8
  223. package/dist/components/table/snice-cell-text.js.map +1 -1
  224. package/dist/components/table/snice-cell.d.ts +2 -2
  225. package/dist/components/table/snice-cell.js +12 -6
  226. package/dist/components/table/snice-cell.js.map +1 -1
  227. package/dist/components/table/snice-column.d.ts +1 -1
  228. package/dist/components/table/snice-column.js +6 -3
  229. package/dist/components/table/snice-column.js.map +1 -1
  230. package/dist/components/table/snice-header.d.ts +5 -5
  231. package/dist/components/table/snice-header.js +60 -50
  232. package/dist/components/table/snice-header.js.map +1 -1
  233. package/dist/components/table/snice-progress.d.ts +2 -2
  234. package/dist/components/table/snice-progress.js +18 -11
  235. package/dist/components/table/snice-progress.js.map +1 -1
  236. package/dist/components/table/snice-rating.d.ts +2 -2
  237. package/dist/components/table/snice-rating.js +15 -8
  238. package/dist/components/table/snice-rating.js.map +1 -1
  239. package/dist/components/table/snice-row.d.ts +17 -6
  240. package/dist/components/table/snice-row.js +95 -44
  241. package/dist/components/table/snice-row.js.map +1 -1
  242. package/dist/components/table/snice-table.d.ts +18 -10
  243. package/dist/components/table/snice-table.js +355 -173
  244. package/dist/components/table/snice-table.js.map +1 -1
  245. package/dist/components/table/snice-table.types.d.ts +101 -2
  246. package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
  247. package/dist/components/tabs/snice-tab-panel.js +12 -6
  248. package/dist/components/tabs/snice-tab-panel.js.map +1 -1
  249. package/dist/components/tabs/snice-tab.d.ts +6 -5
  250. package/dist/components/tabs/snice-tab.js +36 -19
  251. package/dist/components/tabs/snice-tab.js.map +1 -1
  252. package/dist/components/tabs/snice-tabs.d.ts +5 -5
  253. package/dist/components/tabs/snice-tabs.js +38 -28
  254. package/dist/components/tabs/snice-tabs.js.map +1 -1
  255. package/dist/components/textarea/snice-textarea.d.ts +52 -0
  256. package/dist/components/textarea/snice-textarea.js +407 -0
  257. package/dist/components/textarea/snice-textarea.js.map +1 -0
  258. package/dist/components/textarea/snice-textarea.types.d.ts +30 -0
  259. package/dist/components/timeline/snice-timeline.d.ts +11 -0
  260. package/dist/components/timeline/snice-timeline.js +112 -0
  261. package/dist/components/timeline/snice-timeline.js.map +1 -0
  262. package/dist/components/timeline/snice-timeline.types.d.ts +16 -0
  263. package/dist/components/toast/snice-toast-container.d.ts +7 -7
  264. package/dist/components/toast/snice-toast-container.js +19 -12
  265. package/dist/components/toast/snice-toast-container.js.map +1 -1
  266. package/dist/components/toast/snice-toast.d.ts +3 -15
  267. package/dist/components/toast/snice-toast.js +49 -108
  268. package/dist/components/toast/snice-toast.js.map +1 -1
  269. package/dist/components/tooltip/snice-tooltip.d.ts +2 -2
  270. package/dist/components/tooltip/snice-tooltip.js +15 -8
  271. package/dist/components/tooltip/snice-tooltip.js.map +1 -1
  272. package/dist/context.d.ts +44 -0
  273. package/dist/element-ready.d.ts +40 -0
  274. package/dist/{types/element.d.ts → element.d.ts} +2 -8
  275. package/dist/{types/events.d.ts → events.d.ts} +0 -4
  276. package/dist/index.cjs +2556 -605
  277. package/dist/index.cjs.map +1 -1
  278. package/dist/index.d.ts +21 -0
  279. package/dist/index.esm.js +2535 -604
  280. package/dist/index.esm.js.map +1 -1
  281. package/dist/index.iife.js +2556 -605
  282. package/dist/index.iife.js.map +1 -1
  283. package/dist/method-decorators.d.ts +121 -0
  284. package/dist/on.d.ts +59 -0
  285. package/dist/parts.d.ts +156 -0
  286. package/dist/render-debug.d.ts +27 -0
  287. package/dist/render-tracker.d.ts +14 -0
  288. package/dist/render.d.ts +96 -0
  289. package/dist/symbols.cjs +163 -0
  290. package/dist/symbols.cjs.map +1 -1
  291. package/dist/{types/symbols.d.ts → symbols.d.ts} +22 -0
  292. package/dist/symbols.esm.js +27 -3
  293. package/dist/symbols.esm.js.map +1 -1
  294. package/dist/template.d.ts +99 -0
  295. package/dist/transitions.cjs +219 -0
  296. package/dist/transitions.esm.js +2 -2
  297. package/dist/types/context.d.ts +48 -0
  298. package/dist/types/element-options.d.ts +26 -0
  299. package/dist/types/index.d.ts +25 -9
  300. package/dist/types/nav-context.d.ts +19 -0
  301. package/dist/types/{types/on-options.d.ts → on-options.d.ts} +2 -0
  302. package/dist/types/{types/placard.d.ts → placard.d.ts} +0 -1
  303. package/docs/ai/README.md +26 -0
  304. package/docs/ai/api.md +175 -0
  305. package/docs/ai/architecture.md +160 -0
  306. package/docs/ai/components/accordion.md +174 -0
  307. package/docs/ai/components/alert.md +77 -0
  308. package/docs/ai/components/avatar.md +61 -0
  309. package/docs/ai/components/badge.md +69 -0
  310. package/docs/ai/components/banner.md +84 -0
  311. package/docs/ai/components/breadcrumbs.md +74 -0
  312. package/docs/ai/components/button.md +75 -0
  313. package/docs/ai/components/card.md +61 -0
  314. package/docs/ai/components/checkbox.md +74 -0
  315. package/docs/ai/components/chip.md +73 -0
  316. package/docs/ai/components/color-display.md +48 -0
  317. package/docs/ai/components/color-picker.md +75 -0
  318. package/docs/ai/components/date-picker.md +75 -0
  319. package/docs/ai/components/divider.md +66 -0
  320. package/docs/ai/components/drawer.md +80 -0
  321. package/docs/ai/components/empty-state.md +72 -0
  322. package/docs/ai/components/file-upload.md +93 -0
  323. package/docs/ai/components/image.md +60 -0
  324. package/docs/ai/components/input.md +111 -0
  325. package/docs/ai/components/kpi.md +158 -0
  326. package/docs/ai/components/link.md +77 -0
  327. package/docs/ai/components/login.md +109 -0
  328. package/docs/ai/components/modal.md +67 -0
  329. package/docs/ai/components/nav.md +76 -0
  330. package/docs/ai/components/pagination.md +55 -0
  331. package/docs/ai/components/progress.md +72 -0
  332. package/docs/ai/components/radio.md +79 -0
  333. package/docs/ai/components/select.md +92 -0
  334. package/docs/ai/components/skeleton.md +57 -0
  335. package/docs/ai/components/slider.md +87 -0
  336. package/docs/ai/components/sparkline.md +168 -0
  337. package/docs/ai/components/spinner.md +47 -0
  338. package/docs/ai/components/stepper.md +216 -0
  339. package/docs/ai/components/switch.md +53 -0
  340. package/docs/ai/components/table.md +227 -0
  341. package/docs/ai/components/tabs.md +83 -0
  342. package/docs/ai/components/textarea.md +87 -0
  343. package/docs/ai/components/timeline.md +77 -0
  344. package/docs/ai/components/toast.md +140 -0
  345. package/docs/ai/components/tooltip.md +146 -0
  346. package/docs/ai/patterns.md +244 -0
  347. package/docs/components/accordion.md +558 -0
  348. package/docs/components/banner.md +106 -0
  349. package/docs/components/color-display.md +96 -0
  350. package/docs/components/color-picker.md +81 -0
  351. package/docs/components/drawer.md +602 -0
  352. package/docs/components/empty-state.md +79 -0
  353. package/docs/components/file-upload.md +263 -0
  354. package/docs/components/image.md +110 -0
  355. package/docs/components/kpi.md +251 -0
  356. package/docs/components/link.md +229 -0
  357. package/docs/components/modal.md +558 -0
  358. package/docs/components/nav.md +239 -0
  359. package/docs/components/pagination.md +289 -0
  360. package/docs/components/select.md +599 -0
  361. package/docs/components/slider.md +297 -0
  362. package/docs/components/sparkline.md +293 -0
  363. package/docs/components/spinner.md +63 -0
  364. package/docs/components/stepper.md +410 -0
  365. package/docs/components/switch.md +354 -0
  366. package/docs/components/tabs.md +546 -0
  367. package/docs/components/textarea.md +235 -0
  368. package/docs/components/timeline.md +192 -0
  369. package/docs/components/toast.md +506 -0
  370. package/docs/components/tooltip.md +523 -0
  371. package/docs/controllers.md +744 -0
  372. package/docs/elements.md +855 -0
  373. package/docs/events.md +807 -0
  374. package/docs/migration-v2-to-v3.md +569 -0
  375. package/docs/observe.md +588 -0
  376. package/docs/placards.md +401 -0
  377. package/docs/request-response.md +852 -0
  378. package/docs/routing.md +1186 -0
  379. package/package.json +11 -11
  380. package/dist/components/snice-cell-C9N6yGxQ.js +0 -4
  381. package/dist/components/snice-cell-C9N6yGxQ.js.map +0 -1
  382. package/dist/types/types/index.d.ts +0 -23
  383. /package/dist/{types/controller.d.ts → controller.d.ts} +0 -0
  384. /package/dist/{types/global.d.ts → global.d.ts} +0 -0
  385. /package/dist/{types/observe.d.ts → observe.d.ts} +0 -0
  386. /package/dist/{types/request-response.d.ts → request-response.d.ts} +0 -0
  387. /package/dist/{types/router.d.ts → router.d.ts} +0 -0
  388. /package/dist/{types/testing.d.ts → testing.d.ts} +0 -0
  389. /package/dist/{types/transitions.d.ts → transitions.d.ts} +0 -0
  390. /package/dist/types/{types/adopted-options.d.ts → adopted-options.d.ts} +0 -0
  391. /package/dist/types/{types/app-context.d.ts → app-context.d.ts} +0 -0
  392. /package/dist/types/{types/dispatch-options.d.ts → dispatch-options.d.ts} +0 -0
  393. /package/dist/types/{types/guard.d.ts → guard.d.ts} +0 -0
  394. /package/dist/types/{types/i-controller.d.ts → i-controller.d.ts} +0 -0
  395. /package/dist/types/{types/moved-options.d.ts → moved-options.d.ts} +0 -0
  396. /package/dist/types/{types/observe-options.d.ts → observe-options.d.ts} +0 -0
  397. /package/dist/types/{types/page-options.d.ts → page-options.d.ts} +0 -0
  398. /package/dist/types/{types/part-options.d.ts → part-options.d.ts} +0 -0
  399. /package/dist/types/{types/property-converter.d.ts → property-converter.d.ts} +0 -0
  400. /package/dist/types/{types/property-options.d.ts → property-options.d.ts} +0 -0
  401. /package/dist/types/{types/query-options.d.ts → query-options.d.ts} +0 -0
  402. /package/dist/types/{types/request-options.d.ts → request-options.d.ts} +0 -0
  403. /package/dist/types/{types/respond-options.d.ts → respond-options.d.ts} +0 -0
  404. /package/dist/types/{types/route-params.d.ts → route-params.d.ts} +0 -0
  405. /package/dist/types/{types/router-instance.d.ts → router-instance.d.ts} +0 -0
  406. /package/dist/types/{types/router-options.d.ts → router-options.d.ts} +0 -0
  407. /package/dist/types/{types/simple-array.d.ts → simple-array.d.ts} +0 -0
  408. /package/dist/types/{types/snice-element.d.ts → snice-element.d.ts} +0 -0
  409. /package/dist/types/{types/snice-global.d.ts → snice-global.d.ts} +0 -0
  410. /package/dist/types/{types/transition.d.ts → transition.d.ts} +0 -0
  411. /package/dist/{types/utils.d.ts → utils.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { __runInitializers, __esDecorate } from 'tslib';
2
- import { element, property, query, ready, on, watch, dispatch } from 'snice';
2
+ import { element, property, query, styles, render, ready, watch, dispatch, css, html } from 'snice';
3
3
 
4
- var css = "/* Date Picker Component Styles */\n:host {\n display: block;\n position: relative;\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n font-size: var(--snice-font-size-sm, 14px);\n line-height: var(--snice-line-height-normal, 1.4);\n min-height: 40px;\n}\n\n/* Wrapper */\n.date-picker-wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n/* Label */\n.label {\n font-weight: var(--snice-font-weight-medium, 500);\n color: var(--snice-color-text, #374151);\n margin-bottom: var(--snice-spacing-2xs, 0.25rem);\n}\n\n.label--required::after {\n content: '*';\n color: var(--snice-color-danger, #ef4444);\n margin-left: var(--snice-spacing-2xs, 0.25rem);\n}\n\n/* Input Container */\n.input-container {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n/* Input Styles */\n.input {\n width: 100%;\n border: 1px solid var(--snice-color-border, #d1d5db);\n border-radius: var(--snice-border-radius-lg, 6px);\n padding: var(--snice-spacing-xs, 0.5rem) 3rem var(--snice-spacing-xs, 0.5rem) var(--snice-spacing-sm, 0.75rem);\n font-size: inherit;\n line-height: var(--snice-line-height-normal, 1.5);\n background: var(--snice-color-background, white);\n color: var(--snice-color-text, #374151);\n transition: border-color var(--snice-transition-fast, 0.15s) ease, box-shadow var(--snice-transition-fast, 0.15s) ease;\n}\n\n.input:focus {\n outline: none;\n border-color: var(--snice-color-border-focus, #2563eb);\n box-shadow: 0 0 0 var(--snice-focus-ring-width, 3px) var(--snice-focus-ring-color, rgba(37, 99, 235, 0.1));\n}\n\n.input--small {\n padding: 0.375rem 2.75rem 0.375rem 0.625rem;\n font-size: 0.875rem;\n}\n\n.input--large {\n padding: 0.75rem 3.5rem 0.75rem 1rem;\n font-size: 1rem;\n}\n\n.input--filled {\n background: var(--snice-color-background-secondary, #f9fafb);\n border: 1px solid transparent;\n}\n\n.input--underlined {\n border: none;\n border-bottom: 1px solid #d1d5db;\n border-radius: 0;\n background: transparent;\n padding-left: 0;\n}\n\n.input--invalid {\n border-color: #ef4444;\n}\n\n.input--invalid:focus {\n border-color: #ef4444;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);\n}\n\n.input:disabled {\n background: var(--snice-color-background-secondary, #f9fafb);\n color: var(--snice-color-text-tertiary, #9ca3af);\n cursor: not-allowed;\n}\n\n.input:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n\n/* Button Styles */\n.calendar-toggle,\n.clear-button {\n position: absolute;\n right: 0.5rem;\n padding: 0.25rem /* 4px */;\n border: none;\n background: transparent;\n color: #6b7280;\n cursor: pointer;\n border-radius: 4px;\n transition: color 0.15s ease, background-color 0.15s ease;\n}\n\n.calendar-toggle {\n right: 0.5rem;\n}\n\n.clear-button {\n right: 2.5rem;\n}\n\n.calendar-toggle:hover,\n.clear-button:hover {\n color: #374151;\n background: #f3f4f6;\n}\n\n.calendar-toggle:disabled,\n.clear-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Calendar Popup */\n.calendar {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: var(--snice-z-index-dropdown, 1000);\n background: var(--snice-color-background-element, rgb(252, 251, 249));\n border: 1px solid var(--snice-color-border, #d1d5db);\n border-radius: var(--snice-border-radius-lg, 8px);\n box-shadow: var(--snice-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05));\n margin-top: var(--snice-spacing-3xs, 0.125rem);\n padding: var(--snice-spacing-md, 1rem);\n min-width: 280px;\n}\n\n.calendar[hidden] {\n display: none;\n}\n\n/* Calendar Header */\n.calendar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n}\n\n.calendar-title {\n flex: 1;\n text-align: center;\n}\n\n.month-button {\n background: none;\n border: none;\n font-size: var(--snice-font-size-md, 1rem);\n font-weight: var(--snice-font-weight-semibold, 600);\n color: var(--snice-color-text, #374151);\n cursor: pointer;\n padding: var(--snice-spacing-2xs, 0.25rem) var(--snice-spacing-xs, 0.5rem);\n border-radius: var(--snice-border-radius-md, 4px);\n transition: background-color var(--snice-transition-fast, 0.15s) ease;\n}\n\n.month-button:hover {\n background: var(--snice-color-background-tertiary, #f3f4f6);\n}\n\n.nav-button {\n background: none;\n border: none;\n padding: 0.5rem;\n cursor: pointer;\n color: #6b7280;\n border-radius: 4px;\n transition: color 0.15s ease, background-color 0.15s ease;\n}\n\n.nav-button:hover {\n color: #374151;\n background: #f3f4f6;\n}\n\n/* Calendar Grid */\n.calendar-weekdays {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 0.25rem /* 4px */;\n margin-bottom: 0.5rem;\n}\n\n.weekday {\n text-align: center;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n padding: 0.5rem 0.25rem;\n}\n\n.calendar-days {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 0.25rem /* 4px */;\n}\n\n.day {\n width: 32px;\n height: 32px;\n border: none;\n background: none;\n cursor: pointer;\n border-radius: var(--snice-border-radius-md, 4px);\n font-size: var(--snice-font-size-sm, 0.875rem);\n color: var(--snice-color-text, #374151);\n transition: background-color var(--snice-transition-fast, 0.15s) ease, color var(--snice-transition-fast, 0.15s) ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.day:hover:not(.day--disabled) {\n background: var(--snice-color-background-tertiary, #f3f4f6);\n}\n\n.day--today {\n background: var(--snice-color-primary-light, #dbeafe);\n color: var(--snice-color-primary, #2563eb);\n font-weight: var(--snice-font-weight-semibold, 600);\n}\n\n.day--selected {\n background: var(--snice-color-primary, #2563eb);\n color: var(--snice-color-text-inverse, white);\n font-weight: var(--snice-font-weight-semibold, 600);\n}\n\n.day--disabled {\n color: #d1d5db;\n cursor: not-allowed;\n}\n\n.day--empty {\n cursor: default;\n}\n\n/* Calendar Footer */\n.calendar-footer {\n margin-top: 1rem;\n padding-top: 1rem;\n border-top: 1px solid #f3f4f6;\n display: flex;\n justify-content: center;\n}\n\n.today-button {\n background: none;\n border: 1px solid #d1d5db;\n padding: 0.5rem 1rem;\n font-size: 0.875rem;\n color: #374151;\n cursor: pointer;\n border-radius: 4px;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n}\n\n.today-button:hover {\n background: #f9fafb;\n border-color: #9ca3af;\n}\n\n/* Helper/Error Text */\n.helper-text,\n.error-text {\n font-size: var(--snice-font-size-sm, 0.875rem);\n margin-top: var(--snice-spacing-2xs, 0.25rem);\n}\n\n.helper-text {\n color: var(--snice-color-text-secondary, #6b7280);\n}\n\n.error-text {\n color: var(--snice-color-danger, #ef4444);\n}\n\n/* Size variants */\n:host([size=\"small\"]) .calendar {\n min-width: 240px;\n padding: 0.75rem;\n}\n\n:host([size=\"small\"]) .day {\n width: 28px;\n height: 28px;\n font-size: 0.8125rem;\n}\n\n:host([size=\"large\"]) .calendar {\n min-width: 320px;\n padding: 1.25rem;\n}\n\n:host([size=\"large\"]) .day {\n width: 36px;\n height: 36px;\n font-size: 0.9375rem;\n}\n\n/* Responsive */\n@media (max-width: 640px) {\n .calendar {\n left: 50%;\n right: auto;\n transform: translateX(-50%);\n min-width: 280px;\n }\n}";
4
+ var cssContent = ":host{display:block;position:relative;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);font-size:var(--snice-font-size-sm, 14px);line-height:var(--snice-line-height-normal, 1.4);min-height:40px}.date-picker-wrapper{display:flex;flex-direction:column;gap:.5rem}.label{font-weight:var(--snice-font-weight-medium,500);color:var(--snice-color-text,#374151);margin-bottom:var(--snice-spacing-2xs,.25rem)}.label--required::after{content:'*';color:var(--snice-color-danger,#ef4444);margin-left:var(--snice-spacing-2xs,.25rem)}.input-container{position:relative;display:flex;align-items:center}.input{width:100%;border:1px solid var(--snice-color-border,#d1d5db);border-radius:var(--snice-border-radius-lg,6px);padding:var(--snice-spacing-xs,.5rem) 3rem var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);font-size:inherit;line-height:var(--snice-line-height-normal, 1.5);background:var(--snice-color-background,#fff);color:var(--snice-color-text,#374151);transition:border-color var(--snice-transition-fast, .15s) ease,box-shadow var(--snice-transition-fast, .15s) ease}.input:focus{outline:0;border-color:var(--snice-color-border-focus,#2563eb);box-shadow:0 0 0 var(--snice-focus-ring-width,3px) var(--snice-focus-ring-color,rgba(37,99,235,.1))}.input--small{padding:.375rem 2.75rem .375rem .625rem;font-size:.875rem}.input--large{padding:.75rem 3.5rem .75rem 1rem;font-size:1rem}.input--filled{background:var(--snice-color-background-secondary,#f9fafb);border:1px solid transparent}.input--underlined{border:none;border-bottom:1px solid #d1d5db;border-radius:0;background:0 0;padding-left:0}.input--invalid{border-color:#ef4444}.input--invalid:focus{border-color:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.1)}.input:disabled{background:var(--snice-color-background-secondary,#f9fafb);color:var(--snice-color-text-tertiary,#9ca3af);cursor:not-allowed}.input:not(:disabled):not([readonly]){cursor:pointer}.calendar-toggle,.clear-button{position:absolute;padding:.25rem;border:none;background:0 0;color:#6b7280;cursor:pointer;border-radius:4px;transition:color .15s,background-color .15s}.calendar-toggle{right:.5rem}.clear-button{right:2.5rem}.calendar-toggle:hover,.clear-button:hover{color:#374151;background:#f3f4f6}.calendar-toggle:disabled,.clear-button:disabled{opacity:.5;cursor:not-allowed}.calendar{position:absolute;top:100%;left:0;right:0;z-index:var(--snice-z-index-dropdown,1000);background:var(--snice-color-background-element,#fcfbf9);border:1px solid var(--snice-color-border,#d1d5db);border-radius:var(--snice-border-radius-lg,8px);box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05));margin-top:var(--snice-spacing-3xs,.125rem);padding:var(--snice-spacing-md,1rem);min-width:280px}.calendar[hidden]{display:none}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.calendar-title{flex:1;text-align:center}.month-button{background:0 0;border:none;font-size:var(--snice-font-size-md, 1rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,#374151);cursor:pointer;padding:var(--snice-spacing-2xs,.25rem) var(--snice-spacing-xs,.5rem);border-radius:var(--snice-border-radius-md,4px);transition:background-color var(--snice-transition-fast, .15s) ease}.month-button:hover{background:var(--snice-color-background-tertiary,#f3f4f6)}.nav-button{background:0 0;border:none;padding:.5rem;cursor:pointer;color:#6b7280;border-radius:4px;transition:color .15s,background-color .15s}.nav-button:hover{color:#374151;background:#f3f4f6}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;margin-bottom:.5rem}.weekday{text-align:center;font-size:.75rem;font-weight:600;color:#6b7280;padding:.5rem .25rem}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.day{width:32px;height:32px;border:none;background:0 0;cursor:pointer;border-radius:var(--snice-border-radius-md,4px);font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,#374151);transition:background-color var(--snice-transition-fast, .15s) ease,color var(--snice-transition-fast, .15s) ease;display:flex;align-items:center;justify-content:center}.day:hover:not(.day--disabled){background:var(--snice-color-background-tertiary,#f3f4f6)}.day--today{background:var(--snice-color-primary-light,#dbeafe);color:var(--snice-color-primary,#2563eb);font-weight:var(--snice-font-weight-semibold,600)}.day--selected{background:var(--snice-color-primary,#2563eb);color:var(--snice-color-text-inverse,#fff);font-weight:var(--snice-font-weight-semibold,600)}.day--disabled{color:#d1d5db;cursor:not-allowed}.day--empty{cursor:default}.calendar-footer{margin-top:1rem;padding-top:1rem;border-top:1px solid #f3f4f6;display:flex;justify-content:center}.error-text,.helper-text{font-size:var(--snice-font-size-sm, .875rem);margin-top:var(--snice-spacing-2xs,.25rem)}.helper-text{color:var(--snice-color-text-secondary,#6b7280)}.error-text{color:var(--snice-color-danger,#ef4444)}:host([size=small]) .calendar{min-width:240px;padding:.75rem}:host([size=small]) .day{width:28px;height:28px;font-size:.8125rem}:host([size=large]) .calendar{min-width:320px;padding:1.25rem}:host([size=large]) .day{width:36px;height:36px;font-size:.9375rem}@media (max-width:640px){.calendar{left:50%;right:auto;transform:translateX(-50%);min-width:280px}}";
5
5
 
6
6
  let SniceDatePicker = (() => {
7
7
  let _classDecorators = [element('snice-date-picker')];
@@ -82,16 +82,9 @@ let SniceDatePicker = (() => {
82
82
  let _firstDayButton_decorators;
83
83
  let _firstDayButton_initializers = [];
84
84
  let _firstDayButton_extraInitializers = [];
85
+ let _componentStyles_decorators;
86
+ let _renderContent_decorators;
85
87
  let _init_decorators;
86
- let _handleInput_decorators;
87
- let _handleChange_decorators;
88
- let _handleFocus_decorators;
89
- let _handleInputClick_decorators;
90
- let _handleBlur_decorators;
91
- let _handleCalendarToggle_decorators;
92
- let _handleClear_decorators;
93
- let _handleCalendarClick_decorators;
94
- let _handleKeydown_decorators;
95
88
  let _handleValueChange_decorators;
96
89
  let _handleShowCalendarChange_decorators;
97
90
  let _handleDisabledChange_decorators;
@@ -170,16 +163,9 @@ let SniceDatePicker = (() => {
170
163
  _calendarToggle_decorators = [query('.calendar-toggle')];
171
164
  _selectedDayButton_decorators = [query('.day--selected')];
172
165
  _firstDayButton_decorators = [query('.day:not(.day--empty):not(.day--disabled)')];
166
+ _componentStyles_decorators = [styles()];
167
+ _renderContent_decorators = [render()];
173
168
  _init_decorators = [ready()];
174
- _handleInput_decorators = [on('input', '.input')];
175
- _handleChange_decorators = [on('change', '.input')];
176
- _handleFocus_decorators = [on('focus', '.input')];
177
- _handleInputClick_decorators = [on('click', '.input')];
178
- _handleBlur_decorators = [on('blur', '.input')];
179
- _handleCalendarToggle_decorators = [on('click', '.calendar-toggle')];
180
- _handleClear_decorators = [on('click', '.clear-button')];
181
- _handleCalendarClick_decorators = [on('click', '.calendar')];
182
- _handleKeydown_decorators = [on('keydown', '.input')];
183
169
  _handleValueChange_decorators = [watch('value')];
184
170
  _handleShowCalendarChange_decorators = [watch('show-calendar')];
185
171
  _handleDisabledChange_decorators = [watch('disabled')];
@@ -194,16 +180,9 @@ let SniceDatePicker = (() => {
194
180
  _dispatchCloseEvent_decorators = [dispatch('@snice/datepicker-close', { bubbles: true, composed: true })];
195
181
  _dispatchClearEvent_decorators = [dispatch('@snice/datepicker-clear', { bubbles: true, composed: true })];
196
182
  _dispatchSelectEvent_decorators = [dispatch('@snice/datepicker-select', { bubbles: true, composed: true })];
183
+ __esDecorate(this, null, _componentStyles_decorators, { kind: "method", name: "componentStyles", static: false, private: false, access: { has: obj => "componentStyles" in obj, get: obj => obj.componentStyles }, metadata: _metadata }, null, _instanceExtraInitializers);
184
+ __esDecorate(this, null, _renderContent_decorators, { kind: "method", name: "renderContent", static: false, private: false, access: { has: obj => "renderContent" in obj, get: obj => obj.renderContent }, metadata: _metadata }, null, _instanceExtraInitializers);
197
185
  __esDecorate(this, null, _init_decorators, { kind: "method", name: "init", static: false, private: false, access: { has: obj => "init" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);
198
- __esDecorate(this, null, _handleInput_decorators, { kind: "method", name: "handleInput", static: false, private: false, access: { has: obj => "handleInput" in obj, get: obj => obj.handleInput }, metadata: _metadata }, null, _instanceExtraInitializers);
199
- __esDecorate(this, null, _handleChange_decorators, { kind: "method", name: "handleChange", static: false, private: false, access: { has: obj => "handleChange" in obj, get: obj => obj.handleChange }, metadata: _metadata }, null, _instanceExtraInitializers);
200
- __esDecorate(this, null, _handleFocus_decorators, { kind: "method", name: "handleFocus", static: false, private: false, access: { has: obj => "handleFocus" in obj, get: obj => obj.handleFocus }, metadata: _metadata }, null, _instanceExtraInitializers);
201
- __esDecorate(this, null, _handleInputClick_decorators, { kind: "method", name: "handleInputClick", static: false, private: false, access: { has: obj => "handleInputClick" in obj, get: obj => obj.handleInputClick }, metadata: _metadata }, null, _instanceExtraInitializers);
202
- __esDecorate(this, null, _handleBlur_decorators, { kind: "method", name: "handleBlur", static: false, private: false, access: { has: obj => "handleBlur" in obj, get: obj => obj.handleBlur }, metadata: _metadata }, null, _instanceExtraInitializers);
203
- __esDecorate(this, null, _handleCalendarToggle_decorators, { kind: "method", name: "handleCalendarToggle", static: false, private: false, access: { has: obj => "handleCalendarToggle" in obj, get: obj => obj.handleCalendarToggle }, metadata: _metadata }, null, _instanceExtraInitializers);
204
- __esDecorate(this, null, _handleClear_decorators, { kind: "method", name: "handleClear", static: false, private: false, access: { has: obj => "handleClear" in obj, get: obj => obj.handleClear }, metadata: _metadata }, null, _instanceExtraInitializers);
205
- __esDecorate(this, null, _handleCalendarClick_decorators, { kind: "method", name: "handleCalendarClick", static: false, private: false, access: { has: obj => "handleCalendarClick" in obj, get: obj => obj.handleCalendarClick }, metadata: _metadata }, null, _instanceExtraInitializers);
206
- __esDecorate(this, null, _handleKeydown_decorators, { kind: "method", name: "handleKeydown", static: false, private: false, access: { has: obj => "handleKeydown" in obj, get: obj => obj.handleKeydown }, metadata: _metadata }, null, _instanceExtraInitializers);
207
186
  __esDecorate(this, null, _handleValueChange_decorators, { kind: "method", name: "handleValueChange", static: false, private: false, access: { has: obj => "handleValueChange" in obj, get: obj => obj.handleValueChange }, metadata: _metadata }, null, _instanceExtraInitializers);
208
187
  __esDecorate(this, null, _handleShowCalendarChange_decorators, { kind: "method", name: "handleShowCalendarChange", static: false, private: false, access: { has: obj => "handleShowCalendarChange" in obj, get: obj => obj.handleShowCalendarChange }, metadata: _metadata }, null, _instanceExtraInitializers);
209
188
  __esDecorate(this, null, _handleDisabledChange_decorators, { kind: "method", name: "handleDisabledChange", static: false, private: false, access: { has: obj => "handleDisabledChange" in obj, get: obj => obj.handleDisabledChange }, metadata: _metadata }, null, _instanceExtraInitializers);
@@ -247,49 +226,60 @@ let SniceDatePicker = (() => {
247
226
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
248
227
  __runInitializers(_classThis, _classExtraInitializers);
249
228
  }
250
- css() {
251
- return css;
252
- }
253
- html() {
254
- return /*html*/ `
229
+ componentStyles() {
230
+ return css /*css*/ `${cssContent}`;
231
+ }
232
+ renderContent() {
233
+ const labelClasses = ['label', this.required ? 'label--required' : ''].filter(Boolean).join(' ');
234
+ const inputClasses = [
235
+ 'input',
236
+ `input--${this.size}`,
237
+ `input--${this.variant}`,
238
+ this.invalid ? 'input--invalid' : '',
239
+ this.clearable ? 'input--clearable' : ''
240
+ ].filter(Boolean).join(' ');
241
+ return html /*html*/ `
255
242
  <div class="date-picker-wrapper">
256
- ${this.label ? /*html*/ `
257
- <label class="label ${this.required ? 'label--required' : ''}">
243
+ <if ${this.label}>
244
+ <label class="${labelClasses}">
258
245
  ${this.label}
259
246
  </label>
260
- ` : ''}
261
-
247
+ </if>
248
+
262
249
  <div class="input-container">
263
250
  <input
264
- class="input
265
- input--${this.size}
266
- input--${this.variant}
267
- ${this.invalid ? 'input--invalid' : ''}
268
- ${this.clearable ? 'input--clearable' : ''}"
251
+ class="${inputClasses}"
269
252
  type="text"
270
253
  value="${this.inputValue || this.getFormattedValue()}"
271
254
  placeholder="${this.placeholder || this.getPlaceholderForFormat()}"
272
- ${this.disabled ? 'disabled' : ''}
273
- ${this.readonly ? 'readonly' : ''}
274
- ${this.required ? 'required' : ''}
275
- ${this.name ? `name="${this.name}"` : ''}
255
+ ?disabled=${this.disabled}
256
+ ?readonly=${this.readonly}
257
+ ?required=${this.required}
258
+ name="${this.name || ''}"
276
259
  part="input"
277
260
  autocomplete="off"
261
+ @input=${(e) => this.handleInput(e)}
262
+ @change=${(e) => this.handleChange(e)}
263
+ @focus=${(e) => this.handleFocus(e)}
264
+ @blur=${(e) => this.handleBlur(e)}
265
+ @click=${(e) => this.handleInputClick(e)}
266
+ @keydown=${(e) => this.handleKeydown(e)}
278
267
  />
279
-
268
+
280
269
  <button
281
270
  class="calendar-toggle"
282
271
  type="button"
283
272
  aria-label="Open calendar"
284
273
  tabindex="-1"
285
274
  part="calendar-toggle"
286
- ${this.disabled ? 'disabled' : ''}
275
+ ?disabled=${this.disabled}
276
+ @click=${(e) => this.handleCalendarToggle(e)}
287
277
  >
288
278
  <svg viewBox="0 0 24 24" width="18" height="18">
289
279
  <path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z" fill="currentColor"/>
290
280
  </svg>
291
281
  </button>
292
-
282
+
293
283
  <button
294
284
  class="clear-button"
295
285
  type="button"
@@ -297,62 +287,68 @@ let SniceDatePicker = (() => {
297
287
  tabindex="-1"
298
288
  part="clear"
299
289
  style="display: none;"
290
+ @click=${(e) => this.handleClear(e)}
300
291
  >
301
292
  <svg viewBox="0 0 24 24" width="16" height="16">
302
293
  <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" fill="currentColor"/>
303
294
  </svg>
304
295
  </button>
305
-
306
- <div class="calendar" part="calendar" hidden>
296
+
297
+ <div class="calendar" part="calendar" ?hidden=${!this.showCalendar} @click=${(e) => this.handleCalendarClick(e)}>
307
298
  <div class="calendar-header">
308
299
  <button class="nav-button" type="button" data-nav="prev-month" aria-label="Previous month">
309
300
  <svg viewBox="0 0 24 24" width="20" height="20">
310
301
  <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" fill="currentColor"/>
311
302
  </svg>
312
303
  </button>
313
-
304
+
314
305
  <div class="calendar-title">
315
306
  <button class="month-button" type="button" data-nav="month-picker">
316
307
  ${this.monthNames[this.viewDate.getMonth()]} ${this.viewDate.getFullYear()}
317
308
  </button>
318
309
  </div>
319
-
310
+
320
311
  <button class="nav-button" type="button" data-nav="next-month" aria-label="Next month">
321
312
  <svg viewBox="0 0 24 24" width="20" height="20">
322
313
  <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" fill="currentColor"/>
323
314
  </svg>
324
315
  </button>
325
316
  </div>
326
-
317
+
327
318
  <div class="calendar-weekdays">
328
319
  ${this.getDayHeaders()}
329
320
  </div>
330
-
321
+
331
322
  <div class="calendar-days">
332
323
  ${this.getDaysGrid()}
333
324
  </div>
334
-
325
+
335
326
  <div class="calendar-footer">
336
- <button class="today-button" type="button" data-nav="today">
327
+ <snice-button class="today-button" variant="default" size="small" data-nav="today">
337
328
  Today
338
- </button>
329
+ </snice-button>
339
330
  </div>
340
331
  </div>
341
332
  </div>
342
-
343
- ${this.errorText ? /*html*/ `
344
- <span class="error-text" part="error-text">${this.errorText}</span>
345
- ` : this.helperText ? /*html*/ `
346
- <span class="helper-text" part="helper-text">${this.helperText}</span>
347
- ` : /*html*/ `
348
- <span class="helper-text" part="helper-text">&nbsp;</span>
349
- `}
333
+
334
+ <case ${this.errorText ? 'error' : this.helperText ? 'helper' : 'empty'}>
335
+ <when value="error">
336
+ <span class="error-text" part="error-text">${this.errorText}</span>
337
+ </when>
338
+ <when value="helper">
339
+ <span class="helper-text" part="helper-text">${this.helperText}</span>
340
+ </when>
341
+ <default>
342
+ <span class="helper-text" part="helper-text">&nbsp;</span>
343
+ </default>
344
+ </case>
350
345
  </div>
351
346
  `;
352
347
  }
353
348
  init() {
354
349
  this.parseInitialValue();
355
- this.updateClearButton();
350
+ // Update clear button after queries are resolved
351
+ queueMicrotask(() => this.updateClearButton());
356
352
  this.setupCalendarClickOutside();
357
353
  if (this.input) {
358
354
  this.input.disabled = this.disabled;
@@ -395,36 +391,43 @@ let SniceDatePicker = (() => {
395
391
  }
396
392
  return null;
397
393
  }
398
- let date = new Date(dateString);
399
- if (!isNaN(date.getTime())) {
400
- return date;
401
- }
402
- const parts = dateString.split(/[-\/]/);
403
- if (parts.length !== 3)
404
- return null;
405
- let year, month, day;
406
- switch (this.format) {
407
- case 'mm/dd/yyyy':
408
- case 'mm-dd-yyyy':
409
- [month, day, year] = parts.map(Number);
410
- break;
411
- case 'dd/mm/yyyy':
412
- case 'dd-mm-yyyy':
413
- [day, month, year] = parts.map(Number);
414
- break;
415
- case 'yyyy-mm-dd':
416
- case 'yyyy/mm/dd':
417
- [year, month, day] = parts.map(Number);
418
- break;
419
- default:
420
- return null;
421
- }
422
- if (year && month && day) {
423
- date = new Date(year, month - 1, day);
394
+ // Detect ISO date format (yyyy-mm-dd) and parse manually to avoid UTC issues
395
+ const isoDateRegex = /^(\d{4})-(\d{2})-(\d{2})$/;
396
+ const isoMatch = dateString.match(isoDateRegex);
397
+ if (isoMatch) {
398
+ const [, year, month, day] = isoMatch.map(Number);
399
+ const date = new Date(year, month - 1, day);
424
400
  if (!isNaN(date.getTime())) {
425
401
  return date;
426
402
  }
427
403
  }
404
+ // Try manual parsing based on format
405
+ const parts = dateString.split(/[-\/]/);
406
+ if (parts.length === 3) {
407
+ let year, month, day;
408
+ switch (this.format) {
409
+ case 'mm/dd/yyyy':
410
+ case 'mm-dd-yyyy':
411
+ [month, day, year] = parts.map(Number);
412
+ break;
413
+ case 'dd/mm/yyyy':
414
+ case 'dd-mm-yyyy':
415
+ [day, month, year] = parts.map(Number);
416
+ break;
417
+ case 'yyyy-mm-dd':
418
+ case 'yyyy/mm/dd':
419
+ [year, month, day] = parts.map(Number);
420
+ break;
421
+ default:
422
+ return null;
423
+ }
424
+ if (year && month && day) {
425
+ const date = new Date(year, month - 1, day);
426
+ if (!isNaN(date.getTime())) {
427
+ return date;
428
+ }
429
+ }
430
+ }
428
431
  return null;
429
432
  }
430
433
  formatDate(date) {
@@ -484,7 +487,7 @@ let SniceDatePicker = (() => {
484
487
  for (let i = 0; i < this.firstDayOfWeek; i++) {
485
488
  days.push(days.shift());
486
489
  }
487
- return days.map(day => `<div class="weekday">${day}</div>`).join('');
490
+ return days.map(day => html `<div class="weekday">${day}</div>`);
488
491
  }
489
492
  getDaysGrid() {
490
493
  const year = this.viewDate.getFullYear();
@@ -519,10 +522,10 @@ let SniceDatePicker = (() => {
519
522
  }
520
523
  return false;
521
524
  };
522
- let html = '';
525
+ const days = [];
523
526
  // Empty cells for days before month starts
524
527
  for (let i = 0; i < startingDayOfWeek; i++) {
525
- html += '<div class="day day--empty"></div>';
528
+ days.push(html `<div class="day day--empty"></div>`);
526
529
  }
527
530
  // Days of the month
528
531
  for (let day = 1; day <= daysInMonth; day++) {
@@ -534,19 +537,20 @@ let SniceDatePicker = (() => {
534
537
  classes.push('day--selected');
535
538
  if (isDisabled(date))
536
539
  classes.push('day--disabled');
537
- html += `
538
- <button
539
- class="${classes.join(' ')}"
540
- type="button"
541
- data-date="${year}-${(month + 1).toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}"
542
- ${isDisabled(date) ? 'disabled' : ''}
540
+ const dateStr = `${year}-${(month + 1).toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
541
+ days.push(html `
542
+ <button
543
+ class="${classes.join(' ')}"
544
+ type="button"
545
+ data-date="${dateStr}"
546
+ ?disabled="${isDisabled(date)}"
543
547
  aria-label="${this.formatDate(date)}"
544
548
  >
545
549
  ${day}
546
550
  </button>
547
- `;
551
+ `);
548
552
  }
549
- return html;
553
+ return days;
550
554
  }
551
555
  updateInputValue() {
552
556
  if (this.input && document.activeElement !== this.input) {
@@ -564,21 +568,15 @@ let SniceDatePicker = (() => {
564
568
  return separators >= 2 && value.length >= 8;
565
569
  }
566
570
  updateClearButton() {
567
- if (this.clearButton && this.clearable) {
568
- const shouldShow = this.selectedDate && !this.disabled && !this.readonly;
569
- this.clearButton.style.display = shouldShow ? '' : 'none';
570
- this.clearButton.classList.toggle('clear-button--visible', !!shouldShow);
571
- }
571
+ if (!this.clearButton || !this.clearable)
572
+ return;
573
+ const shouldShow = this.selectedDate && !this.disabled && !this.readonly;
574
+ this.clearButton.style.display = shouldShow ? '' : 'none';
575
+ this.clearButton.classList.toggle('clear-button--visible', !!shouldShow);
572
576
  }
573
577
  updateCalendarGrid() {
574
- const calendarDays = this.calendar?.querySelector('.calendar-days');
575
- const calendarTitle = this.calendar?.querySelector('.month-button');
576
- if (calendarDays) {
577
- calendarDays.innerHTML = this.getDaysGrid();
578
- }
579
- if (calendarTitle) {
580
- calendarTitle.textContent = `${this.monthNames[this.viewDate.getMonth()]} ${this.viewDate.getFullYear()}`;
581
- }
578
+ // Trigger full re-render instead of manual DOM manipulation
579
+ this.renderContent();
582
580
  }
583
581
  setupCalendarClickOutside() {
584
582
  document.addEventListener('click', (e) => {
@@ -588,10 +586,10 @@ let SniceDatePicker = (() => {
588
586
  });
589
587
  }
590
588
  handleInput(e) {
591
- const target = e.target;
592
- this.inputValue = target.value;
593
- const date = this.parseDate(target.value);
594
- if (date && this.isCompleteDate(target.value)) {
589
+ const input = e.target;
590
+ this.inputValue = input.value;
591
+ const date = this.parseDate(input.value);
592
+ if (date && this.isCompleteDate(input.value)) {
595
593
  this.selectedDate = date;
596
594
  this.viewDate = new Date(date);
597
595
  if (this.showCalendar) {
@@ -602,8 +600,8 @@ let SniceDatePicker = (() => {
602
600
  this.dispatchInputEvent();
603
601
  }
604
602
  handleChange(e) {
605
- const target = e.target;
606
- const date = this.parseDate(target.value);
603
+ const input = e.target;
604
+ const date = this.parseDate(input.value);
607
605
  if (date) {
608
606
  this.selectedDate = date;
609
607
  this.value = this.formatDate(date);
@@ -612,10 +610,10 @@ let SniceDatePicker = (() => {
612
610
  this.input.value = this.value;
613
611
  }
614
612
  }
615
- else if (target.value) {
613
+ else if (input.value) {
616
614
  this.selectedDate = null;
617
- this.value = target.value;
618
- this.inputValue = target.value;
615
+ this.value = input.value;
616
+ this.inputValue = input.value;
619
617
  }
620
618
  else {
621
619
  this.selectedDate = null;
@@ -625,18 +623,18 @@ let SniceDatePicker = (() => {
625
623
  this.updateClearButton();
626
624
  this.dispatchChangeEvent();
627
625
  }
628
- handleFocus() {
626
+ handleFocus(e) {
629
627
  this.dispatchFocusEvent();
630
628
  }
631
- handleInputClick() {
629
+ handleInputClick(e) {
632
630
  if (!this.showCalendar && !this.disabled && !this.readonly) {
633
631
  this.open();
634
632
  }
635
633
  }
636
- handleBlur() {
634
+ handleBlur(e) {
637
635
  this.dispatchBlurEvent();
638
636
  }
639
- handleCalendarToggle() {
637
+ handleCalendarToggle(e) {
640
638
  if (this.showCalendar) {
641
639
  this.close();
642
640
  }
@@ -644,7 +642,7 @@ let SniceDatePicker = (() => {
644
642
  this.open();
645
643
  }
646
644
  }
647
- handleClear() {
645
+ handleClear(e) {
648
646
  this.clear();
649
647
  }
650
648
  handleCalendarClick(e) {
@@ -653,7 +651,9 @@ let SniceDatePicker = (() => {
653
651
  if (target.closest('[data-date]')) {
654
652
  const dateString = target.closest('[data-date]')?.getAttribute('data-date');
655
653
  if (dateString) {
656
- const date = new Date(dateString);
654
+ // Parse as local date to avoid timezone issues
655
+ const [year, month, day] = dateString.split('-').map(Number);
656
+ const date = new Date(year, month - 1, day);
657
657
  this.selectDate(date);
658
658
  }
659
659
  }
@@ -696,6 +696,7 @@ let SniceDatePicker = (() => {
696
696
  this.viewDate = new Date(date);
697
697
  }
698
698
  this.updateInputValue();
699
+ this.updateClearButton();
699
700
  if (this.showCalendar) {
700
701
  this.updateCalendarGrid();
701
702
  }