@simplysm/solid 13.0.77 → 13.0.80
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 +23 -217
- package/dist/components/data/Pagination.js +2 -2
- package/dist/components/data/Pagination.js.map +2 -2
- package/dist/components/data/Table.js +2 -2
- package/dist/components/data/Table.js.map +2 -2
- package/dist/components/data/calendar/Calendar.js +2 -2
- package/dist/components/data/calendar/Calendar.js.map +2 -2
- package/dist/components/data/kanban/Kanban.js +3 -3
- package/dist/components/data/kanban/Kanban.js.map +2 -2
- package/dist/components/data/list/ListItem.js +1 -1
- package/dist/components/data/list/ListItem.js.map +1 -1
- package/dist/components/data/list/ListItem.styles.js +1 -1
- package/dist/components/data/list/ListItem.styles.js.map +1 -1
- package/dist/components/data/sheet/DataSheet.js +16 -16
- package/dist/components/data/sheet/DataSheet.js.map +2 -2
- package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheet.styles.js +2 -2
- package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
- package/dist/components/data/sheet/DataSheetConfigDialog.js +5 -5
- package/dist/components/data/sheet/DataSheetConfigDialog.js.map +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetExpansion.d.ts → createDataSheetExpansion.d.ts} +4 -4
- package/dist/components/data/sheet/hooks/createDataSheetExpansion.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetExpansion.js → createDataSheetExpansion.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetExpansion.js.map → createDataSheetExpansion.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.d.ts → createDataSheetFixedColumns.d.ts} +3 -3
- package/dist/components/data/sheet/hooks/createDataSheetFixedColumns.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.js → createDataSheetFixedColumns.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.js.map → createDataSheetFixedColumns.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.d.ts → createDataSheetHeaderCell.d.ts} +3 -3
- package/dist/components/data/sheet/hooks/createDataSheetHeaderCell.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.js → createDataSheetHeaderCell.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.js.map → createDataSheetHeaderCell.js.map} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetPaging.d.ts → createDataSheetPaging.d.ts} +4 -4
- package/dist/components/data/sheet/hooks/createDataSheetPaging.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetPaging.js → createDataSheetPaging.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetPaging.js.map → createDataSheetPaging.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetReorder.d.ts → createDataSheetReorder.d.ts} +3 -3
- package/dist/components/data/sheet/hooks/createDataSheetReorder.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetReorder.js → createDataSheetReorder.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetReorder.js.map → createDataSheetReorder.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetSelection.d.ts → createDataSheetSelection.d.ts} +4 -4
- package/dist/components/data/sheet/hooks/createDataSheetSelection.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetSelection.js → createDataSheetSelection.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetSelection.js.map → createDataSheetSelection.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetSorting.d.ts → createDataSheetSorting.d.ts} +4 -4
- package/dist/components/data/sheet/hooks/createDataSheetSorting.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetSorting.js → createDataSheetSorting.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetSorting.js.map → createDataSheetSorting.js.map} +2 -2
- package/dist/components/disclosure/Dialog.d.ts +2 -2
- package/dist/components/disclosure/Dialog.d.ts.map +1 -1
- package/dist/components/disclosure/Dialog.js +4 -4
- package/dist/components/disclosure/Dialog.js.map +2 -2
- package/dist/components/disclosure/Tabs.js +3 -3
- package/dist/components/disclosure/Tabs.js.map +2 -2
- package/dist/components/features/crud-sheet/CrudSheet.js +3 -3
- package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
- package/dist/components/features/data-select-button/DataSelectButton.d.ts +23 -9
- package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
- package/dist/components/features/data-select-button/DataSelectButton.js +1 -1
- package/dist/components/features/data-select-button/DataSelectButton.js.map +1 -1
- package/dist/components/features/permission-table/PermissionTable.js +2 -2
- package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
- package/dist/components/features/shared-data/SharedDataSelect.d.ts +23 -9
- package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelect.js.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +25 -10
- package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelectButton.js.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelectList.js +1 -1
- package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
- package/dist/components/feedback/Progress.d.ts +1 -1
- package/dist/components/feedback/Progress.d.ts.map +1 -1
- package/dist/components/feedback/Progress.js +3 -3
- package/dist/components/feedback/Progress.js.map +2 -2
- package/dist/components/form-control/Button.js +2 -2
- package/dist/components/form-control/Button.js.map +2 -2
- package/dist/components/form-control/DropdownTrigger.styles.js +2 -2
- package/dist/components/form-control/DropdownTrigger.styles.js.map +1 -1
- package/dist/components/form-control/ThemeToggle.js +4 -4
- package/dist/components/form-control/ThemeToggle.js.map +2 -2
- package/dist/components/form-control/checkbox/Checkbox.d.ts +3 -3
- package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.styles.js +3 -3
- package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
- package/dist/components/form-control/checkbox/CheckboxGroup.js +2 -2
- package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
- package/dist/components/form-control/checkbox/Radio.d.ts +3 -3
- package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/RadioGroup.js +2 -2
- package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
- package/dist/components/form-control/checkbox/SelectableBase.d.ts +3 -3
- package/dist/components/form-control/checkbox/SelectableBase.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/SelectableBase.js +10 -10
- package/dist/components/form-control/checkbox/SelectableBase.js.map +2 -2
- package/dist/components/form-control/color-picker/ColorPicker.js +2 -2
- package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
- package/dist/components/form-control/date-range-picker/DateRangePicker.js +1 -1
- package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
- package/dist/components/form-control/editor/EditorToolbar.js +1 -1
- package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
- package/dist/components/form-control/editor/RichTextEditor.js +2 -2
- package/dist/components/form-control/editor/RichTextEditor.js.map +2 -2
- package/dist/components/form-control/field/Field.styles.js +7 -7
- package/dist/components/form-control/field/Field.styles.js.map +1 -1
- package/dist/components/form-control/field/NumberInput.js +1 -1
- package/dist/components/form-control/field/NumberInput.js.map +1 -1
- package/dist/components/form-control/field/TextInput.js +1 -1
- package/dist/components/form-control/field/TextInput.js.map +1 -1
- package/dist/components/form-control/field/Textarea.js +1 -1
- package/dist/components/form-control/field/Textarea.js.map +1 -1
- package/dist/components/form-control/numpad/Numpad.d.ts +2 -2
- package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
- package/dist/components/form-control/numpad/Numpad.js +4 -4
- package/dist/components/form-control/numpad/Numpad.js.map +2 -2
- package/dist/components/form-control/select/Select.js +1 -1
- package/dist/components/form-control/select/Select.js.map +2 -2
- package/dist/components/form-control/state-preset/StatePreset.js +8 -8
- package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
- package/dist/components/layout/topbar/Topbar.js +3 -3
- package/dist/components/layout/topbar/Topbar.js.map +2 -2
- package/dist/providers/PwaUpdateProvider.d.ts.map +1 -1
- package/dist/providers/PwaUpdateProvider.js +11 -4
- package/dist/providers/PwaUpdateProvider.js.map +2 -2
- package/dist/styles/control.styles.d.ts +3 -3
- package/dist/styles/control.styles.d.ts.map +1 -1
- package/dist/styles/control.styles.js +2 -2
- package/dist/styles/control.styles.js.map +1 -1
- package/docs/data.md +204 -0
- package/docs/disclosure.md +139 -0
- package/docs/display.md +125 -0
- package/docs/features.md +282 -0
- package/docs/feedback.md +136 -0
- package/docs/form-controls.md +520 -0
- package/docs/helpers.md +172 -0
- package/docs/hooks.md +146 -0
- package/docs/layout.md +94 -0
- package/docs/providers.md +179 -0
- package/package.json +19 -18
- package/src/components/data/Pagination.tsx +2 -2
- package/src/components/data/Table.tsx +2 -2
- package/src/components/data/calendar/Calendar.tsx +2 -2
- package/src/components/data/kanban/Kanban.tsx +2 -2
- package/src/components/data/list/ListItem.styles.ts +1 -1
- package/src/components/data/list/ListItem.tsx +1 -1
- package/src/components/data/sheet/DataSheet.styles.ts +2 -2
- package/src/components/data/sheet/DataSheet.tsx +16 -16
- package/src/components/data/sheet/DataSheetConfigDialog.tsx +5 -5
- package/src/components/data/sheet/hooks/{useDataSheetExpansion.ts → createDataSheetExpansion.ts} +5 -5
- package/src/components/data/sheet/hooks/{useDataSheetFixedColumns.ts → createDataSheetFixedColumns.ts} +3 -3
- package/src/components/data/sheet/hooks/{useDataSheetHeaderCell.tsx → createDataSheetHeaderCell.tsx} +2 -2
- package/src/components/data/sheet/hooks/{useDataSheetPaging.ts → createDataSheetPaging.ts} +5 -5
- package/src/components/data/sheet/hooks/{useDataSheetReorder.ts → createDataSheetReorder.ts} +3 -3
- package/src/components/data/sheet/hooks/{useDataSheetSelection.ts → createDataSheetSelection.ts} +5 -5
- package/src/components/data/sheet/hooks/{useDataSheetSorting.ts → createDataSheetSorting.ts} +5 -5
- package/src/components/disclosure/Dialog.tsx +5 -5
- package/src/components/disclosure/Tabs.tsx +3 -3
- package/src/components/features/crud-sheet/CrudSheet.tsx +3 -3
- package/src/components/features/data-select-button/DataSelectButton.tsx +42 -11
- package/src/components/features/permission-table/PermissionTable.tsx +2 -2
- package/src/components/features/shared-data/SharedDataSelect.tsx +45 -14
- package/src/components/features/shared-data/SharedDataSelectButton.tsx +38 -11
- package/src/components/features/shared-data/SharedDataSelectList.tsx +1 -1
- package/src/components/feedback/Progress.tsx +4 -4
- package/src/components/form-control/Button.tsx +2 -2
- package/src/components/form-control/DropdownTrigger.styles.ts +2 -2
- package/src/components/form-control/ThemeToggle.tsx +4 -4
- package/src/components/form-control/checkbox/Checkbox.styles.ts +3 -3
- package/src/components/form-control/checkbox/Checkbox.tsx +3 -3
- package/src/components/form-control/checkbox/CheckboxGroup.tsx +2 -2
- package/src/components/form-control/checkbox/Radio.tsx +3 -3
- package/src/components/form-control/checkbox/RadioGroup.tsx +2 -2
- package/src/components/form-control/checkbox/SelectableBase.tsx +15 -15
- package/src/components/form-control/color-picker/ColorPicker.tsx +2 -2
- package/src/components/form-control/date-range-picker/DateRangePicker.tsx +1 -1
- package/src/components/form-control/editor/EditorToolbar.tsx +1 -1
- package/src/components/form-control/editor/RichTextEditor.tsx +2 -2
- package/src/components/form-control/field/Field.styles.ts +7 -7
- package/src/components/form-control/field/NumberInput.tsx +1 -1
- package/src/components/form-control/field/TextInput.tsx +1 -1
- package/src/components/form-control/field/Textarea.tsx +1 -1
- package/src/components/form-control/numpad/Numpad.tsx +6 -6
- package/src/components/form-control/select/Select.tsx +1 -1
- package/src/components/form-control/state-preset/StatePreset.tsx +9 -9
- package/src/components/layout/topbar/Topbar.tsx +3 -3
- package/src/providers/PwaUpdateProvider.tsx +12 -5
- package/src/styles/control.styles.ts +3 -3
- package/tests/components/data/sheet/hooks/{useDataSheetExpansion.spec.ts → createDataSheetExpansion.spec.ts} +16 -16
- package/tests/components/data/sheet/hooks/{useDataSheetFixedColumns.spec.ts → createDataSheetFixedColumns.spec.ts} +27 -27
- package/tests/components/data/sheet/hooks/{useDataSheetPaging.spec.ts → createDataSheetPaging.spec.ts} +16 -16
- package/tests/components/data/sheet/hooks/{useDataSheetReorder.spec.ts → createDataSheetReorder.spec.ts} +14 -14
- package/tests/components/data/sheet/hooks/{useDataSheetSelection.spec.ts → createDataSheetSelection.spec.ts} +26 -26
- package/tests/components/data/sheet/hooks/{useDataSheetSorting.spec.ts → createDataSheetSorting.spec.ts} +13 -13
- package/tests/components/disclosure/Dialog.spec.tsx +2 -2
- package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +55 -6
- package/tests/components/features/shared-data/SharedDataSelect.spec.tsx +40 -0
- package/tests/components/form-control/checkbox/Checkbox.spec.tsx +8 -8
- package/tests/components/form-control/checkbox/Radio.spec.tsx +9 -9
- package/tests/components/form-control/numpad/Numpad.spec.tsx +10 -10
- package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetPaging.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts.map +0 -1
|
@@ -2,26 +2,19 @@ import { type Component, type JSX, splitProps } from "solid-js";
|
|
|
2
2
|
import { type SharedDataAccessor } from "../../../providers/shared-data/SharedDataProvider";
|
|
3
3
|
import {
|
|
4
4
|
DataSelectButton,
|
|
5
|
-
type DataSelectButtonProps,
|
|
6
5
|
type SelectDialogBaseProps,
|
|
7
6
|
type DialogPropsField,
|
|
8
7
|
} from "../data-select-button/DataSelectButton";
|
|
9
8
|
import { type DialogShowOptions } from "../../disclosure/Dialog";
|
|
10
9
|
import { type ComponentSize } from "../../../styles/control.styles";
|
|
11
10
|
|
|
12
|
-
/**
|
|
13
|
-
|
|
11
|
+
/** Common props shared between single and multiple modes */
|
|
12
|
+
interface SharedDataSelectButtonCommonProps<
|
|
14
13
|
TItem,
|
|
15
14
|
TDialogProps extends SelectDialogBaseProps = SelectDialogBaseProps,
|
|
16
|
-
>
|
|
15
|
+
> {
|
|
17
16
|
/** Shared data accessor */
|
|
18
17
|
data: SharedDataAccessor<TItem>;
|
|
19
|
-
/** Currently selected key(s) (single or multiple) */
|
|
20
|
-
value?: DataSelectButtonProps<TItem>["value"];
|
|
21
|
-
/** Value change callback */
|
|
22
|
-
onValueChange?: DataSelectButtonProps<TItem>["onValueChange"];
|
|
23
|
-
/** Multiple selection mode */
|
|
24
|
-
multiple?: boolean;
|
|
25
18
|
/** Required input */
|
|
26
19
|
required?: boolean;
|
|
27
20
|
/** Disabled */
|
|
@@ -36,7 +29,41 @@ export type SharedDataSelectButtonProps<
|
|
|
36
29
|
dialogOptions?: DialogShowOptions;
|
|
37
30
|
/** Item rendering function */
|
|
38
31
|
children: (item: TItem) => JSX.Element;
|
|
39
|
-
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Single select props */
|
|
35
|
+
interface SharedDataSelectButtonSingleProps<
|
|
36
|
+
TItem,
|
|
37
|
+
TDialogProps extends SelectDialogBaseProps = SelectDialogBaseProps,
|
|
38
|
+
> extends SharedDataSelectButtonCommonProps<TItem, TDialogProps> {
|
|
39
|
+
/** Single select mode */
|
|
40
|
+
multiple?: false;
|
|
41
|
+
/** Currently selected key */
|
|
42
|
+
value?: string | number;
|
|
43
|
+
/** Value change callback */
|
|
44
|
+
onValueChange?: (value: string | number | undefined) => void;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Multiple select props */
|
|
48
|
+
interface SharedDataSelectButtonMultipleProps<
|
|
49
|
+
TItem,
|
|
50
|
+
TDialogProps extends SelectDialogBaseProps = SelectDialogBaseProps,
|
|
51
|
+
> extends SharedDataSelectButtonCommonProps<TItem, TDialogProps> {
|
|
52
|
+
/** Multiple select mode */
|
|
53
|
+
multiple: true;
|
|
54
|
+
/** Currently selected keys */
|
|
55
|
+
value?: (string | number)[];
|
|
56
|
+
/** Value change callback */
|
|
57
|
+
onValueChange?: (value: (string | number)[]) => void;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** SharedDataSelectButton Props */
|
|
61
|
+
export type SharedDataSelectButtonProps<
|
|
62
|
+
TItem,
|
|
63
|
+
TDialogProps extends SelectDialogBaseProps = SelectDialogBaseProps,
|
|
64
|
+
> =
|
|
65
|
+
| (SharedDataSelectButtonSingleProps<TItem, TDialogProps> & DialogPropsField<TDialogProps>)
|
|
66
|
+
| (SharedDataSelectButtonMultipleProps<TItem, TDialogProps> & DialogPropsField<TDialogProps>);
|
|
40
67
|
|
|
41
68
|
export function SharedDataSelectButton<
|
|
42
69
|
TItem,
|
|
@@ -207,7 +207,7 @@ const SharedDataSelectListInner = (<TItem,>(
|
|
|
207
207
|
<div
|
|
208
208
|
{...rest}
|
|
209
209
|
data-shared-data-select-list
|
|
210
|
-
class={twMerge(clsx("flex-col", gap.
|
|
210
|
+
class={twMerge(clsx("flex-col", gap.md), local.class)}
|
|
211
211
|
style={local.style}
|
|
212
212
|
>
|
|
213
213
|
{/* Header */}
|
|
@@ -8,7 +8,7 @@ import { type SemanticTheme, themeTokens } from "../../styles/theme.styles";
|
|
|
8
8
|
export type ProgressTheme = SemanticTheme;
|
|
9
9
|
|
|
10
10
|
export interface ProgressProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
11
|
-
/** Progress value (range 0-
|
|
11
|
+
/** Progress value (range 0-100, 0 = 0%, 100 = 100%) */
|
|
12
12
|
value: number;
|
|
13
13
|
theme?: ProgressTheme;
|
|
14
14
|
size?: ComponentSize;
|
|
@@ -16,7 +16,7 @@ export interface ProgressProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
const sizeClasses: Record<ComponentSize, string> = {
|
|
19
|
-
|
|
19
|
+
md: pad.md,
|
|
20
20
|
xs: pad.xs,
|
|
21
21
|
sm: pad.sm,
|
|
22
22
|
lg: pad.lg,
|
|
@@ -31,7 +31,7 @@ export const Progress: ParentComponent<ProgressProps> = (props) => {
|
|
|
31
31
|
const [local, rest] = splitProps(props, ["children", "class", "theme", "size", "value", "inset"]);
|
|
32
32
|
|
|
33
33
|
const getClassName = () => {
|
|
34
|
-
const size = local.size ?? "
|
|
34
|
+
const size = local.size ?? "md";
|
|
35
35
|
return twMerge(
|
|
36
36
|
clsx("relative block w-full overflow-hidden rounded", bg.subtle, "border", border.default),
|
|
37
37
|
sizeClasses[size],
|
|
@@ -45,7 +45,7 @@ export const Progress: ParentComponent<ProgressProps> = (props) => {
|
|
|
45
45
|
return clsx("absolute left-0 top-0 h-full", "z-[1]", "transition-all", barThemeClasses[theme]);
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
const getPercentText = () =>
|
|
48
|
+
const getPercentText = () => Math.max(0, Math.min(100, local.value)).toFixed(2) + "%";
|
|
49
49
|
|
|
50
50
|
return (
|
|
51
51
|
<div data-progress class={getClassName()} {...rest}>
|
|
@@ -24,7 +24,7 @@ const themeClasses = Object.fromEntries(
|
|
|
24
24
|
) as Record<ButtonTheme, Record<ButtonVariant, string>>;
|
|
25
25
|
|
|
26
26
|
const sizeClasses: Record<ButtonSize, string> = {
|
|
27
|
-
|
|
27
|
+
md: clsx("min-w-8", pad.md),
|
|
28
28
|
xs: clsx("min-w-4", pad.xs),
|
|
29
29
|
sm: clsx("min-w-6", pad.sm),
|
|
30
30
|
lg: clsx("min-w-9", pad.lg),
|
|
@@ -57,7 +57,7 @@ export const Button: ParentComponent<ButtonProps> = (props) => {
|
|
|
57
57
|
return twMerge(
|
|
58
58
|
"inline-flex items-center font-bold justify-center text-center cursor-pointer transition rounded focus:outline-none focus-visible:ring-2 border border-transparent",
|
|
59
59
|
themeClasses[theme][variant],
|
|
60
|
-
sizeClasses[local.size ?? "
|
|
60
|
+
sizeClasses[local.size ?? "md"],
|
|
61
61
|
local.inset && "rounded-none border-none",
|
|
62
62
|
local.disabled && state.disabled,
|
|
63
63
|
local.class,
|
|
@@ -29,7 +29,7 @@ export const triggerInsetClass = clsx(
|
|
|
29
29
|
);
|
|
30
30
|
|
|
31
31
|
export const triggerSizeClasses: Record<ComponentSize, string> = {
|
|
32
|
-
|
|
32
|
+
md: clsx(gap.md, pad.md),
|
|
33
33
|
xs: clsx(gap.xs, pad.xs),
|
|
34
34
|
sm: clsx(gap.sm, pad.sm),
|
|
35
35
|
lg: clsx(gap.lg, pad.lg),
|
|
@@ -47,7 +47,7 @@ export function getTriggerClass(options: {
|
|
|
47
47
|
}): string {
|
|
48
48
|
return twMerge(
|
|
49
49
|
triggerBaseClass,
|
|
50
|
-
triggerSizeClasses[options.size ?? "
|
|
50
|
+
triggerSizeClasses[options.size ?? "md"],
|
|
51
51
|
options.disabled && triggerDisabledClass,
|
|
52
52
|
options.inset && triggerInsetClass,
|
|
53
53
|
options.class,
|
|
@@ -8,7 +8,7 @@ import { useI18n } from "../../providers/i18n/I18nProvider";
|
|
|
8
8
|
import { type ComponentSize } from "../../styles/control.styles";
|
|
9
9
|
|
|
10
10
|
const sizeClasses: Record<ComponentSize, string> = {
|
|
11
|
-
|
|
11
|
+
md: "p-1.5",
|
|
12
12
|
xs: "p-0.5",
|
|
13
13
|
sm: "p-1",
|
|
14
14
|
lg: "p-2",
|
|
@@ -16,7 +16,7 @@ const sizeClasses: Record<ComponentSize, string> = {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
const iconSizes: Record<ComponentSize, string> = {
|
|
19
|
-
|
|
19
|
+
md: "1.25em",
|
|
20
20
|
xs: "0.75em",
|
|
21
21
|
sm: "1em",
|
|
22
22
|
lg: "1.5em",
|
|
@@ -63,9 +63,9 @@ export const ThemeToggle: Component<ThemeToggleProps> = (props) => {
|
|
|
63
63
|
|
|
64
64
|
const modeLabel = () => i18n.t(modeLabelKeys[mode()]);
|
|
65
65
|
|
|
66
|
-
const getClassName = () => twMerge(sizeClasses[local.size ?? "
|
|
66
|
+
const getClassName = () => twMerge(sizeClasses[local.size ?? "md"], local.class);
|
|
67
67
|
|
|
68
|
-
const iconSize = () => iconSizes[local.size ?? "
|
|
68
|
+
const iconSize = () => iconSizes[local.size ?? "md"];
|
|
69
69
|
|
|
70
70
|
return (
|
|
71
71
|
<Button
|
|
@@ -31,7 +31,7 @@ export const checkedClass = clsx("border-primary-500 bg-primary-500", "text-whit
|
|
|
31
31
|
|
|
32
32
|
// Size-specific styles
|
|
33
33
|
export const checkboxSizeClasses: Record<CheckboxSize, string> = {
|
|
34
|
-
|
|
34
|
+
md: clsx("h-field", pad.md),
|
|
35
35
|
xs: clsx("h-field-xs", pad.xs),
|
|
36
36
|
sm: clsx("h-field-sm", pad.sm),
|
|
37
37
|
lg: clsx("h-field-lg", pad.lg),
|
|
@@ -49,7 +49,7 @@ export const checkboxInsetClass = clsx(
|
|
|
49
49
|
|
|
50
50
|
// Inset size-specific heights (excluding 2px border)
|
|
51
51
|
export const checkboxInsetSizeHeightClasses: Record<CheckboxSize, string> = {
|
|
52
|
-
|
|
52
|
+
md: clsx`h-field-inset`,
|
|
53
53
|
xs: clsx`h-field-inset-xs`,
|
|
54
54
|
sm: clsx`h-field-inset-sm`,
|
|
55
55
|
lg: clsx`h-field-inset-lg`,
|
|
@@ -57,7 +57,7 @@ export const checkboxInsetSizeHeightClasses: Record<CheckboxSize, string> = {
|
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
// Inline styles
|
|
60
|
-
export const checkboxInlineClass = clsx("!h-auto", "!p-0", gap.
|
|
60
|
+
export const checkboxInlineClass = clsx("!h-auto", "!p-0", gap.md);
|
|
61
61
|
|
|
62
62
|
// Disabled styles
|
|
63
63
|
export const checkboxDisabledClass = clsx(state.disabled);
|
|
@@ -5,14 +5,14 @@ import { Icon } from "../../display/Icon";
|
|
|
5
5
|
import { SelectableBase } from "./SelectableBase";
|
|
6
6
|
|
|
7
7
|
export interface CheckboxProps {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
checked?: boolean;
|
|
9
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
10
10
|
disabled?: boolean;
|
|
11
11
|
size?: CheckboxSize;
|
|
12
12
|
inset?: boolean;
|
|
13
13
|
inline?: boolean;
|
|
14
14
|
required?: boolean;
|
|
15
|
-
validate?: (
|
|
15
|
+
validate?: (checked: boolean) => string | undefined;
|
|
16
16
|
lazyValidation?: boolean;
|
|
17
17
|
class?: string;
|
|
18
18
|
style?: JSX.CSSProperties;
|
|
@@ -86,8 +86,8 @@ function CheckboxGroupItem<TValue = unknown>(props: {
|
|
|
86
86
|
|
|
87
87
|
return (
|
|
88
88
|
<Checkbox
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
checked={isSelected()}
|
|
90
|
+
onCheckedChange={handleChange}
|
|
91
91
|
disabled={props.disabled ?? ctx.disabled()}
|
|
92
92
|
size={ctx.size()}
|
|
93
93
|
inline={ctx.inline()}
|
|
@@ -3,14 +3,14 @@ import type { CheckboxSize } from "./Checkbox.styles";
|
|
|
3
3
|
import { SelectableBase } from "./SelectableBase";
|
|
4
4
|
|
|
5
5
|
export interface RadioProps {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
8
8
|
disabled?: boolean;
|
|
9
9
|
size?: CheckboxSize;
|
|
10
10
|
inset?: boolean;
|
|
11
11
|
inline?: boolean;
|
|
12
12
|
required?: boolean;
|
|
13
|
-
validate?: (
|
|
13
|
+
validate?: (checked: boolean) => string | undefined;
|
|
14
14
|
lazyValidation?: boolean;
|
|
15
15
|
class?: string;
|
|
16
16
|
style?: JSX.CSSProperties;
|
|
@@ -83,8 +83,8 @@ function RadioGroupItem<TValue = unknown>(props: {
|
|
|
83
83
|
|
|
84
84
|
return (
|
|
85
85
|
<Radio
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
checked={isSelected()}
|
|
87
|
+
onCheckedChange={handleChange}
|
|
88
88
|
disabled={props.disabled ?? ctx.disabled()}
|
|
89
89
|
size={ctx.size()}
|
|
90
90
|
inline={ctx.inline()}
|
|
@@ -19,14 +19,14 @@ import { Invalid } from "../Invalid";
|
|
|
19
19
|
void ripple;
|
|
20
20
|
|
|
21
21
|
export interface SelectableBaseProps {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
checked?: boolean;
|
|
23
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
24
24
|
disabled?: boolean;
|
|
25
25
|
size?: CheckboxSize;
|
|
26
26
|
inset?: boolean;
|
|
27
27
|
inline?: boolean;
|
|
28
28
|
required?: boolean;
|
|
29
|
-
validate?: (
|
|
29
|
+
validate?: (checked: boolean) => string | undefined;
|
|
30
30
|
lazyValidation?: boolean;
|
|
31
31
|
class?: string;
|
|
32
32
|
style?: JSX.CSSProperties;
|
|
@@ -42,8 +42,8 @@ export interface SelectableBaseConfig {
|
|
|
42
42
|
|
|
43
43
|
export const SelectableBase: ParentComponent<SelectableBaseProps & { config: SelectableBaseConfig }> = (props) => {
|
|
44
44
|
const [local, rest] = splitProps(props, [
|
|
45
|
-
"
|
|
46
|
-
"
|
|
45
|
+
"checked",
|
|
46
|
+
"onCheckedChange",
|
|
47
47
|
"disabled",
|
|
48
48
|
"size",
|
|
49
49
|
"inset",
|
|
@@ -59,14 +59,14 @@ export const SelectableBase: ParentComponent<SelectableBaseProps & { config: Sel
|
|
|
59
59
|
|
|
60
60
|
const i18n = useI18n();
|
|
61
61
|
|
|
62
|
-
const [
|
|
63
|
-
value: () => local.
|
|
64
|
-
onChange: () => local.
|
|
62
|
+
const [checked, setChecked] = createControllableSignal({
|
|
63
|
+
value: () => local.checked ?? false,
|
|
64
|
+
onChange: () => local.onCheckedChange,
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
const handleClick = () => {
|
|
68
68
|
if (local.disabled) return;
|
|
69
|
-
|
|
69
|
+
setChecked((v) => local.config.onToggle(v));
|
|
70
70
|
};
|
|
71
71
|
|
|
72
72
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
@@ -79,19 +79,19 @@ export const SelectableBase: ParentComponent<SelectableBaseProps & { config: Sel
|
|
|
79
79
|
const getWrapperClass = () =>
|
|
80
80
|
twMerge(
|
|
81
81
|
checkboxBaseClass,
|
|
82
|
-
checkboxSizeClasses[local.size ?? "
|
|
82
|
+
checkboxSizeClasses[local.size ?? "md"],
|
|
83
83
|
local.inset && checkboxInsetClass,
|
|
84
|
-
local.inset && checkboxInsetSizeHeightClasses[local.size ?? "
|
|
84
|
+
local.inset && checkboxInsetSizeHeightClasses[local.size ?? "md"],
|
|
85
85
|
local.inline && checkboxInlineClass,
|
|
86
86
|
local.disabled && checkboxDisabledClass,
|
|
87
87
|
local.class,
|
|
88
88
|
);
|
|
89
89
|
|
|
90
90
|
const getIndicatorClass = () =>
|
|
91
|
-
twMerge(indicatorBaseClass, local.config.indicatorShape,
|
|
91
|
+
twMerge(indicatorBaseClass, local.config.indicatorShape, checked() && checkedClass);
|
|
92
92
|
|
|
93
93
|
const errorMsg = createMemo(() => {
|
|
94
|
-
const v = local.
|
|
94
|
+
const v = local.checked ?? false;
|
|
95
95
|
if (local.required && !v) return i18n.t("validation.requiredSelection");
|
|
96
96
|
return local.validate?.(v);
|
|
97
97
|
});
|
|
@@ -102,7 +102,7 @@ export const SelectableBase: ParentComponent<SelectableBaseProps & { config: Sel
|
|
|
102
102
|
{...rest}
|
|
103
103
|
use:ripple={!local.disabled}
|
|
104
104
|
role={local.config.role}
|
|
105
|
-
aria-checked={
|
|
105
|
+
aria-checked={checked()}
|
|
106
106
|
tabIndex={local.disabled ? -1 : 0}
|
|
107
107
|
class={getWrapperClass()}
|
|
108
108
|
style={local.style}
|
|
@@ -110,7 +110,7 @@ export const SelectableBase: ParentComponent<SelectableBaseProps & { config: Sel
|
|
|
110
110
|
onKeyDown={handleKeyDown}
|
|
111
111
|
>
|
|
112
112
|
<div class={getIndicatorClass()}>
|
|
113
|
-
<Show when={
|
|
113
|
+
<Show when={checked()}>
|
|
114
114
|
{local.config.indicatorContent}
|
|
115
115
|
</Show>
|
|
116
116
|
</div>
|
|
@@ -8,7 +8,7 @@ import { useI18n } from "../../../providers/i18n/I18nProvider";
|
|
|
8
8
|
|
|
9
9
|
// Size-specific styles
|
|
10
10
|
const sizeClasses: Record<ComponentSize, string> = {
|
|
11
|
-
|
|
11
|
+
md: clsx`size-field`,
|
|
12
12
|
xs: "size-field-xs",
|
|
13
13
|
sm: "size-field-sm",
|
|
14
14
|
lg: "size-field-lg",
|
|
@@ -88,7 +88,7 @@ export const ColorPicker: Component<ColorPickerProps> = (props) => {
|
|
|
88
88
|
twMerge(
|
|
89
89
|
|
|
90
90
|
"size-field rounded border border-black/10 dark:border-white/10 cursor-pointer [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:border-none [&::-webkit-color-swatch]:rounded-none [&::-moz-color-swatch]:border-none [&::-moz-color-swatch]:rounded-none",
|
|
91
|
-
sizeClasses[local.size ?? "
|
|
91
|
+
sizeClasses[local.size ?? "md"],
|
|
92
92
|
|
|
93
93
|
local.disabled && "cursor-default relative before:absolute before:bottom-0 before:left-0 before:right-0 before:top-0 before:bg-[linear-gradient(45deg,transparent_40%,rgba(0,0,0,0.4)_40%,rgba(0,0,0,0.4)_60%,transparent_60%)]",
|
|
94
94
|
local.class,
|
|
@@ -154,7 +154,7 @@ export const DateRangePicker: Component<DateRangePickerProps> = (props) => {
|
|
|
154
154
|
};
|
|
155
155
|
|
|
156
156
|
// Wrapper CSS class
|
|
157
|
-
const getWrapperClass = () => twMerge(clsx("inline-flex items-center", gap.
|
|
157
|
+
const getWrapperClass = () => twMerge(clsx("inline-flex items-center", gap.md), local.class);
|
|
158
158
|
|
|
159
159
|
return (
|
|
160
160
|
<div {...rest} data-date-range-picker class={getWrapperClass()} style={local.style}>
|
|
@@ -177,7 +177,7 @@ export const EditorToolbar: Component<EditorToolbarProps> = (props) => {
|
|
|
177
177
|
};
|
|
178
178
|
|
|
179
179
|
return (
|
|
180
|
-
<div class={twMerge(clsx("flex flex-wrap items-center", gap.sm, "border-b", border.default, pad.
|
|
180
|
+
<div class={twMerge(clsx("flex flex-wrap items-center", gap.sm, "border-b", border.default, pad.md), props.class)}>
|
|
181
181
|
{renderToolbarItems(toolbarItemsBefore)}
|
|
182
182
|
|
|
183
183
|
{/* Color pickers */}
|
|
@@ -50,7 +50,7 @@ export interface RichTextEditorProps {
|
|
|
50
50
|
|
|
51
51
|
// Editor content size-based style
|
|
52
52
|
const editorContentSizeClasses: Record<FieldSize, string> = {
|
|
53
|
-
|
|
53
|
+
md: clsx(pad.xl, "min-h-32"),
|
|
54
54
|
xs: clsx(pad.xs, "min-h-12"),
|
|
55
55
|
sm: clsx(pad.sm, "min-h-24"),
|
|
56
56
|
lg: clsx(pad.lg, "min-h-48"),
|
|
@@ -154,7 +154,7 @@ export const RichTextEditor: Component<RichTextEditorProps> = (props) => {
|
|
|
154
154
|
);
|
|
155
155
|
|
|
156
156
|
const getContentClass = () =>
|
|
157
|
-
twMerge("outline-none prose prose-sm max-w-none dark:prose-invert", editorContentSizeClasses[local.size ?? "
|
|
157
|
+
twMerge("outline-none prose prose-sm max-w-none dark:prose-invert", editorContentSizeClasses[local.size ?? "md"]);
|
|
158
158
|
|
|
159
159
|
return (
|
|
160
160
|
<div {...rest} data-rich-text-editor class={getWrapperClass()} style={local.style}>
|
|
@@ -24,7 +24,7 @@ export const fieldBaseClass = clsx(
|
|
|
24
24
|
|
|
25
25
|
// Size-specific styles
|
|
26
26
|
export const fieldSizeClasses: Record<FieldSize, string> = {
|
|
27
|
-
|
|
27
|
+
md: clsx("h-field", pad.md),
|
|
28
28
|
xs: clsx("h-field-xs", pad.xs),
|
|
29
29
|
sm: clsx("h-field-sm", pad.sm),
|
|
30
30
|
lg: clsx("h-field-lg", pad.lg),
|
|
@@ -42,7 +42,7 @@ export const fieldInsetClass = clsx(
|
|
|
42
42
|
|
|
43
43
|
// Inset heights (excluding 2px border)
|
|
44
44
|
export const fieldInsetSizeHeightClasses: Record<FieldSize, string> = {
|
|
45
|
-
|
|
45
|
+
md: clsx`h-field-inset`,
|
|
46
46
|
xs: clsx`h-field-inset-xs`,
|
|
47
47
|
sm: clsx`h-field-inset-sm`,
|
|
48
48
|
lg: clsx`h-field-inset-lg`,
|
|
@@ -57,7 +57,7 @@ export const textAreaBaseClass = clsx("inline-block w-48", fieldSurface);
|
|
|
57
57
|
|
|
58
58
|
// Textarea size-specific styles (h-field-* removed)
|
|
59
59
|
export const textAreaSizeClasses: Record<FieldSize, string> = {
|
|
60
|
-
|
|
60
|
+
md: pad.md,
|
|
61
61
|
xs: pad.xs,
|
|
62
62
|
sm: pad.sm,
|
|
63
63
|
lg: pad.lg,
|
|
@@ -75,7 +75,7 @@ export const fieldInputClass = clsx(
|
|
|
75
75
|
|
|
76
76
|
// Prefix icon gap classes (replaces nested ternary)
|
|
77
77
|
export const fieldGapClasses: Record<FieldSize, string> = {
|
|
78
|
-
|
|
78
|
+
md: gap.md,
|
|
79
79
|
xs: gap.xs,
|
|
80
80
|
sm: gap.sm,
|
|
81
81
|
lg: gap.lg,
|
|
@@ -93,10 +93,10 @@ export function getFieldWrapperClass(options: {
|
|
|
93
93
|
return twMerge(
|
|
94
94
|
fieldBaseClass,
|
|
95
95
|
options.extra,
|
|
96
|
-
fieldSizeClasses[options.size ?? "
|
|
96
|
+
fieldSizeClasses[options.size ?? "md"],
|
|
97
97
|
options.disabled && fieldDisabledClass,
|
|
98
98
|
options.inset && fieldInsetClass,
|
|
99
|
-
options.inset && fieldInsetSizeHeightClasses[options.size ?? "
|
|
99
|
+
options.inset && fieldInsetSizeHeightClasses[options.size ?? "md"],
|
|
100
100
|
options.includeCustomClass,
|
|
101
101
|
);
|
|
102
102
|
}
|
|
@@ -110,7 +110,7 @@ export function getTextareaWrapperClass(options: {
|
|
|
110
110
|
}): string {
|
|
111
111
|
return twMerge(
|
|
112
112
|
textAreaBaseClass,
|
|
113
|
-
textAreaSizeClasses[options.size ?? "
|
|
113
|
+
textAreaSizeClasses[options.size ?? "md"],
|
|
114
114
|
options.disabled && fieldDisabledClass,
|
|
115
115
|
options.inset && fieldInsetClass,
|
|
116
116
|
options.includeCustomClass,
|
|
@@ -280,7 +280,7 @@ const NumberInputInner = (props: NumberInputProps): JSX.Element => {
|
|
|
280
280
|
disabled: local.disabled,
|
|
281
281
|
inset: local.inset,
|
|
282
282
|
includeCustomClass: includeCustomClass && local.class,
|
|
283
|
-
extra: prefixEl() && fieldGapClasses[local.size ?? "
|
|
283
|
+
extra: prefixEl() && fieldGapClasses[local.size ?? "md"],
|
|
284
284
|
});
|
|
285
285
|
|
|
286
286
|
const isEditable = () => !local.disabled && !local.readOnly;
|
|
@@ -224,7 +224,7 @@ const TextInputInner = (props: TextInputProps) => {
|
|
|
224
224
|
disabled: local.disabled,
|
|
225
225
|
inset: local.inset,
|
|
226
226
|
includeCustomClass: includeCustomClass && local.class,
|
|
227
|
-
extra: prefixEl() && fieldGapClasses[local.size ?? "
|
|
227
|
+
extra: prefixEl() && fieldGapClasses[local.size ?? "md"],
|
|
228
228
|
});
|
|
229
229
|
|
|
230
230
|
// Whether editable
|
|
@@ -165,7 +165,7 @@ export const Textarea: Component<TextareaProps> = (props) => {
|
|
|
165
165
|
);
|
|
166
166
|
|
|
167
167
|
const getTextareaClass = () =>
|
|
168
|
-
twMerge(textareaBaseClass, textAreaSizeClasses[local.size ?? "
|
|
168
|
+
twMerge(textareaBaseClass, textAreaSizeClasses[local.size ?? "md"], local.inset && "p-0");
|
|
169
169
|
|
|
170
170
|
// Whether editable
|
|
171
171
|
const isEditable = () => !local.disabled && !local.readOnly;
|
|
@@ -21,9 +21,9 @@ export interface NumpadProps {
|
|
|
21
21
|
/** Disable direct text field input */
|
|
22
22
|
inputDisabled?: boolean;
|
|
23
23
|
/** Show Enter button */
|
|
24
|
-
|
|
24
|
+
withEnterButton?: boolean;
|
|
25
25
|
/** Show minus button */
|
|
26
|
-
|
|
26
|
+
withMinusButton?: boolean;
|
|
27
27
|
/** Enter button click callback */
|
|
28
28
|
onEnterButtonClick?: () => void;
|
|
29
29
|
/** Size */
|
|
@@ -132,7 +132,7 @@ export const Numpad: Component<NumpadProps> = (props) => {
|
|
|
132
132
|
return (
|
|
133
133
|
<div data-numpad class={twMerge(clsx("grid grid-cols-3", gap.sm, "w-auto"), props.class)} style={props.style}>
|
|
134
134
|
{/* Row 1: NumberInput + optional ENT */}
|
|
135
|
-
<div class={clsx("flex", props.
|
|
135
|
+
<div class={clsx("flex", props.withEnterButton ? "col-span-2" : "col-span-3")}>
|
|
136
136
|
<NumberInput
|
|
137
137
|
value={value()}
|
|
138
138
|
onValueChange={handleFieldValueChange}
|
|
@@ -143,7 +143,7 @@ export const Numpad: Component<NumpadProps> = (props) => {
|
|
|
143
143
|
useGrouping={false}
|
|
144
144
|
/>
|
|
145
145
|
</div>
|
|
146
|
-
<Show when={props.
|
|
146
|
+
<Show when={props.withEnterButton}>
|
|
147
147
|
<Button
|
|
148
148
|
theme="primary"
|
|
149
149
|
variant="solid"
|
|
@@ -157,7 +157,7 @@ export const Numpad: Component<NumpadProps> = (props) => {
|
|
|
157
157
|
</Show>
|
|
158
158
|
|
|
159
159
|
{/* Row 2: optional Minus + C + BS */}
|
|
160
|
-
<Show when={props.
|
|
160
|
+
<Show when={props.withMinusButton}>
|
|
161
161
|
<Button size={buttonSize()} inset onClick={handleMinus}>
|
|
162
162
|
-
|
|
163
163
|
</Button>
|
|
@@ -166,7 +166,7 @@ export const Numpad: Component<NumpadProps> = (props) => {
|
|
|
166
166
|
size={buttonSize()}
|
|
167
167
|
inset
|
|
168
168
|
onClick={handleClear}
|
|
169
|
-
class={clsx(props.
|
|
169
|
+
class={clsx(props.withMinusButton ? "col-span-1" : "col-span-2", "text-danger-500")}
|
|
170
170
|
>
|
|
171
171
|
<Icon icon={IconEraser} />
|
|
172
172
|
</Button>
|
|
@@ -649,7 +649,7 @@ const SelectInnerComponent = <TValue,>(props: SelectProps<TValue>) => {
|
|
|
649
649
|
</Show>
|
|
650
650
|
{/* Select all/deselect buttons */}
|
|
651
651
|
<Show when={showSelectAllBar()}>
|
|
652
|
-
<div class={clsx("flex gap-2 border-b", border.subtle, pad.
|
|
652
|
+
<div class={clsx("flex gap-2 border-b", border.subtle, pad.md, "text-xs")}>
|
|
653
653
|
<button
|
|
654
654
|
type="button"
|
|
655
655
|
data-select-all
|
|
@@ -34,7 +34,7 @@ export interface StatePresetProps<TValue> {
|
|
|
34
34
|
// ── Style constants ──
|
|
35
35
|
|
|
36
36
|
const chipSizeClasses: Record<StatePresetSize, string> = {
|
|
37
|
-
|
|
37
|
+
md: pad.md,
|
|
38
38
|
xs: clsx(pad.xs, "text-sm"),
|
|
39
39
|
sm: pad.sm,
|
|
40
40
|
lg: pad.lg,
|
|
@@ -42,7 +42,7 @@ const chipSizeClasses: Record<StatePresetSize, string> = {
|
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
const iconBtnSizeClasses: Record<StatePresetSize, string> = {
|
|
45
|
-
|
|
45
|
+
md: "p-0.5",
|
|
46
46
|
xs: "p-0",
|
|
47
47
|
sm: "p-0.5",
|
|
48
48
|
lg: "p-1",
|
|
@@ -50,7 +50,7 @@ const iconBtnSizeClasses: Record<StatePresetSize, string> = {
|
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
const starBtnSizeClasses: Record<StatePresetSize, string> = {
|
|
53
|
-
|
|
53
|
+
md: "p-1",
|
|
54
54
|
xs: "p-0",
|
|
55
55
|
sm: "p-0.5",
|
|
56
56
|
lg: "p-1.5",
|
|
@@ -58,7 +58,7 @@ const starBtnSizeClasses: Record<StatePresetSize, string> = {
|
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
const inputSizeClasses: Record<StatePresetSize, string> = {
|
|
61
|
-
|
|
61
|
+
md: clsx(pad.md, "w-24"),
|
|
62
62
|
xs: clsx("w-16", pad.xs, "text-sm"),
|
|
63
63
|
sm: clsx(pad.sm, "w-20"),
|
|
64
64
|
lg: clsx(pad.lg, "w-32"),
|
|
@@ -194,22 +194,22 @@ function StatePresetInner<TValue>(props: StatePresetProps<TValue>): JSX.Element
|
|
|
194
194
|
const containerClass = () => twMerge(clsx("inline-flex items-center", gap.lg, "flex-wrap"), local.class);
|
|
195
195
|
|
|
196
196
|
const resolvedChipClass = () => twMerge(
|
|
197
|
-
clsx("inline-flex items-center", gap.
|
|
198
|
-
chipSizeClasses[local.size ?? "
|
|
197
|
+
clsx("inline-flex items-center", gap.md, "rounded-full", bg.subtle, text.default, "cursor-default"),
|
|
198
|
+
chipSizeClasses[local.size ?? "md"],
|
|
199
199
|
);
|
|
200
200
|
|
|
201
201
|
const resolvedIconBtnClass = () =>
|
|
202
|
-
twMerge("rounded-full", iconBtnSizeClasses[local.size ?? "
|
|
202
|
+
twMerge("rounded-full", iconBtnSizeClasses[local.size ?? "md"]);
|
|
203
203
|
|
|
204
204
|
const resolvedStarBtnClass = () =>
|
|
205
205
|
twMerge(
|
|
206
206
|
clsx("inline-flex cursor-pointer items-center justify-center rounded-full text-warning-500 transition-colors focus:outline-none", themeTokens.warning.hoverBg),
|
|
207
|
-
starBtnSizeClasses[local.size ?? "
|
|
207
|
+
starBtnSizeClasses[local.size ?? "md"],
|
|
208
208
|
);
|
|
209
209
|
|
|
210
210
|
const resolvedInputClass = () => twMerge(
|
|
211
211
|
clsx("rounded-full", bg.subtle, text.default, "border border-transparent focus:outline-none focus:ring-1 focus:ring-primary-400", text.placeholder),
|
|
212
|
-
inputSizeClasses[local.size ?? "
|
|
212
|
+
inputSizeClasses[local.size ?? "md"],
|
|
213
213
|
);
|
|
214
214
|
|
|
215
215
|
return (
|