@ayasofyazilim/ui 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/components/accordion.tsx +2 -2
- package/src/components/alert-dialog.tsx +5 -5
- package/src/components/alert.tsx +4 -4
- package/src/components/avatar.tsx +3 -3
- package/src/components/badge.tsx +2 -2
- package/src/components/breadcrumb.tsx +2 -2
- package/src/components/button-group.tsx +5 -5
- package/src/components/button.tsx +4 -3
- package/src/components/calendar.tsx +21 -24
- package/src/components/card.tsx +4 -4
- package/src/components/carousel.tsx +8 -8
- package/src/components/chart.tsx +11 -11
- package/src/components/checkbox.tsx +2 -2
- package/src/components/command.tsx +8 -8
- package/src/components/context-menu.tsx +9 -9
- package/src/components/dialog.tsx +4 -4
- package/src/components/drawer.tsx +4 -4
- package/src/components/dropdown-menu.tsx +9 -9
- package/src/components/field.tsx +13 -13
- package/src/components/form.tsx +4 -4
- package/src/components/hover-card.tsx +2 -2
- package/src/components/input-group.tsx +10 -10
- package/src/components/input-otp.tsx +3 -3
- package/src/components/input.tsx +2 -2
- package/src/components/item.tsx +9 -9
- package/src/components/kbd.tsx +2 -2
- package/src/components/label.tsx +2 -2
- package/src/components/menubar.tsx +11 -11
- package/src/components/navigation-menu.tsx +9 -9
- package/src/components/pagination.tsx +3 -6
- package/src/components/progress.tsx +2 -2
- package/src/components/radio-group.tsx +2 -2
- package/src/components/resizable.tsx +3 -3
- package/src/components/scroll-area.tsx +2 -2
- package/src/components/select.tsx +7 -7
- package/src/components/separator.tsx +2 -2
- package/src/components/sheet.tsx +3 -3
- package/src/components/skeleton.tsx +1 -1
- package/src/components/slider.tsx +5 -5
- package/src/components/spinner.tsx +1 -1
- package/src/components/stepper.tsx +10 -11
- package/src/components/switch.tsx +3 -3
- package/src/components/table.tsx +5 -5
- package/src/components/tabs.tsx +3 -3
- package/src/components/textarea.tsx +2 -2
- package/src/components/toggle-group.tsx +4 -4
- package/src/components/toggle.tsx +2 -2
- package/src/components/tooltip.tsx +2 -2
- package/src/custom/action-button.tsx +3 -6
- package/src/custom/async-select.tsx +12 -12
- package/src/custom/awesome-not-found.tsx +4 -4
- package/src/custom/charts/area-chart.tsx +2 -2
- package/src/custom/charts/bar-chart.tsx +2 -2
- package/src/custom/charts/chart-card.tsx +4 -4
- package/src/custom/charts/pie-chart.tsx +4 -4
- package/src/custom/charts/radar-chart.tsx +2 -2
- package/src/custom/combobox.tsx +18 -18
- package/src/custom/confirm-dialog.tsx +3 -3
- package/src/custom/country-selector.tsx +7 -7
- package/src/custom/date-picker/calendar-rac.tsx +5 -5
- package/src/custom/date-picker/datefield-rac.tsx +6 -6
- package/src/custom/date-picker/index.tsx +9 -9
- package/src/custom/date-picker-old.tsx +5 -5
- package/src/custom/date-tooltip.tsx +1 -1
- package/src/custom/document-scanner/corner-adjustment/action-buttons.tsx +2 -2
- package/src/custom/document-scanner/corner-adjustment/corner-handle.tsx +3 -3
- package/src/custom/document-scanner/index.tsx +8 -8
- package/src/custom/document-viewer/controllers.tsx +3 -3
- package/src/custom/document-viewer/index.tsx +1 -1
- package/src/custom/document-viewer/renderers/pdf.tsx +3 -3
- package/src/custom/email-input/email.tsx +16 -14
- package/src/custom/file-uploader.tsx +6 -6
- package/src/custom/filter-component/fields/async-select.tsx +1 -1
- package/src/custom/filter-component/fields/date.tsx +3 -3
- package/src/custom/filter-component/fields/multi-select.tsx +1 -1
- package/src/custom/filter-component/index.tsx +9 -9
- package/src/custom/image-canvas.tsx +5 -5
- package/src/custom/master-data-grid/components/filters/client-filter.tsx +6 -5
- package/src/custom/master-data-grid/components/filters/multi-filter-dialog.tsx +5 -4
- package/src/custom/master-data-grid/components/filters/server-filter.tsx +12 -11
- package/src/custom/master-data-grid/components/table/cell-renderer.tsx +26 -26
- package/src/custom/master-data-grid/hooks/use-columns.tsx +3 -3
- package/src/custom/master-data-grid/types.ts +5 -4
- package/src/custom/multi-select.tsx +21 -19
- package/src/custom/password-input.tsx +11 -11
- package/src/custom/phone-input.tsx +3 -3
- package/src/custom/schema-form/custom/label.tsx +3 -3
- package/src/custom/schema-form/fields/base-input-field.tsx +4 -4
- package/src/custom/schema-form/fields/field.tsx +4 -4
- package/src/custom/schema-form/fields/table-array/array-field-item.tsx +5 -5
- package/src/custom/schema-form/fields/table-array/array-field-template.tsx +6 -6
- package/src/custom/schema-form/index.tsx +13 -13
- package/src/custom/schema-form/templates/description.tsx +1 -1
- package/src/custom/schema-form/templates/submit.tsx +2 -2
- package/src/custom/schema-form/utils/schemas.ts +9 -9
- package/src/custom/schema-form/widgets/boolean.tsx +5 -5
- package/src/custom/schema-form/widgets/combobox.tsx +13 -13
- package/src/custom/schema-form/widgets/date.tsx +1 -1
- package/src/custom/schema-form/widgets/email.tsx +2 -2
- package/src/custom/schema-form/widgets/password.tsx +1 -1
- package/src/custom/schema-form/widgets/phone.tsx +3 -3
- package/src/custom/schema-form/widgets/select.tsx +5 -5
- package/src/custom/schema-form/widgets/selectable.tsx +2 -2
- package/src/custom/schema-form/widgets/string-array.tsx +16 -16
- package/src/custom/schema-form/widgets/url.tsx +2 -2
- package/src/custom/section-layout-v2.tsx +8 -8
- package/src/custom/select-tabs.tsx +2 -2
- package/src/custom/stepper.tsx +4 -4
- package/src/custom/tab-layout.tsx +6 -6
- package/src/custom/tanstack-table/fields/tanstack-table-column-header.tsx +7 -5
- package/src/custom/tanstack-table/fields/tanstack-table-filter-date.tsx +7 -7
- package/src/custom/tanstack-table/fields/tanstack-table-filter-faceted.tsx +9 -9
- package/src/custom/tanstack-table/fields/tanstack-table-filter-text.tsx +5 -8
- package/src/custom/tanstack-table/fields/tanstack-table-pagination.tsx +4 -4
- package/src/custom/tanstack-table/fields/tanstack-table-plain-table.tsx +8 -8
- package/src/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.tsx +2 -2
- package/src/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.tsx +2 -2
- package/src/custom/tanstack-table/fields/tanstack-table-row-actions.tsx +6 -6
- package/src/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.tsx +3 -3
- package/src/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.tsx +4 -4
- package/src/custom/tanstack-table/fields/tanstack-table-toolbar.tsx +2 -2
- package/src/custom/tanstack-table/fields/tanstack-table-view-options.tsx +5 -5
- package/src/custom/tanstack-table/types/index.ts +2 -2
- package/src/custom/tanstack-table/utils/columns-by-row-data.tsx +10 -10
- package/src/custom/tanstack-table/utils/editable-columns-by-row-data.tsx +8 -8
- package/src/custom/timeline.tsx +8 -8
- package/src/custom/tree.tsx +11 -9
- package/src/custom/webcam.tsx +14 -14
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Switch } from "@
|
|
1
|
+
import { Switch } from "@ayasofyazilim/ui/components/switch";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { Badge } from "../../../../components/badge";
|
|
@@ -42,7 +42,7 @@ const BADGE_VARIANT_MAP: Record<
|
|
|
42
42
|
|
|
43
43
|
function createZodSchema(
|
|
44
44
|
schemaProperty?: JSONSchemaProperty,
|
|
45
|
-
t?: MasterDataGridResources
|
|
45
|
+
t?: MasterDataGridResources,
|
|
46
46
|
): z.ZodType {
|
|
47
47
|
if (!schemaProperty) return z.unknown();
|
|
48
48
|
|
|
@@ -60,9 +60,9 @@ function createZodSchema(
|
|
|
60
60
|
t?.["validation.min_length"]
|
|
61
61
|
? (t["validation.min_length"] ?? "").replace(
|
|
62
62
|
"{min}",
|
|
63
|
-
String(schemaProperty.minLength)
|
|
63
|
+
String(schemaProperty.minLength),
|
|
64
64
|
)
|
|
65
|
-
: `Must be at least ${schemaProperty.minLength} characters
|
|
65
|
+
: `Must be at least ${schemaProperty.minLength} characters`,
|
|
66
66
|
);
|
|
67
67
|
}
|
|
68
68
|
if (schemaProperty.maxLength !== undefined) {
|
|
@@ -71,15 +71,15 @@ function createZodSchema(
|
|
|
71
71
|
t?.["validation.max_length"]
|
|
72
72
|
? (t["validation.max_length"] ?? "").replace(
|
|
73
73
|
"{max}",
|
|
74
|
-
String(schemaProperty.maxLength)
|
|
74
|
+
String(schemaProperty.maxLength),
|
|
75
75
|
)
|
|
76
|
-
: `Must be at most ${schemaProperty.maxLength} characters
|
|
76
|
+
: `Must be at most ${schemaProperty.maxLength} characters`,
|
|
77
77
|
);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
if (schemaProperty.format === "email") {
|
|
81
81
|
schema = (schema as z.ZodString).email(
|
|
82
|
-
t?.["validation.invalid_email"] || "Must be a valid email address"
|
|
82
|
+
t?.["validation.invalid_email"] || "Must be a valid email address",
|
|
83
83
|
);
|
|
84
84
|
}
|
|
85
85
|
if (schemaProperty.format === "uri" || schemaProperty.format === "url") {
|
|
@@ -87,7 +87,7 @@ function createZodSchema(
|
|
|
87
87
|
}
|
|
88
88
|
if (schemaProperty.format === "uuid") {
|
|
89
89
|
schema = z.uuid(
|
|
90
|
-
t?.["validation.invalid_uuid"] || "Must be a valid UUID"
|
|
90
|
+
t?.["validation.invalid_uuid"] || "Must be a valid UUID",
|
|
91
91
|
);
|
|
92
92
|
}
|
|
93
93
|
break;
|
|
@@ -103,9 +103,9 @@ function createZodSchema(
|
|
|
103
103
|
t?.["validation.min_value"]
|
|
104
104
|
? (t["validation.min_value"] ?? "").replace(
|
|
105
105
|
"{min}",
|
|
106
|
-
String(schemaProperty.minimum)
|
|
106
|
+
String(schemaProperty.minimum),
|
|
107
107
|
)
|
|
108
|
-
: `Must be at least ${schemaProperty.minimum}
|
|
108
|
+
: `Must be at least ${schemaProperty.minimum}`,
|
|
109
109
|
);
|
|
110
110
|
}
|
|
111
111
|
if (schemaProperty.maximum !== undefined) {
|
|
@@ -114,9 +114,9 @@ function createZodSchema(
|
|
|
114
114
|
t?.["validation.max_value"]
|
|
115
115
|
? (t["validation.max_value"] ?? "").replace(
|
|
116
116
|
"{max}",
|
|
117
|
-
String(schemaProperty.maximum)
|
|
117
|
+
String(schemaProperty.maximum),
|
|
118
118
|
)
|
|
119
|
-
: `Must be at most ${schemaProperty.maximum}
|
|
119
|
+
: `Must be at most ${schemaProperty.maximum}`,
|
|
120
120
|
);
|
|
121
121
|
}
|
|
122
122
|
break;
|
|
@@ -135,9 +135,9 @@ function createZodSchema(
|
|
|
135
135
|
t?.["validation.min_value"]
|
|
136
136
|
? (t["validation.min_value"] ?? "").replace(
|
|
137
137
|
"{min}",
|
|
138
|
-
String(schemaProperty.minimum)
|
|
138
|
+
String(schemaProperty.minimum),
|
|
139
139
|
)
|
|
140
|
-
: `Must be at least ${schemaProperty.minimum}
|
|
140
|
+
: `Must be at least ${schemaProperty.minimum}`,
|
|
141
141
|
);
|
|
142
142
|
}
|
|
143
143
|
if (schemaProperty.maximum !== undefined) {
|
|
@@ -146,9 +146,9 @@ function createZodSchema(
|
|
|
146
146
|
t?.["validation.max_value"]
|
|
147
147
|
? (t["validation.max_value"] ?? "").replace(
|
|
148
148
|
"{max}",
|
|
149
|
-
String(schemaProperty.maximum)
|
|
149
|
+
String(schemaProperty.maximum),
|
|
150
150
|
)
|
|
151
|
-
: `Must be at most ${schemaProperty.maximum}
|
|
151
|
+
: `Must be at most ${schemaProperty.maximum}`,
|
|
152
152
|
);
|
|
153
153
|
}
|
|
154
154
|
break;
|
|
@@ -166,7 +166,7 @@ function createZodSchema(
|
|
|
166
166
|
if (schemaProperty.enum && Array.isArray(schemaProperty.enum)) {
|
|
167
167
|
schema = z.enum(
|
|
168
168
|
schemaProperty.enum as [string, ...string[]],
|
|
169
|
-
t?.["validation.invalid_enum"] || "Invalid value"
|
|
169
|
+
t?.["validation.invalid_enum"] || "Invalid value",
|
|
170
170
|
);
|
|
171
171
|
}
|
|
172
172
|
|
|
@@ -248,19 +248,19 @@ export function CellRenderer<TData = unknown>({
|
|
|
248
248
|
}: CellRendererProps<TData>) {
|
|
249
249
|
const [localValue, setLocalValue] = useState(value);
|
|
250
250
|
const [validationError, setValidationError] = useState<string | null>(
|
|
251
|
-
error || null
|
|
251
|
+
error || null,
|
|
252
252
|
);
|
|
253
253
|
const inputRef = useRef<HTMLInputElement>(null);
|
|
254
254
|
const updateTimeoutRef = useRef<NodeJS.Timeout>(null);
|
|
255
255
|
const datePickerIdRef = useRef<string>(
|
|
256
|
-
`date-${schemaProperty?.title || "field"}-${Date.now()}
|
|
256
|
+
`date-${schemaProperty?.title || "field"}-${Date.now()}`,
|
|
257
257
|
);
|
|
258
258
|
const datePickerMountedRef = useRef<boolean>(false);
|
|
259
259
|
const handleDateChangeRef = useRef<((date: Date) => void) | null>(null);
|
|
260
260
|
|
|
261
261
|
const validationSchema = useMemo(
|
|
262
262
|
() => (schemaProperty ? createZodSchema(schemaProperty, t) : null),
|
|
263
|
-
[schemaProperty, t]
|
|
263
|
+
[schemaProperty, t],
|
|
264
264
|
);
|
|
265
265
|
|
|
266
266
|
useEffect(() => {
|
|
@@ -289,7 +289,7 @@ export function CellRenderer<TData = unknown>({
|
|
|
289
289
|
}
|
|
290
290
|
}, DEBOUNCE_DELAY);
|
|
291
291
|
},
|
|
292
|
-
[onUpdate]
|
|
292
|
+
[onUpdate],
|
|
293
293
|
);
|
|
294
294
|
|
|
295
295
|
const handleChange = useCallback(
|
|
@@ -311,16 +311,16 @@ export function CellRenderer<TData = unknown>({
|
|
|
311
311
|
debouncedUpdate(newValue);
|
|
312
312
|
}
|
|
313
313
|
},
|
|
314
|
-
[validationSchema, debouncedUpdate]
|
|
314
|
+
[validationSchema, debouncedUpdate],
|
|
315
315
|
);
|
|
316
316
|
|
|
317
317
|
const inputClassName = useMemo(
|
|
318
318
|
() =>
|
|
319
319
|
cn(
|
|
320
320
|
"h-full px-2 shadow-none border-0 rounded-none focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
321
|
-
validationError && "border border-destructive"
|
|
321
|
+
validationError && "border border-destructive",
|
|
322
322
|
),
|
|
323
|
-
[validationError]
|
|
323
|
+
[validationError],
|
|
324
324
|
);
|
|
325
325
|
|
|
326
326
|
if (editable && !schemaProperty?.readOnly) {
|
|
@@ -364,7 +364,7 @@ export function CellRenderer<TData = unknown>({
|
|
|
364
364
|
size="sm"
|
|
365
365
|
className={cn(
|
|
366
366
|
"h-[35px]! px-2 w-full shadow-none border-0 rounded-none focus:ring-0 focus:ring-offset-0",
|
|
367
|
-
validationError && "border border-destructive"
|
|
367
|
+
validationError && "border border-destructive",
|
|
368
368
|
)}
|
|
369
369
|
>
|
|
370
370
|
<SelectValue />
|
|
@@ -452,7 +452,7 @@ export function CellRenderer<TData = unknown>({
|
|
|
452
452
|
classNames={{
|
|
453
453
|
dateInput: cn(
|
|
454
454
|
"shadow-none border-0 h-8! rounded-none",
|
|
455
|
-
validationError && "border border-destructive"
|
|
455
|
+
validationError && "border border-destructive",
|
|
456
456
|
),
|
|
457
457
|
}}
|
|
458
458
|
useTime={isDateTime}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from "@
|
|
1
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
2
2
|
import { GenericObjectType } from "@rjsf/utils";
|
|
3
3
|
import type { ColumnDef } from "@tanstack/react-table";
|
|
4
4
|
import { MoreHorizontal, Pencil, Save, X } from "lucide-react";
|
|
@@ -78,7 +78,7 @@ export function useColumns<TData>({
|
|
|
78
78
|
configRef.current.editing?.errorDisplayMode,
|
|
79
79
|
enableColumnVisibility,
|
|
80
80
|
config.expansion?.expanderColumns,
|
|
81
|
-
config.schemaColumns
|
|
81
|
+
config.schemaColumns,
|
|
82
82
|
)
|
|
83
83
|
: [];
|
|
84
84
|
|
|
@@ -96,7 +96,7 @@ export function useColumns<TData>({
|
|
|
96
96
|
customColumns,
|
|
97
97
|
mergeContext,
|
|
98
98
|
enableColumnVisibility,
|
|
99
|
-
t
|
|
99
|
+
t,
|
|
100
100
|
);
|
|
101
101
|
|
|
102
102
|
const mergedWithExpansion = merged.map((col) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from "@
|
|
1
|
+
import { z } from "@ayasofyazilim/ui/lib/zod";
|
|
2
2
|
import { GenericObjectType } from "@rjsf/utils";
|
|
3
3
|
import type {
|
|
4
4
|
CellContext,
|
|
@@ -102,8 +102,9 @@ interface BaseRowAction<TData = unknown> {
|
|
|
102
102
|
className?: string;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
export interface StandardRowAction<
|
|
106
|
-
|
|
105
|
+
export interface StandardRowAction<
|
|
106
|
+
TData = unknown,
|
|
107
|
+
> extends BaseRowAction<TData> {
|
|
107
108
|
label: string | ((row: TData) => string);
|
|
108
109
|
icon?: LucideIcon;
|
|
109
110
|
onClick?: (row: TData, event: React.MouseEvent) => void | Promise<void>;
|
|
@@ -351,7 +352,7 @@ export interface CustomCellRendererProps<TData = unknown> {
|
|
|
351
352
|
}
|
|
352
353
|
|
|
353
354
|
export type CustomCellRenderer<TData = unknown> = (
|
|
354
|
-
props: CustomCellRendererProps<TData
|
|
355
|
+
props: CustomCellRendererProps<TData>,
|
|
355
356
|
) => React.ReactNode;
|
|
356
357
|
|
|
357
358
|
export type CustomRenderers<TData> = Partial<
|
|
@@ -11,15 +11,15 @@ import {
|
|
|
11
11
|
WandSparkles,
|
|
12
12
|
} from "lucide-react";
|
|
13
13
|
|
|
14
|
-
import { cn } from "@
|
|
15
|
-
import { Separator } from "@
|
|
16
|
-
import { Button } from "@
|
|
17
|
-
import { Badge } from "@
|
|
14
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
15
|
+
import { Separator } from "@ayasofyazilim/ui/components/separator";
|
|
16
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
17
|
+
import { Badge } from "@ayasofyazilim/ui/components/badge";
|
|
18
18
|
import {
|
|
19
19
|
Popover,
|
|
20
20
|
PopoverContent,
|
|
21
21
|
PopoverTrigger,
|
|
22
|
-
} from "@
|
|
22
|
+
} from "@ayasofyazilim/ui/components/popover";
|
|
23
23
|
import {
|
|
24
24
|
Command,
|
|
25
25
|
CommandEmpty,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
CommandItem,
|
|
29
29
|
CommandList,
|
|
30
30
|
CommandSeparator,
|
|
31
|
-
} from "@
|
|
31
|
+
} from "@ayasofyazilim/ui/components/command";
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Variants for the multi-select component to handle different styles.
|
|
@@ -51,14 +51,15 @@ const multiSelectVariants = cva(
|
|
|
51
51
|
defaultVariants: {
|
|
52
52
|
variant: "default",
|
|
53
53
|
},
|
|
54
|
-
}
|
|
54
|
+
},
|
|
55
55
|
);
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* Props for MultiSelect component
|
|
59
59
|
*/
|
|
60
60
|
export interface MultiSelectProps
|
|
61
|
-
extends
|
|
61
|
+
extends
|
|
62
|
+
React.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
62
63
|
VariantProps<typeof multiSelectVariants> {
|
|
63
64
|
/**
|
|
64
65
|
* Animation duration in seconds for the visual effects (e.g., bouncing badges).
|
|
@@ -154,7 +155,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
154
155
|
disabled,
|
|
155
156
|
...props
|
|
156
157
|
},
|
|
157
|
-
ref
|
|
158
|
+
ref,
|
|
158
159
|
) => {
|
|
159
160
|
const [selectedValues, setSelectedValues] =
|
|
160
161
|
React.useState<string[]>(defaultValue);
|
|
@@ -172,7 +173,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
172
173
|
const [isAnimating, setIsAnimating] = React.useState(false);
|
|
173
174
|
|
|
174
175
|
const handleInputKeyDown = (
|
|
175
|
-
event: React.KeyboardEvent<HTMLInputElement
|
|
176
|
+
event: React.KeyboardEvent<HTMLInputElement>,
|
|
176
177
|
) => {
|
|
177
178
|
if (event.key === "Enter") {
|
|
178
179
|
setIsPopoverOpen(true);
|
|
@@ -195,8 +196,9 @@ export const MultiSelect = React.forwardRef<
|
|
|
195
196
|
const handleClear = () => {
|
|
196
197
|
setSelectedValues(
|
|
197
198
|
selectedValues.filter(
|
|
198
|
-
(value) =>
|
|
199
|
-
|
|
199
|
+
(value) =>
|
|
200
|
+
!options.map((o) => !o.disabled && o.value).includes(value),
|
|
201
|
+
),
|
|
200
202
|
);
|
|
201
203
|
if (onValueChange) onValueChange([]);
|
|
202
204
|
};
|
|
@@ -236,7 +238,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
236
238
|
onClick={handleTogglePopover}
|
|
237
239
|
className={cn(
|
|
238
240
|
"flex w-full p-1 rounded-md border min-h-9 h-auto items-center justify-between bg-inherit hover:bg-inherit",
|
|
239
|
-
className
|
|
241
|
+
className,
|
|
240
242
|
)}
|
|
241
243
|
>
|
|
242
244
|
{selectedValues.length > 0 ? (
|
|
@@ -250,7 +252,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
250
252
|
key={value}
|
|
251
253
|
className={cn(
|
|
252
254
|
isAnimating ? "animate-bounce" : "",
|
|
253
|
-
multiSelectVariants({ variant })
|
|
255
|
+
multiSelectVariants({ variant }),
|
|
254
256
|
)}
|
|
255
257
|
style={{ animationDuration: `${animation}s` }}
|
|
256
258
|
>
|
|
@@ -275,7 +277,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
275
277
|
className={cn(
|
|
276
278
|
"bg-transparent text-foreground border-foreground/1 hover:bg-transparent",
|
|
277
279
|
isAnimating ? "animate-bounce" : "",
|
|
278
|
-
multiSelectVariants({ variant })
|
|
280
|
+
multiSelectVariants({ variant }),
|
|
279
281
|
)}
|
|
280
282
|
style={{ animationDuration: `${animation}s` }}
|
|
281
283
|
>
|
|
@@ -345,7 +347,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
345
347
|
"mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",
|
|
346
348
|
selectedValues.length === options.length
|
|
347
349
|
? "bg-primary text-primary-foreground"
|
|
348
|
-
: "opacity-50 [&_svg]:invisible"
|
|
350
|
+
: "opacity-50 [&_svg]:invisible",
|
|
349
351
|
)}
|
|
350
352
|
>
|
|
351
353
|
<CheckIcon className="h-4 w-4" />
|
|
@@ -367,7 +369,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
367
369
|
"mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",
|
|
368
370
|
isSelected
|
|
369
371
|
? "bg-primary text-primary-foreground"
|
|
370
|
-
: "opacity-50 [&_svg]:invisible"
|
|
372
|
+
: "opacity-50 [&_svg]:invisible",
|
|
371
373
|
)}
|
|
372
374
|
>
|
|
373
375
|
<CheckIcon className="h-4 w-4" />
|
|
@@ -419,14 +421,14 @@ export const MultiSelect = React.forwardRef<
|
|
|
419
421
|
<WandSparkles
|
|
420
422
|
className={cn(
|
|
421
423
|
"cursor-pointer my-2 text-foreground bg-background w-3 h-3",
|
|
422
|
-
isAnimating ? "" : "text-muted-foreground"
|
|
424
|
+
isAnimating ? "" : "text-muted-foreground",
|
|
423
425
|
)}
|
|
424
426
|
onClick={() => setIsAnimating(!isAnimating)}
|
|
425
427
|
/>
|
|
426
428
|
)}
|
|
427
429
|
</Popover>
|
|
428
430
|
);
|
|
429
|
-
}
|
|
431
|
+
},
|
|
430
432
|
);
|
|
431
433
|
|
|
432
434
|
MultiSelect.displayName = "MultiSelect";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { InputProps } from "@
|
|
4
|
-
import { cn } from "@
|
|
3
|
+
import { InputProps } from "@ayasofyazilim/ui/components/input";
|
|
4
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
5
5
|
import { EyeIcon, EyeOffIcon, RotateCcwKey } from "lucide-react";
|
|
6
6
|
import {
|
|
7
7
|
forwardRef,
|
|
@@ -26,7 +26,7 @@ interface PasswordInputProps extends InputProps {
|
|
|
26
26
|
const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(
|
|
27
27
|
(
|
|
28
28
|
{ className, showGenerator = false, passwordLength = 10, ...props },
|
|
29
|
-
ref
|
|
29
|
+
ref,
|
|
30
30
|
) => {
|
|
31
31
|
const [showPassword, setShowPassword] = useState(false);
|
|
32
32
|
const internalRef = useRef<HTMLInputElement>(null);
|
|
@@ -54,9 +54,9 @@ const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(
|
|
|
54
54
|
cn(
|
|
55
55
|
"hide-password-toggle",
|
|
56
56
|
showGenerator ? "pr-20" : "pr-10",
|
|
57
|
-
className
|
|
57
|
+
className,
|
|
58
58
|
),
|
|
59
|
-
[showGenerator, className]
|
|
59
|
+
[showGenerator, className],
|
|
60
60
|
);
|
|
61
61
|
|
|
62
62
|
// Use crypto.getRandomValues for better randomness when available
|
|
@@ -83,7 +83,7 @@ const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(
|
|
|
83
83
|
}
|
|
84
84
|
return shuffled;
|
|
85
85
|
},
|
|
86
|
-
[getRandomInt]
|
|
86
|
+
[getRandomInt],
|
|
87
87
|
);
|
|
88
88
|
|
|
89
89
|
const generatePassword = useCallback(
|
|
@@ -102,14 +102,14 @@ const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(
|
|
|
102
102
|
const remainingLength = Math.max(0, length - requiredChars.length);
|
|
103
103
|
const additionalChars = Array.from(
|
|
104
104
|
{ length: remainingLength },
|
|
105
|
-
() => all[getRandomInt(all.length)]
|
|
105
|
+
() => all[getRandomInt(all.length)],
|
|
106
106
|
);
|
|
107
107
|
|
|
108
108
|
// Combine and shuffle
|
|
109
109
|
const allChars = [...requiredChars, ...additionalChars] as string[];
|
|
110
110
|
return shuffleArray(allChars).join("");
|
|
111
111
|
},
|
|
112
|
-
[passwordLength, characterSets, getRandomInt, shuffleArray]
|
|
112
|
+
[passwordLength, characterSets, getRandomInt, shuffleArray],
|
|
113
113
|
);
|
|
114
114
|
|
|
115
115
|
// Optimized event dispatching
|
|
@@ -119,7 +119,7 @@ const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(
|
|
|
119
119
|
// Use React's internal event system when possible
|
|
120
120
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
121
121
|
HTMLInputElement.prototype,
|
|
122
|
-
"value"
|
|
122
|
+
"value",
|
|
123
123
|
);
|
|
124
124
|
if (descriptor?.set) {
|
|
125
125
|
descriptor.set.call(_input, value);
|
|
@@ -134,7 +134,7 @@ const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(
|
|
|
134
134
|
_input.dispatchEvent(inputEvent);
|
|
135
135
|
_input.dispatchEvent(changeEvent);
|
|
136
136
|
},
|
|
137
|
-
[]
|
|
137
|
+
[],
|
|
138
138
|
);
|
|
139
139
|
|
|
140
140
|
const handleGeneratePassword = useCallback(() => {
|
|
@@ -185,7 +185,7 @@ const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(
|
|
|
185
185
|
)}
|
|
186
186
|
</InputGroup>
|
|
187
187
|
);
|
|
188
|
-
}
|
|
188
|
+
},
|
|
189
189
|
);
|
|
190
190
|
|
|
191
191
|
PasswordInput.displayName = "PasswordInput";
|
|
@@ -10,8 +10,8 @@ import PhoneInputWithCountrySelect, {
|
|
|
10
10
|
} from "react-phone-number-input";
|
|
11
11
|
import flags from "react-phone-number-input/flags";
|
|
12
12
|
|
|
13
|
-
import { Input } from "@
|
|
14
|
-
import { cn } from "@
|
|
13
|
+
import { Input } from "@ayasofyazilim/ui/components/input";
|
|
14
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
15
15
|
import {
|
|
16
16
|
Select,
|
|
17
17
|
SelectContent,
|
|
@@ -89,7 +89,7 @@ const _PhoneInput = React.forwardRef<
|
|
|
89
89
|
data-slot="phone-input"
|
|
90
90
|
className={cn(
|
|
91
91
|
"-ms-px rounded-s-none rounded-l-none! shadow-none focus-visible:z-10",
|
|
92
|
-
className
|
|
92
|
+
className,
|
|
93
93
|
)}
|
|
94
94
|
ref={ref}
|
|
95
95
|
{...props}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Label } from "@
|
|
1
|
+
import { Label } from "@ayasofyazilim/ui/components/label";
|
|
2
2
|
import {
|
|
3
3
|
Tooltip,
|
|
4
4
|
TooltipContent,
|
|
5
5
|
TooltipProvider,
|
|
6
6
|
TooltipTrigger,
|
|
7
|
-
} from "@
|
|
8
|
-
import { cn } from "@
|
|
7
|
+
} from "@ayasofyazilim/ui/components/tooltip";
|
|
8
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
9
9
|
import { InfoIcon } from "lucide-react";
|
|
10
10
|
import { JSXElementConstructor, ReactElement } from "react";
|
|
11
11
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Input } from "@
|
|
2
|
-
import { cn } from "@
|
|
1
|
+
import { Input } from "@ayasofyazilim/ui/components/input";
|
|
2
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
3
3
|
import {
|
|
4
4
|
ariaDescribedByIds,
|
|
5
5
|
BaseInputTemplateProps,
|
|
@@ -53,7 +53,7 @@ export function BaseInputTemplate({
|
|
|
53
53
|
readOnly={readonly}
|
|
54
54
|
className={cn(
|
|
55
55
|
{ "border-destructive focus-visible:ring-0": rawErrors.length > 0 },
|
|
56
|
-
className
|
|
56
|
+
className,
|
|
57
57
|
)}
|
|
58
58
|
list={schema.examples ? examplesId(id) : undefined}
|
|
59
59
|
{...inputProps}
|
|
@@ -70,7 +70,7 @@ export function BaseInputTemplate({
|
|
|
70
70
|
.concat(
|
|
71
71
|
schema.default && !schema.examples.includes(schema.default)
|
|
72
72
|
? ([schema.default] as string[])
|
|
73
|
-
: []
|
|
73
|
+
: [],
|
|
74
74
|
)
|
|
75
75
|
.map((example: any) => {
|
|
76
76
|
return <option key={example} value={example} />;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TableCell } from "@
|
|
2
|
-
import { cn } from "@
|
|
1
|
+
import { TableCell } from "@ayasofyazilim/ui/components/table";
|
|
2
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
3
3
|
import { FieldTemplateProps } from "@rjsf/utils";
|
|
4
4
|
import { FieldLabel } from "../custom";
|
|
5
5
|
|
|
@@ -35,7 +35,7 @@ export const FieldTemplate = (props: FieldTemplateProps) => {
|
|
|
35
35
|
"**:[[role=combobox]]:border-0 **:[[role=combobox]]:shadow-none **:[[role=combobox]]:rounded-none",
|
|
36
36
|
"**:data-[slot=input]:border-0 **:data-[slot=input]:shadow-none **:data-[slot=input]:rounded-none",
|
|
37
37
|
"**:data-rac:border-0 **:data-rac:shadow-none **:data-rac:rounded-none",
|
|
38
|
-
"*:data-[slot=drawer-trigger]:border-0"
|
|
38
|
+
"*:data-[slot=drawer-trigger]:border-0",
|
|
39
39
|
)}
|
|
40
40
|
>
|
|
41
41
|
{children}
|
|
@@ -47,7 +47,7 @@ export const FieldTemplate = (props: FieldTemplateProps) => {
|
|
|
47
47
|
"flex flex-col gap-1.5 h-max",
|
|
48
48
|
props.schema.type === "object" && "gap-3",
|
|
49
49
|
classNames,
|
|
50
|
-
label
|
|
50
|
+
label,
|
|
51
51
|
)}
|
|
52
52
|
style={style}
|
|
53
53
|
>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Button } from "@
|
|
2
|
-
import { ButtonGroup } from "@
|
|
1
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
2
|
+
import { ButtonGroup } from "@ayasofyazilim/ui/components/button-group";
|
|
3
3
|
import {
|
|
4
4
|
Popover,
|
|
5
5
|
PopoverContent,
|
|
6
6
|
PopoverTrigger,
|
|
7
|
-
} from "@
|
|
8
|
-
import { TableCell, TableRow } from "@
|
|
9
|
-
import { cn } from "@
|
|
7
|
+
} from "@ayasofyazilim/ui/components/popover";
|
|
8
|
+
import { TableCell, TableRow } from "@ayasofyazilim/ui/components/table";
|
|
9
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
10
10
|
import {
|
|
11
11
|
ArrayFieldItemTemplateProps,
|
|
12
12
|
FormContextType,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button } from "@
|
|
1
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
2
2
|
import {
|
|
3
3
|
Table,
|
|
4
4
|
TableBody,
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
TableHead,
|
|
7
7
|
TableHeader,
|
|
8
8
|
TableRow,
|
|
9
|
-
} from "@
|
|
10
|
-
import { cn } from "@
|
|
9
|
+
} from "@ayasofyazilim/ui/components/table";
|
|
10
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
11
11
|
import {
|
|
12
12
|
ArrayFieldTemplateProps,
|
|
13
13
|
buttonId,
|
|
@@ -35,12 +35,12 @@ export function ArrayFieldTemplate(props: ArrayFieldTemplateProps) {
|
|
|
35
35
|
const ArrayFieldDescriptionTemplate = getTemplate(
|
|
36
36
|
"ArrayFieldDescriptionTemplate",
|
|
37
37
|
registry,
|
|
38
|
-
uiOptions
|
|
38
|
+
uiOptions,
|
|
39
39
|
);
|
|
40
40
|
const ArrayFieldTitleTemplate = getTemplate(
|
|
41
41
|
"ArrayFieldTitleTemplate",
|
|
42
42
|
registry,
|
|
43
|
-
uiOptions
|
|
43
|
+
uiOptions,
|
|
44
44
|
);
|
|
45
45
|
const showOptionalDataControlInTitle = !readonly && !disabled;
|
|
46
46
|
|
|
@@ -72,7 +72,7 @@ export function ArrayFieldTemplate(props: ArrayFieldTemplateProps) {
|
|
|
72
72
|
<TableRow className="divide-x">
|
|
73
73
|
{Object.keys(
|
|
74
74
|
(schema?.items as { properties: Record<string, string> })
|
|
75
|
-
?.properties || {}
|
|
75
|
+
?.properties || {},
|
|
76
76
|
).map((item) => {
|
|
77
77
|
const itemsUiSchema =
|
|
78
78
|
typeof uiSchema?.items === "function"
|