@jbpark/ui-kit 3.2.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Button.d.mts +12 -0
- package/dist/Button.d.mts.map +1 -1
- package/dist/Button.mjs +5 -2
- package/dist/Button.mjs.map +1 -1
- package/dist/components/atoms/checkbox/checkbox.d.mts +7 -3
- package/dist/components/atoms/checkbox/checkbox.d.mts.map +1 -1
- package/dist/components/atoms/checkbox/checkbox.mjs +17 -9
- package/dist/components/atoms/checkbox/checkbox.mjs.map +1 -1
- package/dist/components/atoms/checkbox/group.d.mts +8 -9
- package/dist/components/atoms/checkbox/group.d.mts.map +1 -1
- package/dist/components/atoms/checkbox/group.mjs +11 -12
- package/dist/components/atoms/checkbox/group.mjs.map +1 -1
- package/dist/components/atoms/color-picker.d.mts +6 -2
- package/dist/components/atoms/color-picker.d.mts.map +1 -1
- package/dist/components/atoms/color-picker.mjs +18 -10
- package/dist/components/atoms/color-picker.mjs.map +1 -1
- package/dist/components/atoms/date-picker.d.mts +2 -0
- package/dist/components/atoms/date-picker.d.mts.map +1 -1
- package/dist/components/atoms/date-picker.mjs +15 -9
- package/dist/components/atoms/date-picker.mjs.map +1 -1
- package/dist/components/atoms/float-button/back-top.d.mts +1 -0
- package/dist/components/atoms/float-button/back-top.d.mts.map +1 -1
- package/dist/components/atoms/float-button/back-top.mjs +11 -3
- package/dist/components/atoms/float-button/back-top.mjs.map +1 -1
- package/dist/components/atoms/input/input.d.mts +2 -1
- package/dist/components/atoms/input/input.d.mts.map +1 -1
- package/dist/components/atoms/input/input.mjs +5 -2
- package/dist/components/atoms/input/input.mjs.map +1 -1
- package/dist/components/atoms/input/search.d.mts +2 -0
- package/dist/components/atoms/input/search.d.mts.map +1 -1
- package/dist/components/atoms/input/search.mjs +9 -4
- package/dist/components/atoms/input/search.mjs.map +1 -1
- package/dist/components/atoms/option-group.d.mts +15 -0
- package/dist/components/atoms/option-group.d.mts.map +1 -0
- package/dist/components/atoms/option-group.mjs +9 -0
- package/dist/components/atoms/option-group.mjs.map +1 -0
- package/dist/components/atoms/popover.d.mts +6 -0
- package/dist/components/atoms/popover.d.mts.map +1 -1
- package/dist/components/atoms/popover.mjs +75 -160
- package/dist/components/atoms/popover.mjs.map +1 -1
- package/dist/components/atoms/radio/group.d.mts +6 -9
- package/dist/components/atoms/radio/group.d.mts.map +1 -1
- package/dist/components/atoms/radio/group.mjs +26 -23
- package/dist/components/atoms/radio/group.mjs.map +1 -1
- package/dist/components/atoms/radio/radio.d.mts +7 -3
- package/dist/components/atoms/radio/radio.d.mts.map +1 -1
- package/dist/components/atoms/radio/radio.mjs +18 -11
- package/dist/components/atoms/radio/radio.mjs.map +1 -1
- package/dist/components/atoms/select.d.mts +1 -1
- package/dist/components/atoms/select.d.mts.map +1 -1
- package/dist/components/atoms/select.mjs.map +1 -1
- package/dist/components/atoms/skeleton/button.mjs +2 -2
- package/dist/components/atoms/skeleton/button.mjs.map +1 -1
- package/dist/components/atoms/skeleton/skeleton.mjs +2 -2
- package/dist/components/atoms/skeleton/skeleton.mjs.map +1 -1
- package/dist/components/atoms/spin.d.mts +1 -2
- package/dist/components/atoms/spin.d.mts.map +1 -1
- package/dist/components/atoms/spin.mjs +12 -10
- package/dist/components/atoms/spin.mjs.map +1 -1
- package/dist/components/atoms/switch.d.mts.map +1 -1
- package/dist/components/atoms/switch.mjs +6 -8
- package/dist/components/atoms/switch.mjs.map +1 -1
- package/dist/components/organisms/index.d.mts +2 -1
- package/dist/components/organisms/toast.d.mts +41 -0
- package/dist/components/organisms/toast.d.mts.map +1 -0
- package/dist/components/organisms/toast.mjs +197 -0
- package/dist/components/organisms/toast.mjs.map +1 -0
- package/dist/core/badge.d.mts +1 -1
- package/dist/core/button.d.mts +2 -2
- package/dist/core/radio-group.d.mts +5 -1
- package/dist/core/radio-group.d.mts.map +1 -1
- package/dist/core/radio-group.mjs +7 -1
- package/dist/core/radio-group.mjs.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.mjs +2 -1
- package/dist/style.css +40 -123
- package/package.json +2 -2
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { cn } from "../../utils.mjs";
|
|
4
|
+
import Button from "../../Button.mjs";
|
|
5
|
+
import { Check, Info, OctagonAlert, OctagonX, X } from "lucide-react";
|
|
6
|
+
import { useEffect, useState } from "react";
|
|
7
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { createPortal } from "react-dom";
|
|
9
|
+
import { createRoot } from "react-dom/client";
|
|
10
|
+
import { v4 } from "uuid";
|
|
11
|
+
|
|
12
|
+
//#region src/components/organisms/toast.tsx
|
|
13
|
+
const isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
|
|
14
|
+
const containerStates = /* @__PURE__ */ new Map();
|
|
15
|
+
const getContainerState = (container) => {
|
|
16
|
+
let state = containerStates.get(container);
|
|
17
|
+
if (!state) {
|
|
18
|
+
state = {
|
|
19
|
+
stack: [],
|
|
20
|
+
update: null
|
|
21
|
+
};
|
|
22
|
+
containerStates.set(container, state);
|
|
23
|
+
}
|
|
24
|
+
return state;
|
|
25
|
+
};
|
|
26
|
+
const createToastRoot = (container) => {
|
|
27
|
+
if (!isBrowser) return null;
|
|
28
|
+
const targetContainer = container || document.body;
|
|
29
|
+
let rootEl = targetContainer.querySelector("#toast-root");
|
|
30
|
+
if (!rootEl) {
|
|
31
|
+
rootEl = document.createElement("div");
|
|
32
|
+
rootEl.setAttribute("id", "toast-root");
|
|
33
|
+
rootEl.setAttribute("role", "region");
|
|
34
|
+
rootEl.setAttribute("aria-label", "Notifications");
|
|
35
|
+
rootEl.style.zIndex = "10000";
|
|
36
|
+
rootEl.style.position = "fixed";
|
|
37
|
+
rootEl.style.right = "0";
|
|
38
|
+
rootEl.style.bottom = "0";
|
|
39
|
+
rootEl.style.display = "flex";
|
|
40
|
+
rootEl.style.flexDirection = "column-reverse";
|
|
41
|
+
rootEl.style.gap = "8px";
|
|
42
|
+
rootEl.style.padding = "16px";
|
|
43
|
+
rootEl.style.pointerEvents = "none";
|
|
44
|
+
targetContainer.appendChild(rootEl);
|
|
45
|
+
}
|
|
46
|
+
return rootEl;
|
|
47
|
+
};
|
|
48
|
+
const TYPE_ICONS = {
|
|
49
|
+
info: /* @__PURE__ */ jsx(Info, { className: "text-blue-400" }),
|
|
50
|
+
success: /* @__PURE__ */ jsx(Check, { className: "text-green-400" }),
|
|
51
|
+
error: /* @__PURE__ */ jsx(OctagonX, { className: "text-red-400" }),
|
|
52
|
+
warning: /* @__PURE__ */ jsx(OctagonAlert, { className: "text-yellow-400" })
|
|
53
|
+
};
|
|
54
|
+
const Toast = ({ type, title, description, icon, closable = true, action, className, onClose }) => {
|
|
55
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
56
|
+
role: "status",
|
|
57
|
+
className: cn("pointer-events-auto flex w-80 items-start gap-3 rounded-lg", "bg-background text-foreground border p-4 shadow-lg", className),
|
|
58
|
+
children: [
|
|
59
|
+
(icon || type) && /* @__PURE__ */ jsx("div", {
|
|
60
|
+
className: "mt-0.5 shrink-0 [&_svg]:size-5",
|
|
61
|
+
children: icon || type && TYPE_ICONS[type]
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ jsxs("div", {
|
|
64
|
+
className: "flex-1 space-y-1",
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ jsx("p", {
|
|
67
|
+
className: "text-sm font-medium",
|
|
68
|
+
children: title
|
|
69
|
+
}),
|
|
70
|
+
description && /* @__PURE__ */ jsx("p", {
|
|
71
|
+
className: "text-muted-foreground text-sm",
|
|
72
|
+
children: description
|
|
73
|
+
}),
|
|
74
|
+
action && /* @__PURE__ */ jsx("div", {
|
|
75
|
+
className: "pt-1",
|
|
76
|
+
children: action
|
|
77
|
+
})
|
|
78
|
+
]
|
|
79
|
+
}),
|
|
80
|
+
closable && /* @__PURE__ */ jsx(Button, {
|
|
81
|
+
type: "text",
|
|
82
|
+
shape: "circle",
|
|
83
|
+
size: "small",
|
|
84
|
+
"aria-label": "Close",
|
|
85
|
+
icon: /* @__PURE__ */ jsx(X, {}),
|
|
86
|
+
onClick: onClose
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
const DEFAULT_DURATION = 4e3;
|
|
92
|
+
const StaticToast = ({ id, duration = DEFAULT_DURATION, container, onClose, ...props }) => {
|
|
93
|
+
const [visible, setVisible] = useState(true);
|
|
94
|
+
const close = () => {
|
|
95
|
+
onClose?.();
|
|
96
|
+
setVisible(false);
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
Toast.destroy(id);
|
|
99
|
+
}, 200);
|
|
100
|
+
};
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
if (!duration) return;
|
|
103
|
+
const timer = setTimeout(close, duration);
|
|
104
|
+
return () => clearTimeout(timer);
|
|
105
|
+
}, [duration]);
|
|
106
|
+
if (!isBrowser) return null;
|
|
107
|
+
return createPortal(/* @__PURE__ */ jsx("div", {
|
|
108
|
+
className: cn("transition-all duration-200", visible ? "opacity-100" : "translate-x-2 opacity-0"),
|
|
109
|
+
children: /* @__PURE__ */ jsx(Toast, {
|
|
110
|
+
...props,
|
|
111
|
+
onClose: close
|
|
112
|
+
})
|
|
113
|
+
}), createToastRoot(container));
|
|
114
|
+
};
|
|
115
|
+
const ToastStackRenderer = ({ container }) => {
|
|
116
|
+
const [, forceUpdate] = useState({});
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
const state = getContainerState(container);
|
|
119
|
+
state.update = () => forceUpdate({});
|
|
120
|
+
return () => {
|
|
121
|
+
state.update = null;
|
|
122
|
+
};
|
|
123
|
+
}, [container]);
|
|
124
|
+
const { stack } = getContainerState(container);
|
|
125
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: stack.map(({ id, ...props }) => /* @__PURE__ */ jsx(StaticToast, {
|
|
126
|
+
id,
|
|
127
|
+
...props
|
|
128
|
+
}, id)) });
|
|
129
|
+
};
|
|
130
|
+
const toastRoots = /* @__PURE__ */ new Map();
|
|
131
|
+
const renderToast = (props) => {
|
|
132
|
+
if (!isBrowser) return;
|
|
133
|
+
const targetContainer = props.container || document.body;
|
|
134
|
+
const rootElement = createToastRoot(targetContainer);
|
|
135
|
+
if (!toastRoots.has(targetContainer)) {
|
|
136
|
+
const root = createRoot(rootElement);
|
|
137
|
+
toastRoots.set(targetContainer, root);
|
|
138
|
+
root.render(/* @__PURE__ */ jsx(ToastStackRenderer, { container: targetContainer }));
|
|
139
|
+
}
|
|
140
|
+
const state = getContainerState(targetContainer);
|
|
141
|
+
const id = props.id || v4();
|
|
142
|
+
state.stack.push({
|
|
143
|
+
...props,
|
|
144
|
+
id
|
|
145
|
+
});
|
|
146
|
+
state.update?.();
|
|
147
|
+
return id;
|
|
148
|
+
};
|
|
149
|
+
Toast.destroy = (id) => {
|
|
150
|
+
if (!id) {
|
|
151
|
+
containerStates.forEach((state) => {
|
|
152
|
+
state.stack = [];
|
|
153
|
+
state.update?.();
|
|
154
|
+
});
|
|
155
|
+
toastRoots.forEach((root) => root.unmount());
|
|
156
|
+
toastRoots.clear();
|
|
157
|
+
containerStates.clear();
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
containerStates.forEach((state, container) => {
|
|
161
|
+
if (!state.stack.some((toast) => toast.id === id)) return;
|
|
162
|
+
state.stack = state.stack.filter((toast) => toast.id !== id);
|
|
163
|
+
state.update?.();
|
|
164
|
+
if (!state.stack.length) {
|
|
165
|
+
toastRoots.get(container)?.unmount();
|
|
166
|
+
toastRoots.delete(container);
|
|
167
|
+
containerStates.delete(container);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
};
|
|
171
|
+
Toast.destroyAll = () => {
|
|
172
|
+
Toast.destroy();
|
|
173
|
+
};
|
|
174
|
+
Toast.info = (title, props) => renderToast({
|
|
175
|
+
type: "info",
|
|
176
|
+
title,
|
|
177
|
+
...props
|
|
178
|
+
});
|
|
179
|
+
Toast.success = (title, props) => renderToast({
|
|
180
|
+
type: "success",
|
|
181
|
+
title,
|
|
182
|
+
...props
|
|
183
|
+
});
|
|
184
|
+
Toast.error = (title, props) => renderToast({
|
|
185
|
+
type: "error",
|
|
186
|
+
title,
|
|
187
|
+
...props
|
|
188
|
+
});
|
|
189
|
+
Toast.warning = (title, props) => renderToast({
|
|
190
|
+
type: "warning",
|
|
191
|
+
title,
|
|
192
|
+
...props
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
//#endregion
|
|
196
|
+
export { Toast as default };
|
|
197
|
+
//# sourceMappingURL=toast.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.mjs","names":["uuid"],"sources":["../../../src/components/organisms/toast.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Root, createRoot } from 'react-dom/client';\n\nimport { Check, Info, OctagonAlert, OctagonX, X } from 'lucide-react';\nimport { v4 as uuid } from 'uuid';\n\nimport { cn } from '@repo/ui/utils';\n\nimport Button from '../atoms/button';\n\ntype ToastType = 'info' | 'success' | 'error' | 'warning';\n\nexport interface Props {\n type?: ToastType;\n title: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n closable?: boolean;\n action?: React.ReactNode;\n className?: string;\n onClose?: () => void;\n}\n\ninterface StaticProps extends Props {\n id?: string;\n duration?: number;\n container?: HTMLElement;\n}\n\nconst isBrowser =\n typeof window !== 'undefined' && typeof document !== 'undefined';\n\ntype ContainerState = {\n stack: StaticProps[];\n update: (() => void) | null;\n};\n\nconst containerStates = new Map<HTMLElement, ContainerState>();\n\nconst getContainerState = (container: HTMLElement): ContainerState => {\n let state = containerStates.get(container);\n\n if (!state) {\n state = { stack: [], update: null };\n containerStates.set(container, state);\n }\n\n return state;\n};\n\nconst createToastRoot = (container?: HTMLElement) => {\n if (!isBrowser) {\n return null;\n }\n\n const targetContainer = container || document.body;\n let rootEl = targetContainer.querySelector(\n '#toast-root',\n ) as HTMLElement | null;\n\n if (!rootEl) {\n rootEl = document.createElement('div');\n rootEl.setAttribute('id', 'toast-root');\n rootEl.setAttribute('role', 'region');\n rootEl.setAttribute('aria-label', 'Notifications');\n rootEl.style.zIndex = '10000';\n rootEl.style.position = 'fixed';\n rootEl.style.right = '0';\n rootEl.style.bottom = '0';\n rootEl.style.display = 'flex';\n rootEl.style.flexDirection = 'column-reverse';\n rootEl.style.gap = '8px';\n rootEl.style.padding = '16px';\n rootEl.style.pointerEvents = 'none';\n targetContainer.appendChild(rootEl);\n }\n\n return rootEl;\n};\n\nconst TYPE_ICONS: Record<ToastType, React.ReactNode> = {\n info: <Info className=\"text-blue-400\" />,\n success: <Check className=\"text-green-400\" />,\n error: <OctagonX className=\"text-red-400\" />,\n warning: <OctagonAlert className=\"text-yellow-400\" />,\n};\n\nconst Toast = ({\n type,\n title,\n description,\n icon,\n closable = true,\n action,\n className,\n onClose,\n}: Props) => {\n return (\n <div\n role=\"status\"\n className={cn(\n 'pointer-events-auto flex w-80 items-start gap-3 rounded-lg',\n 'bg-background text-foreground border p-4 shadow-lg',\n className,\n //\n )}\n >\n {(icon || type) && (\n <div className=\"mt-0.5 shrink-0 [&_svg]:size-5\">\n {icon || (type && TYPE_ICONS[type])}\n </div>\n )}\n <div className=\"flex-1 space-y-1\">\n <p className=\"text-sm font-medium\">{title}</p>\n {description && (\n <p className=\"text-muted-foreground text-sm\">{description}</p>\n )}\n {action && <div className=\"pt-1\">{action}</div>}\n </div>\n {closable && (\n <Button\n type=\"text\"\n shape=\"circle\"\n size=\"small\"\n aria-label=\"Close\"\n icon={<X />}\n onClick={onClose}\n />\n )}\n </div>\n );\n};\n\nconst DEFAULT_DURATION = 4000;\n\nconst StaticToast = ({\n id,\n duration = DEFAULT_DURATION,\n container,\n onClose,\n ...props\n}: StaticProps) => {\n const [visible, setVisible] = useState(true);\n\n const close = () => {\n onClose?.();\n setVisible(false);\n setTimeout(() => {\n Toast.destroy(id);\n }, 200);\n };\n\n useEffect(() => {\n if (!duration) {\n return;\n }\n\n const timer = setTimeout(close, duration);\n return () => clearTimeout(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [duration]);\n\n if (!isBrowser) {\n return null;\n }\n\n return createPortal(\n <div\n className={cn(\n 'transition-all duration-200',\n visible ? 'opacity-100' : 'translate-x-2 opacity-0',\n )}\n >\n <Toast {...props} onClose={close} />\n </div>,\n createToastRoot(container)!,\n );\n};\n\nconst ToastStackRenderer = ({ container }: { container: HTMLElement }) => {\n const [, forceUpdate] = useState({});\n\n useEffect(() => {\n const state = getContainerState(container);\n state.update = () => forceUpdate({});\n return () => {\n state.update = null;\n };\n }, [container]);\n\n const { stack } = getContainerState(container);\n\n return (\n <>\n {stack.map(({ id, ...props }) => (\n <StaticToast key={id} id={id} {...props} />\n ))}\n </>\n );\n};\n\nconst toastRoots = new Map<HTMLElement, Root>();\n\nconst renderToast = (props: StaticProps) => {\n if (!isBrowser) {\n return;\n }\n\n const targetContainer = props.container || document.body;\n const rootElement = createToastRoot(targetContainer)!;\n\n if (!toastRoots.has(targetContainer)) {\n const root = createRoot(rootElement);\n toastRoots.set(targetContainer, root);\n root.render(<ToastStackRenderer container={targetContainer} />);\n }\n\n const state = getContainerState(targetContainer);\n const id = props.id || uuid();\n state.stack.push({ ...props, id });\n state.update?.();\n\n return id;\n};\n\nToast.destroy = (id?: string) => {\n if (!id) {\n containerStates.forEach(state => {\n state.stack = [];\n state.update?.();\n });\n toastRoots.forEach(root => root.unmount());\n toastRoots.clear();\n containerStates.clear();\n return;\n }\n\n containerStates.forEach((state, container) => {\n if (!state.stack.some(toast => toast.id === id)) {\n return;\n }\n\n state.stack = state.stack.filter(toast => toast.id !== id);\n state.update?.();\n\n if (!state.stack.length) {\n toastRoots.get(container)?.unmount();\n toastRoots.delete(container);\n containerStates.delete(container);\n }\n });\n};\n\nToast.destroyAll = () => {\n Toast.destroy();\n};\n\ntype TriggerOptions = Omit<StaticProps, 'type' | 'title'>;\n\nToast.info = (title: React.ReactNode, props?: TriggerOptions) =>\n renderToast({ type: 'info', title, ...props });\nToast.success = (title: React.ReactNode, props?: TriggerOptions) =>\n renderToast({ type: 'success', title, ...props });\nToast.error = (title: React.ReactNode, props?: TriggerOptions) =>\n renderToast({ type: 'error', title, ...props });\nToast.warning = (title: React.ReactNode, props?: TriggerOptions) =>\n renderToast({ type: 'warning', title, ...props });\n\nexport default Toast;\nexport type { StaticProps as ToastOptions };\n"],"mappings":"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"}
|
package/dist/core/badge.d.mts
CHANGED
|
@@ -8,7 +8,7 @@ declare namespace badge_d_exports {
|
|
|
8
8
|
export { Badge, Props, badgeVariants };
|
|
9
9
|
}
|
|
10
10
|
declare const badgeVariants: (props?: ({
|
|
11
|
-
variant?: "default" | "
|
|
11
|
+
variant?: "default" | "secondary" | "destructive" | "outline" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
13
13
|
type Props = React$1.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & {
|
|
14
14
|
asChild?: boolean;
|
package/dist/core/button.d.mts
CHANGED
|
@@ -8,8 +8,8 @@ declare namespace button_d_exports {
|
|
|
8
8
|
export { Button, Props, buttonVariants };
|
|
9
9
|
}
|
|
10
10
|
declare const buttonVariants: (props?: ({
|
|
11
|
-
variant?: "link" | "default" | "
|
|
12
|
-
size?: "
|
|
11
|
+
variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
12
|
+
size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
13
13
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
14
14
|
type Props = React$1.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
|
|
15
15
|
asChild?: boolean;
|
|
@@ -12,8 +12,12 @@ declare function RadioGroup$1({
|
|
|
12
12
|
}: React$1.ComponentProps<typeof RadioGroup.Root>): react_jsx_runtime0.JSX.Element;
|
|
13
13
|
declare function RadioGroupItem({
|
|
14
14
|
className,
|
|
15
|
+
asChild,
|
|
16
|
+
children,
|
|
15
17
|
...props
|
|
16
|
-
}: React$1.ComponentProps<typeof RadioGroup.Item>
|
|
18
|
+
}: React$1.ComponentProps<typeof RadioGroup.Item> & {
|
|
19
|
+
asChild?: boolean;
|
|
20
|
+
}): react_jsx_runtime0.JSX.Element;
|
|
17
21
|
//#endregion
|
|
18
22
|
export { RadioGroup$1 as RadioGroup, radio_group_d_exports };
|
|
19
23
|
//# sourceMappingURL=radio-group.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.d.mts","names":[],"sources":["../../src/core/radio-group.tsx"],"mappings":";;;;;;;;iBASS,YAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,UAAA,CAAoB,IAAA,IAAK,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAU/C,cAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,UAAA,CAAoB,IAAA,
|
|
1
|
+
{"version":3,"file":"radio-group.d.mts","names":[],"sources":["../../src/core/radio-group.tsx"],"mappings":";;;;;;;;iBASS,YAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,UAAA,CAAoB,IAAA,IAAK,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAU/C,cAAA,CAAA;EACP,SAAA;EACA,OAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,UAAA,CAAoB,IAAA;EACjD,OAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -19,7 +19,13 @@ function RadioGroup$1({ className, ...props }) {
|
|
|
19
19
|
...props
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
function RadioGroupItem({ className, ...props }) {
|
|
22
|
+
function RadioGroupItem({ className, asChild, children, ...props }) {
|
|
23
|
+
if (asChild) return /* @__PURE__ */ jsx(RadioGroup.Item, {
|
|
24
|
+
asChild: true,
|
|
25
|
+
"data-slot": "radio-group-item",
|
|
26
|
+
...props,
|
|
27
|
+
children
|
|
28
|
+
});
|
|
23
29
|
return /* @__PURE__ */ jsx(RadioGroup.Item, {
|
|
24
30
|
"data-slot": "radio-group-item",
|
|
25
31
|
className: cn(`border-input text-primary focus-visible:border-ring
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.mjs","names":["RadioGroup","RadioGroupPrimitive"],"sources":["../../src/core/radio-group.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { CircleIcon } from 'lucide-react';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nimport { cn } from '@repo/ui/utils';\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n `border-input text-primary focus-visible:border-ring\n focus-visible:ring-ring/50 aria-invalid:ring-destructive/20\n dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\n dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border\n shadow-xs transition-[color,box-shadow] outline-none\n focus-visible:ring-[3px] disabled:cursor-not-allowed\n disabled:opacity-50`,\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon\n className=\"fill-primary absolute top-1/2 left-1/2 size-2\n -translate-x-1/2 -translate-y-1/2\"\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;;;;;;;;;;;AASA,SAASA,aAAW,EAClB,WACA,GAAG,SACqD;AACxD,QACE,oBAACC,WAAoB;EACnB,aAAU;EACV,WAAW,GAAG,cAAc,UAAU;EACtC,GAAI;GACJ;;AAIN,SAAS,eAAe,EACtB,WACA,GAAG,
|
|
1
|
+
{"version":3,"file":"radio-group.mjs","names":["RadioGroup","RadioGroupPrimitive"],"sources":["../../src/core/radio-group.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { CircleIcon } from 'lucide-react';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nimport { cn } from '@repo/ui/utils';\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n asChild,\n children,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & {\n asChild?: boolean;\n}) {\n // `asChild` hands the rendered element to `children` entirely (e.g. a\n // `Button`), so the default dot indicator doesn't apply — Radix clones\n // its own role/aria-checked/keyboard handling onto that single child\n // instead of onto its own `<button>`.\n if (asChild) {\n return (\n <RadioGroupPrimitive.Item asChild data-slot=\"radio-group-item\" {...props}>\n {children}\n </RadioGroupPrimitive.Item>\n );\n }\n\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n `border-input text-primary focus-visible:border-ring\n focus-visible:ring-ring/50 aria-invalid:ring-destructive/20\n dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\n dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border\n shadow-xs transition-[color,box-shadow] outline-none\n focus-visible:ring-[3px] disabled:cursor-not-allowed\n disabled:opacity-50`,\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon\n className=\"fill-primary absolute top-1/2 left-1/2 size-2\n -translate-x-1/2 -translate-y-1/2\"\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;;;;;;;;;;;AASA,SAASA,aAAW,EAClB,WACA,GAAG,SACqD;AACxD,QACE,oBAACC,WAAoB;EACnB,aAAU;EACV,WAAW,GAAG,cAAc,UAAU;EACtC,GAAI;GACJ;;AAIN,SAAS,eAAe,EACtB,WACA,SACA,UACA,GAAG,SAGF;AAKD,KAAI,QACF,QACE,oBAACA,WAAoB;EAAK;EAAQ,aAAU;EAAmB,GAAI;EAChE;GACwB;AAI/B,QACE,oBAACA,WAAoB;EACnB,aAAU;EACV,WAAW,GACT;;;;;;8BAOA,UACD;EACD,GAAI;YAEJ,oBAACA,WAAoB;GACnB,aAAU;GACV,WAAU;aAEV,oBAAC,cACC,WAAU,iGAEV;IAC4B;GACP"}
|
package/dist/index.d.mts
CHANGED
|
@@ -29,10 +29,11 @@ import { Drawer, Props as Props$1 } from "./components/organisms/drawer.mjs";
|
|
|
29
29
|
import { List } from "./components/organisms/list/index.mjs";
|
|
30
30
|
import { Modal } from "./components/organisms/modal.mjs";
|
|
31
31
|
import { Swiper } from "./components/organisms/swiper/index.mjs";
|
|
32
|
+
import { StaticProps, Toast } from "./components/organisms/toast.mjs";
|
|
32
33
|
import "./components/organisms/index.mjs";
|
|
33
34
|
import "./components/templates/index.mjs";
|
|
34
35
|
import { ThemeConfig, ThemeToken } from "./providers/Config/types.mjs";
|
|
35
36
|
import { useConfig } from "./providers/Config/context.mjs";
|
|
36
37
|
import { Config, Props } from "./providers/Config/index.mjs";
|
|
37
38
|
import "./providers/index.mjs";
|
|
38
|
-
export { Button, Card, Checkbox, Collapse, ColorPicker, Config, Props as ConfigProps, DatePicker, Drawer, Props$1 as DrawerProps, Dropdown, FloatButton, Input, Layout, List, Marquees, Menu, Modal, Popover, Progress, Radio, Reveals, Select, Skeleton, Space, Spin, Splitter, Swiper, Switch, Tag, ThemeConfig, ThemeToken, Typography, Upload, UploadFile, useConfig };
|
|
39
|
+
export { Button, Card, Checkbox, Collapse, ColorPicker, Config, Props as ConfigProps, DatePicker, Drawer, Props$1 as DrawerProps, Dropdown, FloatButton, Input, Layout, List, Marquees, Menu, Modal, Popover, Progress, Radio, Reveals, Select, Skeleton, Space, Spin, Splitter, Swiper, Switch, Tag, ThemeConfig, ThemeToken, Toast, StaticProps as ToastOptions, Typography, Upload, UploadFile, useConfig };
|
package/dist/index.mjs
CHANGED
|
@@ -27,8 +27,9 @@ import Drawer from "./components/organisms/drawer.mjs";
|
|
|
27
27
|
import List from "./components/organisms/list/index.mjs";
|
|
28
28
|
import Modal from "./components/organisms/modal.mjs";
|
|
29
29
|
import Swiper from "./components/organisms/swiper/index.mjs";
|
|
30
|
+
import Toast from "./components/organisms/toast.mjs";
|
|
30
31
|
import Layout from "./Layout.mjs";
|
|
31
32
|
import { useConfig } from "./providers/Config/context.mjs";
|
|
32
33
|
import Config from "./providers/Config/index.mjs";
|
|
33
34
|
|
|
34
|
-
export { Button, Card, Checkbox, Collapse, ColorPicker, Config, DatePicker, Drawer, Dropdown, FloatButton, Input, Layout, List, Marquees, Menu, Modal, Popover, Progress, Radio, Reveals, Select, Skeleton, Space, Spin, Splitter, Swiper, Switch, Tag, Typography, Upload, useConfig };
|
|
35
|
+
export { Button, Card, Checkbox, Collapse, ColorPicker, Config, DatePicker, Drawer, Dropdown, FloatButton, Input, Layout, List, Marquees, Menu, Modal, Popover, Progress, Radio, Reveals, Select, Skeleton, Space, Spin, Splitter, Swiper, Switch, Tag, Toast, Typography, Upload, useConfig };
|
package/dist/style.css
CHANGED
|
@@ -204,12 +204,18 @@
|
|
|
204
204
|
container-type: inline-size;
|
|
205
205
|
container-name: field-group;
|
|
206
206
|
}
|
|
207
|
+
.pointer-events-auto {
|
|
208
|
+
pointer-events: auto;
|
|
209
|
+
}
|
|
207
210
|
.pointer-events-none {
|
|
208
211
|
pointer-events: none;
|
|
209
212
|
}
|
|
210
213
|
.invisible {
|
|
211
214
|
visibility: hidden;
|
|
212
215
|
}
|
|
216
|
+
.visible {
|
|
217
|
+
visibility: visible;
|
|
218
|
+
}
|
|
213
219
|
.sr-only {
|
|
214
220
|
position: absolute;
|
|
215
221
|
width: 1px;
|
|
@@ -269,27 +275,15 @@
|
|
|
269
275
|
.right-5 {
|
|
270
276
|
right: calc(var(--spacing) * 5);
|
|
271
277
|
}
|
|
272
|
-
.right-full {
|
|
273
|
-
right: 100%;
|
|
274
|
-
}
|
|
275
|
-
.bottom-4 {
|
|
276
|
-
bottom: calc(var(--spacing) * 4);
|
|
277
|
-
}
|
|
278
278
|
.bottom-5 {
|
|
279
279
|
bottom: calc(var(--spacing) * 5);
|
|
280
280
|
}
|
|
281
|
-
.bottom-full {
|
|
282
|
-
bottom: 100%;
|
|
283
|
-
}
|
|
284
281
|
.left-0 {
|
|
285
282
|
left: calc(var(--spacing) * 0);
|
|
286
283
|
}
|
|
287
284
|
.left-1\/2 {
|
|
288
285
|
left: calc(1/2 * 100%);
|
|
289
286
|
}
|
|
290
|
-
.left-4 {
|
|
291
|
-
left: calc(var(--spacing) * 4);
|
|
292
|
-
}
|
|
293
287
|
.left-\[50\%\] {
|
|
294
288
|
left: 50%;
|
|
295
289
|
}
|
|
@@ -353,6 +347,9 @@
|
|
|
353
347
|
.my-1 {
|
|
354
348
|
margin-block: calc(var(--spacing) * 1);
|
|
355
349
|
}
|
|
350
|
+
.mt-0\.5 {
|
|
351
|
+
margin-top: calc(var(--spacing) * 0.5);
|
|
352
|
+
}
|
|
356
353
|
.mt-2 {
|
|
357
354
|
margin-top: calc(var(--spacing) * 2);
|
|
358
355
|
}
|
|
@@ -577,6 +574,9 @@
|
|
|
577
574
|
.w-72 {
|
|
578
575
|
width: calc(var(--spacing) * 72);
|
|
579
576
|
}
|
|
577
|
+
.w-80 {
|
|
578
|
+
width: calc(var(--spacing) * 80);
|
|
579
|
+
}
|
|
580
580
|
.w-100 {
|
|
581
581
|
width: calc(var(--spacing) * 100);
|
|
582
582
|
}
|
|
@@ -660,6 +660,10 @@
|
|
|
660
660
|
--tw-translate-x: calc(calc(1/2 * 100%) * -1);
|
|
661
661
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
662
662
|
}
|
|
663
|
+
.translate-x-2 {
|
|
664
|
+
--tw-translate-x: calc(var(--spacing) * 2);
|
|
665
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
666
|
+
}
|
|
663
667
|
.translate-x-\[-50\%\] {
|
|
664
668
|
--tw-translate-x: -50%;
|
|
665
669
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
@@ -800,6 +804,13 @@
|
|
|
800
804
|
.gap-7 {
|
|
801
805
|
gap: calc(var(--spacing) * 7);
|
|
802
806
|
}
|
|
807
|
+
.space-y-1 {
|
|
808
|
+
:where(& > :not(:last-child)) {
|
|
809
|
+
--tw-space-y-reverse: 0;
|
|
810
|
+
margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
|
|
811
|
+
margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
|
|
812
|
+
}
|
|
813
|
+
}
|
|
803
814
|
.space-y-2 {
|
|
804
815
|
:where(& > :not(:last-child)) {
|
|
805
816
|
--tw-space-y-reverse: 0;
|
|
@@ -870,6 +881,10 @@
|
|
|
870
881
|
border-top-left-radius: 30px !important;
|
|
871
882
|
border-top-right-radius: 30px !important;
|
|
872
883
|
}
|
|
884
|
+
.rounded-t-lg {
|
|
885
|
+
border-top-left-radius: var(--radius);
|
|
886
|
+
border-top-right-radius: var(--radius);
|
|
887
|
+
}
|
|
873
888
|
.rounded-l-lg {
|
|
874
889
|
border-top-left-radius: var(--radius);
|
|
875
890
|
border-bottom-left-radius: var(--radius);
|
|
@@ -894,6 +909,10 @@
|
|
|
894
909
|
border-top-right-radius: 0;
|
|
895
910
|
border-bottom-right-radius: 0;
|
|
896
911
|
}
|
|
912
|
+
.rounded-b-lg {
|
|
913
|
+
border-bottom-right-radius: var(--radius);
|
|
914
|
+
border-bottom-left-radius: var(--radius);
|
|
915
|
+
}
|
|
897
916
|
.border {
|
|
898
917
|
border-style: var(--tw-border-style);
|
|
899
918
|
border-width: 1px;
|
|
@@ -1119,6 +1138,9 @@
|
|
|
1119
1138
|
.pt-0 {
|
|
1120
1139
|
padding-top: calc(var(--spacing) * 0);
|
|
1121
1140
|
}
|
|
1141
|
+
.pt-1 {
|
|
1142
|
+
padding-top: calc(var(--spacing) * 1);
|
|
1143
|
+
}
|
|
1122
1144
|
.pt-2 {
|
|
1123
1145
|
padding-top: calc(var(--spacing) * 2);
|
|
1124
1146
|
}
|
|
@@ -1595,42 +1617,6 @@
|
|
|
1595
1617
|
position: absolute;
|
|
1596
1618
|
}
|
|
1597
1619
|
}
|
|
1598
|
-
.before\:top-0 {
|
|
1599
|
-
&::before {
|
|
1600
|
-
content: var(--tw-content);
|
|
1601
|
-
top: calc(var(--spacing) * 0);
|
|
1602
|
-
}
|
|
1603
|
-
}
|
|
1604
|
-
.before\:top-1\/2 {
|
|
1605
|
-
&::before {
|
|
1606
|
-
content: var(--tw-content);
|
|
1607
|
-
top: calc(1/2 * 100%);
|
|
1608
|
-
}
|
|
1609
|
-
}
|
|
1610
|
-
.before\:right-0 {
|
|
1611
|
-
&::before {
|
|
1612
|
-
content: var(--tw-content);
|
|
1613
|
-
right: calc(var(--spacing) * 0);
|
|
1614
|
-
}
|
|
1615
|
-
}
|
|
1616
|
-
.before\:bottom-0 {
|
|
1617
|
-
&::before {
|
|
1618
|
-
content: var(--tw-content);
|
|
1619
|
-
bottom: calc(var(--spacing) * 0);
|
|
1620
|
-
}
|
|
1621
|
-
}
|
|
1622
|
-
.before\:left-0 {
|
|
1623
|
-
&::before {
|
|
1624
|
-
content: var(--tw-content);
|
|
1625
|
-
left: calc(var(--spacing) * 0);
|
|
1626
|
-
}
|
|
1627
|
-
}
|
|
1628
|
-
.before\:left-1\/2 {
|
|
1629
|
-
&::before {
|
|
1630
|
-
content: var(--tw-content);
|
|
1631
|
-
left: calc(1/2 * 100%);
|
|
1632
|
-
}
|
|
1633
|
-
}
|
|
1634
1620
|
.before\:h-0 {
|
|
1635
1621
|
&::before {
|
|
1636
1622
|
content: var(--tw-content);
|
|
@@ -1643,20 +1629,6 @@
|
|
|
1643
1629
|
width: calc(var(--spacing) * 0);
|
|
1644
1630
|
}
|
|
1645
1631
|
}
|
|
1646
|
-
.before\:-translate-x-1\/2 {
|
|
1647
|
-
&::before {
|
|
1648
|
-
content: var(--tw-content);
|
|
1649
|
-
--tw-translate-x: calc(calc(1/2 * 100%) * -1);
|
|
1650
|
-
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1651
|
-
}
|
|
1652
|
-
}
|
|
1653
|
-
.before\:-translate-y-1\/2 {
|
|
1654
|
-
&::before {
|
|
1655
|
-
content: var(--tw-content);
|
|
1656
|
-
--tw-translate-y: calc(calc(1/2 * 100%) * -1);
|
|
1657
|
-
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1658
|
-
}
|
|
1659
|
-
}
|
|
1660
1632
|
.before\:border-t-\[9px\] {
|
|
1661
1633
|
&::before {
|
|
1662
1634
|
content: var(--tw-content);
|
|
@@ -1751,66 +1723,12 @@
|
|
|
1751
1723
|
inset-block: calc(var(--spacing) * 0);
|
|
1752
1724
|
}
|
|
1753
1725
|
}
|
|
1754
|
-
.after\:-top-px {
|
|
1755
|
-
&::after {
|
|
1756
|
-
content: var(--tw-content);
|
|
1757
|
-
top: -1px;
|
|
1758
|
-
}
|
|
1759
|
-
}
|
|
1760
|
-
.after\:top-1\/2 {
|
|
1761
|
-
&::after {
|
|
1762
|
-
content: var(--tw-content);
|
|
1763
|
-
top: calc(1/2 * 100%);
|
|
1764
|
-
}
|
|
1765
|
-
}
|
|
1766
|
-
.after\:top-px {
|
|
1767
|
-
&::after {
|
|
1768
|
-
content: var(--tw-content);
|
|
1769
|
-
top: 1px;
|
|
1770
|
-
}
|
|
1771
|
-
}
|
|
1772
|
-
.after\:-right-px {
|
|
1773
|
-
&::after {
|
|
1774
|
-
content: var(--tw-content);
|
|
1775
|
-
right: -1px;
|
|
1776
|
-
}
|
|
1777
|
-
}
|
|
1778
|
-
.after\:right-px {
|
|
1779
|
-
&::after {
|
|
1780
|
-
content: var(--tw-content);
|
|
1781
|
-
right: 1px;
|
|
1782
|
-
}
|
|
1783
|
-
}
|
|
1784
|
-
.after\:-bottom-px {
|
|
1785
|
-
&::after {
|
|
1786
|
-
content: var(--tw-content);
|
|
1787
|
-
bottom: -1px;
|
|
1788
|
-
}
|
|
1789
|
-
}
|
|
1790
|
-
.after\:bottom-px {
|
|
1791
|
-
&::after {
|
|
1792
|
-
content: var(--tw-content);
|
|
1793
|
-
bottom: 1px;
|
|
1794
|
-
}
|
|
1795
|
-
}
|
|
1796
|
-
.after\:-left-px {
|
|
1797
|
-
&::after {
|
|
1798
|
-
content: var(--tw-content);
|
|
1799
|
-
left: -1px;
|
|
1800
|
-
}
|
|
1801
|
-
}
|
|
1802
1726
|
.after\:left-1\/2 {
|
|
1803
1727
|
&::after {
|
|
1804
1728
|
content: var(--tw-content);
|
|
1805
1729
|
left: calc(1/2 * 100%);
|
|
1806
1730
|
}
|
|
1807
1731
|
}
|
|
1808
|
-
.after\:left-px {
|
|
1809
|
-
&::after {
|
|
1810
|
-
content: var(--tw-content);
|
|
1811
|
-
left: 1px;
|
|
1812
|
-
}
|
|
1813
|
-
}
|
|
1814
1732
|
.after\:h-0 {
|
|
1815
1733
|
&::after {
|
|
1816
1734
|
content: var(--tw-content);
|
|
@@ -1836,13 +1754,6 @@
|
|
|
1836
1754
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1837
1755
|
}
|
|
1838
1756
|
}
|
|
1839
|
-
.after\:-translate-y-1\/2 {
|
|
1840
|
-
&::after {
|
|
1841
|
-
content: var(--tw-content);
|
|
1842
|
-
--tw-translate-y: calc(calc(1/2 * 100%) * -1);
|
|
1843
|
-
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1844
|
-
}
|
|
1845
|
-
}
|
|
1846
1757
|
.after\:border-t-8 {
|
|
1847
1758
|
&::after {
|
|
1848
1759
|
content: var(--tw-content);
|
|
@@ -2998,6 +2909,12 @@
|
|
|
2998
2909
|
pointer-events: none;
|
|
2999
2910
|
}
|
|
3000
2911
|
}
|
|
2912
|
+
.\[\&_svg\]\:size-5 {
|
|
2913
|
+
& svg {
|
|
2914
|
+
width: calc(var(--spacing) * 5);
|
|
2915
|
+
height: calc(var(--spacing) * 5);
|
|
2916
|
+
}
|
|
2917
|
+
}
|
|
3001
2918
|
.\[\&_svg\]\:shrink-0 {
|
|
3002
2919
|
& svg {
|
|
3003
2920
|
flex-shrink: 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbpark/ui-kit",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "Modern React UI component library built with TypeScript, Tailwind CSS, and Radix UI. Featuring atoms, molecules, organisms and layout templates for building beautiful interfaces.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
},
|
|
127
127
|
"dependencies": {
|
|
128
128
|
"@gsap/react": "^2.1.2",
|
|
129
|
-
"@jbpark/use-hooks": "^2.
|
|
129
|
+
"@jbpark/use-hooks": "^2.11.0",
|
|
130
130
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
131
131
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
132
132
|
"@radix-ui/react-dialog": "^1.1.15",
|