@sondor-technology/sondor-components 1.0.0-1165-initial-setup.11

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 (168) hide show
  1. package/README.md +8 -0
  2. package/dist/components/alert/alert.d.ts +13 -0
  3. package/dist/components/alert/alert.d.ts.map +1 -0
  4. package/dist/components/alert/alert.js +105 -0
  5. package/dist/components/badge/badge.d.ts +13 -0
  6. package/dist/components/badge/badge.d.ts.map +1 -0
  7. package/dist/components/badge/badge.js +101 -0
  8. package/dist/components/breadcrumb/breadcrumb.d.ts +19 -0
  9. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  10. package/dist/components/breadcrumb/breadcrumb.js +99 -0
  11. package/dist/components/button/button.d.ts +23 -0
  12. package/dist/components/button/button.d.ts.map +1 -0
  13. package/dist/components/button/button.js +304 -0
  14. package/dist/components/button-group/button-group.d.ts +6 -0
  15. package/dist/components/button-group/button-group.d.ts.map +1 -0
  16. package/dist/components/button-group/button-group.js +74 -0
  17. package/dist/components/card/card.d.ts +11 -0
  18. package/dist/components/card/card.d.ts.map +1 -0
  19. package/dist/components/card/card.js +54 -0
  20. package/dist/components/checkbox/checkbox.d.ts +28 -0
  21. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  22. package/dist/components/checkbox/checkbox.js +247 -0
  23. package/dist/components/code-block/code-block.d.ts +20 -0
  24. package/dist/components/code-block/code-block.d.ts.map +1 -0
  25. package/dist/components/code-block/code-block.js +260 -0
  26. package/dist/components/content-card/content-card.d.ts +13 -0
  27. package/dist/components/content-card/content-card.d.ts.map +1 -0
  28. package/dist/components/content-card/content-card.js +140 -0
  29. package/dist/components/divider/divider.d.ts +16 -0
  30. package/dist/components/divider/divider.d.ts.map +1 -0
  31. package/dist/components/divider/divider.js +82 -0
  32. package/dist/components/drawer/drawer.d.ts +22 -0
  33. package/dist/components/drawer/drawer.d.ts.map +1 -0
  34. package/dist/components/drawer/drawer.js +226 -0
  35. package/dist/components/field/field.d.ts +11 -0
  36. package/dist/components/field/field.d.ts.map +1 -0
  37. package/dist/components/field/field.js +32 -0
  38. package/dist/components/footer/footer.d.ts +6 -0
  39. package/dist/components/footer/footer.d.ts.map +1 -0
  40. package/dist/components/footer/footer.js +65 -0
  41. package/dist/components/form/form-step.d.ts +13 -0
  42. package/dist/components/form/form-step.d.ts.map +1 -0
  43. package/dist/components/form/form-step.js +41 -0
  44. package/dist/components/form/form.d.ts +25 -0
  45. package/dist/components/form/form.d.ts.map +1 -0
  46. package/dist/components/form/form.js +358 -0
  47. package/dist/components/grid/grid-row.d.ts +17 -0
  48. package/dist/components/grid/grid-row.d.ts.map +1 -0
  49. package/dist/components/grid/grid-row.js +92 -0
  50. package/dist/components/grid/grid.d.ts +13 -0
  51. package/dist/components/grid/grid.d.ts.map +1 -0
  52. package/dist/components/grid/grid.js +42 -0
  53. package/dist/components/icon/icon-paths.d.ts +116 -0
  54. package/dist/components/icon/icon-paths.d.ts.map +1 -0
  55. package/dist/components/icon/icon-paths.js +121 -0
  56. package/dist/components/icon/icon.d.ts +16 -0
  57. package/dist/components/icon/icon.d.ts.map +1 -0
  58. package/dist/components/icon/icon.js +95 -0
  59. package/dist/components/input/input.d.ts +31 -0
  60. package/dist/components/input/input.d.ts.map +1 -0
  61. package/dist/components/input/input.js +268 -0
  62. package/dist/components/link/link.d.ts +16 -0
  63. package/dist/components/link/link.d.ts.map +1 -0
  64. package/dist/components/link/link.js +116 -0
  65. package/dist/components/metadata/metadata.d.ts +18 -0
  66. package/dist/components/metadata/metadata.d.ts.map +1 -0
  67. package/dist/components/metadata/metadata.js +71 -0
  68. package/dist/components/modal/modal.d.ts +24 -0
  69. package/dist/components/modal/modal.d.ts.map +1 -0
  70. package/dist/components/modal/modal.js +163 -0
  71. package/dist/components/page-layout/page-layout.d.ts +46 -0
  72. package/dist/components/page-layout/page-layout.d.ts.map +1 -0
  73. package/dist/components/page-layout/page-layout.js +697 -0
  74. package/dist/components/radio/radio.d.ts +16 -0
  75. package/dist/components/radio/radio.d.ts.map +1 -0
  76. package/dist/components/radio/radio.js +152 -0
  77. package/dist/components/radio-group/radio-group.d.ts +27 -0
  78. package/dist/components/radio-group/radio-group.d.ts.map +1 -0
  79. package/dist/components/radio-group/radio-group.js +161 -0
  80. package/dist/components/router/router.d.ts +7 -0
  81. package/dist/components/router/router.d.ts.map +1 -0
  82. package/dist/components/router/router.js +37 -0
  83. package/dist/components/select/select.d.ts +16 -0
  84. package/dist/components/select/select.d.ts.map +1 -0
  85. package/dist/components/select/select.js +172 -0
  86. package/dist/components/skeleton/skeleton.d.ts +17 -0
  87. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  88. package/dist/components/skeleton/skeleton.js +78 -0
  89. package/dist/components/switch/switch.d.ts +25 -0
  90. package/dist/components/switch/switch.d.ts.map +1 -0
  91. package/dist/components/switch/switch.js +185 -0
  92. package/dist/components/table/data-table.d.ts +72 -0
  93. package/dist/components/table/data-table.d.ts.map +1 -0
  94. package/dist/components/table/data-table.js +551 -0
  95. package/dist/components/table/table.d.ts +22 -0
  96. package/dist/components/table/table.d.ts.map +1 -0
  97. package/dist/components/table/table.js +167 -0
  98. package/dist/components/tabs/tab-panel.d.ts +8 -0
  99. package/dist/components/tabs/tab-panel.d.ts.map +1 -0
  100. package/dist/components/tabs/tab-panel.js +46 -0
  101. package/dist/components/tabs/tab.d.ts +9 -0
  102. package/dist/components/tabs/tab.d.ts.map +1 -0
  103. package/dist/components/tabs/tab.js +91 -0
  104. package/dist/components/tabs/tabs.d.ts +14 -0
  105. package/dist/components/tabs/tabs.d.ts.map +1 -0
  106. package/dist/components/tabs/tabs.js +85 -0
  107. package/dist/components/textarea/textarea.d.ts +36 -0
  108. package/dist/components/textarea/textarea.d.ts.map +1 -0
  109. package/dist/components/textarea/textarea.js +231 -0
  110. package/dist/components/theme-toggle/theme-toggle.d.ts +15 -0
  111. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -0
  112. package/dist/components/theme-toggle/theme-toggle.js +130 -0
  113. package/dist/components/vertical-nav/vertical-nav-group.d.ts +9 -0
  114. package/dist/components/vertical-nav/vertical-nav-group.d.ts.map +1 -0
  115. package/dist/components/vertical-nav/vertical-nav-group.js +111 -0
  116. package/dist/components/vertical-nav/vertical-nav-item.d.ts +8 -0
  117. package/dist/components/vertical-nav/vertical-nav-item.d.ts.map +1 -0
  118. package/dist/components/vertical-nav/vertical-nav-item.js +65 -0
  119. package/dist/styles/index.css +171 -0
  120. package/dist/styles/reset.d.ts +2 -0
  121. package/dist/styles/reset.d.ts.map +1 -0
  122. package/dist/styles/reset.js +50 -0
  123. package/package.json +192 -0
  124. package/src/components/alert/alert.ts +101 -0
  125. package/src/components/badge/badge.ts +97 -0
  126. package/src/components/breadcrumb/breadcrumb.ts +99 -0
  127. package/src/components/button/button.ts +281 -0
  128. package/src/components/button-group/button-group.ts +67 -0
  129. package/src/components/card/card.ts +53 -0
  130. package/src/components/checkbox/checkbox.ts +238 -0
  131. package/src/components/code-block/code-block.ts +257 -0
  132. package/src/components/content-card/content-card.ts +134 -0
  133. package/src/components/divider/divider.ts +69 -0
  134. package/src/components/drawer/drawer.ts +218 -0
  135. package/src/components/field/field.ts +31 -0
  136. package/src/components/footer/footer.ts +58 -0
  137. package/src/components/form/form-step.ts +32 -0
  138. package/src/components/form/form.ts +376 -0
  139. package/src/components/grid/grid-row.ts +76 -0
  140. package/src/components/grid/grid.ts +37 -0
  141. package/src/components/icon/icon-paths.ts +124 -0
  142. package/src/components/icon/icon.ts +83 -0
  143. package/src/components/input/input.ts +248 -0
  144. package/src/components/link/link.ts +98 -0
  145. package/src/components/metadata/metadata.ts +67 -0
  146. package/src/components/modal/modal.ts +159 -0
  147. package/src/components/page-layout/page-layout.ts +705 -0
  148. package/src/components/radio/radio.ts +142 -0
  149. package/src/components/radio-group/radio-group.ts +157 -0
  150. package/src/components/router/router.ts +47 -0
  151. package/src/components/select/select.ts +162 -0
  152. package/src/components/skeleton/skeleton.ts +68 -0
  153. package/src/components/switch/switch.ts +181 -0
  154. package/src/components/table/data-table.ts +557 -0
  155. package/src/components/table/table.ts +154 -0
  156. package/src/components/tabs/tab-panel.ts +31 -0
  157. package/src/components/tabs/tab.ts +77 -0
  158. package/src/components/tabs/tabs.ts +88 -0
  159. package/src/components/textarea/textarea.ts +215 -0
  160. package/src/components/theme-toggle/theme-toggle.ts +131 -0
  161. package/src/components/vertical-nav/vertical-nav-group.ts +97 -0
  162. package/src/components/vertical-nav/vertical-nav-item.ts +50 -0
  163. package/src/styles/globals.css +58 -0
  164. package/src/styles/index.css +80 -0
  165. package/src/styles/reset.ts +51 -0
  166. package/src/styles/theme.css +59 -0
  167. package/src/styles/typography.css +26 -0
  168. package/tsconfig.json +16 -0
@@ -0,0 +1,697 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, css } from 'lit';
8
+ import { customElement, property, state } from 'lit/decorators.js';
9
+ import { resetStyles } from '../../styles/reset.js';
10
+ let StPageLayout = class StPageLayout extends LitElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ /**
14
+ * Defines the structural layout variant to render.
15
+ */
16
+ this.variant = 'single-column';
17
+ /**
18
+ * Maximum width for the left sidebar section (e.g., '20rem', '300px').
19
+ */
20
+ this.sidebarWidth = '';
21
+ /**
22
+ * Maximum width for the right sidebar section (e.g., '16rem', '250px').
23
+ */
24
+ this.rightSidebarWidth = '';
25
+ /**
26
+ * Optional maximum width for the main content area (e.g., '48rem', '800px').
27
+ */
28
+ this.mainMaxWidth = '';
29
+ /**
30
+ * When true, expands the main content area to fill 100% of the available width between sidebars.
31
+ */
32
+ this.fillMain = false;
33
+ this._mobileMenuOpen = false;
34
+ this._touchStartX = 0;
35
+ this._currentTranslateX = 0;
36
+ this._isDragging = false;
37
+ this._toggleMobileMenu = () => {
38
+ this._mobileMenuOpen = !this._mobileMenuOpen;
39
+ };
40
+ this._closeMobileMenu = () => {
41
+ this._mobileMenuOpen = false;
42
+ };
43
+ // Only close if an actual navigation link/item was clicked
44
+ this._handleNavClick = (e) => {
45
+ const path = e.composedPath();
46
+ const clickedLink = path.some(node => {
47
+ const el = node;
48
+ return el.tagName === 'A' || el.tagName === 'ST-VERTICAL-NAV-ITEM';
49
+ });
50
+ if (clickedLink) {
51
+ this._closeMobileMenu();
52
+ }
53
+ };
54
+ this._handleTouchStart = (e) => {
55
+ if (window.innerWidth >= 768)
56
+ return;
57
+ this._touchStartX = e.touches[0].clientX;
58
+ this._isDragging = true;
59
+ const sidebar = e.currentTarget;
60
+ sidebar.style.transition = 'none';
61
+ };
62
+ this._handleTouchMove = (e) => {
63
+ if (!this._isDragging || window.innerWidth >= 768)
64
+ return;
65
+ const currentX = e.touches[0].clientX;
66
+ const diff = currentX - this._touchStartX;
67
+ const sidebar = e.currentTarget;
68
+ if (diff < 0) {
69
+ this._currentTranslateX = diff;
70
+ sidebar.style.transform = `translateX(${diff}px)`;
71
+ }
72
+ };
73
+ this._handleTouchEnd = (e) => {
74
+ if (!this._isDragging || window.innerWidth >= 768)
75
+ return;
76
+ this._isDragging = false;
77
+ const sidebar = e.currentTarget;
78
+ sidebar.style.transition = '';
79
+ if (this._currentTranslateX < -70) {
80
+ this._closeMobileMenu();
81
+ sidebar.style.transform = '';
82
+ }
83
+ else {
84
+ sidebar.style.transform = '';
85
+ }
86
+ this._currentTranslateX = 0;
87
+ };
88
+ this._resizeListener = () => {
89
+ if (window.innerWidth >= 768 && this._mobileMenuOpen) {
90
+ this._mobileMenuOpen = false;
91
+ }
92
+ };
93
+ }
94
+ updated(changedProperties) {
95
+ super.updated(changedProperties);
96
+ if (changedProperties.has('sidebarWidth')) {
97
+ if (this.sidebarWidth) {
98
+ this.style.setProperty('--layout-sidebar-width', this.sidebarWidth);
99
+ }
100
+ else {
101
+ this.style.removeProperty('--layout-sidebar-width');
102
+ }
103
+ }
104
+ if (changedProperties.has('rightSidebarWidth')) {
105
+ if (this.rightSidebarWidth) {
106
+ this.style.setProperty('--layout-right-sidebar-width', this.rightSidebarWidth);
107
+ }
108
+ else {
109
+ this.style.removeProperty('--layout-right-sidebar-width');
110
+ }
111
+ }
112
+ if (changedProperties.has('mainMaxWidth')) {
113
+ if (this.mainMaxWidth) {
114
+ this.style.setProperty('--layout-main-max-width', this.mainMaxWidth);
115
+ }
116
+ else {
117
+ this.style.removeProperty('--layout-main-max-width');
118
+ }
119
+ }
120
+ }
121
+ connectedCallback() {
122
+ super.connectedCallback();
123
+ window.addEventListener('resize', this._resizeListener);
124
+ }
125
+ disconnectedCallback() {
126
+ super.disconnectedCallback();
127
+ window.removeEventListener('resize', this._resizeListener);
128
+ }
129
+ render() {
130
+ const backdrop = html `
131
+ <div
132
+ class="mobile-backdrop ${this._mobileMenuOpen ? 'open' : ''}"
133
+ @click=${this._closeMobileMenu}
134
+ ></div>
135
+ `;
136
+ const hamburgerBtn = html `
137
+ <button class="mobile-menu-btn" @click=${this._toggleMobileMenu} aria-label="Open Navigation Menu">
138
+ <svg viewBox="0 0 24 24"><path d="M3 12h18M3 6h18M3 18h18"></path></svg>
139
+ </button>
140
+ `;
141
+ const drawerHeader = html `
142
+ <div class="mobile-drawer-header">
143
+ <span class="mobile-drawer-title">Menu</span>
144
+ <button class="mobile-close-btn" @click=${this._closeMobileMenu} aria-label="Close Navigation Menu">
145
+ <svg viewBox="0 0 24 24"><path d="M18 6L6 18M6 6l12 12"></path></svg>
146
+ </button>
147
+ </div>
148
+ `;
149
+ if (this.variant === 'app-shell') {
150
+ return html `
151
+ ${backdrop}
152
+ <div class="layout-app-shell">
153
+ <aside
154
+ class="app-shell-sidebar ${this._mobileMenuOpen ? 'open' : ''}"
155
+ @click=${this._handleNavClick}
156
+ @touchstart=${this._handleTouchStart}
157
+ @touchmove=${this._handleTouchMove}
158
+ @touchend=${this._handleTouchEnd}
159
+ >
160
+ ${drawerHeader}
161
+ <div class="app-shell-sidebar-inner">
162
+ <slot name="sidebar"></slot>
163
+ </div>
164
+ </aside>
165
+
166
+ <div class="app-shell-content">
167
+ <header class="app-shell-nav">
168
+ ${hamburgerBtn}
169
+ <slot name="nav"></slot>
170
+ </header>
171
+
172
+ <main class="app-shell-main">
173
+ <slot></slot>
174
+ </main>
175
+
176
+ <footer class="app-shell-footer">
177
+ <slot name="footer"></slot>
178
+ </footer>
179
+ </div>
180
+ </div>
181
+ `;
182
+ }
183
+ if (this.variant === 'content-sidebar') {
184
+ return html `
185
+ <div class="layout-content-sidebar">
186
+ <header class="content-sidebar-nav">
187
+ <div style="display: flex; align-items: center; padding: 0 var(--st-spacing-md); height: var(--layout-nav-height);">
188
+ <slot name="nav"></slot>
189
+ </div>
190
+ </header>
191
+
192
+ <div class="content-sidebar-container">
193
+ <main class="content-sidebar-main">
194
+ <slot></slot>
195
+ </main>
196
+
197
+ <aside class="content-sidebar-aside">
198
+ <div class="content-sidebar-aside-inner">
199
+ <slot name="aside"></slot>
200
+ </div>
201
+ </aside>
202
+ </div>
203
+
204
+ <footer class="content-sidebar-footer">
205
+ <slot name="footer"></slot>
206
+ </footer>
207
+ </div>
208
+ `;
209
+ }
210
+ if (this.variant === 'three-column') {
211
+ return html `
212
+ ${backdrop}
213
+ <div class="layout-three-column">
214
+ <header class="three-column-nav">
215
+ ${hamburgerBtn}
216
+ <slot name="nav"></slot>
217
+ </header>
218
+
219
+ <div class="three-column-body">
220
+ <aside
221
+ class="three-column-sidebar-left ${this._mobileMenuOpen ? 'open' : ''}"
222
+ @click=${this._handleNavClick}
223
+ @touchstart=${this._handleTouchStart}
224
+ @touchmove=${this._handleTouchMove}
225
+ @touchend=${this._handleTouchEnd}
226
+ >
227
+ ${drawerHeader}
228
+ <div class="three-column-sidebar-left-inner">
229
+ <slot name="sidebar-left"></slot>
230
+ </div>
231
+ </aside>
232
+
233
+ <main class="three-column-main">
234
+ <slot></slot>
235
+ </main>
236
+
237
+ <aside class="three-column-sidebar-right">
238
+ <div class="three-column-sidebar-right-inner">
239
+ <slot name="sidebar-right"></slot>
240
+ </div>
241
+ </aside>
242
+ </div>
243
+
244
+ <footer class="three-column-footer">
245
+ <slot name="footer"></slot>
246
+ </footer>
247
+ </div>
248
+ `;
249
+ }
250
+ return html `
251
+ <div class="layout-single-column">
252
+ <header class="single-column-nav">
253
+ <div style="display: flex; align-items: center; padding: 0 var(--st-spacing-md); height: var(--layout-nav-height);">
254
+ <slot name="nav"></slot>
255
+ </div>
256
+ </header>
257
+
258
+ <main class="single-column-main">
259
+ <slot></slot>
260
+ </main>
261
+
262
+ <footer class="single-column-footer">
263
+ <slot name="footer"></slot>
264
+ </footer>
265
+ </div>
266
+ `;
267
+ }
268
+ };
269
+ StPageLayout.styles = [
270
+ resetStyles,
271
+ css `
272
+ :host {
273
+ display: block;
274
+ box-sizing: border-box;
275
+ --layout-bg-color: var(--st-color-bg, #ffffff);
276
+ --layout-surface-color: var(--st-color-surface, #f8fafc);
277
+ --layout-border-color: var(--st-color-border, #e2e8f0);
278
+ --layout-sidebar-width: 16rem;
279
+ --layout-right-sidebar-width: 14rem;
280
+ --layout-main-max-width: none;
281
+ --layout-nav-height: 4rem;
282
+ }
283
+
284
+ *, *::before, *::after {
285
+ box-sizing: inherit;
286
+ }
287
+
288
+ /* ==========================================================
289
+ Mobile Hamburger Toggle Button Styles
290
+ ========================================================== */
291
+ .mobile-menu-btn {
292
+ display: flex;
293
+ align-items: center;
294
+ justify-content: center;
295
+ background: transparent;
296
+ border: 1px solid var(--layout-border-color);
297
+ border-radius: var(--st-radius-sm, 0.375rem);
298
+ width: 2.25rem;
299
+ height: 2.25rem;
300
+ cursor: pointer;
301
+ color: var(--st-color-text);
302
+ margin-right: var(--st-spacing-sm);
303
+ flex-shrink: 0;
304
+ }
305
+
306
+ .mobile-menu-btn svg {
307
+ width: 1.25rem;
308
+ height: 1.25rem;
309
+ stroke: currentColor;
310
+ stroke-width: 2;
311
+ stroke-linecap: round;
312
+ stroke-linejoin: round;
313
+ fill: none;
314
+ }
315
+
316
+ @media (min-width: 768px) {
317
+ .mobile-menu-btn {
318
+ display: none;
319
+ }
320
+ }
321
+
322
+ /* ==========================================================
323
+ Mobile Backdrop Overlay
324
+ ========================================================== */
325
+ .mobile-backdrop {
326
+ position: fixed;
327
+ top: 0;
328
+ left: 0;
329
+ width: 100vw;
330
+ height: 100vh;
331
+ background-color: rgba(0, 0, 0, 0.5);
332
+ backdrop-filter: blur(2px);
333
+ z-index: 1000;
334
+ display: none;
335
+ }
336
+
337
+ .mobile-backdrop.open {
338
+ display: block;
339
+ }
340
+
341
+ @media (min-width: 768px) {
342
+ .mobile-backdrop {
343
+ display: none !important;
344
+ }
345
+ }
346
+
347
+ /* ==========================================================
348
+ Mobile Drawer Header (Only visible < 768px)
349
+ ========================================================== */
350
+ .mobile-drawer-header {
351
+ display: flex;
352
+ align-items: center;
353
+ justify-content: space-between;
354
+ padding: var(--st-spacing-md) var(--st-spacing-lg);
355
+ border-bottom: 1px solid var(--layout-border-color);
356
+ flex-shrink: 0;
357
+ }
358
+
359
+ .mobile-drawer-title {
360
+ font-weight: var(--st-font-weight-bold);
361
+ font-size: var(--st-font-size-sm);
362
+ color: var(--st-color-text);
363
+ text-transform: uppercase;
364
+ letter-spacing: 0.05em;
365
+ }
366
+
367
+ .mobile-close-btn {
368
+ background: transparent;
369
+ border: none;
370
+ cursor: pointer;
371
+ color: var(--st-color-text-muted);
372
+ padding: 0.25rem;
373
+ display: flex;
374
+ align-items: center;
375
+ justify-content: center;
376
+ border-radius: var(--st-radius-sm, 0.375rem);
377
+ }
378
+
379
+ .mobile-close-btn:hover {
380
+ color: var(--st-color-text);
381
+ background-color: var(--st-color-surface-muted, #f1f5f9);
382
+ }
383
+
384
+ .mobile-close-btn svg {
385
+ width: 1.25rem;
386
+ height: 1.25rem;
387
+ stroke: currentColor;
388
+ stroke-width: 2;
389
+ stroke-linecap: round;
390
+ stroke-linejoin: round;
391
+ fill: none;
392
+ }
393
+
394
+ @media (min-width: 768px) {
395
+ .mobile-drawer-header {
396
+ display: none !important;
397
+ }
398
+ }
399
+
400
+ /* ==========================================================
401
+ 1. App Shell Layout
402
+ ========================================================== */
403
+ .layout-app-shell {
404
+ display: flex;
405
+ height: 100vh;
406
+ overflow: hidden;
407
+ background-color: var(--layout-surface-color);
408
+ }
409
+
410
+ .app-shell-sidebar {
411
+ display: none;
412
+ border-right: 1px solid var(--layout-border-color);
413
+ background: var(--layout-bg-color);
414
+ }
415
+
416
+ .app-shell-sidebar-inner {
417
+ flex: 1;
418
+ overflow-y: auto;
419
+ }
420
+
421
+ .app-shell-content {
422
+ display: flex;
423
+ flex-direction: column;
424
+ flex: 1;
425
+ width: 100%;
426
+ }
427
+
428
+ .app-shell-nav {
429
+ height: var(--layout-nav-height);
430
+ border-bottom: 1px solid var(--layout-border-color);
431
+ background: var(--layout-bg-color);
432
+ display: flex;
433
+ align-items: center;
434
+ padding: 0 var(--st-spacing-md);
435
+ }
436
+
437
+ .app-shell-main {
438
+ flex: 1;
439
+ overflow-y: auto;
440
+ padding: var(--st-spacing-lg);
441
+ }
442
+
443
+ .app-shell-footer {
444
+ background: var(--layout-bg-color);
445
+ border-top: 1px solid var(--layout-border-color);
446
+ padding: var(--st-spacing-md);
447
+ }
448
+
449
+ @media (min-width: 768px) {
450
+ .app-shell-sidebar {
451
+ display: flex;
452
+ flex-direction: column;
453
+ width: 100%;
454
+ max-width: var(--layout-sidebar-width);
455
+ flex-shrink: 0;
456
+ }
457
+ }
458
+
459
+ /* ==========================================================
460
+ 2. Content Sidebar Layout
461
+ ========================================================== */
462
+ .layout-content-sidebar {
463
+ min-height: 100vh;
464
+ display: flex;
465
+ flex-direction: column;
466
+ background: var(--layout-bg-color);
467
+ }
468
+
469
+ .content-sidebar-nav {
470
+ border-bottom: 1px solid var(--layout-border-color);
471
+ background: var(--layout-bg-color);
472
+ }
473
+
474
+ .content-sidebar-container {
475
+ flex: 1;
476
+ width: 100%;
477
+ max-width: 72rem;
478
+ margin: 0 auto;
479
+ padding: var(--st-spacing-xl) var(--st-spacing-md);
480
+ display: flex;
481
+ flex-direction: column;
482
+ gap: var(--st-spacing-xl);
483
+ }
484
+
485
+ .content-sidebar-main {
486
+ flex: 1;
487
+ max-width: 48rem;
488
+ }
489
+
490
+ .content-sidebar-aside {
491
+ width: 100%;
492
+ flex-shrink: 0;
493
+ }
494
+
495
+ .content-sidebar-footer {
496
+ margin-top: auto;
497
+ border-top: 1px solid var(--layout-border-color);
498
+ background: var(--layout-surface-color);
499
+ }
500
+
501
+ @media (min-width: 1024px) {
502
+ .content-sidebar-container {
503
+ flex-direction: row;
504
+ gap: 3rem;
505
+ }
506
+ .content-sidebar-aside {
507
+ width: 100%;
508
+ max-width: var(--layout-sidebar-width);
509
+ }
510
+ .content-sidebar-aside-inner {
511
+ position: sticky;
512
+ top: var(--st-spacing-lg);
513
+ }
514
+ }
515
+
516
+ /* ==========================================================
517
+ 3. Single Column Layout
518
+ ========================================================== */
519
+ .layout-single-column {
520
+ min-height: 100vh;
521
+ display: flex;
522
+ flex-direction: column;
523
+ background: var(--layout-bg-color);
524
+ }
525
+
526
+ .single-column-nav {
527
+ position: sticky;
528
+ top: 0;
529
+ z-index: 50;
530
+ width: 100%;
531
+ background: var(--layout-bg-color);
532
+ border-bottom: 1px solid var(--layout-border-color);
533
+ }
534
+
535
+ .single-column-main {
536
+ flex: 1;
537
+ display: flex;
538
+ flex-direction: column;
539
+ }
540
+
541
+ .single-column-footer {
542
+ margin-top: auto;
543
+ }
544
+
545
+ /* ==========================================================
546
+ 4. Three-Column Layout (Docs Shell)
547
+ ========================================================== */
548
+ .layout-three-column {
549
+ min-height: 100vh;
550
+ display: flex;
551
+ flex-direction: column;
552
+ background: var(--layout-bg-color);
553
+ }
554
+
555
+ .three-column-nav {
556
+ position: sticky;
557
+ top: 0;
558
+ z-index: 50;
559
+ height: var(--layout-nav-height);
560
+ border-bottom: 1px solid var(--layout-border-color);
561
+ background: var(--layout-bg-color);
562
+ display: flex;
563
+ align-items: center;
564
+ padding: 0 var(--st-spacing-md);
565
+ }
566
+
567
+ .three-column-body {
568
+ flex: 1;
569
+ width: 100%;
570
+ max-width: 96rem;
571
+ margin: 0 auto;
572
+ display: flex;
573
+ }
574
+
575
+ :host([fill-main]) .three-column-body {
576
+ max-width: 100%;
577
+ }
578
+
579
+ .three-column-sidebar-left {
580
+ display: none;
581
+ width: 100%;
582
+ max-width: var(--layout-sidebar-width);
583
+ flex-shrink: 0;
584
+ border-right: 1px solid var(--layout-border-color);
585
+ background: var(--layout-bg-color);
586
+ }
587
+
588
+ .three-column-sidebar-left-inner {
589
+ position: sticky;
590
+ top: calc(var(--layout-nav-height) + 1rem);
591
+ height: calc(100vh - var(--layout-nav-height) - 2rem);
592
+ overflow-y: auto;
593
+ padding: var(--st-spacing-md) 0;
594
+ }
595
+
596
+ .three-column-main {
597
+ flex: 1;
598
+ min-width: 0;
599
+ padding: var(--st-spacing-xl) var(--st-spacing-lg);
600
+ max-width: var(--layout-main-max-width);
601
+ margin-left: auto;
602
+ margin-right: auto;
603
+ }
604
+
605
+ .three-column-sidebar-right {
606
+ display: none;
607
+ width: 100%;
608
+ max-width: var(--layout-right-sidebar-width);
609
+ flex-shrink: 0;
610
+ border-left: 1px solid var(--layout-border-color);
611
+ background: var(--layout-bg-color);
612
+ }
613
+
614
+ .three-column-sidebar-right-inner {
615
+ position: sticky;
616
+ top: calc(var(--layout-nav-height) + 1rem);
617
+ height: calc(100vh - var(--layout-nav-height) - 2rem);
618
+ overflow-y: auto;
619
+ padding: var(--st-spacing-md) var(--st-spacing-sm);
620
+ }
621
+
622
+ .three-column-footer {
623
+ border-top: 1px solid var(--layout-border-color);
624
+ background: var(--layout-surface-color);
625
+ padding: var(--st-spacing-lg);
626
+ }
627
+
628
+ @media (min-width: 768px) {
629
+ .three-column-sidebar-left {
630
+ display: block;
631
+ }
632
+ }
633
+
634
+ @media (min-width: 1280px) {
635
+ .three-column-sidebar-right {
636
+ display: block;
637
+ }
638
+ }
639
+
640
+ /* ==========================================================
641
+ Mobile Drawer Transformation & Touch Support (< 768px)
642
+ ========================================================== */
643
+ @media (max-width: 767px) {
644
+ .three-column-sidebar-left,
645
+ .app-shell-sidebar {
646
+ position: fixed;
647
+ top: 0;
648
+ left: 0;
649
+ width: 100%;
650
+ max-width: var(--layout-sidebar-width);
651
+ height: 100vh;
652
+ background: var(--layout-bg-color);
653
+ z-index: 1001;
654
+ box-shadow: 4px 0 24px rgba(0, 0, 0, 0.15);
655
+ transform: translateX(-100%);
656
+ transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
657
+ display: flex !important;
658
+ flex-direction: column;
659
+ touch-action: pan-y;
660
+ }
661
+
662
+ .three-column-sidebar-left.open,
663
+ .app-shell-sidebar.open {
664
+ transform: translateX(0);
665
+ }
666
+
667
+ .three-column-sidebar-left-inner {
668
+ position: static;
669
+ height: auto;
670
+ flex: 1;
671
+ overflow-y: auto;
672
+ }
673
+ }
674
+ `
675
+ ];
676
+ __decorate([
677
+ property({ type: String, reflect: true })
678
+ ], StPageLayout.prototype, "variant", void 0);
679
+ __decorate([
680
+ property({ type: String, attribute: 'sidebar-width' })
681
+ ], StPageLayout.prototype, "sidebarWidth", void 0);
682
+ __decorate([
683
+ property({ type: String, attribute: 'right-sidebar-width' })
684
+ ], StPageLayout.prototype, "rightSidebarWidth", void 0);
685
+ __decorate([
686
+ property({ type: String, attribute: 'main-max-width' })
687
+ ], StPageLayout.prototype, "mainMaxWidth", void 0);
688
+ __decorate([
689
+ property({ type: Boolean, attribute: 'fill-main', reflect: true })
690
+ ], StPageLayout.prototype, "fillMain", void 0);
691
+ __decorate([
692
+ state()
693
+ ], StPageLayout.prototype, "_mobileMenuOpen", void 0);
694
+ StPageLayout = __decorate([
695
+ customElement('st-page-layout')
696
+ ], StPageLayout);
697
+ export { StPageLayout };
@@ -0,0 +1,16 @@
1
+ import { LitElement } from "lit";
2
+ export declare class StRadio extends LitElement {
3
+ value: string;
4
+ checked: boolean;
5
+ disabled: boolean;
6
+ ariaLabel: string;
7
+ static styles: import("lit").CSSResult[];
8
+ private _handleChange;
9
+ render(): import("lit-html").TemplateResult<1>;
10
+ }
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ "st-radio": StRadio;
14
+ }
15
+ }
16
+ //# sourceMappingURL=radio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../src/components/radio/radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAY,MAAM,KAAK,CAAC;AAI1C,qBACa,OAAQ,SAAQ,UAAU;IACX,KAAK,SAAM;IACK,OAAO,UAAS;IAChB,QAAQ,UAAS;IAEtB,SAAS,SAAM;IAEpD,MAAM,CAAC,MAAM,4BAyFX;IAEF,OAAO,CAAC,aAAa;IAgBrB,MAAM,yCAeL;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}