@xingxingmofashu/ui 0.1.0 → 0.1.2

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 (38) hide show
  1. package/README.md +124 -72
  2. package/dist/components/accordion.mjs +4 -9
  3. package/dist/components/checkbox.d.ts +1 -1
  4. package/dist/components/checkbox.mjs +27 -19
  5. package/dist/components/icons/check.d.ts +3 -0
  6. package/dist/components/icons/check.mjs +24 -0
  7. package/dist/components/icons/close.d.ts +3 -0
  8. package/dist/components/icons/close.mjs +21 -0
  9. package/dist/components/icons/dash.d.ts +3 -0
  10. package/dist/components/icons/dash.mjs +24 -0
  11. package/dist/components/icons/error.d.ts +3 -0
  12. package/dist/components/icons/error.mjs +23 -0
  13. package/dist/components/icons/info.d.ts +3 -0
  14. package/dist/components/icons/info.mjs +23 -0
  15. package/dist/components/icons/loading.d.ts +3 -0
  16. package/dist/components/icons/loading.mjs +22 -0
  17. package/dist/components/icons/plus.d.ts +3 -0
  18. package/dist/components/icons/plus.mjs +22 -0
  19. package/dist/components/icons/success.d.ts +3 -0
  20. package/dist/components/icons/success.mjs +22 -0
  21. package/dist/components/icons/warning.d.ts +3 -0
  22. package/dist/components/icons/warning.mjs +23 -0
  23. package/dist/components/input.d.ts +1 -1
  24. package/dist/components/input.mjs +17 -1
  25. package/dist/components/slider.d.ts +9 -3
  26. package/dist/components/slider.mjs +33 -0
  27. package/dist/components/switch.d.ts +1 -1
  28. package/dist/components/switch.mjs +24 -1
  29. package/dist/components/toast.d.ts +12 -11
  30. package/dist/components/toast.mjs +58 -87
  31. package/dist/index.css +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.mjs +1 -0
  34. package/dist/internal/aria.d.ts +3 -0
  35. package/dist/internal/aria.mjs +5 -0
  36. package/dist/theme/toast.d.ts +15 -36
  37. package/dist/theme/toast.mjs +28 -20
  38. package/package.json +2 -2
package/README.md CHANGED
@@ -1,48 +1,67 @@
1
- # @xingxingmofashu/ui
1
+ <picture>
2
+ <source media="(prefers-color-scheme: dark)" srcset=".github/assets/banner-dark.png">
3
+ <source media="(prefers-color-scheme: light)" srcset=".github/assets/banner-light.png">
4
+ <img alt="@xingxingmofashu/ui: Between black and white, glass finds its light." width="1247" src=".github/assets/banner-light.png">
5
+ </picture>
2
6
 
3
- Liquid Glass UI components for React 19 and Tailwind CSS 4.
7
+ <div align="center">
8
+
9
+ [![npm version][npm-version-src]][npm-version-href]
10
+ [![npm downloads][npm-downloads-src]][npm-downloads-href]
11
+ [![License][license-src]][license-href]
12
+ [![React][react-src]][react-href]
13
+ [![Tailwind CSS][tailwind-src]][tailwind-href]
14
+
15
+ </div>
16
+
17
+ `@xingxingmofashu/ui` is a collection of accessible, typed [React](https://react.dev)
18
+ components with a Liquid Glass visual style, built on [Base UI](https://base-ui.com),
19
+ [Tailwind CSS](https://tailwindcss.com), and
20
+ [Tailwind Variants](https://www.tailwind-variants.org). Glass surfaces, rim
21
+ highlights, and inner shadows are drawn entirely with CSS.
4
22
 
5
23
  The package ships fifteen components: Accordion, Alert Dialog, Button, Card,
6
24
  Checkbox, Dialog, Drawer, Input, Popover, Scroll Area, Slider, Switch, Toast,
7
- Toggle, and Toggle Group. Glass surfaces, rim highlights, and inner shadows are
8
- drawn entirely with CSS. The interactive components are built on Base UI and do
9
- not add a custom rendering engine; `Card` is a native layout primitive.
25
+ Toggle, and Toggle Group.
10
26
 
11
- ## Requirements
27
+ > [!NOTE]
28
+ > Requires React 19, React DOM 19, Tailwind CSS 4, Node.js 22+, and an
29
+ > ESM-capable bundler. `Card` is server-safe; the interactive components are
30
+ > client components.
12
31
 
13
- - Node.js 22 or newer.
14
- - React and React DOM 19.
15
- - Tailwind CSS 4.
16
- - An ESM-capable bundler. The package publishes ES modules only.
32
+ ## Documentation
17
33
 
18
- `Accordion`, `AlertDialog`, `Button`, `Checkbox`, `Dialog`, `Drawer`, `Input`,
19
- `Popover`, `ScrollArea`, `Slider`, `Switch`, `ToastProvider`, `Toggle`, and
20
- `ToggleGroup` are client components. `Card` is server-safe and can be rendered
21
- from a React Server Component.
34
+ - [English](https://xingxingmofashu.github.io/ui/docs/en/get-started/introduction)
35
+ - [简体中文](https://xingxingmofashu.github.io/ui/docs/zh/get-started/introduction)
22
36
 
23
- ## Install
37
+ ## Installation
24
38
 
25
- ```bash
39
+ ```bash [pnpm]
26
40
  pnpm add @xingxingmofashu/ui
27
41
  ```
28
42
 
29
- The package is published under the `latest` dist-tag.
43
+ ```bash [yarn]
44
+ yarn add @xingxingmofashu/ui
45
+ ```
46
+
47
+ ```bash [npm]
48
+ npm install @xingxingmofashu/ui
49
+ ```
30
50
 
31
- ## Setup
51
+ ```bash [bun]
52
+ bun add @xingxingmofashu/ui
53
+ ```
32
54
 
33
- Import the design tokens and glass material from your Tailwind entry file:
55
+ Add the package styles to your Tailwind CSS entry:
34
56
 
35
- ```css
57
+ ```css [app.css]
36
58
  @import "tailwindcss";
37
59
  @import "@xingxingmofashu/ui";
38
-
39
- /* Adjust this path to point at the package inside node_modules. */
40
- @source "../node_modules/@xingxingmofashu/ui/dist";
41
60
  ```
42
61
 
43
- The package root resolves to `dist/index.css` through its `style` export.
44
- The package ships component class names in `dist`, so Tailwind must scan that
45
- directory. The `@source` path is relative to the CSS file that contains it.
62
+ The package root resolves to `dist/index.css` through its `style` export. The
63
+ stylesheet includes its own Tailwind source scan, so component utilities are
64
+ generated without an extra `@source` directive.
46
65
 
47
66
  ## Usage
48
67
 
@@ -59,61 +78,68 @@ export function Example() {
59
78
  }
60
79
  ```
61
80
 
62
- Deep imports are available for each component and theme recipe:
81
+ ### Deep imports
82
+
83
+ Import a single component or theme recipe without going through the package
84
+ root:
63
85
 
64
86
  ```tsx
65
87
  import { Button } from "@xingxingmofashu/ui/components/button";
66
88
  import buttonTheme from "@xingxingmofashu/ui/theme/button";
67
89
  ```
68
90
 
69
- Use them when you want to import a single component without going through the
70
- package root.
91
+ Toast hooks live under `@xingxingmofashu/ui/composables`.
92
+
93
+ ## Components
94
+
95
+ ### Element
96
+
97
+ - Accordion
98
+ - Button
99
+ - Card
100
+ - Scroll Area
101
+ - Toggle
102
+ - Toggle Group
103
+
104
+ ### Form
105
+
106
+ - Checkbox
107
+ - Input
108
+ - Slider
109
+ - Switch
110
+
111
+ ### Overlay
112
+
113
+ - Alert Dialog
114
+ - Dialog
115
+ - Drawer
116
+ - Popover
117
+ - Toast
71
118
 
72
119
  ## Theming
73
120
 
74
- Light and dark values are selected by `.light` / `.dark`, or by
121
+ Light and dark tokens are selected by `.light` / `.dark`, or by
75
122
  `data-theme="light"` / `data-theme="dark"`:
76
123
 
77
124
  ```html
78
125
  <html class="dark">
79
- <!-- or -->
80
- <html data-theme="dark">
81
- </html>
82
126
  ```
83
127
 
84
- A nested `.light` / `[data-theme="light"]` subtree can switch back to light
85
- tokens. Shared colors and glass parameters live in the `--ui-*` tokens in the
86
- package stylesheet; override them in your own theme layer. Tailwind aliases use
87
- the `ui-` prefix (`text-ui-ink`, `outline-ui-glass-focus`, and so on) to avoid
88
- colliding with host design tokens.
89
-
90
- `Button`, `Card`, `Checkbox`, `Dialog`, `Drawer`, `Input`, `Popover`,
91
- `ScrollArea`, `Slider`, `Switch`, `Toggle`, `ToggleGroup`, `ToastProvider`,
92
- `Accordion`, and `AlertDialog` inherit the host font and do not force a font
93
- family.
128
+ or:
94
129
 
95
- The visual material relies on modern CSS: `backdrop-filter`, `color-mix`,
96
- container units, individual `translate` / `scale` properties, and `:has`.
97
- Use a current evergreen browser.
98
-
99
- ## Components
130
+ ```html
131
+ <html data-theme="dark">
132
+ ```
100
133
 
101
- - `Accordion`
102
- - `AlertDialog`
103
- - `Button`
104
- - `Card`
105
- - `Checkbox`
106
- - `Dialog`
107
- - `Drawer`
108
- - `Input`
109
- - `Popover`
110
- - `ScrollArea`
111
- - `Slider`
112
- - `Switch`
113
- - `ToastProvider`
114
- - `Toggle`
115
- - `ToggleGroup`
134
+ A nested `.light` / `[data-theme="light"]` subtree can switch back to light
135
+ tokens. Shared colors and glass parameters live in the `--ui-*` tokens; override
136
+ them in your own theme layer. Tailwind aliases use the `ui-` prefix
137
+ (`text-ui-ink`, `outline-ui-glass-focus`, and so on) to avoid colliding with
138
+ host tokens.
116
139
 
140
+ The components inherit the host font. The visual material relies on modern CSS:
141
+ `backdrop-filter`, `color-mix`, container units, individual `translate` /
142
+ `scale` properties, and `:has`. Use a current evergreen browser.
117
143
 
118
144
  ## Development
119
145
 
@@ -121,19 +147,45 @@ Use a current evergreen browser.
121
147
  pnpm install
122
148
  pnpm build # build dist with unbuild
123
149
  pnpm lint # lint with oxlint
124
- pnpm lint:fix # apply oxlint's safe fixes
125
150
  pnpm test # run the Vitest suite
126
151
  pnpm typecheck # typecheck the package
127
- pnpm docs:dev # start the Fumadocs site on port 3001
128
- pnpm docs:build # export the docs site to docs/out
129
- pnpm playground:dev # start the component playground on port 3002
152
+ pnpm docs:dev # docs site on http://localhost:3001
153
+ pnpm playground:dev # component playground on http://localhost:3002
130
154
  ```
131
155
 
132
- The documentation site lives in `docs/` and imports this package from the
133
- workspace, so changes under `src/` are picked up directly during docs
134
- development. The playground in `playground/` also imports the source directly
135
- and adds a persistent light/dark toggle for previewing every component.
156
+ The documentation site lives in `docs/` and the playground lives in
157
+ `playground/`; both import the package from the workspace.
158
+
159
+ ## Contribution
160
+
161
+ Found a bug? [Open an issue](https://github.com/xingxingmofashu/ui/issues) with
162
+ a reproduction. Before opening a pull request, run `pnpm lint`, `pnpm test`, and
163
+ `pnpm typecheck`.
164
+
165
+ > [!TIP]
166
+ > [`AGENTS.md`](https://github.com/xingxingmofashu/ui/blob/main/AGENTS.md)
167
+ > describes the component, theme, test, and documentation conventions used in
168
+ > this repository.
169
+
170
+ ## Credits
171
+
172
+ - [Base UI](https://base-ui.com)
173
+ - [Tailwind CSS](https://tailwindcss.com)
174
+ - [Tailwind Variants](https://www.tailwind-variants.org)
136
175
 
137
176
  ## License
138
177
 
139
- MIT
178
+ Licensed under the [MIT license](https://github.com/xingxingmofashu/ui/blob/main/LICENSE).
179
+
180
+ <!-- Badges -->
181
+
182
+ [npm-version-src]: https://img.shields.io/npm/v/@xingxingmofashu/ui.svg?style=flat&colorA=18181B&colorB=52525B
183
+ [npm-version-href]: https://www.npmjs.com/package/@xingxingmofashu/ui
184
+ [npm-downloads-src]: https://img.shields.io/npm/dm/@xingxingmofashu/ui.svg?style=flat&colorA=18181B&colorB=52525B
185
+ [npm-downloads-href]: https://npm.chart.dev/@xingxingmofashu/ui
186
+ [license-src]: https://img.shields.io/github/license/xingxingmofashu/ui.svg?style=flat&colorA=18181B&colorB=52525B
187
+ [license-href]: https://github.com/xingxingmofashu/ui/blob/main/LICENSE
188
+ [react-src]: https://img.shields.io/badge/React-19-18181B?style=flat&logo=react&logoColor=white
189
+ [react-href]: https://react.dev
190
+ [tailwind-src]: https://img.shields.io/badge/Tailwind_CSS-4-18181B?style=flat&logo=tailwindcss&logoColor=white
191
+ [tailwind-href]: https://tailwindcss.com
@@ -3,6 +3,7 @@ import { Accordion as UIAccordion } from "@base-ui/react/accordion";
3
3
  import { cn } from "cn";
4
4
  import * as React from "react";
5
5
  import theme from "../theme/accordion.mjs";
6
+ import { PlusIcon } from "./icons/plus.mjs";
6
7
  function Accordion({
7
8
  className,
8
9
  size,
@@ -52,17 +53,11 @@ function AccordionItem({
52
53
  className: ui.indicator()
53
54
  },
54
55
  /* @__PURE__ */ React.createElement(
55
- "svg",
56
+ PlusIcon,
56
57
  {
57
58
  "data-slot": "indicator-icon",
58
- className: ui.indicatorIcon(),
59
- viewBox: "0 0 16 16",
60
- fill: "none",
61
- stroke: "currentColor",
62
- strokeLinecap: "square",
63
- strokeLinejoin: "round"
64
- },
65
- /* @__PURE__ */ React.createElement("path", { d: "M1.5 8h13M8 14.5v-13" })
59
+ className: ui.indicatorIcon()
60
+ }
66
61
  )
67
62
  ))),
68
63
  /* @__PURE__ */ React.createElement(UIAccordion.Panel, { "data-slot": "panel", className: ui.panel() }, /* @__PURE__ */ React.createElement("div", { "data-slot": "panel-content", className: ui.panelContent() }, content))
@@ -12,6 +12,6 @@ interface CheckboxProps extends Omit<UICheckbox.Root.Props, "className" | "child
12
12
  /** Optional supporting text. */
13
13
  description?: React.ReactNode;
14
14
  }
15
- declare function Checkbox({ className, label, description, size, indeterminate, ...props }: CheckboxProps): React.JSX.Element;
15
+ declare function Checkbox({ className, label, description, size, indeterminate, "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ...props }: CheckboxProps): React.JSX.Element;
16
16
  export { Checkbox };
17
17
  export type { CheckboxProps };
@@ -2,37 +2,37 @@
2
2
  import { Checkbox as UICheckbox } from "@base-ui/react/checkbox";
3
3
  import { cn } from "cn";
4
4
  import * as React from "react";
5
+ import { mergeIds } from "../internal/aria.mjs";
5
6
  import theme from "../theme/checkbox.mjs";
6
- function CheckIcon({ indeterminate }) {
7
- return /* @__PURE__ */ React.createElement(
8
- "svg",
9
- {
10
- "aria-hidden": "true",
11
- "data-icon": indeterminate ? "dash" : "check",
12
- focusable: "false",
13
- viewBox: "0 0 16 16",
14
- fill: "none",
15
- stroke: "currentColor",
16
- strokeLinecap: "round",
17
- strokeLinejoin: "round",
18
- strokeWidth: "1.5"
19
- },
20
- /* @__PURE__ */ React.createElement("path", { d: indeterminate ? "M3.5 8h9" : "m2.5 8.5 4 4 7-9" })
21
- );
22
- }
7
+ import { CheckIcon } from "./icons/check.mjs";
8
+ import { DashIcon } from "./icons/dash.mjs";
23
9
  function Checkbox({
24
10
  className,
25
11
  label,
26
12
  description,
27
13
  size,
28
14
  indeterminate = false,
15
+ "aria-describedby": ariaDescribedBy,
16
+ "aria-label": ariaLabel,
17
+ "aria-labelledby": ariaLabelledBy,
29
18
  ...props
30
19
  }) {
31
20
  const ui = theme({ size });
21
+ const labelId = React.useId();
22
+ const descriptionId = React.useId();
23
+ const hasName = Boolean(label || ariaLabel || ariaLabelledBy);
24
+ const labelledBy = ariaLabelledBy || (label && !ariaLabel ? labelId : void 0);
25
+ const describedBy = mergeIds(
26
+ ariaDescribedBy,
27
+ description && hasName ? descriptionId : void 0
28
+ );
32
29
  return /* @__PURE__ */ React.createElement(
33
30
  UICheckbox.Root,
34
31
  {
35
32
  ...props,
33
+ "aria-describedby": describedBy,
34
+ "aria-label": ariaLabel,
35
+ "aria-labelledby": labelledBy,
36
36
  indeterminate,
37
37
  "data-slot": "root",
38
38
  className: cn(ui.root(), className)
@@ -52,9 +52,17 @@ function Checkbox({
52
52
  "data-slot": "indicator",
53
53
  className: ui.indicator()
54
54
  },
55
- /* @__PURE__ */ React.createElement("span", { "data-slot": "indicator-icon", className: ui.indicatorIcon() }, /* @__PURE__ */ React.createElement(CheckIcon, { indeterminate }))
55
+ /* @__PURE__ */ React.createElement("span", { "data-slot": "indicator-icon", className: ui.indicatorIcon() }, indeterminate ? /* @__PURE__ */ React.createElement(DashIcon, null) : /* @__PURE__ */ React.createElement(CheckIcon, null))
56
56
  )),
57
- label || description ? /* @__PURE__ */ React.createElement("span", { "data-slot": "wrapper", className: ui.wrapper() }, label ? /* @__PURE__ */ React.createElement("span", { "data-slot": "label", className: ui.label() }, label) : null, description ? /* @__PURE__ */ React.createElement("span", { "data-slot": "description", className: ui.description() }, description) : null) : null
57
+ label || description ? /* @__PURE__ */ React.createElement("span", { "data-slot": "wrapper", className: ui.wrapper() }, label ? /* @__PURE__ */ React.createElement("span", { id: labelId, "data-slot": "label", className: ui.label() }, label) : null, description ? /* @__PURE__ */ React.createElement(
58
+ "span",
59
+ {
60
+ id: descriptionId,
61
+ "data-slot": "description",
62
+ className: ui.description()
63
+ },
64
+ description
65
+ ) : null) : null
58
66
  );
59
67
  }
60
68
  export { Checkbox };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function CheckIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { CheckIcon };
@@ -0,0 +1,24 @@
1
+ import * as React from "react";
2
+ function CheckIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ "aria-hidden": "true",
10
+ "data-icon": "check",
11
+ focusable: "false",
12
+ viewBox: "0 0 24 24",
13
+ fill: "none",
14
+ stroke: "currentColor",
15
+ strokeLinecap: "round",
16
+ strokeLinejoin: "round",
17
+ strokeWidth: "1.5",
18
+ className,
19
+ ...props
20
+ },
21
+ /* @__PURE__ */ React.createElement("path", { d: "m4 12 6 6 10-12" })
22
+ );
23
+ }
24
+ export { CheckIcon };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function CloseIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { CloseIcon };
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ function CloseIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ "aria-hidden": "true",
10
+ viewBox: "0 0 24 24",
11
+ fill: "none",
12
+ stroke: "currentColor",
13
+ strokeWidth: "1.5",
14
+ strokeLinecap: "round",
15
+ className,
16
+ ...props
17
+ },
18
+ /* @__PURE__ */ React.createElement("path", { d: "m6 6 12 12M18 6 6 18" })
19
+ );
20
+ }
21
+ export { CloseIcon };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function DashIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { DashIcon };
@@ -0,0 +1,24 @@
1
+ import * as React from "react";
2
+ function DashIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ "aria-hidden": "true",
10
+ "data-icon": "dash",
11
+ focusable: "false",
12
+ viewBox: "0 0 24 24",
13
+ fill: "none",
14
+ stroke: "currentColor",
15
+ strokeLinecap: "round",
16
+ strokeLinejoin: "round",
17
+ strokeWidth: "1.5",
18
+ className,
19
+ ...props
20
+ },
21
+ /* @__PURE__ */ React.createElement("path", { d: "M5 12h14" })
22
+ );
23
+ }
24
+ export { DashIcon };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function ErrorIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { ErrorIcon };
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ function ErrorIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ viewBox: "0 0 24 24",
10
+ fill: "none",
11
+ stroke: "currentColor",
12
+ strokeWidth: "1.5",
13
+ strokeLinecap: "round",
14
+ strokeLinejoin: "round",
15
+ className,
16
+ ...props
17
+ },
18
+ /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "8.5" }),
19
+ /* @__PURE__ */ React.createElement("path", { d: "M12 8v5" }),
20
+ /* @__PURE__ */ React.createElement("path", { d: "M12 16.5h.01" })
21
+ );
22
+ }
23
+ export { ErrorIcon };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function InfoIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { InfoIcon };
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ function InfoIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ viewBox: "0 0 24 24",
10
+ fill: "none",
11
+ stroke: "currentColor",
12
+ strokeWidth: "1.5",
13
+ strokeLinecap: "round",
14
+ strokeLinejoin: "round",
15
+ className,
16
+ ...props
17
+ },
18
+ /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "8.5" }),
19
+ /* @__PURE__ */ React.createElement("path", { d: "M12 11v5" }),
20
+ /* @__PURE__ */ React.createElement("path", { d: "M12 8h.01" })
21
+ );
22
+ }
23
+ export { InfoIcon };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function LoadingIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { LoadingIcon };
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ function LoadingIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ viewBox: "0 0 24 24",
10
+ fill: "none",
11
+ stroke: "currentColor",
12
+ strokeWidth: "1.5",
13
+ strokeLinecap: "round",
14
+ strokeLinejoin: "round",
15
+ className,
16
+ ...props
17
+ },
18
+ /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "8", opacity: "0.25" }),
19
+ /* @__PURE__ */ React.createElement("path", { d: "M12 4a8 8 0 0 1 8 8" })
20
+ );
21
+ }
22
+ export { LoadingIcon };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function PlusIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { PlusIcon };
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ function PlusIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ "aria-hidden": "true",
10
+ viewBox: "0 0 24 24",
11
+ fill: "none",
12
+ stroke: "currentColor",
13
+ strokeWidth: "1.5",
14
+ strokeLinecap: "square",
15
+ strokeLinejoin: "round",
16
+ className,
17
+ ...props
18
+ },
19
+ /* @__PURE__ */ React.createElement("path", { d: "M2.5 12h19M12 21.5v-19" })
20
+ );
21
+ }
22
+ export { PlusIcon };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function SuccessIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { SuccessIcon };
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ function SuccessIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ viewBox: "0 0 24 24",
10
+ fill: "none",
11
+ stroke: "currentColor",
12
+ strokeWidth: "1.5",
13
+ strokeLinecap: "round",
14
+ strokeLinejoin: "round",
15
+ className,
16
+ ...props
17
+ },
18
+ /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "8.5" }),
19
+ /* @__PURE__ */ React.createElement("path", { d: "m8 12.5 3 3 5.5-6" })
20
+ );
21
+ }
22
+ export { SuccessIcon };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function WarningIcon({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
3
+ export { WarningIcon };
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ function WarningIcon({
3
+ className,
4
+ ...props
5
+ }) {
6
+ return /* @__PURE__ */ React.createElement(
7
+ "svg",
8
+ {
9
+ viewBox: "0 0 24 24",
10
+ fill: "none",
11
+ stroke: "currentColor",
12
+ strokeWidth: "1.5",
13
+ strokeLinecap: "round",
14
+ strokeLinejoin: "round",
15
+ className,
16
+ ...props
17
+ },
18
+ /* @__PURE__ */ React.createElement("path", { d: "M12 4 21 20H3L12 4Z" }),
19
+ /* @__PURE__ */ React.createElement("path", { d: "M12 10v4" }),
20
+ /* @__PURE__ */ React.createElement("path", { d: "M12 17.5h.01" })
21
+ );
22
+ }
23
+ export { WarningIcon };
@@ -14,6 +14,6 @@ interface InputProps extends Omit<UIInput.Props, "className" | "children" | "siz
14
14
  /** Icon rendered after the input. */
15
15
  trailingIcon?: React.ReactNode;
16
16
  }
17
- declare function Input({ className, label, description, leadingIcon, trailingIcon, size, id, disabled, ...props }: InputProps): React.JSX.Element;
17
+ declare function Input({ className, label, description, leadingIcon, trailingIcon, size, id, disabled, "aria-describedby": ariaDescribedBy, ...props }: InputProps): React.JSX.Element;
18
18
  export { Input };
19
19
  export type { InputProps };