Add policies version history
Signed-off-by: Bryan Frimin <bryan@getprobo.com> Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
committed by
Sacha Al Himdani
parent
abe0ce1dde
commit
2e6741942b
@@ -8,7 +8,7 @@ type Props = {
|
||||
|
||||
export function Avatar({ name, src, size = "m" }: Props) {
|
||||
const className = clsx(
|
||||
"bg-txt-success text-txt-invert rounded-full font-semibold flex items-center justify-center",
|
||||
"bg-txt-success text-txt-invert rounded-full font-semibold flex items-center justify-center flex-none",
|
||||
size === "s" && "size-5 text-xss",
|
||||
size === "m" && "size-6 text-xxs",
|
||||
size === "l" && "size-8 text-sm",
|
||||
|
||||
@@ -62,6 +62,7 @@ export const Button = (props: Props) => {
|
||||
iconAfter: IconAfterComponent,
|
||||
children,
|
||||
onClick,
|
||||
variant,
|
||||
...componentProps
|
||||
} = props;
|
||||
return (
|
||||
@@ -69,7 +70,7 @@ export const Button = (props: Props) => {
|
||||
<Component
|
||||
{...componentProps}
|
||||
onClick={onClick}
|
||||
className={button({ ...props, empty: !children })}
|
||||
className={button({ ...props, variant, empty: !children })}
|
||||
>
|
||||
{IconComponent && <IconComponent size={16} className="flex-none" />}
|
||||
{children}
|
||||
|
||||
8
packages/ui/src/Atoms/Icons/IconClock.tsx
Normal file
8
packages/ui/src/Atoms/Icons/IconClock.tsx
Normal file
@@ -0,0 +1,8 @@
|
||||
import type {IconProps} from "./type.ts";
|
||||
|
||||
export function IconClock({size = 24, className}: IconProps) {
|
||||
return <svg width={size} height={size} viewBox="0 0 16 16" fill="currentColor" className={className} xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.3335 8.00065C13.3335 5.05513 10.9457 2.66732 8.00016 2.66732C5.05465 2.66732 2.66683 5.05513 2.66683 8.00065C2.66683 10.9462 5.05464 13.334 8.00016 13.334C10.9457 13.334 13.3335 10.9462 13.3335 8.00065ZM7.3335 5.33398C7.3335 4.96579 7.63197 4.66732 8.00016 4.66732C8.36835 4.66732 8.66683 4.96579 8.66683 5.33398V7.72461L10.1382 9.19596L10.1838 9.24675C10.3973 9.50859 10.3823 9.8946 10.1382 10.1387C9.89411 10.3827 9.50811 10.3978 9.24626 10.1842L9.19548 10.1387L7.52881 8.47201C7.40378 8.34698 7.3335 8.17746 7.3335 8.00065V5.33398ZM14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31827 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31827 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31876 14.6668 8.00065Z" fill="currentColor"/>
|
||||
</svg>
|
||||
|
||||
}
|
||||
3
packages/ui/src/Atoms/Icons/clock.svg
Normal file
3
packages/ui/src/Atoms/Icons/clock.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.3335 8.00065C13.3335 5.05513 10.9457 2.66732 8.00016 2.66732C5.05465 2.66732 2.66683 5.05513 2.66683 8.00065C2.66683 10.9462 5.05464 13.334 8.00016 13.334C10.9457 13.334 13.3335 10.9462 13.3335 8.00065ZM7.3335 5.33398C7.3335 4.96579 7.63197 4.66732 8.00016 4.66732C8.36835 4.66732 8.66683 4.96579 8.66683 5.33398V7.72461L10.1382 9.19596L10.1838 9.24675C10.3973 9.50859 10.3823 9.8946 10.1382 10.1387C9.89411 10.3827 9.50811 10.3978 9.24626 10.1842L9.19548 10.1387L7.52881 8.47201C7.40378 8.34698 7.3335 8.17746 7.3335 8.00065V5.33398ZM14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31827 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31827 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31876 14.6668 8.00065Z" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 873 B |
@@ -12,6 +12,7 @@ export { IconCrossLargeX } from "./IconCrossLargeX.tsx";
|
||||
export { IconUpload } from "./IconUpload.tsx";
|
||||
export { IconListStack } from "./IconListStack.tsx";
|
||||
export { IconCircleCheck1 } from "./IconCircleCheck1.tsx";
|
||||
export { IconClock } from "./IconClock.tsx";
|
||||
export { IconImport2 } from "./IconImport2.tsx";
|
||||
export { IconChevronTriangleDownSmall } from "./IconChevronTriangleDownSmall.tsx";
|
||||
export { IconCheckmark1 } from "./IconCheckmark1.tsx";
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import {
|
||||
useRef,
|
||||
type FormEventHandler,
|
||||
type TextareaHTMLAttributes,
|
||||
type RefObject,
|
||||
type RefCallback,
|
||||
useLayoutEffect,
|
||||
} from "react";
|
||||
import { input } from "../Input/Input";
|
||||
import clsx from "clsx";
|
||||
@@ -10,26 +10,35 @@ import clsx from "clsx";
|
||||
type Props = TextareaHTMLAttributes<HTMLTextAreaElement> & {
|
||||
variant?: "bordered" | "ghost" | "title";
|
||||
autogrow?: boolean;
|
||||
ref?: RefObject<HTMLTextAreaElement>;
|
||||
ref?: RefCallback<HTMLTextAreaElement>;
|
||||
};
|
||||
|
||||
export function Textarea(props: Props) {
|
||||
const textbox = useRef<HTMLTextAreaElement>(null);
|
||||
const ref = useRef<HTMLTextAreaElement>(null);
|
||||
const { autogrow, variant, ref: propsRef, ...restProps } = props;
|
||||
const ref = propsRef || textbox;
|
||||
|
||||
const adjustHeight: FormEventHandler<HTMLTextAreaElement> = (e) => {
|
||||
props.onInput?.(e);
|
||||
const adjustHeight = () => {
|
||||
if (!autogrow || !ref.current) return;
|
||||
ref.current.style.height = "inherit";
|
||||
const paddingY = 2;
|
||||
ref.current.style.height = `${ref.current.scrollHeight + paddingY * 2}px`;
|
||||
};
|
||||
|
||||
useLayoutEffect(() => {
|
||||
adjustHeight();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<textarea
|
||||
{...restProps}
|
||||
ref={ref}
|
||||
onInput={adjustHeight}
|
||||
ref={(node) => {
|
||||
ref.current = node;
|
||||
propsRef?.(node);
|
||||
}}
|
||||
onInput={(e) => {
|
||||
adjustHeight();
|
||||
props.onInput?.(e);
|
||||
}}
|
||||
className={input({
|
||||
...props,
|
||||
className: clsx("min-h-20", props.className),
|
||||
|
||||
Reference in New Issue
Block a user