flikkui 0.1.0-beta.6 → 0.1.0-beta.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.
Files changed (36) hide show
  1. package/dist/components/charts/AreaChart/AreaChart.js +80 -38
  2. package/dist/components/charts/AreaChart/AreaChart.types.d.ts +5 -1
  3. package/dist/components/charts/BarChart/BarChart.js +51 -77
  4. package/dist/components/charts/BarChart/BarChart.types.d.ts +1 -0
  5. package/dist/components/charts/LineChart/LineChart.js +6 -6
  6. package/dist/components/charts/types/chart.types.d.ts +1 -1
  7. package/dist/components/charts/utils/chart-validation.js +13 -4
  8. package/dist/components/charts/utils/color-utils.js +12 -12
  9. package/dist/components/core/Avatar/Avatar.theme.js +1 -1
  10. package/dist/components/core/Badge/Badge.theme.js +12 -12
  11. package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +4 -4
  12. package/dist/components/core/Card/Card.js +2 -2
  13. package/dist/components/core/Card/Card.theme.js +1 -1
  14. package/dist/components/core/Divider/Divider.theme.js +1 -1
  15. package/dist/components/core/Drawer/Drawer.theme.js +4 -4
  16. package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +4 -0
  17. package/dist/components/forms/RichTextEditor/RichTextEditor.js +960 -0
  18. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +10 -0
  19. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +37 -0
  20. package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +122 -0
  21. package/dist/components/forms/RichTextEditor/index.d.ts +3 -0
  22. package/dist/components/forms/index.d.ts +1 -0
  23. package/dist/components/navigation/NavItem/NavItem.theme.d.ts +1 -1
  24. package/dist/components/navigation/NavItem/NavItem.theme.js +15 -15
  25. package/dist/index.js +2 -0
  26. package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowUturnLeftIcon.js +28 -0
  27. package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowUturnRightIcon.js +28 -0
  28. package/dist/node_modules/@heroicons/react/24/outline/esm/Bars3BottomLeftIcon.js +28 -0
  29. package/dist/node_modules/@heroicons/react/24/outline/esm/Bars3BottomRightIcon.js +28 -0
  30. package/dist/node_modules/@heroicons/react/24/outline/esm/BoldIcon.js +27 -0
  31. package/dist/node_modules/@heroicons/react/24/outline/esm/ItalicIcon.js +28 -0
  32. package/dist/node_modules/@heroicons/react/24/outline/esm/UnderlineIcon.js +28 -0
  33. package/dist/node_modules/@heroicons/react/24/solid/esm/PaintBrushIcon.js +26 -0
  34. package/dist/styles.css +2 -0
  35. package/package.json +9 -4
  36. package/tailwind.preset.cjs +102 -0
@@ -0,0 +1,10 @@
1
+ import { RichTextEditorTheme, ColorOption } from './RichTextEditor.types';
2
+ /**
3
+ * Color options for text color picker
4
+ */
5
+ export declare const colorOptions: ColorOption[];
6
+ /**
7
+ * Rich Text Editor theme following Flikkui optimal structure
8
+ */
9
+ export declare const richTextEditorTheme: RichTextEditorTheme;
10
+ export default richTextEditorTheme;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Color options for text color picker
3
+ */
4
+ var colorOptions = [
5
+ { label: 'Black', value: '#000000', className: 'text-black' },
6
+ { label: 'Gray', value: '#6B7280', className: 'text-gray-500' },
7
+ { label: 'Red', value: '#EF4444', className: 'text-red-500' },
8
+ { label: 'Orange', value: '#F97316', className: 'text-orange-500' },
9
+ { label: 'Yellow', value: '#EAB308', className: 'text-yellow-500' },
10
+ { label: 'Green', value: '#22C55E', className: 'text-green-500' },
11
+ { label: 'Blue', value: '#3B82F6', className: 'text-blue-500' },
12
+ { label: 'Indigo', value: '#6366F1', className: 'text-indigo-500' },
13
+ { label: 'Purple', value: '#A855F7', className: 'text-purple-500' },
14
+ { label: 'Pink', value: '#EC4899', className: 'text-pink-500' },
15
+ ];
16
+ /**
17
+ * Rich Text Editor theme following Flikkui optimal structure
18
+ */
19
+ var richTextEditorTheme = {
20
+ baseStyle: "relative w-full",
21
+ containerStyle: "relative min-h-[120px] border border-border rounded-[var(--form-rounded)] overflow-hidden bg-white transition-all duration-200 data-[state=focus]:border-primary-base data-[state=invalid]:border-error-base data-[state=disabled]:opacity-50 data-[state=disabled]:cursor-not-allowed",
22
+ editorStyle: "w-full min-h-[100px] px-3 py-2 bg-transparent text-sm text-text-primary placeholder:text-text-muted focus:outline-none resize-none overflow-y-auto [&_p]:my-1 [&_p:first-child]:mt-0 [&_p:last-child]:mb-0 [&_strong]:font-semibold [&_em]:italic [&_u]:underline data-[state=disabled]:cursor-not-allowed empty:before:content-[attr(data-placeholder)] empty:before:text-text-muted empty:before:pointer-events-none",
23
+ toolbarStyle: "flex items-center gap-1 p-1 border-b border-border bg-gray-50",
24
+ toolbarButtonStyle: "inline-flex items-center justify-center w-8 h-8 rounded-md text-text-muted hover:text-[var(--color-text-primary)] hover:bg-white active:bg-gray-200 transition-colors duration-300 disabled:opacity-50 disabled:cursor-not-allowed data-[state=active]:bg-[var(--color-primary)/10] data-[state=active]:text-[var(--color-text-primary)] data-[state=active]:bg-gray-200 data-[state=active]:hover:bg-primary-base/15",
25
+ dropdownStyle: "absolute top-full left-0 mt-1 z-50 min-w-[120px] py-1 bg-background border border-border rounded-[var(--form-rounded)] shadow-lg backdrop-blur-sm",
26
+ dropdownItemStyle: "block w-full px-3 py-2 text-left text-sm text-text-primary hover:bg-background-hover transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed",
27
+ separatorStyle: "w-px h-6 bg-[var(--color-border)] mx-1",
28
+ colorPickerStyle: "grid grid-cols-5 gap-1 p-2 min-w-[140px]",
29
+ colorSwatchStyle: "size-6 rounded border border-border cursor-pointer hover:scale-105 transition-transform focus:outline-none focus:ring-2 focus:ring-primary-base focus:ring-offset-1",
30
+ sizes: {
31
+ sm: "min-h-[80px] text-xs",
32
+ md: "min-h-[120px] text-sm",
33
+ lg: "min-h-[160px] text-base",
34
+ },
35
+ };
36
+
37
+ export { colorOptions, richTextEditorTheme as default, richTextEditorTheme };
@@ -0,0 +1,122 @@
1
+ import React from 'react';
2
+ /**
3
+ * Rich Text Editor component props
4
+ * @property {RichTextEditorSize} size - The size of the editor
5
+ * @property {RichTextEditorState} state - The state of the editor (default, disabled, invalid)
6
+ * @property {string} label - Optional label text for the editor
7
+ * @property {string} helperText - Optional helper text displayed below the editor
8
+ * @property {string} value - The HTML content value
9
+ * @property {function} onChange - Callback when content changes
10
+ * @property {string} placeholder - Placeholder text when editor is empty
11
+ * @property {boolean} required - Whether the editor is required
12
+ * @property {number} minHeight - Minimum height of the editor in pixels
13
+ * @property {number} maxHeight - Maximum height of the editor in pixels
14
+ * @property {ToolbarConfig} toolbar - Toolbar configuration
15
+ */
16
+ export interface RichTextEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'value'> {
17
+ /** The size of the editor */
18
+ size?: RichTextEditorSize;
19
+ /** The state of the editor (default, disabled, invalid) */
20
+ state?: RichTextEditorState;
21
+ /** Optional label text for the editor */
22
+ label?: string;
23
+ /** Optional helper text displayed below the editor */
24
+ helperText?: string;
25
+ /** The HTML content value */
26
+ value?: string;
27
+ /** Callback when content changes */
28
+ onChange?: (value: string) => void;
29
+ /** Placeholder text when editor is empty */
30
+ placeholder?: string;
31
+ /** Additional class name for the editor */
32
+ className?: string;
33
+ /** Additional class name for the label */
34
+ labelClassName?: string;
35
+ /** Additional class name for the helper text */
36
+ helperTextClassName?: string;
37
+ /** Additional class name for the wrapper */
38
+ wrapperClassName?: string;
39
+ /** Additional class name for the editor container */
40
+ editorClassName?: string;
41
+ /** Whether the editor is required */
42
+ required?: boolean;
43
+ /** Minimum height of the editor in pixels */
44
+ minHeight?: number;
45
+ /** Maximum height of the editor in pixels */
46
+ maxHeight?: number;
47
+ /** Toolbar configuration */
48
+ toolbar?: ToolbarConfig;
49
+ /** Component-level theme overrides */
50
+ theme?: RichTextEditorThemeOverrides;
51
+ }
52
+ export type RichTextEditorSize = 'sm' | 'md' | 'lg';
53
+ export type RichTextEditorState = 'default' | 'disabled' | 'invalid';
54
+ /**
55
+ * Toolbar configuration
56
+ */
57
+ export interface ToolbarConfig {
58
+ /** Whether to show the toolbar */
59
+ show?: boolean;
60
+ /** Position of the toolbar */
61
+ position?: 'top' | 'floating';
62
+ /** Which tools to show in the toolbar */
63
+ tools?: ToolbarTool[];
64
+ /** Custom toolbar className */
65
+ className?: string;
66
+ }
67
+ /**
68
+ * Available toolbar tools
69
+ */
70
+ export type ToolbarTool = 'bold' | 'italic' | 'underline' | 'textColor' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'undo' | 'redo' | 'separator';
71
+ /**
72
+ * Text formatting state
73
+ */
74
+ export interface FormattingState {
75
+ bold: boolean;
76
+ italic: boolean;
77
+ underline: boolean;
78
+ textAlign: 'left' | 'center' | 'right' | 'justify';
79
+ fontSize: string;
80
+ textColor: string;
81
+ }
82
+ /**
83
+ * Color palette for text color picker
84
+ */
85
+ export interface ColorOption {
86
+ label: string;
87
+ value: string;
88
+ className: string;
89
+ }
90
+ /**
91
+ * Theme overrides for the RichTextEditor component
92
+ */
93
+ export interface RichTextEditorThemeOverrides {
94
+ /** Base wrapper style */
95
+ baseStyle?: string;
96
+ /** Editor container style */
97
+ containerStyle?: string;
98
+ /** ContentEditable element style */
99
+ editorStyle?: string;
100
+ /** Toolbar container style */
101
+ toolbarStyle?: string;
102
+ /** Toolbar button style */
103
+ toolbarButtonStyle?: string;
104
+ /** Size variants */
105
+ sizes?: Partial<Record<RichTextEditorSize, string>>;
106
+ }
107
+ /**
108
+ * Complete theme structure for RichTextEditor component
109
+ */
110
+ export interface RichTextEditorTheme {
111
+ baseStyle: string;
112
+ containerStyle: string;
113
+ editorStyle: string;
114
+ toolbarStyle: string;
115
+ toolbarButtonStyle: string;
116
+ dropdownStyle: string;
117
+ dropdownItemStyle: string;
118
+ separatorStyle: string;
119
+ colorPickerStyle: string;
120
+ colorSwatchStyle: string;
121
+ sizes: Record<RichTextEditorSize, string>;
122
+ }
@@ -0,0 +1,3 @@
1
+ export { RichTextEditor, default } from './RichTextEditor';
2
+ export type { RichTextEditorProps, RichTextEditorSize, RichTextEditorState, ToolbarConfig, ToolbarTool, FormattingState, ColorOption, RichTextEditorTheme, RichTextEditorThemeOverrides, } from './RichTextEditor.types';
3
+ export { richTextEditorTheme, colorOptions } from './RichTextEditor.theme';
@@ -9,4 +9,5 @@ export * from './Checkbox';
9
9
  export * from './Switch';
10
10
  export * from './TimePicker';
11
11
  export * from './Signature';
12
+ export * from './RichTextEditor';
12
13
  export { default as formsBaseTheme } from './forms.theme';
@@ -1,2 +1,2 @@
1
- import { NavItemTheme } from './NavItem.types';
1
+ import { NavItemTheme } from "./NavItem.types";
2
2
  export declare const navItemTheme: NavItemTheme;
@@ -1,26 +1,26 @@
1
1
  var navItemTheme = {
2
- baseStyle: 'relative flex items-center cursor-pointer select-none transition-all duration-300 w-full rounded-lg px-3 py-2 text-base font-medium group',
3
- icon: 'size-5 text-text-placeholder',
4
- text: 'flex-1 min-w-0 truncate',
2
+ baseStyle: "relative flex items-center cursor-pointer select-none transition-all duration-300 w-full rounded-lg px-[var(--nav-item-px)] py-[var(--nav-item-py)] text-sm font-medium group",
3
+ icon: "size-5 text-text-placeholder",
4
+ text: "flex-1 min-w-0 truncate",
5
5
  states: {
6
- default: 'text-text-primary/80 hover:bg-gray-100 hover:text-text-primary',
7
- active: 'bg-[var(--color-primary-50)] text-[var(--color-primary)] font-semibold',
8
- disabled: 'text-text-placeholder cursor-not-allowed hover:bg-transparent hover:text-text-placeholder',
9
- hover: 'hover:bg-gray-50',
6
+ default: "text-[var(--color-text-primary)]/80 hover:bg-gray-100 hover:text-[var(--color-text-primary)]",
7
+ active: "bg-[var(--color-primary-50)] text-[var(--color-primary)]",
8
+ disabled: "text-[var(--color-text-placeholder)] cursor-not-allowed hover:bg-transparent hover:text-[var(--color-text-placeholder)]",
9
+ hover: "hover:bg-gray-50",
10
10
  },
11
11
  iconStates: {
12
- default: 'text-text-placeholder group-hover:text-text-primary',
13
- active: 'text-[var(--color-primary)]',
14
- disabled: 'text-text-placeholder/50',
12
+ default: "text-[var(--color-text-placeholder)] group-hover:text-[var(--color-text-primary)]",
13
+ active: "text-[var(--color-primary)]",
14
+ disabled: "text-[var(--color-text-placeholder)]/50",
15
15
  },
16
16
  levels: {
17
- 0: '',
18
- 1: 'ml-4',
19
- 2: 'ml-8',
17
+ 0: "",
18
+ 1: "ml-4",
19
+ 2: "ml-8",
20
20
  },
21
21
  collapsed: {
22
- container: 'justify-center px-2',
23
- icon: 'size-5',
22
+ container: "justify-center px-2",
23
+ icon: "size-5",
24
24
  },
25
25
  };
26
26
 
package/dist/index.js CHANGED
@@ -96,6 +96,8 @@ export { TimePicker } from './components/forms/TimePicker/TimePicker.js';
96
96
  export { default as timePickerTheme } from './components/forms/TimePicker/TimePicker.theme.js';
97
97
  export { timePickerAnimations } from './components/forms/TimePicker/TimePicker.animations.js';
98
98
  export { Signature } from './components/forms/Signature/Signature.js';
99
+ export { RichTextEditor } from './components/forms/RichTextEditor/RichTextEditor.js';
100
+ export { colorOptions, richTextEditorTheme } from './components/forms/RichTextEditor/RichTextEditor.theme.js';
99
101
  export { formsBaseTheme } from './components/forms/forms.theme.js';
100
102
  export { TableActions } from './components/data-display/Table/components/TableActions/TableActions.js';
101
103
  export { TableActionsMenu } from './components/data-display/Table/components/TableActions/TableActionsMenu.js';
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ function ArrowUturnLeftIcon({
4
+ title,
5
+ titleId,
6
+ ...props
7
+ }, svgRef) {
8
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "none",
11
+ viewBox: "0 0 24 24",
12
+ strokeWidth: 1.5,
13
+ stroke: "currentColor",
14
+ "aria-hidden": "true",
15
+ "data-slot": "icon",
16
+ ref: svgRef,
17
+ "aria-labelledby": titleId
18
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
19
+ id: titleId
20
+ }, title) : null, /*#__PURE__*/React.createElement("path", {
21
+ strokeLinecap: "round",
22
+ strokeLinejoin: "round",
23
+ d: "M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3"
24
+ }));
25
+ }
26
+ const ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowUturnLeftIcon);
27
+
28
+ export { ForwardRef as default };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ function ArrowUturnRightIcon({
4
+ title,
5
+ titleId,
6
+ ...props
7
+ }, svgRef) {
8
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "none",
11
+ viewBox: "0 0 24 24",
12
+ strokeWidth: 1.5,
13
+ stroke: "currentColor",
14
+ "aria-hidden": "true",
15
+ "data-slot": "icon",
16
+ ref: svgRef,
17
+ "aria-labelledby": titleId
18
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
19
+ id: titleId
20
+ }, title) : null, /*#__PURE__*/React.createElement("path", {
21
+ strokeLinecap: "round",
22
+ strokeLinejoin: "round",
23
+ d: "m15 15 6-6m0 0-6-6m6 6H9a6 6 0 0 0 0 12h3"
24
+ }));
25
+ }
26
+ const ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowUturnRightIcon);
27
+
28
+ export { ForwardRef as default };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ function Bars3BottomLeftIcon({
4
+ title,
5
+ titleId,
6
+ ...props
7
+ }, svgRef) {
8
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "none",
11
+ viewBox: "0 0 24 24",
12
+ strokeWidth: 1.5,
13
+ stroke: "currentColor",
14
+ "aria-hidden": "true",
15
+ "data-slot": "icon",
16
+ ref: svgRef,
17
+ "aria-labelledby": titleId
18
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
19
+ id: titleId
20
+ }, title) : null, /*#__PURE__*/React.createElement("path", {
21
+ strokeLinecap: "round",
22
+ strokeLinejoin: "round",
23
+ d: "M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25H12"
24
+ }));
25
+ }
26
+ const ForwardRef = /*#__PURE__*/ React.forwardRef(Bars3BottomLeftIcon);
27
+
28
+ export { ForwardRef as default };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ function Bars3BottomRightIcon({
4
+ title,
5
+ titleId,
6
+ ...props
7
+ }, svgRef) {
8
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "none",
11
+ viewBox: "0 0 24 24",
12
+ strokeWidth: 1.5,
13
+ stroke: "currentColor",
14
+ "aria-hidden": "true",
15
+ "data-slot": "icon",
16
+ ref: svgRef,
17
+ "aria-labelledby": titleId
18
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
19
+ id: titleId
20
+ }, title) : null, /*#__PURE__*/React.createElement("path", {
21
+ strokeLinecap: "round",
22
+ strokeLinejoin: "round",
23
+ d: "M3.75 6.75h16.5M3.75 12h16.5M12 17.25h8.25"
24
+ }));
25
+ }
26
+ const ForwardRef = /*#__PURE__*/ React.forwardRef(Bars3BottomRightIcon);
27
+
28
+ export { ForwardRef as default };
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+
3
+ function BoldIcon({
4
+ title,
5
+ titleId,
6
+ ...props
7
+ }, svgRef) {
8
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "none",
11
+ viewBox: "0 0 24 24",
12
+ strokeWidth: 1.5,
13
+ stroke: "currentColor",
14
+ "aria-hidden": "true",
15
+ "data-slot": "icon",
16
+ ref: svgRef,
17
+ "aria-labelledby": titleId
18
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
19
+ id: titleId
20
+ }, title) : null, /*#__PURE__*/React.createElement("path", {
21
+ strokeLinejoin: "round",
22
+ d: "M6.75 3.744h-.753v8.25h7.125a4.125 4.125 0 0 0 0-8.25H6.75Zm0 0v.38m0 16.122h6.747a4.5 4.5 0 0 0 0-9.001h-7.5v9h.753Zm0 0v-.37m0-15.751h6a3.75 3.75 0 1 1 0 7.5h-6m0-7.5v7.5m0 0v8.25m0-8.25h6.375a4.125 4.125 0 0 1 0 8.25H6.75m.747-15.38h4.875a3.375 3.375 0 0 1 0 6.75H7.497v-6.75Zm0 7.5h5.25a3.75 3.75 0 0 1 0 7.5h-5.25v-7.5Z"
23
+ }));
24
+ }
25
+ const ForwardRef = /*#__PURE__*/ React.forwardRef(BoldIcon);
26
+
27
+ export { ForwardRef as default };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ function ItalicIcon({
4
+ title,
5
+ titleId,
6
+ ...props
7
+ }, svgRef) {
8
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "none",
11
+ viewBox: "0 0 24 24",
12
+ strokeWidth: 1.5,
13
+ stroke: "currentColor",
14
+ "aria-hidden": "true",
15
+ "data-slot": "icon",
16
+ ref: svgRef,
17
+ "aria-labelledby": titleId
18
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
19
+ id: titleId
20
+ }, title) : null, /*#__PURE__*/React.createElement("path", {
21
+ strokeLinecap: "round",
22
+ strokeLinejoin: "round",
23
+ d: "M5.248 20.246H9.05m0 0h3.696m-3.696 0 5.893-16.502m0 0h-3.697m3.697 0h3.803"
24
+ }));
25
+ }
26
+ const ForwardRef = /*#__PURE__*/ React.forwardRef(ItalicIcon);
27
+
28
+ export { ForwardRef as default };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ function UnderlineIcon({
4
+ title,
5
+ titleId,
6
+ ...props
7
+ }, svgRef) {
8
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "none",
11
+ viewBox: "0 0 24 24",
12
+ strokeWidth: 1.5,
13
+ stroke: "currentColor",
14
+ "aria-hidden": "true",
15
+ "data-slot": "icon",
16
+ ref: svgRef,
17
+ "aria-labelledby": titleId
18
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
19
+ id: titleId
20
+ }, title) : null, /*#__PURE__*/React.createElement("path", {
21
+ strokeLinecap: "round",
22
+ strokeLinejoin: "round",
23
+ d: "M17.995 3.744v7.5a6 6 0 1 1-12 0v-7.5m-2.25 16.502h16.5"
24
+ }));
25
+ }
26
+ const ForwardRef = /*#__PURE__*/ React.forwardRef(UnderlineIcon);
27
+
28
+ export { ForwardRef as default };
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+
3
+ function PaintBrushIcon({
4
+ title,
5
+ titleId,
6
+ ...props
7
+ }, svgRef) {
8
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ viewBox: "0 0 24 24",
11
+ fill: "currentColor",
12
+ "aria-hidden": "true",
13
+ "data-slot": "icon",
14
+ ref: svgRef,
15
+ "aria-labelledby": titleId
16
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
17
+ id: titleId
18
+ }, title) : null, /*#__PURE__*/React.createElement("path", {
19
+ fillRule: "evenodd",
20
+ d: "M20.599 1.5c-.376 0-.743.111-1.055.32l-5.08 3.385a18.747 18.747 0 0 0-3.471 2.987 10.04 10.04 0 0 1 4.815 4.815 18.748 18.748 0 0 0 2.987-3.472l3.386-5.079A1.902 1.902 0 0 0 20.599 1.5Zm-8.3 14.025a18.76 18.76 0 0 0 1.896-1.207 8.026 8.026 0 0 0-4.513-4.513A18.75 18.75 0 0 0 8.475 11.7l-.278.5a5.26 5.26 0 0 1 3.601 3.602l.502-.278ZM6.75 13.5A3.75 3.75 0 0 0 3 17.25a1.5 1.5 0 0 1-1.601 1.497.75.75 0 0 0-.7 1.123 5.25 5.25 0 0 0 9.8-2.62 3.75 3.75 0 0 0-3.75-3.75Z",
21
+ clipRule: "evenodd"
22
+ }));
23
+ }
24
+ const ForwardRef = /*#__PURE__*/ React.forwardRef(PaintBrushIcon);
25
+
26
+ export { ForwardRef as default };