@redgate/brand-web-toolkit 0.0.7 → 0.0.9

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.
@@ -0,0 +1,22 @@
1
+ import { IIcon } from '../icons/Icon';
2
+ export type IButtonHierarchy = 'primary' | 'secondary' | 'tertiary' | 'transparent';
3
+ export type IButton = {
4
+ hierarchy?: IButtonHierarchy;
5
+ label: string;
6
+ size?: 'xl';
7
+ type?: 'button' | 'reset' | 'submit' | 'link';
8
+ href?: string;
9
+ disabled?: boolean;
10
+ icon?: {
11
+ leading?: {
12
+ icon: IIcon['icon'];
13
+ size?: IIcon['size'];
14
+ };
15
+ trailing?: {
16
+ icon: IIcon['icon'];
17
+ size?: IIcon['size'];
18
+ };
19
+ };
20
+ onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement, MouseEvent>) => void;
21
+ };
22
+ export default function Button({ hierarchy, label, icon, type, disabled, size, href, onClick, }: IButton): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,87 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import Icon from '../icons/Icon.js';
3
+
4
+ const classNames = [
5
+ 'inline-flex',
6
+ 'items-center',
7
+ 'justify-center',
8
+ 'gap-sm',
9
+ 'overflow-clip',
10
+ 'text-md',
11
+ 'font-semibold',
12
+ 'rounded-button-default',
13
+ 'cursor-pointer',
14
+ 'disabled:opacity-50',
15
+ 'disabled:cursor-not-allowed',
16
+ ];
17
+ const hierarchyStyles = {
18
+ primary: [
19
+ 'bg-bg-accent-strongest-alt',
20
+ 'text-text-primary_on-accent-strongest-alt',
21
+ 'hover:bg-bg-accent-strongest-alt_hover',
22
+ 'disabled:bg-bg-accent-strongest',
23
+ 'disabled:text-text-primary_on-accent-strongest-alt',
24
+ ],
25
+ secondary: [
26
+ 'bg-bg-primary',
27
+ 'inset-ring-2',
28
+ 'inset-ring-border-accent',
29
+ 'text-text-secondary',
30
+ 'hover:bg-bg-primary_hover',
31
+ 'hover:text-text-secondary_hover',
32
+ 'disabled:bg-bg-primary',
33
+ 'disabled:inset-ring-2',
34
+ 'disabled:inset-ring-border-primary',
35
+ 'disabled:text-text-secondary',
36
+ ],
37
+ tertiary: [
38
+ 'bg-bg-primary',
39
+ 'inset-ring-1',
40
+ 'inset-ring-border-accent',
41
+ 'text-text-secondary',
42
+ 'hover:bg-bg-primary_hover',
43
+ 'hover:text-text-secondary_hover',
44
+ 'disabled:bg-bg-primary',
45
+ 'disabled:inset-ring-1',
46
+ 'disabled:inset-ring-border-primary',
47
+ 'disabled:text-text-secondary',
48
+ ],
49
+ transparent: [
50
+ 'text-text-tertiary',
51
+ 'hover:bg-bg-primary_hover',
52
+ 'hover:text-text-tertiary_hover',
53
+ 'disabled:text-text-tertiary',
54
+ ],
55
+ };
56
+ const sizingStyles = {
57
+ xl: ['px-xl', 'py-lg'],
58
+ };
59
+ function ButtonWrapper({ type, href, disabled, className, onClick, children, }) {
60
+ const props = type === 'link'
61
+ ? {
62
+ href,
63
+ className,
64
+ onClick,
65
+ }
66
+ : {
67
+ type,
68
+ disabled,
69
+ className,
70
+ onClick,
71
+ };
72
+ return type === 'link' ? (jsx("a", { ...props, children: children })) : (jsx("button", { ...props, children: children }));
73
+ }
74
+ function Button({ hierarchy = 'primary', label, icon, type = 'button', disabled = false, size = 'xl', href, onClick, }) {
75
+ const defaultIconSize = 20;
76
+ const styles = hierarchyStyles[hierarchy];
77
+ const sizeStyles = sizingStyles[size];
78
+ let className = [...classNames, ...styles, ...sizeStyles].join(' ');
79
+ // Disable links if set to disabled.
80
+ if (disabled && type === 'link') {
81
+ className = className + ' pointer-events-none';
82
+ }
83
+ return (jsxs(ButtonWrapper, { type: type, href: href, disabled: disabled, className: className, onClick: onClick, children: [icon?.leading?.icon && (jsx(Icon, { icon: icon.leading.icon, size: icon?.leading?.size || defaultIconSize })), jsx("span", { children: label }), icon?.trailing?.icon && (jsx(Icon, { icon: icon.trailing.icon, size: icon?.trailing?.size || defaultIconSize }))] }));
84
+ }
85
+
86
+ export { Button as default };
87
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../../../../components/button/Button.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport Icon, { IIcon } from '../icons/Icon';\n\nexport type IButtonHierarchy =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'transparent';\n\nexport type IButton = {\n hierarchy?: IButtonHierarchy;\n label: string;\n size?: 'xl';\n type?: 'button' | 'reset' | 'submit' | 'link';\n href?: string;\n disabled?: boolean;\n icon?: {\n leading?: {\n icon: IIcon['icon'];\n size?: IIcon['size'];\n };\n trailing?: {\n icon: IIcon['icon'];\n size?: IIcon['size'];\n };\n };\n onClick?: (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement, MouseEvent>,\n ) => void;\n};\n\nconst classNames = [\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'gap-sm',\n 'overflow-clip',\n 'text-md',\n 'font-semibold',\n 'rounded-button-default',\n 'cursor-pointer',\n\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n];\n\nconst hierarchyStyles: Record<IButtonHierarchy, string[]> = {\n primary: [\n 'bg-bg-accent-strongest-alt',\n 'text-text-primary_on-accent-strongest-alt',\n 'hover:bg-bg-accent-strongest-alt_hover',\n 'disabled:bg-bg-accent-strongest',\n 'disabled:text-text-primary_on-accent-strongest-alt',\n ],\n secondary: [\n 'bg-bg-primary',\n 'inset-ring-2',\n 'inset-ring-border-accent',\n 'text-text-secondary',\n 'hover:bg-bg-primary_hover',\n 'hover:text-text-secondary_hover',\n 'disabled:bg-bg-primary',\n 'disabled:inset-ring-2',\n 'disabled:inset-ring-border-primary',\n 'disabled:text-text-secondary',\n ],\n tertiary: [\n 'bg-bg-primary',\n 'inset-ring-1',\n 'inset-ring-border-accent',\n 'text-text-secondary',\n 'hover:bg-bg-primary_hover',\n 'hover:text-text-secondary_hover',\n 'disabled:bg-bg-primary',\n 'disabled:inset-ring-1',\n 'disabled:inset-ring-border-primary',\n 'disabled:text-text-secondary',\n ],\n transparent: [\n 'text-text-tertiary',\n 'hover:bg-bg-primary_hover',\n 'hover:text-text-tertiary_hover',\n 'disabled:text-text-tertiary',\n ],\n};\n\nconst sizingStyles: Record<NonNullable<IButton['size']>, string[]> = {\n xl: ['px-xl', 'py-lg'],\n};\n\nfunction ButtonWrapper({\n type,\n href,\n disabled,\n className,\n onClick,\n children,\n}: {\n type: IButton['type'];\n href?: IButton['href'];\n disabled: IButton['disabled'];\n className: string;\n onClick: IButton['onClick'];\n children: ReactNode;\n}) {\n const props =\n type === 'link'\n ? {\n href,\n className,\n onClick,\n }\n : {\n type,\n disabled,\n className,\n onClick,\n };\n\n return type === 'link' ? (\n <a {...props}>{children}</a>\n ) : (\n <button {...props}>{children}</button>\n );\n}\n\nexport default function Button({\n hierarchy = 'primary',\n label,\n icon,\n type = 'button',\n disabled = false,\n size = 'xl',\n href,\n onClick,\n}: IButton) {\n const defaultIconSize = 20;\n const styles = hierarchyStyles[hierarchy];\n const sizeStyles = sizingStyles[size];\n\n let className = [...classNames, ...styles, ...sizeStyles].join(' ');\n\n // Disable links if set to disabled.\n if (disabled && type === 'link') {\n className = className + ' pointer-events-none';\n }\n\n return (\n <ButtonWrapper\n type={type}\n href={href}\n disabled={disabled}\n className={className}\n onClick={onClick}\n >\n {icon?.leading?.icon && (\n <Icon\n icon={icon.leading.icon}\n size={icon?.leading?.size || defaultIconSize}\n />\n )}\n {<span>{label}</span>}\n {icon?.trailing?.icon && (\n <Icon\n icon={icon.trailing.icon}\n size={icon?.trailing?.size || defaultIconSize}\n />\n )}\n </ButtonWrapper>\n );\n}\n"],"names":["_jsx","_jsxs"],"mappings":";;;AA+BA,MAAM,UAAU,GAAG;IACf,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,QAAQ;IACR,eAAe;IACf,SAAS;IACT,eAAe;IACf,wBAAwB;IACxB,gBAAgB;IAEhB,qBAAqB;IACrB,6BAA6B;CAChC;AAED,MAAM,eAAe,GAAuC;AACxD,IAAA,OAAO,EAAE;QACL,4BAA4B;QAC5B,2CAA2C;QAC3C,wCAAwC;QACxC,iCAAiC;QACjC,oDAAoD;AACvD,KAAA;AACD,IAAA,SAAS,EAAE;QACP,eAAe;QACf,cAAc;QACd,0BAA0B;QAC1B,qBAAqB;QACrB,2BAA2B;QAC3B,iCAAiC;QACjC,wBAAwB;QACxB,uBAAuB;QACvB,oCAAoC;QACpC,8BAA8B;AACjC,KAAA;AACD,IAAA,QAAQ,EAAE;QACN,eAAe;QACf,cAAc;QACd,0BAA0B;QAC1B,qBAAqB;QACrB,2BAA2B;QAC3B,iCAAiC;QACjC,wBAAwB;QACxB,uBAAuB;QACvB,oCAAoC;QACpC,8BAA8B;AACjC,KAAA;AACD,IAAA,WAAW,EAAE;QACT,oBAAoB;QACpB,2BAA2B;QAC3B,gCAAgC;QAChC,6BAA6B;AAChC,KAAA;CACJ;AAED,MAAM,YAAY,GAAmD;AACjE,IAAA,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;CACzB;AAED,SAAS,aAAa,CAAC,EACnB,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,GAQX,EAAA;AACG,IAAA,MAAM,KAAK,GACP,IAAI,KAAK;AACL,UAAE;YACI,IAAI;YACJ,SAAS;YACT,OAAO;AACV;AACH,UAAE;YACI,IAAI;YACJ,QAAQ;YACR,SAAS;YACT,OAAO;SACV;IAEX,OAAO,IAAI,KAAK,MAAM,IAClBA,GAAA,CAAA,GAAA,EAAA,EAAA,GAAO,KAAK,EAAA,QAAA,EAAG,QAAQ,GAAK,KAE5BA,GAAA,CAAA,QAAA,EAAA,EAAA,GAAY,KAAK,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAU,CACzC;AACL;AAEc,SAAU,MAAM,CAAC,EAC3B,SAAS,GAAG,SAAS,EACrB,KAAK,EACL,IAAI,EACJ,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,IAAI,EACX,IAAI,EACJ,OAAO,GACD,EAAA;IACN,MAAM,eAAe,GAAG,EAAE;AAC1B,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC;AACzC,IAAA,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;AAErC,IAAA,IAAI,SAAS,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGnE,IAAA,IAAI,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAE;AAC7B,QAAA,SAAS,GAAG,SAAS,GAAG,sBAAsB;IAClD;AAEA,IAAA,QACIC,IAAA,CAAC,aAAa,IACV,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,aAEf,IAAI,EAAE,OAAO,EAAE,IAAI,KAChBD,GAAA,CAAC,IAAI,EAAA,EACD,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EACvB,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,eAAe,EAAA,CAC9C,CACL,EACAA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,KAAK,EAAA,CAAQ,EACpB,IAAI,EAAE,QAAQ,EAAE,IAAI,KACjBA,GAAA,CAAC,IAAI,IACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EACxB,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,eAAe,GAC/C,CACL,CAAA,EAAA,CACW;AAExB;;;;"}
@@ -0,0 +1,2 @@
1
+ import Button from './Button';
2
+ export { Button };
@@ -0,0 +1,2 @@
1
+ export { default as Button } from './Button.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { IIcon } from '../icons/Icon';
2
+ export type INotification = {
3
+ type: 'info' | 'fail' | 'success' | 'warning';
4
+ icon?: boolean | IIcon['icon'];
5
+ children: React.ReactElement;
6
+ };
7
+ export default function Notification({ type, icon, children }: INotification): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,39 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import Icon from '../icons/Icon.js';
3
+
4
+ function NotificationIcon({ type, icon, }) {
5
+ if (icon === false || icon === undefined) {
6
+ return null;
7
+ }
8
+ const defaultIcon = {
9
+ info: 'PlusCircle',
10
+ fail: 'CloseCircle',
11
+ success: 'TickCircle',
12
+ warning: 'MinusCircle',
13
+ };
14
+ return jsx(Icon, { icon: icon === true ? defaultIcon[type] : icon, size: 24 });
15
+ }
16
+ function Notification({ type, icon, children }) {
17
+ const notificationColours = {
18
+ info: {
19
+ border: 'border-fg-info-secondary',
20
+ text: 'text-fg-info-secondary',
21
+ },
22
+ fail: {
23
+ border: 'border-fg-error-secondary',
24
+ text: 'text-fg-error-secondary',
25
+ },
26
+ success: {
27
+ border: 'border-fg-success-secondary',
28
+ text: 'text-fg-success-secondary',
29
+ },
30
+ warning: {
31
+ border: 'border-fg-warning-secondary',
32
+ text: 'text-fg-warning-secondary',
33
+ },
34
+ };
35
+ return (jsx("div", { className: `flex bg-bg-secondary p-5 border-l-10 ${notificationColours[type].border}`, children: jsxs("div", { className: `flex grow items-start gap-5`, children: [icon && (jsx("span", { className: notificationColours[type].text, children: jsx(NotificationIcon, { type: type, icon: icon }) })), jsx("div", { className: "flex flex-col grow", children: children })] }) }));
36
+ }
37
+
38
+ export { Notification as default };
39
+ //# sourceMappingURL=Notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Notification.js","sources":["../../../../components/notification/Notification.tsx"],"sourcesContent":["import Icon, { IIcon } from '../icons/Icon';\n\nexport type INotification = {\n type: 'info' | 'fail' | 'success' | 'warning';\n icon?: boolean | IIcon['icon'];\n children: React.ReactElement;\n};\n\nfunction NotificationIcon({\n type,\n icon,\n}: {\n type: INotification['type'];\n icon: INotification['icon'];\n}) {\n if (icon === false || icon === undefined) {\n return null;\n }\n\n const defaultIcon: Record<INotification['type'], IIcon['icon']> = {\n info: 'PlusCircle',\n fail: 'CloseCircle',\n success: 'TickCircle',\n warning: 'MinusCircle',\n };\n\n return <Icon icon={icon === true ? defaultIcon[type] : icon} size={24} />;\n}\n\nexport default function Notification({ type, icon, children }: INotification) {\n const notificationColours: Record<\n INotification['type'],\n { border: string; text: string }\n > = {\n info: {\n border: 'border-fg-info-secondary',\n text: 'text-fg-info-secondary',\n },\n fail: {\n border: 'border-fg-error-secondary',\n text: 'text-fg-error-secondary',\n },\n success: {\n border: 'border-fg-success-secondary',\n text: 'text-fg-success-secondary',\n },\n warning: {\n border: 'border-fg-warning-secondary',\n text: 'text-fg-warning-secondary',\n },\n };\n\n return (\n <div\n className={`flex bg-bg-secondary p-5 border-l-10 ${notificationColours[type].border}`}\n >\n <div className={`flex grow items-start gap-5`}>\n {icon && (\n <span className={notificationColours[type].text}>\n <NotificationIcon type={type} icon={icon} />\n </span>\n )}\n <div className=\"flex flex-col grow\">{children}</div>\n </div>\n </div>\n );\n}\n"],"names":["_jsx","_jsxs"],"mappings":";;;AAQA,SAAS,gBAAgB,CAAC,EACtB,IAAI,EACJ,IAAI,GAIP,EAAA;IACG,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,EAAE;AACtC,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,WAAW,GAAiD;AAC9D,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,OAAO,EAAE,aAAa;KACzB;IAED,OAAOA,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAA,CAAI;AAC7E;AAEc,SAAU,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAiB,EAAA;AACxE,IAAA,MAAM,mBAAmB,GAGrB;AACA,QAAA,IAAI,EAAE;AACF,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,IAAI,EAAE,wBAAwB;AACjC,SAAA;AACD,QAAA,IAAI,EAAE;AACF,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,IAAI,EAAE,yBAAyB;AAClC,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,MAAM,EAAE,6BAA6B;AACrC,YAAA,IAAI,EAAE,2BAA2B;AACpC,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,MAAM,EAAE,6BAA6B;AACrC,YAAA,IAAI,EAAE,2BAA2B;AACpC,SAAA;KACJ;IAED,QACIA,GAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAA,qCAAA,EAAwC,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA,CAAE,YAErFC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,2BAAA,CAA6B,EAAA,QAAA,EAAA,CACxC,IAAI,KACDD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAA,QAAA,EAC3CA,GAAA,CAAC,gBAAgB,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,CAAI,GACzC,CACV,EACDA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAE,QAAQ,EAAA,CAAO,CAAA,EAAA,CAClD,EAAA,CACJ;AAEd;;;;"}
@@ -0,0 +1,2 @@
1
+ import Notification from './Notification';
2
+ export { Notification };
@@ -0,0 +1,2 @@
1
+ export { default as Notification } from './Notification.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redgate/brand-web-toolkit",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "Web toolkit for the Redgate Brand design system",
5
5
  "main": "components/index.js",
6
6
  "module": "components/index.js",
@@ -8,6 +8,8 @@
8
8
  "Courier New", monospace;
9
9
  --text-xl: 20px;
10
10
  --text-xl--line-height: var(--line-height-10);
11
+ --font-weight-semibold: 600;
12
+ --font-weight-bold: 700;
11
13
  --default-font-family: var(--font-family-body);
12
14
  --default-mono-font-family: var(--font-mono);
13
15
  --color-white: #FFFFFF;
@@ -106,6 +108,9 @@
106
108
  --spacing-360: 1440px;
107
109
  --spacing-400: 1600px;
108
110
  --spacing-480: 1920px;
111
+ --spacing-sm: var(--spacing-1-5);
112
+ --spacing-lg: var(--spacing-3);
113
+ --spacing-xl: var(--spacing-4);
109
114
  --radius-xxs: 2px;
110
115
  --radius-xs: 4px;
111
116
  --radius-sm: 6px;
@@ -149,14 +154,29 @@
149
154
  --fluid-line-height-max-16: 72;
150
155
  --fluid-line-height-min-17: 48;
151
156
  --fluid-line-height-max-17: 80;
157
+ --color-text-primary_on-accent-strongest-alt: var(--color-white);
152
158
  --color-text-secondary: var(--color-indigo-400);
159
+ --color-text-secondary_hover: var(--color-indigo-700);
160
+ --color-text-tertiary: var(--color-indigo-400);
161
+ --color-text-tertiary_hover: var(--color-indigo-600);
162
+ --color-border-primary: var(--color-indigo-300);
163
+ --color-border-accent: var(--color-pass-pink);
153
164
  --color-fg-accent-primary: var(--color-indigo-600);
154
165
  --color-fg-accent-secondary: var(--color-indigo-500);
166
+ --color-fg-error-secondary: var(--color-red-500);
167
+ --color-fg-warning-secondary: var(--color-yellow-500);
168
+ --color-fg-success-secondary: var(--color-green-500);
169
+ --color-fg-info-secondary: var(--color-blue-500);
155
170
  --color-bg-primary: var(--color-white);
171
+ --color-bg-primary_hover: var(--color-gray-50);
156
172
  --color-bg-secondary: var(--color-gray-50);
157
173
  --color-bg-tertiary: var(--color-gray-100);
174
+ --color-bg-accent-strongest: var(--color-pass-yellow);
175
+ --color-bg-accent-strongest-alt: var(--color-indigo-400);
176
+ --color-bg-accent-strongest-alt_hover: var(--color-indigo-400);
158
177
  --default-font-color: var(--color-text-secondary);
159
178
  --default-background-color: var(--color-bg-primary);
179
+ --radius-button-default: var(--radius-full);
160
180
  --font-family-display: 'Kanit', sans-serif;
161
181
  --font-family-body: 'Kanit', sans-serif;
162
182
  }
@@ -310,6 +330,9 @@
310
330
  }
311
331
  }
312
332
  @layer utilities {
333
+ .pointer-events-none {
334
+ pointer-events: none;
335
+ }
313
336
  .static {
314
337
  position: static;
315
338
  }
@@ -334,6 +357,9 @@
334
357
  .contents {
335
358
  display: contents;
336
359
  }
360
+ .flex {
361
+ display: flex;
362
+ }
337
363
  .grid {
338
364
  display: grid;
339
365
  }
@@ -343,12 +369,210 @@
343
369
  .inline {
344
370
  display: inline;
345
371
  }
372
+ .inline-flex {
373
+ display: inline-flex;
374
+ }
375
+ .table {
376
+ display: table;
377
+ }
378
+ .grow {
379
+ flex-grow: 1;
380
+ }
346
381
  .transform {
347
382
  transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
348
383
  }
384
+ .cursor-pointer {
385
+ cursor: pointer;
386
+ }
387
+ .flex-col {
388
+ flex-direction: column;
389
+ }
390
+ .items-center {
391
+ align-items: center;
392
+ }
393
+ .items-start {
394
+ align-items: flex-start;
395
+ }
396
+ .justify-center {
397
+ justify-content: center;
398
+ }
399
+ .gap-5 {
400
+ gap: var(--spacing-5);
401
+ }
402
+ .gap-sm {
403
+ gap: var(--spacing-sm);
404
+ }
405
+ .overflow-clip {
406
+ overflow: clip;
407
+ }
408
+ .rounded-button-default {
409
+ border-radius: var(--radius-button-default);
410
+ }
411
+ .border {
412
+ border-style: var(--tw-border-style);
413
+ border-width: 1px;
414
+ }
415
+ .border-l-10 {
416
+ border-left-style: var(--tw-border-style);
417
+ border-left-width: 10px;
418
+ }
419
+ .border-fg-error-secondary {
420
+ border-color: var(--color-fg-error-secondary);
421
+ }
422
+ .border-fg-info-secondary {
423
+ border-color: var(--color-fg-info-secondary);
424
+ }
425
+ .border-fg-success-secondary {
426
+ border-color: var(--color-fg-success-secondary);
427
+ }
428
+ .border-fg-warning-secondary {
429
+ border-color: var(--color-fg-warning-secondary);
430
+ }
431
+ .bg-bg-accent-strongest-alt {
432
+ background-color: var(--color-bg-accent-strongest-alt);
433
+ }
434
+ .bg-bg-primary {
435
+ background-color: var(--color-bg-primary);
436
+ }
437
+ .bg-bg-secondary {
438
+ background-color: var(--color-bg-secondary);
439
+ }
440
+ .p-5 {
441
+ padding: var(--spacing-5);
442
+ }
443
+ .px-xl {
444
+ padding-inline: var(--spacing-xl);
445
+ }
446
+ .py-lg {
447
+ padding-block: var(--spacing-lg);
448
+ }
449
+ .text-md {
450
+ font-size: var(--text-md);
451
+ line-height: var(--tw-leading, var(--text-md--line-height));
452
+ }
453
+ .font-bold {
454
+ --tw-font-weight: var(--font-weight-bold);
455
+ font-weight: var(--font-weight-bold);
456
+ }
457
+ .font-semibold {
458
+ --tw-font-weight: var(--font-weight-semibold);
459
+ font-weight: var(--font-weight-semibold);
460
+ }
461
+ .text-fg-error-secondary {
462
+ color: var(--color-fg-error-secondary);
463
+ }
464
+ .text-fg-info-secondary {
465
+ color: var(--color-fg-info-secondary);
466
+ }
467
+ .text-fg-success-secondary {
468
+ color: var(--color-fg-success-secondary);
469
+ }
470
+ .text-fg-warning-secondary {
471
+ color: var(--color-fg-warning-secondary);
472
+ }
473
+ .text-text-primary_on-accent-strongest-alt {
474
+ color: var(--color-text-primary_on-accent-strongest-alt);
475
+ }
476
+ .text-text-secondary {
477
+ color: var(--color-text-secondary);
478
+ }
479
+ .text-text-tertiary {
480
+ color: var(--color-text-tertiary);
481
+ }
349
482
  .lowercase {
350
483
  text-transform: lowercase;
351
484
  }
485
+ .inset-ring-1 {
486
+ --tw-inset-ring-shadow: inset 0 0 0 1px var(--tw-inset-ring-color, currentcolor);
487
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
488
+ }
489
+ .inset-ring-2 {
490
+ --tw-inset-ring-shadow: inset 0 0 0 2px var(--tw-inset-ring-color, currentcolor);
491
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
492
+ }
493
+ .inset-ring-border-accent {
494
+ --tw-inset-ring-color: var(--color-border-accent);
495
+ }
496
+ .hover\:bg-bg-accent-strongest-alt_hover {
497
+ &:hover {
498
+ @media (hover: hover) {
499
+ background-color: var(--color-bg-accent-strongest-alt_hover);
500
+ }
501
+ }
502
+ }
503
+ .hover\:bg-bg-primary_hover {
504
+ &:hover {
505
+ @media (hover: hover) {
506
+ background-color: var(--color-bg-primary_hover);
507
+ }
508
+ }
509
+ }
510
+ .hover\:text-text-secondary_hover {
511
+ &:hover {
512
+ @media (hover: hover) {
513
+ color: var(--color-text-secondary_hover);
514
+ }
515
+ }
516
+ }
517
+ .hover\:text-text-tertiary_hover {
518
+ &:hover {
519
+ @media (hover: hover) {
520
+ color: var(--color-text-tertiary_hover);
521
+ }
522
+ }
523
+ }
524
+ .disabled\:cursor-not-allowed {
525
+ &:disabled {
526
+ cursor: not-allowed;
527
+ }
528
+ }
529
+ .disabled\:bg-bg-accent-strongest {
530
+ &:disabled {
531
+ background-color: var(--color-bg-accent-strongest);
532
+ }
533
+ }
534
+ .disabled\:bg-bg-primary {
535
+ &:disabled {
536
+ background-color: var(--color-bg-primary);
537
+ }
538
+ }
539
+ .disabled\:text-text-primary_on-accent-strongest-alt {
540
+ &:disabled {
541
+ color: var(--color-text-primary_on-accent-strongest-alt);
542
+ }
543
+ }
544
+ .disabled\:text-text-secondary {
545
+ &:disabled {
546
+ color: var(--color-text-secondary);
547
+ }
548
+ }
549
+ .disabled\:text-text-tertiary {
550
+ &:disabled {
551
+ color: var(--color-text-tertiary);
552
+ }
553
+ }
554
+ .disabled\:opacity-50 {
555
+ &:disabled {
556
+ opacity: 50%;
557
+ }
558
+ }
559
+ .disabled\:inset-ring-1 {
560
+ &:disabled {
561
+ --tw-inset-ring-shadow: inset 0 0 0 1px var(--tw-inset-ring-color, currentcolor);
562
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
563
+ }
564
+ }
565
+ .disabled\:inset-ring-2 {
566
+ &:disabled {
567
+ --tw-inset-ring-shadow: inset 0 0 0 2px var(--tw-inset-ring-color, currentcolor);
568
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
569
+ }
570
+ }
571
+ .disabled\:inset-ring-border-primary {
572
+ &:disabled {
573
+ --tw-inset-ring-color: var(--color-border-primary);
574
+ }
575
+ }
352
576
  }
353
577
  @layer base {
354
578
  html, :host {
@@ -472,6 +696,8 @@
472
696
  --color-fg-warning-secondary: var(--color-yellow-400);
473
697
  --color-fg-success-primary: var(--color-green-500);
474
698
  --color-fg-success-secondary: var(--color-green-400);
699
+ --color-fg-info-primary: var(--color-blue-500);
700
+ --color-fg-info-secondary: var(--color-blue-400);
475
701
  --color-bg-quaternary: var(--color-indigo-700);
476
702
  --color-bg-quaternary-hover: var(--color-indigo-700);
477
703
  --color-bg-overlay: var(--color-indigo-800);
@@ -553,6 +779,80 @@
553
779
  syntax: "*";
554
780
  inherits: false;
555
781
  }
782
+ @property --tw-border-style {
783
+ syntax: "*";
784
+ inherits: false;
785
+ initial-value: solid;
786
+ }
787
+ @property --tw-font-weight {
788
+ syntax: "*";
789
+ inherits: false;
790
+ }
791
+ @property --tw-shadow {
792
+ syntax: "*";
793
+ inherits: false;
794
+ initial-value: 0 0 #0000;
795
+ }
796
+ @property --tw-shadow-color {
797
+ syntax: "*";
798
+ inherits: false;
799
+ }
800
+ @property --tw-shadow-alpha {
801
+ syntax: "<percentage>";
802
+ inherits: false;
803
+ initial-value: 100%;
804
+ }
805
+ @property --tw-inset-shadow {
806
+ syntax: "*";
807
+ inherits: false;
808
+ initial-value: 0 0 #0000;
809
+ }
810
+ @property --tw-inset-shadow-color {
811
+ syntax: "*";
812
+ inherits: false;
813
+ }
814
+ @property --tw-inset-shadow-alpha {
815
+ syntax: "<percentage>";
816
+ inherits: false;
817
+ initial-value: 100%;
818
+ }
819
+ @property --tw-ring-color {
820
+ syntax: "*";
821
+ inherits: false;
822
+ }
823
+ @property --tw-ring-shadow {
824
+ syntax: "*";
825
+ inherits: false;
826
+ initial-value: 0 0 #0000;
827
+ }
828
+ @property --tw-inset-ring-color {
829
+ syntax: "*";
830
+ inherits: false;
831
+ }
832
+ @property --tw-inset-ring-shadow {
833
+ syntax: "*";
834
+ inherits: false;
835
+ initial-value: 0 0 #0000;
836
+ }
837
+ @property --tw-ring-inset {
838
+ syntax: "*";
839
+ inherits: false;
840
+ }
841
+ @property --tw-ring-offset-width {
842
+ syntax: "<length>";
843
+ inherits: false;
844
+ initial-value: 0px;
845
+ }
846
+ @property --tw-ring-offset-color {
847
+ syntax: "*";
848
+ inherits: false;
849
+ initial-value: #fff;
850
+ }
851
+ @property --tw-ring-offset-shadow {
852
+ syntax: "*";
853
+ inherits: false;
854
+ initial-value: 0 0 #0000;
855
+ }
556
856
  @layer properties {
557
857
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
558
858
  *, ::before, ::after, ::backdrop {
@@ -561,6 +861,22 @@
561
861
  --tw-rotate-z: initial;
562
862
  --tw-skew-x: initial;
563
863
  --tw-skew-y: initial;
864
+ --tw-border-style: solid;
865
+ --tw-font-weight: initial;
866
+ --tw-shadow: 0 0 #0000;
867
+ --tw-shadow-color: initial;
868
+ --tw-shadow-alpha: 100%;
869
+ --tw-inset-shadow: 0 0 #0000;
870
+ --tw-inset-shadow-color: initial;
871
+ --tw-inset-shadow-alpha: 100%;
872
+ --tw-ring-color: initial;
873
+ --tw-ring-shadow: 0 0 #0000;
874
+ --tw-inset-ring-color: initial;
875
+ --tw-inset-ring-shadow: 0 0 #0000;
876
+ --tw-ring-inset: initial;
877
+ --tw-ring-offset-width: 0px;
878
+ --tw-ring-offset-color: #fff;
879
+ --tw-ring-offset-shadow: 0 0 #0000;
564
880
  }
565
881
  }
566
882
  }