@soadtech/cli 0.1.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/index.js +272 -0
- package/package.json +24 -0
- package/registry/base/cn.ts +5 -0
- package/registry/base/css-modules.d.ts +4 -0
- package/registry/base/theme/reset.css +43 -0
- package/registry/base/theme/tokens.css +154 -0
- package/registry/components/Accordion/Accordion.module.css +3 -0
- package/registry/components/Accordion/Accordion.tsx +54 -0
- package/registry/components/Accordion/Accordion.types.ts +17 -0
- package/registry/components/Accordion/AccordionContext.ts +18 -0
- package/registry/components/Accordion/AccordionItem.module.css +124 -0
- package/registry/components/Accordion/AccordionItem.tsx +148 -0
- package/registry/components/Accordion/AccordionItem.types.ts +14 -0
- package/registry/components/Accordion/index.ts +8 -0
- package/registry/components/ActionBar/ActionBar.module.css +18 -0
- package/registry/components/ActionBar/ActionBar.tsx +21 -0
- package/registry/components/ActionBar/ActionBar.types.ts +8 -0
- package/registry/components/ActionBar/ActionBarLink.module.css +31 -0
- package/registry/components/ActionBar/ActionBarLink.tsx +55 -0
- package/registry/components/ActionBar/ActionBarLink.types.ts +7 -0
- package/registry/components/ActionBar/index.ts +4 -0
- package/registry/components/Alert/Alert.module.css +172 -0
- package/registry/components/Alert/Alert.tsx +146 -0
- package/registry/components/Alert/Alert.types.ts +25 -0
- package/registry/components/Alert/index.ts +7 -0
- package/registry/components/Avatar/Avatar.module.css +100 -0
- package/registry/components/Avatar/Avatar.tsx +54 -0
- package/registry/components/Avatar/Avatar.types.ts +18 -0
- package/registry/components/Avatar/AvatarGroup.module.css +64 -0
- package/registry/components/Avatar/AvatarGroup.tsx +65 -0
- package/registry/components/Avatar/AvatarGroup.types.ts +13 -0
- package/registry/components/Avatar/index.ts +8 -0
- package/registry/components/Badge/Badge.module.css +92 -0
- package/registry/components/Badge/Badge.tsx +89 -0
- package/registry/components/Badge/Badge.types.ts +20 -0
- package/registry/components/Badge/TrendBadge.module.css +47 -0
- package/registry/components/Badge/TrendBadge.tsx +65 -0
- package/registry/components/Badge/TrendBadge.types.ts +15 -0
- package/registry/components/Badge/index.ts +14 -0
- package/registry/components/Breadcrumbs/BreadcrumbItem.tsx +41 -0
- package/registry/components/Breadcrumbs/Breadcrumbs.module.css +81 -0
- package/registry/components/Breadcrumbs/Breadcrumbs.tsx +71 -0
- package/registry/components/Breadcrumbs/Breadcrumbs.types.ts +22 -0
- package/registry/components/Breadcrumbs/index.ts +7 -0
- package/registry/components/Button/Button.module.css +169 -0
- package/registry/components/Button/Button.tsx +43 -0
- package/registry/components/Button/Button.types.ts +18 -0
- package/registry/components/Button/index.ts +7 -0
- package/registry/components/ButtonLink/ButtonLink.module.css +85 -0
- package/registry/components/ButtonLink/ButtonLink.tsx +42 -0
- package/registry/components/ButtonLink/ButtonLink.types.ts +18 -0
- package/registry/components/ButtonLink/index.ts +6 -0
- package/registry/components/Calendar/Calendar.module.css +213 -0
- package/registry/components/Calendar/Calendar.tsx +370 -0
- package/registry/components/Calendar/Calendar.types.ts +28 -0
- package/registry/components/Calendar/CalendarDialog.module.css +29 -0
- package/registry/components/Calendar/CalendarDialog.tsx +173 -0
- package/registry/components/Calendar/CalendarDialog.types.ts +30 -0
- package/registry/components/Calendar/index.ts +9 -0
- package/registry/components/Card/Card.module.css +35 -0
- package/registry/components/Card/Card.tsx +36 -0
- package/registry/components/Card/Card.types.ts +37 -0
- package/registry/components/Card/CardContent.module.css +3 -0
- package/registry/components/Card/CardContent.tsx +16 -0
- package/registry/components/Card/CardFooter.module.css +31 -0
- package/registry/components/Card/CardFooter.tsx +34 -0
- package/registry/components/Card/CardHeader.module.css +61 -0
- package/registry/components/Card/CardHeader.tsx +46 -0
- package/registry/components/Card/InsightCard.module.css +106 -0
- package/registry/components/Card/InsightCard.tsx +68 -0
- package/registry/components/Card/InsightCard.types.ts +24 -0
- package/registry/components/Card/KPICard.module.css +31 -0
- package/registry/components/Card/KPICard.tsx +29 -0
- package/registry/components/Card/KPICard.types.ts +13 -0
- package/registry/components/Card/ListItemCard.module.css +59 -0
- package/registry/components/Card/ListItemCard.tsx +37 -0
- package/registry/components/Card/ListItemCard.types.ts +18 -0
- package/registry/components/Card/PlanCard.module.css +125 -0
- package/registry/components/Card/PlanCard.tsx +108 -0
- package/registry/components/Card/PlanCard.types.ts +30 -0
- package/registry/components/Card/ProductCard.module.css +118 -0
- package/registry/components/Card/ProductCard.tsx +56 -0
- package/registry/components/Card/ProductCard.types.ts +24 -0
- package/registry/components/Card/StatCard.module.css +20 -0
- package/registry/components/Card/StatCard.tsx +26 -0
- package/registry/components/Card/StatCard.types.ts +12 -0
- package/registry/components/Card/UserGroupCard.module.css +50 -0
- package/registry/components/Card/UserGroupCard.tsx +59 -0
- package/registry/components/Card/UserGroupCard.types.ts +23 -0
- package/registry/components/Card/index.ts +38 -0
- package/registry/components/Chart/BarChart.module.css +54 -0
- package/registry/components/Chart/BarChart.tsx +196 -0
- package/registry/components/Chart/BarChart.types.ts +20 -0
- package/registry/components/Chart/ChartAction.module.css +43 -0
- package/registry/components/Chart/ChartAction.tsx +35 -0
- package/registry/components/Chart/ChartAction.types.ts +17 -0
- package/registry/components/Chart/ChartAxis.module.css +47 -0
- package/registry/components/Chart/ChartAxis.tsx +79 -0
- package/registry/components/Chart/ChartAxis.types.ts +14 -0
- package/registry/components/Chart/ChartLegend.module.css +31 -0
- package/registry/components/Chart/ChartLegend.tsx +49 -0
- package/registry/components/Chart/ChartLegend.types.ts +18 -0
- package/registry/components/Chart/ChartTooltip.module.css +54 -0
- package/registry/components/Chart/ChartTooltip.tsx +44 -0
- package/registry/components/Chart/ChartTooltip.types.ts +19 -0
- package/registry/components/Chart/DonutChart.module.css +32 -0
- package/registry/components/Chart/DonutChart.tsx +107 -0
- package/registry/components/Chart/DonutChart.types.ts +20 -0
- package/registry/components/Chart/GridChart.module.css +26 -0
- package/registry/components/Chart/GridChart.tsx +61 -0
- package/registry/components/Chart/GridChart.types.ts +14 -0
- package/registry/components/Chart/HoverTooltip.module.css +16 -0
- package/registry/components/Chart/HoverTooltip.tsx +22 -0
- package/registry/components/Chart/KPIIndicator.module.css +48 -0
- package/registry/components/Chart/KPIIndicator.tsx +28 -0
- package/registry/components/Chart/KPIIndicator.types.ts +16 -0
- package/registry/components/Chart/LineChart.module.css +54 -0
- package/registry/components/Chart/LineChart.tsx +282 -0
- package/registry/components/Chart/LineChart.types.ts +22 -0
- package/registry/components/Chart/ProgressChart.module.css +54 -0
- package/registry/components/Chart/ProgressChart.tsx +64 -0
- package/registry/components/Chart/ProgressChart.types.ts +18 -0
- package/registry/components/Chart/TrendLineChart.module.css +5 -0
- package/registry/components/Chart/TrendLineChart.tsx +131 -0
- package/registry/components/Chart/TrendLineChart.types.ts +19 -0
- package/registry/components/Chart/chart.utils.ts +131 -0
- package/registry/components/Chart/index.ts +47 -0
- package/registry/components/Chart/useChartHover.ts +24 -0
- package/registry/components/Checkbox/Checkbox.module.css +101 -0
- package/registry/components/Checkbox/Checkbox.tsx +100 -0
- package/registry/components/Checkbox/Checkbox.types.ts +11 -0
- package/registry/components/Checkbox/CheckboxField.module.css +69 -0
- package/registry/components/Checkbox/CheckboxField.tsx +54 -0
- package/registry/components/Checkbox/CheckboxField.types.ts +9 -0
- package/registry/components/Checkbox/CheckboxGroup.module.css +41 -0
- package/registry/components/Checkbox/CheckboxGroup.tsx +60 -0
- package/registry/components/Checkbox/CheckboxGroup.types.ts +11 -0
- package/registry/components/Checkbox/CheckboxGroupContext.ts +13 -0
- package/registry/components/Checkbox/index.ts +11 -0
- package/registry/components/Chip/Chip.module.css +143 -0
- package/registry/components/Chip/Chip.tsx +93 -0
- package/registry/components/Chip/Chip.types.ts +19 -0
- package/registry/components/Chip/ChipGroup.module.css +5 -0
- package/registry/components/Chip/ChipGroup.tsx +16 -0
- package/registry/components/Chip/ChipGroup.types.ts +3 -0
- package/registry/components/Chip/index.ts +9 -0
- package/registry/components/Datepicker/Datepicker.module.css +133 -0
- package/registry/components/Datepicker/Datepicker.tsx +236 -0
- package/registry/components/Datepicker/Datepicker.types.ts +36 -0
- package/registry/components/Datepicker/index.ts +2 -0
- package/registry/components/Dialog/Dialog.module.css +18 -0
- package/registry/components/Dialog/Dialog.tsx +69 -0
- package/registry/components/Dialog/Dialog.types.ts +45 -0
- package/registry/components/Dialog/DialogBody.module.css +3 -0
- package/registry/components/Dialog/DialogBody.tsx +16 -0
- package/registry/components/Dialog/DialogContext.ts +11 -0
- package/registry/components/Dialog/DialogFooter.module.css +38 -0
- package/registry/components/Dialog/DialogFooter.tsx +30 -0
- package/registry/components/Dialog/DialogHeader.module.css +70 -0
- package/registry/components/Dialog/DialogHeader.tsx +72 -0
- package/registry/components/Dialog/DialogIcon.module.css +31 -0
- package/registry/components/Dialog/DialogIcon.tsx +89 -0
- package/registry/components/Dialog/index.ts +14 -0
- package/registry/components/Divider/Divider.module.css +19 -0
- package/registry/components/Divider/Divider.tsx +20 -0
- package/registry/components/Divider/Divider.types.ts +9 -0
- package/registry/components/Divider/index.ts +2 -0
- package/registry/components/DropdownMenu/DropdownMenu.module.css +9 -0
- package/registry/components/DropdownMenu/DropdownMenu.tsx +21 -0
- package/registry/components/DropdownMenu/DropdownMenu.types.ts +22 -0
- package/registry/components/DropdownMenu/DropdownMenuDivider.module.css +5 -0
- package/registry/components/DropdownMenu/DropdownMenuDivider.tsx +20 -0
- package/registry/components/DropdownMenu/DropdownMenuHeader.module.css +7 -0
- package/registry/components/DropdownMenu/DropdownMenuHeader.tsx +17 -0
- package/registry/components/DropdownMenu/DropdownMenuItem.module.css +78 -0
- package/registry/components/DropdownMenu/DropdownMenuItem.tsx +40 -0
- package/registry/components/DropdownMenu/index.ts +10 -0
- package/registry/components/FileUpload/FileUpload.module.css +122 -0
- package/registry/components/FileUpload/FileUpload.tsx +354 -0
- package/registry/components/FileUpload/FileUpload.types.ts +89 -0
- package/registry/components/FileUpload/FileUploadIcon.module.css +61 -0
- package/registry/components/FileUpload/FileUploadIcon.tsx +84 -0
- package/registry/components/FileUpload/FileUploadInput.module.css +140 -0
- package/registry/components/FileUpload/FileUploadInput.tsx +113 -0
- package/registry/components/FileUpload/FileUploadItem.module.css +41 -0
- package/registry/components/FileUpload/FileUploadItem.tsx +39 -0
- package/registry/components/FileUpload/index.ts +12 -0
- package/registry/components/InputCounter/InputCounter.module.css +146 -0
- package/registry/components/InputCounter/InputCounter.tsx +232 -0
- package/registry/components/InputCounter/InputCounter.types.ts +37 -0
- package/registry/components/InputCounter/index.ts +7 -0
- package/registry/components/InputMessage/InputMessage.module.css +148 -0
- package/registry/components/InputMessage/InputMessage.tsx +294 -0
- package/registry/components/InputMessage/InputMessage.types.ts +30 -0
- package/registry/components/InputMessage/index.ts +2 -0
- package/registry/components/InputSearch/InputSearch.module.css +168 -0
- package/registry/components/InputSearch/InputSearch.tsx +251 -0
- package/registry/components/InputSearch/InputSearch.types.ts +35 -0
- package/registry/components/InputSearch/index.ts +6 -0
- package/registry/components/InputText/InputText.module.css +183 -0
- package/registry/components/InputText/InputText.tsx +244 -0
- package/registry/components/InputText/InputText.types.ts +32 -0
- package/registry/components/InputText/index.ts +7 -0
- package/registry/components/InputTextArea/InputTextArea.module.css +141 -0
- package/registry/components/InputTextArea/InputTextArea.tsx +170 -0
- package/registry/components/InputTextArea/InputTextArea.types.ts +18 -0
- package/registry/components/InputTextArea/index.ts +6 -0
- package/registry/components/NavbarUser/NavbarUser.module.css +265 -0
- package/registry/components/NavbarUser/NavbarUser.tsx +202 -0
- package/registry/components/NavbarUser/NavbarUser.types.ts +31 -0
- package/registry/components/NavbarUser/index.ts +2 -0
- package/registry/components/Notification/Notification.types.ts +65 -0
- package/registry/components/Notification/NotificationItem.module.css +143 -0
- package/registry/components/Notification/NotificationItem.tsx +157 -0
- package/registry/components/Notification/NotificationPanel.module.css +75 -0
- package/registry/components/Notification/NotificationPanel.tsx +68 -0
- package/registry/components/Notification/NotificationReply.module.css +56 -0
- package/registry/components/Notification/NotificationReply.tsx +52 -0
- package/registry/components/Notification/index.ts +9 -0
- package/registry/components/Pagination/Pagination.module.css +123 -0
- package/registry/components/Pagination/Pagination.tsx +212 -0
- package/registry/components/Pagination/Pagination.types.ts +24 -0
- package/registry/components/Pagination/PaginationDots.module.css +60 -0
- package/registry/components/Pagination/PaginationDots.tsx +48 -0
- package/registry/components/Pagination/PaginationDots.types.ts +17 -0
- package/registry/components/Pagination/index.ts +12 -0
- package/registry/components/Persona/MessageDropdown.module.css +76 -0
- package/registry/components/Persona/MessageDropdown.tsx +68 -0
- package/registry/components/Persona/Persona.module.css +92 -0
- package/registry/components/Persona/Persona.tsx +90 -0
- package/registry/components/Persona/Persona.types.ts +71 -0
- package/registry/components/Persona/PersonaAction.module.css +80 -0
- package/registry/components/Persona/PersonaAction.tsx +49 -0
- package/registry/components/Persona/PersonaMessage.module.css +156 -0
- package/registry/components/Persona/PersonaMessage.tsx +70 -0
- package/registry/components/Persona/index.ts +11 -0
- package/registry/components/Progress/Progress.module.css +41 -0
- package/registry/components/Progress/Progress.tsx +43 -0
- package/registry/components/Progress/Progress.types.ts +10 -0
- package/registry/components/Progress/index.ts +2 -0
- package/registry/components/RadioButton/RadioButton.module.css +103 -0
- package/registry/components/RadioButton/RadioButton.tsx +59 -0
- package/registry/components/RadioButton/RadioButton.types.ts +19 -0
- package/registry/components/RadioButton/RadioField.module.css +68 -0
- package/registry/components/RadioButton/RadioField.tsx +68 -0
- package/registry/components/RadioButton/RadioGroup.module.css +41 -0
- package/registry/components/RadioButton/RadioGroup.tsx +76 -0
- package/registry/components/RadioButton/RadioGroupContext.ts +16 -0
- package/registry/components/RadioButton/index.ts +12 -0
- package/registry/components/RangeSlider/RangeSlider.module.css +133 -0
- package/registry/components/RangeSlider/RangeSlider.tsx +251 -0
- package/registry/components/RangeSlider/RangeSlider.types.ts +25 -0
- package/registry/components/RangeSlider/index.ts +2 -0
- package/registry/components/Rating/Rating.module.css +56 -0
- package/registry/components/Rating/Rating.tsx +142 -0
- package/registry/components/Rating/Rating.types.ts +14 -0
- package/registry/components/Rating/index.ts +7 -0
- package/registry/components/SegmentedControl/SegmentedControl.module.css +56 -0
- package/registry/components/SegmentedControl/SegmentedControl.tsx +46 -0
- package/registry/components/SegmentedControl/SegmentedControl.types.ts +27 -0
- package/registry/components/SegmentedControl/SegmentedControlContext.ts +20 -0
- package/registry/components/SegmentedControl/SegmentedControlItem.module.css +55 -0
- package/registry/components/SegmentedControl/SegmentedControlItem.tsx +32 -0
- package/registry/components/SegmentedControl/index.ts +8 -0
- package/registry/components/SelectDropdown/SelectDropdown.module.css +214 -0
- package/registry/components/SelectDropdown/SelectDropdown.tsx +375 -0
- package/registry/components/SelectDropdown/SelectDropdown.types.ts +50 -0
- package/registry/components/SelectDropdown/SelectDropdownOption.module.css +101 -0
- package/registry/components/SelectDropdown/SelectDropdownOption.tsx +86 -0
- package/registry/components/SelectDropdown/SelectDropdownOverlay.module.css +74 -0
- package/registry/components/SelectDropdown/SelectDropdownOverlay.tsx +202 -0
- package/registry/components/SelectDropdown/index.ts +11 -0
- package/registry/components/Sidebar/Sidebar.module.css +14 -0
- package/registry/components/Sidebar/Sidebar.tsx +41 -0
- package/registry/components/Sidebar/Sidebar.types.ts +41 -0
- package/registry/components/Sidebar/SidebarContent.module.css +5 -0
- package/registry/components/Sidebar/SidebarContent.tsx +14 -0
- package/registry/components/Sidebar/SidebarContext.ts +15 -0
- package/registry/components/Sidebar/SidebarDivider.module.css +5 -0
- package/registry/components/Sidebar/SidebarDivider.tsx +17 -0
- package/registry/components/Sidebar/SidebarFooter.module.css +5 -0
- package/registry/components/Sidebar/SidebarFooter.tsx +14 -0
- package/registry/components/Sidebar/SidebarGroup.module.css +12 -0
- package/registry/components/Sidebar/SidebarGroup.tsx +22 -0
- package/registry/components/Sidebar/SidebarHeader.module.css +5 -0
- package/registry/components/Sidebar/SidebarHeader.tsx +14 -0
- package/registry/components/Sidebar/SidebarNavItem.module.css +176 -0
- package/registry/components/Sidebar/SidebarNavItem.tsx +96 -0
- package/registry/components/Sidebar/index.ts +16 -0
- package/registry/components/Stepper/Stepper.module.css +11 -0
- package/registry/components/Stepper/Stepper.tsx +47 -0
- package/registry/components/Stepper/Stepper.types.ts +26 -0
- package/registry/components/Stepper/StepperContext.ts +17 -0
- package/registry/components/Stepper/StepperStep.module.css +183 -0
- package/registry/components/Stepper/StepperStep.tsx +204 -0
- package/registry/components/Stepper/index.ts +9 -0
- package/registry/components/Switch/Switch.module.css +145 -0
- package/registry/components/Switch/Switch.tsx +96 -0
- package/registry/components/Switch/Switch.types.ts +19 -0
- package/registry/components/Switch/SwitchField.module.css +69 -0
- package/registry/components/Switch/SwitchField.tsx +49 -0
- package/registry/components/Switch/index.ts +8 -0
- package/registry/components/Tab/Tab.module.css +20 -0
- package/registry/components/Tab/Tab.tsx +35 -0
- package/registry/components/Tab/Tab.types.ts +21 -0
- package/registry/components/Tab/TabAdd.module.css +36 -0
- package/registry/components/Tab/TabAdd.tsx +41 -0
- package/registry/components/Tab/TabContext.ts +19 -0
- package/registry/components/Tab/TabItem.module.css +145 -0
- package/registry/components/Tab/TabItem.tsx +87 -0
- package/registry/components/Tab/index.ts +9 -0
- package/registry/components/Table/Table.module.css +33 -0
- package/registry/components/Table/Table.tsx +74 -0
- package/registry/components/Table/Table.types.ts +64 -0
- package/registry/components/Table/TableBody.tsx +23 -0
- package/registry/components/Table/TableCell.module.css +21 -0
- package/registry/components/Table/TableCell.tsx +20 -0
- package/registry/components/Table/TableContext.ts +22 -0
- package/registry/components/Table/TableFooter.module.css +27 -0
- package/registry/components/Table/TableFooter.tsx +20 -0
- package/registry/components/Table/TableHeader.module.css +3 -0
- package/registry/components/Table/TableHeader.tsx +17 -0
- package/registry/components/Table/TableHeaderCell.module.css +55 -0
- package/registry/components/Table/TableHeaderCell.tsx +98 -0
- package/registry/components/Table/TableRow.module.css +53 -0
- package/registry/components/Table/TableRow.tsx +31 -0
- package/registry/components/Table/TableToolbar.module.css +7 -0
- package/registry/components/Table/TableToolbar.tsx +16 -0
- package/registry/components/Table/index.ts +22 -0
- package/registry/components/Tag/Tag.module.css +46 -0
- package/registry/components/Tag/Tag.tsx +38 -0
- package/registry/components/Tag/Tag.types.ts +37 -0
- package/registry/components/Tag/TagBrand.module.css +42 -0
- package/registry/components/Tag/TagBrand.tsx +38 -0
- package/registry/components/Tag/TagStatus.module.css +43 -0
- package/registry/components/Tag/TagStatus.tsx +119 -0
- package/registry/components/Tag/index.ts +15 -0
- package/registry/components/Tooltip/Tooltip.module.css +208 -0
- package/registry/components/Tooltip/Tooltip.tsx +81 -0
- package/registry/components/Tooltip/Tooltip.types.ts +27 -0
- package/registry/components/Tooltip/index.ts +7 -0
- package/registry/components/TreeviewList/TreeviewItem.module.css +89 -0
- package/registry/components/TreeviewList/TreeviewItem.tsx +142 -0
- package/registry/components/TreeviewList/TreeviewList.module.css +3 -0
- package/registry/components/TreeviewList/TreeviewList.tsx +19 -0
- package/registry/components/TreeviewList/TreeviewList.types.ts +18 -0
- package/registry/components/TreeviewList/TreeviewListContext.ts +13 -0
- package/registry/components/TreeviewList/index.ts +6 -0
- package/registry/components/VerificationCode/VerificationCode.module.css +49 -0
- package/registry/components/VerificationCode/VerificationCode.tsx +147 -0
- package/registry/components/VerificationCode/VerificationCode.types.ts +21 -0
- package/registry/components/VerificationCode/index.ts +2 -0
- package/registry/registry.json +746 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { forwardRef, useState, useRef, useCallback } from 'react';
|
|
2
|
+
import { cn } from '../../utils/cn';
|
|
3
|
+
import type { InputMessageProps } from './InputMessage.types';
|
|
4
|
+
import styles from './InputMessage.module.css';
|
|
5
|
+
|
|
6
|
+
function PlusIcon() {
|
|
7
|
+
return (
|
|
8
|
+
<svg
|
|
9
|
+
width="20"
|
|
10
|
+
height="20"
|
|
11
|
+
viewBox="0 0 20 20"
|
|
12
|
+
fill="none"
|
|
13
|
+
aria-hidden="true"
|
|
14
|
+
>
|
|
15
|
+
<path
|
|
16
|
+
d="M10 4v12M4 10h12"
|
|
17
|
+
stroke="currentColor"
|
|
18
|
+
strokeWidth="1.5"
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
/>
|
|
21
|
+
</svg>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function SmileyIcon() {
|
|
26
|
+
return (
|
|
27
|
+
<svg
|
|
28
|
+
width="20"
|
|
29
|
+
height="20"
|
|
30
|
+
viewBox="0 0 20 20"
|
|
31
|
+
fill="none"
|
|
32
|
+
aria-hidden="true"
|
|
33
|
+
>
|
|
34
|
+
<path
|
|
35
|
+
fillRule="evenodd"
|
|
36
|
+
clipRule="evenodd"
|
|
37
|
+
d="M9.99999 2.91669C6.08797 2.91669 2.91666 6.088 2.91666 10C2.91666 13.912 6.08797 17.0834 9.99999 17.0834C13.912 17.0834 17.0833 13.912 17.0833 10C17.0833 6.088 13.912 2.91669 9.99999 2.91669ZM1.66666 10C1.66666 5.39765 5.39762 1.66669 9.99999 1.66669C14.6024 1.66669 18.3333 5.39765 18.3333 10C18.3333 14.6024 14.6024 18.3334 9.99999 18.3334C5.39762 18.3334 1.66666 14.6024 1.66666 10Z"
|
|
38
|
+
fill="currentColor"
|
|
39
|
+
/>
|
|
40
|
+
<path
|
|
41
|
+
fillRule="evenodd"
|
|
42
|
+
clipRule="evenodd"
|
|
43
|
+
d="M13.9155 12.0721C14.1886 12.2832 14.2389 12.6757 14.0279 12.9488C13.8604 13.1656 12.4472 14.9179 9.99756 14.9084L9.99493 14.9084C7.64058 14.8893 6.27262 13.25 6.08496 13.013C5.87071 12.7423 5.91641 12.3492 6.18705 12.135C6.45768 11.9207 6.85076 11.9664 7.06502 12.2371C7.19399 12.4 8.24222 13.6435 10.0037 13.6584C11.8367 13.6649 12.9229 12.3344 13.0388 12.1845C13.2498 11.9114 13.6423 11.8611 13.9155 12.0721Z"
|
|
44
|
+
fill="currentColor"
|
|
45
|
+
/>
|
|
46
|
+
<path
|
|
47
|
+
d="M6.99998 7.28335C6.41665 7.28335 5.94999 7.75835 5.94999 8.33335C5.94999 8.90835 6.42498 9.38336 6.99998 9.38336C7.58332 9.38336 8.04999 8.90835 8.04999 8.33335C8.04999 7.75835 7.58332 7.28335 6.99998 7.28335Z"
|
|
48
|
+
fill="currentColor"
|
|
49
|
+
/>
|
|
50
|
+
<path
|
|
51
|
+
d="M13 7.28335C12.4167 7.28335 11.95 7.75835 11.95 8.33335C11.95 8.90835 12.425 9.38336 13 9.38336C13.5833 9.38336 14.05 8.90835 14.05 8.33335C14.05 7.75835 13.575 7.28335 13 7.28335Z"
|
|
52
|
+
fill="currentColor"
|
|
53
|
+
/>
|
|
54
|
+
</svg>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function GalleryIcon() {
|
|
59
|
+
return (
|
|
60
|
+
<svg
|
|
61
|
+
width="20"
|
|
62
|
+
height="20"
|
|
63
|
+
viewBox="0 0 20 20"
|
|
64
|
+
fill="none"
|
|
65
|
+
aria-hidden="true"
|
|
66
|
+
>
|
|
67
|
+
<path
|
|
68
|
+
d="M12.5 18.9584H7.49999C2.97499 18.9584 1.04166 17.025 1.04166 12.5V7.50002C1.04166 2.97502 2.97499 1.04169 7.49999 1.04169H12.5C17.025 1.04169 18.9583 2.97502 18.9583 7.50002V12.5C18.9583 17.025 17.025 18.9584 12.5 18.9584ZM7.49999 2.29169C3.65832 2.29169 2.29166 3.65835 2.29166 7.50002V12.5C2.29166 16.3417 3.65832 17.7084 7.49999 17.7084H12.5C16.3417 17.7084 17.7083 16.3417 17.7083 12.5V7.50002C17.7083 3.65835 16.3417 2.29169 12.5 2.29169H7.49999Z"
|
|
69
|
+
fill="currentColor"
|
|
70
|
+
/>
|
|
71
|
+
<path
|
|
72
|
+
d="M7.49999 8.95835C6.23332 8.95835 5.20832 7.93335 5.20832 6.66669C5.20832 5.40002 6.23332 4.37502 7.49999 4.37502C8.76666 4.37502 9.79166 5.40002 9.79166 6.66669C9.79166 7.93335 8.76666 8.95835 7.49999 8.95835ZM7.49999 5.62502C6.92499 5.62502 6.45832 6.09169 6.45832 6.66669C6.45832 7.24169 6.92499 7.70835 7.49999 7.70835C8.07499 7.70835 8.54166 7.24169 8.54166 6.66669C8.54166 6.09169 8.07499 5.62502 7.49999 5.62502Z"
|
|
73
|
+
fill="currentColor"
|
|
74
|
+
/>
|
|
75
|
+
<path
|
|
76
|
+
d="M2.225 16.4167C2.025 16.4167 1.825 16.3167 1.70834 16.1417C1.51667 15.8584 1.59167 15.4667 1.88334 15.2751L5.99167 12.5167C6.89167 11.9084 8.13334 11.9834 8.95 12.6751L9.225 12.9167C9.64167 13.2751 10.35 13.2751 10.7583 12.9167L14.225 9.94174C15.1083 9.1834 16.5 9.1834 17.3917 9.94174L18.75 11.1084C19.0083 11.3334 19.0417 11.7251 18.8167 11.9917C18.5917 12.2501 18.2 12.2834 17.9333 12.0584L16.575 10.8917C16.1583 10.5334 15.45 10.5334 15.0333 10.8917L11.5667 13.8667C10.6833 14.6251 9.29167 14.6251 8.4 13.8667L8.125 13.6251C7.74167 13.3001 7.10834 13.2667 6.68334 13.5584L2.575 16.3167C2.46667 16.3834 2.34167 16.4167 2.225 16.4167Z"
|
|
77
|
+
fill="currentColor"
|
|
78
|
+
/>
|
|
79
|
+
</svg>
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function MicrophoneIcon() {
|
|
84
|
+
return (
|
|
85
|
+
<svg
|
|
86
|
+
width="20"
|
|
87
|
+
height="20"
|
|
88
|
+
viewBox="0 0 20 20"
|
|
89
|
+
fill="none"
|
|
90
|
+
aria-hidden="true"
|
|
91
|
+
>
|
|
92
|
+
<path
|
|
93
|
+
d="M9.99999 13.5417C7.81666 13.5417 6.04166 11.7667 6.04166 9.58335V5.00002C6.04166 2.81669 7.81666 1.04169 9.99999 1.04169C12.1833 1.04169 13.9583 2.81669 13.9583 5.00002V9.58335C13.9583 11.7667 12.1833 13.5417 9.99999 13.5417ZM9.99999 2.29169C8.50832 2.29169 7.29166 3.50835 7.29166 5.00002V9.58335C7.29166 11.075 8.50832 12.2917 9.99999 12.2917C11.4917 12.2917 12.7083 11.075 12.7083 9.58335V5.00002C12.7083 3.50835 11.4917 2.29169 9.99999 2.29169Z"
|
|
94
|
+
fill="currentColor"
|
|
95
|
+
/>
|
|
96
|
+
<path
|
|
97
|
+
d="M9.99997 16.4584C6.14164 16.4584 2.99997 13.3167 2.99997 9.45837V8.04171C2.99997 7.70004 3.2833 7.41671 3.62497 7.41671C3.96664 7.41671 4.24997 7.70004 4.24997 8.04171V9.45837C4.24997 12.625 6.8333 15.2084 9.99997 15.2084C13.1666 15.2084 15.75 12.625 15.75 9.45837V8.04171C15.75 7.70004 16.0333 7.41671 16.375 7.41671C16.7166 7.41671 17 7.70004 17 8.04171V9.45837C17 13.3167 13.8583 16.4584 9.99997 16.4584Z"
|
|
98
|
+
fill="currentColor"
|
|
99
|
+
/>
|
|
100
|
+
<path
|
|
101
|
+
d="M11.1583 5.98331C11.0917 5.98331 11.0167 5.97498 10.9417 5.94998C10.3333 5.72498 9.66666 5.72498 9.05832 5.94998C8.73332 6.06664 8.37499 5.89998 8.25832 5.57498C8.14166 5.24998 8.30832 4.89164 8.63332 4.77498C9.51666 4.45831 10.4917 4.45831 11.375 4.77498C11.7 4.89164 11.8667 5.24998 11.75 5.57498C11.65 5.82498 11.4083 5.98331 11.1583 5.98331Z"
|
|
102
|
+
fill="currentColor"
|
|
103
|
+
/>
|
|
104
|
+
<path
|
|
105
|
+
d="M10.6666 7.74998C10.6083 7.74998 10.5583 7.74164 10.5 7.72498C10.1666 7.63331 9.82495 7.63331 9.49162 7.72498C9.15829 7.81664 8.81662 7.61664 8.72495 7.28331C8.63329 6.95831 8.83329 6.61664 9.16662 6.52498C9.70829 6.37498 10.2916 6.37498 10.8333 6.52498C11.1666 6.61664 11.3666 6.95831 11.275 7.29164C11.2 7.56664 10.9416 7.74998 10.6666 7.74998Z"
|
|
106
|
+
fill="currentColor"
|
|
107
|
+
/>
|
|
108
|
+
<path
|
|
109
|
+
d="M9.99999 18.9584C9.65832 18.9584 9.37499 18.675 9.37499 18.3334V15.8334C9.37499 15.4917 9.6583 15.2084 9.99997 15.2084C10.3416 15.2084 10.625 15.4917 10.625 15.8334V18.3334C10.625 18.675 10.3417 18.9584 9.99999 18.9584Z"
|
|
110
|
+
fill="currentColor"
|
|
111
|
+
/>
|
|
112
|
+
</svg>
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function SendIcon() {
|
|
117
|
+
return (
|
|
118
|
+
<svg
|
|
119
|
+
width="20"
|
|
120
|
+
height="20"
|
|
121
|
+
viewBox="0 0 20 20"
|
|
122
|
+
fill="none"
|
|
123
|
+
aria-hidden="true"
|
|
124
|
+
>
|
|
125
|
+
<path
|
|
126
|
+
d="M4.50834 18.1249C3.57501 18.1249 2.98334 17.8083 2.60834 17.4333C1.87501 16.6999 1.35834 15.1416 3.00834 11.8333L3.73334 10.3916C3.82501 10.1999 3.82501 9.79993 3.73334 9.60826L3.00834 8.16659C1.35001 4.85826 1.87501 3.29159 2.60834 2.56659C3.33334 1.83326 4.90001 1.30826 8.20001 2.96659L15.3333 6.53326C17.1083 7.41659 18.0833 8.64993 18.0833 9.99993C18.0833 11.3499 17.1083 12.5833 15.3417 13.4666L8.20834 17.0333C6.59167 17.8416 5.39167 18.1249 4.50834 18.1249ZM4.50834 3.12493C4.05834 3.12493 3.70834 3.23326 3.49167 3.44993C2.88334 4.04993 3.12501 5.60826 4.12501 7.59993L4.85001 9.04993C5.11667 9.59159 5.11667 10.4083 4.85001 10.9499L4.12501 12.3916C3.12501 14.3916 2.88334 15.9416 3.49167 16.5416C4.09167 17.1499 5.65001 16.9083 7.65001 15.9083L14.7833 12.3416C16.0917 11.6916 16.8333 10.8333 16.8333 9.99159C16.8333 9.14993 16.0833 8.29159 14.775 7.64159L7.64167 4.08326C6.37501 3.44993 5.28334 3.12493 4.50834 3.12493Z"
|
|
127
|
+
fill="currentColor"
|
|
128
|
+
/>
|
|
129
|
+
<path
|
|
130
|
+
d="M9.03334 10.625H4.53334C4.19167 10.625 3.90834 10.3417 3.90834 10C3.90834 9.65834 4.19167 9.37501 4.53334 9.37501H9.03334C9.375 9.37501 9.65834 9.65834 9.65834 10C9.65834 10.3417 9.375 10.625 9.03334 10.625Z"
|
|
131
|
+
fill="currentColor"
|
|
132
|
+
/>
|
|
133
|
+
</svg>
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export const InputMessage = forwardRef<HTMLInputElement, InputMessageProps>(
|
|
138
|
+
(
|
|
139
|
+
{
|
|
140
|
+
label,
|
|
141
|
+
placeholder,
|
|
142
|
+
value,
|
|
143
|
+
defaultValue = '',
|
|
144
|
+
onChange,
|
|
145
|
+
onSend,
|
|
146
|
+
onPlusClick,
|
|
147
|
+
onEmojiClick,
|
|
148
|
+
onGalleryClick,
|
|
149
|
+
onMicrophoneClick,
|
|
150
|
+
disabled,
|
|
151
|
+
required,
|
|
152
|
+
className,
|
|
153
|
+
name,
|
|
154
|
+
},
|
|
155
|
+
ref,
|
|
156
|
+
) => {
|
|
157
|
+
const inputRef = useRef<HTMLInputElement>(null);
|
|
158
|
+
const [focused, setFocused] = useState(false);
|
|
159
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
160
|
+
|
|
161
|
+
const isControlled = value !== undefined;
|
|
162
|
+
const currentValue = isControlled ? value : internalValue;
|
|
163
|
+
const hasValue = currentValue.length > 0;
|
|
164
|
+
|
|
165
|
+
const setRefs = useCallback(
|
|
166
|
+
(node: HTMLInputElement | null) => {
|
|
167
|
+
(inputRef as React.MutableRefObject<HTMLInputElement | null>).current =
|
|
168
|
+
node;
|
|
169
|
+
if (typeof ref === 'function') ref(node);
|
|
170
|
+
else if (ref)
|
|
171
|
+
(ref as React.MutableRefObject<HTMLInputElement | null>).current =
|
|
172
|
+
node;
|
|
173
|
+
},
|
|
174
|
+
[ref],
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
178
|
+
if (!isControlled) setInternalValue(e.target.value);
|
|
179
|
+
onChange?.(e);
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
const handleFocus = () => setFocused(true);
|
|
183
|
+
const handleBlur = () => setFocused(false);
|
|
184
|
+
|
|
185
|
+
const handleSend = () => {
|
|
186
|
+
if (!hasValue) return;
|
|
187
|
+
onSend?.(currentValue);
|
|
188
|
+
if (!isControlled) setInternalValue('');
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
|
|
192
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
193
|
+
e.preventDefault();
|
|
194
|
+
handleSend();
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
const hasActions = !!(onEmojiClick || onGalleryClick || onMicrophoneClick);
|
|
199
|
+
|
|
200
|
+
return (
|
|
201
|
+
<div className={cn(styles.root, className)}>
|
|
202
|
+
{label && (
|
|
203
|
+
<span className={styles.label}>
|
|
204
|
+
{label}
|
|
205
|
+
{required && <span className={styles.required}>*</span>}
|
|
206
|
+
</span>
|
|
207
|
+
)}
|
|
208
|
+
|
|
209
|
+
<div
|
|
210
|
+
className={cn(
|
|
211
|
+
styles.inputBox,
|
|
212
|
+
focused && styles.focused,
|
|
213
|
+
disabled && styles.disabled,
|
|
214
|
+
)}
|
|
215
|
+
>
|
|
216
|
+
{onPlusClick && (
|
|
217
|
+
<button
|
|
218
|
+
type="button"
|
|
219
|
+
className={styles.plusBtn}
|
|
220
|
+
onClick={onPlusClick}
|
|
221
|
+
aria-label="Add attachment"
|
|
222
|
+
>
|
|
223
|
+
<PlusIcon />
|
|
224
|
+
</button>
|
|
225
|
+
)}
|
|
226
|
+
|
|
227
|
+
<input
|
|
228
|
+
ref={setRefs}
|
|
229
|
+
className={styles.input}
|
|
230
|
+
placeholder={placeholder}
|
|
231
|
+
value={isControlled ? currentValue : undefined}
|
|
232
|
+
defaultValue={isControlled ? undefined : defaultValue}
|
|
233
|
+
onChange={handleChange}
|
|
234
|
+
onFocus={handleFocus}
|
|
235
|
+
onBlur={handleBlur}
|
|
236
|
+
onKeyDown={handleKeyDown}
|
|
237
|
+
disabled={disabled}
|
|
238
|
+
required={required}
|
|
239
|
+
name={name}
|
|
240
|
+
/>
|
|
241
|
+
|
|
242
|
+
{hasActions && (
|
|
243
|
+
<div className={styles.actions}>
|
|
244
|
+
{onEmojiClick && (
|
|
245
|
+
<button
|
|
246
|
+
type="button"
|
|
247
|
+
className={styles.actionBtn}
|
|
248
|
+
onClick={onEmojiClick}
|
|
249
|
+
aria-label="Emoji"
|
|
250
|
+
>
|
|
251
|
+
<SmileyIcon />
|
|
252
|
+
</button>
|
|
253
|
+
)}
|
|
254
|
+
{onGalleryClick && (
|
|
255
|
+
<button
|
|
256
|
+
type="button"
|
|
257
|
+
className={styles.actionBtn}
|
|
258
|
+
onClick={onGalleryClick}
|
|
259
|
+
aria-label="Gallery"
|
|
260
|
+
>
|
|
261
|
+
<GalleryIcon />
|
|
262
|
+
</button>
|
|
263
|
+
)}
|
|
264
|
+
{onMicrophoneClick && (
|
|
265
|
+
<button
|
|
266
|
+
type="button"
|
|
267
|
+
className={styles.actionBtn}
|
|
268
|
+
onClick={onMicrophoneClick}
|
|
269
|
+
aria-label="Microphone"
|
|
270
|
+
>
|
|
271
|
+
<MicrophoneIcon />
|
|
272
|
+
</button>
|
|
273
|
+
)}
|
|
274
|
+
</div>
|
|
275
|
+
)}
|
|
276
|
+
|
|
277
|
+
{hasActions && <span className={styles.separator} />}
|
|
278
|
+
|
|
279
|
+
<button
|
|
280
|
+
type="button"
|
|
281
|
+
className={cn(styles.sendBtn, hasValue && styles.sendBtnActive)}
|
|
282
|
+
onClick={handleSend}
|
|
283
|
+
disabled={disabled}
|
|
284
|
+
aria-label="Send"
|
|
285
|
+
>
|
|
286
|
+
<SendIcon />
|
|
287
|
+
</button>
|
|
288
|
+
</div>
|
|
289
|
+
</div>
|
|
290
|
+
);
|
|
291
|
+
},
|
|
292
|
+
);
|
|
293
|
+
|
|
294
|
+
InputMessage.displayName = 'InputMessage';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface InputMessageProps {
|
|
2
|
+
/** Label text above input. */
|
|
3
|
+
label?: string;
|
|
4
|
+
/** Placeholder text for the input. */
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
/** Controlled value. */
|
|
7
|
+
value?: string;
|
|
8
|
+
/** Uncontrolled initial value. */
|
|
9
|
+
defaultValue?: string;
|
|
10
|
+
/** Native change handler for the input. */
|
|
11
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
12
|
+
/** Called with current value when send is triggered. */
|
|
13
|
+
onSend?: (value: string) => void;
|
|
14
|
+
/** Called when the + button is clicked. */
|
|
15
|
+
onPlusClick?: () => void;
|
|
16
|
+
/** Called when the emoji button is clicked. */
|
|
17
|
+
onEmojiClick?: () => void;
|
|
18
|
+
/** Called when the gallery button is clicked. */
|
|
19
|
+
onGalleryClick?: () => void;
|
|
20
|
+
/** Called when the microphone button is clicked. */
|
|
21
|
+
onMicrophoneClick?: () => void;
|
|
22
|
+
/** Disables entire component. */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/** Shows asterisk on label. */
|
|
25
|
+
required?: boolean;
|
|
26
|
+
/** Additional class on root element. */
|
|
27
|
+
className?: string;
|
|
28
|
+
/** Name attribute for the input. */
|
|
29
|
+
name?: string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/* ─── Root ─── */
|
|
2
|
+
.root {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: var(--st-space-2);
|
|
6
|
+
font-family: var(--st-font-family);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* ─── Label ─── */
|
|
10
|
+
.label {
|
|
11
|
+
font-size: var(--st-font-size-sm);
|
|
12
|
+
font-weight: var(--st-font-weight-semibold);
|
|
13
|
+
line-height: var(--st-line-height-tight);
|
|
14
|
+
color: var(--st-color-foreground);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.required {
|
|
18
|
+
color: var(--st-color-error);
|
|
19
|
+
margin-left: var(--st-space-1);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* ─── Input box (pill) ─── */
|
|
23
|
+
.inputBox {
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
gap: var(--st-space-2);
|
|
27
|
+
border: 1px solid var(--st-color-border);
|
|
28
|
+
border-radius: 999px;
|
|
29
|
+
background: var(--st-color-surface);
|
|
30
|
+
padding: 0 var(--st-space-2) 0 var(--st-space-4);
|
|
31
|
+
height: 48px;
|
|
32
|
+
transition: border-color var(--st-transition-fast),
|
|
33
|
+
box-shadow var(--st-transition-fast);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.inputBox:hover:not(.disabled):not(.error):not(.warning):not(.success):not(.ai):not(.focused) {
|
|
37
|
+
border-color: var(--st-color-border-strong);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.inputBox.focused:not(.disabled):not(.error):not(.warning):not(.success):not(.ai) {
|
|
41
|
+
border-color: var(--st-color-success);
|
|
42
|
+
box-shadow: 0 0 0 2px var(--st-color-success);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.inputBox.error {
|
|
46
|
+
border-color: var(--st-color-error);
|
|
47
|
+
box-shadow: 0 0 0 2px var(--st-color-error);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.inputBox.warning {
|
|
51
|
+
border-color: var(--st-color-warning);
|
|
52
|
+
box-shadow: 0 0 0 2px var(--st-color-warning);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.inputBox.success {
|
|
56
|
+
border-color: var(--st-color-success);
|
|
57
|
+
box-shadow: 0 0 0 2px var(--st-color-success);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.inputBox.ai {
|
|
61
|
+
border-color: var(--st-color-info);
|
|
62
|
+
box-shadow: 0 0 0 2px var(--st-color-info);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.inputBox.disabled {
|
|
66
|
+
opacity: 0.5;
|
|
67
|
+
pointer-events: none;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* ─── Input ─── */
|
|
71
|
+
.input {
|
|
72
|
+
flex: 1;
|
|
73
|
+
min-width: 0;
|
|
74
|
+
border: none;
|
|
75
|
+
outline: none;
|
|
76
|
+
background: transparent;
|
|
77
|
+
font-family: inherit;
|
|
78
|
+
font-size: var(--st-font-size-sm);
|
|
79
|
+
line-height: var(--st-line-height-normal);
|
|
80
|
+
color: var(--st-color-foreground);
|
|
81
|
+
padding: 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.input::placeholder {
|
|
85
|
+
color: var(--st-color-muted);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.input_error {
|
|
89
|
+
color: var(--st-color-error);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.input_ai {
|
|
93
|
+
color: var(--st-color-info);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* ─── Clear button ─── */
|
|
97
|
+
.clearBtn {
|
|
98
|
+
display: inline-flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
justify-content: center;
|
|
101
|
+
width: 28px;
|
|
102
|
+
height: 28px;
|
|
103
|
+
border: none;
|
|
104
|
+
background: transparent;
|
|
105
|
+
border-radius: var(--st-radius-md);
|
|
106
|
+
color: var(--st-color-muted);
|
|
107
|
+
cursor: pointer;
|
|
108
|
+
padding: 0;
|
|
109
|
+
flex-shrink: 0;
|
|
110
|
+
transition: background var(--st-transition-fast);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.clearBtn:hover {
|
|
114
|
+
background: var(--st-color-neutral-100);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* ─── Search button ─── */
|
|
118
|
+
.searchBtn {
|
|
119
|
+
display: inline-flex;
|
|
120
|
+
align-items: center;
|
|
121
|
+
justify-content: center;
|
|
122
|
+
width: 36px;
|
|
123
|
+
height: 36px;
|
|
124
|
+
border: none;
|
|
125
|
+
border-radius: 50%;
|
|
126
|
+
background: var(--st-color-neutral-100);
|
|
127
|
+
color: var(--st-color-muted);
|
|
128
|
+
cursor: pointer;
|
|
129
|
+
padding: 0;
|
|
130
|
+
flex-shrink: 0;
|
|
131
|
+
transition: background var(--st-transition-fast);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.searchBtn:hover {
|
|
135
|
+
background: var(--st-color-neutral-200);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* ─── Helper text ─── */
|
|
139
|
+
.helperText {
|
|
140
|
+
font-size: var(--st-font-size-xs);
|
|
141
|
+
line-height: var(--st-line-height-normal);
|
|
142
|
+
color: var(--st-color-muted);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* ─── Feedback text ─── */
|
|
146
|
+
.feedbackText {
|
|
147
|
+
display: inline-flex;
|
|
148
|
+
align-items: center;
|
|
149
|
+
gap: var(--st-space-1);
|
|
150
|
+
font-size: var(--st-font-size-xs);
|
|
151
|
+
line-height: var(--st-line-height-normal);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.feedback_success {
|
|
155
|
+
color: var(--st-color-success);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.feedback_error {
|
|
159
|
+
color: var(--st-color-error);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.feedback_warning {
|
|
163
|
+
color: var(--st-color-warning);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.feedback_ai {
|
|
167
|
+
color: var(--st-color-info);
|
|
168
|
+
}
|