@hellboy/ds 0.1.2 → 0.2.7
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.
- package/README.md +568 -71
- package/{src/style/components/badge → dist/components}/badge.css +9 -25
- package/dist/components/badge.d.mts +12 -0
- package/dist/components/badge.d.ts +12 -0
- package/dist/components/badge.js +42 -0
- package/dist/components/badge.mjs +15 -0
- package/dist/components/banner.css +280 -0
- package/dist/components/banner.d.mts +12 -0
- package/dist/components/banner.d.ts +12 -0
- package/dist/components/banner.js +184 -0
- package/dist/components/banner.mjs +147 -0
- package/dist/components/button-group.css +289 -0
- package/dist/components/button-group.d.mts +81 -0
- package/dist/components/button-group.d.ts +81 -0
- package/dist/components/button-group.js +180 -0
- package/dist/components/button-group.mjs +143 -0
- package/{src/style/components/button → dist/components}/button.css +59 -62
- package/dist/components/button.d.mts +57 -0
- package/dist/components/button.d.ts +57 -0
- package/dist/components/button.js +129 -0
- package/dist/components/button.mjs +92 -0
- package/{src/style/components/card → dist/components}/card.css +9 -30
- package/dist/components/card.d.mts +31 -0
- package/dist/components/card.d.ts +31 -0
- package/dist/components/card.js +59 -0
- package/dist/components/card.mjs +32 -0
- package/{src/style → dist}/components/checkbox.css +51 -43
- package/dist/components/checkbox.d.mts +31 -0
- package/dist/components/checkbox.d.ts +31 -0
- package/dist/components/checkbox.js +130 -0
- package/dist/components/checkbox.mjs +93 -0
- package/{src/style/components/code-block → dist/components}/code-block.css +3 -7
- package/dist/components/code-block.d.mts +24 -0
- package/dist/components/code-block.d.ts +24 -0
- package/dist/components/code-block.js +43 -0
- package/dist/components/code-block.mjs +16 -0
- package/dist/components/color-control.css +285 -0
- package/dist/components/color-control.d.mts +5 -0
- package/dist/components/color-control.d.ts +5 -0
- package/dist/components/color-control.js +534 -0
- package/dist/components/color-control.mjs +497 -0
- package/dist/components/dialog.css +930 -0
- package/dist/components/dialog.d.mts +32 -0
- package/dist/components/dialog.d.ts +32 -0
- package/dist/components/dialog.js +1111 -0
- package/dist/components/dialog.mjs +1074 -0
- package/dist/components/divider.css +356 -0
- package/dist/components/divider.d.mts +32 -0
- package/dist/components/divider.d.ts +32 -0
- package/dist/components/divider.js +344 -0
- package/dist/components/divider.mjs +307 -0
- package/{src/style/components/drag-handle → dist/components}/drag-handle.css +3 -18
- package/dist/components/drag-handle.d.mts +11 -0
- package/dist/components/drag-handle.d.ts +11 -0
- package/dist/components/drag-handle.js +103 -0
- package/dist/components/drag-handle.mjs +66 -0
- package/dist/components/drawer.css +1027 -0
- package/dist/components/drawer.d.mts +14 -0
- package/dist/components/drawer.d.ts +14 -0
- package/dist/components/drawer.js +1072 -0
- package/dist/components/drawer.mjs +1035 -0
- package/dist/components/floating-bar.css +17 -0
- package/dist/components/floating-bar.d.mts +25 -0
- package/dist/components/floating-bar.d.ts +25 -0
- package/dist/components/floating-bar.js +52 -0
- package/dist/components/floating-bar.mjs +25 -0
- package/dist/components/footer.css +40 -0
- package/dist/components/footer.d.mts +8 -0
- package/dist/components/footer.d.ts +8 -0
- package/dist/components/footer.js +44 -0
- package/dist/components/footer.mjs +17 -0
- package/dist/components/grid.css +47 -0
- package/dist/components/grid.d.mts +27 -0
- package/dist/components/grid.d.ts +27 -0
- package/dist/components/grid.js +52 -0
- package/dist/components/grid.mjs +25 -0
- package/dist/components/header.css +1075 -0
- package/dist/components/header.d.mts +35 -0
- package/dist/components/header.d.ts +35 -0
- package/dist/components/header.js +1402 -0
- package/dist/components/header.mjs +1365 -0
- package/dist/components/hero.css +121 -0
- package/dist/components/hero.d.mts +111 -0
- package/dist/components/hero.d.ts +111 -0
- package/dist/components/hero.js +285 -0
- package/dist/components/hero.mjs +248 -0
- package/{src/style/components/icons → dist/components}/icons.css +14 -15
- package/dist/components/icons.d.mts +104 -0
- package/dist/components/icons.d.ts +104 -0
- package/dist/components/icons.js +239 -0
- package/dist/components/icons.mjs +203 -0
- package/{src/style/components/input → dist/components}/input.css +189 -102
- package/dist/components/input.d.mts +114 -0
- package/dist/components/input.d.ts +114 -0
- package/dist/components/input.js +926 -0
- package/dist/components/input.mjs +879 -0
- package/dist/components/layout.css +551 -0
- package/dist/components/layout.d.mts +16 -0
- package/dist/components/layout.d.ts +16 -0
- package/dist/components/layout.js +387 -0
- package/dist/components/layout.mjs +352 -0
- package/{src/style/components/list → dist/components}/list.css +47 -41
- package/dist/components/list.d.mts +46 -0
- package/dist/components/list.d.ts +46 -0
- package/dist/components/list.js +124 -0
- package/dist/components/list.mjs +96 -0
- package/dist/components/navbar.css +706 -0
- package/dist/components/navbar.d.mts +56 -0
- package/dist/components/navbar.d.ts +56 -0
- package/dist/components/navbar.js +994 -0
- package/dist/components/navbar.mjs +952 -0
- package/{src/style/components/page-index → dist/components}/page-index.css +2 -47
- package/dist/components/page-index.d.mts +25 -0
- package/dist/components/page-index.d.ts +25 -0
- package/dist/components/page-index.js +239 -0
- package/dist/components/page-index.mjs +202 -0
- package/{src/style/components/page → dist/components}/page.css +4 -15
- package/dist/components/page.d.mts +30 -0
- package/dist/components/page.d.ts +30 -0
- package/dist/components/page.js +40 -0
- package/dist/components/page.mjs +13 -0
- package/dist/components/popover.css +87 -0
- package/dist/components/popover.d.mts +22 -0
- package/dist/components/popover.d.ts +22 -0
- package/dist/components/popover.js +243 -0
- package/dist/components/popover.mjs +206 -0
- package/{src/style → dist}/components/radio.css +8 -51
- package/dist/components/radio.d.mts +59 -0
- package/dist/components/radio.d.ts +59 -0
- package/dist/components/radio.js +133 -0
- package/dist/components/radio.mjs +95 -0
- package/dist/components/section.css +993 -0
- package/dist/components/section.d.mts +33 -0
- package/dist/components/section.d.ts +33 -0
- package/dist/components/section.js +1401 -0
- package/dist/components/section.mjs +1364 -0
- package/dist/components/select.css +391 -0
- package/dist/components/select.d.mts +63 -0
- package/dist/components/select.d.ts +63 -0
- package/dist/components/select.js +452 -0
- package/dist/components/select.mjs +415 -0
- package/{src/style/components/slider → dist/components}/slider.css +55 -33
- package/dist/components/slider.d.mts +69 -0
- package/dist/components/slider.d.ts +69 -0
- package/dist/components/slider.js +254 -0
- package/dist/components/slider.mjs +217 -0
- package/dist/components/switch.css +1081 -0
- package/dist/components/switch.d.mts +33 -0
- package/dist/components/switch.d.ts +33 -0
- package/dist/components/switch.js +1092 -0
- package/dist/components/switch.mjs +1055 -0
- package/{src/style/components/table → dist/components}/table.css +3 -28
- package/dist/components/table.d.mts +42 -0
- package/dist/components/table.d.ts +42 -0
- package/dist/components/table.js +108 -0
- package/dist/components/table.mjs +76 -0
- package/dist/components/tag.css +97 -0
- package/dist/components/tag.d.mts +12 -0
- package/dist/components/tag.d.ts +12 -0
- package/dist/components/tag.js +42 -0
- package/dist/components/tag.mjs +15 -0
- package/dist/components/textarea.css +1359 -0
- package/dist/components/textarea.d.mts +84 -0
- package/dist/components/textarea.d.ts +84 -0
- package/dist/components/textarea.js +1962 -0
- package/dist/components/textarea.mjs +1924 -0
- package/{src/style/components/theme-control → dist/components}/theme-control.css +3 -7
- package/dist/components/theme-control.d.mts +9 -0
- package/dist/components/theme-control.d.ts +9 -0
- package/dist/components/theme-control.js +235 -0
- package/dist/components/theme-control.mjs +200 -0
- package/{src/style/components/tooltip → dist/components}/tooltip.css +5 -13
- package/dist/components/tooltip.d.mts +12 -0
- package/dist/components/tooltip.d.ts +12 -0
- package/dist/components/tooltip.js +200 -0
- package/dist/components/tooltip.mjs +163 -0
- package/dist/icons-Czahnf-r.d.mts +15 -0
- package/dist/icons-Czahnf-r.d.ts +15 -0
- package/dist/index.css +2915 -2068
- package/dist/index.d.mts +144 -721
- package/dist/index.d.ts +144 -721
- package/dist/index.js +4076 -2282
- package/dist/index.mjs +4132 -2366
- package/dist/theme.css +34 -34
- package/package.json +27 -8
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/hellboy-ds-0.1.2.tgz +0 -0
- package/src/components/badge/Badge.tsx +0 -29
- package/src/components/badge/index.ts +0 -1
- package/src/components/banner/Banner.tsx +0 -48
- package/src/components/banner/banner.css +0 -44
- package/src/components/banner/index.ts +0 -1
- package/src/components/button/button.tsx +0 -127
- package/src/components/button/index.ts +0 -1
- package/src/components/card/card.tsx +0 -57
- package/src/components/card/index.ts +0 -1
- package/src/components/checkbox/Checkbox.tsx +0 -98
- package/src/components/checkbox/index.ts +0 -1
- package/src/components/code-block/code-block.tsx +0 -44
- package/src/components/code-block/index.ts +0 -1
- package/src/components/color-control/color-control.tsx +0 -322
- package/src/components/color-control/index.ts +0 -1
- package/src/components/drag-handle/DragHandle.tsx +0 -78
- package/src/components/drag-handle/index.ts +0 -1
- package/src/components/drawer/drawer.tsx +0 -82
- package/src/components/drawer/index.ts +0 -1
- package/src/components/floating-bar/floating-bar.tsx +0 -52
- package/src/components/floating-bar/index.ts +0 -2
- package/src/components/footer/footer.tsx +0 -28
- package/src/components/footer/index.ts +0 -1
- package/src/components/grid/Grid.tsx +0 -53
- package/src/components/grid/index.ts +0 -1
- package/src/components/header/header.tsx +0 -57
- package/src/components/header/index.ts +0 -1
- package/src/components/icons/icons.tsx +0 -44
- package/src/components/icons/index.ts +0 -1
- package/src/components/index.ts +0 -29
- package/src/components/input/DatePicker.tsx +0 -133
- package/src/components/input/Input.tsx +0 -220
- package/src/components/input/InputDate.tsx +0 -10
- package/src/components/input/InputDateTime.tsx +0 -10
- package/src/components/input/InputEmail.tsx +0 -10
- package/src/components/input/InputField.tsx +0 -137
- package/src/components/input/InputNumber.tsx +0 -10
- package/src/components/input/InputPassword.tsx +0 -10
- package/src/components/input/InputSearch.tsx +0 -10
- package/src/components/input/InputTel.tsx +0 -10
- package/src/components/input/InputText.tsx +0 -10
- package/src/components/input/InputTime.tsx +0 -10
- package/src/components/input/InputUrl.tsx +0 -10
- package/src/components/input/TimePicker.tsx +0 -151
- package/src/components/input/index.ts +0 -11
- package/src/components/layout/Layout.tsx +0 -244
- package/src/components/layout/index.ts +0 -1
- package/src/components/list/List.tsx +0 -159
- package/src/components/list/index.ts +0 -1
- package/src/components/navbar/MenuCategory.tsx +0 -20
- package/src/components/navbar/MenuGroup.tsx +0 -288
- package/src/components/navbar/MenuItem.tsx +0 -65
- package/src/components/navbar/Navbar.tsx +0 -23
- package/src/components/navbar/index.ts +0 -4
- package/src/components/page/index.ts +0 -1
- package/src/components/page/page.tsx +0 -46
- package/src/components/page-index/PageIndex.tsx +0 -275
- package/src/components/page-index/index.ts +0 -1
- package/src/components/popover/index.ts +0 -1
- package/src/components/popover/popover.tsx +0 -199
- package/src/components/radio/Radio.tsx +0 -176
- package/src/components/radio/index.ts +0 -1
- package/src/components/section/index.ts +0 -1
- package/src/components/section/section.tsx +0 -66
- package/src/components/select/Select.tsx +0 -212
- package/src/components/select/index.ts +0 -1
- package/src/components/slider/Slider.tsx +0 -267
- package/src/components/slider/index.ts +0 -1
- package/src/components/switch/index.ts +0 -1
- package/src/components/switch/switch.tsx +0 -99
- package/src/components/table/Table.tsx +0 -147
- package/src/components/table/index.ts +0 -1
- package/src/components/theme-control/index.ts +0 -1
- package/src/components/theme-control/theme-control.tsx +0 -78
- package/src/components/tooltip/index.ts +0 -1
- package/src/components/tooltip/tooltip.tsx +0 -207
- package/src/contexts/NavbarTooltipContext.tsx +0 -48
- package/src/contexts/index.ts +0 -1
- package/src/foundations/motion.md +0 -136
- package/src/index.ts +0 -40
- package/src/style/_shared/field.css +0 -69
- package/src/style/components/color-control/color-control.css +0 -126
- package/src/style/components/drawer/drawer.css +0 -210
- package/src/style/components/floating-bar/floating-bar.css +0 -39
- package/src/style/components/footer/footer.css +0 -108
- package/src/style/components/grid/grid.css +0 -33
- package/src/style/components/header/header.css +0 -44
- package/src/style/components/layout/layout.css +0 -205
- package/src/style/components/navbar/navbar.css +0 -342
- package/src/style/components/popover/popover.css +0 -44
- package/src/style/components/section/section.css +0 -67
- package/src/style/components/select/select.css +0 -143
- package/src/style/components/switch/switch.css +0 -267
- package/src/style/foundations/global.css +0 -316
- package/src/style/foundations/motion.css +0 -164
- package/src/style/foundations/spacing.css +0 -51
- package/src/style/foundations/typography.css +0 -39
- package/src/style/foundations/z-index.css +0 -81
- package/src/style/modes/dark.css +0 -146
- package/src/style/modes/light.css +0 -147
- package/src/style/semantic.css +0 -52
- package/src/style/styles.css +0 -51
- package/src/style/themes/theme.json +0 -37
- package/src/utils/README.md +0 -305
- package/src/utils/USER_PREFERENCES.md +0 -558
- package/src/utils/theme.ts +0 -127
- package/src/utils/user-preferences.ts +0 -577
- package/tsconfig.json +0 -25
- package/tsup.config.ts +0 -52
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import "../../style/components/table/table.css";
|
|
3
|
-
|
|
4
|
-
export interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {
|
|
5
|
-
/**
|
|
6
|
-
* Whether the table should have a border
|
|
7
|
-
*/
|
|
8
|
-
bordered?: boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Whether the table should have striped rows
|
|
11
|
-
*/
|
|
12
|
-
striped?: boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Whether the table should have hover effects
|
|
15
|
-
*/
|
|
16
|
-
hover?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Size variant for the table
|
|
19
|
-
*/
|
|
20
|
-
size?: "sm" | "md" | "lg";
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {}
|
|
24
|
-
|
|
25
|
-
export interface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {}
|
|
26
|
-
|
|
27
|
-
export interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {}
|
|
28
|
-
|
|
29
|
-
export interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {
|
|
30
|
-
/**
|
|
31
|
-
* Whether this is a header cell
|
|
32
|
-
*/
|
|
33
|
-
header?: boolean;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface TableContainerProps extends React.HTMLAttributes<HTMLDivElement> {}
|
|
37
|
-
|
|
38
|
-
export const Table: React.FC<TableProps> = ({
|
|
39
|
-
bordered = false,
|
|
40
|
-
striped = true,
|
|
41
|
-
hover = true,
|
|
42
|
-
size = "md",
|
|
43
|
-
className = "",
|
|
44
|
-
children,
|
|
45
|
-
...props
|
|
46
|
-
}) => {
|
|
47
|
-
const classes = [
|
|
48
|
-
"table",
|
|
49
|
-
bordered && "table--bordered",
|
|
50
|
-
striped && "table--striped",
|
|
51
|
-
hover && "table--hover",
|
|
52
|
-
size && `table--${size}`,
|
|
53
|
-
className,
|
|
54
|
-
]
|
|
55
|
-
.filter(Boolean)
|
|
56
|
-
.join(" ");
|
|
57
|
-
|
|
58
|
-
return (
|
|
59
|
-
<table className={classes} {...props}>
|
|
60
|
-
{children}
|
|
61
|
-
</table>
|
|
62
|
-
);
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export const TableHead: React.FC<TableHeadProps> = ({
|
|
66
|
-
className = "",
|
|
67
|
-
children,
|
|
68
|
-
...props
|
|
69
|
-
}) => {
|
|
70
|
-
const classes = ["table__head", className].filter(Boolean).join(" ");
|
|
71
|
-
|
|
72
|
-
return (
|
|
73
|
-
<thead className={classes} {...props}>
|
|
74
|
-
{children}
|
|
75
|
-
</thead>
|
|
76
|
-
);
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
export const TableBody: React.FC<TableBodyProps> = ({
|
|
80
|
-
className = "",
|
|
81
|
-
children,
|
|
82
|
-
...props
|
|
83
|
-
}) => {
|
|
84
|
-
const classes = ["table__body", className].filter(Boolean).join(" ");
|
|
85
|
-
|
|
86
|
-
return (
|
|
87
|
-
<tbody className={classes} {...props}>
|
|
88
|
-
{children}
|
|
89
|
-
</tbody>
|
|
90
|
-
);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
export const TableRow: React.FC<TableRowProps> = ({
|
|
94
|
-
className = "",
|
|
95
|
-
children,
|
|
96
|
-
...props
|
|
97
|
-
}) => {
|
|
98
|
-
const classes = ["table__row", className].filter(Boolean).join(" ");
|
|
99
|
-
|
|
100
|
-
return (
|
|
101
|
-
<tr className={classes} {...props}>
|
|
102
|
-
{children}
|
|
103
|
-
</tr>
|
|
104
|
-
);
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
export const TableCell: React.FC<TableCellProps> = ({
|
|
108
|
-
header = false,
|
|
109
|
-
className = "",
|
|
110
|
-
children,
|
|
111
|
-
...props
|
|
112
|
-
}) => {
|
|
113
|
-
const classes = [
|
|
114
|
-
header ? "table__cell--header" : "table__cell",
|
|
115
|
-
className,
|
|
116
|
-
]
|
|
117
|
-
.filter(Boolean)
|
|
118
|
-
.join(" ");
|
|
119
|
-
|
|
120
|
-
if (header) {
|
|
121
|
-
return (
|
|
122
|
-
<th className={classes} {...props}>
|
|
123
|
-
{children}
|
|
124
|
-
</th>
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
return (
|
|
129
|
-
<td className={classes} {...props}>
|
|
130
|
-
{children}
|
|
131
|
-
</td>
|
|
132
|
-
);
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
export const TableContainer: React.FC<TableContainerProps> = ({
|
|
136
|
-
className = "",
|
|
137
|
-
children,
|
|
138
|
-
...props
|
|
139
|
-
}) => {
|
|
140
|
-
const classes = ["table-container", className].filter(Boolean).join(" ");
|
|
141
|
-
|
|
142
|
-
return (
|
|
143
|
-
<div className={classes} {...props}>
|
|
144
|
-
{children}
|
|
145
|
-
</div>
|
|
146
|
-
);
|
|
147
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./Table";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './theme-control';
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { getSavedTheme, setTheme } from "../../utils/theme";
|
|
3
|
-
import "../../style/components/theme-control/theme-control.css";
|
|
4
|
-
|
|
5
|
-
type Theme = 'light' | 'dark';
|
|
6
|
-
|
|
7
|
-
interface ThemeOption {
|
|
8
|
-
value: Theme;
|
|
9
|
-
label: string;
|
|
10
|
-
icon: React.ReactNode;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const themeOptions: ThemeOption[] = [
|
|
14
|
-
{
|
|
15
|
-
value: 'light',
|
|
16
|
-
label: 'Light',
|
|
17
|
-
icon: (
|
|
18
|
-
<svg className="theme-control__icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
|
|
19
|
-
<circle cx="12" cy="12" r="5"/>
|
|
20
|
-
<line x1="12" y1="1" x2="12" y2="3"/>
|
|
21
|
-
<line x1="12" y1="21" x2="12" y2="23"/>
|
|
22
|
-
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/>
|
|
23
|
-
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/>
|
|
24
|
-
<line x1="1" y1="12" x2="3" y2="12"/>
|
|
25
|
-
<line x1="21" y1="12" x2="23" y2="12"/>
|
|
26
|
-
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/>
|
|
27
|
-
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
|
|
28
|
-
</svg>
|
|
29
|
-
),
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
value: 'dark',
|
|
33
|
-
label: 'Dark',
|
|
34
|
-
icon: (
|
|
35
|
-
<svg className="theme-control__icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
|
|
36
|
-
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>
|
|
37
|
-
</svg>
|
|
38
|
-
),
|
|
39
|
-
},
|
|
40
|
-
];
|
|
41
|
-
|
|
42
|
-
export interface ThemeControlProps {
|
|
43
|
-
onThemeChange?: (theme: Theme) => void;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const ThemeControl: React.FC<ThemeControlProps> = ({ onThemeChange }) => {
|
|
47
|
-
const [currentTheme, setCurrentTheme] = React.useState<Theme>(() => {
|
|
48
|
-
// Get initial theme from localStorage or default to light
|
|
49
|
-
return getSavedTheme();
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
React.useEffect(() => {
|
|
53
|
-
// Apply theme to document and save to localStorage
|
|
54
|
-
setTheme(currentTheme);
|
|
55
|
-
onThemeChange?.(currentTheme);
|
|
56
|
-
}, [currentTheme, onThemeChange]);
|
|
57
|
-
|
|
58
|
-
const handleThemeSelect = (theme: Theme) => {
|
|
59
|
-
setCurrentTheme(theme);
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
return (
|
|
63
|
-
<div className="theme-control">
|
|
64
|
-
{themeOptions.map((option) => (
|
|
65
|
-
<div
|
|
66
|
-
key={option.value}
|
|
67
|
-
className={`theme-control__option ${
|
|
68
|
-
currentTheme === option.value ? 'theme-control__option--active' : ''
|
|
69
|
-
}`}
|
|
70
|
-
onClick={() => handleThemeSelect(option.value)}
|
|
71
|
-
>
|
|
72
|
-
{option.icon}
|
|
73
|
-
<span>{option.label}</span>
|
|
74
|
-
</div>
|
|
75
|
-
))}
|
|
76
|
-
</div>
|
|
77
|
-
);
|
|
78
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./tooltip";
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import * as ReactDOM from "react-dom";
|
|
3
|
-
import "../../style/components/tooltip/tooltip.css";
|
|
4
|
-
|
|
5
|
-
export interface TooltipProps {
|
|
6
|
-
content: React.ReactNode;
|
|
7
|
-
children: React.ReactNode;
|
|
8
|
-
placement?: 'top' | 'bottom' | 'left' | 'right';
|
|
9
|
-
delay?: number;
|
|
10
|
-
disabled?: boolean;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
type ResolvedPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
14
|
-
|
|
15
|
-
export const Tooltip: React.FC<TooltipProps> = ({
|
|
16
|
-
content,
|
|
17
|
-
children,
|
|
18
|
-
placement = 'top',
|
|
19
|
-
delay = 0,
|
|
20
|
-
disabled = false
|
|
21
|
-
}) => {
|
|
22
|
-
const [isVisible, setIsVisible] = React.useState(false);
|
|
23
|
-
const [tooltipStyle, setTooltipStyle] = React.useState<React.CSSProperties>({});
|
|
24
|
-
const [resolvedPlacement, setResolvedPlacement] = React.useState<ResolvedPlacement>(placement);
|
|
25
|
-
|
|
26
|
-
const triggerRef = React.useRef<HTMLDivElement>(null);
|
|
27
|
-
const tooltipRef = React.useRef<HTMLDivElement>(null);
|
|
28
|
-
const timeoutRef = React.useRef<number>();
|
|
29
|
-
|
|
30
|
-
// Calcula posição com ajuste automático baseado no espaço disponível
|
|
31
|
-
React.useEffect(() => {
|
|
32
|
-
if (!isVisible || !triggerRef.current || !tooltipRef.current) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const updatePosition = () => {
|
|
37
|
-
if (!triggerRef.current || !tooltipRef.current) {
|
|
38
|
-
console.log('Tooltip refs not ready:', { trigger: !!triggerRef.current, tooltip: !!tooltipRef.current });
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
43
|
-
const tooltipRect = tooltipRef.current.getBoundingClientRect();
|
|
44
|
-
|
|
45
|
-
// Verifica se o tooltip tem dimensões válidas
|
|
46
|
-
if (tooltipRect.width === 0 || tooltipRect.height === 0) {
|
|
47
|
-
// Tenta novamente após um pequeno delay
|
|
48
|
-
setTimeout(updatePosition, 10);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const gap = 8;
|
|
52
|
-
const viewportWidth = window.innerWidth;
|
|
53
|
-
const viewportHeight = window.innerHeight;
|
|
54
|
-
|
|
55
|
-
// Calcula espaço disponível em cada direção
|
|
56
|
-
const spaceTop = triggerRect.top;
|
|
57
|
-
const spaceBottom = viewportHeight - triggerRect.bottom;
|
|
58
|
-
const spaceLeft = triggerRect.left;
|
|
59
|
-
const spaceRight = viewportWidth - triggerRect.right;
|
|
60
|
-
|
|
61
|
-
// Determina o melhor placement baseado no espaço disponível
|
|
62
|
-
let finalPlacement: ResolvedPlacement = placement as ResolvedPlacement;
|
|
63
|
-
|
|
64
|
-
if (placement === 'right' && spaceRight < tooltipRect.width + gap) {
|
|
65
|
-
finalPlacement = spaceLeft >= tooltipRect.width + gap ? 'left' : 'bottom';
|
|
66
|
-
} else if (placement === 'left' && spaceLeft < tooltipRect.width + gap) {
|
|
67
|
-
finalPlacement = spaceRight >= tooltipRect.width + gap ? 'right' : 'bottom';
|
|
68
|
-
} else if (placement === 'bottom' && spaceBottom < tooltipRect.height + gap) {
|
|
69
|
-
finalPlacement = spaceTop >= tooltipRect.height + gap ? 'top' : 'bottom';
|
|
70
|
-
} else if (placement === 'top' && spaceTop < tooltipRect.height + gap) {
|
|
71
|
-
finalPlacement = spaceBottom >= tooltipRect.height + gap ? 'bottom' : 'top';
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
setResolvedPlacement(finalPlacement);
|
|
75
|
-
|
|
76
|
-
const newStyle: React.CSSProperties = {
|
|
77
|
-
position: 'fixed',
|
|
78
|
-
zIndex: 10000,
|
|
79
|
-
opacity: 1,
|
|
80
|
-
visibility: 'visible',
|
|
81
|
-
pointerEvents: 'auto',
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
// Calcula posição baseada no placement final
|
|
85
|
-
switch (finalPlacement) {
|
|
86
|
-
case 'right':
|
|
87
|
-
newStyle.top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2;
|
|
88
|
-
newStyle.left = triggerRect.right + gap;
|
|
89
|
-
break;
|
|
90
|
-
case 'left':
|
|
91
|
-
newStyle.top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2;
|
|
92
|
-
newStyle.left = triggerRect.left - tooltipRect.width - gap;
|
|
93
|
-
break;
|
|
94
|
-
case 'top':
|
|
95
|
-
newStyle.top = triggerRect.top - tooltipRect.height - gap;
|
|
96
|
-
newStyle.left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2;
|
|
97
|
-
break;
|
|
98
|
-
case 'bottom':
|
|
99
|
-
default:
|
|
100
|
-
newStyle.top = triggerRect.bottom + gap;
|
|
101
|
-
newStyle.left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Ajuste para não sair da viewport horizontalmente
|
|
105
|
-
if (newStyle.left! < 0) {
|
|
106
|
-
newStyle.left = 0;
|
|
107
|
-
} else if (newStyle.left! + tooltipRect.width > viewportWidth) {
|
|
108
|
-
newStyle.left = viewportWidth - tooltipRect.width;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Ajuste para não sair da viewport verticalmente
|
|
112
|
-
if (newStyle.top! < 0) {
|
|
113
|
-
newStyle.top = 0;
|
|
114
|
-
} else if (newStyle.top! + tooltipRect.height > viewportHeight) {
|
|
115
|
-
newStyle.top = viewportHeight - tooltipRect.height;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
setTooltipStyle(newStyle);
|
|
119
|
-
console.log('Calculated position:', newStyle);
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
console.log('Tooltip isVisible:', isVisible, 'tooltipStyle:', tooltipStyle);
|
|
123
|
-
|
|
124
|
-
// Usa requestAnimationFrame para garantir que o tooltip foi renderizado
|
|
125
|
-
requestAnimationFrame(updatePosition);
|
|
126
|
-
|
|
127
|
-
window.addEventListener('resize', updatePosition);
|
|
128
|
-
window.addEventListener('scroll', updatePosition, true);
|
|
129
|
-
|
|
130
|
-
return () => {
|
|
131
|
-
window.removeEventListener('resize', updatePosition);
|
|
132
|
-
window.removeEventListener('scroll', updatePosition, true);
|
|
133
|
-
};
|
|
134
|
-
}, [isVisible, placement]);
|
|
135
|
-
|
|
136
|
-
const handleMouseEnter = () => {
|
|
137
|
-
if (disabled) return;
|
|
138
|
-
console.log('Tooltip mouse enter');
|
|
139
|
-
|
|
140
|
-
if (timeoutRef.current) {
|
|
141
|
-
clearTimeout(timeoutRef.current);
|
|
142
|
-
}
|
|
143
|
-
timeoutRef.current = setTimeout(() => {
|
|
144
|
-
console.log('Tooltip setting visible');
|
|
145
|
-
setIsVisible(true);
|
|
146
|
-
}, delay);
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
const handleMouseLeave = () => {
|
|
150
|
-
console.log('Tooltip mouse leave');
|
|
151
|
-
if (timeoutRef.current) {
|
|
152
|
-
clearTimeout(timeoutRef.current);
|
|
153
|
-
}
|
|
154
|
-
timeoutRef.current = setTimeout(() => {
|
|
155
|
-
console.log('Tooltip setting invisible');
|
|
156
|
-
setIsVisible(false);
|
|
157
|
-
}, 150); // Delay menor para esconder
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
const handleClick = () => {
|
|
161
|
-
// Ocultar tooltip imediatamente quando clicar
|
|
162
|
-
if (timeoutRef.current) {
|
|
163
|
-
clearTimeout(timeoutRef.current);
|
|
164
|
-
}
|
|
165
|
-
setIsVisible(false);
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
return (
|
|
169
|
-
<>
|
|
170
|
-
<div
|
|
171
|
-
ref={triggerRef}
|
|
172
|
-
onMouseEnter={handleMouseEnter}
|
|
173
|
-
onMouseLeave={handleMouseLeave}
|
|
174
|
-
onClick={handleClick}
|
|
175
|
-
style={{ display: 'inline-block' }}
|
|
176
|
-
>
|
|
177
|
-
{children}
|
|
178
|
-
</div>
|
|
179
|
-
{isVisible && !disabled &&
|
|
180
|
-
ReactDOM.createPortal(
|
|
181
|
-
<div
|
|
182
|
-
ref={tooltipRef}
|
|
183
|
-
className={`tooltip tooltip--${resolvedPlacement}`}
|
|
184
|
-
style={{
|
|
185
|
-
...tooltipStyle,
|
|
186
|
-
// Start with opacity 0 and visibility hidden to prevent initial flash
|
|
187
|
-
opacity: tooltipStyle.top !== undefined ? 1 : 0,
|
|
188
|
-
visibility: tooltipStyle.top !== undefined ? 'visible' : 'hidden',
|
|
189
|
-
}}
|
|
190
|
-
onMouseEnter={() => {
|
|
191
|
-
console.log('Tooltip mouse enter on tooltip');
|
|
192
|
-
if (timeoutRef.current) {
|
|
193
|
-
clearTimeout(timeoutRef.current);
|
|
194
|
-
}
|
|
195
|
-
}}
|
|
196
|
-
onMouseLeave={handleMouseLeave}
|
|
197
|
-
>
|
|
198
|
-
<div className="tooltip__content">
|
|
199
|
-
{content}
|
|
200
|
-
</div>
|
|
201
|
-
</div>,
|
|
202
|
-
document.body
|
|
203
|
-
)
|
|
204
|
-
}
|
|
205
|
-
</>
|
|
206
|
-
);
|
|
207
|
-
};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
interface NavbarTooltipContextType {
|
|
4
|
-
hasOpenPopover: boolean;
|
|
5
|
-
setHasOpenPopover: (open: boolean) => void;
|
|
6
|
-
openPopover: (id: string) => void;
|
|
7
|
-
closePopover: (id: string) => void;
|
|
8
|
-
activePopoverId: string | null;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const NavbarTooltipContext = React.createContext<NavbarTooltipContextType | undefined>(undefined);
|
|
12
|
-
|
|
13
|
-
export const NavbarTooltipProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
14
|
-
const [hasOpenPopover, setHasOpenPopover] = React.useState(false);
|
|
15
|
-
const [activePopoverId, setActivePopoverId] = React.useState<string | null>(null);
|
|
16
|
-
|
|
17
|
-
const openPopover = React.useCallback((id: string) => {
|
|
18
|
-
setActivePopoverId(id);
|
|
19
|
-
setHasOpenPopover(true);
|
|
20
|
-
}, []);
|
|
21
|
-
|
|
22
|
-
const closePopover = React.useCallback((id: string) => {
|
|
23
|
-
if (activePopoverId === id) {
|
|
24
|
-
setActivePopoverId(null);
|
|
25
|
-
setHasOpenPopover(false);
|
|
26
|
-
}
|
|
27
|
-
}, [activePopoverId]);
|
|
28
|
-
|
|
29
|
-
return (
|
|
30
|
-
<NavbarTooltipContext.Provider value={{
|
|
31
|
-
hasOpenPopover,
|
|
32
|
-
setHasOpenPopover,
|
|
33
|
-
openPopover,
|
|
34
|
-
closePopover,
|
|
35
|
-
activePopoverId
|
|
36
|
-
}}>
|
|
37
|
-
{children}
|
|
38
|
-
</NavbarTooltipContext.Provider>
|
|
39
|
-
);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export const useNavbarTooltip = () => {
|
|
43
|
-
const context = React.useContext(NavbarTooltipContext);
|
|
44
|
-
if (!context) {
|
|
45
|
-
throw new Error('useNavbarTooltip must be used within a NavbarTooltipProvider');
|
|
46
|
-
}
|
|
47
|
-
return context;
|
|
48
|
-
};
|
package/src/contexts/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './NavbarTooltipContext';
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
# Motion & Animation
|
|
2
|
-
|
|
3
|
-
O sistema de motion do Hellboy Design System define padrões consistentes para transições, animações e interações, garantindo uma experiência fluida e acessível.
|
|
4
|
-
|
|
5
|
-
## Princípios
|
|
6
|
-
|
|
7
|
-
### 1. Propósito
|
|
8
|
-
- **Funcional**: Animações devem ter propósito claro e melhorar a usabilidade
|
|
9
|
-
- **Consistente**: Padrões uniformes em todos os componentes
|
|
10
|
-
- **Acessível**: Respeito às preferências do usuário (prefers-reduced-motion)
|
|
11
|
-
|
|
12
|
-
### 2. Performance
|
|
13
|
-
- **GPU-accelerated**: Uso de transform e opacity para animações suaves
|
|
14
|
-
- **Otimizado**: Durações apropriadas para evitar distração
|
|
15
|
-
|
|
16
|
-
## Tokens de Motion
|
|
17
|
-
|
|
18
|
-
### Durações
|
|
19
|
-
```css
|
|
20
|
-
--motion-duration-fast: 0.15s /* Interações rápidas (hover, feedback) */
|
|
21
|
-
--motion-duration-base: 0.2s /* Interações padrão */
|
|
22
|
-
--motion-duration-slow: 0.3s /* Transições maiores */
|
|
23
|
-
--motion-duration-slower: 0.5s /* Animações de entrada/saída */
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### Funções de Easing
|
|
27
|
-
```css
|
|
28
|
-
--motion-easing-standard: cubic-bezier(0.4, 0.0, 0.2, 1) /* Padrão */
|
|
29
|
-
--motion-easing-decelerate: cubic-bezier(0.0, 0.0, 0.2, 1) /* Entrada */
|
|
30
|
-
--motion-easing-accelerate: cubic-bezier(0.4, 0.0, 1, 1) /* Saída */
|
|
31
|
-
--motion-easing-sharp: cubic-bezier(0.4, 0.0, 0.6, 1) /* Ênfase */
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### Transições Combinadas
|
|
35
|
-
```css
|
|
36
|
-
--motion-transition-fast: var(--motion-duration-fast) var(--motion-easing-standard)
|
|
37
|
-
--motion-transition-base: var(--motion-duration-base) var(--motion-easing-standard)
|
|
38
|
-
--motion-transition-slow: var(--motion-duration-slow) var(--motion-easing-standard)
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Transições Específicas
|
|
42
|
-
```css
|
|
43
|
-
--motion-transition-color: color var(--motion-transition-base)
|
|
44
|
-
--motion-transition-background: background-color var(--motion-transition-base)
|
|
45
|
-
--motion-transition-transform: transform var(--motion-transition-base)
|
|
46
|
-
--motion-transition-opacity: opacity var(--motion-transition-base)
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Padrões de Uso
|
|
50
|
-
|
|
51
|
-
### Estados Interativos
|
|
52
|
-
- **Hover**: Use `--motion-transition-fast` para feedback imediato
|
|
53
|
-
- **Active/Pressed**: Use `--motion-transition-fast` com transform scale
|
|
54
|
-
- **Focus**: Use `--motion-transition-base` para indicadores visuais
|
|
55
|
-
|
|
56
|
-
### Entrada e Saída
|
|
57
|
-
- **Fade In/Out**: Use `--motion-transition-fade-in` / `--motion-transition-fade-out`
|
|
58
|
-
- **Slide**: Use animações específicas por direção (slideInRight, slideOutLeft, etc.)
|
|
59
|
-
- **Scale**: Use `--motion-keyframes-scale-in` para elementos emergentes
|
|
60
|
-
|
|
61
|
-
### Componentes
|
|
62
|
-
- **Buttons**: Transições suaves em hover/active states
|
|
63
|
-
- **Form Controls**: Feedback visual consistente em focus/interaction
|
|
64
|
-
- **Navigation**: Transições fluidas entre estados
|
|
65
|
-
- **Overlays/Dialogs**: Animações de entrada/saída apropriadas
|
|
66
|
-
|
|
67
|
-
## Acessibilidade
|
|
68
|
-
|
|
69
|
-
### Reduced Motion
|
|
70
|
-
O sistema automaticamente respeita a preferência `prefers-reduced-motion: reduce`, reduzindo durações para 0.01ms quando ativada.
|
|
71
|
-
|
|
72
|
-
```css
|
|
73
|
-
@media (prefers-reduced-motion: reduce) {
|
|
74
|
-
:root {
|
|
75
|
-
--motion-duration-fast: 0.01s;
|
|
76
|
-
--motion-duration-base: 0.01s;
|
|
77
|
-
--motion-duration-slow: 0.01s;
|
|
78
|
-
--motion-duration-slower: 0.01s;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Boas Práticas
|
|
84
|
-
- Evite animações que causem enjoo (vertigo)
|
|
85
|
-
- Mantenha durações entre 0.15s - 0.5s
|
|
86
|
-
- Use easing functions apropriadas para o contexto
|
|
87
|
-
- Teste em diferentes dispositivos e velocidades
|
|
88
|
-
|
|
89
|
-
## Exemplos de Implementação
|
|
90
|
-
|
|
91
|
-
### Button Hover
|
|
92
|
-
```css
|
|
93
|
-
.btn {
|
|
94
|
-
transition: var(--motion-transition-background), var(--motion-transition-transform);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.btn:hover {
|
|
98
|
-
background-color: var(--color-primary-hover);
|
|
99
|
-
transform: translateY(-1px);
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Modal Entrance
|
|
104
|
-
```css
|
|
105
|
-
.modal[data-enter] {
|
|
106
|
-
animation: var(--motion-keyframes-scale-in);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.modal[data-leave] {
|
|
110
|
-
animation: var(--motion-keyframes-scale-out);
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Drawer Slide
|
|
115
|
-
```css
|
|
116
|
-
.drawer--right[data-enter] {
|
|
117
|
-
animation: var(--motion-keyframes-slide-in-right);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.drawer--right[data-leave] {
|
|
121
|
-
animation: var(--motion-keyframes-slide-out-right);
|
|
122
|
-
}
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## Ferramentas de Desenvolvimento
|
|
126
|
-
|
|
127
|
-
### Testando Motion
|
|
128
|
-
- Use `prefers-reduced-motion: reduce` no DevTools
|
|
129
|
-
- Teste em dispositivos móveis
|
|
130
|
-
- Verifique performance com Chrome DevTools
|
|
131
|
-
- Considere usuários com sensibilidade a motion
|
|
132
|
-
|
|
133
|
-
### Debugging
|
|
134
|
-
- Adicione `animation-play-state: paused` para inspeção
|
|
135
|
-
- Use `animation-fill-mode: forwards` para estados finais
|
|
136
|
-
- Monitore performance com `will-change` property
|
package/src/index.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hellboy Design System
|
|
3
|
-
* Core package with foundational components and tokens
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Styles
|
|
7
|
-
import './style/styles.css';
|
|
8
|
-
|
|
9
|
-
// Contexts
|
|
10
|
-
export * from './contexts';
|
|
11
|
-
|
|
12
|
-
// Components
|
|
13
|
-
export * from './components';
|
|
14
|
-
|
|
15
|
-
// Direct exports for new components
|
|
16
|
-
export { Popover } from './components/popover/popover';
|
|
17
|
-
export { Tooltip } from './components/tooltip/tooltip';
|
|
18
|
-
export { ThemeControl } from './components/theme-control/theme-control';
|
|
19
|
-
export { Drawer } from './components/drawer/drawer';
|
|
20
|
-
export { Table, TableHead, TableBody, TableRow, TableCell, TableContainer } from './components/table/Table';
|
|
21
|
-
export { PageIndex } from './components/page-index/PageIndex';
|
|
22
|
-
// Individual input components for tree-shaking
|
|
23
|
-
export { InputText } from './components/input/InputText';
|
|
24
|
-
export { InputEmail } from './components/input/InputEmail';
|
|
25
|
-
export { InputPassword } from './components/input/InputPassword';
|
|
26
|
-
export { InputSearch } from './components/input/InputSearch';
|
|
27
|
-
export { InputTel } from './components/input/InputTel';
|
|
28
|
-
export { InputUrl } from './components/input/InputUrl';
|
|
29
|
-
export { InputNumber } from './components/input/InputNumber';
|
|
30
|
-
export { InputDate } from './components/input/InputDate';
|
|
31
|
-
export { InputTime } from './components/input/InputTime';
|
|
32
|
-
export { InputDateTime } from './components/input/InputDateTime';
|
|
33
|
-
export { List, ListItem } from './components/list/List';
|
|
34
|
-
export { Select } from './components/select/Select';
|
|
35
|
-
|
|
36
|
-
// Theme utilities
|
|
37
|
-
export * from './utils/theme';
|
|
38
|
-
|
|
39
|
-
// User preferences utilities
|
|
40
|
-
export * from './utils/user-preferences';
|