@jonmilner/ui 0.0.0-stage → 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 (214) hide show
  1. package/THIRD_PARTY_NOTICES.md +51 -0
  2. package/dist/AlertDialog/index.d.mts +21 -0
  3. package/dist/AlertDialog/index.mjs +29 -0
  4. package/dist/Badge/Badge.css +2 -0
  5. package/dist/Badge/Badge.css.mjs +24 -0
  6. package/dist/Badge/index.d.mts +11 -0
  7. package/dist/Badge/index.mjs +54 -0
  8. package/dist/Box/Box.css +2 -0
  9. package/dist/Box/Box.css.mjs +8 -0
  10. package/dist/Box/index.d.mts +10 -0
  11. package/dist/Box/index.mjs +15 -0
  12. package/dist/Button/Button.css +2 -0
  13. package/dist/Button/Button.css.mjs +25 -0
  14. package/dist/Button/index.d.mts +20 -0
  15. package/dist/Button/index.mjs +97 -0
  16. package/dist/Checkbox/Checkbox.css +2 -0
  17. package/dist/Checkbox/Checkbox.css.mjs +8 -0
  18. package/dist/Checkbox/index.d.mts +6 -0
  19. package/dist/Checkbox/index.mjs +45 -0
  20. package/dist/Chip/Chip.css +2 -0
  21. package/dist/Chip/Chip.css.mjs +17 -0
  22. package/dist/Chip/index.d.mts +13 -0
  23. package/dist/Chip/index.mjs +73 -0
  24. package/dist/Clickable/Clickable.css +2 -0
  25. package/dist/Clickable/Clickable.css.mjs +8 -0
  26. package/dist/Clickable/index.d.mts +13 -0
  27. package/dist/Clickable/index.mjs +28 -0
  28. package/dist/Dialog/Dialog.css +2 -0
  29. package/dist/Dialog/Dialog.css.d.mts +3 -0
  30. package/dist/Dialog/Dialog.css.mjs +12 -0
  31. package/dist/Dialog/client.d.mts +12 -0
  32. package/dist/Dialog/client.mjs +31 -0
  33. package/dist/Dialog/index.d.mts +30 -0
  34. package/dist/Dialog/index.mjs +85 -0
  35. package/dist/Field/Field.css +2 -0
  36. package/dist/Field/Field.css.mjs +8 -0
  37. package/dist/Field/client.mjs +26 -0
  38. package/dist/Field/index.d.mts +20 -0
  39. package/dist/Field/index.mjs +88 -0
  40. package/dist/Heading/Heading.css +2 -0
  41. package/dist/Heading/Heading.css.mjs +8 -0
  42. package/dist/Heading/index.d.mts +9 -0
  43. package/dist/Heading/index.mjs +27 -0
  44. package/dist/Icon/Icon.css +2 -0
  45. package/dist/Icon/Icon.css.mjs +17 -0
  46. package/dist/Icon/index.d.mts +12 -0
  47. package/dist/Icon/index.mjs +24 -0
  48. package/dist/IconButton/IconButton.css +2 -0
  49. package/dist/IconButton/IconButton.css.mjs +24 -0
  50. package/dist/IconButton/index.d.mts +17 -0
  51. package/dist/IconButton/index.mjs +25 -0
  52. package/dist/Inline/Inline.css +2 -0
  53. package/dist/Inline/Inline.css.mjs +8 -0
  54. package/dist/Inline/index.d.mts +15 -0
  55. package/dist/Inline/index.mjs +17 -0
  56. package/dist/Menu/Menu.css +2 -0
  57. package/dist/Menu/Menu.css.mjs +8 -0
  58. package/dist/Menu/client.d.mts +9 -0
  59. package/dist/Menu/client.mjs +27 -0
  60. package/dist/Menu/index.d.mts +34 -0
  61. package/dist/Menu/index.mjs +107 -0
  62. package/dist/MultiSelect/MultiSelect.css +2 -0
  63. package/dist/MultiSelect/MultiSelect.css.mjs +8 -0
  64. package/dist/MultiSelect/client.d.mts +8 -0
  65. package/dist/MultiSelect/client.mjs +93 -0
  66. package/dist/MultiSelect/index.d.mts +23 -0
  67. package/dist/MultiSelect/index.mjs +75 -0
  68. package/dist/SearchField/SearchField.css +2 -0
  69. package/dist/SearchField/SearchField.css.mjs +27 -0
  70. package/dist/SearchField/client.mjs +71 -0
  71. package/dist/SearchField/index.d.mts +22 -0
  72. package/dist/SearchField/index.mjs +35 -0
  73. package/dist/Stack/Stack.css +2 -0
  74. package/dist/Stack/Stack.css.mjs +8 -0
  75. package/dist/Stack/index.d.mts +15 -0
  76. package/dist/Stack/index.mjs +15 -0
  77. package/dist/Tabs/Tabs.css +2 -0
  78. package/dist/Tabs/Tabs.css.mjs +8 -0
  79. package/dist/Tabs/index.d.mts +20 -0
  80. package/dist/Tabs/index.mjs +88 -0
  81. package/dist/Tag/Tag.css +2 -0
  82. package/dist/Tag/Tag.css.mjs +17 -0
  83. package/dist/Tag/index.d.mts +13 -0
  84. package/dist/Tag/index.mjs +82 -0
  85. package/dist/Text/Text.css +2 -0
  86. package/dist/Text/Text.css.mjs +32 -0
  87. package/dist/Text/index.d.mts +18 -0
  88. package/dist/Text/index.mjs +25 -0
  89. package/dist/Toast/Toast.css +2 -0
  90. package/dist/Toast/Toast.css.mjs +18 -0
  91. package/dist/Toast/client.d.mts +46 -0
  92. package/dist/Toast/client.mjs +219 -0
  93. package/dist/Toast/index.d.mts +7 -0
  94. package/dist/Toast/index.mjs +5 -0
  95. package/dist/base.css +6 -0
  96. package/dist/brands/brand.d.mts +9 -0
  97. package/dist/brands/brand.mjs +4 -0
  98. package/dist/brands/check-fonts.mjs +15 -0
  99. package/dist/brands/default.d.mts +4 -0
  100. package/dist/brands/default.mjs +74 -0
  101. package/dist/brands/font.d.mts +17 -0
  102. package/dist/brands/font.mjs +35 -0
  103. package/dist/brands/forced-colors.mjs +18 -0
  104. package/dist/brands/index.d.mts +8 -0
  105. package/dist/brands/index.mjs +5 -0
  106. package/dist/brands/metrics.mjs +40 -0
  107. package/dist/contrast/color.d.mts +3 -0
  108. package/dist/contrast/color.mjs +222 -0
  109. package/dist/contrast/contrast.d.mts +18 -0
  110. package/dist/contrast/contrast.mjs +52 -0
  111. package/dist/contrast/mixes.mjs +33 -0
  112. package/dist/docs/AlertDialog.md +113 -0
  113. package/dist/docs/Badge.md +76 -0
  114. package/dist/docs/Box.md +74 -0
  115. package/dist/docs/Button.md +98 -0
  116. package/dist/docs/Checkbox.md +107 -0
  117. package/dist/docs/Chip.md +92 -0
  118. package/dist/docs/Clickable.md +82 -0
  119. package/dist/docs/Dialog.md +166 -0
  120. package/dist/docs/Field.md +143 -0
  121. package/dist/docs/Heading.md +69 -0
  122. package/dist/docs/Icon.md +116 -0
  123. package/dist/docs/IconButton.md +83 -0
  124. package/dist/docs/Inline.md +79 -0
  125. package/dist/docs/Menu.md +181 -0
  126. package/dist/docs/MultiSelect.md +120 -0
  127. package/dist/docs/SearchField.md +106 -0
  128. package/dist/docs/Stack.md +79 -0
  129. package/dist/docs/Tabs.md +130 -0
  130. package/dist/docs/Tag.md +97 -0
  131. package/dist/docs/Text.md +90 -0
  132. package/dist/docs/Toast.md +115 -0
  133. package/dist/docs/llms.txt +33 -0
  134. package/dist/docs/manifest.json +2632 -0
  135. package/dist/docs/manifest.schema.json +96 -0
  136. package/dist/docs/migrations/README.md +27 -0
  137. package/dist/docs/theming.md +59 -0
  138. package/dist/icons/ArrowLeftIcon.d.mts +4 -0
  139. package/dist/icons/ArrowLeftIcon.mjs +11 -0
  140. package/dist/icons/ArrowRightIcon.d.mts +4 -0
  141. package/dist/icons/ArrowRightIcon.mjs +11 -0
  142. package/dist/icons/CheckIcon.d.mts +4 -0
  143. package/dist/icons/CheckIcon.mjs +11 -0
  144. package/dist/icons/ChevronDownIcon.d.mts +4 -0
  145. package/dist/icons/ChevronDownIcon.mjs +11 -0
  146. package/dist/icons/ChevronRightIcon.d.mts +4 -0
  147. package/dist/icons/ChevronRightIcon.mjs +11 -0
  148. package/dist/icons/CircleAlertIcon.d.mts +4 -0
  149. package/dist/icons/CircleAlertIcon.mjs +15 -0
  150. package/dist/icons/CircleCheckIcon.d.mts +4 -0
  151. package/dist/icons/CircleCheckIcon.mjs +15 -0
  152. package/dist/icons/CircleDotIcon.d.mts +4 -0
  153. package/dist/icons/CircleDotIcon.mjs +19 -0
  154. package/dist/icons/CircleSlashIcon.d.mts +4 -0
  155. package/dist/icons/CircleSlashIcon.mjs +15 -0
  156. package/dist/icons/GitMergeIcon.d.mts +4 -0
  157. package/dist/icons/GitMergeIcon.mjs +23 -0
  158. package/dist/icons/GitPullRequestClosedIcon.d.mts +4 -0
  159. package/dist/icons/GitPullRequestClosedIcon.mjs +23 -0
  160. package/dist/icons/GitPullRequestDraftIcon.d.mts +4 -0
  161. package/dist/icons/GitPullRequestDraftIcon.mjs +23 -0
  162. package/dist/icons/GitPullRequestIcon.d.mts +4 -0
  163. package/dist/icons/GitPullRequestIcon.mjs +23 -0
  164. package/dist/icons/InboxIcon.d.mts +4 -0
  165. package/dist/icons/InboxIcon.mjs +11 -0
  166. package/dist/icons/InfoIcon.d.mts +4 -0
  167. package/dist/icons/InfoIcon.mjs +15 -0
  168. package/dist/icons/LoaderCircleIcon.d.mts +4 -0
  169. package/dist/icons/LoaderCircleIcon.mjs +11 -0
  170. package/dist/icons/RefreshCwIcon.d.mts +4 -0
  171. package/dist/icons/RefreshCwIcon.mjs +15 -0
  172. package/dist/icons/SearchIcon.d.mts +4 -0
  173. package/dist/icons/SearchIcon.mjs +15 -0
  174. package/dist/icons/SettingsIcon.d.mts +4 -0
  175. package/dist/icons/SettingsIcon.mjs +15 -0
  176. package/dist/icons/XIcon.d.mts +4 -0
  177. package/dist/icons/XIcon.mjs +11 -0
  178. package/dist/icons/index.d.mts +25 -0
  179. package/dist/icons/index.mjs +45 -0
  180. package/dist/index.d.mts +27 -0
  181. package/dist/index.mjs +25 -0
  182. package/dist/popup/client.d.mts +9 -0
  183. package/dist/popup/client.mjs +31 -0
  184. package/dist/styles/atoms.css +2 -0
  185. package/dist/styles/atoms.css.d.mts +219 -0
  186. package/dist/styles/atoms.css.mjs +2579 -0
  187. package/dist/styles/button-fills.mjs +17 -0
  188. package/dist/styles/highlight.mjs +8 -0
  189. package/dist/styles/hover-tint.mjs +4 -0
  190. package/dist/styles/join.mjs +4 -0
  191. package/dist/styles/layers.css +2 -0
  192. package/dist/styles/part-props.d.mts +8 -0
  193. package/dist/styles/split-style-props.mjs +9 -0
  194. package/dist/testing/index.d.mts +4 -0
  195. package/dist/testing/index.mjs +3 -0
  196. package/dist/testing/motion.d.mts +22 -0
  197. package/dist/testing/motion.mjs +49 -0
  198. package/dist/theme/FontCheck.mjs +11 -0
  199. package/dist/theme/ThemeProvider.d.mts +15 -0
  200. package/dist/theme/ThemeProvider.mjs +23 -0
  201. package/dist/theme/define-theme.d.mts +9 -0
  202. package/dist/theme/define-theme.mjs +84 -0
  203. package/dist/theme/use-theme-container.mjs +15 -0
  204. package/dist/tokens/contract.d.mts +105 -0
  205. package/dist/tokens/contract.mjs +17 -0
  206. package/dist/tokens/index.d.mts +2 -0
  207. package/dist/tokens/index.mjs +1 -0
  208. package/dist/tokens/roles.d.mts +6 -0
  209. package/dist/tokens/roles.mjs +24 -0
  210. package/dist/tokens/scales.d.mts +95 -0
  211. package/dist/tokens/scales.mjs +98 -0
  212. package/dist/types.d.mts +3 -0
  213. package/package.json +159 -3
  214. package/README.md +0 -3
@@ -0,0 +1,34 @@
1
+ import { StyleProps } from "../Box/index.mjs";
2
+ import { MenuTrigger, MenuTriggerProps } from "./client.mjs";
3
+ import { CSSProperties, ReactNode } from "react";
4
+ import { Menu as Menu$1 } from "@base-ui/react/menu";
5
+ //#region src/Menu/index.d.ts
6
+ type PartProps<P> = StyleProps & Omit<P, "render" | "className" | "style" | keyof StyleProps> & {
7
+ className?: string;
8
+ style?: CSSProperties;
9
+ };
10
+ export type MenuProps = Pick<Menu$1.Root.Props, "open" | "defaultOpen" | "onOpenChange" | "modal" | "disabled" | "loopFocus"> & {
11
+ children?: ReactNode;
12
+ };
13
+ export type MenuPopupProps = PartProps<Menu$1.Popup.Props> & Pick<Menu$1.Positioner.Props, "side" | "align">;
14
+ export type MenuItemProps = PartProps<Menu$1.Item.Props> & {
15
+ variant?: "neutral" | "danger";
16
+ };
17
+ export type MenuSeparatorProps = PartProps<Menu$1.Separator.Props>;
18
+ export type MenuGroupProps = PartProps<Menu$1.Group.Props> & {
19
+ label: ReactNode;
20
+ };
21
+ declare function MenuRoot({ children, ...props }: MenuProps): import("react").JSX.Element;
22
+ declare function MenuPopup({ side, align, backgroundColor, borderRadius, boxShadow, padding, className, style, ...props }: MenuPopupProps): import("react").JSX.Element;
23
+ declare function MenuItem({ variant, display, alignItems, gap, minBlockSize, paddingInline, borderRadius, color, className, style, children, ...props }: MenuItemProps): import("react").JSX.Element;
24
+ declare function MenuSeparator({ marginBlock, marginInline, className, style, ...props }: MenuSeparatorProps): import("react").JSX.Element;
25
+ declare function MenuGroup({ label, className, style, children, ...props }: MenuGroupProps): import("react").JSX.Element;
26
+ export declare const Menu: typeof MenuRoot & {
27
+ Trigger: typeof MenuTrigger;
28
+ Popup: typeof MenuPopup;
29
+ Item: typeof MenuItem;
30
+ Separator: typeof MenuSeparator;
31
+ Group: typeof MenuGroup;
32
+ };
33
+ //#endregion
34
+ export type { MenuTriggerProps };
@@ -0,0 +1,107 @@
1
+ import { join as e } from "../styles/join.mjs";
2
+ import { splitStyleProps as t } from "../styles/split-style-props.mjs";
3
+ import { Box as n } from "../Box/index.mjs";
4
+ import { Text as r } from "../Text/index.mjs";
5
+ import { PopupScope as i } from "../popup/client.mjs";
6
+ import { MenuPortal as a, MenuTrigger as o } from "./client.mjs";
7
+ import { item as s, popup as c, separator as l } from "./Menu.css.mjs";
8
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
9
+ import { Children as f } from "react";
10
+ import { Menu as p } from "@base-ui/react/menu";
11
+ //#region src/Menu/index.tsx
12
+ function m({ children: e, ...t }) {
13
+ return /* @__PURE__ */ u(i, { children: /* @__PURE__ */ u(p.Root, {
14
+ ...t,
15
+ children: e
16
+ }) });
17
+ }
18
+ function h({ side: r = "bottom", align: i = "start", backgroundColor: o = "bgRaised", borderRadius: s = "med", boxShadow: l = "med", padding: d = "4", className: f, style: m, ...h }) {
19
+ let [g, _] = t(h);
20
+ return /* @__PURE__ */ u(a, { children: /* @__PURE__ */ u(p.Positioner, {
21
+ align: i,
22
+ collisionPadding: 8,
23
+ render: /* @__PURE__ */ u(n, { zIndex: "popover" }),
24
+ side: r,
25
+ sideOffset: 4,
26
+ children: /* @__PURE__ */ u(p.Popup, {
27
+ ..._,
28
+ render: /* @__PURE__ */ u(n, {
29
+ backgroundColor: o,
30
+ borderRadius: s,
31
+ boxShadow: l,
32
+ padding: d,
33
+ ...g,
34
+ className: e(c, f),
35
+ style: m
36
+ })
37
+ })
38
+ }) });
39
+ }
40
+ function g({ variant: i = "neutral", display: a = "flex", alignItems: o = "center", gap: c = "8", minBlockSize: l = "sm", paddingInline: d = "12", borderRadius: m = "sm", color: h = i === "danger" ? "danger" : "fg", className: g, style: _, children: v, ...y }) {
41
+ let [b, x] = t(y);
42
+ return /* @__PURE__ */ u(p.Item, {
43
+ ...x,
44
+ render: /* @__PURE__ */ u(n, {
45
+ display: a,
46
+ alignItems: o,
47
+ gap: c,
48
+ minBlockSize: l,
49
+ paddingInline: d,
50
+ borderRadius: m,
51
+ color: h,
52
+ ...b,
53
+ className: e(s, g),
54
+ style: _
55
+ }),
56
+ children: f.map(v, (e) => typeof e == "string" || typeof e == "number" ? /* @__PURE__ */ u(r, {
57
+ as: "span",
58
+ font: "label",
59
+ size: "sm",
60
+ children: e
61
+ }) : e)
62
+ });
63
+ }
64
+ function _({ marginBlock: r = "4", marginInline: i = "8", className: a, style: o, ...s }) {
65
+ let [c, d] = t(s);
66
+ return /* @__PURE__ */ u(p.Separator, {
67
+ ...d,
68
+ render: /* @__PURE__ */ u(n, {
69
+ marginBlock: r,
70
+ marginInline: i,
71
+ ...c,
72
+ className: e(l, a),
73
+ style: o
74
+ })
75
+ });
76
+ }
77
+ function v({ label: e, className: i, style: a, children: o, ...s }) {
78
+ let [c, l] = t(s);
79
+ return /* @__PURE__ */ d(p.Group, {
80
+ ...l,
81
+ render: /* @__PURE__ */ u(n, {
82
+ ...c,
83
+ className: i,
84
+ style: a
85
+ }),
86
+ children: [/* @__PURE__ */ u(p.GroupLabel, {
87
+ render: /* @__PURE__ */ u(r, {
88
+ as: "div",
89
+ color: "fgMuted",
90
+ font: "label",
91
+ paddingBlock: "8",
92
+ paddingInline: "12",
93
+ size: "xs"
94
+ }),
95
+ children: e
96
+ }), o]
97
+ });
98
+ }
99
+ var y = Object.assign(m, {
100
+ Trigger: o,
101
+ Popup: h,
102
+ Item: g,
103
+ Separator: _,
104
+ Group: v
105
+ });
106
+ //#endregion
107
+ export { y as Menu };
@@ -0,0 +1,2 @@
1
+ @layer tokens, reset, atoms, components.box, components.checkbox, components.clickable, components.icon, components.icon-button, components.inline, components.stack, components.text, components.badge, components.button, components.chip, components.field, components.heading, components.dialog, components.alert-dialog, components.menu, components.multiselect, components.search-field, components.tabs, components.tag, components.toast;
2
+ @layer components.multiselect{._1seauxl0{text-align:start;justify-content:stretch}._1seauxl0>span{flex:auto;justify-items:stretch;min-inline-size:0}._1seauxl0>span>span{min-inline-size:0}._1seauxl0>span>span>span:first-child{flex:auto;min-inline-size:0}._1seauxl1{min-inline-size:0;display:block}._1seauxl1[data-placeholder]{color:var(--color-fg-muted)}._1seauxl2{min-inline-size:0;display:grid}._1seauxl3{text-overflow:ellipsis;white-space:nowrap;grid-area:1/1;overflow:hidden}._1seauxl3[aria-hidden=true]{visibility:hidden}._1seauxl4{text-overflow:ellipsis;white-space:nowrap;grid-area:1/1;overflow:hidden}._1seauxl5{border:var(--space-1) solid var(--color-border);min-inline-size:var(--anchor-width);max-block-size:var(--available-height);transform-origin:var(--transform-origin);transition:opacity var(--duration-fast) var(--easing-standard), scale var(--duration-fast) var(--easing-enter);overflow-y:auto}._1seauxl5:focus-visible{outline:var(--space-2) solid var(--color-focus);outline-offset:var(--space-2)}._1seauxl5[data-starting-style],._1seauxl5[data-ending-style]{opacity:0;scale:calc(1 - var(--scale-med))}._1seauxl6{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}._1seauxl6:focus-visible{outline:var(--space-2) solid var(--color-focus);outline-offset:var(--space-2)}._1seauxl6[data-highlighted]{background-color:light-dark(var(--color-bg-muted),color-mix(in srgb, var(--color-fg) 10%, var(--color-bg-raised)))}._1seauxl6[aria-disabled=true]{color:var(--color-fg-muted);cursor:not-allowed}._1seauxl7{visibility:hidden;flex-shrink:0}._1seauxl6[aria-selected=true] ._1seauxl7{visibility:visible}@media (forced-colors:active){._1seauxl6[data-highlighted]{forced-color-adjust:none;color:highlighttext;background-color:highlight}._1seauxl6[aria-disabled=true]{color:graytext}}}
@@ -0,0 +1,8 @@
1
+ import "../styles/layers.css";
2
+ import "./MultiSelect.css";
3
+ /* empty css */
4
+ /* empty css */
5
+ //#region src/MultiSelect/MultiSelect.css.ts
6
+ var e = "_1seauxl0", t = "_1seauxl1", n = "_1seauxl2", r = "_1seauxl3", i = "_1seauxl4", a = "_1seauxl5", o = "_1seauxl6", s = "_1seauxl7";
7
+ //#endregion
8
+ export { s as check, i as count, o as item, r as labels, a as popup, n as summary, e as trigger, t as value };
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from "react";
2
+ //#region src/MultiSelect/client.d.ts
3
+ export type Option = {
4
+ disabled?: boolean;
5
+ label: string;
6
+ value: string;
7
+ };
8
+ //#endregion
@@ -0,0 +1,93 @@
1
+ "use client";
2
+ import { Box as e } from "../Box/index.mjs";
3
+ import { PopupScope as t, triggerElement as n, usePopupScope as r } from "../popup/client.mjs";
4
+ import { Field as i } from "../Field/index.mjs";
5
+ import { ChevronDownIcon as a } from "../icons/ChevronDownIcon.mjs";
6
+ import { labels as o, popup as s, summary as c, trigger as l, value as u } from "./MultiSelect.css.mjs";
7
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
8
+ import { createContext as p, use as m, useId as h, useLayoutEffect as g, useMemo as _, useRef as v, useState as y } from "react";
9
+ import { Select as b } from "@base-ui/react/select";
10
+ //#region src/MultiSelect/client.tsx
11
+ function x({ options: e, placeholder: t, countLabel: i, disabled: o }) {
12
+ let { ref: s } = r(), c = _(() => new Map(e.map((e) => [e.value, e.label])), [e]);
13
+ return /* @__PURE__ */ d(b.Trigger, {
14
+ disabled: o,
15
+ ref: s,
16
+ render: n({
17
+ variant: "secondary",
18
+ iconEnd: a,
19
+ className: l,
20
+ children: /* @__PURE__ */ d(b.Value, {
21
+ className: u,
22
+ placeholder: t,
23
+ children: (e) => e.length > 0 ? /* @__PURE__ */ d(S, {
24
+ count: i.replaceAll("{count}", String(e.length)),
25
+ labels: e.map((e) => c.get(e) ?? e)
26
+ }) : t
27
+ })
28
+ })
29
+ });
30
+ }
31
+ function S({ labels: t, count: n }) {
32
+ let r = v(null), [i, a] = y(!0), s = t.join(", ");
33
+ g(() => {
34
+ let e = r.current;
35
+ if (!e) return;
36
+ let t = () => a(e.scrollWidth <= e.clientWidth);
37
+ t(), document.fonts?.ready.then(t);
38
+ let n = new ResizeObserver(t);
39
+ return n.observe(e), () => n.disconnect();
40
+ }, [s]);
41
+ let l = !i && t.length > 1;
42
+ return /* @__PURE__ */ f(e, {
43
+ as: "span",
44
+ className: c,
45
+ children: [/* @__PURE__ */ d(e, {
46
+ "aria-hidden": l || void 0,
47
+ as: "span",
48
+ className: o,
49
+ ref: r,
50
+ children: s
51
+ }), l && /* @__PURE__ */ d(e, {
52
+ as: "span",
53
+ className: "_1seauxl4",
54
+ children: n
55
+ })]
56
+ });
57
+ }
58
+ var C = p(void 0);
59
+ function w({ children: e }) {
60
+ return /* @__PURE__ */ d(t, { children: /* @__PURE__ */ d(C, {
61
+ value: h(),
62
+ children: e
63
+ }) });
64
+ }
65
+ function T({ children: e }) {
66
+ return /* @__PURE__ */ d(i.Label, {
67
+ id: m(C),
68
+ nativeLabel: !1,
69
+ children: e
70
+ });
71
+ }
72
+ function E({ children: t }) {
73
+ return /* @__PURE__ */ d(b.Popup, {
74
+ "aria-labelledby": m(C),
75
+ render: /* @__PURE__ */ d(e, {
76
+ backgroundColor: "bgRaised",
77
+ borderRadius: "med",
78
+ boxShadow: "med",
79
+ className: s,
80
+ padding: "4"
81
+ }),
82
+ children: t
83
+ });
84
+ }
85
+ function D({ children: e }) {
86
+ let { container: t } = r();
87
+ return /* @__PURE__ */ d(b.Portal, {
88
+ container: t,
89
+ children: e
90
+ });
91
+ }
92
+ //#endregion
93
+ export { T as MultiSelectLabel, E as MultiSelectPopup, D as MultiSelectPortal, w as MultiSelectScope, x as MultiSelectTrigger };
@@ -0,0 +1,23 @@
1
+ import { StyleProps } from "../Box/index.mjs";
2
+ import { Option } from "./client.mjs";
3
+ import { CSSProperties, ReactNode } from "react";
4
+ //#region src/MultiSelect/index.d.ts
5
+ export type MultiSelectOption = Option;
6
+ export type MultiSelectProps = StyleProps & {
7
+ className?: string;
8
+ countLabel?: string;
9
+ defaultValue?: readonly string[];
10
+ description?: ReactNode;
11
+ disabled?: boolean;
12
+ error?: ReactNode;
13
+ label: ReactNode;
14
+ name?: string;
15
+ onValueChange?: (value: string[]) => void;
16
+ options: readonly MultiSelectOption[];
17
+ placeholder?: string;
18
+ required?: boolean;
19
+ style?: CSSProperties;
20
+ value?: readonly string[];
21
+ };
22
+ export declare function MultiSelect({ options, value, defaultValue, onValueChange, label, description, error, placeholder, countLabel, disabled, required, name, className, style, ...atoms }: MultiSelectProps): import("react").JSX.Element;
23
+ //#endregion
@@ -0,0 +1,75 @@
1
+ import { Box as e } from "../Box/index.mjs";
2
+ import { Text as t } from "../Text/index.mjs";
3
+ import { CheckIcon as n } from "../icons/CheckIcon.mjs";
4
+ import { Field as r } from "../Field/index.mjs";
5
+ import { check as i, item as a } from "./MultiSelect.css.mjs";
6
+ import { MultiSelectLabel as o, MultiSelectPopup as s, MultiSelectPortal as c, MultiSelectScope as l, MultiSelectTrigger as u } from "./client.mjs";
7
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
8
+ import { Select as p } from "@base-ui/react/select";
9
+ //#region src/MultiSelect/index.tsx
10
+ function m({ options: m, value: h, defaultValue: g, onValueChange: _, label: v, description: y, error: b, placeholder: x = "Select", countLabel: S = "{count} selected", disabled: C = !1, required: w = !1, name: T, className: E, style: D, ...O }) {
11
+ return /* @__PURE__ */ f(r, {
12
+ ...O,
13
+ className: E,
14
+ disabled: C,
15
+ invalid: b != null && b !== !1 && b !== "",
16
+ style: D,
17
+ children: [
18
+ /* @__PURE__ */ d(l, { children: /* @__PURE__ */ f(p.Root, {
19
+ defaultValue: g,
20
+ disabled: C,
21
+ multiple: !0,
22
+ name: T,
23
+ onValueChange: _,
24
+ required: w,
25
+ value: h,
26
+ children: [
27
+ /* @__PURE__ */ d(o, { children: v }),
28
+ /* @__PURE__ */ d(u, {
29
+ countLabel: S,
30
+ disabled: C,
31
+ options: m,
32
+ placeholder: x
33
+ }),
34
+ /* @__PURE__ */ d(c, { children: /* @__PURE__ */ d(p.Positioner, {
35
+ align: "start",
36
+ alignItemWithTrigger: !1,
37
+ collisionPadding: 8,
38
+ render: /* @__PURE__ */ d(e, { zIndex: "popover" }),
39
+ side: "bottom",
40
+ sideOffset: 4,
41
+ children: /* @__PURE__ */ d(s, { children: m.map((r) => /* @__PURE__ */ f(p.Item, {
42
+ disabled: r.disabled,
43
+ label: r.label,
44
+ render: /* @__PURE__ */ d(e, {
45
+ alignItems: "center",
46
+ borderRadius: "sm",
47
+ className: a,
48
+ display: "flex",
49
+ gap: "8",
50
+ minBlockSize: "sm",
51
+ paddingInline: "12"
52
+ }),
53
+ value: r.value,
54
+ children: [/* @__PURE__ */ d(n, {
55
+ className: i,
56
+ size: "sm"
57
+ }), /* @__PURE__ */ d(p.ItemText, {
58
+ render: /* @__PURE__ */ d(t, {
59
+ as: "span",
60
+ font: "label",
61
+ size: "sm"
62
+ }),
63
+ children: r.label
64
+ })]
65
+ }, r.value)) })
66
+ }) })
67
+ ]
68
+ }) }),
69
+ y != null && /* @__PURE__ */ d(r.Description, { children: y }),
70
+ /* @__PURE__ */ d(r.Error, { children: b })
71
+ ]
72
+ });
73
+ }
74
+ //#endregion
75
+ export { m as MultiSelect };
@@ -0,0 +1,2 @@
1
+ @layer tokens, reset, atoms, components.box, components.checkbox, components.clickable, components.icon, components.icon-button, components.inline, components.stack, components.text, components.badge, components.button, components.chip, components.field, components.heading, components.dialog, components.alert-dialog, components.menu, components.multiselect, components.search-field, components.tabs, components.tag, components.toast;
2
+ @layer components.search-field{._1cj8r6g0{clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:0;padding:0;position:absolute;overflow:hidden}._1cj8r6g1{border-width:var(--space-1);border-style:solid;border-color:var(--color-border-strong);border-radius:var(--radius-med);background-color:var(--color-bg);inline-size:100%;min-inline-size:0;color:var(--color-fg);appearance:none;grid-area:1/1;padding-block:0}._1cj8r6g1::placeholder{color:var(--color-fg-muted);opacity:1}._1cj8r6g1::-webkit-search-cancel-button{appearance:none}._1cj8r6g1::-webkit-search-decoration{appearance:none}._1cj8r6g1:focus-visible{outline:var(--space-2) solid var(--color-focus);outline-offset:var(--space-2)}._1cj8r6g1:disabled{background-color:var(--color-bg-muted);color:var(--color-fg-muted);cursor:not-allowed;border-style:dashed}._1cj8r6g1[aria-invalid=true]{border-color:var(--color-danger)}._1cj8r6g2{block-size:var(--size-sm);padding-inline-start:calc(var(--space-8) + var(--space-8) + var(--font-size-sm));padding-inline-end:var(--size-sm)}._1cj8r6g3{block-size:var(--size-med);padding-inline-start:calc(var(--space-12) + var(--space-8) + var(--font-size-med));padding-inline-end:var(--size-med)}._1cj8r6g4{block-size:var(--size-lg);padding-inline-start:calc(var(--space-16) + var(--space-8) + var(--font-size-lg));padding-inline-end:var(--size-lg)}._1cj8r6g5{pointer-events:none;color:var(--color-fg-muted);grid-area:1/1;justify-self:start}._1cj8r6g6{margin-inline-start:var(--space-8)}._1cj8r6g7{margin-inline-start:var(--space-12)}._1cj8r6g8{margin-inline-start:var(--space-16)}._1cj8r6g9{border-color:#0000;grid-area:1/1;justify-self:end;margin-inline-end:var(--space-4)}@media (forced-colors:active){._1cj8r6g1:disabled{color:graytext;border-color:graytext}}}
@@ -0,0 +1,27 @@
1
+ import "../styles/layers.css";
2
+ import "./SearchField.css";
3
+ /* empty css */
4
+ /* empty css */
5
+ import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
6
+ //#region src/SearchField/SearchField.css.ts
7
+ var t = "_1cj8r6g0", n = e({
8
+ defaultClassName: "_1cj8r6g1",
9
+ variantClassNames: { size: {
10
+ sm: "_1cj8r6g2",
11
+ med: "_1cj8r6g3",
12
+ lg: "_1cj8r6g4"
13
+ } },
14
+ defaultVariants: {},
15
+ compoundVariants: []
16
+ }), r = e({
17
+ defaultClassName: "_1cj8r6g5",
18
+ variantClassNames: { size: {
19
+ sm: "_1cj8r6g6",
20
+ med: "_1cj8r6g7",
21
+ lg: "_1cj8r6g8"
22
+ } },
23
+ defaultVariants: {},
24
+ compoundVariants: []
25
+ }), i = "_1cj8r6g9";
26
+ //#endregion
27
+ export { i as clear, t as hiddenLabel, r as icon, n as input };
@@ -0,0 +1,71 @@
1
+ "use client";
2
+ import { Box as e } from "../Box/index.mjs";
3
+ import { Text as t } from "../Text/index.mjs";
4
+ import { IconButton as n } from "../IconButton/index.mjs";
5
+ import { SearchIcon as r } from "../icons/SearchIcon.mjs";
6
+ import { XIcon as i } from "../icons/XIcon.mjs";
7
+ import { icon as a, input as o } from "./SearchField.css.mjs";
8
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
9
+ import { useRef as l, useState as u } from "react";
10
+ import { Input as d } from "@base-ui/react/input";
11
+ //#region src/SearchField/client.tsx
12
+ var f = {
13
+ sm: {
14
+ size: "sm",
15
+ square: "xs"
16
+ },
17
+ med: {
18
+ size: "sm",
19
+ square: "sm"
20
+ },
21
+ lg: {
22
+ size: "med",
23
+ square: "med"
24
+ }
25
+ };
26
+ function p({ value: p, defaultValue: m, onValueChange: h, placeholder: g, size: _, disabled: v, required: y, name: b, clearLabel: x }) {
27
+ let S = l(null), [C, w] = u(m), T = p ?? C, E = (e) => {
28
+ p === void 0 && w(e), h?.(e);
29
+ }, D = T !== "" && (p === void 0 || h !== void 0), O = (e) => {
30
+ let t = e.nativeEvent.isComposing || e.keyCode === 229;
31
+ e.key === "Escape" && D && !t && (e.preventDefault(), e.stopPropagation(), E(""));
32
+ }, k = f[_];
33
+ return /* @__PURE__ */ c(e, {
34
+ alignItems: "center",
35
+ display: "grid",
36
+ children: [
37
+ /* @__PURE__ */ s(d, {
38
+ name: b,
39
+ onKeyDown: O,
40
+ onValueChange: E,
41
+ placeholder: g,
42
+ ref: S,
43
+ render: /* @__PURE__ */ s(t, {
44
+ as: "input",
45
+ className: o({ size: _ }),
46
+ size: _
47
+ }),
48
+ required: y,
49
+ type: "search",
50
+ value: T
51
+ }),
52
+ /* @__PURE__ */ s(r, {
53
+ className: a({ size: _ }),
54
+ size: _
55
+ }),
56
+ T !== "" && !v && /* @__PURE__ */ s(n, {
57
+ className: "_1cj8r6g9",
58
+ icon: i,
59
+ label: x,
60
+ minBlockSize: k.square,
61
+ minInlineSize: k.square,
62
+ onClick: () => {
63
+ E(""), S.current?.focus();
64
+ },
65
+ size: k.size
66
+ })
67
+ ]
68
+ });
69
+ }
70
+ //#endregion
71
+ export { p as SearchFieldControl };
@@ -0,0 +1,22 @@
1
+ import { StyleProps } from "../Box/index.mjs";
2
+ import { CSSProperties, ReactNode } from "react";
3
+ //#region src/SearchField/index.d.ts
4
+ export type SearchFieldProps = StyleProps & {
5
+ className?: string;
6
+ clearLabel?: string;
7
+ defaultValue?: string;
8
+ description?: ReactNode;
9
+ disabled?: boolean;
10
+ error?: ReactNode;
11
+ hideLabel?: boolean;
12
+ label: ReactNode;
13
+ name?: string;
14
+ onValueChange?: (value: string) => void;
15
+ placeholder?: string;
16
+ required?: boolean;
17
+ size?: "sm" | "med" | "lg";
18
+ style?: CSSProperties;
19
+ value?: string;
20
+ };
21
+ export declare function SearchField({ label, hideLabel, value, defaultValue, onValueChange, placeholder, description, error, size, disabled, required, name, clearLabel, className, style, ...atoms }: SearchFieldProps): import("react").JSX.Element;
22
+ //#endregion
@@ -0,0 +1,35 @@
1
+ import { Field as e } from "../Field/index.mjs";
2
+ import { hiddenLabel as t } from "./SearchField.css.mjs";
3
+ import { SearchFieldControl as n } from "./client.mjs";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ //#region src/SearchField/index.tsx
6
+ function a({ label: a, hideLabel: o = !1, value: s, defaultValue: c = "", onValueChange: l, placeholder: u, description: d, error: f, size: p = "med", disabled: m = !1, required: h = !1, name: g, clearLabel: _ = "Clear search", className: v, style: y, ...b }) {
7
+ return /* @__PURE__ */ i(e, {
8
+ ...b,
9
+ className: v,
10
+ disabled: m,
11
+ invalid: f != null && f !== !1 && f !== "",
12
+ style: y,
13
+ children: [
14
+ /* @__PURE__ */ r(e.Label, {
15
+ className: o ? t : void 0,
16
+ children: a
17
+ }),
18
+ /* @__PURE__ */ r(n, {
19
+ clearLabel: _,
20
+ defaultValue: c,
21
+ disabled: m,
22
+ name: g,
23
+ onValueChange: l,
24
+ placeholder: u,
25
+ required: h,
26
+ size: p,
27
+ value: s
28
+ }),
29
+ d != null && /* @__PURE__ */ r(e.Description, { children: d }),
30
+ /* @__PURE__ */ r(e.Error, { children: f })
31
+ ]
32
+ });
33
+ }
34
+ //#endregion
35
+ export { a as SearchField };
@@ -0,0 +1,2 @@
1
+ @layer tokens, reset, atoms, components.box, components.checkbox, components.clickable, components.icon, components.icon-button, components.inline, components.stack, components.text, components.badge, components.button, components.chip, components.field, components.heading, components.dialog, components.alert-dialog, components.menu, components.multiselect, components.search-field, components.tabs, components.tag, components.toast;
2
+ @layer components.stack;
@@ -0,0 +1,8 @@
1
+ import "../styles/layers.css";
2
+ import "./Stack.css";
3
+ /* empty css */
4
+ /* empty css */
5
+ //#region src/Stack/Stack.css.ts
6
+ var e = "_122fjme0";
7
+ //#endregion
8
+ export { e as root };
@@ -0,0 +1,15 @@
1
+ import { OmitEach } from "../types.mjs";
2
+ import { StyleProps } from "../Box/index.mjs";
3
+ import { ComponentPropsWithRef, ElementType } from "react";
4
+ //#region src/Stack/index.d.ts
5
+ type Gap = StyleProps["gap"];
6
+ type Token = Extract<Gap, string>;
7
+ export type StackProps<T extends ElementType = "div"> = {
8
+ as?: T;
9
+ gap: Token | (Extract<Gap, object> & {
10
+ base: Token;
11
+ });
12
+ } & Omit<StyleProps, "gap"> & OmitEach<ComponentPropsWithRef<T>, "as" | keyof StyleProps>;
13
+ export declare function Stack<T extends ElementType = "div">({ display, flexDirection, className, ...props }: StackProps<T>): import("react").JSX.Element;
14
+ //#endregion
15
+ export {};
@@ -0,0 +1,15 @@
1
+ import { join as e } from "../styles/join.mjs";
2
+ import { Box as t } from "../Box/index.mjs";
3
+ import { root as n } from "./Stack.css.mjs";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ //#region src/Stack/index.tsx
6
+ function i({ display: i = "flex", flexDirection: a = "column", className: o, ...s }) {
7
+ return /* @__PURE__ */ r(t, {
8
+ display: i,
9
+ flexDirection: a,
10
+ ...s,
11
+ className: e(n, o)
12
+ });
13
+ }
14
+ //#endregion
15
+ export { i as Stack };
@@ -0,0 +1,2 @@
1
+ @layer tokens, reset, atoms, components.box, components.checkbox, components.clickable, components.icon, components.icon-button, components.inline, components.stack, components.text, components.badge, components.button, components.chip, components.field, components.heading, components.dialog, components.alert-dialog, components.menu, components.multiselect, components.search-field, components.tabs, components.tag, components.toast;
2
+ @layer components.tabs{.xowpd00{border-block-end:var(--space-1) solid var(--color-border)}.xowpd00[aria-orientation=vertical]{border-block-end:none;border-inline-end:var(--space-1) solid var(--color-border);flex-direction:column}.xowpd01{transition:color var(--duration-fast) var(--easing-standard)}.xowpd01[aria-selected=true]{color:var(--color-fg)}.xowpd01[aria-disabled=true]{opacity:.5}.xowpd02{border-block-end:var(--space-2) solid var(--color-accent);opacity:0;scale:calc(1 - var(--scale-lg)) 1;transition:opacity var(--duration-med) var(--easing-standard), scale var(--duration-med) var(--easing-standard);pointer-events:none;inset-block-end:calc(-1 * var(--space-1));inset-inline:0}[aria-orientation=vertical]>[role=tab]>.xowpd02{inset-inline:auto;border-block-end:none;border-inline-end:var(--space-2) solid var(--color-accent);scale:1 calc(1 - var(--scale-lg));inset-block:0;inset-inline-end:calc(-1 * var(--space-1))}[aria-selected=true]>.xowpd02{opacity:1;scale:1}.xowpd03:focus-visible{outline:var(--space-2) solid var(--color-focus);outline-offset:var(--space-2)}.xowpd03[data-orientation=vertical]{flex-basis:0}@media (hover:hover){.xowpd01:not([aria-disabled=true]):hover{color:var(--color-fg)}}@media (forced-colors:active){.xowpd01[aria-disabled=true]{color:graytext}.xowpd02{border-color:highlight}}}
@@ -0,0 +1,8 @@
1
+ import "../styles/layers.css";
2
+ import "./Tabs.css";
3
+ /* empty css */
4
+ /* empty css */
5
+ //#region src/Tabs/Tabs.css.ts
6
+ var e = "xowpd00", t = "xowpd01", n = "xowpd02", r = "xowpd03";
7
+ //#endregion
8
+ export { n as indicator, e as list, r as panel, t as tab };
@@ -0,0 +1,20 @@
1
+ import { PartProps } from "../styles/part-props.mjs";
2
+ import { TextOwnProps } from "../Text/index.mjs";
3
+ import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
4
+ //#region src/Tabs/index.d.ts
5
+ export type TabsProps = PartProps<Tabs$1.Root.Props>;
6
+ export type TabsListProps = PartProps<Tabs$1.List.Props>;
7
+ type LabelProps = Omit<TextOwnProps, "truncate">;
8
+ export type TabsTabProps = PartProps<Omit<Tabs$1.Tab.Props, keyof TextOwnProps>> & LabelProps;
9
+ export type TabsPanelProps = PartProps<Tabs$1.Panel.Props>;
10
+ declare function TabsRoot({ orientation, display, flexDirection, flexWrap, gap, className, style, ...props }: TabsProps): import("react").JSX.Element;
11
+ declare function TabsList({ display, flexWrap, gap, position, className, style, ...props }: TabsListProps): import("react").JSX.Element;
12
+ declare function TabsTab({ children, size, font, weight, leading, paddingInline, justifyContent, minBlockSize, position, color, className, style, ...props }: TabsTabProps): import("react").JSX.Element;
13
+ declare function TabsPanel({ flexGrow, className, style, ...props }: TabsPanelProps): import("react").JSX.Element;
14
+ export declare const Tabs: typeof TabsRoot & {
15
+ List: typeof TabsList;
16
+ Tab: typeof TabsTab;
17
+ Panel: typeof TabsPanel;
18
+ };
19
+ //#endregion
20
+ export {};