@hemerson/design-system 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 (35) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +78 -2
  3. package/dist/components/Badge/Badge.d.ts +14 -0
  4. package/dist/components/Button/Button.d.ts +17 -0
  5. package/dist/components/Button/index.d.ts +2 -0
  6. package/dist/components/Card/Card.d.ts +19 -0
  7. package/dist/components/Checkbox/Checkbox.d.ts +8 -0
  8. package/dist/components/Container/Container.d.ts +9 -0
  9. package/dist/components/Dialog/Dialog.d.ts +18 -0
  10. package/dist/components/FloatingButton/FloatingButton.d.ts +9 -0
  11. package/dist/components/GlassPanel/GlassPanel.d.ts +13 -0
  12. package/dist/components/GlowAvatar/GlowAvatar.d.ts +10 -0
  13. package/dist/components/Input/Input.d.ts +12 -0
  14. package/dist/components/Loading/Loading.d.ts +11 -0
  15. package/dist/components/Menu/Menu.d.ts +25 -0
  16. package/dist/components/NavBar/NavBar.d.ts +20 -0
  17. package/dist/components/ScrollArea/ScrollArea.d.ts +8 -0
  18. package/dist/components/SectionTitle/SectionTitle.d.ts +12 -0
  19. package/dist/components/SegmentedControl/SegmentedControl.d.ts +21 -0
  20. package/dist/components/Select/Select.d.ts +16 -0
  21. package/dist/components/Separator/Separator.d.ts +8 -0
  22. package/dist/components/Sidebar/Sidebar.d.ts +21 -0
  23. package/dist/components/Table/Table.d.ts +26 -0
  24. package/dist/components/Toast/Toast.d.ts +16 -0
  25. package/dist/glass/enableGlassRefraction.d.ts +9 -0
  26. package/dist/index.d.ts +42 -0
  27. package/dist/index.js +726 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/internal/Icon.d.ts +17 -0
  30. package/dist/internal/cx.d.ts +2 -0
  31. package/dist/internal/field.d.ts +16 -0
  32. package/dist/styles.css +1249 -0
  33. package/dist/tokens.css +184 -0
  34. package/dist/tokens.json +514 -0
  35. package/package.json +86 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Hemerson Oliveira
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,79 @@
1
- # Temporary Holding Version
1
+ # Hemerson Design System
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ A dark-first design system with a sage-teal accent and liquid-glass navigation, built for React. It ships design tokens for a dark and a light theme, a stylesheet, and React components with a Storybook to browse them.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @hemerson/design-system
9
+ ```
10
+
11
+ React 18.2 or later is required.
12
+
13
+ ```tsx
14
+ import "@hemerson/design-system/styles.css";
15
+ import { Button } from "@hemerson/design-system";
16
+
17
+ export function Toolbar() {
18
+ return <Button variant="primary">Novo boleto</Button>;
19
+ }
20
+ ```
21
+
22
+ - **Themes:** set `data-theme="dark"` (the default) or `data-theme="light"` on `<html>`.
23
+ - **Reduced transparency:** set `data-transparency="reduced"` on `<html>` to turn every glass surface solid. Offer it as a setting in your app.
24
+ - **Fonts:** `styles.css` loads Raleway and JetBrains Mono from Google Fonts. To self-host them, import `tokens.css` and your own font files instead.
25
+
26
+ ## What's inside
27
+
28
+ | Export | Contents |
29
+ | --- | --- |
30
+ | `@hemerson/design-system` | React components |
31
+ | `@hemerson/design-system/styles.css` | Fonts, tokens and component styles |
32
+ | `@hemerson/design-system/tokens.css` | CSS custom properties for both themes |
33
+ | `@hemerson/design-system/tokens.json` | The tokens as data |
34
+
35
+ ## Development
36
+
37
+ ```bash
38
+ npm install
39
+ npm run dev # Storybook on http://localhost:6006
40
+ npm test # unit tests
41
+ npm run typecheck
42
+ npm run lint
43
+ npm run build # the package, into dist/
44
+ npm run build-storybook
45
+ ```
46
+
47
+ Tokens live in [`tokens/tokens.json`](tokens/tokens.json); `npm run tokens` turns them into `src/styles/tokens.css`. Each component lives in `src/components/<Name>/` with its stories and tests.
48
+
49
+ ## Contributing
50
+
51
+ Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for how to set up the project and how contributors are credited.
52
+
53
+ ## Contributors
54
+
55
+ <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
56
+ [![All Contributors](https://img.shields.io/github/all-contributors/hemerson-git/hemerson-design-system?color=7ea8a7&style=flat-square)](#contributors)
57
+ <!-- ALL-CONTRIBUTORS-BADGE:END -->
58
+
59
+ Thanks to everyone who has contributed ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
60
+
61
+ <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
62
+ <!-- prettier-ignore-start -->
63
+ <!-- markdownlint-disable -->
64
+ <table>
65
+ <tbody>
66
+ <tr>
67
+ <td align="center" valign="top" width="14.28%"><a href="https://hemerson-dev.vercel.app/pt-BR"><img src="https://avatars.githubusercontent.com/u/48595787?v=4?s=100" width="100px;" alt="Hemerson Oliveira"/><br /><sub><b>Hemerson Oliveira</b></sub></a><br /><a href="https://github.com/hemerson-git/hemerson-design-system/commits?author=hemerson-git" title="Code">💻</a> <a href="#design-hemerson-git" title="Design">🎨</a> <a href="https://github.com/hemerson-git/hemerson-design-system/commits?author=hemerson-git" title="Documentation">📖</a> <a href="https://github.com/hemerson-git/hemerson-design-system/commits?author=hemerson-git" title="Tests">⚠️</a> <a href="#infra-hemerson-git" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-hemerson-git" title="Maintenance">🚧</a></td>
68
+ </tr>
69
+ </tbody>
70
+ </table>
71
+
72
+ <!-- markdownlint-restore -->
73
+ <!-- prettier-ignore-end -->
74
+
75
+ <!-- ALL-CONTRIBUTORS-LIST:END -->
76
+
77
+ ## License
78
+
79
+ [MIT](LICENSE)
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from "react";
2
+ export type BadgeTone = "neutral" | "accent" | "success" | "warning" | "danger";
3
+ export interface BadgeProps {
4
+ tone?: BadgeTone;
5
+ /** A Lucide icon, or `false` for none. Status tones show their own icon by default. */
6
+ icon?: ReactNode | false;
7
+ children?: ReactNode;
8
+ className?: string;
9
+ }
10
+ /**
11
+ * A small pill that states a status or a category in one or two words.
12
+ * The word stays in ink; the tone shows in the icon and the tint, so color never carries the meaning alone.
13
+ */
14
+ export declare function Badge({ tone, icon, children, className }: BadgeProps): import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { type ButtonHTMLAttributes, type ReactNode } from "react";
2
+ export type ButtonVariant = "primary" | "secondary" | "glass" | "ghost" | "danger";
3
+ export type ButtonSize = "sm" | "md" | "lg";
4
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
5
+ /** primary (one per view) · secondary · glass (over content or in glass bars) · ghost · danger (destructive). */
6
+ variant?: ButtonVariant;
7
+ /** sm 32px · md 40px · lg 56px, as on the portfolio. */
8
+ size?: ButtonSize;
9
+ /** A Lucide icon, shown before the label. */
10
+ icon?: ReactNode;
11
+ /** Shows only the icon. Requires `aria-label`. */
12
+ iconOnly?: boolean;
13
+ /** Shows a spinner, disables the button and sets `aria-busy`. */
14
+ loading?: boolean;
15
+ }
16
+ /** Triggers an action. Labels are set uppercase and bold, verb first. */
17
+ export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,2 @@
1
+ export { Button } from "./Button";
2
+ export type { ButtonProps, ButtonSize, ButtonVariant } from "./Button";
@@ -0,0 +1,19 @@
1
+ import type { ElementType, HTMLAttributes, ReactNode } from "react";
2
+ export interface CardProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
3
+ /** The element to render. Default `article`; use `a` with `href` for a link card. */
4
+ as?: ElementType;
5
+ href?: string;
6
+ /** An uppercase label above the title. */
7
+ eyebrow?: ReactNode;
8
+ title?: ReactNode;
9
+ media?: {
10
+ src: string;
11
+ alt?: string;
12
+ };
13
+ /** Actions or badges at the bottom. */
14
+ footer?: ReactNode;
15
+ /** The whole card is clickable; it scales up slightly on hover. */
16
+ interactive?: boolean;
17
+ }
18
+ /** A solid raised block that groups one item's content. */
19
+ export declare function Card({ as: Tag, eyebrow, title, media, footer, interactive, className, children, ...rest }: CardProps): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { type InputHTMLAttributes, type ReactNode } from "react";
2
+ export interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
3
+ /** States the "yes" ("Pago"), never a negative. */
4
+ label: ReactNode;
5
+ hint?: ReactNode;
6
+ }
7
+ /** A checkbox whose whole label is clickable. */
8
+ export declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,9 @@
1
+ import type { ElementType, HTMLAttributes } from "react";
2
+ export interface ContainerProps extends HTMLAttributes<HTMLElement> {
3
+ /** The element to render. Default `section`. */
4
+ as?: ElementType;
5
+ /** Adds the sidebar's width as left padding from 768px up. */
6
+ withSidebar?: boolean;
7
+ }
8
+ /** Centres page content at content-max, with a section's vertical rhythm and the side gutter. */
9
+ export declare function Container({ as: Tag, withSidebar, className, ...rest }: ContainerProps): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { type ReactNode } from "react";
2
+ export interface DialogProps {
3
+ open: boolean;
4
+ /** Called on Escape, on the close button and on a click outside the panel. */
5
+ onClose: () => void;
6
+ title: ReactNode;
7
+ description?: ReactNode;
8
+ children?: ReactNode;
9
+ /** The buttons, main action last. */
10
+ footer?: ReactNode;
11
+ /** Accessible name of the close button. Default "Fechar". */
12
+ closeLabel?: string;
13
+ /** `panel` focuses the panel itself instead of its first control. */
14
+ initialFocus?: "first" | "panel";
15
+ className?: string;
16
+ }
17
+ /** A modal panel of thick glass for a focused task or a confirmation. */
18
+ export declare function Dialog({ open, onClose, title, description, children, footer, closeLabel, initialFocus, className, }: DialogProps): import("react").ReactPortal | null;
@@ -0,0 +1,9 @@
1
+ import { type ButtonHTMLAttributes } from "react";
2
+ export type FloatingButtonPosition = "bottom-right" | "bottom-left" | "top-right" | "top-left";
3
+ export interface FloatingButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
4
+ /** Accessible name and tooltip. */
5
+ label: string;
6
+ position?: FloatingButtonPosition;
7
+ }
8
+ /** A round glass button fixed to a corner of the viewport, for one persistent action. */
9
+ export declare const FloatingButton: import("react").ForwardRefExoticComponent<FloatingButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,13 @@
1
+ import { type ElementType, type HTMLAttributes } from "react";
2
+ export type GlassTone = "regular" | "clear" | "thick" | "accent";
3
+ export interface GlassPanelProps extends HTMLAttributes<HTMLElement> {
4
+ /** The element to render. Default `div`. */
5
+ as?: ElementType;
6
+ /**
7
+ * regular (default, the only tone for text) · clear (icon-only controls over the app's own surfaces)
8
+ * · thick (dialogs and sheets) · accent (one prominent floating control per view).
9
+ */
10
+ tone?: GlassTone;
11
+ }
12
+ /** Liquid glass: the material of every surface that floats above the content. */
13
+ export declare const GlassPanel: import("react").ForwardRefExoticComponent<GlassPanelProps & import("react").RefAttributes<HTMLElement>>;
@@ -0,0 +1,10 @@
1
+ export interface GlowAvatarProps {
2
+ src: string;
3
+ /** The person's name. */
4
+ alt: string;
5
+ /** Diameter in px. Default 96. */
6
+ size?: number;
7
+ className?: string;
8
+ }
9
+ /** A round photo ringed in the accent with a soft glow behind it. One per view. */
10
+ export declare function GlowAvatar({ src, alt, size, className }: GlowAvatarProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { type InputHTMLAttributes, type ReactNode } from "react";
2
+ export interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
3
+ /** Always visible, written as a noun ("Beneficiário"). */
4
+ label: ReactNode;
5
+ hint?: ReactNode;
6
+ /** Says how to fix the value; also marks the input invalid. */
7
+ error?: ReactNode;
8
+ /** Mono, tabular figures and a decimal keyboard, for amounts and codes. */
9
+ numeric?: boolean;
10
+ }
11
+ /** A labelled text field on a solid, recessed well. */
12
+ export declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,11 @@
1
+ export interface LoadingProps {
2
+ /** sm 16px · md 24px · lg 32px. */
3
+ size?: "sm" | "md" | "lg";
4
+ /** Announced to screen readers. Default "Carregando…". */
5
+ label?: string;
6
+ /** Shows the label beside the spinner. */
7
+ showLabel?: boolean;
8
+ className?: string;
9
+ }
10
+ /** A spinner that tells assistive technology something is loading. */
11
+ export declare function Loading({ size, label, showLabel, className }: LoadingProps): import("react").JSX.Element;
@@ -0,0 +1,25 @@
1
+ import { type ReactNode } from "react";
2
+ import { type ButtonVariant } from "../Button/Button";
3
+ export type MenuItem = {
4
+ label: string;
5
+ icon?: ReactNode;
6
+ onSelect?: () => void;
7
+ danger?: boolean;
8
+ separator?: never;
9
+ } | {
10
+ separator: true;
11
+ };
12
+ export interface MenuProps {
13
+ /** Trigger text, or its accessible name with `iconOnly`. */
14
+ label: string;
15
+ icon?: ReactNode;
16
+ iconOnly?: boolean;
17
+ items: MenuItem[];
18
+ /** Which edge of the trigger the list lines up with. Default `end`. */
19
+ align?: "start" | "end";
20
+ /** Default `glass`. */
21
+ triggerVariant?: ButtonVariant;
22
+ className?: string;
23
+ }
24
+ /** A button that opens a glass list of actions. */
25
+ export declare function Menu({ label, icon, iconOnly, items, align, triggerVariant, className }: MenuProps): import("react").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import type { AnchorHTMLAttributes, HTMLAttributes, ReactNode } from "react";
2
+ export interface NavBarProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
3
+ /** Product or page name on the left. */
4
+ title?: ReactNode;
5
+ /** Buttons on the right. */
6
+ actions?: ReactNode;
7
+ /** Name of the navigation landmark. Default "Principal". */
8
+ navLabel?: string;
9
+ }
10
+ export interface NavBarLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
11
+ /** Marks the current page. */
12
+ active?: boolean;
13
+ }
14
+ declare function NavBarLink({ active, className, ...rest }: NavBarLinkProps): import("react").JSX.Element;
15
+ declare function NavBarRoot({ title, actions, navLabel, className, children, ...rest }: NavBarProps): import("react").JSX.Element;
16
+ /** The app's top bar: a floating glass capsule with the product name, the main sections and the global actions. */
17
+ export declare const NavBar: typeof NavBarRoot & {
18
+ Link: typeof NavBarLink;
19
+ };
20
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {
3
+ /** Accessible name of the region. */
4
+ label: string;
5
+ maxHeight?: number | string;
6
+ }
7
+ /** A focusable scrollable region with the brand's slim scrollbars. */
8
+ export declare function ScrollArea({ label, maxHeight, className, style, ...rest }: ScrollAreaProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from "react";
2
+ export interface SectionTitleProps {
3
+ children: ReactNode;
4
+ /** Shown zero-padded (3 → "03") before the heading, only when sections are a sequence. */
5
+ index?: number;
6
+ /** Heading level. Default `h2`. */
7
+ as?: "h1" | "h2" | "h3" | "h4";
8
+ id?: string;
9
+ className?: string;
10
+ }
11
+ /** A page-section heading led by a glowing mono index, the portfolio's signature heading. */
12
+ export declare function SectionTitle({ children, index, as: Tag, id, className }: SectionTitleProps): import("react").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { type ReactNode } from "react";
2
+ export interface SegmentedOption<T extends string | number = string> {
3
+ value: T;
4
+ label?: ReactNode;
5
+ icon?: ReactNode;
6
+ /** Accessible name when the label is only an icon or a flag. */
7
+ ariaLabel?: string;
8
+ }
9
+ export interface SegmentedControlProps<T extends string | number = string> {
10
+ options: SegmentedOption<T>[];
11
+ /** The selected value, for a controlled control. */
12
+ value?: T;
13
+ /** The initially selected value, for an uncontrolled control. */
14
+ defaultValue?: T;
15
+ onChange?: (value: T) => void;
16
+ /** Name of the group. */
17
+ label: string;
18
+ className?: string;
19
+ }
20
+ /** Switches between two to four exclusive options with a lit thumb that slides between them. */
21
+ export declare function SegmentedControl<T extends string | number = string>({ options, value, defaultValue, onChange, label, className, }: SegmentedControlProps<T>): import("react").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { type ReactNode, type SelectHTMLAttributes } from "react";
2
+ export interface SelectOption {
3
+ value: string;
4
+ label: string;
5
+ disabled?: boolean;
6
+ }
7
+ export interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
8
+ label: ReactNode;
9
+ options: SelectOption[];
10
+ /** Shown as a disabled first option. */
11
+ placeholder?: string;
12
+ hint?: ReactNode;
13
+ error?: ReactNode;
14
+ }
15
+ /** A labelled native dropdown, styled like Input, for choosing one option from a short list. */
16
+ export declare const Select: import("react").ForwardRefExoticComponent<SelectProps & import("react").RefAttributes<HTMLSelectElement>>;
@@ -0,0 +1,8 @@
1
+ export interface SeparatorProps {
2
+ orientation?: "horizontal" | "vertical";
3
+ /** Hides the line from screen readers when it only decorates. */
4
+ decorative?: boolean;
5
+ className?: string;
6
+ }
7
+ /** A 1px line that divides groups of content. */
8
+ export declare function Separator({ orientation, decorative, className }: SeparatorProps): import("react").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import type { ReactNode } from "react";
2
+ export interface SidebarItem {
3
+ /** Accessible name and tooltip. */
4
+ label: string;
5
+ icon: ReactNode;
6
+ href?: string;
7
+ onClick?: () => void;
8
+ active?: boolean;
9
+ }
10
+ export interface SidebarProps {
11
+ items: SidebarItem[];
12
+ /** Items pinned to the bottom, such as settings. */
13
+ footer?: ReactNode;
14
+ /** A free-floating capsule instead of a rail attached to the edge. */
15
+ floating?: boolean;
16
+ /** Name of the navigation landmark. Default "Navegação". */
17
+ label?: string;
18
+ className?: string;
19
+ }
20
+ /** A slim glass rail of icon buttons for the app's main sections. */
21
+ export declare function Sidebar({ items, footer, floating, label, className }: SidebarProps): import("react").JSX.Element;
@@ -0,0 +1,26 @@
1
+ import type { ReactNode } from "react";
2
+ export interface TableColumn<Row> {
3
+ key: string;
4
+ header: ReactNode;
5
+ /** Mono, tabular figures, right-aligned. */
6
+ numeric?: boolean;
7
+ align?: "start" | "center";
8
+ /** Renders the cell from the row; by default the cell shows `row[key]`. */
9
+ render?: (row: Row) => ReactNode;
10
+ }
11
+ export interface TableProps<Row> {
12
+ columns: TableColumn<Row>[];
13
+ rows: Row[];
14
+ /** Key of each row's unique id. Default `id`. */
15
+ rowKey?: keyof Row & string;
16
+ /** Names the table and its scroll region. */
17
+ caption?: string;
18
+ /** Keeps the caption for screen readers only. */
19
+ hideCaption?: boolean;
20
+ /** Shown when there are no rows. Default "Nada para mostrar.". */
21
+ empty?: ReactNode;
22
+ maxHeight?: number | string;
23
+ className?: string;
24
+ }
25
+ /** A solid data table with a sticky header, roomy rows and aligned numbers. */
26
+ export declare function Table<Row extends object>({ columns, rows, rowKey, caption, hideCaption, empty, maxHeight, className, }: TableProps<Row>): import("react").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from "react";
2
+ export type ToastTone = "neutral" | "success" | "warning" | "danger";
3
+ export interface ToastProps {
4
+ open: boolean;
5
+ onClose?: () => void;
6
+ tone?: ToastTone;
7
+ title: ReactNode;
8
+ description?: ReactNode;
9
+ /** Milliseconds before it closes itself; 0 keeps it open. Default 5000. */
10
+ duration?: number;
11
+ /** Accessible name of the close button. Default "Fechar aviso". */
12
+ closeLabel?: string;
13
+ className?: string;
14
+ }
15
+ /** A short glass notice at the bottom of the screen that confirms an action or reports a problem. */
16
+ export declare function Toast({ open, onClose, tone, title, description, duration, closeLabel, className, }: ToastProps): import("react").ReactPortal | null;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Adds the SVG filter that makes glass refract its backdrop, and marks
3
+ * `<html data-glass-refraction>` so the styles use it.
4
+ *
5
+ * Only Chromium renders the effect. Firefox accepts it in `@supports` and then
6
+ * drops the whole backdrop-filter, blur included, so other browsers are left alone.
7
+ * Returns whether refraction was turned on.
8
+ */
9
+ export declare function enableGlassRefraction(): boolean;
@@ -0,0 +1,42 @@
1
+ export { GlassPanel } from "./components/GlassPanel/GlassPanel";
2
+ export type { GlassPanelProps, GlassTone } from "./components/GlassPanel/GlassPanel";
3
+ export { enableGlassRefraction } from "./glass/enableGlassRefraction";
4
+ export * from "./components/Button";
5
+ export { NavBar } from "./components/NavBar/NavBar";
6
+ export type { NavBarLinkProps, NavBarProps } from "./components/NavBar/NavBar";
7
+ export { Sidebar } from "./components/Sidebar/Sidebar";
8
+ export type { SidebarItem, SidebarProps } from "./components/Sidebar/Sidebar";
9
+ export { SegmentedControl } from "./components/SegmentedControl/SegmentedControl";
10
+ export type { SegmentedControlProps, SegmentedOption } from "./components/SegmentedControl/SegmentedControl";
11
+ export { Menu } from "./components/Menu/Menu";
12
+ export type { MenuItem, MenuProps } from "./components/Menu/Menu";
13
+ export { FloatingButton } from "./components/FloatingButton/FloatingButton";
14
+ export type { FloatingButtonPosition, FloatingButtonProps } from "./components/FloatingButton/FloatingButton";
15
+ export { Dialog } from "./components/Dialog/Dialog";
16
+ export type { DialogProps } from "./components/Dialog/Dialog";
17
+ export { Toast } from "./components/Toast/Toast";
18
+ export type { ToastProps, ToastTone } from "./components/Toast/Toast";
19
+ export { Input } from "./components/Input/Input";
20
+ export type { InputProps } from "./components/Input/Input";
21
+ export { Select } from "./components/Select/Select";
22
+ export type { SelectOption, SelectProps } from "./components/Select/Select";
23
+ export { Checkbox } from "./components/Checkbox/Checkbox";
24
+ export type { CheckboxProps } from "./components/Checkbox/Checkbox";
25
+ export { Card } from "./components/Card/Card";
26
+ export type { CardProps } from "./components/Card/Card";
27
+ export { Badge } from "./components/Badge/Badge";
28
+ export type { BadgeProps, BadgeTone } from "./components/Badge/Badge";
29
+ export { Table } from "./components/Table/Table";
30
+ export type { TableColumn, TableProps } from "./components/Table/Table";
31
+ export { Container } from "./components/Container/Container";
32
+ export type { ContainerProps } from "./components/Container/Container";
33
+ export { SectionTitle } from "./components/SectionTitle/SectionTitle";
34
+ export type { SectionTitleProps } from "./components/SectionTitle/SectionTitle";
35
+ export { Separator } from "./components/Separator/Separator";
36
+ export type { SeparatorProps } from "./components/Separator/Separator";
37
+ export { ScrollArea } from "./components/ScrollArea/ScrollArea";
38
+ export type { ScrollAreaProps } from "./components/ScrollArea/ScrollArea";
39
+ export { Loading } from "./components/Loading/Loading";
40
+ export type { LoadingProps } from "./components/Loading/Loading";
41
+ export { GlowAvatar } from "./components/GlowAvatar/GlowAvatar";
42
+ export type { GlowAvatarProps } from "./components/GlowAvatar/GlowAvatar";