@askrjs/themes 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. package/README.md +78 -0
  2. package/THEMING.md +50 -8
  3. package/dist/{_internal → components/_internal}/box-layout.js +4 -3
  4. package/dist/components/_internal/box-layout.js.map +1 -0
  5. package/dist/components/_internal/classes.js.map +1 -0
  6. package/dist/components/_internal/jsx.js.map +1 -0
  7. package/dist/components/_internal/layout.d.ts +6 -28
  8. package/dist/{_internal → components/_internal}/layout.js +5 -15
  9. package/dist/components/_internal/layout.js.map +1 -0
  10. package/dist/{_internal → components/_internal}/merge-props.js +5 -0
  11. package/dist/components/_internal/merge-props.js.map +1 -0
  12. package/dist/components/_internal/pathname.js +39 -0
  13. package/dist/components/_internal/pathname.js.map +1 -0
  14. package/dist/components/_internal/style.js +41 -0
  15. package/dist/components/_internal/style.js.map +1 -0
  16. package/dist/components/alert/alert.d.ts +7 -0
  17. package/dist/components/alert/alert.js +65 -0
  18. package/dist/components/alert/alert.js.map +1 -0
  19. package/dist/components/alert/alert.types.d.ts +22 -0
  20. package/dist/components/alert/index.d.ts +2 -0
  21. package/dist/components/aspect-ratio/aspect-ratio.d.ts +8 -3
  22. package/dist/components/aspect-ratio/aspect-ratio.js +33 -0
  23. package/dist/components/aspect-ratio/aspect-ratio.js.map +1 -0
  24. package/dist/components/aspect-ratio/aspect-ratio.types.d.ts +18 -12
  25. package/dist/components/aspect-ratio/index.d.ts +2 -2
  26. package/dist/components/badge/badge.a11y.d.ts +13 -9
  27. package/dist/components/badge/badge.d.ts +8 -3
  28. package/dist/{badge → components/badge}/badge.js +5 -0
  29. package/dist/components/badge/badge.js.map +1 -0
  30. package/dist/components/badge/badge.types.d.ts +18 -12
  31. package/dist/components/badge/index.d.ts +3 -3
  32. package/dist/components/block/block.a11y.d.ts +20 -0
  33. package/dist/components/block/block.d.ts +9 -0
  34. package/dist/components/block/block.js +66 -0
  35. package/dist/components/block/block.js.map +1 -0
  36. package/dist/components/block/block.types.d.ts +38 -0
  37. package/dist/components/block/index.d.ts +3 -0
  38. package/dist/components/box/box.a11y.d.ts +13 -9
  39. package/dist/components/box/box.d.ts +9 -4
  40. package/dist/{box → components/box}/box.js +3 -2
  41. package/dist/components/box/box.js.map +1 -0
  42. package/dist/components/box/box.types.d.ts +67 -61
  43. package/dist/components/box/index.d.ts +3 -3
  44. package/dist/components/breadcrumb/breadcrumb.a11y.d.ts +13 -9
  45. package/dist/components/breadcrumb/breadcrumb.a11y.js +15 -0
  46. package/dist/components/breadcrumb/breadcrumb.a11y.js.map +1 -0
  47. package/dist/components/breadcrumb/breadcrumb.d.ts +18 -13
  48. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  49. package/dist/components/breadcrumb/breadcrumb.types.d.ts +64 -58
  50. package/dist/components/breadcrumb/index.d.ts +3 -3
  51. package/dist/components/button-group/button-group.d.ts +7 -0
  52. package/dist/components/button-group/button-group.js +20 -0
  53. package/dist/components/button-group/button-group.js.map +1 -0
  54. package/dist/components/button-group/button-group.types.d.ts +14 -0
  55. package/dist/components/button-group/index.d.ts +2 -0
  56. package/dist/components/card/card.d.ts +13 -7
  57. package/dist/components/card/card.js +95 -0
  58. package/dist/components/card/card.js.map +1 -0
  59. package/dist/components/card/card.types.d.ts +32 -24
  60. package/dist/components/card/index.d.ts +2 -2
  61. package/dist/components/close/close.d.ts +7 -0
  62. package/dist/components/close/close.js +22 -0
  63. package/dist/components/close/close.js.map +1 -0
  64. package/dist/components/close/close.types.d.ts +10 -0
  65. package/dist/components/close/index.d.ts +2 -0
  66. package/dist/components/container/container.a11y.d.ts +19 -15
  67. package/dist/components/container/container.d.ts +8 -3
  68. package/dist/{container → components/container}/container.js +3 -3
  69. package/dist/components/container/container.js.map +1 -0
  70. package/dist/components/container/container.types.d.ts +26 -26
  71. package/dist/components/container/index.d.ts +3 -3
  72. package/dist/components/empty-state/empty-state.d.ts +7 -2
  73. package/dist/components/empty-state/empty-state.js.map +1 -0
  74. package/dist/components/empty-state/empty-state.types.d.ts +15 -8
  75. package/dist/components/empty-state/index.d.ts +2 -2
  76. package/dist/components/field/field.d.ts +9 -0
  77. package/dist/components/field/field.js +41 -0
  78. package/dist/components/field/field.js.map +1 -0
  79. package/dist/components/field/field.types.d.ts +20 -0
  80. package/dist/components/field/index.d.ts +2 -0
  81. package/dist/components/flex/flex.a11y.d.ts +21 -17
  82. package/dist/components/flex/flex.d.ts +9 -4
  83. package/dist/{flex → components/flex}/flex.js +3 -2
  84. package/dist/components/flex/flex.js.map +1 -0
  85. package/dist/components/flex/flex.types.d.ts +38 -37
  86. package/dist/components/flex/index.d.ts +3 -3
  87. package/dist/components/header/header.a11y.d.ts +13 -9
  88. package/dist/components/header/header.a11y.js +12 -0
  89. package/dist/components/header/header.a11y.js.map +1 -0
  90. package/dist/components/header/header.d.ts +7 -2
  91. package/dist/components/header/header.js.map +1 -0
  92. package/dist/components/header/header.types.d.ts +8 -4
  93. package/dist/components/inline/index.d.ts +8 -6
  94. package/dist/components/inline/index.js.map +1 -0
  95. package/dist/components/input-group/index.d.ts +2 -0
  96. package/dist/components/input-group/input-group.d.ts +9 -0
  97. package/dist/components/input-group/input-group.js +39 -0
  98. package/dist/components/input-group/input-group.js.map +1 -0
  99. package/dist/components/input-group/input-group.types.d.ts +26 -0
  100. package/dist/components/list-group/index.d.ts +2 -0
  101. package/dist/components/list-group/list-group.d.ts +9 -0
  102. package/dist/components/list-group/list-group.js +43 -0
  103. package/dist/components/list-group/list-group.js.map +1 -0
  104. package/dist/components/list-group/list-group.types.d.ts +32 -0
  105. package/dist/components/nav/index.d.ts +2 -0
  106. package/dist/components/nav/nav.d.ts +13 -0
  107. package/dist/components/nav/nav.js +113 -0
  108. package/dist/components/nav/nav.js.map +1 -0
  109. package/dist/components/nav/nav.types.d.ts +56 -0
  110. package/dist/components/navbar/index.d.ts +5 -2
  111. package/dist/components/navbar/navbar-panel.js +48 -0
  112. package/dist/components/navbar/navbar-panel.js.map +1 -0
  113. package/dist/components/navbar/navbar.context.js +13 -0
  114. package/dist/components/navbar/navbar.context.js.map +1 -0
  115. package/dist/components/navbar/navbar.d.ts +45 -7
  116. package/dist/components/navbar/navbar.js +221 -0
  117. package/dist/components/navbar/navbar.js.map +1 -0
  118. package/dist/components/navbar/navbar.render.js +26 -0
  119. package/dist/components/navbar/navbar.render.js.map +1 -0
  120. package/dist/components/navbar/navbar.shared.js +18 -0
  121. package/dist/components/navbar/navbar.shared.js.map +1 -0
  122. package/dist/components/navbar/navbar.types.d.ts +29 -22
  123. package/dist/components/overlays/dropdown-content.d.ts +8 -0
  124. package/dist/components/overlays/dropdown-content.js +18 -0
  125. package/dist/components/overlays/dropdown-content.js.map +1 -0
  126. package/dist/components/pagination/index.d.ts +2 -0
  127. package/dist/components/pagination/pagination.d.ts +11 -0
  128. package/dist/components/pagination/pagination.js +95 -0
  129. package/dist/components/pagination/pagination.js.map +1 -0
  130. package/dist/components/pagination/pagination.types.d.ts +40 -0
  131. package/dist/components/section/index.d.ts +3 -3
  132. package/dist/components/section/section.a11y.d.ts +14 -10
  133. package/dist/components/section/section.d.ts +8 -3
  134. package/dist/{section → components/section}/section.js +3 -2
  135. package/dist/components/section/section.js.map +1 -0
  136. package/dist/components/section/section.types.d.ts +20 -14
  137. package/dist/components/separator/index.d.ts +3 -3
  138. package/dist/components/separator/separator.a11y.d.ts +13 -9
  139. package/dist/components/separator/separator.a11y.js +15 -0
  140. package/dist/components/separator/separator.a11y.js.map +1 -0
  141. package/dist/components/separator/separator.d.ts +8 -3
  142. package/dist/components/separator/separator.js.map +1 -0
  143. package/dist/components/separator/separator.types.d.ts +19 -13
  144. package/dist/components/shell/index.d.ts +3 -0
  145. package/dist/components/shell/shell-nav.types.d.ts +7 -0
  146. package/dist/components/shell/shell-panel.js +54 -0
  147. package/dist/components/shell/shell-panel.js.map +1 -0
  148. package/dist/components/shell/shell-responsive.js +110 -0
  149. package/dist/components/shell/shell-responsive.js.map +1 -0
  150. package/dist/components/shell/shell.a11y.d.ts +23 -0
  151. package/dist/components/shell/shell.a11y.js +23 -0
  152. package/dist/components/shell/shell.a11y.js.map +1 -0
  153. package/dist/components/shell/shell.d.ts +13 -0
  154. package/dist/components/shell/shell.js +69 -0
  155. package/dist/components/shell/shell.js.map +1 -0
  156. package/dist/components/shell/shell.types.d.ts +58 -0
  157. package/dist/components/sidebar/sidebar-panel.d.ts +7 -0
  158. package/dist/components/sidebar/sidebar-panel.js +59 -0
  159. package/dist/components/sidebar/sidebar-panel.js.map +1 -0
  160. package/dist/components/sidebar/sidebar-toggle.d.ts +7 -0
  161. package/dist/components/sidebar/sidebar-toggle.js +8 -0
  162. package/dist/components/sidebar/sidebar-toggle.js.map +1 -0
  163. package/dist/components/sidebar/sidebar.context.js +21 -0
  164. package/dist/components/sidebar/sidebar.context.js.map +1 -0
  165. package/dist/components/sidebar/sidebar.d.ts +7 -0
  166. package/dist/components/sidebar/sidebar.js +228 -0
  167. package/dist/components/sidebar/sidebar.js.map +1 -0
  168. package/dist/components/sidebar/sidebar.shared.js +12 -0
  169. package/dist/components/sidebar/sidebar.shared.js.map +1 -0
  170. package/dist/components/sidebar/sidebar.types.d.ts +30 -0
  171. package/dist/components/skeleton/index.d.ts +3 -3
  172. package/dist/components/skeleton/skeleton.a11y.d.ts +12 -8
  173. package/dist/components/skeleton/skeleton.d.ts +8 -3
  174. package/dist/components/skeleton/skeleton.js.map +1 -0
  175. package/dist/components/skeleton/skeleton.types.d.ts +16 -10
  176. package/dist/components/spacer/index.d.ts +3 -3
  177. package/dist/components/spacer/spacer.a11y.d.ts +16 -12
  178. package/dist/components/spacer/spacer.d.ts +8 -3
  179. package/dist/{spacer → components/spacer}/spacer.js +3 -1
  180. package/dist/components/spacer/spacer.js.map +1 -0
  181. package/dist/components/spacer/spacer.types.d.ts +23 -21
  182. package/dist/components/spinner/index.d.ts +2 -2
  183. package/dist/components/spinner/spinner.d.ts +7 -2
  184. package/dist/components/spinner/spinner.js.map +1 -0
  185. package/dist/components/spinner/spinner.types.d.ts +9 -4
  186. package/dist/components/stack/index.d.ts +3 -3
  187. package/dist/components/stack/stack.a11y.d.ts +17 -13
  188. package/dist/components/stack/stack.d.ts +8 -3
  189. package/dist/components/stack/stack.js.map +1 -0
  190. package/dist/components/stack/stack.types.d.ts +19 -13
  191. package/dist/components/theme/index.d.ts +1 -2
  192. package/dist/components/theme/theme.d.ts +41 -34
  193. package/dist/{theme → components/theme}/theme.js +33 -4
  194. package/dist/components/theme/theme.js.map +1 -0
  195. package/dist/controls.d.ts +10 -0
  196. package/dist/controls.js +7 -0
  197. package/dist/feedback.d.ts +5 -0
  198. package/dist/feedback.js +4 -0
  199. package/dist/layouts.d.ts +25 -0
  200. package/dist/layouts.js +11 -0
  201. package/dist/navs.d.ts +15 -0
  202. package/dist/navs.js +9 -0
  203. package/dist/overlays.d.ts +3 -0
  204. package/dist/overlays.js +4 -0
  205. package/dist/shells.d.ts +16 -0
  206. package/dist/shells.js +11 -0
  207. package/dist/surfaces.d.ts +16 -0
  208. package/dist/surfaces.js +9 -0
  209. package/dist/theme.d.ts +2 -0
  210. package/dist/theme.js +3 -0
  211. package/dist/themes/default/index.css +3132 -832
  212. package/package.json +65 -25
  213. package/src/components/_internal/box-layout.ts +8 -0
  214. package/src/components/_internal/jsx.ts +91 -16
  215. package/src/components/_internal/layout.ts +4 -17
  216. package/src/components/_internal/merge-props.ts +9 -0
  217. package/src/components/_internal/pathname.ts +67 -0
  218. package/src/components/_internal/style.ts +51 -0
  219. package/src/components/alert/alert.tsx +84 -0
  220. package/src/components/alert/alert.types.ts +20 -0
  221. package/src/components/alert/index.ts +2 -0
  222. package/src/components/aspect-ratio/aspect-ratio.tsx +10 -24
  223. package/src/components/aspect-ratio/aspect-ratio.types.ts +2 -1
  224. package/src/components/badge/badge.tsx +6 -0
  225. package/src/components/badge/badge.types.ts +2 -1
  226. package/src/components/block/block.a11y.ts +17 -0
  227. package/src/components/block/block.tsx +71 -0
  228. package/src/components/block/block.types.ts +60 -0
  229. package/src/components/block/index.ts +11 -0
  230. package/src/components/box/box.tsx +3 -2
  231. package/src/components/box/box.types.ts +2 -1
  232. package/src/components/breadcrumb/breadcrumb.types.ts +2 -1
  233. package/src/components/button-group/button-group.tsx +32 -0
  234. package/src/components/button-group/button-group.types.ts +12 -0
  235. package/src/components/button-group/index.ts +2 -0
  236. package/src/components/card/card.tsx +72 -43
  237. package/src/components/card/card.types.ts +6 -1
  238. package/src/components/card/index.ts +10 -1
  239. package/src/components/close/close.tsx +19 -0
  240. package/src/components/close/close.types.ts +7 -0
  241. package/src/components/close/index.ts +2 -0
  242. package/src/components/container/container.tsx +4 -4
  243. package/src/components/container/container.types.ts +2 -1
  244. package/src/components/empty-state/empty-state.types.ts +3 -0
  245. package/src/components/field/field.tsx +36 -0
  246. package/src/components/field/field.types.ts +19 -0
  247. package/src/components/field/index.ts +2 -0
  248. package/src/components/flex/flex.tsx +4 -2
  249. package/src/components/flex/flex.types.ts +2 -1
  250. package/src/components/input-group/index.ts +7 -0
  251. package/src/components/input-group/input-group.tsx +57 -0
  252. package/src/components/input-group/input-group.types.ts +26 -0
  253. package/src/components/list-group/index.ts +7 -0
  254. package/src/components/list-group/list-group.tsx +74 -0
  255. package/src/components/list-group/list-group.types.ts +32 -0
  256. package/src/components/nav/index.ts +14 -0
  257. package/src/components/nav/nav.tsx +203 -0
  258. package/src/components/nav/nav.types.ts +68 -0
  259. package/src/components/navbar/index.ts +9 -2
  260. package/src/components/navbar/navbar-panel.tsx +67 -0
  261. package/src/components/navbar/navbar.context.ts +22 -0
  262. package/src/components/navbar/navbar.render.tsx +32 -0
  263. package/src/components/navbar/navbar.shared.ts +21 -0
  264. package/src/components/navbar/navbar.tsx +262 -53
  265. package/src/components/navbar/navbar.types.ts +36 -22
  266. package/src/components/overlays/dropdown-content.tsx +28 -0
  267. package/src/components/pagination/index.ts +8 -0
  268. package/src/components/pagination/pagination.tsx +158 -0
  269. package/src/components/pagination/pagination.types.ts +41 -0
  270. package/src/components/section/section.tsx +3 -2
  271. package/src/components/section/section.types.ts +2 -1
  272. package/src/components/separator/separator.types.ts +2 -1
  273. package/src/components/shell/index.ts +16 -0
  274. package/src/components/shell/shell-nav.types.ts +3 -0
  275. package/src/components/shell/shell-panel.tsx +85 -0
  276. package/src/components/shell/shell-responsive.tsx +212 -0
  277. package/src/components/shell/shell.a11y.ts +20 -0
  278. package/src/components/shell/shell.tsx +74 -0
  279. package/src/components/shell/shell.types.ts +71 -0
  280. package/src/components/sidebar/index.ts +5 -0
  281. package/src/components/sidebar/sidebar-panel.tsx +76 -0
  282. package/src/components/sidebar/sidebar-toggle.tsx +5 -0
  283. package/src/components/sidebar/sidebar.context.ts +40 -0
  284. package/src/components/sidebar/sidebar.shared.ts +12 -0
  285. package/src/components/sidebar/sidebar.tsx +355 -0
  286. package/src/components/sidebar/sidebar.types.ts +35 -0
  287. package/src/components/skeleton/skeleton.types.ts +2 -1
  288. package/src/components/spacer/spacer.tsx +4 -1
  289. package/src/components/spacer/spacer.types.ts +3 -2
  290. package/src/components/stack/stack.types.ts +2 -1
  291. package/src/components/theme/index.ts +10 -1
  292. package/src/components/theme/theme.tsx +15 -4
  293. package/src/controls.ts +18 -0
  294. package/src/feedback.ts +6 -0
  295. package/src/layouts.ts +19 -0
  296. package/src/navs.ts +26 -0
  297. package/src/overlays.ts +90 -0
  298. package/src/shells.ts +13 -0
  299. package/src/surfaces.ts +23 -0
  300. package/src/theme.ts +21 -0
  301. package/src/themes/default/index.css +13 -3
  302. package/src/themes/default/styles/actions/button-group.css +74 -0
  303. package/src/themes/default/styles/actions/button.css +48 -8
  304. package/src/themes/default/styles/actions/toggle-group.css +19 -12
  305. package/src/themes/default/styles/actions/toggle.css +16 -10
  306. package/src/themes/default/styles/base/icon.css +2 -0
  307. package/src/themes/default/styles/base/reset.css +28 -0
  308. package/src/themes/default/styles/base/typography.css +37 -17
  309. package/src/themes/default/styles/base/utilities.css +56 -39
  310. package/src/themes/default/styles/disclosure/accordion.css +22 -14
  311. package/src/themes/default/styles/disclosure/collapsible.css +22 -11
  312. package/src/themes/default/styles/display/alert.css +109 -0
  313. package/src/themes/default/styles/display/avatar.css +9 -4
  314. package/src/themes/default/styles/display/badge.css +12 -3
  315. package/src/themes/default/styles/display/card.css +16 -4
  316. package/src/themes/default/styles/display/coverage.css +2 -14
  317. package/src/themes/default/styles/display/list-group.css +84 -0
  318. package/src/themes/default/styles/display/progress-circle.css +3 -2
  319. package/src/themes/default/styles/display/progress.css +8 -5
  320. package/src/themes/default/styles/display/scroll-area.css +15 -0
  321. package/src/themes/default/styles/display/separator.css +4 -4
  322. package/src/themes/default/styles/display/skeleton.css +25 -2
  323. package/src/themes/default/styles/display/spinner.css +1 -1
  324. package/src/themes/default/styles/display/table.css +7 -4
  325. package/src/themes/default/styles/display/virtual-list.css +29 -0
  326. package/src/themes/default/styles/display/virtual-table.css +68 -0
  327. package/src/themes/default/styles/forms/checkbox.css +2 -1
  328. package/src/themes/default/styles/forms/field.css +22 -0
  329. package/src/themes/default/styles/forms/form.css +1 -1
  330. package/src/themes/default/styles/forms/input-group.css +202 -0
  331. package/src/themes/default/styles/forms/input.css +22 -6
  332. package/src/themes/default/styles/forms/label.css +2 -0
  333. package/src/themes/default/styles/forms/radio-group.css +22 -13
  334. package/src/themes/default/styles/forms/select.css +71 -26
  335. package/src/themes/default/styles/forms/slider.css +32 -16
  336. package/src/themes/default/styles/forms/switch.css +2 -1
  337. package/src/themes/default/styles/forms/textarea.css +35 -6
  338. package/src/themes/default/styles/layout/aspect-ratio.css +3 -1
  339. package/src/themes/default/styles/layout/block.css +23 -0
  340. package/src/themes/default/styles/layout/patterns.css +155 -3
  341. package/src/themes/default/styles/layout/responsive-layout.css +140 -121
  342. package/src/themes/default/styles/navigation/breadcrumb.css +7 -1
  343. package/src/themes/default/styles/navigation/menu.css +150 -7
  344. package/src/themes/default/styles/navigation/menubar.css +194 -28
  345. package/src/themes/default/styles/navigation/nav.css +231 -0
  346. package/src/themes/default/styles/navigation/pagination.css +91 -0
  347. package/src/themes/default/styles/overlays/alert-dialog.css +1 -1
  348. package/src/themes/default/styles/overlays/dialog.css +42 -10
  349. package/src/themes/default/styles/overlays/dropdown.css +160 -0
  350. package/src/themes/default/styles/overlays/hover-card.css +28 -3
  351. package/src/themes/default/styles/overlays/popover.css +50 -6
  352. package/src/themes/default/styles/overlays/toast.css +66 -17
  353. package/src/themes/default/styles/overlays/tooltip.css +45 -18
  354. package/src/themes/default/styles/shell/header.css +18 -3
  355. package/src/themes/default/styles/shell/navbar.css +434 -73
  356. package/src/themes/default/styles/shell/sidebar.css +809 -0
  357. package/src/themes/default/styles/shell/theme.css +7 -5
  358. package/src/themes/default/tokens.css +186 -123
  359. package/src/themes/presets/calico.css +46 -0
  360. package/src/themes/presets/ginger.css +46 -0
  361. package/src/themes/presets/index.css +5 -0
  362. package/src/themes/presets/tabby.css +46 -0
  363. package/src/themes/presets/torty.css +49 -0
  364. package/src/themes/presets/tuxedo.css +49 -0
  365. package/templates/theme/index.css +14 -4
  366. package/templates/theme/styles/actions/button-group.css +74 -0
  367. package/templates/theme/styles/actions/button.css +48 -8
  368. package/templates/theme/styles/actions/toggle-group.css +19 -12
  369. package/templates/theme/styles/actions/toggle.css +16 -10
  370. package/templates/theme/styles/base/icon.css +2 -0
  371. package/templates/theme/styles/base/reset.css +28 -0
  372. package/templates/theme/styles/base/typography.css +37 -17
  373. package/templates/theme/styles/disclosure/accordion.css +22 -14
  374. package/templates/theme/styles/disclosure/collapsible.css +22 -11
  375. package/templates/theme/styles/display/alert.css +109 -0
  376. package/templates/theme/styles/display/avatar.css +9 -4
  377. package/templates/theme/styles/display/badge.css +12 -3
  378. package/templates/theme/styles/display/card.css +16 -4
  379. package/templates/theme/styles/display/coverage.css +105 -15
  380. package/templates/theme/styles/display/list-group.css +84 -0
  381. package/templates/theme/styles/display/progress-circle.css +3 -2
  382. package/templates/theme/styles/display/progress.css +8 -5
  383. package/templates/theme/styles/display/scroll-area.css +15 -0
  384. package/templates/theme/styles/display/separator.css +4 -4
  385. package/templates/theme/styles/display/skeleton.css +25 -2
  386. package/templates/theme/styles/display/spinner.css +1 -1
  387. package/templates/theme/styles/display/table.css +7 -4
  388. package/templates/theme/styles/display/virtual-list.css +29 -0
  389. package/templates/theme/styles/display/virtual-table.css +68 -0
  390. package/templates/theme/styles/forms/checkbox.css +2 -1
  391. package/templates/theme/styles/forms/field.css +22 -0
  392. package/templates/theme/styles/forms/form.css +1 -1
  393. package/templates/theme/styles/forms/input-group.css +202 -0
  394. package/templates/theme/styles/forms/input.css +22 -6
  395. package/templates/theme/styles/forms/label.css +2 -0
  396. package/templates/theme/styles/forms/radio-group.css +22 -13
  397. package/templates/theme/styles/forms/select.css +71 -26
  398. package/templates/theme/styles/forms/slider.css +32 -16
  399. package/templates/theme/styles/forms/switch.css +2 -1
  400. package/templates/theme/styles/forms/textarea.css +35 -6
  401. package/templates/theme/styles/layout/aspect-ratio.css +3 -1
  402. package/templates/theme/styles/layout/block.css +23 -0
  403. package/templates/theme/styles/layout/patterns.css +155 -3
  404. package/templates/theme/styles/layout/responsive-layout.css +140 -121
  405. package/templates/theme/styles/navigation/breadcrumb.css +22 -8
  406. package/templates/theme/styles/navigation/menu.css +150 -7
  407. package/templates/theme/styles/navigation/menubar.css +194 -28
  408. package/templates/theme/styles/navigation/nav.css +231 -0
  409. package/templates/theme/styles/navigation/pagination.css +91 -0
  410. package/templates/theme/styles/overlays/alert-dialog.css +1 -1
  411. package/templates/theme/styles/overlays/dialog.css +42 -10
  412. package/templates/theme/styles/overlays/dropdown.css +160 -0
  413. package/templates/theme/styles/overlays/hover-card.css +28 -3
  414. package/templates/theme/styles/overlays/popover.css +50 -6
  415. package/templates/theme/styles/overlays/toast.css +66 -17
  416. package/templates/theme/styles/overlays/tooltip.css +45 -18
  417. package/templates/theme/styles/shell/header.css +18 -3
  418. package/templates/theme/styles/shell/navbar.css +434 -73
  419. package/templates/theme/styles/shell/sidebar.css +809 -0
  420. package/templates/theme/styles/shell/theme.css +7 -5
  421. package/templates/theme/tokens.css +186 -123
  422. package/dist/_internal/box-layout.js.map +0 -1
  423. package/dist/_internal/classes.js.map +0 -1
  424. package/dist/_internal/jsx.js.map +0 -1
  425. package/dist/_internal/layout.d.ts +0 -9
  426. package/dist/_internal/layout.js.map +0 -1
  427. package/dist/_internal/merge-props.js.map +0 -1
  428. package/dist/accessible-icon/accessible-icon.d.ts +0 -7
  429. package/dist/accessible-icon/accessible-icon.js +0 -20
  430. package/dist/accessible-icon/accessible-icon.js.map +0 -1
  431. package/dist/accessible-icon/accessible-icon.types.d.ts +0 -9
  432. package/dist/aspect-ratio/aspect-ratio.d.ts +0 -8
  433. package/dist/aspect-ratio/aspect-ratio.js +0 -36
  434. package/dist/aspect-ratio/aspect-ratio.js.map +0 -1
  435. package/dist/aspect-ratio/aspect-ratio.types.d.ts +0 -20
  436. package/dist/aspect-ratio/index.d.ts +0 -2
  437. package/dist/badge/badge.d.ts +0 -8
  438. package/dist/badge/badge.js.map +0 -1
  439. package/dist/badge/badge.types.d.ts +0 -20
  440. package/dist/badge/index.d.ts +0 -2
  441. package/dist/box/box.d.ts +0 -9
  442. package/dist/box/box.js.map +0 -1
  443. package/dist/box/box.types.d.ts +0 -71
  444. package/dist/box/index.d.ts +0 -2
  445. package/dist/breadcrumb/breadcrumb.d.ts +0 -18
  446. package/dist/breadcrumb/breadcrumb.js.map +0 -1
  447. package/dist/breadcrumb/breadcrumb.types.d.ts +0 -64
  448. package/dist/breadcrumb/index.d.ts +0 -2
  449. package/dist/card/card.d.ts +0 -12
  450. package/dist/card/card.js +0 -68
  451. package/dist/card/card.js.map +0 -1
  452. package/dist/card/card.types.d.ts +0 -37
  453. package/dist/card/index.d.ts +0 -2
  454. package/dist/components/_internal/box-layout.d.ts +0 -7
  455. package/dist/components/_internal/classes.d.ts +0 -1
  456. package/dist/components/_internal/jsx.d.ts +0 -8
  457. package/dist/components/_internal/merge-props.d.ts +0 -1
  458. package/dist/components/_internal/style.d.ts +0 -1
  459. package/dist/components/accessible-icon/accessible-icon.d.ts +0 -2
  460. package/dist/components/accessible-icon/accessible-icon.types.d.ts +0 -5
  461. package/dist/components/accessible-icon/index.d.ts +0 -2
  462. package/dist/components/grid/grid.a11y.d.ts +0 -21
  463. package/dist/components/grid/grid.d.ts +0 -4
  464. package/dist/components/grid/grid.types.d.ts +0 -37
  465. package/dist/components/grid/index.d.ts +0 -3
  466. package/dist/components/header/index.d.ts +0 -3
  467. package/dist/components/index.d.ts +0 -49
  468. package/dist/components/index.js +0 -28
  469. package/dist/components/logos/create-logo.d.ts +0 -5
  470. package/dist/components/logos/github-logo.d.ts +0 -4
  471. package/dist/components/logos/google-logo.d.ts +0 -4
  472. package/dist/components/logos/index.d.ts +0 -5
  473. package/dist/components/logos/microsoft-logo.d.ts +0 -4
  474. package/dist/components/logos/types.d.ts +0 -14
  475. package/dist/components/sidebar-layout/index.d.ts +0 -3
  476. package/dist/components/sidebar-layout/sidebar-layout.a11y.d.ts +0 -15
  477. package/dist/components/sidebar-layout/sidebar-layout.d.ts +0 -2
  478. package/dist/components/sidebar-layout/sidebar-layout.types.d.ts +0 -20
  479. package/dist/components/topbar-layout/index.d.ts +0 -3
  480. package/dist/components/topbar-layout/topbar-layout.a11y.d.ts +0 -13
  481. package/dist/components/topbar-layout/topbar-layout.d.ts +0 -2
  482. package/dist/components/topbar-layout/topbar-layout.types.d.ts +0 -12
  483. package/dist/container/container.d.ts +0 -8
  484. package/dist/container/container.js.map +0 -1
  485. package/dist/container/container.types.d.ts +0 -28
  486. package/dist/container/index.d.ts +0 -2
  487. package/dist/empty-state/empty-state.d.ts +0 -7
  488. package/dist/empty-state/empty-state.js.map +0 -1
  489. package/dist/empty-state/empty-state.types.d.ts +0 -13
  490. package/dist/flex/flex.d.ts +0 -9
  491. package/dist/flex/flex.js.map +0 -1
  492. package/dist/flex/flex.types.d.ts +0 -41
  493. package/dist/flex/index.d.ts +0 -2
  494. package/dist/grid/grid.d.ts +0 -9
  495. package/dist/grid/grid.js +0 -115
  496. package/dist/grid/grid.js.map +0 -1
  497. package/dist/grid/grid.types.d.ts +0 -40
  498. package/dist/grid/index.d.ts +0 -2
  499. package/dist/header/header.d.ts +0 -7
  500. package/dist/header/header.js.map +0 -1
  501. package/dist/header/header.types.d.ts +0 -9
  502. package/dist/inline/index.d.ts +0 -7
  503. package/dist/inline/index.js.map +0 -1
  504. package/dist/logos/create-logo.d.ts +0 -1
  505. package/dist/logos/create-logo.js +0 -75
  506. package/dist/logos/create-logo.js.map +0 -1
  507. package/dist/logos/github-logo.d.ts +0 -18
  508. package/dist/logos/github-logo.js +0 -9
  509. package/dist/logos/github-logo.js.map +0 -1
  510. package/dist/logos/google-logo.d.ts +0 -18
  511. package/dist/logos/google-logo.js +0 -23
  512. package/dist/logos/google-logo.js.map +0 -1
  513. package/dist/logos/index.d.ts +0 -4
  514. package/dist/logos/microsoft-logo.d.ts +0 -18
  515. package/dist/logos/microsoft-logo.js +0 -35
  516. package/dist/logos/microsoft-logo.js.map +0 -1
  517. package/dist/logos/types.d.ts +0 -16
  518. package/dist/navbar/index.d.ts +0 -2
  519. package/dist/navbar/navbar.d.ts +0 -12
  520. package/dist/navbar/navbar.js +0 -73
  521. package/dist/navbar/navbar.js.map +0 -1
  522. package/dist/navbar/navbar.types.d.ts +0 -31
  523. package/dist/section/index.d.ts +0 -2
  524. package/dist/section/section.d.ts +0 -8
  525. package/dist/section/section.js.map +0 -1
  526. package/dist/section/section.types.d.ts +0 -22
  527. package/dist/separator/index.d.ts +0 -2
  528. package/dist/separator/separator.d.ts +0 -8
  529. package/dist/separator/separator.js.map +0 -1
  530. package/dist/separator/separator.types.d.ts +0 -21
  531. package/dist/sidebar-layout/index.d.ts +0 -2
  532. package/dist/sidebar-layout/sidebar-layout.d.ts +0 -7
  533. package/dist/sidebar-layout/sidebar-layout.js +0 -51
  534. package/dist/sidebar-layout/sidebar-layout.js.map +0 -1
  535. package/dist/sidebar-layout/sidebar-layout.types.d.ts +0 -20
  536. package/dist/skeleton/index.d.ts +0 -2
  537. package/dist/skeleton/skeleton.d.ts +0 -8
  538. package/dist/skeleton/skeleton.js.map +0 -1
  539. package/dist/skeleton/skeleton.types.d.ts +0 -18
  540. package/dist/spacer/index.d.ts +0 -2
  541. package/dist/spacer/spacer.d.ts +0 -8
  542. package/dist/spacer/spacer.js.map +0 -1
  543. package/dist/spacer/spacer.types.d.ts +0 -25
  544. package/dist/spinner/index.d.ts +0 -2
  545. package/dist/spinner/spinner.d.ts +0 -7
  546. package/dist/spinner/spinner.js.map +0 -1
  547. package/dist/spinner/spinner.types.d.ts +0 -10
  548. package/dist/stack/index.d.ts +0 -2
  549. package/dist/stack/stack.d.ts +0 -8
  550. package/dist/stack/stack.js.map +0 -1
  551. package/dist/stack/stack.types.d.ts +0 -21
  552. package/dist/theme/index.d.ts +0 -1
  553. package/dist/theme/theme.d.ts +0 -44
  554. package/dist/theme/theme.js.map +0 -1
  555. package/dist/topbar-layout/index.d.ts +0 -2
  556. package/dist/topbar-layout/topbar-layout.d.ts +0 -7
  557. package/dist/topbar-layout/topbar-layout.js +0 -37
  558. package/dist/topbar-layout/topbar-layout.js.map +0 -1
  559. package/dist/topbar-layout/topbar-layout.types.d.ts +0 -13
  560. package/src/askr-compat.d.ts +0 -110
  561. package/src/askr-router.d.ts +0 -16
  562. package/src/components/accessible-icon/accessible-icon.tsx +0 -18
  563. package/src/components/accessible-icon/accessible-icon.types.ts +0 -5
  564. package/src/components/accessible-icon/index.ts +0 -2
  565. package/src/components/grid/grid.a11y.ts +0 -22
  566. package/src/components/grid/grid.tsx +0 -172
  567. package/src/components/grid/grid.types.ts +0 -45
  568. package/src/components/grid/index.ts +0 -10
  569. package/src/components/index.ts +0 -108
  570. package/src/components/logos/create-logo.tsx +0 -103
  571. package/src/components/logos/github-logo.tsx +0 -13
  572. package/src/components/logos/google-logo.tsx +0 -34
  573. package/src/components/logos/index.ts +0 -5
  574. package/src/components/logos/microsoft-logo.tsx +0 -10
  575. package/src/components/logos/types.ts +0 -24
  576. package/src/components/sidebar-layout/index.ts +0 -6
  577. package/src/components/sidebar-layout/sidebar-layout.a11y.ts +0 -16
  578. package/src/components/sidebar-layout/sidebar-layout.tsx +0 -59
  579. package/src/components/sidebar-layout/sidebar-layout.types.ts +0 -22
  580. package/src/components/topbar-layout/index.ts +0 -3
  581. package/src/components/topbar-layout/topbar-layout.a11y.ts +0 -14
  582. package/src/components/topbar-layout/topbar-layout.tsx +0 -39
  583. package/src/components/topbar-layout/topbar-layout.types.ts +0 -13
  584. package/src/themes/default/styles/layout/dashboard-layout.css +0 -15
  585. package/src/themes/default/styles/layout/docs-layout.css +0 -10
  586. package/src/themes/default/styles/layout/sidebar.css +0 -10
  587. package/src/themes/default/styles/navigation/navigation-menu.css +0 -90
  588. package/src/themes/default/styles/navigation/tabs.css +0 -61
  589. package/src/themes/default/styles/overlays/dropdown-menu.css +0 -109
  590. package/templates/theme/styles/layout/dashboard-layout.css +0 -16
  591. package/templates/theme/styles/layout/docs-layout.css +0 -11
  592. package/templates/theme/styles/layout/sidebar.css +0 -11
  593. package/templates/theme/styles/navigation/navigation-menu.css +0 -90
  594. package/templates/theme/styles/navigation/tabs.css +0 -61
  595. package/templates/theme/styles/overlays/dropdown-menu.css +0 -109
  596. /package/dist/{_internal → components/_internal}/classes.js +0 -0
  597. /package/dist/{_internal → components/_internal}/jsx.js +0 -0
  598. /package/dist/{breadcrumb → components/breadcrumb}/breadcrumb.js +0 -0
  599. /package/dist/{empty-state → components/empty-state}/empty-state.js +0 -0
  600. /package/dist/{header → components/header}/header.js +0 -0
  601. /package/dist/{inline → components/inline}/index.js +0 -0
  602. /package/dist/{separator → components/separator}/separator.js +0 -0
  603. /package/dist/{skeleton → components/skeleton}/skeleton.js +0 -0
  604. /package/dist/{spinner → components/spinner}/spinner.js +0 -0
  605. /package/dist/{stack → components/stack}/stack.js +0 -0
@@ -0,0 +1,54 @@
1
+ import { classes } from "../_internal/classes.js";
2
+ import { mergeProps } from "../_internal/merge-props.js";
3
+ import { jsx, jsxs } from "@askrjs/askr/jsx-runtime";
4
+ //#region src/components/shell/shell-panel.tsx
5
+ function renderShellPanel(props) {
6
+ const { active, brand, children, className, collapseLabel, dataOrientation, onClose, open, panelId, prefix, ref, rest } = props;
7
+ if (active && !open) return null;
8
+ const panelClass = `${prefix}-panel`;
9
+ const headerClass = `${prefix}-panel-header`;
10
+ const closeClass = `${prefix}-panel-close`;
11
+ const headerSlot = `${prefix}-panel-header`;
12
+ const closeSlot = `${prefix}-panel-close`;
13
+ const finalProps = mergeProps(rest, {
14
+ ref,
15
+ class: classes(panelClass, className),
16
+ "aria-label": active ? collapseLabel : rest["aria-label"],
17
+ "aria-modal": active ? "true" : rest["aria-modal"],
18
+ "data-slot": panelClass,
19
+ "data-state": active ? open ? "open" : "closed" : "open",
20
+ id: panelId,
21
+ role: rest.role,
22
+ tabIndex: active ? -1 : rest.tabIndex,
23
+ ...dataOrientation !== void 0 ? { "data-orientation": dataOrientation } : {}
24
+ });
25
+ if (active) {
26
+ finalProps.role = "dialog";
27
+ finalProps["aria-modal"] = "true";
28
+ finalProps["aria-label"] = collapseLabel;
29
+ finalProps.tabIndex = -1;
30
+ finalProps.id = panelId;
31
+ }
32
+ return /* @__PURE__ */ jsxs("div", {
33
+ ...finalProps,
34
+ children: [active ? /* @__PURE__ */ jsxs("div", {
35
+ class: headerClass,
36
+ "data-slot": headerSlot,
37
+ children: [brand, /* @__PURE__ */ jsx("button", {
38
+ "aria-label": `Close ${collapseLabel}`,
39
+ class: closeClass,
40
+ "data-slot": closeSlot,
41
+ type: "button",
42
+ onClick: () => onClose(),
43
+ children: /* @__PURE__ */ jsx("span", {
44
+ "aria-hidden": "true",
45
+ children: "x"
46
+ })
47
+ })]
48
+ }) : null, children]
49
+ });
50
+ }
51
+ //#endregion
52
+ export { renderShellPanel };
53
+
54
+ //# sourceMappingURL=shell-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-panel.js","names":[],"sources":["../../../src/components/shell/shell-panel.tsx"],"sourcesContent":["import { classes } from \"../_internal/classes\";\nimport { mergeProps } from \"../_internal/merge-props\";\n\nexport type ShellPanelRenderProps = {\n active: boolean;\n brand?: unknown;\n children?: unknown;\n className?: unknown;\n collapseLabel: string;\n dataOrientation?: string;\n onClose: () => void;\n open: boolean;\n panelId?: string;\n prefix: \"navbar\" | \"sidebar\";\n ref?: unknown;\n rest: Record<string, unknown>;\n};\n\nexport function renderShellPanel(props: ShellPanelRenderProps): JSX.Element | null {\n const {\n active,\n brand,\n children,\n className,\n collapseLabel,\n dataOrientation,\n onClose,\n open,\n panelId,\n prefix,\n ref,\n rest,\n } = props;\n\n if (active && !open) {\n return null;\n }\n\n const panelClass = `${prefix}-panel`;\n const headerClass = `${prefix}-panel-header`;\n const closeClass = `${prefix}-panel-close`;\n const headerSlot = `${prefix}-panel-header`;\n const closeSlot = `${prefix}-panel-close`;\n\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(panelClass, className),\n \"aria-label\": active ? collapseLabel : rest[\"aria-label\"],\n \"aria-modal\": active ? \"true\" : rest[\"aria-modal\"],\n \"data-slot\": panelClass,\n \"data-state\": active ? (open ? \"open\" : \"closed\") : \"open\",\n id: panelId,\n role: rest.role,\n tabIndex: active ? -1 : rest.tabIndex,\n ...(dataOrientation !== undefined ? { \"data-orientation\": dataOrientation } : {}),\n }) as Record<string, unknown>;\n\n if (active) {\n finalProps.role = \"dialog\";\n finalProps[\"aria-modal\"] = \"true\";\n finalProps[\"aria-label\"] = collapseLabel;\n finalProps.tabIndex = -1;\n finalProps.id = panelId;\n }\n\n return (\n <div {...finalProps}>\n {active ? (\n <div class={headerClass} data-slot={headerSlot}>\n {brand}\n <button\n aria-label={`Close ${collapseLabel}`}\n class={closeClass}\n data-slot={closeSlot}\n type=\"button\"\n onClick={() => onClose()}\n >\n <span aria-hidden=\"true\">x</span>\n </button>\n </div>\n ) : null}\n {children}\n </div>\n );\n}\n"],"mappings":";;;;AAkBA,SAAgB,iBAAiB,OAAkD;CACjF,MAAM,EACJ,QACA,OACA,UACA,WACA,eACA,iBACA,SACA,MACA,SACA,QACA,KACA,SACE;CAEJ,IAAI,UAAU,CAAC,MACb,OAAO;CAGT,MAAM,aAAa,GAAG,OAAO;CAC7B,MAAM,cAAc,GAAG,OAAO;CAC9B,MAAM,aAAa,GAAG,OAAO;CAC7B,MAAM,aAAa,GAAG,OAAO;CAC7B,MAAM,YAAY,GAAG,OAAO;CAE5B,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,YAAY,UAAU;EACrC,cAAc,SAAS,gBAAgB,KAAK;EAC5C,cAAc,SAAS,SAAS,KAAK;EACrC,aAAa;EACb,cAAc,SAAU,OAAO,SAAS,WAAY;EACpD,IAAI;EACJ,MAAM,KAAK;EACX,UAAU,SAAS,KAAK,KAAK;EAC7B,GAAI,oBAAoB,KAAA,IAAY,EAAE,oBAAoB,iBAAiB,GAAG,EAAE;EACjF,CAAC;CAEF,IAAI,QAAQ;EACV,WAAW,OAAO;EAClB,WAAW,gBAAgB;EAC3B,WAAW,gBAAgB;EAC3B,WAAW,WAAW;EACtB,WAAW,KAAK;;CAGlB,OACE,qBAAC,OAAD;EAAK,GAAI;YAAT,CACG,SACC,qBAAC,OAAD;GAAK,OAAO;GAAa,aAAW;aAApC,CACG,OACD,oBAAC,UAAD;IACE,cAAY,SAAS;IACrB,OAAO;IACP,aAAW;IACX,MAAK;IACL,eAAe,SAAS;cAExB,oBAAC,QAAD;KAAM,eAAY;eAAO;KAAQ,CAAA;IAC1B,CAAA,CACL;OACJ,MACH,SACG"}
@@ -0,0 +1,110 @@
1
+ import { isJsxElement, toChildArray } from "../_internal/jsx.js";
2
+ import { jsx } from "@askrjs/askr/jsx-runtime";
3
+ import { For } from "@askrjs/askr/control";
4
+ import { resource } from "@askrjs/askr/resources";
5
+ //#region src/components/shell/shell-responsive.tsx
6
+ let shellScrollLockCount = 0;
7
+ let shellScrollLockPreviousValue = null;
8
+ function acquireShellScrollLock() {
9
+ if (typeof document === "undefined") return;
10
+ const body = document.body;
11
+ if (shellScrollLockCount === 0) shellScrollLockPreviousValue = body.getAttribute("data-shell-scroll-lock");
12
+ shellScrollLockCount += 1;
13
+ body.setAttribute("data-shell-scroll-lock", "true");
14
+ }
15
+ function releaseShellScrollLock() {
16
+ if (typeof document === "undefined" || shellScrollLockCount === 0) return;
17
+ shellScrollLockCount -= 1;
18
+ if (shellScrollLockCount > 0) return;
19
+ const body = document.body;
20
+ if (shellScrollLockPreviousValue === null) body.removeAttribute("data-shell-scroll-lock");
21
+ else body.setAttribute("data-shell-scroll-lock", shellScrollLockPreviousValue);
22
+ shellScrollLockPreviousValue = null;
23
+ }
24
+ function isShellPanelChild(child, panelComponent) {
25
+ return isJsxElement(child) && child.type === panelComponent;
26
+ }
27
+ function renderKeyedShellChildren(children, keyPrefix) {
28
+ const keyedChildren = toChildArray(children).map((child, index) => {
29
+ if (!isJsxElement(child) || child.key != null) return child;
30
+ return {
31
+ ...child,
32
+ key: `${keyPrefix}-${index}`
33
+ };
34
+ });
35
+ return /* @__PURE__ */ jsx(For, {
36
+ each: () => keyedChildren,
37
+ by: (child, index) => isJsxElement(child) && child.key != null ? String(child.key) : `${keyPrefix}-${index}`,
38
+ children: (child) => child
39
+ });
40
+ }
41
+ function renderKeyedShellPanelChildren(children, keyPrefix, panelProps) {
42
+ const keyedChildren = toChildArray(children).map((child, index) => {
43
+ if (!isJsxElement(child)) return child;
44
+ return {
45
+ ...child,
46
+ key: child.key != null ? child.key : `${keyPrefix}-${index}`,
47
+ props: {
48
+ ...child.props,
49
+ active: panelProps.active,
50
+ collapseLabel: panelProps.collapseLabel,
51
+ onClose: panelProps.onClose,
52
+ open: panelProps.open,
53
+ panelId: panelProps.panelId
54
+ }
55
+ };
56
+ });
57
+ return /* @__PURE__ */ jsx(For, {
58
+ each: () => keyedChildren,
59
+ by: (child, index) => isJsxElement(child) && child.key != null ? String(child.key) : `${keyPrefix}-${index}`,
60
+ children: (child) => child
61
+ });
62
+ }
63
+ function ShellResponsiveWatcher(props) {
64
+ const { breakpoint, isCollapsed, onExpand, onResize } = props;
65
+ resource(({ signal }) => {
66
+ const updateCollapsedState = () => {
67
+ const nextCollapsed = isCollapsed(breakpoint);
68
+ onResize(nextCollapsed);
69
+ if (!nextCollapsed) onExpand();
70
+ };
71
+ updateCollapsedState();
72
+ if (typeof window === "undefined") return null;
73
+ window.addEventListener("resize", updateCollapsedState);
74
+ signal.addEventListener("abort", () => {
75
+ window.removeEventListener("resize", updateCollapsedState);
76
+ }, { once: true });
77
+ return null;
78
+ }, [breakpoint]);
79
+ return null;
80
+ }
81
+ function ShellPanelWatcher(props) {
82
+ const { contentId, onClose, open, panelSlot } = props;
83
+ resource(({ signal }) => {
84
+ if (!open || typeof window === "undefined") {
85
+ releaseShellScrollLock();
86
+ return null;
87
+ }
88
+ const onKeyDown = (event) => {
89
+ if (event.key !== "Escape") return;
90
+ event.preventDefault();
91
+ onClose();
92
+ };
93
+ window.addEventListener("keydown", onKeyDown);
94
+ const focusFrame = typeof window.requestAnimationFrame === "function" ? window.requestAnimationFrame(() => {
95
+ ((typeof contentId === "string" ? document.getElementById(contentId) : null) ?? document.querySelector(`[data-slot="${panelSlot}"][data-state="open"]`))?.focus({ preventScroll: true });
96
+ }) : void 0;
97
+ acquireShellScrollLock();
98
+ signal.addEventListener("abort", () => {
99
+ window.removeEventListener("keydown", onKeyDown);
100
+ if (focusFrame !== void 0 && typeof window.cancelAnimationFrame === "function") window.cancelAnimationFrame(focusFrame);
101
+ releaseShellScrollLock();
102
+ }, { once: true });
103
+ return null;
104
+ }, [open]);
105
+ return null;
106
+ }
107
+ //#endregion
108
+ export { ShellPanelWatcher, ShellResponsiveWatcher, isShellPanelChild, renderKeyedShellChildren, renderKeyedShellPanelChildren };
109
+
110
+ //# sourceMappingURL=shell-responsive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-responsive.js","names":[],"sources":["../../../src/components/shell/shell-responsive.tsx"],"sourcesContent":["import { For } from \"@askrjs/askr/control\";\nimport { resource } from \"@askrjs/askr/resources\";\nimport type { JSXElement } from \"@askrjs/askr/foundations\";\nimport { isJsxElement, toChildArray } from \"../_internal/jsx\";\n\nexport type ShellResponsivePanelProps = {\n active: boolean;\n collapseLabel: string;\n onClose: () => void;\n open: boolean;\n panelId?: string;\n};\n\nlet shellScrollLockCount = 0;\nlet shellScrollLockPreviousValue: string | null = null;\n\nfunction acquireShellScrollLock(): void {\n if (typeof document === \"undefined\") return;\n\n const body = document.body;\n if (shellScrollLockCount === 0) {\n shellScrollLockPreviousValue = body.getAttribute(\"data-shell-scroll-lock\");\n }\n\n shellScrollLockCount += 1;\n body.setAttribute(\"data-shell-scroll-lock\", \"true\");\n}\n\nfunction releaseShellScrollLock(): void {\n if (typeof document === \"undefined\" || shellScrollLockCount === 0) return;\n\n shellScrollLockCount -= 1;\n if (shellScrollLockCount > 0) return;\n\n const body = document.body;\n if (shellScrollLockPreviousValue === null) {\n body.removeAttribute(\"data-shell-scroll-lock\");\n } else {\n body.setAttribute(\"data-shell-scroll-lock\", shellScrollLockPreviousValue);\n }\n\n shellScrollLockPreviousValue = null;\n}\n\nexport function isShellPanelChild(child: unknown, panelComponent: unknown): child is JSXElement {\n return isJsxElement(child) && child.type === panelComponent;\n}\n\nexport function renderKeyedShellChildren(children: unknown, keyPrefix: string): JSX.Element {\n const keyedChildren = toChildArray(children).map((child, index) => {\n if (!isJsxElement(child) || child.key != null) {\n return child;\n }\n\n return {\n ...child,\n key: `${keyPrefix}-${index}`,\n };\n });\n\n return (\n <For\n each={() => keyedChildren}\n by={(child, index) =>\n isJsxElement(child) && child.key != null ? String(child.key) : `${keyPrefix}-${index}`\n }\n >\n {(child) => child as never}\n </For>\n );\n}\n\nexport function renderKeyedShellPanelChildren(\n children: unknown,\n keyPrefix: string,\n panelProps: ShellResponsivePanelProps,\n): JSX.Element {\n const keyedChildren = toChildArray(children).map((child, index) => {\n if (!isJsxElement(child)) {\n return child;\n }\n\n return {\n ...child,\n key: child.key != null ? child.key : `${keyPrefix}-${index}`,\n props: {\n ...child.props,\n active: panelProps.active,\n collapseLabel: panelProps.collapseLabel,\n onClose: panelProps.onClose,\n open: panelProps.open,\n panelId: panelProps.panelId,\n },\n };\n });\n\n return (\n <For\n each={() => keyedChildren}\n by={(child, index) =>\n isJsxElement(child) && child.key != null ? String(child.key) : `${keyPrefix}-${index}`\n }\n >\n {(child) => child as never}\n </For>\n );\n}\n\nexport function ShellResponsiveWatcher<TBreakpoint extends string>(props: {\n breakpoint: TBreakpoint;\n isCollapsed: (breakpoint: TBreakpoint) => boolean;\n onExpand: () => void;\n onResize: (nextCollapsed: boolean) => void;\n}): JSX.Element | null {\n const { breakpoint, isCollapsed, onExpand, onResize } = props;\n\n resource(\n ({ signal }: { signal: AbortSignal }) => {\n const updateCollapsedState = () => {\n const nextCollapsed = isCollapsed(breakpoint);\n onResize(nextCollapsed);\n\n if (!nextCollapsed) {\n onExpand();\n }\n };\n\n updateCollapsedState();\n\n if (typeof window === \"undefined\") {\n return null;\n }\n\n window.addEventListener(\"resize\", updateCollapsedState);\n signal.addEventListener(\n \"abort\",\n () => {\n window.removeEventListener(\"resize\", updateCollapsedState);\n },\n { once: true },\n );\n\n return null;\n },\n [breakpoint],\n );\n\n return null;\n}\n\nexport function ShellPanelWatcher(props: {\n contentId?: string;\n onClose: () => void;\n open: boolean;\n panelSlot: string;\n}): JSX.Element | null {\n const { contentId, onClose, open, panelSlot } = props;\n\n resource(\n ({ signal }: { signal: AbortSignal }) => {\n if (!open || typeof window === \"undefined\") {\n releaseShellScrollLock();\n return null;\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") {\n return;\n }\n\n event.preventDefault();\n onClose();\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n\n const focusFrame =\n typeof window.requestAnimationFrame === \"function\"\n ? window.requestAnimationFrame(() => {\n const content =\n (typeof contentId === \"string\" ? document.getElementById(contentId) : null) ??\n document.querySelector<HTMLElement>(\n `[data-slot=\"${panelSlot}\"][data-state=\"open\"]`,\n );\n\n content?.focus({ preventScroll: true });\n })\n : undefined;\n\n acquireShellScrollLock();\n\n signal.addEventListener(\n \"abort\",\n () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n\n if (focusFrame !== undefined && typeof window.cancelAnimationFrame === \"function\") {\n window.cancelAnimationFrame(focusFrame);\n }\n\n releaseShellScrollLock();\n },\n { once: true },\n );\n\n return null;\n },\n [open],\n );\n\n return null;\n}\n"],"mappings":";;;;;AAaA,IAAI,uBAAuB;AAC3B,IAAI,+BAA8C;AAElD,SAAS,yBAA+B;CACtC,IAAI,OAAO,aAAa,aAAa;CAErC,MAAM,OAAO,SAAS;CACtB,IAAI,yBAAyB,GAC3B,+BAA+B,KAAK,aAAa,yBAAyB;CAG5E,wBAAwB;CACxB,KAAK,aAAa,0BAA0B,OAAO;;AAGrD,SAAS,yBAA+B;CACtC,IAAI,OAAO,aAAa,eAAe,yBAAyB,GAAG;CAEnE,wBAAwB;CACxB,IAAI,uBAAuB,GAAG;CAE9B,MAAM,OAAO,SAAS;CACtB,IAAI,iCAAiC,MACnC,KAAK,gBAAgB,yBAAyB;MAE9C,KAAK,aAAa,0BAA0B,6BAA6B;CAG3E,+BAA+B;;AAGjC,SAAgB,kBAAkB,OAAgB,gBAA8C;CAC9F,OAAO,aAAa,MAAM,IAAI,MAAM,SAAS;;AAG/C,SAAgB,yBAAyB,UAAmB,WAAgC;CAC1F,MAAM,gBAAgB,aAAa,SAAS,CAAC,KAAK,OAAO,UAAU;EACjE,IAAI,CAAC,aAAa,MAAM,IAAI,MAAM,OAAO,MACvC,OAAO;EAGT,OAAO;GACL,GAAG;GACH,KAAK,GAAG,UAAU,GAAG;GACtB;GACD;CAEF,OACE,oBAAC,KAAD;EACE,YAAY;EACZ,KAAK,OAAO,UACV,aAAa,MAAM,IAAI,MAAM,OAAO,OAAO,OAAO,MAAM,IAAI,GAAG,GAAG,UAAU,GAAG;aAG/E,UAAU;EACR,CAAA;;AAIV,SAAgB,8BACd,UACA,WACA,YACa;CACb,MAAM,gBAAgB,aAAa,SAAS,CAAC,KAAK,OAAO,UAAU;EACjE,IAAI,CAAC,aAAa,MAAM,EACtB,OAAO;EAGT,OAAO;GACL,GAAG;GACH,KAAK,MAAM,OAAO,OAAO,MAAM,MAAM,GAAG,UAAU,GAAG;GACrD,OAAO;IACL,GAAG,MAAM;IACT,QAAQ,WAAW;IACnB,eAAe,WAAW;IAC1B,SAAS,WAAW;IACpB,MAAM,WAAW;IACjB,SAAS,WAAW;IACrB;GACF;GACD;CAEF,OACE,oBAAC,KAAD;EACE,YAAY;EACZ,KAAK,OAAO,UACV,aAAa,MAAM,IAAI,MAAM,OAAO,OAAO,OAAO,MAAM,IAAI,GAAG,GAAG,UAAU,GAAG;aAG/E,UAAU;EACR,CAAA;;AAIV,SAAgB,uBAAmD,OAK5C;CACrB,MAAM,EAAE,YAAY,aAAa,UAAU,aAAa;CAExD,UACG,EAAE,aAAsC;EACvC,MAAM,6BAA6B;GACjC,MAAM,gBAAgB,YAAY,WAAW;GAC7C,SAAS,cAAc;GAEvB,IAAI,CAAC,eACH,UAAU;;EAId,sBAAsB;EAEtB,IAAI,OAAO,WAAW,aACpB,OAAO;EAGT,OAAO,iBAAiB,UAAU,qBAAqB;EACvD,OAAO,iBACL,eACM;GACJ,OAAO,oBAAoB,UAAU,qBAAqB;KAE5D,EAAE,MAAM,MAAM,CACf;EAED,OAAO;IAET,CAAC,WAAW,CACb;CAED,OAAO;;AAGT,SAAgB,kBAAkB,OAKX;CACrB,MAAM,EAAE,WAAW,SAAS,MAAM,cAAc;CAEhD,UACG,EAAE,aAAsC;EACvC,IAAI,CAAC,QAAQ,OAAO,WAAW,aAAa;GAC1C,wBAAwB;GACxB,OAAO;;EAGT,MAAM,aAAa,UAAyB;GAC1C,IAAI,MAAM,QAAQ,UAChB;GAGF,MAAM,gBAAgB;GACtB,SAAS;;EAGX,OAAO,iBAAiB,WAAW,UAAU;EAE7C,MAAM,aACJ,OAAO,OAAO,0BAA0B,aACpC,OAAO,4BAA4B;GAOjC,EALG,OAAO,cAAc,WAAW,SAAS,eAAe,UAAU,GAAG,SACtE,SAAS,cACP,eAAe,UAAU,uBAC1B,GAEM,MAAM,EAAE,eAAe,MAAM,CAAC;IACvC,GACF,KAAA;EAEN,wBAAwB;EAExB,OAAO,iBACL,eACM;GACJ,OAAO,oBAAoB,WAAW,UAAU;GAEhD,IAAI,eAAe,KAAA,KAAa,OAAO,OAAO,yBAAyB,YACrE,OAAO,qBAAqB,WAAW;GAGzC,wBAAwB;KAE1B,EAAE,MAAM,MAAM,CACf;EAED,OAAO;IAET,CAAC,KAAK,CACP;CAED,OAAO"}
@@ -0,0 +1,23 @@
1
+ //#region src/components/shell/shell.a11y.d.ts
2
+ declare const SHELL_A11Y_CONTRACT: {
3
+ readonly DATA_ATTRIBUTES: {
4
+ readonly slot: "data-slot";
5
+ readonly layout: "data-ak-layout";
6
+ readonly variant: "data-variant";
7
+ readonly gap: "data-gap";
8
+ };
9
+ readonly SLOT_VALUES: {
10
+ readonly root: "shell";
11
+ readonly nav: "shell-nav";
12
+ readonly main: "shell-main";
13
+ };
14
+ readonly VARIANT_VALUES: {
15
+ readonly sidebar: "sidebar";
16
+ readonly topbar: "topbar";
17
+ readonly rail: "rail";
18
+ };
19
+ };
20
+ type ShellA11yContract = typeof SHELL_A11Y_CONTRACT;
21
+ //#endregion
22
+ export { SHELL_A11Y_CONTRACT, ShellA11yContract };
23
+ //# sourceMappingURL=shell.a11y.d.ts.map
@@ -0,0 +1,23 @@
1
+ //#region src/components/shell/shell.a11y.ts
2
+ const SHELL_A11Y_CONTRACT = {
3
+ DATA_ATTRIBUTES: {
4
+ slot: "data-slot",
5
+ layout: "data-ak-layout",
6
+ variant: "data-variant",
7
+ gap: "data-gap"
8
+ },
9
+ SLOT_VALUES: {
10
+ root: "shell",
11
+ nav: "shell-nav",
12
+ main: "shell-main"
13
+ },
14
+ VARIANT_VALUES: {
15
+ sidebar: "sidebar",
16
+ topbar: "topbar",
17
+ rail: "rail"
18
+ }
19
+ };
20
+ //#endregion
21
+ export { SHELL_A11Y_CONTRACT };
22
+
23
+ //# sourceMappingURL=shell.a11y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.a11y.js","names":[],"sources":["../../../src/components/shell/shell.a11y.ts"],"sourcesContent":["export const SHELL_A11Y_CONTRACT = {\n DATA_ATTRIBUTES: {\n slot: \"data-slot\" as const,\n layout: \"data-ak-layout\" as const,\n variant: \"data-variant\" as const,\n gap: \"data-gap\" as const,\n },\n SLOT_VALUES: {\n root: \"shell\" as const,\n nav: \"shell-nav\" as const,\n main: \"shell-main\" as const,\n },\n VARIANT_VALUES: {\n sidebar: \"sidebar\" as const,\n topbar: \"topbar\" as const,\n rail: \"rail\" as const,\n },\n} as const;\n\nexport type ShellA11yContract = typeof SHELL_A11Y_CONTRACT;\n"],"mappings":";AAAA,MAAa,sBAAsB;CACjC,iBAAiB;EACf,MAAM;EACN,QAAQ;EACR,SAAS;EACT,KAAK;EACN;CACD,aAAa;EACX,MAAM;EACN,KAAK;EACL,MAAM;EACP;CACD,gBAAgB;EACd,SAAS;EACT,QAAQ;EACR,MAAM;EACP;CACF"}
@@ -0,0 +1,13 @@
1
+ import { ShellAsChildProps, ShellDivProps, ShellMainAsChildProps, ShellMainDivProps, ShellMainMainProps, ShellNavAsChildProps, ShellNavDivProps } from "./shell.types.js";
2
+
3
+ //#region src/components/shell/shell.d.ts
4
+ declare function Shell(props: ShellDivProps): JSX.Element;
5
+ declare function Shell(props: ShellAsChildProps): JSX.Element;
6
+ declare function ShellNav(props: ShellNavDivProps): JSX.Element;
7
+ declare function ShellNav(props: ShellNavAsChildProps): JSX.Element;
8
+ declare function ShellMain(props: ShellMainMainProps): JSX.Element;
9
+ declare function ShellMain(props: ShellMainDivProps): JSX.Element;
10
+ declare function ShellMain(props: ShellMainAsChildProps): JSX.Element;
11
+ //#endregion
12
+ export { Shell, ShellMain, ShellNav };
13
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1,69 @@
1
+ import { classes } from "../_internal/classes.js";
2
+ import { mergeProps } from "../_internal/merge-props.js";
3
+ import { jsx } from "@askrjs/askr/jsx-runtime";
4
+ import { Slot } from "@askrjs/askr/foundations";
5
+ //#region src/components/shell/shell.tsx
6
+ function Shell(props) {
7
+ const { asChild, children, class: className, variant = "sidebar", ref, ...rest } = props;
8
+ const finalProps = mergeProps(rest, {
9
+ ref,
10
+ class: classes("shell", className),
11
+ "data-slot": "shell",
12
+ "data-ak-layout": "true",
13
+ "data-variant": variant
14
+ });
15
+ if (asChild) return /* @__PURE__ */ jsx(Slot, {
16
+ asChild: true,
17
+ ...finalProps,
18
+ children
19
+ });
20
+ return /* @__PURE__ */ jsx("div", {
21
+ ...finalProps,
22
+ children
23
+ });
24
+ }
25
+ function ShellNav(props) {
26
+ const { asChild, children, class: className, ref, ...rest } = props;
27
+ const finalProps = mergeProps(rest, {
28
+ ref,
29
+ class: classes("shell-nav", className),
30
+ "data-slot": "shell-nav",
31
+ "data-ak-layout": "true"
32
+ });
33
+ if (asChild) return /* @__PURE__ */ jsx(Slot, {
34
+ asChild: true,
35
+ ...finalProps,
36
+ children
37
+ });
38
+ return /* @__PURE__ */ jsx("div", {
39
+ ...finalProps,
40
+ children
41
+ });
42
+ }
43
+ function ShellMain(props) {
44
+ const as = "as" in props ? props.as : "main";
45
+ const { asChild, children, class: className, ref, ...rest } = props;
46
+ const finalProps = mergeProps(rest, {
47
+ ref,
48
+ class: classes("shell-main", className),
49
+ "data-slot": "shell-main",
50
+ "data-ak-layout": "true"
51
+ });
52
+ if (asChild) return /* @__PURE__ */ jsx(Slot, {
53
+ asChild: true,
54
+ ...finalProps,
55
+ children
56
+ });
57
+ if (as === "div") return /* @__PURE__ */ jsx("div", {
58
+ ...finalProps,
59
+ children
60
+ });
61
+ return /* @__PURE__ */ jsx("main", {
62
+ ...finalProps,
63
+ children
64
+ });
65
+ }
66
+ //#endregion
67
+ export { Shell, ShellMain, ShellNav };
68
+
69
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","names":[],"sources":["../../../src/components/shell/shell.tsx"],"sourcesContent":["import { Slot } from \"@askrjs/askr/foundations\";\nimport { classes } from \"../_internal/classes\";\nimport { mergeProps } from \"../_internal/merge-props\";\nimport type {\n ShellAsChildProps,\n ShellDivProps,\n ShellMainAsChildProps,\n ShellMainDivProps,\n ShellMainMainProps,\n ShellNavAsChildProps,\n ShellNavDivProps,\n} from \"./shell.types\";\n\nexport function Shell(props: ShellDivProps): JSX.Element;\nexport function Shell(props: ShellAsChildProps): JSX.Element;\nexport function Shell(props: ShellDivProps | ShellAsChildProps) {\n const { asChild, children, class: className, variant = \"sidebar\", ref, ...rest } = props;\n\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"shell\", className),\n \"data-slot\": \"shell\",\n \"data-ak-layout\": \"true\",\n \"data-variant\": variant,\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return <div {...finalProps}>{children}</div>;\n}\n\nexport function ShellNav(props: ShellNavDivProps): JSX.Element;\nexport function ShellNav(props: ShellNavAsChildProps): JSX.Element;\nexport function ShellNav(props: ShellNavDivProps | ShellNavAsChildProps) {\n const { asChild, children, class: className, ref, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"shell-nav\", className),\n \"data-slot\": \"shell-nav\",\n \"data-ak-layout\": \"true\",\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return <div {...finalProps}>{children}</div>;\n}\n\nexport function ShellMain(props: ShellMainMainProps): JSX.Element;\nexport function ShellMain(props: ShellMainDivProps): JSX.Element;\nexport function ShellMain(props: ShellMainAsChildProps): JSX.Element;\nexport function ShellMain(props: ShellMainMainProps | ShellMainDivProps | ShellMainAsChildProps) {\n const as = \"as\" in props ? props.as : \"main\";\n const { asChild, children, class: className, ref, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"shell-main\", className),\n \"data-slot\": \"shell-main\",\n \"data-ak-layout\": \"true\",\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n if (as === \"div\") {\n return <div {...finalProps}>{children}</div>;\n }\n\n return <main {...finalProps}>{children}</main>;\n}\n"],"mappings":";;;;;AAeA,SAAgB,MAAM,OAA0C;CAC9D,MAAM,EAAE,SAAS,UAAU,OAAO,WAAW,UAAU,WAAW,KAAK,GAAG,SAAS;CAEnF,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,SAAS,UAAU;EAClC,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EACjB,CAAC;CAEF,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;EAA2B,CAAA;CAG5E,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAa;EAAe,CAAA;;AAK9C,SAAgB,SAAS,OAAgD;CACvE,MAAM,EAAE,SAAS,UAAU,OAAO,WAAW,KAAK,GAAG,SAAS;CAC9D,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,aAAa,UAAU;EACtC,aAAa;EACb,kBAAkB;EACnB,CAAC;CAEF,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;EAA2B,CAAA;CAG5E,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAa;EAAe,CAAA;;AAM9C,SAAgB,UAAU,OAAuE;CAC/F,MAAM,KAAK,QAAQ,QAAQ,MAAM,KAAK;CACtC,MAAM,EAAE,SAAS,UAAU,OAAO,WAAW,KAAK,GAAG,SAAS;CAC9D,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,cAAc,UAAU;EACvC,aAAa;EACb,kBAAkB;EACnB,CAAC;CAEF,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;EAA2B,CAAA;CAG5E,IAAI,OAAO,OACT,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAa;EAAe,CAAA;CAG9C,OAAO,oBAAC,QAAD;EAAM,GAAI;EAAa;EAAgB,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { JSXElement } from "@askrjs/askr/foundations";
2
+ import { Ref } from "@askrjs/askr/foundations/utilities";
3
+
4
+ //#region src/components/shell/shell.types.d.ts
5
+ type ShellVariant = "sidebar" | "topbar" | "rail";
6
+ type ShellOwnProps = {
7
+ variant?: ShellVariant;
8
+ class?: string;
9
+ children?: unknown;
10
+ };
11
+ type ShellDivProps = Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & ShellOwnProps & {
12
+ asChild?: false;
13
+ ref?: Ref<HTMLDivElement>;
14
+ };
15
+ type ShellAsChildProps = Omit<ShellOwnProps, "as"> & {
16
+ asChild: true;
17
+ children: JSXElement;
18
+ ref?: Ref<unknown>;
19
+ };
20
+ type ShellProps = ShellDivProps | ShellAsChildProps;
21
+ type ShellNavOwnProps = {
22
+ class?: string;
23
+ children?: unknown;
24
+ };
25
+ type ShellNavDivProps = Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & ShellNavOwnProps & {
26
+ asChild?: false;
27
+ ref?: Ref<HTMLDivElement>;
28
+ };
29
+ type ShellNavAsChildProps = Omit<ShellNavOwnProps, "as"> & {
30
+ asChild: true;
31
+ children: JSXElement;
32
+ ref?: Ref<unknown>;
33
+ };
34
+ type ShellNavProps = ShellNavDivProps | ShellNavAsChildProps;
35
+ type ShellMainOwnProps = {
36
+ as?: "main" | "div";
37
+ class?: string;
38
+ children?: unknown;
39
+ };
40
+ type ShellMainMainProps = Omit<JSX.IntrinsicElements["main"], "children" | "ref"> & ShellMainOwnProps & {
41
+ as?: "main";
42
+ asChild?: false;
43
+ ref?: Ref<HTMLElement>;
44
+ };
45
+ type ShellMainDivProps = Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & ShellMainOwnProps & {
46
+ as: "div";
47
+ asChild?: false;
48
+ ref?: Ref<HTMLDivElement>;
49
+ };
50
+ type ShellMainAsChildProps = Omit<ShellMainOwnProps, "as"> & {
51
+ asChild: true;
52
+ children: JSXElement;
53
+ ref?: Ref<unknown>;
54
+ };
55
+ type ShellMainProps = ShellMainMainProps | ShellMainDivProps | ShellMainAsChildProps;
56
+ //#endregion
57
+ export { ShellAsChildProps, ShellDivProps, ShellMainAsChildProps, ShellMainDivProps, ShellMainMainProps, ShellMainProps, ShellNavAsChildProps, ShellNavDivProps, ShellNavProps, ShellOwnProps, ShellProps, ShellVariant };
58
+ //# sourceMappingURL=shell.types.d.ts.map
@@ -0,0 +1,7 @@
1
+ import { SidebarPanelProps } from "./sidebar.types.js";
2
+
3
+ //#region src/components/sidebar/sidebar-panel.d.ts
4
+ declare function SidebarPanel(props: SidebarPanelProps): JSX.Element | null;
5
+ //#endregion
6
+ export { SidebarPanel };
7
+ //# sourceMappingURL=sidebar-panel.d.ts.map
@@ -0,0 +1,59 @@
1
+ import { renderShellPanel } from "../shell/shell-panel.js";
2
+ import { SidebarResponsiveContext } from "./sidebar.context.js";
3
+ import { readContext } from "@askrjs/askr";
4
+ //#region src/components/sidebar/sidebar-panel.tsx
5
+ function SidebarPanel(props) {
6
+ const { active: activeProp, brand, children, class: className, collapseLabel: collapseLabelProp, onClose, open: openProp, panelId: panelIdProp, ref, ...rest } = props;
7
+ const responsive = activeProp === void 0 || collapseLabelProp === void 0 || onClose === void 0 || openProp === void 0 || panelIdProp === void 0 ? (() => {
8
+ try {
9
+ return readContext(SidebarResponsiveContext);
10
+ } catch {
11
+ return {
12
+ active: () => false,
13
+ collapseLabel: () => "Menu",
14
+ closePanel: () => void 0,
15
+ iconCollapsed: () => false,
16
+ isRailCollapsible: () => false,
17
+ orientation: () => "vertical",
18
+ panelId: () => void 0,
19
+ panelOpen: () => false,
20
+ togglePanel: () => void 0,
21
+ toggleRail: () => void 0
22
+ };
23
+ }
24
+ })() : {
25
+ active: () => false,
26
+ collapseLabel: () => "Menu",
27
+ closePanel: () => void 0,
28
+ iconCollapsed: () => false,
29
+ isRailCollapsible: () => false,
30
+ orientation: () => "vertical",
31
+ panelId: () => void 0,
32
+ panelOpen: () => false,
33
+ togglePanel: () => void 0,
34
+ toggleRail: () => void 0
35
+ };
36
+ const active = activeProp ?? responsive.active();
37
+ const open = openProp ?? responsive.panelOpen();
38
+ const panelId = panelIdProp ?? responsive.panelId();
39
+ const collapseLabel = collapseLabelProp ?? responsive.collapseLabel();
40
+ const closePanel = onClose ?? responsive.closePanel;
41
+ return renderShellPanel({
42
+ active,
43
+ brand,
44
+ children,
45
+ className,
46
+ collapseLabel,
47
+ dataOrientation: responsive.orientation(),
48
+ onClose: closePanel,
49
+ open,
50
+ panelId,
51
+ prefix: "sidebar",
52
+ ref,
53
+ rest
54
+ });
55
+ }
56
+ //#endregion
57
+ export { SidebarPanel };
58
+
59
+ //# sourceMappingURL=sidebar-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-panel.js","names":[],"sources":["../../../src/components/sidebar/sidebar-panel.tsx"],"sourcesContent":["import { readContext } from \"@askrjs/askr\";\nimport { renderShellPanel } from \"../shell/shell-panel\";\nimport { SidebarResponsiveContext } from \"./sidebar.context\";\nimport type { SidebarPanelProps } from \"./sidebar.types\";\n\nexport function SidebarPanel(props: SidebarPanelProps): JSX.Element | null {\n const {\n active: activeProp,\n brand,\n children,\n class: className,\n collapseLabel: collapseLabelProp,\n onClose,\n open: openProp,\n panelId: panelIdProp,\n ref,\n ...rest\n } = props;\n const needsResponsiveContext =\n activeProp === undefined ||\n collapseLabelProp === undefined ||\n onClose === undefined ||\n openProp === undefined ||\n panelIdProp === undefined;\n const responsive = needsResponsiveContext\n ? (() => {\n try {\n return readContext(SidebarResponsiveContext);\n } catch {\n return {\n active: () => false,\n collapseLabel: () => \"Menu\",\n closePanel: () => undefined,\n iconCollapsed: () => false,\n isRailCollapsible: () => false,\n orientation: () => \"vertical\" as const,\n panelId: () => undefined,\n panelOpen: () => false,\n togglePanel: () => undefined,\n toggleRail: () => undefined,\n };\n }\n })()\n : {\n active: () => false,\n collapseLabel: () => \"Menu\",\n closePanel: () => undefined,\n iconCollapsed: () => false,\n isRailCollapsible: () => false,\n orientation: () => \"vertical\" as const,\n panelId: () => undefined,\n panelOpen: () => false,\n togglePanel: () => undefined,\n toggleRail: () => undefined,\n };\n const active = activeProp ?? responsive.active();\n const open = openProp ?? responsive.panelOpen();\n const panelId = panelIdProp ?? responsive.panelId();\n const collapseLabel = collapseLabelProp ?? responsive.collapseLabel();\n const closePanel = onClose ?? responsive.closePanel;\n\n return renderShellPanel({\n active,\n brand,\n children,\n className,\n collapseLabel,\n dataOrientation: responsive.orientation(),\n onClose: closePanel,\n open,\n panelId,\n prefix: \"sidebar\",\n ref,\n rest,\n });\n}\n"],"mappings":";;;;AAKA,SAAgB,aAAa,OAA8C;CACzE,MAAM,EACJ,QAAQ,YACR,OACA,UACA,OAAO,WACP,eAAe,mBACf,SACA,MAAM,UACN,SAAS,aACT,KACA,GAAG,SACD;CAOJ,MAAM,aALJ,eAAe,KAAA,KACf,sBAAsB,KAAA,KACtB,YAAY,KAAA,KACZ,aAAa,KAAA,KACb,gBAAgB,KAAA,WAEP;EACL,IAAI;GACF,OAAO,YAAY,yBAAyB;UACtC;GACN,OAAO;IACL,cAAc;IACd,qBAAqB;IACrB,kBAAkB,KAAA;IAClB,qBAAqB;IACrB,yBAAyB;IACzB,mBAAmB;IACnB,eAAe,KAAA;IACf,iBAAiB;IACjB,mBAAmB,KAAA;IACnB,kBAAkB,KAAA;IACnB;;KAED,GACJ;EACE,cAAc;EACd,qBAAqB;EACrB,kBAAkB,KAAA;EAClB,qBAAqB;EACrB,yBAAyB;EACzB,mBAAmB;EACnB,eAAe,KAAA;EACf,iBAAiB;EACjB,mBAAmB,KAAA;EACnB,kBAAkB,KAAA;EACnB;CACL,MAAM,SAAS,cAAc,WAAW,QAAQ;CAChD,MAAM,OAAO,YAAY,WAAW,WAAW;CAC/C,MAAM,UAAU,eAAe,WAAW,SAAS;CACnD,MAAM,gBAAgB,qBAAqB,WAAW,eAAe;CACrE,MAAM,aAAa,WAAW,WAAW;CAEzC,OAAO,iBAAiB;EACtB;EACA;EACA;EACA;EACA;EACA,iBAAiB,WAAW,aAAa;EACzC,SAAS;EACT;EACA;EACA,QAAQ;EACR;EACA;EACD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { SidebarToggleProps } from "./sidebar.types.js";
2
+
3
+ //#region src/components/sidebar/sidebar-toggle.d.ts
4
+ declare function SidebarToggle(_props: SidebarToggleProps): null;
5
+ //#endregion
6
+ export { SidebarToggle };
7
+ //# sourceMappingURL=sidebar-toggle.d.ts.map
@@ -0,0 +1,8 @@
1
+ //#region src/components/sidebar/sidebar-toggle.tsx
2
+ function SidebarToggle(_props) {
3
+ return null;
4
+ }
5
+ //#endregion
6
+ export { SidebarToggle };
7
+
8
+ //# sourceMappingURL=sidebar-toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-toggle.js","names":[],"sources":["../../../src/components/sidebar/sidebar-toggle.tsx"],"sourcesContent":["import type { SidebarToggleProps } from \"./sidebar.types\";\n\nexport function SidebarToggle(_props: SidebarToggleProps): null {\n return null;\n}\n"],"mappings":";AAEA,SAAgB,cAAc,QAAkC;CAC9D,OAAO"}
@@ -0,0 +1,21 @@
1
+ import { defineContext } from "@askrjs/askr";
2
+ //#region src/components/sidebar/sidebar.context.ts
3
+ const defaultOrientation = () => "vertical";
4
+ const defaultResponsiveContext = {
5
+ active: () => false,
6
+ collapseLabel: () => "Menu",
7
+ closePanel: () => void 0,
8
+ iconCollapsed: () => false,
9
+ isRailCollapsible: () => false,
10
+ orientation: defaultOrientation,
11
+ panelId: () => void 0,
12
+ panelOpen: () => false,
13
+ togglePanel: () => void 0,
14
+ toggleRail: () => void 0
15
+ };
16
+ const SidebarContext = defineContext({ orientation: defaultOrientation });
17
+ const SidebarResponsiveContext = defineContext(defaultResponsiveContext);
18
+ //#endregion
19
+ export { SidebarContext, SidebarResponsiveContext };
20
+
21
+ //# sourceMappingURL=sidebar.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.context.js","names":[],"sources":["../../../src/components/sidebar/sidebar.context.ts"],"sourcesContent":["import { defineContext } from \"@askrjs/askr\";\n\nexport type SidebarContextValue = {\n orientation: () => \"vertical\";\n};\n\nexport type SidebarResponsiveContextValue = {\n active: () => boolean;\n collapseLabel: () => string;\n closePanel: () => void;\n iconCollapsed: () => boolean;\n isRailCollapsible: () => boolean;\n orientation: () => \"vertical\";\n panelId: () => string | undefined;\n panelOpen: () => boolean;\n togglePanel: () => void;\n toggleRail: () => void;\n};\n\nconst defaultOrientation = () => \"vertical\" as const;\n\nconst defaultResponsiveContext: SidebarResponsiveContextValue = {\n active: () => false,\n collapseLabel: () => \"Menu\",\n closePanel: () => undefined,\n iconCollapsed: () => false,\n isRailCollapsible: () => false,\n orientation: defaultOrientation,\n panelId: () => undefined,\n panelOpen: () => false,\n togglePanel: () => undefined,\n toggleRail: () => undefined,\n};\n\nexport const SidebarContext = defineContext<SidebarContextValue>({\n orientation: defaultOrientation,\n});\n\nexport const SidebarResponsiveContext =\n defineContext<SidebarResponsiveContextValue>(defaultResponsiveContext);\n"],"mappings":";;AAmBA,MAAM,2BAA2B;AAEjC,MAAM,2BAA0D;CAC9D,cAAc;CACd,qBAAqB;CACrB,kBAAkB,KAAA;CAClB,qBAAqB;CACrB,yBAAyB;CACzB,aAAa;CACb,eAAe,KAAA;CACf,iBAAiB;CACjB,mBAAmB,KAAA;CACnB,kBAAkB,KAAA;CACnB;AAED,MAAa,iBAAiB,cAAmC,EAC/D,aAAa,oBACd,CAAC;AAEF,MAAa,2BACX,cAA6C,yBAAyB"}
@@ -0,0 +1,7 @@
1
+ import { SidebarProps } from "./sidebar.types.js";
2
+
3
+ //#region src/components/sidebar/sidebar.d.ts
4
+ declare function Sidebar(props: SidebarProps): JSX.Element;
5
+ //#endregion
6
+ export { Sidebar };
7
+ //# sourceMappingURL=sidebar.d.ts.map