snice 2.2.3 → 2.4.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 (170) hide show
  1. package/README.md +93 -14
  2. package/bin/templates/base/src/main.ts +3 -0
  3. package/bin/templates/base/src/pages/about-page.ts +10 -1
  4. package/bin/templates/base/src/pages/home-page.ts +10 -1
  5. package/bin/templates/base/src/router.ts +3 -2
  6. package/dist/components/accordion/snice-accordion-item.js +3 -3
  7. package/dist/components/accordion/snice-accordion-item.js.map +1 -1
  8. package/dist/components/accordion/snice-accordion.js +1 -1
  9. package/dist/components/accordion/snice-accordion.js.map +1 -1
  10. package/dist/components/alert/snice-alert.js +5 -5
  11. package/dist/components/alert/snice-alert.js.map +1 -1
  12. package/dist/components/avatar/snice-avatar.js +7 -7
  13. package/dist/components/avatar/snice-avatar.js.map +1 -1
  14. package/dist/components/badge/snice-badge.js +10 -10
  15. package/dist/components/badge/snice-badge.js.map +1 -1
  16. package/dist/components/breadcrumbs/snice-breadcrumbs.js +3 -3
  17. package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  18. package/dist/components/breadcrumbs/snice-crumb.js +5 -5
  19. package/dist/components/breadcrumbs/snice-crumb.js.map +1 -1
  20. package/dist/components/button/snice-button.js +12 -12
  21. package/dist/components/button/snice-button.js.map +1 -1
  22. package/dist/components/card/snice-card.js +5 -5
  23. package/dist/components/card/snice-card.js.map +1 -1
  24. package/dist/components/checkbox/snice-checkbox.js +9 -9
  25. package/dist/components/checkbox/snice-checkbox.js.map +1 -1
  26. package/dist/components/chip/snice-chip.js +8 -8
  27. package/dist/components/chip/snice-chip.js.map +1 -1
  28. package/dist/components/date-picker/snice-date-picker.js +18 -18
  29. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  30. package/dist/components/divider/snice-divider.js +8 -8
  31. package/dist/components/divider/snice-divider.js.map +1 -1
  32. package/dist/components/drawer/snice-drawer.d.ts +4 -0
  33. package/dist/components/drawer/snice-drawer.js +67 -32
  34. package/dist/components/drawer/snice-drawer.js.map +1 -1
  35. package/dist/components/drawer/snice-drawer.types.d.ts +1 -0
  36. package/dist/components/input/snice-input.js +24 -24
  37. package/dist/components/input/snice-input.js.map +1 -1
  38. package/dist/components/layout/snice-layout-blog.d.ts +10 -1
  39. package/dist/components/layout/snice-layout-blog.js +47 -8
  40. package/dist/components/layout/snice-layout-blog.js.map +1 -1
  41. package/dist/components/layout/snice-layout-card.js +2 -2
  42. package/dist/components/layout/snice-layout-card.js.map +1 -1
  43. package/dist/components/layout/snice-layout-centered.js +1 -1
  44. package/dist/components/layout/snice-layout-centered.js.map +1 -1
  45. package/dist/components/layout/snice-layout-dashboard.d.ts +12 -1
  46. package/dist/components/layout/snice-layout-dashboard.js +92 -13
  47. package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
  48. package/dist/components/layout/snice-layout-fullscreen.js +1 -1
  49. package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
  50. package/dist/components/layout/snice-layout-landing.d.ts +10 -1
  51. package/dist/components/layout/snice-layout-landing.js +47 -8
  52. package/dist/components/layout/snice-layout-landing.js.map +1 -1
  53. package/dist/components/layout/snice-layout-sidebar.d.ts +13 -1
  54. package/dist/components/layout/snice-layout-sidebar.js +70 -29
  55. package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
  56. package/dist/components/layout/snice-layout-split.js +2 -2
  57. package/dist/components/layout/snice-layout-split.js.map +1 -1
  58. package/dist/components/layout/snice-layout.d.ts +9 -1
  59. package/dist/components/layout/snice-layout.js +35 -8
  60. package/dist/components/layout/snice-layout.js.map +1 -1
  61. package/dist/components/layout/snice-layout.types.d.ts +2 -1
  62. package/dist/components/login/snice-login.js +8 -8
  63. package/dist/components/login/snice-login.js.map +1 -1
  64. package/dist/components/modal/snice-modal.js +7 -7
  65. package/dist/components/modal/snice-modal.js.map +1 -1
  66. package/dist/components/nav/snice-nav.d.ts +16 -0
  67. package/dist/components/nav/snice-nav.js +158 -0
  68. package/dist/components/nav/snice-nav.js.map +1 -0
  69. package/dist/components/nav/snice-nav.types.d.ts +11 -0
  70. package/dist/components/pagination/snice-pagination.js +9 -9
  71. package/dist/components/pagination/snice-pagination.js.map +1 -1
  72. package/dist/components/progress/snice-progress.js +11 -11
  73. package/dist/components/progress/snice-progress.js.map +1 -1
  74. package/dist/components/radio/snice-radio.js +8 -8
  75. package/dist/components/radio/snice-radio.js.map +1 -1
  76. package/dist/components/select/snice-option.js +5 -5
  77. package/dist/components/select/snice-option.js.map +1 -1
  78. package/dist/components/select/snice-select.js +14 -14
  79. package/dist/components/select/snice-select.js.map +1 -1
  80. package/dist/components/skeleton/snice-skeleton.js +6 -6
  81. package/dist/components/skeleton/snice-skeleton.js.map +1 -1
  82. package/dist/components/switch/snice-switch.js +10 -10
  83. package/dist/components/switch/snice-switch.js.map +1 -1
  84. package/dist/components/table/snice-cell-boolean.js +8 -8
  85. package/dist/components/table/snice-cell-boolean.js.map +1 -1
  86. package/dist/components/table/snice-cell-date.js +8 -8
  87. package/dist/components/table/snice-cell-date.js.map +1 -1
  88. package/dist/components/table/snice-cell-duration.js +3 -3
  89. package/dist/components/table/snice-cell-duration.js.map +1 -1
  90. package/dist/components/table/snice-cell-filesize.js +3 -3
  91. package/dist/components/table/snice-cell-filesize.js.map +1 -1
  92. package/dist/components/table/snice-cell-number.js +9 -9
  93. package/dist/components/table/snice-cell-number.js.map +1 -1
  94. package/dist/components/table/snice-cell-progress.js +3 -3
  95. package/dist/components/table/snice-cell-progress.js.map +1 -1
  96. package/dist/components/table/snice-cell-rating.js +3 -3
  97. package/dist/components/table/snice-cell-rating.js.map +1 -1
  98. package/dist/components/table/snice-cell-sparkline.js +13 -13
  99. package/dist/components/table/snice-cell-sparkline.js.map +1 -1
  100. package/dist/components/table/snice-cell-text.js +4 -4
  101. package/dist/components/table/snice-cell-text.js.map +1 -1
  102. package/dist/components/table/snice-cell.js +2 -2
  103. package/dist/components/table/snice-cell.js.map +1 -1
  104. package/dist/components/table/snice-column.js +10 -10
  105. package/dist/components/table/snice-column.js.map +1 -1
  106. package/dist/components/table/snice-header.js +5 -5
  107. package/dist/components/table/snice-header.js.map +1 -1
  108. package/dist/components/table/snice-row.js +5 -5
  109. package/dist/components/table/snice-row.js.map +1 -1
  110. package/dist/components/table/snice-table.js +7 -7
  111. package/dist/components/table/snice-table.js.map +1 -1
  112. package/dist/components/tabs/snice-tab-panel.js +5 -5
  113. package/dist/components/tabs/snice-tab-panel.js.map +1 -1
  114. package/dist/components/tabs/snice-tab.js +2 -2
  115. package/dist/components/tabs/snice-tab.js.map +1 -1
  116. package/dist/components/tabs/snice-tabs.js +4 -4
  117. package/dist/components/tabs/snice-tabs.js.map +1 -1
  118. package/dist/components/toast/snice-toast-container.js +1 -1
  119. package/dist/components/toast/snice-toast-container.js.map +1 -1
  120. package/dist/components/toast/snice-toast.js +4 -4
  121. package/dist/components/toast/snice-toast.js.map +1 -1
  122. package/dist/components/tooltip/snice-tooltip.js +11 -11
  123. package/dist/components/tooltip/snice-tooltip.js.map +1 -1
  124. package/dist/index.cjs +361 -144
  125. package/dist/index.cjs.map +1 -1
  126. package/dist/index.esm.js +360 -141
  127. package/dist/index.esm.js.map +1 -1
  128. package/dist/index.iife.js +361 -144
  129. package/dist/index.iife.js.map +1 -1
  130. package/dist/symbols.cjs.map +1 -1
  131. package/dist/symbols.esm.js +8 -2
  132. package/dist/symbols.esm.js.map +1 -1
  133. package/dist/transitions.esm.js +1 -1
  134. package/dist/types/controller.d.ts +1 -1
  135. package/dist/types/element.d.ts +70 -3
  136. package/dist/types/events.d.ts +2 -2
  137. package/dist/types/global.d.ts +1 -1
  138. package/dist/types/index.d.ts +3 -2
  139. package/dist/types/observe.d.ts +1 -1
  140. package/dist/types/request-response.d.ts +2 -2
  141. package/dist/types/router.d.ts +2 -2
  142. package/dist/types/symbols.d.ts +5 -0
  143. package/dist/types/testing.d.ts +4 -0
  144. package/dist/types/transitions.d.ts +1 -1
  145. package/dist/types/types/adopted-options.d.ts +4 -0
  146. package/dist/types/types/app-context.d.ts +81 -0
  147. package/dist/types/types/guard.d.ts +19 -0
  148. package/dist/types/types/index.d.ts +23 -17
  149. package/dist/types/types/moved-options.d.ts +4 -0
  150. package/dist/types/types/{PageOptions.d.ts → page-options.d.ts} +13 -4
  151. package/dist/types/types/placard.d.ts +90 -0
  152. package/dist/types/types/{PropertyOptions.d.ts → property-options.d.ts} +2 -3
  153. package/dist/types/types/route-params.d.ts +21 -0
  154. package/dist/types/types/{RouterInstance.d.ts → router-instance.d.ts} +5 -3
  155. package/dist/types/types/{RouterOptions.d.ts → router-options.d.ts} +1 -1
  156. package/dist/types/utils.d.ts +8 -0
  157. package/package.json +6 -2
  158. /package/dist/types/types/{DispatchOptions.d.ts → dispatch-options.d.ts} +0 -0
  159. /package/dist/types/types/{IController.d.ts → i-controller.d.ts} +0 -0
  160. /package/dist/types/types/{ObserveOptions.d.ts → observe-options.d.ts} +0 -0
  161. /package/dist/types/types/{OnOptions.d.ts → on-options.d.ts} +0 -0
  162. /package/dist/types/types/{PartOptions.d.ts → part-options.d.ts} +0 -0
  163. /package/dist/types/types/{PropertyConverter.d.ts → property-converter.d.ts} +0 -0
  164. /package/dist/types/types/{QueryOptions.d.ts → query-options.d.ts} +0 -0
  165. /package/dist/types/types/{RequestOptions.d.ts → request-options.d.ts} +0 -0
  166. /package/dist/types/types/{RespondOptions.d.ts → respond-options.d.ts} +0 -0
  167. /package/dist/types/types/{SimpleArray.d.ts → simple-array.d.ts} +0 -0
  168. /package/dist/types/types/{SniceElement.d.ts → snice-element.d.ts} +0 -0
  169. /package/dist/types/types/{SniceGlobal.d.ts → snice-global.d.ts} +0 -0
  170. /package/dist/types/types/{Transition.d.ts → transition.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"snice-layout-centered.js","sources":["../../../components/layout/snice-layout-centered.css?inline","../../../../components/layout/snice-layout-centered.ts"],"sourcesContent":["export default \"/* Centered Layout - For forms, auth pages, etc */\\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 min-height: 100vh;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: var(--snice-spacing-lg, 2rem);\\n background: var(--snice-color-background-secondary, #f8fafc);\\n}\\n\\n.container {\\n width: 100%;\\n max-width: 400px;\\n background: var(--snice-color-background, white);\\n border-radius: var(--snice-border-radius-lg, 8px);\\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\\n padding: var(--snice-spacing-xl, 3rem);\\n}\\n\\n/* Width variants */\\n:host([width=\\\"sm\\\"]) .container {\\n max-width: 320px;\\n}\\n\\n:host([width=\\\"md\\\"]) .container {\\n max-width: 400px;\\n}\\n\\n:host([width=\\\"lg\\\"]) .container {\\n max-width: 500px;\\n}\\n\\n:host([width=\\\"xl\\\"]) .container {\\n max-width: 600px;\\n}\\n\\n/* Mobile responsive */\\n@media (max-width: 480px) {\\n .layout {\\n padding: var(--snice-spacing-md, 1rem);\\n }\\n \\n .container {\\n padding: var(--snice-spacing-lg, 2rem);\\n }\\n}\";",null],"names":[],"mappings":";;;AAAA,UAAe,0oCAA0oC;;ICI5oC,mBAAmB,GAAA,CAAA,MAAA;4BAD/B,OAAO,CAAC,uBAAuB,CAAC,CAAA;;;;sBACQ,WAAW;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;AACjD,YAAA,iBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC5B,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;YAFP,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;;QAIX,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;KAMd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;;;YAdA,IAAA,CAAA,KAAK,GAAA,iBAAA,CAAA,IAAA,EAAA,mBAAA,EAA8B,IAAI,CAAA;;;;;;;;;"}
1
+ {"version":3,"file":"snice-layout-centered.js","sources":["../../../components/layout/snice-layout-centered.css?inline","../../../../components/layout/snice-layout-centered.ts"],"sourcesContent":["export default \"/* Centered Layout - For forms, auth pages, etc */\\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 min-height: 100vh;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: var(--snice-spacing-lg, 2rem);\\n background: var(--snice-color-background-secondary, #f8fafc);\\n}\\n\\n.container {\\n width: 100%;\\n max-width: 400px;\\n background: var(--snice-color-background, white);\\n border-radius: var(--snice-border-radius-lg, 8px);\\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\\n padding: var(--snice-spacing-xl, 3rem);\\n}\\n\\n/* Width variants */\\n:host([width=\\\"sm\\\"]) .container {\\n max-width: 320px;\\n}\\n\\n:host([width=\\\"md\\\"]) .container {\\n max-width: 400px;\\n}\\n\\n:host([width=\\\"lg\\\"]) .container {\\n max-width: 500px;\\n}\\n\\n:host([width=\\\"xl\\\"]) .container {\\n max-width: 600px;\\n}\\n\\n/* Mobile responsive */\\n@media (max-width: 480px) {\\n .layout {\\n padding: var(--snice-spacing-md, 1rem);\\n }\\n \\n .container {\\n padding: var(--snice-spacing-lg, 2rem);\\n }\\n}\";",null],"names":[],"mappings":";;;AAAA,UAAe,0oCAA0oC;;ICI5oC,mBAAmB,GAAA,CAAA,MAAA;4BAD/B,OAAO,CAAC,uBAAuB,CAAC,CAAA;;;;sBACQ,WAAW;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;iCACjD,QAAQ,CAAC,EAAI,CAAC,CAAA;YACf,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;YAFP,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;;QAIX,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;KAMd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;;;YAdA,IAAA,CAAA,KAAK,GAAA,iBAAA,CAAA,IAAA,EAAA,mBAAA,EAA8B,IAAI,CAAA;;;;;;;;;"}
@@ -1,4 +1,15 @@
1
- export declare class SniceLayoutDashboard extends HTMLElement {
1
+ import type { AppContext, Placard, RouteParams, Layout } from 'snice';
2
+ import '../breadcrumbs/snice-breadcrumbs.ts';
3
+ import '../nav/snice-nav.ts';
4
+ import type { SniceNav } from '../nav/snice-nav.ts';
5
+ export declare class SniceLayoutDashboard extends HTMLElement implements Layout {
6
+ navElement: SniceNav;
7
+ private placards;
8
+ private currentRoute;
2
9
  html(): string;
3
10
  css(): string;
11
+ update(_appContext: AppContext, placards: Placard[], currentRoute: string, _routeParams: RouteParams): void;
12
+ renderNav(): string;
13
+ renderBreadcrumbs(): string;
14
+ private buildBreadcrumbTrail;
4
15
  }
@@ -1,5 +1,7 @@
1
- import { __esDecorate, __runInitializers } from 'tslib';
2
- import { element } from 'snice';
1
+ import { __runInitializers, __esDecorate } from 'tslib';
2
+ import { element, query, part } from 'snice';
3
+ import '../breadcrumbs/snice-breadcrumbs.js';
4
+ import '../nav/snice-nav.js';
3
5
 
4
6
  var css = "/* Dashboard Layout - Complex grid with multiple areas */\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-areas: \n \"header header header\"\n \"nav nav nav\"\n \"sidebar main right-sidebar\";\n grid-template-rows: auto auto 1fr;\n grid-template-columns: 250px 1fr 250px;\n min-height: 100vh;\n gap: 1px;\n background: var(--snice-color-border, #d1d5db);\n}\n\n.header {\n grid-area: 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}\n\n.header-start h1 {\n margin: 0;\n font-size: var(--snice-font-size-xl, 1.5rem);\n font-weight: var(--snice-font-weight-semibold, 600);\n color: var(--snice-color-text, #374151);\n}\n\n.header-center {\n flex: 1;\n max-width: 400px;\n margin: 0 var(--snice-spacing-lg, 2rem);\n}\n\n.nav {\n grid-area: nav;\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}\n\n.sidebar {\n grid-area: sidebar;\n background: var(--snice-color-background, white);\n padding: var(--snice-spacing-lg, 2rem);\n overflow-y: auto;\n}\n\n.main {\n grid-area: main;\n padding: var(--snice-spacing-lg, 2rem);\n background: var(--snice-color-background-secondary, #f8fafc);\n overflow-y: auto;\n}\n\n.right-sidebar {\n grid-area: right-sidebar;\n background: var(--snice-color-background, white);\n padding: var(--snice-spacing-lg, 2rem);\n overflow-y: auto;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .layout {\n grid-template-areas: \n \"header header\"\n \"nav nav\"\n \"main main\";\n grid-template-columns: 1fr;\n }\n \n .sidebar,\n .right-sidebar {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .header {\n flex-direction: column;\n gap: var(--snice-spacing-md, 1rem);\n }\n \n .header-center {\n margin: 0;\n max-width: none;\n width: 100%;\n }\n}";
5
7
 
@@ -9,10 +11,28 @@ let SniceLayoutDashboard = (() => {
9
11
  let _classExtraInitializers = [];
10
12
  let _classThis;
11
13
  let _classSuper = HTMLElement;
14
+ let _instanceExtraInitializers = [];
15
+ let _navElement_decorators;
16
+ let _navElement_initializers = [];
17
+ let _navElement_extraInitializers = [];
18
+ let _renderNav_decorators;
19
+ let _renderBreadcrumbs_decorators;
12
20
  (class extends _classSuper {
13
21
  static { _classThis = this; }
22
+ constructor() {
23
+ super(...arguments);
24
+ this.navElement = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _navElement_initializers, void 0));
25
+ this.placards = (__runInitializers(this, _navElement_extraInitializers), []);
26
+ this.currentRoute = '';
27
+ }
14
28
  static {
15
29
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
30
+ _navElement_decorators = [query('snice-nav')];
31
+ _renderNav_decorators = [part('nav')];
32
+ _renderBreadcrumbs_decorators = [part('breadcrumbs')];
33
+ __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);
34
+ __esDecorate(this, null, _renderBreadcrumbs_decorators, { kind: "method", name: "renderBreadcrumbs", static: false, private: false, access: { has: obj => "renderBreadcrumbs" in obj, get: obj => obj.renderBreadcrumbs }, metadata: _metadata }, null, _instanceExtraInitializers);
35
+ __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);
16
36
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
17
37
  _classThis = _classDescriptor.value;
18
38
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -34,19 +54,15 @@ let SniceLayoutDashboard = (() => {
34
54
  <slot name="user"></slot>
35
55
  </div>
36
56
  </header>
37
-
38
- <nav class="nav">
39
- <slot name="nav"></slot>
40
- </nav>
41
-
42
- <aside class="sidebar">
43
- <slot name="sidebar"></slot>
44
- </aside>
45
-
57
+
58
+ <snice-nav class="nav" part="nav" variant="grouped" orientation="horizontal"></snice-nav>
59
+
60
+ <aside class="sidebar" part="breadcrumbs"></aside>
61
+
46
62
  <main class="main">
47
- <slot></slot>
63
+ <slot name="page"></slot>
48
64
  </main>
49
-
65
+
50
66
  <aside class="right-sidebar">
51
67
  <slot name="right-sidebar"></slot>
52
68
  </aside>
@@ -56,6 +72,69 @@ let SniceLayoutDashboard = (() => {
56
72
  css() {
57
73
  return css;
58
74
  }
75
+ update(_appContext, placards, currentRoute, _routeParams) {
76
+ this.placards = placards;
77
+ this.currentRoute = currentRoute;
78
+ // Update navigation and breadcrumbs
79
+ this.renderNav();
80
+ this.renderBreadcrumbs();
81
+ }
82
+ renderNav() {
83
+ if (this.navElement) {
84
+ this.navElement.placards = this.placards;
85
+ this.navElement.currentRoute = this.currentRoute;
86
+ }
87
+ return '';
88
+ }
89
+ renderBreadcrumbs() {
90
+ const currentPlacard = this.placards.find(p => this.currentRoute === p.name || this.currentRoute.startsWith(`/${p.name}`));
91
+ if (!currentPlacard) {
92
+ return '';
93
+ }
94
+ // Build breadcrumb trail
95
+ const breadcrumbs = this.buildBreadcrumbTrail(currentPlacard);
96
+ if (breadcrumbs.length === 0) {
97
+ return '';
98
+ }
99
+ return `
100
+ <snice-breadcrumbs
101
+ items='${JSON.stringify(breadcrumbs.map(p => ({
102
+ label: p.title,
103
+ href: `#/${p.name}`,
104
+ icon: p.icon
105
+ })))}'
106
+ separator="/">
107
+ </snice-breadcrumbs>
108
+ `;
109
+ }
110
+ buildBreadcrumbTrail(placard) {
111
+ const trail = [];
112
+ // If explicit breadcrumbs are defined, use them
113
+ if (placard.breadcrumbs && placard.breadcrumbs.length > 0) {
114
+ placard.breadcrumbs.forEach(name => {
115
+ const p = this.placards.find(pc => pc.name === name);
116
+ if (p)
117
+ trail.push(p);
118
+ });
119
+ return trail;
120
+ }
121
+ // Otherwise, build from parent hierarchy
122
+ let current = placard;
123
+ const visited = new Set();
124
+ while (current) {
125
+ if (visited.has(current.name))
126
+ break; // Prevent infinite loops
127
+ visited.add(current.name);
128
+ trail.unshift(current);
129
+ if (current.parent) {
130
+ current = this.placards.find(p => p.name === current.parent);
131
+ }
132
+ else {
133
+ break;
134
+ }
135
+ }
136
+ return trail;
137
+ }
59
138
  });
60
139
  return _classThis;
61
140
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"snice-layout-dashboard.js","sources":["../../../components/layout/snice-layout-dashboard.css?inline","../../../../components/layout/snice-layout-dashboard.ts"],"sourcesContent":["export default \"/* Dashboard Layout - Complex grid with multiple areas */\\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-areas: \\n \\\"header header header\\\"\\n \\\"nav nav nav\\\"\\n \\\"sidebar main right-sidebar\\\";\\n grid-template-rows: auto auto 1fr;\\n grid-template-columns: 250px 1fr 250px;\\n min-height: 100vh;\\n gap: 1px;\\n background: var(--snice-color-border, #d1d5db);\\n}\\n\\n.header {\\n grid-area: 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}\\n\\n.header-start h1 {\\n margin: 0;\\n font-size: var(--snice-font-size-xl, 1.5rem);\\n font-weight: var(--snice-font-weight-semibold, 600);\\n color: var(--snice-color-text, #374151);\\n}\\n\\n.header-center {\\n flex: 1;\\n max-width: 400px;\\n margin: 0 var(--snice-spacing-lg, 2rem);\\n}\\n\\n.nav {\\n grid-area: nav;\\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}\\n\\n.sidebar {\\n grid-area: sidebar;\\n background: var(--snice-color-background, white);\\n padding: var(--snice-spacing-lg, 2rem);\\n overflow-y: auto;\\n}\\n\\n.main {\\n grid-area: main;\\n padding: var(--snice-spacing-lg, 2rem);\\n background: var(--snice-color-background-secondary, #f8fafc);\\n overflow-y: auto;\\n}\\n\\n.right-sidebar {\\n grid-area: right-sidebar;\\n background: var(--snice-color-background, white);\\n padding: var(--snice-spacing-lg, 2rem);\\n overflow-y: auto;\\n}\\n\\n/* Responsive */\\n@media (max-width: 1024px) {\\n .layout {\\n grid-template-areas: \\n \\\"header header\\\"\\n \\\"nav nav\\\"\\n \\\"main main\\\";\\n grid-template-columns: 1fr;\\n }\\n \\n .sidebar,\\n .right-sidebar {\\n display: none;\\n }\\n}\\n\\n@media (max-width: 768px) {\\n .header {\\n flex-direction: column;\\n gap: var(--snice-spacing-md, 1rem);\\n }\\n \\n .header-center {\\n margin: 0;\\n max-width: none;\\n width: 100%;\\n }\\n}\";",null],"names":[],"mappings":";;;AAAA,UAAe,2uEAA2uE;;ICI7uE,oBAAoB,GAAA,CAAA,MAAA;4BADhC,OAAO,CAAC,wBAAwB,CAAC,CAAA;;;;sBACQ,WAAW;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;YAArD,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,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;;;;;;;"}
1
+ {"version":3,"file":"snice-layout-dashboard.js","sources":["../../../components/layout/snice-layout-dashboard.css?inline","../../../../components/layout/snice-layout-dashboard.ts"],"sourcesContent":["export default \"/* Dashboard Layout - Complex grid with multiple areas */\\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-areas: \\n \\\"header header header\\\"\\n \\\"nav nav nav\\\"\\n \\\"sidebar main right-sidebar\\\";\\n grid-template-rows: auto auto 1fr;\\n grid-template-columns: 250px 1fr 250px;\\n min-height: 100vh;\\n gap: 1px;\\n background: var(--snice-color-border, #d1d5db);\\n}\\n\\n.header {\\n grid-area: 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}\\n\\n.header-start h1 {\\n margin: 0;\\n font-size: var(--snice-font-size-xl, 1.5rem);\\n font-weight: var(--snice-font-weight-semibold, 600);\\n color: var(--snice-color-text, #374151);\\n}\\n\\n.header-center {\\n flex: 1;\\n max-width: 400px;\\n margin: 0 var(--snice-spacing-lg, 2rem);\\n}\\n\\n.nav {\\n grid-area: nav;\\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}\\n\\n.sidebar {\\n grid-area: sidebar;\\n background: var(--snice-color-background, white);\\n padding: var(--snice-spacing-lg, 2rem);\\n overflow-y: auto;\\n}\\n\\n.main {\\n grid-area: main;\\n padding: var(--snice-spacing-lg, 2rem);\\n background: var(--snice-color-background-secondary, #f8fafc);\\n overflow-y: auto;\\n}\\n\\n.right-sidebar {\\n grid-area: right-sidebar;\\n background: var(--snice-color-background, white);\\n padding: var(--snice-spacing-lg, 2rem);\\n overflow-y: auto;\\n}\\n\\n/* Responsive */\\n@media (max-width: 1024px) {\\n .layout {\\n grid-template-areas: \\n \\\"header header\\\"\\n \\\"nav nav\\\"\\n \\\"main main\\\";\\n grid-template-columns: 1fr;\\n }\\n \\n .sidebar,\\n .right-sidebar {\\n display: none;\\n }\\n}\\n\\n@media (max-width: 768px) {\\n .header {\\n flex-direction: column;\\n gap: var(--snice-spacing-md, 1rem);\\n }\\n \\n .header-center {\\n margin: 0;\\n max-width: none;\\n width: 100%;\\n }\\n}\";",null],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ let SniceLayoutFullscreen = (() => {
16
16
  static { _classThis = this; }
17
17
  static {
18
18
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
19
- _overlay_decorators = [property({ type: Boolean, reflect: true })];
19
+ _overlay_decorators = [property({ type: Boolean, })];
20
20
  __esDecorate(null, null, _overlay_decorators, { kind: "field", name: "overlay", static: false, private: false, access: { has: obj => "overlay" in obj, get: obj => obj.overlay, set: (obj, value) => { obj.overlay = value; } }, metadata: _metadata }, _overlay_initializers, _overlay_extraInitializers);
21
21
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
22
22
  _classThis = _classDescriptor.value;
@@ -1 +1 @@
1
- {"version":3,"file":"snice-layout-fullscreen.js","sources":["../../../components/layout/snice-layout-fullscreen.css?inline","../../../../components/layout/snice-layout-fullscreen.ts"],"sourcesContent":["export default \"/* Fullscreen Layout - For presentations, media viewers, etc */\\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 position: relative;\\n width: 100vw;\\n height: 100vh;\\n overflow: hidden;\\n background: var(--snice-color-background-dark, #111827);\\n}\\n\\n.background {\\n position: absolute;\\n inset: 0;\\n z-index: 1;\\n}\\n\\n.overlay {\\n position: absolute;\\n inset: 0;\\n z-index: 2;\\n background: rgba(0, 0, 0, 0.5);\\n opacity: 0;\\n transition: opacity var(--snice-transition-normal, 0.25s) ease;\\n pointer-events: none;\\n}\\n\\n:host([overlay]) .overlay {\\n opacity: 1;\\n pointer-events: auto;\\n}\\n\\n.content {\\n position: absolute;\\n inset: 0;\\n z-index: 3;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: var(--snice-spacing-lg, 2rem);\\n}\\n\\n.controls {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 4;\\n padding: var(--snice-spacing-lg, 2rem);\\n background: linear-gradient(transparent, rgba(0, 0, 0, 0.8));\\n transform: translateY(100%);\\n transition: transform var(--snice-transition-normal, 0.25s) ease;\\n}\\n\\n:host(:hover) .controls {\\n transform: translateY(0);\\n}\\n\\n/* Media queries for mobile */\\n@media (max-width: 768px) {\\n .controls {\\n transform: translateY(0);\\n background: rgba(0, 0, 0, 0.8);\\n }\\n \\n .content {\\n padding: var(--snice-spacing-md, 1rem);\\n }\\n}\";",null],"names":[],"mappings":";;;AAAA,UAAe,28CAA28C;;ICI78C,qBAAqB,GAAA,CAAA,MAAA;4BADjC,OAAO,CAAC,yBAAyB,CAAC,CAAA;;;;sBACQ,WAAW;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;mCACnD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,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,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAP,OAAO,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,qBAAA,EAAA,0BAAA,CAAA;YAFT,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;;QAIX,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;;;;;;;;;;;;;KAkBd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;;;YA1BA,IAAA,CAAA,OAAO,GAAA,iBAAA,CAAA,IAAA,EAAA,qBAAA,EAAG,KAAK,CAAA;;;;;;;;;"}
1
+ {"version":3,"file":"snice-layout-fullscreen.js","sources":["../../../components/layout/snice-layout-fullscreen.css?inline","../../../../components/layout/snice-layout-fullscreen.ts"],"sourcesContent":["export default \"/* Fullscreen Layout - For presentations, media viewers, etc */\\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 position: relative;\\n width: 100vw;\\n height: 100vh;\\n overflow: hidden;\\n background: var(--snice-color-background-dark, #111827);\\n}\\n\\n.background {\\n position: absolute;\\n inset: 0;\\n z-index: 1;\\n}\\n\\n.overlay {\\n position: absolute;\\n inset: 0;\\n z-index: 2;\\n background: rgba(0, 0, 0, 0.5);\\n opacity: 0;\\n transition: opacity var(--snice-transition-normal, 0.25s) ease;\\n pointer-events: none;\\n}\\n\\n:host([overlay]) .overlay {\\n opacity: 1;\\n pointer-events: auto;\\n}\\n\\n.content {\\n position: absolute;\\n inset: 0;\\n z-index: 3;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: var(--snice-spacing-lg, 2rem);\\n}\\n\\n.controls {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 4;\\n padding: var(--snice-spacing-lg, 2rem);\\n background: linear-gradient(transparent, rgba(0, 0, 0, 0.8));\\n transform: translateY(100%);\\n transition: transform var(--snice-transition-normal, 0.25s) ease;\\n}\\n\\n:host(:hover) .controls {\\n transform: translateY(0);\\n}\\n\\n/* Media queries for mobile */\\n@media (max-width: 768px) {\\n .controls {\\n transform: translateY(0);\\n background: rgba(0, 0, 0, 0.8);\\n }\\n \\n .content {\\n padding: var(--snice-spacing-md, 1rem);\\n }\\n}\";",null],"names":[],"mappings":";;;AAAA,UAAe,28CAA28C;;ICI78C,qBAAqB,GAAA,CAAA,MAAA;4BADjC,OAAO,CAAC,yBAAyB,CAAC,CAAA;;;;sBACQ,WAAW;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;AACnD,YAAA,mBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,GAAI,CAAC,CAAA;YAC9B,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,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,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAP,OAAO,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,qBAAA,EAAA,0BAAA,CAAA;YAFT,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;;QAIX,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;;;;;;;;;;;;;KAkBd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;;;YA1BA,IAAA,CAAA,OAAO,GAAA,iBAAA,CAAA,IAAA,EAAA,qBAAA,EAAG,KAAK,CAAA;;;;;;;;;"}
@@ -1,4 +1,13 @@
1
- export declare class SniceLayoutLanding extends HTMLElement {
1
+ import type { AppContext, Placard, RouteParams, Layout } from 'snice';
2
+ import '../nav/snice-nav.ts';
3
+ import type { SniceNav } from '../nav/snice-nav.ts';
4
+ export declare class SniceLayoutLanding extends HTMLElement implements Layout {
5
+ navElement?: SniceNav;
6
+ useNav: boolean;
7
+ private placards;
8
+ private currentRoute;
2
9
  html(): string;
3
10
  css(): string;
11
+ update(_appContext: AppContext, placards: Placard[], currentRoute: string, _routeParams: RouteParams): void;
12
+ renderNav(): string;
4
13
  }
@@ -1,5 +1,6 @@
1
- import { __esDecorate, __runInitializers } from 'tslib';
2
- import { element } from 'snice';
1
+ import { __runInitializers, __esDecorate } from 'tslib';
2
+ import { element, query, property, part } from 'snice';
3
+ import '../nav/snice-nav.js';
3
4
 
4
5
  var css = "/* Landing Page Layout */\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 min-height: 100vh;\n display: flex;\n flex-direction: column;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 0 var(--snice-spacing-lg, 2rem);\n}\n\n.header {\n background: var(--snice-color-background, white);\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\n position: sticky;\n top: 0;\n z-index: 100;\n}\n\n.header .container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: var(--snice-spacing-md, 1rem);\n padding-bottom: var(--snice-spacing-md, 1rem);\n}\n\n.brand h1 {\n margin: 0;\n font-size: var(--snice-font-size-xl, 1.5rem);\n font-weight: var(--snice-font-weight-bold, 700);\n color: var(--snice-color-text, #374151);\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 transition: color var(--snice-transition-fast, 0.15s) ease;\n}\n\n.nav ::slotted(a:hover) {\n color: var(--snice-color-primary, #3b82f6);\n}\n\n.main {\n flex: 1;\n}\n\n.hero {\n background: var(--snice-color-background-secondary, #f8fafc);\n padding: var(--snice-spacing-2xl, 4rem) 0;\n}\n\n.content {\n background: var(--snice-color-background, white);\n}\n\n.footer {\n background: var(--snice-color-background-tertiary, #f1f5f9);\n border-top: 1px solid var(--snice-color-border, #d1d5db);\n padding: var(--snice-spacing-xl, 3rem) 0;\n margin-top: auto;\n}\n\n/* Mobile responsive */\n@media (max-width: 768px) {\n .header .container {\n flex-direction: column;\n gap: var(--snice-spacing-md, 1rem);\n }\n \n .nav {\n gap: var(--snice-spacing-md, 1rem);\n }\n \n .hero {\n padding: var(--snice-spacing-xl, 3rem) 0;\n }\n}";
5
6
 
@@ -9,10 +10,31 @@ let SniceLayoutLanding = (() => {
9
10
  let _classExtraInitializers = [];
10
11
  let _classThis;
11
12
  let _classSuper = HTMLElement;
13
+ let _instanceExtraInitializers = [];
14
+ let _navElement_decorators;
15
+ let _navElement_initializers = [];
16
+ let _navElement_extraInitializers = [];
17
+ let _useNav_decorators;
18
+ let _useNav_initializers = [];
19
+ let _useNav_extraInitializers = [];
20
+ let _renderNav_decorators;
12
21
  (class extends _classSuper {
13
22
  static { _classThis = this; }
23
+ constructor() {
24
+ super(...arguments);
25
+ this.navElement = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _navElement_initializers, void 0));
26
+ this.useNav = (__runInitializers(this, _navElement_extraInitializers), __runInitializers(this, _useNav_initializers, false));
27
+ this.placards = (__runInitializers(this, _useNav_extraInitializers), []);
28
+ this.currentRoute = '';
29
+ }
14
30
  static {
15
31
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
32
+ _navElement_decorators = [query('snice-nav')];
33
+ _useNav_decorators = [property({ type: Boolean, attribute: 'use-nav' })];
34
+ _renderNav_decorators = [part('nav')];
35
+ __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);
36
+ __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);
37
+ __esDecorate(null, null, _useNav_decorators, { kind: "field", name: "useNav", static: false, private: false, access: { has: obj => "useNav" in obj, get: obj => obj.useNav, set: (obj, value) => { obj.useNav = value; } }, metadata: _metadata }, _useNav_initializers, _useNav_extraInitializers);
16
38
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
17
39
  _classThis = _classDescriptor.value;
18
40
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -28,25 +50,29 @@ let SniceLayoutLanding = (() => {
28
50
  <h1>Brand</h1>
29
51
  </slot>
30
52
  </div>
31
- <nav class="nav">
32
- <slot name="nav"></slot>
33
- </nav>
53
+ ${this.useNav ? /*html*/ `
54
+ <snice-nav class="nav" part="nav" variant="flat" orientation="horizontal"></snice-nav>
55
+ ` : /*html*/ `
56
+ <nav class="nav">
57
+ <slot name="nav"></slot>
58
+ </nav>
59
+ `}
34
60
  <div class="cta">
35
61
  <slot name="cta"></slot>
36
62
  </div>
37
63
  </div>
38
64
  </header>
39
-
65
+
40
66
  <main class="main">
41
67
  <section class="hero">
42
68
  <slot name="hero"></slot>
43
69
  </section>
44
-
70
+
45
71
  <div class="content">
46
72
  <slot></slot>
47
73
  </div>
48
74
  </main>
49
-
75
+
50
76
  <footer class="footer">
51
77
  <div class="container">
52
78
  <slot name="footer"></slot>
@@ -58,6 +84,19 @@ let SniceLayoutLanding = (() => {
58
84
  css() {
59
85
  return css;
60
86
  }
87
+ update(_appContext, placards, currentRoute, _routeParams) {
88
+ this.placards = placards;
89
+ this.currentRoute = currentRoute;
90
+ this.useNav = true;
91
+ this.renderNav();
92
+ }
93
+ renderNav() {
94
+ if (this.navElement) {
95
+ this.navElement.placards = this.placards;
96
+ this.navElement.currentRoute = this.currentRoute;
97
+ }
98
+ return '';
99
+ }
61
100
  });
62
101
  return _classThis;
63
102
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"snice-layout-landing.js","sources":["../../../components/layout/snice-layout-landing.css?inline","../../../../components/layout/snice-layout-landing.ts"],"sourcesContent":["export default \"/* Landing Page Layout */\\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 min-height: 100vh;\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.container {\\n max-width: 1200px;\\n margin: 0 auto;\\n padding: 0 var(--snice-spacing-lg, 2rem);\\n}\\n\\n.header {\\n background: var(--snice-color-background, white);\\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\\n position: sticky;\\n top: 0;\\n z-index: 100;\\n}\\n\\n.header .container {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding-top: var(--snice-spacing-md, 1rem);\\n padding-bottom: var(--snice-spacing-md, 1rem);\\n}\\n\\n.brand h1 {\\n margin: 0;\\n font-size: var(--snice-font-size-xl, 1.5rem);\\n font-weight: var(--snice-font-weight-bold, 700);\\n color: var(--snice-color-text, #374151);\\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 transition: color var(--snice-transition-fast, 0.15s) ease;\\n}\\n\\n.nav ::slotted(a:hover) {\\n color: var(--snice-color-primary, #3b82f6);\\n}\\n\\n.main {\\n flex: 1;\\n}\\n\\n.hero {\\n background: var(--snice-color-background-secondary, #f8fafc);\\n padding: var(--snice-spacing-2xl, 4rem) 0;\\n}\\n\\n.content {\\n background: var(--snice-color-background, white);\\n}\\n\\n.footer {\\n background: var(--snice-color-background-tertiary, #f1f5f9);\\n border-top: 1px solid var(--snice-color-border, #d1d5db);\\n padding: var(--snice-spacing-xl, 3rem) 0;\\n margin-top: auto;\\n}\\n\\n/* Mobile responsive */\\n@media (max-width: 768px) {\\n .header .container {\\n flex-direction: column;\\n gap: var(--snice-spacing-md, 1rem);\\n }\\n \\n .nav {\\n gap: var(--snice-spacing-md, 1rem);\\n }\\n \\n .hero {\\n padding: var(--snice-spacing-xl, 3rem) 0;\\n }\\n}\";",null],"names":[],"mappings":";;;AAAA,UAAe,g9DAAg9D;;ICIl9D,kBAAkB,GAAA,CAAA,MAAA;4BAD9B,OAAO,CAAC,sBAAsB,CAAC,CAAA;;;;sBACQ,WAAW;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;YAAnD,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,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkCd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;;;;;;;"}
1
+ {"version":3,"file":"snice-layout-landing.js","sources":["../../../components/layout/snice-layout-landing.css?inline","../../../../components/layout/snice-layout-landing.ts"],"sourcesContent":["export default \"/* Landing Page Layout */\\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 min-height: 100vh;\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.container {\\n max-width: 1200px;\\n margin: 0 auto;\\n padding: 0 var(--snice-spacing-lg, 2rem);\\n}\\n\\n.header {\\n background: var(--snice-color-background, white);\\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\\n position: sticky;\\n top: 0;\\n z-index: 100;\\n}\\n\\n.header .container {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding-top: var(--snice-spacing-md, 1rem);\\n padding-bottom: var(--snice-spacing-md, 1rem);\\n}\\n\\n.brand h1 {\\n margin: 0;\\n font-size: var(--snice-font-size-xl, 1.5rem);\\n font-weight: var(--snice-font-weight-bold, 700);\\n color: var(--snice-color-text, #374151);\\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 transition: color var(--snice-transition-fast, 0.15s) ease;\\n}\\n\\n.nav ::slotted(a:hover) {\\n color: var(--snice-color-primary, #3b82f6);\\n}\\n\\n.main {\\n flex: 1;\\n}\\n\\n.hero {\\n background: var(--snice-color-background-secondary, #f8fafc);\\n padding: var(--snice-spacing-2xl, 4rem) 0;\\n}\\n\\n.content {\\n background: var(--snice-color-background, white);\\n}\\n\\n.footer {\\n background: var(--snice-color-background-tertiary, #f1f5f9);\\n border-top: 1px solid var(--snice-color-border, #d1d5db);\\n padding: var(--snice-spacing-xl, 3rem) 0;\\n margin-top: auto;\\n}\\n\\n/* Mobile responsive */\\n@media (max-width: 768px) {\\n .header .container {\\n flex-direction: column;\\n gap: var(--snice-spacing-md, 1rem);\\n }\\n \\n .nav {\\n gap: var(--snice-spacing-md, 1rem);\\n }\\n \\n .hero {\\n padding: var(--snice-spacing-xl, 3rem) 0;\\n }\\n}\";",null],"names":[],"mappings":"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"}
@@ -1,5 +1,17 @@
1
- export declare class SniceLayoutSidebar extends HTMLElement {
1
+ import type { AppContext, Placard, RouteParams, Layout } from 'snice';
2
+ import '../drawer/snice-drawer.ts';
3
+ import '../nav/snice-nav.ts';
4
+ import type { SniceNav } from '../nav/snice-nav.ts';
5
+ import type { SniceDrawerElement } from '../drawer/snice-drawer.types.ts';
6
+ export declare class SniceLayoutSidebar extends HTMLElement implements Layout {
2
7
  collapsed: boolean;
8
+ sidebarDrawer?: SniceDrawerElement;
9
+ navElement: SniceNav;
10
+ private placards;
11
+ private currentRoute;
3
12
  html(): string;
4
13
  css(): string;
14
+ handleSidebarToggle(): void;
15
+ update(_appContext: AppContext, placards: Placard[], currentRoute: string, _routeParams: RouteParams): void;
16
+ renderNav(): string;
5
17
  }
@@ -1,7 +1,9 @@
1
- import { __esDecorate, __runInitializers } from 'tslib';
2
- import { element, property } from 'snice';
1
+ import { __runInitializers, __esDecorate } from 'tslib';
2
+ import { element, property, query, on, part } from 'snice';
3
+ import '../drawer/snice-drawer.js';
4
+ import '../nav/snice-nav.js';
3
5
 
4
- var css = "/* Sidebar Layout */\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-columns: 250px 1fr;\n min-height: 100vh;\n transition: grid-template-columns var(--snice-transition-normal, 0.25s) ease;\n}\n\n:host([collapsed]) .layout {\n grid-template-columns: 60px 1fr;\n}\n\n.sidebar {\n background: var(--snice-color-background, white);\n border-right: 1px solid var(--snice-color-border, #d1d5db);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.sidebar-header {\n padding: var(--snice-spacing-lg, 2rem) var(--snice-spacing-md, 1rem);\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\n}\n\n.sidebar-header 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, #374151);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n:host([collapsed]) .sidebar-header {\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-xs, 0.5rem);\n text-align: center;\n}\n\n.sidebar-nav {\n flex: 1;\n padding: var(--snice-spacing-md, 1rem);\n overflow-y: auto;\n}\n\n.content-area {\n display: grid;\n grid-template-rows: auto 1fr auto;\n background: var(--snice-color-background-secondary, #f8fafc);\n}\n\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, 2rem);\n background: var(--snice-color-background, white);\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\n}\n\n.sidebar-toggle {\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, 4px);\n transition: all var(--snice-transition-fast, 0.15s) ease;\n}\n\n.sidebar-toggle:hover {\n background: var(--snice-color-background-secondary, #f8fafc);\n color: var(--snice-color-text, #374151);\n}\n\n.main {\n padding: var(--snice-spacing-lg, 2rem);\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}\n\n/* Mobile responsive */\n@media (max-width: 768px) {\n .layout {\n grid-template-columns: 1fr;\n }\n \n :host([collapsed]) .layout {\n grid-template-columns: 1fr;\n }\n \n .sidebar {\n position: fixed;\n top: 0;\n left: 0;\n width: 250px;\n height: 100vh;\n z-index: 1000;\n transform: translateX(-100%);\n transition: transform var(--snice-transition-normal, 0.25s) ease;\n }\n \n :host(:not([collapsed])) .sidebar {\n transform: translateX(0);\n }\n}";
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}";
5
7
 
6
8
  let SniceLayoutSidebar = (() => {
7
9
  let _classDecorators = [element('snice-layout-sidebar')];
@@ -9,15 +11,40 @@ let SniceLayoutSidebar = (() => {
9
11
  let _classExtraInitializers = [];
10
12
  let _classThis;
11
13
  let _classSuper = HTMLElement;
14
+ let _instanceExtraInitializers = [];
12
15
  let _collapsed_decorators;
13
16
  let _collapsed_initializers = [];
14
17
  let _collapsed_extraInitializers = [];
18
+ let _sidebarDrawer_decorators;
19
+ let _sidebarDrawer_initializers = [];
20
+ let _sidebarDrawer_extraInitializers = [];
21
+ let _navElement_decorators;
22
+ let _navElement_initializers = [];
23
+ let _navElement_extraInitializers = [];
24
+ let _handleSidebarToggle_decorators;
25
+ let _renderNav_decorators;
15
26
  (class extends _classSuper {
16
27
  static { _classThis = this; }
28
+ constructor() {
29
+ super(...arguments);
30
+ this.collapsed = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _collapsed_initializers, false));
31
+ this.sidebarDrawer = (__runInitializers(this, _collapsed_extraInitializers), __runInitializers(this, _sidebarDrawer_initializers, void 0));
32
+ this.navElement = (__runInitializers(this, _sidebarDrawer_extraInitializers), __runInitializers(this, _navElement_initializers, void 0));
33
+ this.placards = (__runInitializers(this, _navElement_extraInitializers), []);
34
+ this.currentRoute = '';
35
+ }
17
36
  static {
18
37
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
19
- _collapsed_decorators = [property({ type: Boolean, reflect: true })];
38
+ _collapsed_decorators = [property({ type: Boolean, })];
39
+ _sidebarDrawer_decorators = [query('.sidebar-drawer')];
40
+ _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);
20
45
  __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
+ __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
+ __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);
21
48
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
22
49
  _classThis = _classDescriptor.value;
23
50
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -26,45 +53,59 @@ let SniceLayoutSidebar = (() => {
26
53
  html() {
27
54
  return /*html*/ `
28
55
  <div class="layout">
29
- <aside class="sidebar">
30
- <div class="sidebar-header">
56
+ <header class="header">
57
+ <button class="sidebar-toggle" type="button" aria-label="Toggle sidebar">
58
+ <svg viewBox="0 0 24 24" width="20" height="20">
59
+ <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" fill="currentColor"/>
60
+ </svg>
61
+ </button>
62
+ <div class="header-brand">
31
63
  <slot name="brand">
32
64
  <h2>App</h2>
33
65
  </slot>
34
66
  </div>
35
- <nav class="sidebar-nav">
36
- <slot name="nav"></slot>
37
- </nav>
38
- </aside>
39
-
40
- <div class="content-area">
41
- <header class="header">
42
- <button class="sidebar-toggle" type="button" aria-label="Toggle sidebar">
43
- <svg viewBox="0 0 24 24" width="20" height="20">
44
- <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" fill="currentColor"/>
45
- </svg>
46
- </button>
67
+ <div class="header-content">
47
68
  <slot name="header"></slot>
48
- </header>
49
-
69
+ </div>
70
+ </header>
71
+
72
+ <div class="body-area">
73
+ <snice-drawer class="sidebar-drawer" position="left" size="medium" contained>
74
+ <span slot="title">Navigation</span>
75
+ <snice-nav class="sidebar-nav" part="nav" variant="hierarchical" orientation="vertical"></snice-nav>
76
+ </snice-drawer>
77
+
50
78
  <main class="main">
51
- <slot></slot>
79
+ <slot name="page"></slot>
52
80
  </main>
53
-
54
- <footer class="footer">
55
- <slot name="footer"></slot>
56
- </footer>
57
81
  </div>
82
+
83
+ <footer class="footer">
84
+ <slot name="footer"></slot>
85
+ </footer>
58
86
  </div>
59
87
  `;
60
88
  }
61
89
  css() {
62
90
  return css;
63
91
  }
64
- constructor() {
65
- super(...arguments);
66
- this.collapsed = __runInitializers(this, _collapsed_initializers, false);
67
- __runInitializers(this, _collapsed_extraInitializers);
92
+ handleSidebarToggle() {
93
+ if (this.sidebarDrawer) {
94
+ this.sidebarDrawer.toggle();
95
+ }
96
+ }
97
+ update(_appContext, placards, currentRoute, _routeParams) {
98
+ this.placards = placards;
99
+ this.currentRoute = currentRoute;
100
+ // Update the navigation
101
+ this.renderNav();
102
+ }
103
+ renderNav() {
104
+ if (this.navElement) {
105
+ this.navElement.placards = this.placards;
106
+ this.navElement.currentRoute = this.currentRoute;
107
+ }
108
+ return '';
68
109
  }
69
110
  });
70
111
  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 */\\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-columns: 250px 1fr;\\n min-height: 100vh;\\n transition: grid-template-columns var(--snice-transition-normal, 0.25s) ease;\\n}\\n\\n:host([collapsed]) .layout {\\n grid-template-columns: 60px 1fr;\\n}\\n\\n.sidebar {\\n background: var(--snice-color-background, white);\\n border-right: 1px solid var(--snice-color-border, #d1d5db);\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n}\\n\\n.sidebar-header {\\n padding: var(--snice-spacing-lg, 2rem) var(--snice-spacing-md, 1rem);\\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\\n}\\n\\n.sidebar-header 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, #374151);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n:host([collapsed]) .sidebar-header {\\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-xs, 0.5rem);\\n text-align: center;\\n}\\n\\n.sidebar-nav {\\n flex: 1;\\n padding: var(--snice-spacing-md, 1rem);\\n overflow-y: auto;\\n}\\n\\n.content-area {\\n display: grid;\\n grid-template-rows: auto 1fr auto;\\n background: var(--snice-color-background-secondary, #f8fafc);\\n}\\n\\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, 2rem);\\n background: var(--snice-color-background, white);\\n border-bottom: 1px solid var(--snice-color-border, #d1d5db);\\n}\\n\\n.sidebar-toggle {\\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, 4px);\\n transition: all var(--snice-transition-fast, 0.15s) ease;\\n}\\n\\n.sidebar-toggle:hover {\\n background: var(--snice-color-background-secondary, #f8fafc);\\n color: var(--snice-color-text, #374151);\\n}\\n\\n.main {\\n padding: var(--snice-spacing-lg, 2rem);\\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}\\n\\n/* Mobile responsive */\\n@media (max-width: 768px) {\\n .layout {\\n grid-template-columns: 1fr;\\n }\\n \\n :host([collapsed]) .layout {\\n grid-template-columns: 1fr;\\n }\\n \\n .sidebar {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 250px;\\n height: 100vh;\\n z-index: 1000;\\n transform: translateX(-100%);\\n transition: transform var(--snice-transition-normal, 0.25s) ease;\\n }\\n \\n :host(:not([collapsed])) .sidebar {\\n transform: translateX(0);\\n }\\n}\";",null],"names":[],"mappings":";;;AAAA,UAAe,o2FAAo2F;;ICIt2F,kBAAkB,GAAA,CAAA,MAAA;4BAD9B,OAAO,CAAC,sBAAsB,CAAC,CAAA;;;;sBACQ,WAAW;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;qCAChD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,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;YAFX,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;;QAIX,IAAI,GAAA;AACF,YAAA,gBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCd;QACH;QAEA,GAAG,GAAA;AACD,YAAA,OAAO,GAAG;QACZ;;;YAxCA,IAAA,CAAA,SAAS,GAAA,iBAAA,CAAA,IAAA,EAAA,uBAAA,EAAG,KAAK,CAAA;;;;;;;;;"}
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;;;;;;;"}
@@ -19,8 +19,8 @@ let SniceLayoutSplit = (() => {
19
19
  static { _classThis = this; }
20
20
  static {
21
21
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
22
- _direction_decorators = [property({ reflect: true })];
23
- _ratio_decorators = [property({ reflect: true })];
22
+ _direction_decorators = [property({})];
23
+ _ratio_decorators = [property({})];
24
24
  __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
25
  __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
26
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
@@ -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;;;;AAC9C,YAAA,qBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAG3B,YAAA,iBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAF5B,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 \"/* 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;;;;;;;;;"}