@sky.ui/core 0.0.1

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 (320) hide show
  1. package/LICENSE.md +139 -0
  2. package/README.md +113 -0
  3. package/auto-import-loader.js +60 -0
  4. package/auto-import.js +93 -0
  5. package/dist/custom-elements.json +27051 -0
  6. package/dist/helper/controllers/animation-controller.d.ts +120 -0
  7. package/dist/helper/controllers/animation-controller.js +2 -0
  8. package/dist/helper/controllers/animation-controller.js.map +1 -0
  9. package/dist/helper/controllers/index.d.ts +2 -0
  10. package/dist/helper/controllers/popover-controller.d.ts +162 -0
  11. package/dist/helper/controllers/popover-controller.js +2 -0
  12. package/dist/helper/controllers/popover-controller.js.map +1 -0
  13. package/dist/helper/form-control-base.d.ts +1 -0
  14. package/dist/helper/iconify-offline.d.ts +73 -0
  15. package/dist/helper/iconify-offline.js +2 -0
  16. package/dist/helper/iconify-offline.js.map +1 -0
  17. package/dist/helper/index.d.ts +5 -0
  18. package/dist/helper/internals/form-control-base.d.ts +81 -0
  19. package/dist/helper/internals/form-control-base.js +2 -0
  20. package/dist/helper/internals/form-control-base.js.map +1 -0
  21. package/dist/helper/internals/index.d.ts +1 -0
  22. package/dist/helper/utils/color-resolver.d.ts +139 -0
  23. package/dist/helper/utils/color-resolver.js +2 -0
  24. package/dist/helper/utils/color-resolver.js.map +1 -0
  25. package/dist/helper/utils/index.d.ts +2 -0
  26. package/dist/helper/utils/size-resolver.d.ts +6 -0
  27. package/dist/helper/utils/size-resolver.js +2 -0
  28. package/dist/helper/utils/size-resolver.js.map +1 -0
  29. package/dist/index.d.ts +58 -0
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/sky-accordion/index.d.ts +1 -0
  33. package/dist/sky-accordion/index.js +1 -0
  34. package/dist/sky-accordion/sky-accordion.d.ts +201 -0
  35. package/dist/sky-accordion/sky-accordion.js +85 -0
  36. package/dist/sky-accordion/sky-accordion.js.map +1 -0
  37. package/dist/sky-accordion-item/index.d.ts +1 -0
  38. package/dist/sky-accordion-item/index.js +1 -0
  39. package/dist/sky-accordion-item/sky-accordion-item.d.ts +161 -0
  40. package/dist/sky-accordion-item/sky-accordion-item.js +191 -0
  41. package/dist/sky-accordion-item/sky-accordion-item.js.map +1 -0
  42. package/dist/sky-alert/index.d.ts +1 -0
  43. package/dist/sky-alert/index.js +1 -0
  44. package/dist/sky-alert/sky-alert.d.ts +136 -0
  45. package/dist/sky-alert/sky-alert.js +292 -0
  46. package/dist/sky-alert/sky-alert.js.map +1 -0
  47. package/dist/sky-appbar/index.d.ts +1 -0
  48. package/dist/sky-appbar/index.js +1 -0
  49. package/dist/sky-appbar/sky-appbar.d.ts +84 -0
  50. package/dist/sky-appbar/sky-appbar.js +173 -0
  51. package/dist/sky-appbar/sky-appbar.js.map +1 -0
  52. package/dist/sky-avatar/index.d.ts +1 -0
  53. package/dist/sky-avatar/index.js +1 -0
  54. package/dist/sky-avatar/sky-avatar.d.ts +104 -0
  55. package/dist/sky-avatar/sky-avatar.js +152 -0
  56. package/dist/sky-avatar/sky-avatar.js.map +1 -0
  57. package/dist/sky-badge/index.d.ts +1 -0
  58. package/dist/sky-badge/index.js +1 -0
  59. package/dist/sky-badge/sky-badge.d.ts +154 -0
  60. package/dist/sky-badge/sky-badge.js +148 -0
  61. package/dist/sky-badge/sky-badge.js.map +1 -0
  62. package/dist/sky-breadcrumb/index.d.ts +1 -0
  63. package/dist/sky-breadcrumb/index.js +1 -0
  64. package/dist/sky-breadcrumb/sky-breadcrumb.d.ts +111 -0
  65. package/dist/sky-breadcrumb/sky-breadcrumb.js +230 -0
  66. package/dist/sky-breadcrumb/sky-breadcrumb.js.map +1 -0
  67. package/dist/sky-button/index.d.ts +1 -0
  68. package/dist/sky-button/index.js +1 -0
  69. package/dist/sky-button/sky-button.d.ts +118 -0
  70. package/dist/sky-button/sky-button.js +172 -0
  71. package/dist/sky-button/sky-button.js.map +1 -0
  72. package/dist/sky-button-group/index.d.ts +1 -0
  73. package/dist/sky-button-group/index.js +1 -0
  74. package/dist/sky-button-group/sky-button-group.d.ts +93 -0
  75. package/dist/sky-button-group/sky-button-group.js +281 -0
  76. package/dist/sky-button-group/sky-button-group.js.map +1 -0
  77. package/dist/sky-card/index.d.ts +1 -0
  78. package/dist/sky-card/index.js +1 -0
  79. package/dist/sky-card/sky-card.d.ts +143 -0
  80. package/dist/sky-card/sky-card.js +186 -0
  81. package/dist/sky-card/sky-card.js.map +1 -0
  82. package/dist/sky-carousel/index.d.ts +1 -0
  83. package/dist/sky-carousel/index.js +1 -0
  84. package/dist/sky-carousel/sky-carousel.d.ts +265 -0
  85. package/dist/sky-carousel/sky-carousel.js +211 -0
  86. package/dist/sky-carousel/sky-carousel.js.map +1 -0
  87. package/dist/sky-checkbox/index.d.ts +1 -0
  88. package/dist/sky-checkbox/index.js +1 -0
  89. package/dist/sky-checkbox/sky-checkbox.d.ts +165 -0
  90. package/dist/sky-checkbox/sky-checkbox.js +276 -0
  91. package/dist/sky-checkbox/sky-checkbox.js.map +1 -0
  92. package/dist/sky-chip/index.d.ts +1 -0
  93. package/dist/sky-chip/index.js +1 -0
  94. package/dist/sky-chip/sky-chip.d.ts +95 -0
  95. package/dist/sky-chip/sky-chip.js +210 -0
  96. package/dist/sky-chip/sky-chip.js.map +1 -0
  97. package/dist/sky-col/index.d.ts +1 -0
  98. package/dist/sky-col/index.js +1 -0
  99. package/dist/sky-col/sky-col.d.ts +84 -0
  100. package/dist/sky-col/sky-col.js +46 -0
  101. package/dist/sky-col/sky-col.js.map +1 -0
  102. package/dist/sky-combobox/index.d.ts +1 -0
  103. package/dist/sky-combobox/index.js +1 -0
  104. package/dist/sky-combobox/sky-combobox.d.ts +313 -0
  105. package/dist/sky-combobox/sky-combobox.js +1146 -0
  106. package/dist/sky-combobox/sky-combobox.js.map +1 -0
  107. package/dist/sky-counter/index.d.ts +1 -0
  108. package/dist/sky-counter/index.js +1 -0
  109. package/dist/sky-counter/sky-counter.d.ts +130 -0
  110. package/dist/sky-counter/sky-counter.js +101 -0
  111. package/dist/sky-counter/sky-counter.js.map +1 -0
  112. package/dist/sky-dialog/index.d.ts +1 -0
  113. package/dist/sky-dialog/index.js +1 -0
  114. package/dist/sky-dialog/sky-dialog.d.ts +237 -0
  115. package/dist/sky-dialog/sky-dialog.js +265 -0
  116. package/dist/sky-dialog/sky-dialog.js.map +1 -0
  117. package/dist/sky-divider/index.d.ts +1 -0
  118. package/dist/sky-divider/index.js +1 -0
  119. package/dist/sky-divider/sky-divider.d.ts +120 -0
  120. package/dist/sky-divider/sky-divider.js +42 -0
  121. package/dist/sky-divider/sky-divider.js.map +1 -0
  122. package/dist/sky-drawer/index.d.ts +1 -0
  123. package/dist/sky-drawer/index.js +1 -0
  124. package/dist/sky-drawer/sky-drawer.d.ts +161 -0
  125. package/dist/sky-drawer/sky-drawer.js +177 -0
  126. package/dist/sky-drawer/sky-drawer.js.map +1 -0
  127. package/dist/sky-dropdown/index.d.ts +1 -0
  128. package/dist/sky-dropdown/index.js +1 -0
  129. package/dist/sky-dropdown/sky-dropdown.d.ts +252 -0
  130. package/dist/sky-dropdown/sky-dropdown.js +58 -0
  131. package/dist/sky-dropdown/sky-dropdown.js.map +1 -0
  132. package/dist/sky-dropdown-item/index.d.ts +1 -0
  133. package/dist/sky-dropdown-item/index.js +1 -0
  134. package/dist/sky-dropdown-item/sky-dropdown-item.d.ts +207 -0
  135. package/dist/sky-dropdown-item/sky-dropdown-item.js +341 -0
  136. package/dist/sky-dropdown-item/sky-dropdown-item.js.map +1 -0
  137. package/dist/sky-flexbar/index.d.ts +1 -0
  138. package/dist/sky-flexbar/index.js +1 -0
  139. package/dist/sky-flexbar/sky-flexbar.d.ts +189 -0
  140. package/dist/sky-flexbar/sky-flexbar.js +148 -0
  141. package/dist/sky-flexbar/sky-flexbar.js.map +1 -0
  142. package/dist/sky-flexbox/index.d.ts +1 -0
  143. package/dist/sky-flexbox/index.js +1 -0
  144. package/dist/sky-flexbox/sky-flexbox.d.ts +156 -0
  145. package/dist/sky-flexbox/sky-flexbox.js +40 -0
  146. package/dist/sky-flexbox/sky-flexbox.js.map +1 -0
  147. package/dist/sky-flexcol/index.d.ts +1 -0
  148. package/dist/sky-flexcol/index.js +1 -0
  149. package/dist/sky-flexcol/sky-flexcol.d.ts +154 -0
  150. package/dist/sky-flexcol/sky-flexcol.js +14 -0
  151. package/dist/sky-flexcol/sky-flexcol.js.map +1 -0
  152. package/dist/sky-flexitem/index.d.ts +1 -0
  153. package/dist/sky-flexitem/index.js +1 -0
  154. package/dist/sky-flexitem/sky-flexitem.d.ts +114 -0
  155. package/dist/sky-flexitem/sky-flexitem.js +45 -0
  156. package/dist/sky-flexitem/sky-flexitem.js.map +1 -0
  157. package/dist/sky-form/index.d.ts +1 -0
  158. package/dist/sky-form/index.js +1 -0
  159. package/dist/sky-form/sky-form.d.ts +286 -0
  160. package/dist/sky-form/sky-form.js +66 -0
  161. package/dist/sky-form/sky-form.js.map +1 -0
  162. package/dist/sky-grid/index.d.ts +1 -0
  163. package/dist/sky-grid/index.js +1 -0
  164. package/dist/sky-grid/sky-grid.d.ts +78 -0
  165. package/dist/sky-grid/sky-grid.js +40 -0
  166. package/dist/sky-grid/sky-grid.js.map +1 -0
  167. package/dist/sky-icon/index.d.ts +1 -0
  168. package/dist/sky-icon/index.js +1 -0
  169. package/dist/sky-icon/ion-local.json.js +2 -0
  170. package/dist/sky-icon/ion-local.json.js.map +1 -0
  171. package/dist/sky-icon/sky-icon.d.ts +123 -0
  172. package/dist/sky-icon/sky-icon.js +40 -0
  173. package/dist/sky-icon/sky-icon.js.map +1 -0
  174. package/dist/sky-image/index.d.ts +1 -0
  175. package/dist/sky-image/index.js +1 -0
  176. package/dist/sky-image/sky-image.d.ts +102 -0
  177. package/dist/sky-image/sky-image.js +29 -0
  178. package/dist/sky-image/sky-image.js.map +1 -0
  179. package/dist/sky-input/index.d.ts +1 -0
  180. package/dist/sky-input/index.js +1 -0
  181. package/dist/sky-input/sky-input.d.ts +345 -0
  182. package/dist/sky-input/sky-input.js +820 -0
  183. package/dist/sky-input/sky-input.js.map +1 -0
  184. package/dist/sky-list/index.d.ts +1 -0
  185. package/dist/sky-list/index.js +1 -0
  186. package/dist/sky-list/sky-list.d.ts +85 -0
  187. package/dist/sky-list/sky-list.js +41 -0
  188. package/dist/sky-list/sky-list.js.map +1 -0
  189. package/dist/sky-listitem/index.d.ts +1 -0
  190. package/dist/sky-listitem/index.js +1 -0
  191. package/dist/sky-listitem/sky-listitem.d.ts +76 -0
  192. package/dist/sky-listitem/sky-listitem.js +104 -0
  193. package/dist/sky-listitem/sky-listitem.js.map +1 -0
  194. package/dist/sky-navbar/index.d.ts +1 -0
  195. package/dist/sky-navbar/index.js +1 -0
  196. package/dist/sky-navbar/sky-navbar.d.ts +207 -0
  197. package/dist/sky-navbar/sky-navbar.js +521 -0
  198. package/dist/sky-navbar/sky-navbar.js.map +1 -0
  199. package/dist/sky-navpanel/index.d.ts +1 -0
  200. package/dist/sky-navpanel/index.js +1 -0
  201. package/dist/sky-navpanel/sky-navpanel.d.ts +186 -0
  202. package/dist/sky-navpanel/sky-navpanel.js +404 -0
  203. package/dist/sky-navpanel/sky-navpanel.js.map +1 -0
  204. package/dist/sky-notification/index.d.ts +1 -0
  205. package/dist/sky-notification/index.js +1 -0
  206. package/dist/sky-notification/sky-notification.d.ts +152 -0
  207. package/dist/sky-notification/sky-notification.js +456 -0
  208. package/dist/sky-notification/sky-notification.js.map +1 -0
  209. package/dist/sky-otp/index.d.ts +1 -0
  210. package/dist/sky-otp/index.js +1 -0
  211. package/dist/sky-otp/sky-otp.d.ts +101 -0
  212. package/dist/sky-otp/sky-otp.js +96 -0
  213. package/dist/sky-otp/sky-otp.js.map +1 -0
  214. package/dist/sky-overlay/index.d.ts +1 -0
  215. package/dist/sky-overlay/index.js +1 -0
  216. package/dist/sky-overlay/sky-overlay.d.ts +71 -0
  217. package/dist/sky-overlay/sky-overlay.js +26 -0
  218. package/dist/sky-overlay/sky-overlay.js.map +1 -0
  219. package/dist/sky-pagination/index.d.ts +1 -0
  220. package/dist/sky-pagination/index.js +1 -0
  221. package/dist/sky-pagination/sky-pagination.d.ts +167 -0
  222. package/dist/sky-pagination/sky-pagination.js +453 -0
  223. package/dist/sky-pagination/sky-pagination.js.map +1 -0
  224. package/dist/sky-progress/index.d.ts +1 -0
  225. package/dist/sky-progress/index.js +1 -0
  226. package/dist/sky-progress/sky-progress.d.ts +70 -0
  227. package/dist/sky-progress/sky-progress.js +87 -0
  228. package/dist/sky-progress/sky-progress.js.map +1 -0
  229. package/dist/sky-radio/index.d.ts +1 -0
  230. package/dist/sky-radio/index.js +1 -0
  231. package/dist/sky-radio/sky-radio.d.ts +118 -0
  232. package/dist/sky-radio/sky-radio.js +109 -0
  233. package/dist/sky-radio/sky-radio.js.map +1 -0
  234. package/dist/sky-radio-group/index.d.ts +1 -0
  235. package/dist/sky-radio-group/index.js +1 -0
  236. package/dist/sky-radio-group/sky-radio-group.d.ts +186 -0
  237. package/dist/sky-radio-group/sky-radio-group.js +239 -0
  238. package/dist/sky-radio-group/sky-radio-group.js.map +1 -0
  239. package/dist/sky-range/index.d.ts +1 -0
  240. package/dist/sky-range/index.js +1 -0
  241. package/dist/sky-range/sky-range.d.ts +110 -0
  242. package/dist/sky-range/sky-range.js +196 -0
  243. package/dist/sky-range/sky-range.js.map +1 -0
  244. package/dist/sky-row/index.d.ts +1 -0
  245. package/dist/sky-row/index.js +1 -0
  246. package/dist/sky-row/sky-row.d.ts +57 -0
  247. package/dist/sky-row/sky-row.js +6 -0
  248. package/dist/sky-row/sky-row.js.map +1 -0
  249. package/dist/sky-serial/index.d.ts +1 -0
  250. package/dist/sky-serial/index.js +1 -0
  251. package/dist/sky-serial/sky-serial.d.ts +127 -0
  252. package/dist/sky-serial/sky-serial.js +133 -0
  253. package/dist/sky-serial/sky-serial.js.map +1 -0
  254. package/dist/sky-sheet/index.d.ts +1 -0
  255. package/dist/sky-sheet/index.js +1 -0
  256. package/dist/sky-sheet/sky-sheet.d.ts +70 -0
  257. package/dist/sky-sheet/sky-sheet.js +47 -0
  258. package/dist/sky-sheet/sky-sheet.js.map +1 -0
  259. package/dist/sky-skeleton/index.d.ts +1 -0
  260. package/dist/sky-skeleton/index.js +1 -0
  261. package/dist/sky-skeleton/sky-skeleton.d.ts +80 -0
  262. package/dist/sky-skeleton/sky-skeleton.js +233 -0
  263. package/dist/sky-skeleton/sky-skeleton.js.map +1 -0
  264. package/dist/sky-slider/index.d.ts +1 -0
  265. package/dist/sky-slider/index.js +1 -0
  266. package/dist/sky-slider/sky-slider.d.ts +96 -0
  267. package/dist/sky-slider/sky-slider.js +139 -0
  268. package/dist/sky-slider/sky-slider.js.map +1 -0
  269. package/dist/sky-speeddial/index.d.ts +1 -0
  270. package/dist/sky-speeddial/index.js +1 -0
  271. package/dist/sky-speeddial/sky-speeddial.d.ts +86 -0
  272. package/dist/sky-speeddial/sky-speeddial.js +154 -0
  273. package/dist/sky-speeddial/sky-speeddial.js.map +1 -0
  274. package/dist/sky-spinner/index.d.ts +1 -0
  275. package/dist/sky-spinner/index.js +1 -0
  276. package/dist/sky-spinner/sky-spinner.d.ts +87 -0
  277. package/dist/sky-spinner/sky-spinner.js +334 -0
  278. package/dist/sky-spinner/sky-spinner.js.map +1 -0
  279. package/dist/sky-steps/index.d.ts +1 -0
  280. package/dist/sky-steps/index.js +1 -0
  281. package/dist/sky-steps/sky-steps.d.ts +170 -0
  282. package/dist/sky-steps/sky-steps.js +455 -0
  283. package/dist/sky-steps/sky-steps.js.map +1 -0
  284. package/dist/sky-switch/index.d.ts +1 -0
  285. package/dist/sky-switch/index.js +1 -0
  286. package/dist/sky-switch/sky-switch.d.ts +116 -0
  287. package/dist/sky-switch/sky-switch.js +191 -0
  288. package/dist/sky-switch/sky-switch.js.map +1 -0
  289. package/dist/sky-tab/index.d.ts +1 -0
  290. package/dist/sky-tab/index.js +1 -0
  291. package/dist/sky-tab/sky-tab.d.ts +188 -0
  292. package/dist/sky-tab/sky-tab.js +390 -0
  293. package/dist/sky-tab/sky-tab.js.map +1 -0
  294. package/dist/sky-tab-button/index.d.ts +1 -0
  295. package/dist/sky-tab-button/index.js +1 -0
  296. package/dist/sky-tab-button/sky-tab-button.d.ts +114 -0
  297. package/dist/sky-tab-button/sky-tab-button.js +167 -0
  298. package/dist/sky-tab-button/sky-tab-button.js.map +1 -0
  299. package/dist/sky-theme-provider/index.d.ts +1 -0
  300. package/dist/sky-theme-provider/index.js +1 -0
  301. package/dist/sky-theme-provider/sky-theme-provider.d.ts +169 -0
  302. package/dist/sky-theme-provider/sky-theme-provider.js +12 -0
  303. package/dist/sky-theme-provider/sky-theme-provider.js.map +1 -0
  304. package/dist/sky-theme-switcher/index.d.ts +1 -0
  305. package/dist/sky-theme-switcher/index.js +1 -0
  306. package/dist/sky-theme-switcher/sky-theme-switcher.d.ts +92 -0
  307. package/dist/sky-theme-switcher/sky-theme-switcher.js +43 -0
  308. package/dist/sky-theme-switcher/sky-theme-switcher.js.map +1 -0
  309. package/dist/sky-tooltip/index.d.ts +1 -0
  310. package/dist/sky-tooltip/index.js +1 -0
  311. package/dist/sky-tooltip/sky-tooltip.d.ts +156 -0
  312. package/dist/sky-tooltip/sky-tooltip.js +242 -0
  313. package/dist/sky-tooltip/sky-tooltip.js.map +1 -0
  314. package/package.json +475 -0
  315. package/plugins/rollup-plugin.d.ts +19 -0
  316. package/plugins/rollup-plugin.js +129 -0
  317. package/plugins/vite-plugin.d.ts +22 -0
  318. package/plugins/vite-plugin.js +116 -0
  319. package/plugins/webpack-plugin.d.ts +12 -0
  320. package/plugins/webpack-plugin.js +46 -0
@@ -0,0 +1,189 @@
1
+ import { LitElement, PropertyValues } from "lit";
2
+ export type SkyFlexbarDirection = "horizontal" | "vertical";
3
+ export type SkyFlexbarDirectionChangedDetail = {
4
+ flexDirection: SkyFlexbarDirection;
5
+ };
6
+ export type SkyFlexbarMenuToggleDetail = {
7
+ open: boolean;
8
+ };
9
+ /**
10
+ * @element sky-flexbar
11
+ *
12
+ * @summary Responsive action bar that moves overflowing items into a hamburger menu.
13
+ *
14
+ * @status stable
15
+ * @since 1.0.0
16
+ *
17
+ * @documentation https://library.sky-ui.com/components/flexbar
18
+ * @dependency sky-icon
19
+ *
20
+ * @uiVModel isHamburgerOpen menu-toggle detail=open
21
+ *
22
+ * @slot - Default slot for visible bar items. Apply `class="menu-parent"` to each.
23
+ * @slot hamburger - Receives items that overflow the main bar.
24
+ *
25
+ * @property {boolean} isHamburgerOpen - Whether the overflow menu is open.
26
+ * @property {boolean} isFullyHidden - Whether all slotted items are currently overflowed.
27
+ * @property {number} gapThreshold - Reserved space in px used during overflow measurement.
28
+ * @property {SkyFlexbarDirection} flexDirection - Current layout direction.
29
+ * @property {number} stackAt - Width threshold (px) for switching to vertical mode; `0` disables.
30
+ * @property {string} partialIcon - Icon shown when only some items overflow.
31
+ * @property {string} fullIcon - Icon shown when all items overflow.
32
+ *
33
+ * @fires {CustomEvent<SkyFlexbarDirectionChangedDetail>} flex-direction-changed - Fired when layout direction changes.
34
+ * @fires {CustomEvent<SkyFlexbarMenuToggleDetail>} menu-toggle - Fired when the hamburger menu opens or closes.
35
+ * @method openMenu Opens the hamburger menu.
36
+ * @method closeMenu Closes the hamburger menu.
37
+ * @method toggleMenu Toggles the hamburger menu state.
38
+ * @method recalculateLayout Re-runs layout and overflow measurement.
39
+ *
40
+ * @csspart container - The outer flex container.
41
+ * @csspart hamburger-button - The hamburger/ellipsis toggle button.
42
+ * @csspart menu - The dropdown menu container.
43
+ * @csspart menu-inner - Wrapper inside the dropdown menu.
44
+ *
45
+ * @Behavior
46
+ * - Automatically measures available space using ResizeObserver
47
+ * - Moves overflowing `.menu-parent` items into hamburger menu
48
+ * - Switches between horizontal and vertical layouts based on width
49
+ * - Uses PopoverController for dropdown positioning and management
50
+ * - Maintains accessibility with proper ARIA attributes
51
+ *
52
+ * - Items with `class="menu-parent"` are measured for fit
53
+ * - Overflowing items are moved to `slot="hamburger"`
54
+ * - Hamburger button shows different icons based on overflow state
55
+ * - Menu automatically closes when all items fit in main bar
56
+ *
57
+ * - `stackAt` property controls vertical stacking breakpoint
58
+ * - Dynamically switches between horizontal/vertical layouts
59
+ * - Emits `flex-direction-changed` events for child components
60
+ *
61
+ * @example
62
+ * ```html
63
+ * <sky-flexbar stack-at="640" partial-icon="ion:ellipsis-horizontal" full-icon="ion:menu">
64
+ * <sky-flexitem class="menu-parent">
65
+ * <span slot="title">Home</span>
66
+ * <span slot="content">Dashboard</span>
67
+ * </sky-flexitem>
68
+ * <sky-flexitem class="menu-parent">
69
+ * <span slot="title">Reports</span>
70
+ * <span slot="content">Monthly</span>
71
+ * </sky-flexitem>
72
+ * </sky-flexbar>
73
+ * ```
74
+ * ```vue
75
+ * <template>
76
+ * <sky-flexbar stack-at="640">
77
+ * <sky-flexitem class="menu-parent"><span slot="title">Home</span><span slot="content">Dashboard</span></sky-flexitem>
78
+ * <sky-flexitem class="menu-parent"><span slot="title">Reports</span><span slot="content">Monthly</span></sky-flexitem>
79
+ * </sky-flexbar>
80
+ * </template>
81
+ * ```
82
+ * ```jsx
83
+ * export default function Demo() {
84
+ * return (
85
+ * <sky-flexbar stack-at="640">
86
+ * <sky-flexitem class="menu-parent"><span slot="title">Home</span><span slot="content">Dashboard</span></sky-flexitem>
87
+ * <sky-flexitem class="menu-parent"><span slot="title">Reports</span><span slot="content">Monthly</span></sky-flexitem>
88
+ * </sky-flexbar>
89
+ * );
90
+ * }
91
+ * ```
92
+ */
93
+ export declare class SkyFlexbar extends LitElement {
94
+ static dependencies: Record<string, CustomElementConstructor>;
95
+ /**
96
+ * Whether the dropdown menu is open.
97
+ * @public
98
+ */
99
+ isHamburgerOpen: boolean;
100
+ /**
101
+ * True if all items overflow into the menu.
102
+ * @public
103
+ */
104
+ isFullyHidden: boolean;
105
+ /**
106
+ * Space (px) reserved for paddings/margins when measuring.
107
+ * @public
108
+ */
109
+ gapThreshold: number;
110
+ /**
111
+ * Current layout direction.
112
+ * @public
113
+ */
114
+ flexDirection: SkyFlexbarDirection;
115
+ /**
116
+ * Stack vertically when component width is below this (px). `0` disables.
117
+ * @public
118
+ */
119
+ stackAt: number;
120
+ /**
121
+ * Icon name for "some items overflow" state.
122
+ * @public
123
+ */
124
+ partialIcon: string;
125
+ /**
126
+ * Icon name for "all items overflow" state.
127
+ * @public
128
+ */
129
+ fullIcon: string;
130
+ /** @private */
131
+ private _ro?;
132
+ /** @private */
133
+ private _itemElements;
134
+ /** @private */
135
+ private _scheduled;
136
+ /** @private */
137
+ private _initialized;
138
+ /** @private */
139
+ private _mo?;
140
+ /** @private */
141
+ private hamburgerEl;
142
+ /** @private */
143
+ private dropdownPopover;
144
+ static styles: import("lit").CSSResult;
145
+ /** @protected */
146
+ protected firstUpdated(_changedProperties: PropertyValues): void;
147
+ /** @protected */
148
+ connectedCallback(): void;
149
+ /** @protected */
150
+ disconnectedCallback(): void;
151
+ /**
152
+ * Collects all .menu-parent elements for measurement.
153
+ * @private
154
+ */
155
+ private _collectItems;
156
+ /**
157
+ * Schedules a measurement for the next animation frame.
158
+ * @private
159
+ */
160
+ private _scheduleMeasure;
161
+ /**
162
+ * Measures available space and manages item overflow.
163
+ * @private
164
+ */
165
+ private _measure;
166
+ /**
167
+ * Opens the hamburger menu.
168
+ * @public
169
+ */
170
+ openMenu(): void;
171
+ /**
172
+ * Closes the hamburger menu.
173
+ * @public
174
+ */
175
+ closeMenu(): void;
176
+ /**
177
+ * Toggles the hamburger menu.
178
+ * @public
179
+ */
180
+ toggleMenu(): void;
181
+ /**
182
+ * Forces a recalculation of item layout.
183
+ * Useful when items change size dynamically.
184
+ * @public
185
+ */
186
+ recalculateLayout(): void;
187
+ /** @protected */
188
+ render(): import("lit-html").TemplateResult<1>;
189
+ }
@@ -0,0 +1,148 @@
1
+ import{__decorate as e,__metadata as t}from"tslib";import{LitElement as r,css as i,html as s}from"lit";import{property as o,state as n,query as a,customElement as d}from"lit/decorators.js";import{when as l}from"lit/directives/when.js";import{PopoverController as p}from"../helper/controllers/popover-controller.js";import{SkyIcon as h}from"../sky-icon/sky-icon.js";let c=class extends r{constructor(){super(...arguments),this.isHamburgerOpen=!1,this.isFullyHidden=!1,this.gapThreshold=100,this.flexDirection="horizontal",this.stackAt=500,this.partialIcon="ion:ellipsis-horizontal",this.fullIcon="ion:menu",this._itemElements=[],this._scheduled=!1,this._initialized=!1,this.dropdownPopover=new p(this,{getAnchor:()=>this,getPopover:()=>this.hamburgerEl,cssVarLeft:"--sky-dd-left",cssVarTop:"--sky-dd-top",cssVarWidth:"--sky-dd-width",getPlacement:()=>"bottom",getAlign:()=>"start",getGap:()=>6,getPadding:()=>8,getMatchAnchorWidth:()=>!0,getMaxWidthToViewport:()=>!0,getMaxWidthMode:()=>"cap",getFlip:()=>!0,getFlipOrder:()=>[],getAnimateReposition:()=>!0,getRepositionMs:()=>160,getCloseOnEscape:()=>!0,getCloseOnOutside:()=>!0,getRestoreFocusOnClose:()=>!0,onOpenChange:(e,t)=>{this.isHamburgerOpen=e,this.dispatchEvent(new CustomEvent("menu-toggle",{detail:{open:e},bubbles:!0,composed:!0}))}})}static{this.dependencies={"sky-icon":h}}static{this.styles=i`
2
+ :host {
3
+ display: flex;
4
+ align-items: center;
5
+ gap: 8px;
6
+ width: 100%;
7
+ position: relative;
8
+ box-sizing: border-box;
9
+ font-family: var(--sky-font);
10
+ color: var(--sky-text-primary, #000);
11
+ border: var(--sky-border-primary);
12
+ background-color: var(--sky-glass-primary);
13
+ padding: 5px;
14
+ border-radius: var(--sky-radius-secondary);
15
+ box-shadow: var(--sky-box-shadow-primary);
16
+ transition: border-radius 0.3s ease;
17
+
18
+ }
19
+
20
+ :host::before {
21
+ content: "";
22
+ position: absolute;
23
+ inset: 0;
24
+ z-index: -1;
25
+ backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
26
+ var(--sky-saturation-primary);
27
+ -webkit-backdrop-filter: var(--sky-blur-primary)
28
+ var(--sky-brightness-primary) var(--sky-saturation-primary);
29
+ border-radius: inherit;
30
+ }
31
+
32
+ .main-container {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 8px;
36
+ flex: 1;
37
+ min-width: 0;
38
+ }
39
+
40
+ .main-items {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 8px;
44
+ flex: 1;
45
+ min-width: 0;
46
+ }
47
+
48
+ .spacer {
49
+ flex: 1 1 auto;
50
+ }
51
+
52
+ .hamburger-btn {
53
+ display: none;
54
+ align-items: center;
55
+ justify-content: center;
56
+ cursor: pointer;
57
+ padding: 6px;
58
+ width: 28px;
59
+ height: 28px;
60
+ min-width: 28px;
61
+ min-height: 28px;
62
+ flex: 0 0 auto;
63
+ margin-left: auto;
64
+ line-height: 1;
65
+ font-size: 16px;
66
+ color: var(--sky-text-primary);
67
+ background: var(--sky-hover-primary);
68
+ border: var(--sky-border-primary);
69
+ border-radius: var(--sky-radius-secondary);
70
+ transition:
71
+ background-color 0.2s ease,
72
+ color 0.2s ease;
73
+ }
74
+
75
+ .hamburger-btn:hover {
76
+ color: var(--sky-active-primary);
77
+ }
78
+
79
+ sky-icon {
80
+ display: inline-block;
81
+ width: 1em;
82
+ height: 1em;
83
+ }
84
+
85
+ .hamburger-menu {
86
+ position: fixed;
87
+ top: var(--sky-dd-top);
88
+ left: var(--sky-dd-left);
89
+ width: var(--sky-dd-width);
90
+ margin: 0;
91
+ box-shadow: var(--sky-box-shadow-primary);
92
+ border-radius: var(--sky-radius-secondary);
93
+ background-color: var(--sky-glass-primary);
94
+ backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
95
+ var(--sky-saturation-primary);
96
+ -webkit-backdrop-filter: var(--sky-blur-primary)
97
+ var(--sky-brightness-primary) var(--sky-saturation-primary);
98
+ border: var(--sky-border-primary);
99
+
100
+ }
101
+
102
+ .hamburger-inner {
103
+ display: flex;
104
+ flex-wrap: wrap;
105
+ gap: 8px;
106
+ box-sizing: border-box;
107
+ }
108
+ `}firstUpdated(e){super.firstUpdated(e),this.dropdownPopover.refreshTargets()}connectedCallback(){super.connectedCallback(),this._ro=new ResizeObserver(()=>this._scheduleMeasure()),this._ro.observe(this),this._mo=new MutationObserver(()=>this._collectItems()),this._mo.observe(this,{childList:!0,subtree:!0}),this._collectItems(),this.updateComplete.then(()=>this._measure())}disconnectedCallback(){super.disconnectedCallback(),this._ro?.disconnect(),this._mo?.disconnect()}_collectItems(){this._itemElements=Array.from(this.querySelectorAll(".menu-parent")),this._scheduleMeasure()}_scheduleMeasure(){this._scheduled||(this._scheduled=!0,requestAnimationFrame(()=>{this._scheduled=!1,this._measure()}))}_measure(){if(0===this._itemElements.length)return;for(const e of this._itemElements)e.removeAttribute("slot");const e=this.getBoundingClientRect().width,t=this.stackAt>0&&e<this.stackAt?"vertical":"horizontal";this._initialized&&t!==this.flexDirection?(this.flexDirection=t,this.dispatchEvent(new CustomEvent("flex-direction-changed",{detail:{flexDirection:t},bubbles:!0,composed:!0}))):this.flexDirection=t;const r=this.shadowRoot?.querySelector(".main-container"),i=this.shadowRoot?.querySelector(".hamburger-btn"),s=i&&i.offsetWidth||28,o=r?r.offsetWidth-this.gapThreshold-(s+8):0;let n=0;const a=[];for(const e of this._itemElements){n+=e.getBoundingClientRect().width,n>o&&a.push(e)}const d=a.length>0;i&&(i.style.display=d?"flex":"none");for(const e of a)e.setAttribute("slot","hamburger");this.isFullyHidden=a.length===this._itemElements.length,d||this.dropdownPopover.closePopover(),this._initialized||(this._initialized=!0)}openMenu(){this.dropdownPopover.openPopover()}closeMenu(){this.dropdownPopover.closePopover()}toggleMenu(){this.dropdownPopover.toggle()}recalculateLayout(){this._measure()}render(){const e="menu-"+(this.id||Math.random().toString(36).slice(2));return s`
109
+ <div class="main-container" part="container">
110
+ <div class="main-items">
111
+ <!-- visible items -->
112
+ <slot></slot>
113
+ </div>
114
+
115
+ <div class="spacer"></div>
116
+
117
+ <button
118
+ class="hamburger-btn"
119
+ part="hamburger-button"
120
+ @click=${()=>this.dropdownPopover.toggle()}
121
+ @keydown=${e=>("Enter"===e.key||" "===e.key)&&(e.preventDefault(),this.dropdownPopover.toggle())}
122
+ aria-label="More"
123
+ aria-haspopup="menu"
124
+ .aria-expanded=${String(this.isHamburgerOpen)}
125
+ aria-controls=${e}
126
+ tabindex="0"
127
+ >
128
+ ${l(this.isFullyHidden,()=>s`<sky-icon icon="${this.fullIcon}"></sky-icon>`,()=>s`<sky-icon icon="${this.partialIcon}"></sky-icon>`)}
129
+ </button>
130
+ </div>
131
+
132
+ <div
133
+ id=${e}
134
+ class="hamburger-menu"
135
+ @toggle=${this.dropdownPopover.onToggle}
136
+ popover="manual"
137
+ part="menu"
138
+ role="menu"
139
+ ?inert=${!this.isHamburgerOpen}
140
+ aria-label="Additional menu items"
141
+ >
142
+ <div class="hamburger-inner" part="menu-inner">
143
+ <!-- overflow items (same nodes, just slot="hamburger") -->
144
+ <slot name="hamburger"></slot>
145
+ </div>
146
+ </div>
147
+ `}};e([o({type:Boolean}),t("design:type",Object)],c.prototype,"isHamburgerOpen",void 0),e([o({type:Boolean}),t("design:type",Object)],c.prototype,"isFullyHidden",void 0),e([o({type:Number}),t("design:type",Object)],c.prototype,"gapThreshold",void 0),e([o({type:String,reflect:!0}),t("design:type",String)],c.prototype,"flexDirection",void 0),e([o({type:Number}),t("design:type",Object)],c.prototype,"stackAt",void 0),e([o({type:String}),t("design:type",Object)],c.prototype,"partialIcon",void 0),e([o({type:String}),t("design:type",Object)],c.prototype,"fullIcon",void 0),e([n(),t("design:type",ResizeObserver)],c.prototype,"_ro",void 0),e([n(),t("design:type",Array)],c.prototype,"_itemElements",void 0),e([a(".hamburger-menu"),t("design:type",HTMLElement)],c.prototype,"hamburgerEl",void 0),c=e([d("sky-flexbar")],c);export{c as SkyFlexbar};
148
+ //# sourceMappingURL=sky-flexbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sky-flexbar.js","sources":["../../src/sky-flexbar/sky-flexbar.ts"],"sourcesContent":[null],"names":["SkyFlexbar","LitElement","constructor","this","isHamburgerOpen","isFullyHidden","gapThreshold","flexDirection","stackAt","partialIcon","fullIcon","_itemElements","_scheduled","_initialized","dropdownPopover","PopoverController","getAnchor","getPopover","hamburgerEl","cssVarLeft","cssVarTop","cssVarWidth","getPlacement","getAlign","getGap","getPadding","getMatchAnchorWidth","getMaxWidthToViewport","getMaxWidthMode","getFlip","getFlipOrder","getAnimateReposition","getRepositionMs","getCloseOnEscape","getCloseOnOutside","getRestoreFocusOnClose","onOpenChange","open","meta","dispatchEvent","CustomEvent","detail","bubbles","composed","dependencies","SkyIcon","styles","css","firstUpdated","_changedProperties","super","refreshTargets","connectedCallback","_ro","ResizeObserver","_scheduleMeasure","observe","_mo","MutationObserver","_collectItems","childList","subtree","updateComplete","then","_measure","disconnectedCallback","disconnect","Array","from","querySelectorAll","requestAnimationFrame","length","item","removeAttribute","w","getBoundingClientRect","width","newDir","mainContainer","shadowRoot","querySelector","btn","btnWidth","offsetWidth","available","total","hidden","el","push","showHamburger","style","display","setAttribute","closePopover","openMenu","openPopover","closeMenu","toggleMenu","toggle","recalculateLayout","render","menuId","id","Math","random","toString","slice","html","e","key","preventDefault","String","when","onToggle","__decorate","property","type","Boolean","prototype","Number","reflect","state","query","HTMLElement","customElement"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./sky-flexbox";
@@ -0,0 +1 @@
1
+ export * from './sky-flexbox.js';
@@ -0,0 +1,156 @@
1
+ import { LitElement } from "lit";
2
+ export type SkyFlexboxDirection = "row" | "row-reverse" | "column" | "column-reverse";
3
+ export type SkyFlexboxWrap = "nowrap" | "wrap" | "wrap-reverse";
4
+ export type SkyFlexboxJustify = "flex-start" | "center" | "flex-end" | "space-between" | "space-around" | "space-evenly";
5
+ export type SkyFlexboxAlign = "stretch" | "flex-start" | "center" | "flex-end" | "baseline";
6
+ export type SkyFlexboxAlignContent = "normal" | "stretch" | "center" | "start" | "end" | "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly";
7
+ /**
8
+ * @element sky-flexbox
9
+ *
10
+ * @summary Flexbox container with grid-like span support for slotted children.
11
+ *
12
+ * @status stable
13
+ * @since 1.0.0
14
+ *
15
+ * @documentation https://library.sky-ui.com/components/flexbox
16
+ *
17
+ * @slot - Default slot for flex items (`<sky-flexcol>` or plain elements with `span` attributes).
18
+ *
19
+ * @property {SkyFlexboxDirection} direction - Flex direction.
20
+ * @property {SkyFlexboxWrap} wrap - Flex wrap behavior.
21
+ * @property {SkyFlexboxJustify} justify - Main-axis alignment.
22
+ * @property {SkyFlexboxAlign} align - Cross-axis alignment.
23
+ * @property {SkyFlexboxAlignContent} alignContent - Multi-line cross-axis distribution.
24
+ * @property {string} gap - Shared row/column gap value.
25
+ * @property {string | undefined} gapX - Horizontal gap override.
26
+ * @property {string | undefined} gapY - Vertical gap override.
27
+ * @property {number} col - Total column count used for span calculations.
28
+ *
29
+ * @fires {Event} slotchange - Fired when slotted children change.
30
+ * @method recalculateSpans Recomputes slotted child span CSS variables.
31
+ *
32
+ * @csspart container - The flex container element.
33
+ *
34
+ * @Behavior
35
+ * - Implements CSS Flexbox with custom property-based configuration
36
+ * - Supports responsive span calculations based on column grid system
37
+ * - Automatically manages CSS custom properties for child elements
38
+ * - Handles responsive breakpoints through span attributes
39
+ *
40
+ * - Uses a configurable column count (default: 12)
41
+ * - Calculates item widths based on span values (1-col through total columns)
42
+ * - Supports responsive spans: `span-lg`, `span-md`, `span-sm`, `span-xs`
43
+ * - Clamps span values to valid range (1 to column count)
44
+ *
45
+ * - Supports unified `gap` property
46
+ * - Optional `gapX` and `gapY` for separate horizontal/vertical spacing
47
+ * - Gap values can use any CSS unit (px, rem, em, %, etc.)
48
+ *
49
+ * @example
50
+ * ```html
51
+ * <sky-flexbox col="12" gap="16px">
52
+ * <sky-flexcol span="8" span-md="12">
53
+ * Main content
54
+ * </sky-flexcol>
55
+ * <sky-flexcol span="4" span-md="12">
56
+ * Sidebar
57
+ * </sky-flexcol>
58
+ * </sky-flexbox>
59
+ * ```
60
+ * ```vue
61
+ * <template>
62
+ * <sky-flexbox col="12" gap="16px">
63
+ * <sky-flexcol span="8" span-md="12">Main content</sky-flexcol>
64
+ * <sky-flexcol span="4" span-md="12">Sidebar</sky-flexcol>
65
+ * </sky-flexbox>
66
+ * </template>
67
+ * ```
68
+ * ```jsx
69
+ * export default function Demo() {
70
+ * return (
71
+ * <sky-flexbox col="12" gap="16px">
72
+ * <sky-flexcol span="8" span-md="12">Main content</sky-flexcol>
73
+ * <sky-flexcol span="4" span-md="12">Sidebar</sky-flexcol>
74
+ * </sky-flexbox>
75
+ * );
76
+ * }
77
+ * ```
78
+ */
79
+ export declare class SkyFlexbox extends LitElement {
80
+ /**
81
+ * Flex direction.
82
+ * @public
83
+ */
84
+ direction: SkyFlexboxDirection;
85
+ /**
86
+ * Wrap behavior.
87
+ * @public
88
+ */
89
+ wrap: SkyFlexboxWrap;
90
+ /**
91
+ * Main axis justification.
92
+ * @public
93
+ */
94
+ justify: SkyFlexboxJustify;
95
+ /**
96
+ * Cross axis alignment.
97
+ * @public
98
+ */
99
+ align: SkyFlexboxAlign;
100
+ /**
101
+ * Multi-line alignment (when wrapping).
102
+ * @public
103
+ */
104
+ alignContent: SkyFlexboxAlignContent;
105
+ /**
106
+ * Shorthand gap; used if gapX/gapY not provided.
107
+ * @public
108
+ */
109
+ gap: string;
110
+ /**
111
+ * Column gap.
112
+ * @public
113
+ */
114
+ gapX?: string;
115
+ /**
116
+ * Row gap.
117
+ * @public
118
+ */
119
+ gapY?: string;
120
+ /**
121
+ * Total columns used for span calculation.
122
+ * @public
123
+ */
124
+ col: number;
125
+ static styles: import("lit").CSSResult;
126
+ /** @protected */
127
+ firstUpdated(): void;
128
+ /** @protected */
129
+ updated(changed: Map<string | number | symbol, unknown>): void;
130
+ /**
131
+ * Syncs component properties to CSS custom properties.
132
+ * @private
133
+ */
134
+ private syncVars;
135
+ /**
136
+ * Forces recalculation of spans for all child elements.
137
+ * Useful when dynamically adding/removing items.
138
+ * @public
139
+ */
140
+ recalculateSpans(): void;
141
+ /** @protected */
142
+ render(): import("lit-html").TemplateResult<1>;
143
+ /**
144
+ * Reads span attributes off slotted children and maps them to CSS vars:
145
+ * span, span-lg, span-md, span-sm, span-xs
146
+ * @private
147
+ */
148
+ private updateSpans;
149
+ /**
150
+ * Clamps span value to valid range (1 to column count).
151
+ * @param raw - Raw span value from attribute
152
+ * @returns Clamped number or null if invalid
153
+ * @private
154
+ */
155
+ private clampSpan;
156
+ }
@@ -0,0 +1,40 @@
1
+ import{__decorate as t,__metadata as n}from"tslib";import{LitElement as s,css as a,html as i}from"lit";import{property as e,customElement as r}from"lit/decorators.js";let p=class extends s{constructor(){super(...arguments),this.direction="row",this.wrap="wrap",this.justify="flex-start",this.align="stretch",this.alignContent="normal",this.gap="16px",this.col=12,this.updateSpans=()=>{const t=this.shadowRoot?.querySelector("slot")?.assignedElements({flatten:!0})??[];for(const n of t){if(!(n instanceof HTMLElement))continue;const t=n,s=this.clampSpan(null!=t.span?String(t.span):null),a=this.clampSpan(null!=t.spanLg?String(t.spanLg):null),i=this.clampSpan(null!=t.spanMd?String(t.spanMd):null),e=this.clampSpan(null!=t.spanSm?String(t.spanSm):null),r=this.clampSpan(null!=t.spanXs?String(t.spanXs):null);s&&n.style.setProperty("--span",String(s)),a&&n.style.setProperty("--span-lg",String(a)),i&&n.style.setProperty("--span-md",String(i)),e&&n.style.setProperty("--span-sm",String(e)),r&&n.style.setProperty("--span-xs",String(r))}}}static{this.styles=a`
2
+ :host {
3
+ display: block;
4
+ }
5
+
6
+ .flex-container {
7
+ display: flex;
8
+ box-sizing: border-box;
9
+ flex-wrap: var(--wrap, wrap);
10
+ gap: var(--gap-y, var(--gap, 16px)) var(--gap-x, var(--gap, 16px));
11
+ justify-content: var(--justify, flex-start);
12
+ align-items: var(--align, stretch);
13
+ align-content: var(--align-content, normal);
14
+ flex-direction: var(--direction, row);
15
+ }
16
+
17
+ /* Default behaviour for any slotted child: */
18
+ ::slotted(*) {
19
+ /* Current span, responsive-aware */
20
+ --span-current: var(--span, 1);
21
+
22
+ /**
23
+ * Calculate width per column:
24
+ * columnWidth = (100% - (columns - 1) * gapX) / columns
25
+ * itemWidth = columnWidth * span
26
+ */
27
+ flex-basis: calc(
28
+ (
29
+ (100% - (var(--columns, 12) - 1) * var(--gap-x, var(--gap, 16px))) /
30
+ var(--columns, 12)
31
+ ) *
32
+ var(--span-current)
33
+ );
34
+ }
35
+ `}firstUpdated(){this.syncVars(),this.updateSpans()}updated(t){(t.has("wrap")||t.has("gap")||t.has("gapX")||t.has("gapY")||t.has("col")||t.has("justify")||t.has("direction")||t.has("align")||t.has("alignContent"))&&this.syncVars(),t.has("col")&&this.updateSpans()}syncVars(){const t={"--wrap":this.wrap,"--gap":this.gap,"--gap-x":this.gapX??this.gap,"--gap-y":this.gapY??this.gap,"--columns":String(this.col),"--justify":this.justify,"--direction":this.direction,"--align":this.align,"--align-content":this.alignContent};Object.entries(t).forEach(([t,n])=>this.style.setProperty(t,n))}recalculateSpans(){this.updateSpans()}render(){return i`
36
+ <div class="flex-container" part="container">
37
+ <slot @slotchange=${this.updateSpans}></slot>
38
+ </div>
39
+ `}clampSpan(t){if(!t)return null;return Math.max(1,Math.min(this.col,Number(t)||1))}};t([e({type:String}),n("design:type",String)],p.prototype,"direction",void 0),t([e({type:String}),n("design:type",String)],p.prototype,"wrap",void 0),t([e({type:String}),n("design:type",String)],p.prototype,"justify",void 0),t([e({type:String}),n("design:type",String)],p.prototype,"align",void 0),t([e({type:String}),n("design:type",String)],p.prototype,"alignContent",void 0),t([e({type:String}),n("design:type",String)],p.prototype,"gap",void 0),t([e({type:String}),n("design:type",String)],p.prototype,"gapX",void 0),t([e({type:String}),n("design:type",String)],p.prototype,"gapY",void 0),t([e({type:Number}),n("design:type",Number)],p.prototype,"col",void 0),p=t([r("sky-flexbox")],p);export{p as SkyFlexbox};
40
+ //# sourceMappingURL=sky-flexbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sky-flexbox.js","sources":["../../src/sky-flexbox/sky-flexbox.ts"],"sourcesContent":[null],"names":["SkyFlexbox","LitElement","constructor","this","direction","wrap","justify","align","alignContent","gap","col","updateSpans","nodes","shadowRoot","querySelector","assignedElements","flatten","el","HTMLElement","elAny","base","clampSpan","span","String","lg","spanLg","md","spanMd","sm","spanSm","xs","spanXs","style","setProperty","styles","css","firstUpdated","syncVars","updated","changed","has","gapX","gapY","Object","entries","forEach","k","v","recalculateSpans","render","html","raw","Math","max","min","Number","__decorate","property","type","prototype","customElement"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./sky-flexcol";
@@ -0,0 +1 @@
1
+ export * from './sky-flexcol.js';