astralis-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -0
  3. package/dist/components/buttons/button/button.js +83 -0
  4. package/dist/components/buttons/button/button.styles.js +69 -0
  5. package/dist/components/buttons/button-group/button-group.context.js +10 -0
  6. package/dist/components/buttons/button-group/button-group.js +42 -0
  7. package/dist/components/buttons/button-group/button-group.styles.js +39 -0
  8. package/dist/components/buttons/theme-toggle/theme-toggle.js +53 -0
  9. package/dist/components/data-display/avatar/avatar.context.js +10 -0
  10. package/dist/components/data-display/avatar/avatar.styles.js +40 -0
  11. package/dist/components/data-display/avatar/components/avatar-badge.js +24 -0
  12. package/dist/components/data-display/avatar/components/avatar-group.js +30 -0
  13. package/dist/components/data-display/avatar/components/avatar-root.js +57 -0
  14. package/dist/components/data-display/avatar/index.js +13 -0
  15. package/dist/components/data-display/badge/badge.js +12 -0
  16. package/dist/components/data-display/badge/badge.styles.js +25 -0
  17. package/dist/components/data-display/calendar/calendar.context.js +13 -0
  18. package/dist/components/data-display/calendar/components/calendar-cell.js +60 -0
  19. package/dist/components/data-display/calendar/components/calendar-grid.js +106 -0
  20. package/dist/components/data-display/calendar/components/calendar-header.js +23 -0
  21. package/dist/components/data-display/calendar/components/calendar-next-trigger.js +34 -0
  22. package/dist/components/data-display/calendar/components/calendar-prev-trigger.js +34 -0
  23. package/dist/components/data-display/calendar/components/calendar-root.js +154 -0
  24. package/dist/components/data-display/calendar/components/calendar-view-trigger.js +28 -0
  25. package/dist/components/data-display/calendar/components/calendar-weekdays.js +43 -0
  26. package/dist/components/data-display/calendar/index.js +30 -0
  27. package/dist/components/data-display/card/card.context.js +10 -0
  28. package/dist/components/data-display/card/card.styles.js +30 -0
  29. package/dist/components/data-display/card/components/card-body.js +19 -0
  30. package/dist/components/data-display/card/components/card-description.js +25 -0
  31. package/dist/components/data-display/card/components/card-footer.js +32 -0
  32. package/dist/components/data-display/card/components/card-header.js +37 -0
  33. package/dist/components/data-display/card/components/card-root.js +30 -0
  34. package/dist/components/data-display/card/components/card-title.js +25 -0
  35. package/dist/components/data-display/card/index.js +24 -0
  36. package/dist/components/data-display/data-list/components/data-list-item.js +20 -0
  37. package/dist/components/data-display/data-list/components/data-list-label.js +23 -0
  38. package/dist/components/data-display/data-list/components/data-list-root.js +11 -0
  39. package/dist/components/data-display/data-list/components/data-list-value.js +12 -0
  40. package/dist/components/data-display/data-list/data-list.context.js +12 -0
  41. package/dist/components/data-display/data-list/index.js +16 -0
  42. package/dist/components/data-display/image/components/image-group.js +79 -0
  43. package/dist/components/data-display/image/components/image-lightbox.js +188 -0
  44. package/dist/components/data-display/image/components/image-root.js +98 -0
  45. package/dist/components/data-display/image/components/image.constants.js +28 -0
  46. package/dist/components/data-display/image/index.js +11 -0
  47. package/dist/components/data-display/marquee/components/marquee-item.js +27 -0
  48. package/dist/components/data-display/marquee/components/marquee-root.js +130 -0
  49. package/dist/components/data-display/marquee/index.js +11 -0
  50. package/dist/components/data-display/qr-code/index.js +7 -0
  51. package/dist/components/data-display/qr-code/qr-code.js +203 -0
  52. package/dist/components/data-display/stat/components/stat-help-text.js +9 -0
  53. package/dist/components/data-display/stat/components/stat-indicator.js +23 -0
  54. package/dist/components/data-display/stat/components/stat-label.js +9 -0
  55. package/dist/components/data-display/stat/components/stat-root.js +10 -0
  56. package/dist/components/data-display/stat/components/stat-value.js +9 -0
  57. package/dist/components/data-display/stat/index.js +19 -0
  58. package/dist/components/data-display/stat/stat.context.js +6 -0
  59. package/dist/components/data-display/table/components/table-body.js +9 -0
  60. package/dist/components/data-display/table/components/table-caption.js +26 -0
  61. package/dist/components/data-display/table/components/table-cell.js +12 -0
  62. package/dist/components/data-display/table/components/table-footer.js +9 -0
  63. package/dist/components/data-display/table/components/table-head.js +20 -0
  64. package/dist/components/data-display/table/components/table-header.js +22 -0
  65. package/dist/components/data-display/table/components/table-root.js +20 -0
  66. package/dist/components/data-display/table/components/table-row.js +23 -0
  67. package/dist/components/data-display/table/index.js +28 -0
  68. package/dist/components/data-display/table/table.context.js +12 -0
  69. package/dist/components/data-display/table/table.styles.js +9 -0
  70. package/dist/components/data-display/tag/components/checkable-tag-group.js +37 -0
  71. package/dist/components/data-display/tag/components/checkable-tag.js +45 -0
  72. package/dist/components/data-display/tag/components/tag-root.js +52 -0
  73. package/dist/components/data-display/tag/index.js +14 -0
  74. package/dist/components/data-display/tag/tag.styles.js +27 -0
  75. package/dist/components/data-display/timeline/components/timeline-content.js +23 -0
  76. package/dist/components/data-display/timeline/components/timeline-indicator.js +21 -0
  77. package/dist/components/data-display/timeline/components/timeline-item.js +23 -0
  78. package/dist/components/data-display/timeline/components/timeline-root.js +12 -0
  79. package/dist/components/data-display/timeline/index.js +20 -0
  80. package/dist/components/data-display/timeline/timeline.context.js +18 -0
  81. package/dist/components/data-display/timeline/timeline.styles.js +33 -0
  82. package/dist/components/data-entry/checkbox/checkbox.context.js +12 -0
  83. package/dist/components/data-entry/checkbox/checkbox.styles.js +14 -0
  84. package/dist/components/data-entry/checkbox/components/checkbox-group.js +38 -0
  85. package/dist/components/data-entry/checkbox/components/checkbox.js +86 -0
  86. package/dist/components/data-entry/checkbox/index.js +11 -0
  87. package/dist/components/data-entry/combobox/combobox.js +178 -0
  88. package/dist/components/data-entry/field/components/field-error-text.js +47 -0
  89. package/dist/components/data-entry/field/components/field-help-text.js +30 -0
  90. package/dist/components/data-entry/field/components/field-label.js +35 -0
  91. package/dist/components/data-entry/field/components/field-root.js +45 -0
  92. package/dist/components/data-entry/field/field.context.js +10 -0
  93. package/dist/components/data-entry/field/index.js +17 -0
  94. package/dist/components/data-entry/input/components/input-group.js +15 -0
  95. package/dist/components/data-entry/input/components/input-password.js +42 -0
  96. package/dist/components/data-entry/input/components/input-search.js +48 -0
  97. package/dist/components/data-entry/input/components/input-textarea.js +53 -0
  98. package/dist/components/data-entry/input/components/input.js +44 -0
  99. package/dist/components/data-entry/input/index.js +18 -0
  100. package/dist/components/data-entry/input/input.context.js +13 -0
  101. package/dist/components/data-entry/input/input.styles.js +48 -0
  102. package/dist/components/data-entry/multi-select/components/multi-select.js +301 -0
  103. package/dist/components/data-entry/multi-select/multi-select.styles.js +47 -0
  104. package/dist/components/data-entry/number-input/number-input.js +97 -0
  105. package/dist/components/data-entry/pin-input/components/pin-input.js +127 -0
  106. package/dist/components/data-entry/pin-input/pin-input.styles.js +35 -0
  107. package/dist/components/data-entry/radio/components/radio-group.js +38 -0
  108. package/dist/components/data-entry/radio/components/radio.js +80 -0
  109. package/dist/components/data-entry/radio/index.js +11 -0
  110. package/dist/components/data-entry/radio/radio.context.js +10 -0
  111. package/dist/components/data-entry/radio/radio.styles.js +14 -0
  112. package/dist/components/data-entry/select/components/select.js +208 -0
  113. package/dist/components/data-entry/select/select.styles.js +35 -0
  114. package/dist/components/data-entry/shared/options.js +49 -0
  115. package/dist/components/data-entry/slider/components/slider.js +395 -0
  116. package/dist/components/data-entry/slider/slider.styles.js +15 -0
  117. package/dist/components/data-entry/switch/components/switch.js +86 -0
  118. package/dist/components/data-entry/switch/switch.styles.js +14 -0
  119. package/dist/components/disclosure/accordion/accordion.context.js +20 -0
  120. package/dist/components/disclosure/accordion/accordion.styles.js +84 -0
  121. package/dist/components/disclosure/accordion/components/accordion-content.js +26 -0
  122. package/dist/components/disclosure/accordion/components/accordion-item.js +30 -0
  123. package/dist/components/disclosure/accordion/components/accordion-root.js +80 -0
  124. package/dist/components/disclosure/accordion/components/accordion-trigger.js +49 -0
  125. package/dist/components/disclosure/accordion/index.js +16 -0
  126. package/dist/components/disclosure/carousel/carousel.context.js +18 -0
  127. package/dist/components/disclosure/carousel/carousel.styles.js +77 -0
  128. package/dist/components/disclosure/carousel/components/carousel-autoplay-trigger.js +25 -0
  129. package/dist/components/disclosure/carousel/components/carousel-control.js +12 -0
  130. package/dist/components/disclosure/carousel/components/carousel-indicator.js +22 -0
  131. package/dist/components/disclosure/carousel/components/carousel-indicators.js +32 -0
  132. package/dist/components/disclosure/carousel/components/carousel-next.js +24 -0
  133. package/dist/components/disclosure/carousel/components/carousel-prev.js +24 -0
  134. package/dist/components/disclosure/carousel/components/carousel-progress-text.js +21 -0
  135. package/dist/components/disclosure/carousel/components/carousel-root.js +129 -0
  136. package/dist/components/disclosure/carousel/components/carousel-slide.js +49 -0
  137. package/dist/components/disclosure/carousel/components/carousel-track.js +74 -0
  138. package/dist/components/disclosure/carousel/index.js +34 -0
  139. package/dist/components/disclosure/pagination/components/pagination-controls.js +79 -0
  140. package/dist/components/disclosure/pagination/components/pagination-ellipsis.js +11 -0
  141. package/dist/components/disclosure/pagination/components/pagination-item.js +24 -0
  142. package/dist/components/disclosure/pagination/components/pagination-jumper.js +35 -0
  143. package/dist/components/disclosure/pagination/components/pagination-list.js +9 -0
  144. package/dist/components/disclosure/pagination/components/pagination-page-text.js +18 -0
  145. package/dist/components/disclosure/pagination/components/pagination-pages.js +24 -0
  146. package/dist/components/disclosure/pagination/components/pagination-root.js +44 -0
  147. package/dist/components/disclosure/pagination/index.js +34 -0
  148. package/dist/components/disclosure/pagination/pagination.context.js +12 -0
  149. package/dist/components/disclosure/pagination/pagination.styles.js +84 -0
  150. package/dist/components/feedback/alert/alert.js +55 -0
  151. package/dist/components/feedback/alert/alert.styles.js +23 -0
  152. package/dist/components/feedback/progress/progress.js +112 -0
  153. package/dist/components/feedback/progress/progress.styles.js +25 -0
  154. package/dist/components/feedback/skeleton/skeleton.js +27 -0
  155. package/dist/components/feedback/skeleton/skeleton.styles.js +20 -0
  156. package/dist/components/feedback/spinner/spinner.js +32 -0
  157. package/dist/components/feedback/spinner/spinner.styles.js +17 -0
  158. package/dist/components/feedback/status.js +18 -0
  159. package/dist/components/feedback/toast/toast-store.js +35 -0
  160. package/dist/components/feedback/toast/toast.styles.js +20 -0
  161. package/dist/components/feedback/toast/toaster.js +65 -0
  162. package/dist/components/icon/icon.js +47 -0
  163. package/dist/components/icon/icon.styles.js +20 -0
  164. package/dist/components/icon/internal-icons.js +143 -0
  165. package/dist/components/layout/aspect-ratio/aspect-ratio.js +32 -0
  166. package/dist/components/layout/aspect-ratio/aspect-ratio.styles.js +18 -0
  167. package/dist/components/layout/box/box.js +30 -0
  168. package/dist/components/layout/box/box.styles.js +76 -0
  169. package/dist/components/layout/center/center.js +31 -0
  170. package/dist/components/layout/container/container.js +40 -0
  171. package/dist/components/layout/flex/flex-item.js +35 -0
  172. package/dist/components/layout/flex/flex.js +32 -0
  173. package/dist/components/layout/flex/flex.style.js +42 -0
  174. package/dist/components/layout/flex/index.js +11 -0
  175. package/dist/components/layout/float/float.js +32 -0
  176. package/dist/components/layout/float/float.styles.js +29 -0
  177. package/dist/components/layout/grid/grid-item.js +36 -0
  178. package/dist/components/layout/grid/grid.js +47 -0
  179. package/dist/components/layout/grid/grid.styles.js +43 -0
  180. package/dist/components/layout/grid/index.js +10 -0
  181. package/dist/components/layout/separator/separator.js +33 -0
  182. package/dist/components/layout/separator/separator.styles.js +29 -0
  183. package/dist/components/layout/stack/stack.js +24 -0
  184. package/dist/components/menu/components/menu-content.js +62 -0
  185. package/dist/components/menu/components/menu-parts.js +81 -0
  186. package/dist/components/menu/components/menu-root.js +36 -0
  187. package/dist/components/menu/index.js +15 -0
  188. package/dist/components/menu/menu.context.js +12 -0
  189. package/dist/components/menu/menu.styles.js +12 -0
  190. package/dist/components/navigation/breadcrumb/breadcrumb.js +50 -0
  191. package/dist/components/navigation/steps/components/steps-completed.js +12 -0
  192. package/dist/components/navigation/steps/components/steps-content.js +12 -0
  193. package/dist/components/navigation/steps/components/steps-description.js +13 -0
  194. package/dist/components/navigation/steps/components/steps-indicator.js +34 -0
  195. package/dist/components/navigation/steps/components/steps-item.js +112 -0
  196. package/dist/components/navigation/steps/components/steps-list.js +21 -0
  197. package/dist/components/navigation/steps/components/steps-next.js +25 -0
  198. package/dist/components/navigation/steps/components/steps-prev.js +25 -0
  199. package/dist/components/navigation/steps/components/steps-root.js +61 -0
  200. package/dist/components/navigation/steps/components/steps-title.js +13 -0
  201. package/dist/components/navigation/steps/index.js +34 -0
  202. package/dist/components/navigation/steps/steps.context.js +20 -0
  203. package/dist/components/navigation/steps/steps.styles.js +97 -0
  204. package/dist/components/navigation/tabs/components/tabs-content.js +26 -0
  205. package/dist/components/navigation/tabs/components/tabs-list.js +45 -0
  206. package/dist/components/navigation/tabs/components/tabs-root.js +54 -0
  207. package/dist/components/navigation/tabs/components/tabs-trigger.js +54 -0
  208. package/dist/components/navigation/tabs/index.js +16 -0
  209. package/dist/components/navigation/tabs/tabs.context.js +12 -0
  210. package/dist/components/navigation/tabs/tabs.styles.js +80 -0
  211. package/dist/components/overlay/drawer/components/drawer-content.js +48 -0
  212. package/dist/components/overlay/drawer/components/drawer-parts.js +48 -0
  213. package/dist/components/overlay/drawer/components/drawer-root.js +58 -0
  214. package/dist/components/overlay/drawer/drawer.context.js +12 -0
  215. package/dist/components/overlay/drawer/drawer.styles.js +32 -0
  216. package/dist/components/overlay/drawer/index.js +27 -0
  217. package/dist/components/overlay/modal/components/modal-content.js +48 -0
  218. package/dist/components/overlay/modal/components/modal-parts.js +48 -0
  219. package/dist/components/overlay/modal/components/modal-root.js +58 -0
  220. package/dist/components/overlay/modal/index.js +27 -0
  221. package/dist/components/overlay/modal/modal.context.js +12 -0
  222. package/dist/components/overlay/modal/modal.styles.js +31 -0
  223. package/dist/components/overlay/popover/components/popover-content.js +76 -0
  224. package/dist/components/overlay/popover/components/popover-parts.js +17 -0
  225. package/dist/components/overlay/popover/components/popover-root.js +71 -0
  226. package/dist/components/overlay/popover/index.js +19 -0
  227. package/dist/components/overlay/popover/popover.context.js +12 -0
  228. package/dist/components/overlay/popover/popover.styles.js +6 -0
  229. package/dist/components/overlay/portal.js +10 -0
  230. package/dist/components/overlay/tooltip/components/tooltip-content.js +52 -0
  231. package/dist/components/overlay/tooltip/components/tooltip-root.js +53 -0
  232. package/dist/components/overlay/tooltip/index.js +12 -0
  233. package/dist/components/overlay/tooltip/tooltip.context.js +12 -0
  234. package/dist/components/overlay/tooltip/tooltip.styles.js +6 -0
  235. package/dist/components/typography/blockquote/blockquote.js +39 -0
  236. package/dist/components/typography/blockquote/blockquote.styles.js +21 -0
  237. package/dist/components/typography/code/code.js +35 -0
  238. package/dist/components/typography/code/code.styles.js +26 -0
  239. package/dist/components/typography/code-block/code-block.js +57 -0
  240. package/dist/components/typography/code-block/code-block.styles.js +36 -0
  241. package/dist/components/typography/heading/heading.js +21 -0
  242. package/dist/components/typography/highlight/highlight.js +30 -0
  243. package/dist/components/typography/highlight/highlight.styles.js +18 -0
  244. package/dist/components/typography/kbd/kbd.js +26 -0
  245. package/dist/components/typography/link/link.js +48 -0
  246. package/dist/components/typography/list/index.js +10 -0
  247. package/dist/components/typography/list/list-item.js +37 -0
  248. package/dist/components/typography/list/list.js +35 -0
  249. package/dist/components/typography/list/list.styles.js +35 -0
  250. package/dist/components/typography/text/text.js +80 -0
  251. package/dist/components/typography/text/text.styles.js +110 -0
  252. package/dist/const/color-mappings.js +541 -0
  253. package/dist/const/color-schemes.js +5 -0
  254. package/dist/const/common-mappings.js +127 -0
  255. package/dist/const/layout-mappings.js +446 -0
  256. package/dist/const/positioning-mappings.js +164 -0
  257. package/dist/const/rounded-mappings.js +121 -0
  258. package/dist/const/sizing-mappings.js +1113 -0
  259. package/dist/const/spacing-mappings.js +508 -0
  260. package/dist/hooks/use-anchor-position.js +39 -0
  261. package/dist/hooks/use-controllable-state.js +18 -0
  262. package/dist/hooks/use-dismiss.js +23 -0
  263. package/dist/hooks/use-overlay-behavior.js +42 -0
  264. package/dist/hooks/use-prefers-reduced-motion.js +15 -0
  265. package/dist/hooks/use-presence.js +18 -0
  266. package/dist/hooks/use-roving-focus.js +51 -0
  267. package/dist/index.d.ts +3533 -0
  268. package/dist/index.js +359 -0
  269. package/dist/styles.css +2 -0
  270. package/dist/theme/provider.js +130 -0
  271. package/dist/utils/astralis-merge.js +31 -0
  272. package/dist/utils/overlay-stack.js +27 -0
  273. package/dist/utils/responsive.js +32 -0
  274. package/dist/utils/split-variant-props.js +13 -0
  275. package/package.json +107 -0
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { jsx as x } from "react/jsx-runtime";
3
+ import { forwardRef as I } from "react";
4
+ import { astralisMerge as V } from "../../../utils/astralis-merge.js";
5
+ import { resolveStyleProps as i } from "../../../utils/responsive.js";
6
+ import { flexItemVariantMap as m, flexItemVariants as d } from "./flex.style.js";
7
+ import { boxVariantMap as u, boxVariants as v } from "../box/box.styles.js";
8
+ import { BOX_VARIANT_KEYS as y } from "../box/box.js";
9
+ const b = Object.keys(m), P = I(
10
+ ({ children: n, as: l, className: f, ...e }, p) => {
11
+ const c = l || "div", o = {}, a = {}, s = {};
12
+ for (const t in e)
13
+ if (Object.prototype.hasOwnProperty.call(e, t)) {
14
+ const r = e[t];
15
+ b.includes(t) ? o[t] = r : y.includes(t) ? a[t] = r : s[t] = r;
16
+ }
17
+ return /* @__PURE__ */ x(
18
+ c,
19
+ {
20
+ className: V(
21
+ i(a, { maps: u, variants: v }),
22
+ i(o, { maps: m, variants: d }),
23
+ f
24
+ ),
25
+ ref: p,
26
+ ...s,
27
+ children: n
28
+ }
29
+ );
30
+ }
31
+ );
32
+ P.displayName = "Flex.Item";
33
+ export {
34
+ P as default
35
+ };
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { jsx as p } from "react/jsx-runtime";
3
+ import { forwardRef as x } from "react";
4
+ import { astralisMerge as V } from "../../../utils/astralis-merge.js";
5
+ import { resolveStyleProps as s } from "../../../utils/responsive.js";
6
+ import { flexVariantMap as i, flexVariants as d } from "./flex.style.js";
7
+ import { boxVariantMap as y, boxVariants as b } from "../box/box.styles.js";
8
+ import { BOX_VARIANT_KEYS as u } from "../box/box.js";
9
+ const v = Object.keys(i), P = x(
10
+ ({ children: n, as: m, className: l, ...r }, f) => {
11
+ const c = m || "div", o = {}, a = {}, e = {};
12
+ for (const t in r)
13
+ Object.prototype.hasOwnProperty.call(r, t) && (v.includes(t) ? o[t] = r[t] : u.includes(t) ? a[t] = r[t] : e[t] = r[t]);
14
+ return /* @__PURE__ */ p(
15
+ c,
16
+ {
17
+ className: V(
18
+ s(a, { maps: y, variants: b }),
19
+ s(o, { maps: i, variants: d }),
20
+ l
21
+ ),
22
+ ref: f,
23
+ ...e,
24
+ children: n
25
+ }
26
+ );
27
+ }
28
+ );
29
+ P.displayName = "Flex";
30
+ export {
31
+ P as default
32
+ };
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { cva as e } from "class-variance-authority";
3
+ import { columnGapTypes as t, rowGapTypes as a, gapTypes as n, flexWrapTypes as s, placeContentTypes as r, alignContentTypes as p, alignItemsTypes as i, justifyContentTypes as o, flexDirectionTypes as l, alignSelfTypes as f, orderTypes as y, flexShrinkTypes as T, flexGrowTypes as c, flexTypes as x, flexBasisTypes as m } from "../../../const/layout-mappings.js";
4
+ const g = {
5
+ direction: l,
6
+ // Container alignment valid in flexbox: justify-content (main axis),
7
+ // align-items (cross axis), align-content (wrapped lines), place-content
8
+ // (shorthand of the two). justify-items / place-items are NO-OPs in flex.
9
+ justifyContent: o,
10
+ alignItems: i,
11
+ alignContent: p,
12
+ placeContent: r,
13
+ wrap: s,
14
+ gap: n,
15
+ rowGap: a,
16
+ columnGap: t
17
+ }, d = e("astralis:flex", {
18
+ variants: g,
19
+ defaultVariants: {
20
+ direction: "row",
21
+ alignItems: "start",
22
+ justifyContent: "start",
23
+ wrap: "nowrap"
24
+ }
25
+ }), w = {
26
+ basis: m,
27
+ flex: x,
28
+ grow: c,
29
+ shrink: T,
30
+ order: y,
31
+ // Only align-self has effect on a flex item; justify-self / place-self are
32
+ // NO-OPs in flex (main-axis positioning is done via margins / justify-content).
33
+ alignSelf: f
34
+ }, G = e("", {
35
+ variants: w
36
+ });
37
+ export {
38
+ w as flexItemVariantMap,
39
+ G as flexItemVariants,
40
+ g as flexVariantMap,
41
+ d as flexVariants
42
+ };
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import e from "./flex.js";
3
+ import t from "./flex-item.js";
4
+ const l = Object.assign(e, {
5
+ Item: t
6
+ });
7
+ export {
8
+ l as Flex,
9
+ t as FlexItem,
10
+ l as default
11
+ };
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { jsx as p } from "react/jsx-runtime";
3
+ import { forwardRef as V } from "react";
4
+ import { astralisMerge as d } from "../../../utils/astralis-merge.js";
5
+ import { resolveStyleProps as e } from "../../../utils/responsive.js";
6
+ import { floatVariantMap as i, floatVariants as y } from "./float.styles.js";
7
+ import { boxVariantMap as b, boxVariants as u } from "../box/box.styles.js";
8
+ import { BOX_VARIANT_KEYS as v } from "../box/box.js";
9
+ const x = Object.keys(i), P = V(
10
+ ({ children: n, as: m, className: l, ...a }, f) => {
11
+ const c = m || "div", o = {}, r = {}, s = {};
12
+ for (const t in a)
13
+ Object.prototype.hasOwnProperty.call(a, t) && (x.includes(t) ? o[t] = a[t] : v.includes(t) ? r[t] = a[t] : s[t] = a[t]);
14
+ return /* @__PURE__ */ p(
15
+ c,
16
+ {
17
+ className: d(
18
+ e(r, { maps: b, variants: u }),
19
+ e(o, { maps: i, variants: y }),
20
+ l
21
+ ),
22
+ ref: f,
23
+ ...s,
24
+ children: n
25
+ }
26
+ );
27
+ }
28
+ );
29
+ P.displayName = "Float";
30
+ export {
31
+ P as default
32
+ };
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { cva as t } from "class-variance-authority";
3
+ const a = {
4
+ placement: {
5
+ // Every placement declares ALL FOUR insets (auto for the unused sides).
6
+ // Responsive overrides only ADD breakpoint classes on top of the base
7
+ // value's classes, so without the auto-counters a base `top-start`
8
+ // overridden to `md:bottom-end` would keep top-0/left-0 pinned as well.
9
+ "top-start": "astralis:top-0 astralis:bottom-auto astralis:left-0 astralis:right-auto astralis:-translate-x-1/2 astralis:-translate-y-1/2",
10
+ "top-center": "astralis:top-0 astralis:bottom-auto astralis:left-1/2 astralis:right-auto astralis:-translate-x-1/2 astralis:-translate-y-1/2",
11
+ "top-end": "astralis:top-0 astralis:bottom-auto astralis:right-0 astralis:left-auto astralis:translate-x-1/2 astralis:-translate-y-1/2",
12
+ "middle-start": "astralis:top-1/2 astralis:bottom-auto astralis:left-0 astralis:right-auto astralis:-translate-x-1/2 astralis:-translate-y-1/2",
13
+ "middle-center": "astralis:top-1/2 astralis:bottom-auto astralis:left-1/2 astralis:right-auto astralis:-translate-x-1/2 astralis:-translate-y-1/2",
14
+ "middle-end": "astralis:top-1/2 astralis:bottom-auto astralis:right-0 astralis:left-auto astralis:translate-x-1/2 astralis:-translate-y-1/2",
15
+ "bottom-start": "astralis:bottom-0 astralis:top-auto astralis:left-0 astralis:right-auto astralis:-translate-x-1/2 astralis:translate-y-1/2",
16
+ "bottom-center": "astralis:bottom-0 astralis:top-auto astralis:left-1/2 astralis:right-auto astralis:-translate-x-1/2 astralis:translate-y-1/2",
17
+ "bottom-end": "astralis:bottom-0 astralis:top-auto astralis:right-0 astralis:left-auto astralis:translate-x-1/2 astralis:translate-y-1/2"
18
+ }
19
+ }, r = t(
20
+ "astralis:absolute astralis:z-lower astralis:inline-flex astralis:items-center astralis:justify-center",
21
+ {
22
+ variants: a,
23
+ defaultVariants: { placement: "top-end" }
24
+ }
25
+ );
26
+ export {
27
+ a as floatVariantMap,
28
+ r as floatVariants
29
+ };
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { jsx as V } from "react/jsx-runtime";
3
+ import { forwardRef as u } from "react";
4
+ import { astralisMerge as v } from "../../../utils/astralis-merge.js";
5
+ import { resolveStyleProps as n } from "../../../utils/responsive.js";
6
+ import { gridItemVariantMap as l, gridItemVariants as y } from "./grid.styles.js";
7
+ import { boxVariantMap as b, boxVariants as x } from "../box/box.styles.js";
8
+ import { BOX_VARIANT_KEYS as A } from "../box/box.js";
9
+ const P = Object.keys(l), g = u(
10
+ ({ children: p, as: c, className: f, area: e, style: a, ...t }, d) => {
11
+ const I = c || "div", s = {}, i = {}, m = {};
12
+ for (const r in t)
13
+ if (Object.prototype.hasOwnProperty.call(t, r)) {
14
+ const o = t[r];
15
+ P.includes(r) ? s[r] = o : A.includes(r) ? i[r] = o : m[r] = o;
16
+ }
17
+ return /* @__PURE__ */ V(
18
+ I,
19
+ {
20
+ className: v(
21
+ n(i, { maps: b, variants: x }),
22
+ n(s, { maps: l, variants: y }),
23
+ f
24
+ ),
25
+ ref: d,
26
+ style: e ? { gridArea: e, ...a } : a,
27
+ ...m,
28
+ children: p
29
+ }
30
+ );
31
+ }
32
+ );
33
+ g.displayName = "Grid.Item";
34
+ export {
35
+ g as default
36
+ };
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { jsx as v } from "react/jsx-runtime";
3
+ import { forwardRef as b } from "react";
4
+ import { astralisMerge as x } from "../../../utils/astralis-merge.js";
5
+ import { resolveStyleProps as d } from "../../../utils/responsive.js";
6
+ import { gridVariantMap as f, gridVariants as P } from "./grid.styles.js";
7
+ import { boxVariantMap as T, boxVariants as u } from "../box/box.styles.js";
8
+ import { BOX_VARIANT_KEYS as N } from "../box/box.js";
9
+ const O = Object.keys(f), S = b(
10
+ ({
11
+ children: l,
12
+ as: p,
13
+ className: y,
14
+ templateColumns: o,
15
+ templateRows: t,
16
+ templateAreas: a,
17
+ style: s,
18
+ ...i
19
+ }, V) => {
20
+ const g = p || "div", e = {}, n = {}, m = {};
21
+ for (const r in i)
22
+ Object.prototype.hasOwnProperty.call(i, r) && (O.includes(r) ? e[r] = i[r] : N.includes(r) ? n[r] = i[r] : m[r] = i[r]);
23
+ const c = o || t || a ? {
24
+ ...o ? { gridTemplateColumns: o } : {},
25
+ ...t ? { gridTemplateRows: t } : {},
26
+ ...a ? { gridTemplateAreas: a } : {}
27
+ } : void 0;
28
+ return /* @__PURE__ */ v(
29
+ g,
30
+ {
31
+ className: x(
32
+ d(n, { maps: T, variants: u }),
33
+ d(e, { maps: f, variants: P }),
34
+ y
35
+ ),
36
+ ref: V,
37
+ style: c ? { ...c, ...s } : s,
38
+ ...m,
39
+ children: l
40
+ }
41
+ );
42
+ }
43
+ );
44
+ S.displayName = "Grid";
45
+ export {
46
+ S as default
47
+ };
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { cva as t } from "class-variance-authority";
3
+ import { columnGapTypes as e, rowGapTypes as s, gapTypes as a, placeItemsTypes as o, placeContentTypes as r, alignContentTypes as n, justifyContentTypes as p, alignItemsTypes as i, gridJustifyItemsTypes as l, gridAutoRowsTypes as y, gridAutoColumnsTypes as g, gridAutoFlow as d, gridTemplateRows as T, gridTemplateColumns as m, placeSelfTypes as u, justifySelfTypes as c, alignSelfTypes as f, orderTypes as w, gridRowEndTypes as S, gridRowStartTypes as C, gridRowSpanTypes as I, gridColEndTypes as R, gridColStartTypes as j, gridColSpanTypes as V } from "../../../const/layout-mappings.js";
4
+ const E = {
5
+ columns: m,
6
+ rows: T,
7
+ flow: d,
8
+ autoColumns: g,
9
+ autoRows: y,
10
+ justifyItems: l,
11
+ alignItems: i,
12
+ justifyContent: p,
13
+ alignContent: n,
14
+ placeContent: r,
15
+ placeItems: o,
16
+ gap: a,
17
+ rowGap: s,
18
+ columnGap: e
19
+ }, M = t("astralis:grid", {
20
+ variants: E,
21
+ defaultVariants: {
22
+ flow: "row"
23
+ }
24
+ }), G = {
25
+ colSpan: V,
26
+ colStart: j,
27
+ colEnd: R,
28
+ rowSpan: I,
29
+ rowStart: C,
30
+ rowEnd: S,
31
+ order: w,
32
+ alignSelf: f,
33
+ justifySelf: c,
34
+ placeSelf: u
35
+ }, x = t("", {
36
+ variants: G
37
+ });
38
+ export {
39
+ G as gridItemVariantMap,
40
+ x as gridItemVariants,
41
+ E as gridVariantMap,
42
+ M as gridVariants
43
+ };
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import t from "./grid.js";
3
+ import o from "./grid-item.js";
4
+ const e = Object.assign(t, {
5
+ Item: o
6
+ });
7
+ export {
8
+ e as Grid,
9
+ o as GridItem
10
+ };
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ import { jsx as d } from "react/jsx-runtime";
3
+ import { forwardRef as y } from "react";
4
+ import { astralisMerge as V } from "../../../utils/astralis-merge.js";
5
+ import { resolveStyleProps as n } from "../../../utils/responsive.js";
6
+ import { separatorVariantMap as s, separatorVariants as v } from "./separator.styles.js";
7
+ import { boxVariantMap as b, boxVariants as u } from "../box/box.styles.js";
8
+ import { BOX_VARIANT_KEYS as x } from "../box/box.js";
9
+ const O = Object.keys(s), P = y(
10
+ ({ as: m, className: l, ...r }, c) => {
11
+ const p = m || "div", a = r.orientation ?? "horizontal", f = typeof a == "string" ? a : void 0, o = {}, e = {}, i = {};
12
+ for (const t in r)
13
+ Object.prototype.hasOwnProperty.call(r, t) && (O.includes(t) ? o[t] = r[t] : x.includes(t) ? e[t] = r[t] : i[t] = r[t]);
14
+ return /* @__PURE__ */ d(
15
+ p,
16
+ {
17
+ role: "separator",
18
+ "aria-orientation": f,
19
+ className: V(
20
+ n(o, { maps: s, variants: v }),
21
+ n(e, { maps: b, variants: u }),
22
+ l
23
+ ),
24
+ ref: c,
25
+ ...i
26
+ }
27
+ );
28
+ }
29
+ );
30
+ P.displayName = "Separator";
31
+ export {
32
+ P as default
33
+ };
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { cva as a } from "class-variance-authority";
3
+ const r = {
4
+ orientation: {
5
+ // Each value RESETS the other orientation's properties. Responsive
6
+ // overrides only ADD breakpoint classes — the base value's classes stay
7
+ // applied — so without the explicit zero/auto counters, a
8
+ // `{ base: "horizontal", md: "vertical" }` separator at md would keep the
9
+ // base's top border and full width on top of the vertical styles.
10
+ horizontal: "astralis:w-full astralis:h-auto astralis:border-t astralis:border-l-0",
11
+ vertical: "astralis:w-auto astralis:h-full astralis:self-stretch astralis:border-l astralis:border-t-0"
12
+ },
13
+ variant: {
14
+ solid: "astralis:border-solid",
15
+ dashed: "astralis:border-dashed",
16
+ dotted: "astralis:border-dotted"
17
+ }
18
+ }, s = a(
19
+ // Default colour comes from the muted stroke token; overridable via `borderColor`.
20
+ "astralis:border-stroke-muted astralis:shrink-0",
21
+ {
22
+ variants: r,
23
+ defaultVariants: { orientation: "horizontal", variant: "solid" }
24
+ }
25
+ );
26
+ export {
27
+ r as separatorVariantMap,
28
+ s as separatorVariants
29
+ };
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsx as i } from "react/jsx-runtime";
3
+ import { forwardRef as r } from "react";
4
+ import { Flex as l } from "../flex/index.js";
5
+ const c = r(({ direction: t = "vertical", as: e, children: o, ...a }, n) => /* @__PURE__ */ i(
6
+ l,
7
+ {
8
+ ref: n,
9
+ as: e,
10
+ direction: t === "vertical" ? "column" : "row",
11
+ ...a,
12
+ children: o
13
+ }
14
+ ));
15
+ c.displayName = "Stack";
16
+ const m = r((t, e) => /* @__PURE__ */ i(c, { ref: e, alignItems: "center", ...t, direction: "horizontal" }));
17
+ m.displayName = "HStack";
18
+ const s = r((t, e) => /* @__PURE__ */ i(c, { ref: e, ...t, direction: "vertical" }));
19
+ s.displayName = "VStack";
20
+ export {
21
+ m as HStack,
22
+ s as VStack,
23
+ c as default
24
+ };
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ import { jsx as m } from "react/jsx-runtime";
3
+ import { useMemo as h, useEffect as x } from "react";
4
+ import { Portal as T } from "../../overlay/portal.js";
5
+ import { useMenu as I } from "../menu.context.js";
6
+ import { astralisMerge as N } from "../../../utils/astralis-merge.js";
7
+ import { usePresence as P } from "../../../hooks/use-presence.js";
8
+ import { useAnchorPosition as b } from "../../../hooks/use-anchor-position.js";
9
+ import { useDismiss as w } from "../../../hooks/use-dismiss.js";
10
+ import { useRovingFocus as A } from "../../../hooks/use-roving-focus.js";
11
+ import { menuMotionClasses as F, menuContentClasses as K } from "../menu.styles.js";
12
+ const a = 160;
13
+ function O({ className: u = "", children: f, onKeyDown: c, ...l }) {
14
+ const { open: t, close: i, triggerRef: o, contentRef: r, contentId: d, side: p, align: R, sideOffset: g } = I(), { mounted: s, state: y } = P(t, a), { x: v, y: M, side: C } = b({
15
+ open: s,
16
+ anchorRef: o,
17
+ floatingRef: r,
18
+ side: p,
19
+ align: R,
20
+ sideOffset: g
21
+ }), D = h(() => [o, r], [o, r]);
22
+ w(t, i, { refs: D });
23
+ const n = A({
24
+ itemSelector: "[data-astralis-menu-item]",
25
+ orientation: "vertical",
26
+ typeahead: !0
27
+ });
28
+ return x(() => {
29
+ if (!t) return;
30
+ const e = setTimeout(() => n.focusFirst(), 0);
31
+ return () => {
32
+ clearTimeout(e), o.current?.focus();
33
+ };
34
+ }, [t]), s ? /* @__PURE__ */ m(T, { children: /* @__PURE__ */ m(
35
+ "div",
36
+ {
37
+ ref: (e) => {
38
+ r.current = e, n.containerRef.current = e;
39
+ },
40
+ id: d,
41
+ role: "menu",
42
+ "aria-orientation": "vertical",
43
+ tabIndex: -1,
44
+ "data-side": C,
45
+ style: { left: v, top: M, transitionDuration: `${a}ms` },
46
+ onKeyDown: (e) => {
47
+ if (c?.(e), e.key === "Tab") {
48
+ i();
49
+ return;
50
+ }
51
+ n.onKeyDown(e);
52
+ },
53
+ className: N(K, F(y), u),
54
+ ...l,
55
+ children: f
56
+ }
57
+ ) }) : null;
58
+ }
59
+ O.displayName = "Menu.Content";
60
+ export {
61
+ O as MenuContent
62
+ };
@@ -0,0 +1,81 @@
1
+ "use client";
2
+ import { jsx as o, jsxs as g } from "react/jsx-runtime";
3
+ import { cloneElement as y } from "react";
4
+ import { useMenu as p } from "../menu.context.js";
5
+ import { astralisMerge as u } from "../../../utils/astralis-merge.js";
6
+ import { menuSeparatorClasses as N, menuLabelClasses as v, menuIconSlotClasses as C, menuShortcutClasses as h, menuItemDangerClasses as k, menuItemClasses as D } from "../menu.styles.js";
7
+ function I({ children: n }) {
8
+ const { toggle: e, open: a, triggerRef: i, contentId: l } = p(), s = n;
9
+ return y(s, {
10
+ ref: i,
11
+ onClick: (r) => {
12
+ s.props.onClick?.(r), e();
13
+ },
14
+ // ArrowDown on a closed trigger opens the menu (APG menu-button pattern).
15
+ onKeyDown: (r) => {
16
+ s.props.onKeyDown?.(r), !a && (r.key === "ArrowDown" || r.key === "ArrowUp") && (r.preventDefault(), e());
17
+ },
18
+ "aria-haspopup": "menu",
19
+ "aria-expanded": a,
20
+ "aria-controls": a ? l : void 0
21
+ });
22
+ }
23
+ I.displayName = "Menu.Trigger";
24
+ function w({
25
+ onSelect: n,
26
+ disabled: e = !1,
27
+ danger: a = !1,
28
+ icon: i,
29
+ shortcut: l,
30
+ closeOnSelect: s,
31
+ className: r = "",
32
+ children: f,
33
+ ...d
34
+ }) {
35
+ const m = p(), M = s ?? m.closeOnSelect, c = () => {
36
+ e || (n?.(), M && m.close());
37
+ };
38
+ return /* @__PURE__ */ g(
39
+ "div",
40
+ {
41
+ role: "menuitem",
42
+ tabIndex: -1,
43
+ "aria-disabled": e || void 0,
44
+ "data-astralis-menu-item": "",
45
+ onClick: c,
46
+ onKeyDown: (t) => {
47
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), c());
48
+ },
49
+ onPointerMove: (t) => {
50
+ e || t.currentTarget.focus();
51
+ },
52
+ className: u(D, a && k, r),
53
+ ...d,
54
+ children: [
55
+ i && /* @__PURE__ */ o("span", { "aria-hidden": "true", className: C, children: i }),
56
+ /* @__PURE__ */ o("span", { className: "astralis:flex-1 astralis:truncate", children: f }),
57
+ l && /* @__PURE__ */ o("span", { className: h, children: l })
58
+ ]
59
+ }
60
+ );
61
+ }
62
+ w.displayName = "Menu.Item";
63
+ function x({ className: n = "", children: e, ...a }) {
64
+ return /* @__PURE__ */ o("div", { className: u(v, n), ...a, children: e });
65
+ }
66
+ x.displayName = "Menu.Label";
67
+ function S({ className: n = "", ...e }) {
68
+ return /* @__PURE__ */ o("div", { role: "separator", "aria-orientation": "horizontal", className: u(N, n), ...e });
69
+ }
70
+ S.displayName = "Menu.Separator";
71
+ function b({ className: n = "", children: e, ...a }) {
72
+ return /* @__PURE__ */ o("div", { role: "group", className: n || void 0, ...a, children: e });
73
+ }
74
+ b.displayName = "Menu.Group";
75
+ export {
76
+ b as MenuGroup,
77
+ w as MenuItem,
78
+ x as MenuLabel,
79
+ S as MenuSeparator,
80
+ I as MenuTrigger
81
+ };
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { jsx as b } from "react/jsx-runtime";
3
+ import { useId as d, useRef as a, useCallback as m, useMemo as v } from "react";
4
+ import { MenuContext as M } from "../menu.context.js";
5
+ import { useControllableState as I } from "../../../hooks/use-controllable-state.js";
6
+ function V({
7
+ children: f,
8
+ open: p,
9
+ defaultOpen: i = !1,
10
+ onOpenChange: g,
11
+ side: e = "bottom",
12
+ align: n = "start",
13
+ sideOffset: r = 6,
14
+ closeOnSelect: u = !0
15
+ }) {
16
+ const [o, t] = I({ value: p, defaultValue: i, onChange: g }), l = d(), x = a(null), C = a(null), s = m(() => t(!1), [t]), c = m(() => t(!o), [t, o]), R = v(
17
+ () => ({
18
+ open: o,
19
+ setOpen: t,
20
+ toggle: c,
21
+ close: s,
22
+ triggerRef: x,
23
+ contentRef: C,
24
+ contentId: `${l}-menu`,
25
+ side: e,
26
+ align: n,
27
+ sideOffset: r,
28
+ closeOnSelect: u
29
+ }),
30
+ [o, t, c, s, l, e, n, r, u]
31
+ );
32
+ return /* @__PURE__ */ b(M.Provider, { value: R, children: f });
33
+ }
34
+ export {
35
+ V as MenuRoot
36
+ };
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { MenuRoot as e } from "./components/menu-root.js";
3
+ import { MenuContent as r } from "./components/menu-content.js";
4
+ import { MenuGroup as o, MenuSeparator as t, MenuLabel as n, MenuItem as u, MenuTrigger as m } from "./components/menu-parts.js";
5
+ const i = Object.assign(e, {
6
+ Trigger: m,
7
+ Content: r,
8
+ Item: u,
9
+ Label: n,
10
+ Separator: t,
11
+ Group: o
12
+ });
13
+ export {
14
+ i as Menu
15
+ };
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { createContext as t, useContext as n } from "react";
3
+ const o = t(null);
4
+ function r() {
5
+ const e = n(o);
6
+ if (!e) throw new Error("Menu sub-components must be used within <Menu>");
7
+ return e;
8
+ }
9
+ export {
10
+ o as MenuContext,
11
+ r as useMenu
12
+ };
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ const a = "astralis:fixed astralis:z-higher astralis:min-w-44 astralis:max-w-72 astralis:rounded-xl astralis:border-normal astralis:border-stroke-subtle astralis:bg-surface-panel astralis:shadow-lg astralis:p-1 astralis:outline-none astralis:transition-all astralis:duration-fast", t = (s) => s === "open" ? "astralis:opacity-100 astralis:scale-100" : "astralis:opacity-0 astralis:scale-95", l = "astralis:flex astralis:w-full astralis:cursor-pointer astralis:select-none astralis:items-center astralis:gap-2 astralis:rounded-lg astralis:px-2.5 astralis:py-1.5 astralis:text-sm astralis:text-label-base astralis:outline-none astralis:transition-colors astralis:focus:bg-surface-subtle astralis:aria-disabled:opacity-moderate astralis:aria-disabled:pointer-events-none", r = "astralis:text-label-error astralis:focus:bg-surface-error", e = "astralis:px-2.5 astralis:py-1.5 astralis:text-xs astralis:font-medium astralis:text-label-subtle", i = "astralis:my-1 astralis:h-px astralis:bg-stroke-subtle", n = "astralis:h-4 astralis:w-4 astralis:shrink-0 astralis:text-label-muted", o = "astralis:ml-auto astralis:pl-4 astralis:text-xs astralis:text-label-subtle";
3
+ export {
4
+ a as menuContentClasses,
5
+ n as menuIconSlotClasses,
6
+ l as menuItemClasses,
7
+ r as menuItemDangerClasses,
8
+ e as menuLabelClasses,
9
+ t as menuMotionClasses,
10
+ i as menuSeparatorClasses,
11
+ o as menuShortcutClasses
12
+ };