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,9 +1,9 @@
1
1
  import { __runInitializers, __esDecorate } from 'tslib';
2
- import { element, property, query, on, part } from 'snice';
2
+ import { element, property, query, render, styles, ready, html, css } from 'snice';
3
3
  import '../drawer/snice-drawer.js';
4
4
  import '../nav/snice-nav.js';
5
5
 
6
- var css = "/* Sidebar Layout with full-width header */\n:host {\n display: block;\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n}\n\n.layout {\n display: grid;\n grid-template-rows: auto 1fr auto;\n min-height: 100vh;\n}\n\n/* Header spans full width */\n.header {\n display: flex;\n align-items: center;\n gap: var(--snice-spacing-md, 1rem);\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 1.25rem);\n background: var(--snice-color-background, white);\n border-bottom: 1px solid var(--snice-color-border, #e5e7eb);\n z-index: 10;\n}\n\n.header-brand {\n display: flex;\n align-items: center;\n}\n\n.header-brand h2 {\n margin: 0;\n font-size: var(--snice-font-size-lg, 1.125rem);\n font-weight: var(--snice-font-weight-semibold, 600);\n color: var(--snice-color-text, #111827);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sidebar-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--snice-size-control-md, 2rem);\n height: var(--snice-size-control-md, 2rem);\n background: none;\n border: none;\n color: var(--snice-color-text-secondary, #6b7280);\n cursor: pointer;\n padding: var(--snice-spacing-xs, 0.5rem);\n border-radius: var(--snice-border-radius-md, 6px);\n transition: all var(--snice-transition-fast, 150ms) ease;\n}\n\n.sidebar-toggle:hover {\n background: var(--snice-color-primary, rgb(59 130 246));\n color: var(--snice-color-text-inverse, white);\n}\n\n.sidebar-toggle:focus-visible {\n outline: var(--snice-focus-ring-width, 2px) solid var(--snice-focus-ring-color, #3b82f6);\n outline-offset: var(--snice-focus-ring-offset, 2px);\n}\n\n.header-content {\n flex: 1;\n min-width: 0; /* Allow flex item to shrink below content size */\n display: flex;\n align-items: center;\n gap: var(--snice-spacing-md, 1rem);\n}\n\n/* Ensure slotted content can take full width */\n.header-content ::slotted(*) {\n flex: 1;\n width: 100%;\n}\n\n/* Body area contains drawer and main content */\n.body-area {\n position: relative;\n display: flex;\n flex: 1;\n overflow: hidden;\n background: var(--snice-color-background-secondary, #f8fafc);\n}\n\n.sidebar-drawer {\n flex-shrink: 0;\n}\n\n.sidebar-nav {\n display: flex;\n flex-direction: column;\n gap: var(--snice-spacing-sm, 0.75rem);\n padding: var(--snice-spacing-md, 1rem);\n}\n\n.main {\n flex: 1;\n padding: var(--snice-spacing-lg, 1.25rem);\n overflow-y: auto;\n background: var(--snice-color-background-secondary, #f8fafc);\n}\n\n/* Footer spans full width */\n.footer {\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 1.25rem);\n background: var(--snice-color-background, white);\n border-top: 1px solid var(--snice-color-border, #e5e7eb);\n}\n\n.footer:empty {\n display: none;\n}\n\n/* Responsive behavior */\n@media (max-width: 768px) {\n .header {\n padding: var(--snice-spacing-sm, 0.75rem) var(--snice-spacing-md, 1rem);\n }\n\n .main {\n padding: var(--snice-spacing-md, 1rem);\n }\n\n .footer {\n padding: var(--snice-spacing-sm, 0.75rem) var(--snice-spacing-md, 1rem);\n }\n}";
6
+ var cssContent = ":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)}.layout{display:grid;grid-template-rows:auto 1fr auto;min-height:100vh}.header{display:flex;align-items:center;gap:var(--snice-spacing-md,1rem);padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,1.25rem);background:var(--snice-color-background,#fff);border-bottom:1px solid var(--snice-color-border,#e5e7eb);z-index:10}.header-brand{display:flex;align-items:center}.header-brand h2{margin:0;font-size:var(--snice-font-size-lg, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,#111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-toggle{display:flex;align-items:center;justify-content:center;width:var(--snice-size-control-md,2rem);height:var(--snice-size-control-md,2rem);background:0 0;border:none;color:var(--snice-color-text-secondary,#6b7280);cursor:pointer;padding:var(--snice-spacing-xs,.5rem);border-radius:var(--snice-border-radius-md,6px);transition:all var(--snice-transition-fast, 150ms) ease}.sidebar-toggle:hover{background:var(--snice-color-primary,rgb(59 130 246));color:var(--snice-color-text-inverse,#fff)}.sidebar-toggle:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,#3b82f6);outline-offset:var(--snice-focus-ring-offset,2px)}.header-content{flex:1;min-width:0;display:flex;align-items:center;gap:var(--snice-spacing-md,1rem)}.header-content ::slotted(*){flex:1;width:100%}.body-area{position:relative;display:flex;flex:1;overflow:hidden;background:var(--snice-color-background-secondary,#f8fafc)}.sidebar-drawer{flex-shrink:0}.sidebar-nav{display:flex;flex-direction:column;gap:var(--snice-spacing-sm,.75rem);padding:var(--snice-spacing-md,1rem)}.main{flex:1;padding:var(--snice-spacing-lg,1.25rem);overflow-y:auto;background:var(--snice-color-background-secondary,#f8fafc)}.footer{padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,1.25rem);background:var(--snice-color-background,#fff);border-top:1px solid var(--snice-color-border,#e5e7eb)}.footer:empty{display:none}@media (max-width:768px){.header{padding:var(--snice-spacing-sm,.75rem) var(--snice-spacing-md,1rem)}.main{padding:var(--snice-spacing-md,1rem)}.footer{padding:var(--snice-spacing-sm,.75rem) var(--snice-spacing-md,1rem)}}";
7
7
 
8
8
  let SniceLayoutSidebar = (() => {
9
9
  let _classDecorators = [element('snice-layout-sidebar')];
@@ -21,8 +21,9 @@ let SniceLayoutSidebar = (() => {
21
21
  let _navElement_decorators;
22
22
  let _navElement_initializers = [];
23
23
  let _navElement_extraInitializers = [];
24
- let _handleSidebarToggle_decorators;
25
- let _renderNav_decorators;
24
+ let _renderContent_decorators;
25
+ let _componentStyles_decorators;
26
+ let _init_decorators;
26
27
  (class extends _classSuper {
27
28
  static { _classThis = this; }
28
29
  constructor() {
@@ -38,10 +39,12 @@ let SniceLayoutSidebar = (() => {
38
39
  _collapsed_decorators = [property({ type: Boolean, })];
39
40
  _sidebarDrawer_decorators = [query('.sidebar-drawer')];
40
41
  _navElement_decorators = [query('snice-nav')];
41
- _handleSidebarToggle_decorators = [on('click', '.sidebar-toggle')];
42
- _renderNav_decorators = [part('nav')];
43
- __esDecorate(this, null, _handleSidebarToggle_decorators, { kind: "method", name: "handleSidebarToggle", static: false, private: false, access: { has: obj => "handleSidebarToggle" in obj, get: obj => obj.handleSidebarToggle }, metadata: _metadata }, null, _instanceExtraInitializers);
44
- __esDecorate(this, null, _renderNav_decorators, { kind: "method", name: "renderNav", static: false, private: false, access: { has: obj => "renderNav" in obj, get: obj => obj.renderNav }, metadata: _metadata }, null, _instanceExtraInitializers);
42
+ _renderContent_decorators = [render()];
43
+ _componentStyles_decorators = [styles()];
44
+ _init_decorators = [ready()];
45
+ __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);
46
+ __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);
47
+ __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);
45
48
  __esDecorate(null, null, _collapsed_decorators, { kind: "field", name: "collapsed", static: false, private: false, access: { has: obj => "collapsed" in obj, get: obj => obj.collapsed, set: (obj, value) => { obj.collapsed = value; } }, metadata: _metadata }, _collapsed_initializers, _collapsed_extraInitializers);
46
49
  __esDecorate(null, null, _sidebarDrawer_decorators, { kind: "field", name: "sidebarDrawer", static: false, private: false, access: { has: obj => "sidebarDrawer" in obj, get: obj => obj.sidebarDrawer, set: (obj, value) => { obj.sidebarDrawer = value; } }, metadata: _metadata }, _sidebarDrawer_initializers, _sidebarDrawer_extraInitializers);
47
50
  __esDecorate(null, null, _navElement_decorators, { kind: "field", name: "navElement", static: false, private: false, access: { has: obj => "navElement" in obj, get: obj => obj.navElement, set: (obj, value) => { obj.navElement = value; } }, metadata: _metadata }, _navElement_initializers, _navElement_extraInitializers);
@@ -50,11 +53,11 @@ let SniceLayoutSidebar = (() => {
50
53
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
51
54
  __runInitializers(_classThis, _classExtraInitializers);
52
55
  }
53
- html() {
54
- return /*html*/ `
56
+ renderContent() {
57
+ return html /*html*/ `
55
58
  <div class="layout">
56
59
  <header class="header">
57
- <button class="sidebar-toggle" type="button" aria-label="Toggle sidebar">
60
+ <button class="sidebar-toggle" type="button" aria-label="Toggle sidebar" @click=${this.handleSidebarToggle}>
58
61
  <svg viewBox="0 0 24 24" width="20" height="20">
59
62
  <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" fill="currentColor"/>
60
63
  </svg>
@@ -72,7 +75,7 @@ let SniceLayoutSidebar = (() => {
72
75
  <div class="body-area">
73
76
  <snice-drawer class="sidebar-drawer" position="left" size="medium" contained>
74
77
  <span slot="title">Navigation</span>
75
- <snice-nav class="sidebar-nav" part="nav" variant="hierarchical" orientation="vertical"></snice-nav>
78
+ <snice-nav class="sidebar-nav" variant="hierarchical" orientation="vertical"></snice-nav>
76
79
  </snice-drawer>
77
80
 
78
81
  <main class="main">
@@ -86,26 +89,45 @@ let SniceLayoutSidebar = (() => {
86
89
  </div>
87
90
  `;
88
91
  }
89
- css() {
90
- return css;
92
+ componentStyles() {
93
+ return css /*css*/ `${cssContent}`;
91
94
  }
92
95
  handleSidebarToggle() {
93
96
  if (this.sidebarDrawer) {
94
97
  this.sidebarDrawer.toggle();
95
98
  }
96
99
  }
97
- update(_appContext, placards, currentRoute, _routeParams) {
100
+ init() {
101
+ // Update nav when component is ready and shadow DOM is available
102
+ this.updateNav();
103
+ }
104
+ update(appContext, placards, currentRoute, routeParams) {
98
105
  this.placards = placards;
99
106
  this.currentRoute = currentRoute;
100
107
  // Update the navigation
101
- this.renderNav();
108
+ this.updateNav(appContext, routeParams);
102
109
  }
103
- renderNav() {
110
+ updateNav(appContext, routeParams) {
111
+ // If @query hasn't resolved yet, try manual query
112
+ if (!this.navElement && this.shadowRoot) {
113
+ const manualNav = this.shadowRoot.querySelector('snice-nav');
114
+ if (manualNav) {
115
+ manualNav.update(this.placards, appContext, this.currentRoute, routeParams);
116
+ return;
117
+ }
118
+ }
104
119
  if (this.navElement) {
105
- this.navElement.placards = this.placards;
106
- this.navElement.currentRoute = this.currentRoute;
120
+ this.navElement.update(this.placards, appContext, this.currentRoute, routeParams);
121
+ }
122
+ else {
123
+ // Shadow DOM not ready yet, retry after next frame
124
+ requestAnimationFrame(() => {
125
+ const nav = this.shadowRoot?.querySelector('snice-nav');
126
+ if (nav) {
127
+ nav.update(this.placards, appContext, this.currentRoute, routeParams);
128
+ }
129
+ });
107
130
  }
108
- return '';
109
131
  }
110
132
  });
111
133
  return _classThis;
@@ -1 +1 @@
1
- {"version":3,"file":"snice-layout-sidebar.js","sources":["../../../components/layout/snice-layout-sidebar.css?inline","../../../../components/layout/snice-layout-sidebar.ts"],"sourcesContent":["export default \"/* Sidebar Layout with full-width header */\\n:host {\\n display: block;\\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\\n}\\n\\n.layout {\\n display: grid;\\n grid-template-rows: auto 1fr auto;\\n min-height: 100vh;\\n}\\n\\n/* Header spans full width */\\n.header {\\n display: flex;\\n align-items: center;\\n gap: var(--snice-spacing-md, 1rem);\\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 1.25rem);\\n background: var(--snice-color-background, white);\\n border-bottom: 1px solid var(--snice-color-border, #e5e7eb);\\n z-index: 10;\\n}\\n\\n.header-brand {\\n display: flex;\\n align-items: center;\\n}\\n\\n.header-brand h2 {\\n margin: 0;\\n font-size: var(--snice-font-size-lg, 1.125rem);\\n font-weight: var(--snice-font-weight-semibold, 600);\\n color: var(--snice-color-text, #111827);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.sidebar-toggle {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: var(--snice-size-control-md, 2rem);\\n height: var(--snice-size-control-md, 2rem);\\n background: none;\\n border: none;\\n color: var(--snice-color-text-secondary, #6b7280);\\n cursor: pointer;\\n padding: var(--snice-spacing-xs, 0.5rem);\\n border-radius: var(--snice-border-radius-md, 6px);\\n transition: all var(--snice-transition-fast, 150ms) ease;\\n}\\n\\n.sidebar-toggle:hover {\\n background: var(--snice-color-primary, rgb(59 130 246));\\n color: var(--snice-color-text-inverse, white);\\n}\\n\\n.sidebar-toggle:focus-visible {\\n outline: var(--snice-focus-ring-width, 2px) solid var(--snice-focus-ring-color, #3b82f6);\\n outline-offset: var(--snice-focus-ring-offset, 2px);\\n}\\n\\n.header-content {\\n flex: 1;\\n min-width: 0; /* Allow flex item to shrink below content size */\\n display: flex;\\n align-items: center;\\n gap: var(--snice-spacing-md, 1rem);\\n}\\n\\n/* Ensure slotted content can take full width */\\n.header-content ::slotted(*) {\\n flex: 1;\\n width: 100%;\\n}\\n\\n/* Body area contains drawer and main content */\\n.body-area {\\n position: relative;\\n display: flex;\\n flex: 1;\\n overflow: hidden;\\n background: var(--snice-color-background-secondary, #f8fafc);\\n}\\n\\n.sidebar-drawer {\\n flex-shrink: 0;\\n}\\n\\n.sidebar-nav {\\n display: flex;\\n flex-direction: column;\\n gap: var(--snice-spacing-sm, 0.75rem);\\n padding: var(--snice-spacing-md, 1rem);\\n}\\n\\n.main {\\n flex: 1;\\n padding: var(--snice-spacing-lg, 1.25rem);\\n overflow-y: auto;\\n background: var(--snice-color-background-secondary, #f8fafc);\\n}\\n\\n/* Footer spans full width */\\n.footer {\\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 1.25rem);\\n background: var(--snice-color-background, white);\\n border-top: 1px solid var(--snice-color-border, #e5e7eb);\\n}\\n\\n.footer:empty {\\n display: none;\\n}\\n\\n/* Responsive behavior */\\n@media (max-width: 768px) {\\n .header {\\n padding: var(--snice-spacing-sm, 0.75rem) var(--snice-spacing-md, 1rem);\\n }\\n\\n .main {\\n padding: var(--snice-spacing-md, 1rem);\\n }\\n\\n .footer {\\n padding: var(--snice-spacing-sm, 0.75rem) var(--snice-spacing-md, 1rem);\\n }\\n}\";",null],"names":[],"mappings":";;;;;AAAA,UAAe,gnGAAgnG;;ICSlnG,kBAAkB,GAAA,CAAA,MAAA;4BAD9B,OAAO,CAAC,sBAAsB,CAAC,CAAA;;;;sBACQ,WAAW;;;;;;;;;;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;AAEjD,YAAA,IAAA,CAAA,SAAS,IAFE,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAkB,EAAA,iBAAA,CAAA,IAAA,EAAA,uBAAA,EAEjB,KAAK,CAAA,CAAA;AAGjB,YAAA,IAAA,CAAA,aAAa,IAAA,iBAAA,CAAA,IAAA,EAAA,4BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,2BAAA,EAAA,MAAA,CAAA,CAAA;AAGb,YAAA,IAAA,CAAA,UAAU,IAAA,iBAAA,CAAA,IAAA,EAAA,gCAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,wBAAA,EAAA,MAAA,CAAA,CAAA;YAEF,IAAA,CAAA,QAAQ,IAAA,iBAAA,CAAA,IAAA,EAAA,6BAAA,CAAA,EAAc,EAAE,CAAA;YACxB,IAAA,CAAA,YAAY,GAAG,EAAE;QAkE3B;;;AA5EG,YAAA,qBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,GAAI,CAAC,CAAA;yCAG7B,KAAK,CAAC,iBAAiB,CAAC,CAAA;sCAGxB,KAAK,CAAC,WAAW,CAAC,CAAA;AA+ClB,YAAA,+BAAA,GAAA,CAAA,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;qCAe9B,IAAI,CAAC,KAAK,CAAC,CAAA;AAdZ,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,+BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,qBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,mBAAmB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAenB,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,WAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,SAAS,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;YApET,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,WAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,WAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,SAAS,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAT,SAAS,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,4BAAA,CAAA;YAGT,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,eAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,aAAa,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAb,aAAa,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,2BAAA,EAAA,gCAAA,CAAA;YAGb,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,YAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,UAAU,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAV,UAAU,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,wBAAA,EAAA,6BAAA,CAAA;YARZ,YAAA,CAAA,IAAA,EAAA,gBAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,uBAAA,CAAA;;;YAAa,iBAAA,CAAA,UAAA,EAAA,uBAAA,CAAA;;QAaX,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;QAGA,mBAAmB,GAAA;AACjB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7B;QACF;AAEA,QAAA,MAAM,CAAC,WAAuB,EAAE,QAAmB,EAAE,YAAoB,EAAE,YAAyB,EAAA;AAClG,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;;YAGhC,IAAI,CAAC,SAAS,EAAE;QAClB;QAGA,SAAS,GAAA;AACP,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;gBACxC,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;YAClD;AACA,YAAA,OAAO,EAAE;QACX;;;;;;;"}
1
+ {"version":3,"file":"snice-layout-sidebar.js","sources":["../../../components/layout/snice-layout-sidebar.css?inline","../../../../components/layout/snice-layout-sidebar.ts"],"sourcesContent":["export default \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)}.layout{display:grid;grid-template-rows:auto 1fr auto;min-height:100vh}.header{display:flex;align-items:center;gap:var(--snice-spacing-md,1rem);padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,1.25rem);background:var(--snice-color-background,#fff);border-bottom:1px solid var(--snice-color-border,#e5e7eb);z-index:10}.header-brand{display:flex;align-items:center}.header-brand h2{margin:0;font-size:var(--snice-font-size-lg, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,#111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-toggle{display:flex;align-items:center;justify-content:center;width:var(--snice-size-control-md,2rem);height:var(--snice-size-control-md,2rem);background:0 0;border:none;color:var(--snice-color-text-secondary,#6b7280);cursor:pointer;padding:var(--snice-spacing-xs,.5rem);border-radius:var(--snice-border-radius-md,6px);transition:all var(--snice-transition-fast, 150ms) ease}.sidebar-toggle:hover{background:var(--snice-color-primary,rgb(59 130 246));color:var(--snice-color-text-inverse,#fff)}.sidebar-toggle:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,#3b82f6);outline-offset:var(--snice-focus-ring-offset,2px)}.header-content{flex:1;min-width:0;display:flex;align-items:center;gap:var(--snice-spacing-md,1rem)}.header-content ::slotted(*){flex:1;width:100%}.body-area{position:relative;display:flex;flex:1;overflow:hidden;background:var(--snice-color-background-secondary,#f8fafc)}.sidebar-drawer{flex-shrink:0}.sidebar-nav{display:flex;flex-direction:column;gap:var(--snice-spacing-sm,.75rem);padding:var(--snice-spacing-md,1rem)}.main{flex:1;padding:var(--snice-spacing-lg,1.25rem);overflow-y:auto;background:var(--snice-color-background-secondary,#f8fafc)}.footer{padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,1.25rem);background:var(--snice-color-background,#fff);border-top:1px solid var(--snice-color-border,#e5e7eb)}.footer:empty{display:none}@media (max-width:768px){.header{padding:var(--snice-spacing-sm,.75rem) var(--snice-spacing-md,1rem)}.main{padding:var(--snice-spacing-md,1rem)}.footer{padding:var(--snice-spacing-sm,.75rem) var(--snice-spacing-md,1rem)}}\";",null],"names":[],"mappings":";;;;;AAAA,iBAAe,0zEAA0zE;;ICS5zE,kBAAkB,GAAA,CAAA,MAAA;4BAD9B,OAAO,CAAC,sBAAsB,CAAC,CAAA;;;;sBACQ,WAAW;;;;;;;;;;;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;AAEjD,YAAA,IAAA,CAAA,SAAS,IAFE,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAkB,EAAA,iBAAA,CAAA,IAAA,EAAA,uBAAA,EAEjB,KAAK,CAAA,CAAA;AAGjB,YAAA,IAAA,CAAA,aAAa,IAAA,iBAAA,CAAA,IAAA,EAAA,4BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,2BAAA,EAAA,MAAA,CAAA,CAAA;AAGb,YAAA,IAAA,CAAA,UAAU,IAAA,iBAAA,CAAA,IAAA,EAAA,gCAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,wBAAA,EAAA,MAAA,CAAA,CAAA;YAEF,IAAA,CAAA,QAAQ,IAAA,iBAAA,CAAA,IAAA,EAAA,6BAAA,CAAA,EAAc,EAAE,CAAA;YACxB,IAAA,CAAA,YAAY,GAAG,EAAE;QAuF3B;;;AAjGG,YAAA,qBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,GAAI,CAAC,CAAA;yCAG7B,KAAK,CAAC,iBAAiB,CAAC,CAAA;sCAGxB,KAAK,CAAC,WAAW,CAAC,CAAA;AAMlB,YAAA,yBAAA,GAAA,CAAA,MAAM,EAAE,CAAA;AAsCR,YAAA,2BAAA,GAAA,CAAA,MAAM,EAAE,CAAA;AAWR,YAAA,gBAAA,GAAA,CAAA,KAAK,EAAE,CAAA;AAhDR,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,eAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,aAAa,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAsCb,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,iBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,eAAe,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAWf,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,MAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,IAAI,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;YA7DJ,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,WAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,WAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,SAAS,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAT,SAAS,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,4BAAA,CAAA;YAGT,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,eAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,aAAa,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAb,aAAa,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,2BAAA,EAAA,gCAAA,CAAA;YAGb,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,YAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,UAAU,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAV,UAAU,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,wBAAA,EAAA,6BAAA,CAAA;YARZ,YAAA,CAAA,IAAA,EAAA,gBAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,uBAAA,CAAA;;;YAAa,iBAAA,CAAA,UAAA,EAAA,uBAAA,CAAA;;QAcX,aAAa,GAAA;YACX,OAAO,IAAI,UAAQ;;;AAGqE,0FAAA,EAAA,IAAI,CAAC,mBAAmB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8B/G;QACH;QAGA,eAAe,GAAA;AACb,YAAA,OAAO,GAAG,SAAO,CAAA,EAAG,UAAU,EAAE;QAClC;QAEA,mBAAmB,GAAA;AACjB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7B;QACF;QAGA,IAAI,GAAA;;YAEF,IAAI,CAAC,SAAS,EAAE;QAClB;AAEA,QAAA,MAAM,CAAC,UAAsB,EAAE,QAAmB,EAAE,YAAoB,EAAE,WAAwB,EAAA;AAChG,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;;AAGhC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC;QACzC;QAEA,SAAS,CAAC,UAAuB,EAAE,WAAyB,EAAA;;YAE1D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;gBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;gBAC5D,IAAI,SAAS,EAAE;AACZ,oBAAA,SAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;oBACzF;gBACF;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;YACnF;iBAAO;;gBAEL,qBAAqB,CAAC,MAAK;oBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,WAAW,CAAa;oBACnE,IAAI,GAAG,EAAE;AACP,wBAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;oBACvE;AACF,gBAAA,CAAC,CAAC;YACJ;QACF;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  export declare class SniceLayoutSplit extends HTMLElement {
2
2
  direction: 'horizontal' | 'vertical';
3
3
  ratio: '50-50' | '60-40' | '70-30' | '33-67' | '67-33';
4
- html(): string;
5
- css(): string;
4
+ renderContent(): import("snice").TemplateResult;
5
+ componentStyles(): import("snice").CSSResult;
6
6
  }
@@ -1,7 +1,7 @@
1
1
  import { __esDecorate, __runInitializers } from 'tslib';
2
- import { element, property } from 'snice';
2
+ import { element, property, render, styles, html, css } from 'snice';
3
3
 
4
- var css = "/* Split Layout - Two panels side by side */\n:host {\n display: block;\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n}\n\n.layout {\n display: grid;\n min-height: 100vh;\n gap: 1px;\n background: var(--snice-color-border, #d1d5db);\n}\n\n/* Horizontal split (default) */\n:host([direction=\"horizontal\"]) .layout,\n:host(:not([direction])) .layout {\n grid-template-columns: 1fr auto 1fr;\n grid-template-rows: 1fr;\n}\n\n/* Vertical split */\n:host([direction=\"vertical\"]) .layout {\n grid-template-rows: 1fr auto 1fr;\n grid-template-columns: 1fr;\n}\n\n/* Ratio variants - Horizontal */\n:host([ratio=\"50-50\"]) .layout,\n:host(:not([ratio])) .layout {\n grid-template-columns: 1fr 1px 1fr;\n}\n\n:host([ratio=\"60-40\"]) .layout {\n grid-template-columns: 60fr 1px 40fr;\n}\n\n:host([ratio=\"70-30\"]) .layout {\n grid-template-columns: 70fr 1px 30fr;\n}\n\n:host([ratio=\"33-67\"]) .layout {\n grid-template-columns: 33fr 1px 67fr;\n}\n\n:host([ratio=\"67-33\"]) .layout {\n grid-template-columns: 67fr 1px 33fr;\n}\n\n/* Ratio variants - Vertical */\n:host([direction=\"vertical\"][ratio=\"50-50\"]) .layout,\n:host([direction=\"vertical\"]:not([ratio])) .layout {\n grid-template-rows: 1fr 1px 1fr;\n}\n\n:host([direction=\"vertical\"][ratio=\"60-40\"]) .layout {\n grid-template-rows: 60fr 1px 40fr;\n}\n\n:host([direction=\"vertical\"][ratio=\"70-30\"]) .layout {\n grid-template-rows: 70fr 1px 30fr;\n}\n\n:host([direction=\"vertical\"][ratio=\"33-67\"]) .layout {\n grid-template-rows: 33fr 1px 67fr;\n}\n\n:host([direction=\"vertical\"][ratio=\"67-33\"]) .layout {\n grid-template-rows: 67fr 1px 33fr;\n}\n\n.panel {\n background: var(--snice-color-background, white);\n overflow: auto;\n}\n\n.panel-left {\n padding: var(--snice-spacing-lg, 2rem);\n}\n\n.panel-right {\n padding: var(--snice-spacing-lg, 2rem);\n}\n\n.divider {\n background: var(--snice-color-border, #d1d5db);\n}\n\n/* Mobile responsive */\n@media (max-width: 768px) {\n .layout {\n grid-template-columns: 1fr !important;\n grid-template-rows: auto auto auto !important;\n }\n \n .divider {\n height: 1px;\n }\n \n .panel-left,\n .panel-right {\n padding: var(--snice-spacing-md, 1rem);\n }\n}";
4
+ var cssContent = ":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)}.layout{display:grid;min-height:100vh;gap:1px;background:var(--snice-color-border,#d1d5db)}:host(:not([direction])) .layout,:host([direction=horizontal]) .layout{grid-template-columns:1fr auto 1fr;grid-template-rows:1fr}:host([direction=vertical]) .layout{grid-template-rows:1fr auto 1fr;grid-template-columns:1fr}:host(:not([ratio])) .layout,:host([ratio=\"50-50\"]) .layout{grid-template-columns:1fr 1px 1fr}:host([ratio=\"60-40\"]) .layout{grid-template-columns:60fr 1px 40fr}:host([ratio=\"70-30\"]) .layout{grid-template-columns:70fr 1px 30fr}:host([ratio=\"33-67\"]) .layout{grid-template-columns:33fr 1px 67fr}:host([ratio=\"67-33\"]) .layout{grid-template-columns:67fr 1px 33fr}:host([direction=vertical]:not([ratio])) .layout,:host([direction=vertical][ratio=\"50-50\"]) .layout{grid-template-rows:1fr 1px 1fr}:host([direction=vertical][ratio=\"60-40\"]) .layout{grid-template-rows:60fr 1px 40fr}:host([direction=vertical][ratio=\"70-30\"]) .layout{grid-template-rows:70fr 1px 30fr}:host([direction=vertical][ratio=\"33-67\"]) .layout{grid-template-rows:33fr 1px 67fr}:host([direction=vertical][ratio=\"67-33\"]) .layout{grid-template-rows:67fr 1px 33fr}.panel{background:var(--snice-color-background,#fff);overflow:auto}.panel-left,.panel-right{padding:var(--snice-spacing-lg,2rem)}.divider{background:var(--snice-color-border,#d1d5db)}@media (max-width:768px){.layout{grid-template-columns:1fr!important;grid-template-rows:auto auto auto!important}.divider{height:1px}.panel-left,.panel-right{padding:var(--snice-spacing-md,1rem)}}";
5
5
 
6
6
  let SniceLayoutSplit = (() => {
7
7
  let _classDecorators = [element('snice-layout-split')];
@@ -9,18 +9,25 @@ let SniceLayoutSplit = (() => {
9
9
  let _classExtraInitializers = [];
10
10
  let _classThis;
11
11
  let _classSuper = HTMLElement;
12
+ let _instanceExtraInitializers = [];
12
13
  let _direction_decorators;
13
14
  let _direction_initializers = [];
14
15
  let _direction_extraInitializers = [];
15
16
  let _ratio_decorators;
16
17
  let _ratio_initializers = [];
17
18
  let _ratio_extraInitializers = [];
19
+ let _renderContent_decorators;
20
+ let _componentStyles_decorators;
18
21
  (class extends _classSuper {
19
22
  static { _classThis = this; }
20
23
  static {
21
24
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
22
25
  _direction_decorators = [property({})];
23
26
  _ratio_decorators = [property({})];
27
+ _renderContent_decorators = [render()];
28
+ _componentStyles_decorators = [styles()];
29
+ __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);
30
+ __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);
24
31
  __esDecorate(null, null, _direction_decorators, { kind: "field", name: "direction", static: false, private: false, access: { has: obj => "direction" in obj, get: obj => obj.direction, set: (obj, value) => { obj.direction = value; } }, metadata: _metadata }, _direction_initializers, _direction_extraInitializers);
25
32
  __esDecorate(null, null, _ratio_decorators, { kind: "field", name: "ratio", static: false, private: false, access: { has: obj => "ratio" in obj, get: obj => obj.ratio, set: (obj, value) => { obj.ratio = value; } }, metadata: _metadata }, _ratio_initializers, _ratio_extraInitializers);
26
33
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
@@ -28,8 +35,8 @@ let SniceLayoutSplit = (() => {
28
35
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
29
36
  __runInitializers(_classThis, _classExtraInitializers);
30
37
  }
31
- html() {
32
- return /*html*/ `
38
+ renderContent() {
39
+ return html /*html*/ `
33
40
  <div class="layout">
34
41
  <div class="panel panel-left">
35
42
  <slot name="left"></slot>
@@ -41,12 +48,12 @@ let SniceLayoutSplit = (() => {
41
48
  </div>
42
49
  `;
43
50
  }
44
- css() {
45
- return css;
51
+ componentStyles() {
52
+ return css /*css*/ `${cssContent}`;
46
53
  }
47
54
  constructor() {
48
55
  super(...arguments);
49
- this.direction = __runInitializers(this, _direction_initializers, 'horizontal');
56
+ this.direction = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _direction_initializers, 'horizontal'));
50
57
  this.ratio = (__runInitializers(this, _direction_extraInitializers), __runInitializers(this, _ratio_initializers, '50-50'));
51
58
  __runInitializers(this, _ratio_extraInitializers);
52
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snice-layout-split.js","sources":["../../../components/layout/snice-layout-split.css?inline","../../../../components/layout/snice-layout-split.ts"],"sourcesContent":["export default \"/* Split Layout - Two panels side by side */\\n:host {\\n display: block;\\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\\n}\\n\\n.layout {\\n display: grid;\\n min-height: 100vh;\\n gap: 1px;\\n background: var(--snice-color-border, #d1d5db);\\n}\\n\\n/* Horizontal split (default) */\\n:host([direction=\\\"horizontal\\\"]) .layout,\\n:host(:not([direction])) .layout {\\n grid-template-columns: 1fr auto 1fr;\\n grid-template-rows: 1fr;\\n}\\n\\n/* Vertical split */\\n:host([direction=\\\"vertical\\\"]) .layout {\\n grid-template-rows: 1fr auto 1fr;\\n grid-template-columns: 1fr;\\n}\\n\\n/* Ratio variants - Horizontal */\\n:host([ratio=\\\"50-50\\\"]) .layout,\\n:host(:not([ratio])) .layout {\\n grid-template-columns: 1fr 1px 1fr;\\n}\\n\\n:host([ratio=\\\"60-40\\\"]) .layout {\\n grid-template-columns: 60fr 1px 40fr;\\n}\\n\\n:host([ratio=\\\"70-30\\\"]) .layout {\\n grid-template-columns: 70fr 1px 30fr;\\n}\\n\\n:host([ratio=\\\"33-67\\\"]) .layout {\\n grid-template-columns: 33fr 1px 67fr;\\n}\\n\\n:host([ratio=\\\"67-33\\\"]) .layout {\\n grid-template-columns: 67fr 1px 33fr;\\n}\\n\\n/* Ratio variants - Vertical */\\n:host([direction=\\\"vertical\\\"][ratio=\\\"50-50\\\"]) .layout,\\n:host([direction=\\\"vertical\\\"]:not([ratio])) .layout {\\n grid-template-rows: 1fr 1px 1fr;\\n}\\n\\n:host([direction=\\\"vertical\\\"][ratio=\\\"60-40\\\"]) .layout {\\n grid-template-rows: 60fr 1px 40fr;\\n}\\n\\n:host([direction=\\\"vertical\\\"][ratio=\\\"70-30\\\"]) .layout {\\n grid-template-rows: 70fr 1px 30fr;\\n}\\n\\n:host([direction=\\\"vertical\\\"][ratio=\\\"33-67\\\"]) .layout {\\n grid-template-rows: 33fr 1px 67fr;\\n}\\n\\n:host([direction=\\\"vertical\\\"][ratio=\\\"67-33\\\"]) .layout {\\n grid-template-rows: 67fr 1px 33fr;\\n}\\n\\n.panel {\\n background: var(--snice-color-background, white);\\n overflow: auto;\\n}\\n\\n.panel-left {\\n padding: var(--snice-spacing-lg, 2rem);\\n}\\n\\n.panel-right {\\n padding: var(--snice-spacing-lg, 2rem);\\n}\\n\\n.divider {\\n background: var(--snice-color-border, #d1d5db);\\n}\\n\\n/* Mobile responsive */\\n@media (max-width: 768px) {\\n .layout {\\n grid-template-columns: 1fr !important;\\n grid-template-rows: auto auto auto !important;\\n }\\n \\n .divider {\\n height: 1px;\\n }\\n \\n .panel-left,\\n .panel-right {\\n padding: var(--snice-spacing-md, 1rem);\\n }\\n}\";",null],"names":[],"mappings":";;;AAAA,UAAe,kvEAAkvE;;ICIpvE,gBAAgB,GAAA,CAAA,MAAA;4BAD5B,OAAO,CAAC,oBAAoB,CAAC,CAAA;;;;sBACQ,WAAW;;;;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;qCAC9C,QAAQ,CAAC,EAAI,CAAC,CAAA;iCAGd,QAAQ,CAAC,EAAI,CAAC,CAAA;YAFf,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,WAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,WAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,SAAS,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAT,SAAS,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,4BAAA,CAAA;YAGT,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,OAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,KAAK,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAL,KAAK,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,wBAAA,CAAA;YALP,YAAA,CAAA,IAAA,EAAA,gBAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,uBAAA,CAAA;;;YAAa,iBAAA,CAAA,UAAA,EAAA,uBAAA,CAAA;;QAOX,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;;;;;KAUd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;;;YArBA,IAAA,CAAA,SAAS,GAAA,iBAAA,CAAA,IAAA,EAAA,uBAAA,EAA8B,YAAY,CAAA;YAGnD,IAAA,CAAA,KAAK,IAAA,iBAAA,CAAA,IAAA,EAAA,4BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,mBAAA,EAAoD,OAAO,CAAA,CAAA;;;;;;;;;"}
1
+ {"version":3,"file":"snice-layout-split.js","sources":["../../../components/layout/snice-layout-split.css?inline","../../../../components/layout/snice-layout-split.ts"],"sourcesContent":["export default \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)}.layout{display:grid;min-height:100vh;gap:1px;background:var(--snice-color-border,#d1d5db)}:host(:not([direction])) .layout,:host([direction=horizontal]) .layout{grid-template-columns:1fr auto 1fr;grid-template-rows:1fr}:host([direction=vertical]) .layout{grid-template-rows:1fr auto 1fr;grid-template-columns:1fr}:host(:not([ratio])) .layout,:host([ratio=\\\"50-50\\\"]) .layout{grid-template-columns:1fr 1px 1fr}:host([ratio=\\\"60-40\\\"]) .layout{grid-template-columns:60fr 1px 40fr}:host([ratio=\\\"70-30\\\"]) .layout{grid-template-columns:70fr 1px 30fr}:host([ratio=\\\"33-67\\\"]) .layout{grid-template-columns:33fr 1px 67fr}:host([ratio=\\\"67-33\\\"]) .layout{grid-template-columns:67fr 1px 33fr}:host([direction=vertical]:not([ratio])) .layout,:host([direction=vertical][ratio=\\\"50-50\\\"]) .layout{grid-template-rows:1fr 1px 1fr}:host([direction=vertical][ratio=\\\"60-40\\\"]) .layout{grid-template-rows:60fr 1px 40fr}:host([direction=vertical][ratio=\\\"70-30\\\"]) .layout{grid-template-rows:70fr 1px 30fr}:host([direction=vertical][ratio=\\\"33-67\\\"]) .layout{grid-template-rows:33fr 1px 67fr}:host([direction=vertical][ratio=\\\"67-33\\\"]) .layout{grid-template-rows:67fr 1px 33fr}.panel{background:var(--snice-color-background,#fff);overflow:auto}.panel-left,.panel-right{padding:var(--snice-spacing-lg,2rem)}.divider{background:var(--snice-color-border,#d1d5db)}@media (max-width:768px){.layout{grid-template-columns:1fr!important;grid-template-rows:auto auto auto!important}.divider{height:1px}.panel-left,.panel-right{padding:var(--snice-spacing-md,1rem)}}\";",null],"names":[],"mappings":"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"}
@@ -5,9 +5,9 @@ export declare class SniceLayout extends HTMLElement implements Layout {
5
5
  navElement: SniceNav;
6
6
  private placards;
7
7
  private currentRoute;
8
- html(): string;
9
- css(): string;
8
+ renderContent(): import("snice").TemplateResult;
9
+ componentStyles(): import("snice").CSSResult;
10
10
  onReady(): void;
11
- update(_appContext: AppContext, placards: Placard[], currentRoute: string, _routeParams: RouteParams): void;
12
- updateNav(): void;
11
+ update(appContext: AppContext, placards: Placard[], currentRoute: string, routeParams: RouteParams): void;
12
+ updateNav(appContext?: AppContext, routeParams?: RouteParams): void;
13
13
  }
@@ -1,8 +1,8 @@
1
1
  import { __runInitializers, __esDecorate } from 'tslib';
2
- import { element, query, ready } from 'snice';
2
+ import { element, query, render, styles, ready, html, css } from 'snice';
3
3
  import '../nav/snice-nav.js';
4
4
 
5
- var css = "/* Layout Component Styles */\n:host {\n display: block;\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n}\n\n.layout {\n display: grid;\n grid-template-rows: auto 1fr auto;\n min-height: 100vh;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 2rem);\n background: var(--snice-color-background, white);\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.brand h1 {\n margin: 0;\n font-size: var(--snice-font-size-xl, 1.5rem);\n color: var(--snice-color-text, #374151);\n font-weight: var(--snice-font-weight-semibold, 600);\n}\n\n.nav {\n display: flex;\n gap: var(--snice-spacing-lg, 2rem);\n}\n\n.nav ::slotted(a) {\n text-decoration: none;\n color: var(--snice-color-text-secondary, #6b7280);\n font-weight: var(--snice-font-weight-medium, 500);\n padding: var(--snice-spacing-xs, 0.5rem) var(--snice-spacing-md, 1rem);\n border-radius: var(--snice-border-radius-md, 4px);\n transition: all var(--snice-transition-fast, 0.15s) ease;\n}\n\n.nav ::slotted(a:hover) {\n color: var(--snice-color-primary, #3b82f6);\n background: var(--snice-color-background-secondary, #f8fafc);\n}\n\n.nav ::slotted(a.active) {\n color: var(--snice-color-primary, #3b82f6);\n background: var(--snice-color-primary-light, #dbeafe);\n font-weight: var(--snice-font-weight-semibold, 600);\n}\n\n.main {\n padding: var(--snice-spacing-lg, 2rem);\n background: var(--snice-color-background-secondary, #f8fafc);\n overflow-y: auto;\n}\n\n.footer {\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 2rem);\n background: var(--snice-color-background, white);\n border-top: 1px solid var(--snice-color-border, #d1d5db);\n text-align: center;\n color: var(--snice-color-text-secondary, #6b7280);\n font-size: var(--snice-font-size-sm, 0.875rem);\n}\n\n.footer p {\n margin: 0;\n}";
5
+ var cssContent = ":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)}.layout{display:grid;grid-template-rows:auto 1fr auto;min-height:100vh}.header{display:flex;align-items:center;justify-content:space-between;padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,2rem);background:var(--snice-color-background,#fff);border-bottom:1px solid var(--snice-color-border,#d1d5db);box-shadow:0 2px 4px rgba(0,0,0,.1)}.brand h1{margin:0;font-size:var(--snice-font-size-xl, 1.5rem);color:var(--snice-color-text,#374151);font-weight:var(--snice-font-weight-semibold,600)}.nav{display:flex;gap:var(--snice-spacing-lg,2rem)}.nav ::slotted(a){text-decoration:none;color:var(--snice-color-text-secondary,#6b7280);font-weight:var(--snice-font-weight-medium,500);padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-md,1rem);border-radius:var(--snice-border-radius-md,4px);transition:all var(--snice-transition-fast, .15s) ease}.nav ::slotted(a:hover){color:var(--snice-color-primary,#3b82f6);background:var(--snice-color-background-secondary,#f8fafc)}.nav ::slotted(a.active){color:var(--snice-color-primary,#3b82f6);background:var(--snice-color-primary-light,#dbeafe);font-weight:var(--snice-font-weight-semibold,600)}.main{padding:var(--snice-spacing-lg,2rem);background:var(--snice-color-background-secondary,#f8fafc);overflow-y:auto}.footer{padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,2rem);background:var(--snice-color-background,#fff);border-top:1px solid var(--snice-color-border,#d1d5db);text-align:center;color:var(--snice-color-text-secondary,#6b7280);font-size:var(--snice-font-size-sm, .875rem)}.footer p{margin:0}";
6
6
 
7
7
  let SniceLayout = (() => {
8
8
  let _classDecorators = [element('snice-layout')];
@@ -14,6 +14,8 @@ let SniceLayout = (() => {
14
14
  let _navElement_decorators;
15
15
  let _navElement_initializers = [];
16
16
  let _navElement_extraInitializers = [];
17
+ let _renderContent_decorators;
18
+ let _componentStyles_decorators;
17
19
  let _onReady_decorators;
18
20
  (class extends _classSuper {
19
21
  static { _classThis = this; }
@@ -26,7 +28,11 @@ let SniceLayout = (() => {
26
28
  static {
27
29
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
28
30
  _navElement_decorators = [query('snice-nav')];
31
+ _renderContent_decorators = [render()];
32
+ _componentStyles_decorators = [styles()];
29
33
  _onReady_decorators = [ready()];
34
+ __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);
35
+ __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);
30
36
  __esDecorate(this, null, _onReady_decorators, { kind: "method", name: "onReady", static: false, private: false, access: { has: obj => "onReady" in obj, get: obj => obj.onReady }, metadata: _metadata }, null, _instanceExtraInitializers);
31
37
  __esDecorate(null, null, _navElement_decorators, { kind: "field", name: "navElement", static: false, private: false, access: { has: obj => "navElement" in obj, get: obj => obj.navElement, set: (obj, value) => { obj.navElement = value; } }, metadata: _metadata }, _navElement_initializers, _navElement_extraInitializers);
32
38
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
@@ -34,8 +40,8 @@ let SniceLayout = (() => {
34
40
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
35
41
  __runInitializers(_classThis, _classExtraInitializers);
36
42
  }
37
- html() {
38
- return /*html*/ `
43
+ renderContent() {
44
+ return html /*html*/ `
39
45
  <div class="layout">
40
46
  <header class="header">
41
47
  <div class="brand">
@@ -57,8 +63,8 @@ let SniceLayout = (() => {
57
63
  </div>
58
64
  `;
59
65
  }
60
- css() {
61
- return css;
66
+ componentStyles() {
67
+ return css /*css*/ `${cssContent}`;
62
68
  }
63
69
  onReady() {
64
70
  // Update nav if we already have placards
@@ -66,17 +72,17 @@ let SniceLayout = (() => {
66
72
  this.updateNav();
67
73
  }
68
74
  }
69
- update(_appContext, placards, currentRoute, _routeParams) {
75
+ update(appContext, placards, currentRoute, routeParams) {
70
76
  this.placards = placards;
71
77
  this.currentRoute = currentRoute;
72
78
  // Update navigation - only if shadow DOM exists
73
79
  if (this.shadowRoot) {
74
- this.updateNav();
80
+ this.updateNav(appContext, routeParams);
75
81
  }
76
82
  }
77
- updateNav() {
83
+ updateNav(appContext, routeParams) {
78
84
  if (this.navElement) {
79
- this.navElement.update(this.placards, this.currentRoute);
85
+ this.navElement.update(this.placards, appContext, this.currentRoute, routeParams);
80
86
  }
81
87
  }
82
88
  });
@@ -1 +1 @@
1
- {"version":3,"file":"snice-layout.js","sources":["../../../components/layout/snice-layout.css?inline","../../../../components/layout/snice-layout.ts"],"sourcesContent":["export default \"/* Layout Component Styles */\\n:host {\\n display: block;\\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\\n}\\n\\n.layout {\\n display: grid;\\n grid-template-rows: auto 1fr auto;\\n min-height: 100vh;\\n}\\n\\n.header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 2rem);\\n background: var(--snice-color-background, white);\\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\\n}\\n\\n.brand h1 {\\n margin: 0;\\n font-size: var(--snice-font-size-xl, 1.5rem);\\n color: var(--snice-color-text, #374151);\\n font-weight: var(--snice-font-weight-semibold, 600);\\n}\\n\\n.nav {\\n display: flex;\\n gap: var(--snice-spacing-lg, 2rem);\\n}\\n\\n.nav ::slotted(a) {\\n text-decoration: none;\\n color: var(--snice-color-text-secondary, #6b7280);\\n font-weight: var(--snice-font-weight-medium, 500);\\n padding: var(--snice-spacing-xs, 0.5rem) var(--snice-spacing-md, 1rem);\\n border-radius: var(--snice-border-radius-md, 4px);\\n transition: all var(--snice-transition-fast, 0.15s) ease;\\n}\\n\\n.nav ::slotted(a:hover) {\\n color: var(--snice-color-primary, #3b82f6);\\n background: var(--snice-color-background-secondary, #f8fafc);\\n}\\n\\n.nav ::slotted(a.active) {\\n color: var(--snice-color-primary, #3b82f6);\\n background: var(--snice-color-primary-light, #dbeafe);\\n font-weight: var(--snice-font-weight-semibold, 600);\\n}\\n\\n.main {\\n padding: var(--snice-spacing-lg, 2rem);\\n background: var(--snice-color-background-secondary, #f8fafc);\\n overflow-y: auto;\\n}\\n\\n.footer {\\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 2rem);\\n background: var(--snice-color-background, white);\\n border-top: 1px solid var(--snice-color-border, #d1d5db);\\n text-align: center;\\n color: var(--snice-color-text-secondary, #6b7280);\\n font-size: var(--snice-font-size-sm, 0.875rem);\\n}\\n\\n.footer p {\\n margin: 0;\\n}\";",null],"names":[],"mappings":";;;;AAAA,UAAe,m/DAAm/D;;ICOr/D,WAAW,GAAA,CAAA,MAAA;4BADvB,OAAO,CAAC,cAAc,CAAC,CAAA;;;;sBACS,WAAW;;;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;YAE1C,IAAA,CAAA,UAAU,IAFC,mDAAW,EAAA,iBAAA,CAAA,IAAA,EAAA,wBAAA,EAAA,MAAA,CAAA,CAAA;YAId,IAAA,CAAA,QAAQ,IAAA,iBAAA,CAAA,IAAA,EAAA,6BAAA,CAAA,EAAc,EAAE,CAAA;YACxB,IAAA,CAAA,YAAY,GAAG,EAAE;QAqD3B;;;sCAzDG,KAAK,CAAC,WAAW,CAAC,CAAA;AAkClB,YAAA,mBAAA,GAAA,CAAA,KAAK,EAAE,CAAA;AACR,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,SAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,OAAO,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;YAlCP,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,YAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,UAAU,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAV,UAAU,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,wBAAA,EAAA,6BAAA,CAAA;YAFZ,YAAA,CAAA,IAAA,EAAA,gBAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,uBAAA,CAAA;;;YAAa,iBAAA,CAAA,UAAA,EAAA,uBAAA,CAAA;;QAOX,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;;;;;;;;;;;;;;;KAoBd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;QAGA,OAAO,GAAA;;YAEL,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,IAAI,CAAC,SAAS,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,CAAC,WAAuB,EAAE,QAAmB,EAAE,YAAoB,EAAE,YAAyB,EAAA;AAClG,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;;AAGhC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,SAAS,EAAE;YAClB;QACF;QAEA,SAAS,GAAA;AACP,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;YAC1D;QACF;;;;;;;"}
1
+ {"version":3,"file":"snice-layout.js","sources":["../../../components/layout/snice-layout.css?inline","../../../../components/layout/snice-layout.ts"],"sourcesContent":["export default \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)}.layout{display:grid;grid-template-rows:auto 1fr auto;min-height:100vh}.header{display:flex;align-items:center;justify-content:space-between;padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,2rem);background:var(--snice-color-background,#fff);border-bottom:1px solid var(--snice-color-border,#d1d5db);box-shadow:0 2px 4px rgba(0,0,0,.1)}.brand h1{margin:0;font-size:var(--snice-font-size-xl, 1.5rem);color:var(--snice-color-text,#374151);font-weight:var(--snice-font-weight-semibold,600)}.nav{display:flex;gap:var(--snice-spacing-lg,2rem)}.nav ::slotted(a){text-decoration:none;color:var(--snice-color-text-secondary,#6b7280);font-weight:var(--snice-font-weight-medium,500);padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-md,1rem);border-radius:var(--snice-border-radius-md,4px);transition:all var(--snice-transition-fast, .15s) ease}.nav ::slotted(a:hover){color:var(--snice-color-primary,#3b82f6);background:var(--snice-color-background-secondary,#f8fafc)}.nav ::slotted(a.active){color:var(--snice-color-primary,#3b82f6);background:var(--snice-color-primary-light,#dbeafe);font-weight:var(--snice-font-weight-semibold,600)}.main{padding:var(--snice-spacing-lg,2rem);background:var(--snice-color-background-secondary,#f8fafc);overflow-y:auto}.footer{padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,2rem);background:var(--snice-color-background,#fff);border-top:1px solid var(--snice-color-border,#d1d5db);text-align:center;color:var(--snice-color-text-secondary,#6b7280);font-size:var(--snice-font-size-sm, .875rem)}.footer p{margin:0}\";",null],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { LinkVariant, LinkTarget, SniceLinkElement } from './snice-link.types';
2
+ export declare class SniceLink extends HTMLElement implements SniceLinkElement {
3
+ href: string;
4
+ target: LinkTarget;
5
+ variant: LinkVariant;
6
+ disabled: boolean;
7
+ external: boolean;
8
+ underline: boolean;
9
+ hash: boolean;
10
+ componentStyles(): import("snice").CSSResult;
11
+ private handleClick;
12
+ renderContent(): import("snice").TemplateResult;
13
+ }
@@ -0,0 +1,137 @@
1
+ import { __esDecorate, __runInitializers } from 'tslib';
2
+ import { element, property, styles, dispatch, render, css, html } from 'snice';
3
+
4
+ var cssContent = ":host{display:inline;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}.link{color:var(--snice-color-primary,rgb(59 130 246));text-decoration:none;cursor:pointer;transition:color var(--snice-transition-fast, 150ms);display:inline-flex;align-items:center;gap:var(--snice-spacing-2xs,.25rem)}.link:hover{color:var(--snice-color-primary-dark,rgb(37 99 235))}.link:active{color:var(--snice-color-primary-darker,rgb(29 78 216))}.link--underline{text-decoration:underline}.link--default{color:var(--snice-color-primary,rgb(59 130 246))}.link--default:hover{color:var(--snice-color-primary-dark,rgb(37 99 235))}.link--primary{color:var(--snice-color-primary,rgb(59 130 246));font-weight:var(--snice-font-weight-medium,500)}.link--primary:hover{color:var(--snice-color-primary-dark,rgb(37 99 235))}.link--secondary{color:var(--snice-color-text-secondary,rgb(107 114 128))}.link--secondary:hover{color:var(--snice-color-text,rgb(17 24 39))}.link--muted{color:var(--snice-color-text-muted,rgb(156 163 175))}.link--muted:hover{color:var(--snice-color-text-secondary,rgb(107 114 128))}.link--disabled{color:var(--snice-color-text-disabled,rgb(209 213 219));cursor:not-allowed;pointer-events:none}.link__icon{display:inline-flex;font-size:var(--snice-font-size-sm, .875rem)}.link__external-icon{display:inline-flex;font-size:var(--snice-font-size-xs, .75rem)}:host([disabled]) .link{color:var(--snice-color-text-disabled,rgb(209 213 219));cursor:not-allowed;pointer-events:none}";
5
+
6
+ let SniceLink = (() => {
7
+ let _classDecorators = [element('snice-link')];
8
+ let _classDescriptor;
9
+ let _classExtraInitializers = [];
10
+ let _classThis;
11
+ let _classSuper = HTMLElement;
12
+ let _instanceExtraInitializers = [];
13
+ let _href_decorators;
14
+ let _href_initializers = [];
15
+ let _href_extraInitializers = [];
16
+ let _target_decorators;
17
+ let _target_initializers = [];
18
+ let _target_extraInitializers = [];
19
+ let _variant_decorators;
20
+ let _variant_initializers = [];
21
+ let _variant_extraInitializers = [];
22
+ let _disabled_decorators;
23
+ let _disabled_initializers = [];
24
+ let _disabled_extraInitializers = [];
25
+ let _external_decorators;
26
+ let _external_initializers = [];
27
+ let _external_extraInitializers = [];
28
+ let _underline_decorators;
29
+ let _underline_initializers = [];
30
+ let _underline_extraInitializers = [];
31
+ let _hash_decorators;
32
+ let _hash_initializers = [];
33
+ let _hash_extraInitializers = [];
34
+ let _componentStyles_decorators;
35
+ let _handleClick_decorators;
36
+ let _renderContent_decorators;
37
+ (class extends _classSuper {
38
+ static { _classThis = this; }
39
+ static {
40
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
41
+ _href_decorators = [property({})];
42
+ _target_decorators = [property({})];
43
+ _variant_decorators = [property({})];
44
+ _disabled_decorators = [property({ type: Boolean })];
45
+ _external_decorators = [property({ type: Boolean })];
46
+ _underline_decorators = [property({ type: Boolean })];
47
+ _hash_decorators = [property({ type: Boolean })];
48
+ _componentStyles_decorators = [styles()];
49
+ _handleClick_decorators = [dispatch('click')];
50
+ _renderContent_decorators = [render()];
51
+ __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);
52
+ __esDecorate(this, null, _handleClick_decorators, { kind: "method", name: "handleClick", static: false, private: false, access: { has: obj => "handleClick" in obj, get: obj => obj.handleClick }, metadata: _metadata }, null, _instanceExtraInitializers);
53
+ __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);
54
+ __esDecorate(null, null, _href_decorators, { kind: "field", name: "href", static: false, private: false, access: { has: obj => "href" in obj, get: obj => obj.href, set: (obj, value) => { obj.href = value; } }, metadata: _metadata }, _href_initializers, _href_extraInitializers);
55
+ __esDecorate(null, null, _target_decorators, { kind: "field", name: "target", static: false, private: false, access: { has: obj => "target" in obj, get: obj => obj.target, set: (obj, value) => { obj.target = value; } }, metadata: _metadata }, _target_initializers, _target_extraInitializers);
56
+ __esDecorate(null, null, _variant_decorators, { kind: "field", name: "variant", static: false, private: false, access: { has: obj => "variant" in obj, get: obj => obj.variant, set: (obj, value) => { obj.variant = value; } }, metadata: _metadata }, _variant_initializers, _variant_extraInitializers);
57
+ __esDecorate(null, null, _disabled_decorators, { kind: "field", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
58
+ __esDecorate(null, null, _external_decorators, { kind: "field", name: "external", static: false, private: false, access: { has: obj => "external" in obj, get: obj => obj.external, set: (obj, value) => { obj.external = value; } }, metadata: _metadata }, _external_initializers, _external_extraInitializers);
59
+ __esDecorate(null, null, _underline_decorators, { kind: "field", name: "underline", static: false, private: false, access: { has: obj => "underline" in obj, get: obj => obj.underline, set: (obj, value) => { obj.underline = value; } }, metadata: _metadata }, _underline_initializers, _underline_extraInitializers);
60
+ __esDecorate(null, null, _hash_decorators, { kind: "field", name: "hash", static: false, private: false, access: { has: obj => "hash" in obj, get: obj => obj.hash, set: (obj, value) => { obj.hash = value; } }, metadata: _metadata }, _hash_initializers, _hash_extraInitializers);
61
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
62
+ _classThis = _classDescriptor.value;
63
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
64
+ __runInitializers(_classThis, _classExtraInitializers);
65
+ }
66
+ componentStyles() {
67
+ return css `${cssContent}`;
68
+ }
69
+ handleClick(e) {
70
+ if (this.disabled) {
71
+ e.preventDefault();
72
+ return;
73
+ }
74
+ // Emit navigate event for router integration
75
+ if (this.hash) {
76
+ const navigateEvent = new CustomEvent('navigate', {
77
+ detail: { href: this.href },
78
+ bubbles: true,
79
+ composed: true,
80
+ cancelable: true
81
+ });
82
+ const shouldNavigate = this.dispatchEvent(navigateEvent);
83
+ if (!shouldNavigate) {
84
+ e.preventDefault();
85
+ }
86
+ }
87
+ }
88
+ renderContent() {
89
+ const linkClasses = [
90
+ 'link',
91
+ `link--${this.variant}`,
92
+ this.underline ? 'link--underline' : '',
93
+ this.disabled ? 'link--disabled' : ''
94
+ ].filter(Boolean).join(' ');
95
+ const linkTarget = this.external ? '_blank' : this.target;
96
+ const linkRel = this.external ? 'noopener noreferrer' : '';
97
+ // Compute href with hash prefix if needed
98
+ let computedHref = this.href || '';
99
+ if (this.hash && computedHref && !computedHref.startsWith('#')) {
100
+ computedHref = `#${computedHref}`;
101
+ }
102
+ if (!computedHref) {
103
+ computedHref = '#';
104
+ }
105
+ return html `
106
+ <a
107
+ href="${computedHref}"
108
+ target="${linkTarget}"
109
+ rel="${linkRel}"
110
+ class="${linkClasses}"
111
+ part="link"
112
+ @click="${(e) => this.handleClick(e)}"
113
+ >
114
+ <slot></slot>
115
+ <if ${this.external}>
116
+ <span class="link__external-icon" part="external-icon">↗</span>
117
+ </if>
118
+ </a>
119
+ `;
120
+ }
121
+ constructor() {
122
+ super(...arguments);
123
+ this.href = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _href_initializers, ''));
124
+ this.target = (__runInitializers(this, _href_extraInitializers), __runInitializers(this, _target_initializers, '_self'));
125
+ this.variant = (__runInitializers(this, _target_extraInitializers), __runInitializers(this, _variant_initializers, 'default'));
126
+ this.disabled = (__runInitializers(this, _variant_extraInitializers), __runInitializers(this, _disabled_initializers, false));
127
+ this.external = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _external_initializers, false));
128
+ this.underline = (__runInitializers(this, _external_extraInitializers), __runInitializers(this, _underline_initializers, false));
129
+ this.hash = (__runInitializers(this, _underline_extraInitializers), __runInitializers(this, _hash_initializers, false));
130
+ __runInitializers(this, _hash_extraInitializers);
131
+ }
132
+ });
133
+ return _classThis;
134
+ })();
135
+
136
+ export { SniceLink };
137
+ //# sourceMappingURL=snice-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-link.js","sources":["../../../components/link/snice-link.css?inline","../../../../components/link/snice-link.ts"],"sourcesContent":["export default \":host{display:inline;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}.link{color:var(--snice-color-primary,rgb(59 130 246));text-decoration:none;cursor:pointer;transition:color var(--snice-transition-fast, 150ms);display:inline-flex;align-items:center;gap:var(--snice-spacing-2xs,.25rem)}.link:hover{color:var(--snice-color-primary-dark,rgb(37 99 235))}.link:active{color:var(--snice-color-primary-darker,rgb(29 78 216))}.link--underline{text-decoration:underline}.link--default{color:var(--snice-color-primary,rgb(59 130 246))}.link--default:hover{color:var(--snice-color-primary-dark,rgb(37 99 235))}.link--primary{color:var(--snice-color-primary,rgb(59 130 246));font-weight:var(--snice-font-weight-medium,500)}.link--primary:hover{color:var(--snice-color-primary-dark,rgb(37 99 235))}.link--secondary{color:var(--snice-color-text-secondary,rgb(107 114 128))}.link--secondary:hover{color:var(--snice-color-text,rgb(17 24 39))}.link--muted{color:var(--snice-color-text-muted,rgb(156 163 175))}.link--muted:hover{color:var(--snice-color-text-secondary,rgb(107 114 128))}.link--disabled{color:var(--snice-color-text-disabled,rgb(209 213 219));cursor:not-allowed;pointer-events:none}.link__icon{display:inline-flex;font-size:var(--snice-font-size-sm, .875rem)}.link__external-icon{display:inline-flex;font-size:var(--snice-font-size-xs, .75rem)}:host([disabled]) .link{color:var(--snice-color-text-disabled,rgb(209 213 219));cursor:not-allowed;pointer-events:none}\";",null],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type LinkVariant = 'default' | 'primary' | 'secondary' | 'muted';
2
+ export type LinkTarget = '_self' | '_blank' | '_parent' | '_top';
3
+ export interface SniceLinkElement extends HTMLElement {
4
+ href: string;
5
+ target: LinkTarget;
6
+ variant: LinkVariant;
7
+ disabled: boolean;
8
+ external: boolean;
9
+ underline: boolean;
10
+ hash: boolean;
11
+ }