@drivy/cobalt 2.16.0 → 2.16.2
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/components/Calendar/CalendarRangePicker/CalendarRangePickerDay.js +2 -2
- package/components/Calendar/CalendarRangePicker/CalendarRangePickerDay.js.map +1 -1
- package/components/Form/Autocomplete/index.js +4 -5
- package/components/Form/Autocomplete/index.js.map +1 -1
- package/package.json +4 -4
- package/styles/components/Notice/index.scss +1 -1
- package/styles/components/Pagination/index.scss +1 -0
- package/styles/core/text.scss +2 -2
- package/styles/core/typography.scss +2 -2
- package/types/src/components/Form/Autocomplete/index.d.ts +20 -19
- package/types/src/index.d.ts +1 -1
- package/utils/getCobaltTailwindcssConfig2.js +5 -0
- package/utils/getCobaltTailwindcssConfig2.js.map +1 -1
|
@@ -23,8 +23,8 @@ function CalendarRangePickerDay({ date, isToday, isStartDay, isEndDay, isSelecte
|
|
|
23
23
|
onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave(date);
|
|
24
24
|
}, onClick: handleSelectDate, "data-day": format(date, "yyyy-MM-dd"), type: "button", children: [date.getDate(), hasNotification && (jsx("div", { className: "cobalt-CalendarRangePicker__day-notification-container", children: jsx("div", { className: "cobalt-CalendarRangePicker__day-notification" }) }))] }));
|
|
25
25
|
if (tooltipMessage)
|
|
26
|
-
return (jsx(DayTooltip, { visible: true, content: jsx("div", { className: "c-text-body-
|
|
27
|
-
return hoverTooltipMessage ? (jsx(DayTooltip, { trigger: "mouseenter", content: jsx("div", { className: "c-text-body-
|
|
26
|
+
return (jsx(DayTooltip, { visible: true, content: jsx("div", { className: "c-text-body-xs", children: tooltipMessage }), placement: isStartDay ? "top" : "bottom", children: jsx$1 }));
|
|
27
|
+
return hoverTooltipMessage ? (jsx(DayTooltip, { trigger: "mouseenter", content: jsx("div", { className: "c-text-body-xs", children: hoverTooltipMessage }), placement: "top", interactive: false, children: jsx$1 })) : (jsx$1);
|
|
28
28
|
}
|
|
29
29
|
function areEqual(prevProps, nextProps) {
|
|
30
30
|
return (prevProps.isSelected === nextProps.isSelected &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarRangePickerDay.js","sources":["../../../../src/components/Calendar/CalendarRangePicker/CalendarRangePickerDay.tsx"],"sourcesContent":["import classNames from \"classnames\"\nimport { format } from \"date-fns\"\nimport React from \"react\"\nimport DayTooltip from \"./DayTooltip\"\n\ntype CalendarRangePickerDayPropsType = {\n date: Date\n isEditingStartDate: boolean\n isEditingEndDate: boolean\n isToday?: boolean\n isStartDay?: boolean\n isEndDay?: boolean\n isSelected?: boolean\n isInvalid?: boolean\n isDisabled?: boolean\n isRange?: boolean\n isActive?: boolean\n hasNotification?: boolean\n tooltipMessage?: string\n hoverTooltipMessage?: string\n onSelect: (date: Date) => void\n onMouseEnter: (date: Date, disabled: boolean) => void\n onMouseLeave?: (date: Date) => void\n}\n\nfunction CalendarRangePickerDay({\n date,\n isToday,\n isStartDay,\n isEndDay,\n isSelected,\n isDisabled,\n isInvalid,\n isRange,\n isActive,\n hasNotification,\n tooltipMessage,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n hoverTooltipMessage,\n}: CalendarRangePickerDayPropsType) {\n const handleSelectDate = () => {\n !isDisabled && !isInvalid && onSelect(new Date(date))\n }\n\n const jsx = (\n <button\n className={classNames(\"cobalt-CalendarRangePicker__day\", {\n \"cobalt-CalendarRangePicker__day--today\": isToday,\n \"cobalt-CalendarRangePicker__day--startDay\": isStartDay,\n \"cobalt-CalendarRangePicker__day--endDay\": isEndDay,\n \"cobalt-CalendarRangePicker__day--range\": isRange,\n \"cobalt-CalendarRangePicker__day--selected\": isSelected,\n \"cobalt-CalendarRangePicker__day--active\": isActive,\n \"cobalt-CalendarRangePicker__day--invalid\": isInvalid,\n \"cobalt-CalendarRangePicker__day--disabled\": isDisabled,\n })}\n onMouseEnter={() => {\n onMouseEnter(date, !!isDisabled)\n }}\n onMouseLeave={() => {\n onMouseLeave?.(date)\n }}\n onClick={handleSelectDate}\n data-day={format(date, \"yyyy-MM-dd\")}\n type=\"button\"\n >\n {date.getDate()}\n {hasNotification && (\n <div className=\"cobalt-CalendarRangePicker__day-notification-container\">\n <div className=\"cobalt-CalendarRangePicker__day-notification\"></div>\n </div>\n )}\n </button>\n )\n\n if (tooltipMessage)\n return (\n <DayTooltip\n visible={true}\n content={<div className=\"c-text-body-
|
|
1
|
+
{"version":3,"file":"CalendarRangePickerDay.js","sources":["../../../../src/components/Calendar/CalendarRangePicker/CalendarRangePickerDay.tsx"],"sourcesContent":["import classNames from \"classnames\"\nimport { format } from \"date-fns\"\nimport React from \"react\"\nimport DayTooltip from \"./DayTooltip\"\n\ntype CalendarRangePickerDayPropsType = {\n date: Date\n isEditingStartDate: boolean\n isEditingEndDate: boolean\n isToday?: boolean\n isStartDay?: boolean\n isEndDay?: boolean\n isSelected?: boolean\n isInvalid?: boolean\n isDisabled?: boolean\n isRange?: boolean\n isActive?: boolean\n hasNotification?: boolean\n tooltipMessage?: string\n hoverTooltipMessage?: string\n onSelect: (date: Date) => void\n onMouseEnter: (date: Date, disabled: boolean) => void\n onMouseLeave?: (date: Date) => void\n}\n\nfunction CalendarRangePickerDay({\n date,\n isToday,\n isStartDay,\n isEndDay,\n isSelected,\n isDisabled,\n isInvalid,\n isRange,\n isActive,\n hasNotification,\n tooltipMessage,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n hoverTooltipMessage,\n}: CalendarRangePickerDayPropsType) {\n const handleSelectDate = () => {\n !isDisabled && !isInvalid && onSelect(new Date(date))\n }\n\n const jsx = (\n <button\n className={classNames(\"cobalt-CalendarRangePicker__day\", {\n \"cobalt-CalendarRangePicker__day--today\": isToday,\n \"cobalt-CalendarRangePicker__day--startDay\": isStartDay,\n \"cobalt-CalendarRangePicker__day--endDay\": isEndDay,\n \"cobalt-CalendarRangePicker__day--range\": isRange,\n \"cobalt-CalendarRangePicker__day--selected\": isSelected,\n \"cobalt-CalendarRangePicker__day--active\": isActive,\n \"cobalt-CalendarRangePicker__day--invalid\": isInvalid,\n \"cobalt-CalendarRangePicker__day--disabled\": isDisabled,\n })}\n onMouseEnter={() => {\n onMouseEnter(date, !!isDisabled)\n }}\n onMouseLeave={() => {\n onMouseLeave?.(date)\n }}\n onClick={handleSelectDate}\n data-day={format(date, \"yyyy-MM-dd\")}\n type=\"button\"\n >\n {date.getDate()}\n {hasNotification && (\n <div className=\"cobalt-CalendarRangePicker__day-notification-container\">\n <div className=\"cobalt-CalendarRangePicker__day-notification\"></div>\n </div>\n )}\n </button>\n )\n\n if (tooltipMessage)\n return (\n <DayTooltip\n visible={true}\n content={<div className=\"c-text-body-xs\">{tooltipMessage}</div>}\n placement={isStartDay ? \"top\" : \"bottom\"}\n >\n {jsx}\n </DayTooltip>\n )\n\n return hoverTooltipMessage ? (\n <DayTooltip\n trigger=\"mouseenter\"\n content={<div className=\"c-text-body-xs\">{hoverTooltipMessage}</div>}\n placement=\"top\"\n interactive={false}\n >\n {jsx}\n </DayTooltip>\n ) : (\n jsx\n )\n}\n\nfunction areEqual(\n prevProps: CalendarRangePickerDayPropsType,\n nextProps: CalendarRangePickerDayPropsType,\n) {\n return (\n prevProps.isSelected === nextProps.isSelected &&\n prevProps.isActive === nextProps.isActive &&\n prevProps.isStartDay === nextProps.isStartDay &&\n prevProps.isEndDay === nextProps.isEndDay &&\n prevProps.isInvalid === nextProps.isInvalid &&\n prevProps.isRange === nextProps.isRange &&\n prevProps.hasNotification === nextProps.hasNotification &&\n prevProps.isDisabled === nextProps.isDisabled &&\n prevProps.isEditingStartDate === nextProps.isEditingStartDate &&\n prevProps.isEditingEndDate === nextProps.isEditingEndDate\n )\n}\n\nconst MemoizedComponent = React.memo(CalendarRangePickerDay, areEqual)\nMemoizedComponent.displayName = \"CalendarRangePickerDay\"\n\nexport { MemoizedComponent as CalendarRangePickerDay }\n"],"names":["jsx","_jsxs","classNames","_jsx"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ function sanitizeItems(items) {
|
|
|
25
25
|
}
|
|
26
26
|
const KEY_CODE_ENTER = 13;
|
|
27
27
|
const ignoreItemValue = nanoid();
|
|
28
|
-
const
|
|
28
|
+
const _Autocomplete = forwardRef(({ id, className, label, hint, fullWidth, icon, status, focusOnInit = false, popoverClassName, minQueryLength = 1, onQueryChange, onSelectItem, renderItem, items, onKeyDown, disabled, defaultValue, onClearValue, allowCustomValue = true, ...inputProps }, ref) => {
|
|
29
29
|
const [defaultInputValue, setDefaultInputValue] = useState(defaultValue);
|
|
30
30
|
const [autocompleteKey, setAutocompleteKey] = useState(true);
|
|
31
31
|
const isInputValidChangedProgrammatically = useRef(false);
|
|
@@ -64,9 +64,7 @@ const Autocomplete = forwardRef(({ id, className, label, hint, fullWidth, icon,
|
|
|
64
64
|
openOnClick: minQueryLength === 0 && collection.items.length > 0,
|
|
65
65
|
onValueChange: (details) => {
|
|
66
66
|
isInputValidChangedProgrammatically.current = true;
|
|
67
|
-
details.items[0]
|
|
68
|
-
? setValue(details.items[0].value)
|
|
69
|
-
: setValue("");
|
|
67
|
+
details.items[0] ? setValue(details.items[0].value) : setValue("");
|
|
70
68
|
},
|
|
71
69
|
onInteractOutside: () => {
|
|
72
70
|
setTimeout(() => { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur(); }, 30);
|
|
@@ -178,7 +176,8 @@ const Autocomplete = forwardRef(({ id, className, label, hint, fullWidth, icon,
|
|
|
178
176
|
"cobalt-FormField--fullWidth": fullWidth,
|
|
179
177
|
}), children: [autocomplete, hint && (jsx(Hint, { status: status, children: jsx("span", { dangerouslySetInnerHTML: { __html: hint } }) }))] })) : (autocomplete);
|
|
180
178
|
});
|
|
181
|
-
|
|
179
|
+
_Autocomplete.displayName = "Autocomplete";
|
|
180
|
+
const Autocomplete = _Autocomplete;
|
|
182
181
|
|
|
183
182
|
export { Autocomplete };
|
|
184
183
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Form/Autocomplete/index.tsx"],"sourcesContent":["import {\n Combobox,\n createListCollection,\n Portal,\n useCombobox,\n} from \"@ark-ui/react\"\nimport cx from \"classnames\"\nimport { nanoid } from \"nanoid\"\nimport type React from \"react\"\nimport {\n Fragment,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { getA11yOnClick } from \"../../../helpers\"\nimport { useOnMountEffect } from \"../../../hooks/useOnMountEffect\"\nimport { CheckIcon, Icon, type IconSources } from \"../../Icon\"\nimport type { FormElement } from \"../form\"\nimport { Hint } from \"../Hint\"\n\nexport type AutocompleteItemInput =\n | string\n | {\n [x: string]: unknown\n icon?: IconSources\n label?: string\n value: string\n disabled?: boolean\n }\n\nexport type AutocompleteItem = {\n [x: string]: unknown\n icon?: IconSources\n label: string\n value: string\n disabled?: boolean\n description?: string\n}\n\nexport type AutocompleteRefType = {\n query: string\n input: HTMLInputElement\n open: () => void\n focus: () => void\n clearValue: () => void\n setSelectedItem: (item: AutocompleteItemInput) => void\n}\n\ntype Props = {\n className?: string\n label?: string\n hint?: string\n fullWidth?: boolean\n icon?: IconSources\n items: AutocompleteItemInput[]\n popoverClassName?: string\n minQueryLength?: number\n autoFilter?: boolean\n focusOnInit?: boolean\n autocomplete?: boolean\n autocompleteRef?: React.RefObject<HTMLDivElement>\n onClearValue?: () => void\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void\n onQueryChange?: (term: string) => void\n onSelectItem?: (item: AutocompleteItem, term: string) => boolean\n renderItem?: (item: AutocompleteItem, term: string) => React.ReactNode\n allowCustomValue?: boolean\n} & FormElement &\n React.InputHTMLAttributes<HTMLInputElement>\n\nfunction sanitizeItem(item: AutocompleteItemInput) {\n if (typeof item === \"string\") {\n // If the item is a string, create an object with label and value being the string\n return { label: item, value: item }\n } else {\n // If the item is an object, ensure it has a label property\n const { value, label } = item\n return { ...item, label: label ?? value }\n }\n}\n\nfunction sanitizeItems(items: AutocompleteItemInput[]) {\n return items.map((item) => sanitizeItem(item))\n}\n\nconst HIGHLIGHT_CLASSNAME = \"autocomplete_matching_query\"\nconst regExpEscape = (s: string) => s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\")\n\ntype AutocompleteMatchHighlightPropsType = {\n label: string\n query: string\n matchClassName?: string\n}\n\nexport const AutocompleteMatchHighlight = ({\n label,\n query,\n matchClassName = HIGHLIGHT_CLASSNAME,\n}: AutocompleteMatchHighlightPropsType) => {\n if (query.trim().length === 0) return label\n\n const queryRX = RegExp(`(${regExpEscape(query)})`, \"gi\")\n\n const parts = label.split(queryRX)\n\n return (\n <>\n {parts.map((part, index) => {\n const key = `${index}-${part}`\n return part.match(queryRX) ? (\n <span className={cx(matchClassName)} key={key}>\n {part}\n </span>\n ) : (\n <Fragment key={key}>{part}</Fragment>\n )\n })}\n </>\n )\n}\n\nconst KEY_CODE_ENTER = 13\n\nconst ignoreItemValue = nanoid()\n\nconst Autocomplete = forwardRef(\n (\n {\n id,\n className,\n label,\n hint,\n fullWidth,\n icon,\n status,\n focusOnInit = false,\n popoverClassName,\n minQueryLength = 1,\n onQueryChange,\n onSelectItem,\n renderItem,\n items,\n onKeyDown,\n disabled,\n defaultValue,\n onClearValue,\n allowCustomValue = true,\n ...inputProps\n }: Props,\n ref,\n ) => {\n const [defaultInputValue, setDefaultInputValue] = useState(defaultValue)\n const [autocompleteKey, setAutocompleteKey] = useState(true)\n\n const isInputValidChangedProgrammatically = useRef(false)\n const sanitizedInitialItems = useMemo(() => sanitizeItems(items), [items])\n\n const [value, setValue] = useState<string>((defaultValue as string) || \"\")\n const [popoverItems, setPopoverItems] = useState(sanitizedInitialItems)\n // Allow to use the combobox without listening its changes\n const comboboxRef = useRef<ReturnType<\n typeof useCombobox<AutocompleteItem>\n > | null>(null)\n\n const collection = useMemo(\n () =>\n createListCollection({\n items: popoverItems.length\n ? popoverItems\n : sanitizeItems([{ value: ignoreItemValue }]), // having an empty collection makes the component buggy. Best practice is to always have an \"instruction\" item when empty. This dummy item will not be displayed\n }),\n [popoverItems],\n )\n\n const handleInputChange = (details: Combobox.InputValueChangeDetails) => {\n if (isInputValidChangedProgrammatically.current) {\n isInputValidChangedProgrammatically.current = false\n return\n }\n\n onQueryChange\n ? onQueryChange(details.inputValue)\n : setPopoverItems(\n sanitizedInitialItems.filter((item) =>\n item.label\n .toLowerCase()\n .includes(details.inputValue.toLowerCase()),\n ),\n )\n }\n\n useEffect(() => {\n setPopoverItems(sanitizeItems(items))\n }, [items])\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const combobox = useCombobox({\n ...(id ? { id } : {}),\n allowCustomValue: allowCustomValue,\n autoFocus: focusOnInit,\n value: [value],\n collection: collection,\n onInputValueChange: handleInputChange,\n openOnClick: minQueryLength === 0 && collection.items.length > 0,\n onValueChange: (details) => {\n isInputValidChangedProgrammatically.current = true\n details.items[0]\n ? setValue((details.items[0] as AutocompleteItem).value)\n : setValue(\"\")\n },\n onInteractOutside: () => {\n setTimeout(() => inputRef.current?.blur(), 30)\n },\n positioning: {\n gutter: -3,\n flip: false,\n },\n })\n\n useEffect(() => {\n comboboxRef.current = combobox\n }, [combobox])\n\n useImperativeHandle(ref, (): AutocompleteRefType => {\n return {\n query: combobox.inputValue,\n input: inputRef.current as HTMLInputElement,\n open: () => {\n combobox.setOpen(true)\n },\n focus: () => {\n combobox.focus()\n },\n clearValue: () => {\n combobox.clearValue()\n setValue(\"\")\n setDefaultInputValue(\"\")\n onClearValue?.()\n onQueryChange?.(\"\")\n },\n setSelectedItem: (selectedItem: AutocompleteItemInput) => {\n isInputValidChangedProgrammatically.current = true\n const sanitizedItem = sanitizeItem(selectedItem)\n const existingItem = popoverItems.find(\n (item) => item.value === sanitizedItem.value,\n )\n\n if (!existingItem) {\n combobox.setOpen(false)\n setPopoverItems([])\n setDefaultInputValue(sanitizedItem.value)\n setValue(sanitizedItem.value)\n setAutocompleteKey(!autocompleteKey)\n } else {\n setValue(sanitizedItem.value)\n combobox.setOpen(false)\n }\n },\n }\n }, [combobox, autocompleteKey, onClearValue, onQueryChange, popoverItems])\n\n useOnMountEffect(() => {\n focusOnInit && combobox.setOpen(collection.items.length > 0)\n })\n\n const validItems = useMemo(\n () => collection.items.filter((item) => item.value !== ignoreItemValue),\n [collection.items],\n )\n\n useEffect(() => {\n if (validItems.length) {\n if (!comboboxRef.current?.open && comboboxRef.current?.focused) {\n comboboxRef.current.setOpen(true)\n }\n } else {\n if (comboboxRef.current?.open) {\n comboboxRef.current.setOpen(false)\n }\n }\n }, [validItems])\n\n const autocomplete = (\n <Combobox.RootProvider\n value={combobox}\n className={cx(\"cobalt-Autocomplete\", className, {\n \"cobalt-Autocomplete--empty\": validItems.length === 0,\n })}\n key={`${autocompleteKey}`}\n >\n {label && (\n <Combobox.Label className=\"cobalt-FormField__Label\">\n {label}\n </Combobox.Label>\n )}\n <Combobox.Control\n className={cx(\"cobalt-TextField\", {\n \"cobalt-TextField--error\": status === \"error\",\n \"cobalt-TextField--success\": status === \"success\",\n \"cobalt-TextField--withIcon\": icon,\n \"cobalt-TextField--withValue\":\n inputRef.current && inputRef.current.value.length > 0,\n })}\n >\n <Combobox.Input\n className=\"cobalt-TextField__Input\"\n ref={inputRef}\n disabled={disabled}\n defaultValue={defaultInputValue}\n {...inputProps}\n onKeyDown={(e) => {\n onKeyDown?.(e)\n if (\n onSelectItem &&\n e.keyCode === KEY_CODE_ENTER &&\n combobox.highlightedItem\n ) {\n const processSelection = onSelectItem(\n combobox.highlightedItem as AutocompleteItem,\n combobox.inputValue,\n )\n\n if (!processSelection) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n }}\n />\n {icon && (\n <Icon\n source={icon}\n color=\"primary\"\n className=\"cobalt-TextField__Icon\"\n />\n )}\n {value.length > 0 && !disabled && (\n <Combobox.ClearTrigger\n className=\"cobalt-Autocomplete__clear-button\"\n data-testid=\"clear\"\n onClick={() => {\n setDefaultInputValue(\"\")\n setValue(\"\")\n setAutocompleteKey(!autocompleteKey)\n minQueryLength === 0 &&\n setTimeout(() => {\n inputRef.current?.click()\n }, 0)\n onClearValue?.()\n onQueryChange?.(\"\")\n }}\n >\n <Icon source=\"close\" size={16} />\n </Combobox.ClearTrigger>\n )}\n </Combobox.Control>\n <Portal>\n <Combobox.Positioner className=\"cobalt-Autocomplete__positioner\">\n <Combobox.Content\n className={cx(\"cobalt-Autocomplete__content\", popoverClassName, {\n \"cobalt-Autocomplete__content--empty\": validItems.length === 0,\n })}\n >\n {validItems.map((item: AutocompleteItem, index: number) => (\n <Combobox.Item\n key={`${item.label}-${item.value}-${index}`}\n item={item}\n className=\"cobalt-Autocomplete__item\"\n >\n {renderItem ? (\n <div\n {...getA11yOnClick((e) => {\n if (onSelectItem) {\n const processSelection = onSelectItem(\n item,\n combobox.inputValue,\n )\n\n if (!processSelection) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n })}\n >\n {renderItem(item, combobox.inputValue)}\n </div>\n ) : (\n <div\n className={cx(\"cobalt-Autocomplete__item-wrapper\", {\n \"cobalt-Autocomplete__item-wrapper--disabled\":\n item.disabled,\n })}\n >\n {icon && (\n <span className=\"cobalt-Autocomplete__item-icon\">\n <Icon source={icon} color=\"primary\" />\n </span>\n )}\n <Combobox.ItemText className=\"cobalt-Autocomplete__item-label\">\n {item.label}\n </Combobox.ItemText>\n <Combobox.ItemIndicator className=\"cobalt-Autocomplete_selected-item-indicator\">\n <CheckIcon size={16} />\n </Combobox.ItemIndicator>\n </div>\n )}\n </Combobox.Item>\n ))}\n </Combobox.Content>\n </Combobox.Positioner>\n </Portal>\n </Combobox.RootProvider>\n )\n\n return label || hint ? (\n <div\n className={cx(\"cobalt-FormField\", {\n \"cobalt-FormField--withHint\": hint,\n \"cobalt-FormField--fullWidth\": fullWidth,\n })}\n >\n {autocomplete}\n {hint && (\n <Hint status={status}>\n {/** biome-ignore lint/security/noDangerouslySetInnerHtml: Allow to pass content from the HAML template*/}\n <span dangerouslySetInnerHTML={{ __html: hint }} />\n </Hint>\n )}\n </div>\n ) : (\n autocomplete\n )\n },\n)\n\nAutocomplete.displayName = \"Autocomplete\"\n\nexport { Autocomplete }\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Form/Autocomplete/index.tsx"],"sourcesContent":["import {\n Combobox,\n createListCollection,\n Portal,\n useCombobox,\n} from \"@ark-ui/react\"\nimport cx from \"classnames\"\nimport { nanoid } from \"nanoid\"\nimport type React from \"react\"\nimport {\n Fragment,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { getA11yOnClick } from \"../../../helpers\"\nimport { useOnMountEffect } from \"../../../hooks/useOnMountEffect\"\nimport { CheckIcon, Icon, type IconSources } from \"../../Icon\"\nimport type { FormElement } from \"../form\"\nimport { Hint } from \"../Hint\"\n\ntype AutocompleteItemBaseKeys = \"icon\" | \"label\" | \"value\" | \"disabled\"\n\nexport type AutocompleteItemInput<T extends object = Record<string, unknown>> =\n | string\n | ({\n icon?: IconSources\n label?: string\n value: string\n disabled?: boolean\n } & Partial<Omit<T, AutocompleteItemBaseKeys>>)\n\ntype AutocompleteItemAllBaseKeys = AutocompleteItemBaseKeys | \"description\"\n\nexport type AutocompleteItem<T extends object = Record<string, unknown>> = {\n icon?: IconSources\n label: string\n value: string\n disabled?: boolean\n description?: string\n} & Omit<T, AutocompleteItemAllBaseKeys>\n\nexport type AutocompleteRefType<T extends object = Record<string, unknown>> = {\n query: string\n input: HTMLInputElement\n open: () => void\n focus: () => void\n clearValue: () => void\n setSelectedItem: (item: AutocompleteItemInput<T>) => void\n}\n\ntype Props<T extends object = Record<string, unknown>> = {\n className?: string\n label?: string\n hint?: string\n fullWidth?: boolean\n icon?: IconSources\n items: AutocompleteItemInput<T>[]\n popoverClassName?: string\n minQueryLength?: number\n autoFilter?: boolean\n focusOnInit?: boolean\n autocomplete?: boolean\n autocompleteRef?: React.RefObject<HTMLDivElement>\n onClearValue?: () => void\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void\n onQueryChange?: (term: string) => void\n onSelectItem?: (item: AutocompleteItem<T>, term: string) => boolean\n renderItem?: (item: AutocompleteItem<T>, term: string) => React.ReactNode\n allowCustomValue?: boolean\n} & FormElement &\n React.InputHTMLAttributes<HTMLInputElement>\n\nfunction sanitizeItem<T extends object = Record<string, unknown>>(\n item: AutocompleteItemInput<T>,\n): AutocompleteItem<T> {\n if (typeof item === \"string\") {\n // If the item is a string, create an object with label and value being the string\n return { label: item, value: item } as AutocompleteItem<T>\n } else {\n // If the item is an object, ensure it has a label property\n const { value, label } = item\n return { ...item, label: label ?? value } as AutocompleteItem<T>\n }\n}\n\nfunction sanitizeItems<T extends object = Record<string, unknown>>(\n items: AutocompleteItemInput<T>[],\n): AutocompleteItem<T>[] {\n return items.map((item) => sanitizeItem(item))\n}\n\nconst HIGHLIGHT_CLASSNAME = \"autocomplete_matching_query\"\nconst regExpEscape = (s: string) => s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\")\n\ntype AutocompleteMatchHighlightPropsType = {\n label: string\n query: string\n matchClassName?: string\n}\n\nexport const AutocompleteMatchHighlight = ({\n label,\n query,\n matchClassName = HIGHLIGHT_CLASSNAME,\n}: AutocompleteMatchHighlightPropsType) => {\n if (query.trim().length === 0) return label\n\n const queryRX = RegExp(`(${regExpEscape(query)})`, \"gi\")\n\n const parts = label.split(queryRX)\n\n return (\n <>\n {parts.map((part, index) => {\n const key = `${index}-${part}`\n return part.match(queryRX) ? (\n <span className={cx(matchClassName)} key={key}>\n {part}\n </span>\n ) : (\n <Fragment key={key}>{part}</Fragment>\n )\n })}\n </>\n )\n}\n\nconst KEY_CODE_ENTER = 13\n\nconst ignoreItemValue = nanoid()\n\nconst _Autocomplete = forwardRef(\n (\n {\n id,\n className,\n label,\n hint,\n fullWidth,\n icon,\n status,\n focusOnInit = false,\n popoverClassName,\n minQueryLength = 1,\n onQueryChange,\n onSelectItem,\n renderItem,\n items,\n onKeyDown,\n disabled,\n defaultValue,\n onClearValue,\n allowCustomValue = true,\n ...inputProps\n }: Props,\n ref,\n ) => {\n const [defaultInputValue, setDefaultInputValue] = useState(defaultValue)\n const [autocompleteKey, setAutocompleteKey] = useState(true)\n\n const isInputValidChangedProgrammatically = useRef(false)\n const sanitizedInitialItems = useMemo(() => sanitizeItems(items), [items])\n\n const [value, setValue] = useState<string>((defaultValue as string) || \"\")\n const [popoverItems, setPopoverItems] = useState(sanitizedInitialItems)\n // Allow to use the combobox without listening its changes\n const comboboxRef = useRef<ReturnType<\n typeof useCombobox<AutocompleteItem<object>>\n > | null>(null)\n\n const collection = useMemo(\n () =>\n createListCollection({\n items: popoverItems.length\n ? popoverItems\n : sanitizeItems([{ value: ignoreItemValue }]), // having an empty collection makes the component buggy. Best practice is to always have an \"instruction\" item when empty. This dummy item will not be displayed\n }),\n [popoverItems],\n )\n\n const handleInputChange = (details: Combobox.InputValueChangeDetails) => {\n if (isInputValidChangedProgrammatically.current) {\n isInputValidChangedProgrammatically.current = false\n return\n }\n\n onQueryChange\n ? onQueryChange(details.inputValue)\n : setPopoverItems(\n sanitizedInitialItems.filter((item) =>\n item.label\n .toLowerCase()\n .includes(details.inputValue.toLowerCase()),\n ),\n )\n }\n\n useEffect(() => {\n setPopoverItems(sanitizeItems(items))\n }, [items])\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const combobox = useCombobox({\n ...(id ? { id } : {}),\n allowCustomValue: allowCustomValue,\n autoFocus: focusOnInit,\n value: [value],\n collection: collection,\n onInputValueChange: handleInputChange,\n openOnClick: minQueryLength === 0 && collection.items.length > 0,\n onValueChange: (details) => {\n isInputValidChangedProgrammatically.current = true\n details.items[0] ? setValue(details.items[0].value) : setValue(\"\")\n },\n onInteractOutside: () => {\n setTimeout(() => inputRef.current?.blur(), 30)\n },\n positioning: {\n gutter: -3,\n flip: false,\n },\n })\n\n useEffect(() => {\n comboboxRef.current = combobox\n }, [combobox])\n\n useImperativeHandle(ref, (): AutocompleteRefType => {\n return {\n query: combobox.inputValue,\n input: inputRef.current as HTMLInputElement,\n open: () => {\n combobox.setOpen(true)\n },\n focus: () => {\n combobox.focus()\n },\n clearValue: () => {\n combobox.clearValue()\n setValue(\"\")\n setDefaultInputValue(\"\")\n onClearValue?.()\n onQueryChange?.(\"\")\n },\n setSelectedItem: (selectedItem: AutocompleteItemInput) => {\n isInputValidChangedProgrammatically.current = true\n const sanitizedItem = sanitizeItem(selectedItem)\n const existingItem = popoverItems.find(\n (item) => item.value === sanitizedItem.value,\n )\n\n if (!existingItem) {\n combobox.setOpen(false)\n setPopoverItems([])\n setDefaultInputValue(sanitizedItem.value)\n setValue(sanitizedItem.value)\n setAutocompleteKey(!autocompleteKey)\n } else {\n setValue(sanitizedItem.value)\n combobox.setOpen(false)\n }\n },\n }\n }, [combobox, autocompleteKey, onClearValue, onQueryChange, popoverItems])\n\n useOnMountEffect(() => {\n focusOnInit && combobox.setOpen(collection.items.length > 0)\n })\n\n const validItems = useMemo(\n () => collection.items.filter((item) => item.value !== ignoreItemValue),\n [collection.items],\n )\n\n useEffect(() => {\n if (validItems.length) {\n if (!comboboxRef.current?.open && comboboxRef.current?.focused) {\n comboboxRef.current.setOpen(true)\n }\n } else {\n if (comboboxRef.current?.open) {\n comboboxRef.current.setOpen(false)\n }\n }\n }, [validItems])\n\n const autocomplete = (\n <Combobox.RootProvider\n value={combobox}\n className={cx(\"cobalt-Autocomplete\", className, {\n \"cobalt-Autocomplete--empty\": validItems.length === 0,\n })}\n key={`${autocompleteKey}`}\n >\n {label && (\n <Combobox.Label className=\"cobalt-FormField__Label\">\n {label}\n </Combobox.Label>\n )}\n <Combobox.Control\n className={cx(\"cobalt-TextField\", {\n \"cobalt-TextField--error\": status === \"error\",\n \"cobalt-TextField--success\": status === \"success\",\n \"cobalt-TextField--withIcon\": icon,\n \"cobalt-TextField--withValue\":\n inputRef.current && inputRef.current.value.length > 0,\n })}\n >\n <Combobox.Input\n className=\"cobalt-TextField__Input\"\n ref={inputRef}\n disabled={disabled}\n defaultValue={defaultInputValue}\n {...inputProps}\n onKeyDown={(e) => {\n onKeyDown?.(e)\n if (\n onSelectItem &&\n e.keyCode === KEY_CODE_ENTER &&\n combobox.highlightedItem\n ) {\n const processSelection = onSelectItem(\n combobox.highlightedItem,\n combobox.inputValue,\n )\n\n if (!processSelection) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n }}\n />\n {icon && (\n <Icon\n source={icon}\n color=\"primary\"\n className=\"cobalt-TextField__Icon\"\n />\n )}\n {value.length > 0 && !disabled && (\n <Combobox.ClearTrigger\n className=\"cobalt-Autocomplete__clear-button\"\n data-testid=\"clear\"\n onClick={() => {\n setDefaultInputValue(\"\")\n setValue(\"\")\n setAutocompleteKey(!autocompleteKey)\n minQueryLength === 0 &&\n setTimeout(() => {\n inputRef.current?.click()\n }, 0)\n onClearValue?.()\n onQueryChange?.(\"\")\n }}\n >\n <Icon source=\"close\" size={16} />\n </Combobox.ClearTrigger>\n )}\n </Combobox.Control>\n <Portal>\n <Combobox.Positioner className=\"cobalt-Autocomplete__positioner\">\n <Combobox.Content\n className={cx(\"cobalt-Autocomplete__content\", popoverClassName, {\n \"cobalt-Autocomplete__content--empty\": validItems.length === 0,\n })}\n >\n {validItems.map((item, index) => (\n <Combobox.Item\n key={`${item.label}-${item.value}-${index}`}\n item={item}\n className=\"cobalt-Autocomplete__item\"\n >\n {renderItem ? (\n <div\n {...getA11yOnClick((e) => {\n if (onSelectItem) {\n const processSelection = onSelectItem(\n item,\n combobox.inputValue,\n )\n\n if (!processSelection) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n })}\n >\n {renderItem(item, combobox.inputValue)}\n </div>\n ) : (\n <div\n className={cx(\"cobalt-Autocomplete__item-wrapper\", {\n \"cobalt-Autocomplete__item-wrapper--disabled\":\n item.disabled,\n })}\n >\n {icon && (\n <span className=\"cobalt-Autocomplete__item-icon\">\n <Icon source={icon} color=\"primary\" />\n </span>\n )}\n <Combobox.ItemText className=\"cobalt-Autocomplete__item-label\">\n {item.label}\n </Combobox.ItemText>\n <Combobox.ItemIndicator className=\"cobalt-Autocomplete_selected-item-indicator\">\n <CheckIcon size={16} />\n </Combobox.ItemIndicator>\n </div>\n )}\n </Combobox.Item>\n ))}\n </Combobox.Content>\n </Combobox.Positioner>\n </Portal>\n </Combobox.RootProvider>\n )\n\n return label || hint ? (\n <div\n className={cx(\"cobalt-FormField\", {\n \"cobalt-FormField--withHint\": hint,\n \"cobalt-FormField--fullWidth\": fullWidth,\n })}\n >\n {autocomplete}\n {hint && (\n <Hint status={status}>\n {/** biome-ignore lint/security/noDangerouslySetInnerHtml: Allow to pass content from the HAML template*/}\n <span dangerouslySetInnerHTML={{ __html: hint }} />\n </Hint>\n )}\n </div>\n ) : (\n autocomplete\n )\n },\n)\n\n_Autocomplete.displayName = \"Autocomplete\"\n\nconst Autocomplete = _Autocomplete as <\n T extends object = Record<string, unknown>,\n>(\n props: Props<T> & React.RefAttributes<AutocompleteRefType<T>>,\n) => React.ReactElement | null\n\nexport { Autocomplete }\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drivy/cobalt",
|
|
3
|
-
"version": "2.16.
|
|
3
|
+
"version": "2.16.2",
|
|
4
4
|
"description": "Opinionated design system for Drivy's projects.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "types/src/index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"*.scss"
|
|
10
10
|
],
|
|
11
11
|
"engines": {
|
|
12
|
-
"node": ">=
|
|
12
|
+
"node": ">=24.14.1"
|
|
13
13
|
},
|
|
14
14
|
"module": "src/index.js",
|
|
15
15
|
"license": "MIT",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@types/jest": "29.5.14",
|
|
58
58
|
"@types/lodash.throttle": "4.1.9",
|
|
59
59
|
"@types/media-typer": "1.1.3",
|
|
60
|
-
"@types/node": "
|
|
60
|
+
"@types/node": "24.12.2",
|
|
61
61
|
"@types/react": "18.3.28",
|
|
62
62
|
"@types/react-dom": "18.3.7",
|
|
63
63
|
"autoprefixer": "10.4.27",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"storybook:build": "pnpm storybook:prepare && storybook build",
|
|
130
130
|
"build:icons": "./scripts/buildIcons.sh",
|
|
131
131
|
"build:illustrations": "./scripts/buildIllustrations.sh",
|
|
132
|
-
"build:theme": "node
|
|
132
|
+
"build:theme": "node ./scripts/buildThemeCSSVariables.mts",
|
|
133
133
|
"test": "jest",
|
|
134
134
|
"typecheck": "tsc",
|
|
135
135
|
"version": "cp package.json dist/package.json"
|
package/styles/core/text.scss
CHANGED
|
@@ -96,8 +96,8 @@
|
|
|
96
96
|
|
|
97
97
|
@mixin c-text-body-sm {
|
|
98
98
|
font-family: BlinkMacSystemFont,-apple-system,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',Helvetica,Arial,sans-serif;
|
|
99
|
-
font-size: 0.
|
|
100
|
-
line-height:
|
|
99
|
+
font-size: 0.875rem;
|
|
100
|
+
line-height: 1.25rem;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
@mixin c-text-section-heading {
|
|
@@ -1,42 +1,36 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import { type IconSources } from "../../Icon";
|
|
3
3
|
import type { FormElement } from "../form";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
type AutocompleteItemBaseKeys = "icon" | "label" | "value" | "disabled";
|
|
5
|
+
export type AutocompleteItemInput<T extends object = Record<string, unknown>> = string | ({
|
|
6
6
|
icon?: IconSources;
|
|
7
7
|
label?: string;
|
|
8
8
|
value: string;
|
|
9
9
|
disabled?: boolean;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
} & Partial<Omit<T, AutocompleteItemBaseKeys>>);
|
|
11
|
+
type AutocompleteItemAllBaseKeys = AutocompleteItemBaseKeys | "description";
|
|
12
|
+
export type AutocompleteItem<T extends object = Record<string, unknown>> = {
|
|
13
13
|
icon?: IconSources;
|
|
14
14
|
label: string;
|
|
15
15
|
value: string;
|
|
16
16
|
disabled?: boolean;
|
|
17
17
|
description?: string;
|
|
18
|
-
}
|
|
19
|
-
export type AutocompleteRefType = {
|
|
18
|
+
} & Omit<T, AutocompleteItemAllBaseKeys>;
|
|
19
|
+
export type AutocompleteRefType<T extends object = Record<string, unknown>> = {
|
|
20
20
|
query: string;
|
|
21
21
|
input: HTMLInputElement;
|
|
22
22
|
open: () => void;
|
|
23
23
|
focus: () => void;
|
|
24
24
|
clearValue: () => void;
|
|
25
|
-
setSelectedItem: (item: AutocompleteItemInput) => void;
|
|
26
|
-
};
|
|
27
|
-
type AutocompleteMatchHighlightPropsType = {
|
|
28
|
-
label: string;
|
|
29
|
-
query: string;
|
|
30
|
-
matchClassName?: string;
|
|
25
|
+
setSelectedItem: (item: AutocompleteItemInput<T>) => void;
|
|
31
26
|
};
|
|
32
|
-
|
|
33
|
-
declare const Autocomplete: React.ForwardRefExoticComponent<{
|
|
27
|
+
type Props<T extends object = Record<string, unknown>> = {
|
|
34
28
|
className?: string;
|
|
35
29
|
label?: string;
|
|
36
30
|
hint?: string;
|
|
37
31
|
fullWidth?: boolean;
|
|
38
32
|
icon?: IconSources;
|
|
39
|
-
items: AutocompleteItemInput[];
|
|
33
|
+
items: AutocompleteItemInput<T>[];
|
|
40
34
|
popoverClassName?: string;
|
|
41
35
|
minQueryLength?: number;
|
|
42
36
|
autoFilter?: boolean;
|
|
@@ -46,8 +40,15 @@ declare const Autocomplete: React.ForwardRefExoticComponent<{
|
|
|
46
40
|
onClearValue?: () => void;
|
|
47
41
|
onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;
|
|
48
42
|
onQueryChange?: (term: string) => void;
|
|
49
|
-
onSelectItem?: (item: AutocompleteItem
|
|
50
|
-
renderItem?: (item: AutocompleteItem
|
|
43
|
+
onSelectItem?: (item: AutocompleteItem<T>, term: string) => boolean;
|
|
44
|
+
renderItem?: (item: AutocompleteItem<T>, term: string) => React.ReactNode;
|
|
51
45
|
allowCustomValue?: boolean;
|
|
52
|
-
} & FormElement & React.InputHTMLAttributes<HTMLInputElement
|
|
46
|
+
} & FormElement & React.InputHTMLAttributes<HTMLInputElement>;
|
|
47
|
+
type AutocompleteMatchHighlightPropsType = {
|
|
48
|
+
label: string;
|
|
49
|
+
query: string;
|
|
50
|
+
matchClassName?: string;
|
|
51
|
+
};
|
|
52
|
+
export declare const AutocompleteMatchHighlight: ({ label, query, matchClassName, }: AutocompleteMatchHighlightPropsType) => string | import("react/jsx-runtime").JSX.Element;
|
|
53
|
+
declare const Autocomplete: <T extends object = Record<string, unknown>>(props: Props<T> & React.RefAttributes<AutocompleteRefType<T>>) => React.ReactElement | null;
|
|
53
54
|
export { Autocomplete };
|
package/types/src/index.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export { Chip } from "./components/Chip";
|
|
|
20
20
|
export { ContainedIcon } from "./components/ContainedIcon";
|
|
21
21
|
export { EmptyState } from "./components/EmptyState";
|
|
22
22
|
export { Flag } from "./components/Flag";
|
|
23
|
-
export { Autocomplete, AutocompleteItem } from "./components/Form/Autocomplete";
|
|
23
|
+
export { Autocomplete, type AutocompleteItem, type AutocompleteItemInput, type AutocompleteRefType, } from "./components/Form/Autocomplete";
|
|
24
24
|
export { CheckablePillsGroup, CheckboxPill, RadioPill, } from "./components/Form/CheckablePill";
|
|
25
25
|
export { Checkbox, ChoiceList, Radio } from "./components/Form/Checkmark";
|
|
26
26
|
export { ComposedField } from "./components/Form/ComposedField";
|
|
@@ -274,6 +274,11 @@ function requireGetCobaltTailwindcssConfig () {
|
|
|
274
274
|
lineHeight: rem(REM._24px),
|
|
275
275
|
},
|
|
276
276
|
"body-sm": {
|
|
277
|
+
fontFamily: theme("fontFamily").base,
|
|
278
|
+
fontSize: rem(REM._14px),
|
|
279
|
+
lineHeight: rem(REM._20px),
|
|
280
|
+
},
|
|
281
|
+
"body-xs": {
|
|
277
282
|
fontFamily: theme("fontFamily").base,
|
|
278
283
|
fontSize: rem(REM._12px),
|
|
279
284
|
lineHeight: rem(REM._16px),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCobaltTailwindcssConfig2.js","sources":["../../utils/getCobaltTailwindcssConfig.js"],"sourcesContent":["/*\n FOR NODE ENVIRONMENT ONLY\n Do never import tailwind file config (or helpers importing it) into Cobalt\n components/stories on src/ side, it will result to have tailwindcss unecessary\n dependencies into build files.\n See https://github.com/tailwindcss/tailwindcss/issues/634#issuecomment-459740859\n If you need data from the theme configuration, you can do the same as we did\n for colors:\n - create a json token file with the data needed (will be the single source of data)\n - In the tailwindcss config file: import and use this json file\n - In the src/ side: import and use this json file also\n*/\nconst defaultTheme = require(\"tailwindcss/defaultTheme\")\nconst breakpoints = require(\"../src/tokens/breakpoints.json\")\nconst zIndexes = require(\"../src/tokens/zIndexes.json\")\nconst { getColorsUsingCSSVariables } = require(\"./helpers\")\nconst generators = require(\"./tailwindcssGenerators\")\n\nconst CSS_VAR_STATE_INTERACTIVE_COLOR = \"--c-state-interactive-color\"\n\nconst rem = (value) => `${value}rem`\n\nconst REM = {\n _12px: 0.75,\n _14px: 0.875,\n _15px: 0.9375,\n _16px: 1,\n _18px: 1.125,\n _20px: 1.25,\n _24px: 1.5,\n _28px: 1.75,\n _32px: 2,\n _36px: 2.25,\n _40px: 2.5,\n _44px: 2.75,\n _56px: 3.5,\n _60px: 3.75,\n _64px: 4,\n}\n\nconst { themeColors, stateColors } = getColorsUsingCSSVariables({\n additionalColors: { transparent: \"transparent\", current: \"currentColor\" },\n})\n\nconst baseFont =\n \"BlinkMacSystemFont,-apple-system,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',Helvetica,Arial,sans-serif\"\n\nconst getCobaltTailwindcssConfig = ({ content, safelist = undefined }) => ({\n content,\n safelist: safelist,\n prefix: \"c-\",\n // utilities to disable\n corePlugins: {\n // Don't use Tailwindcss reset and default styles\n preflight: false,\n // Handle by custom classes via generators\n letterSpacing: false,\n lineHeight: false,\n borderStyle: false,\n borderWidth: false,\n fontSize: false,\n // Not needed, at least for now\n textOpacity: false,\n backgroundOpacity: false,\n caretColor: false,\n boxShadowColor: false,\n ringOffsetColor: false,\n gradientColorStops: false,\n gradientColorStopPositions: false,\n textDecorationColor: false,\n },\n theme: {\n extend: {\n transitionProperty: {\n interactive: `${CSS_VAR_STATE_INTERACTIVE_COLOR}`,\n DEFAULT: `${CSS_VAR_STATE_INTERACTIVE_COLOR}, ${defaultTheme.transitionProperty.DEFAULT}`,\n colors: `${CSS_VAR_STATE_INTERACTIVE_COLOR}, ${defaultTheme.transitionProperty.colors}`,\n },\n },\n colors: themeColors,\n semanticStateColor: {\n interactive: {\n DEFAULT: themeColors.transparent,\n hover: stateColors.hover,\n press: stateColors.press,\n },\n onDrag: stateColors.drag,\n none: {\n DEFAULT: themeColors.transparent,\n hover: themeColors.transparent,\n press: themeColors.transparent,\n },\n },\n borderStyle: {\n solid: \"solid\",\n dashed: \"dashed\",\n none: \"none\",\n },\n borderWidth: {\n 0: \"0\",\n \"0_5\": \"0.5px\",\n DEFAULT: \"1px\",\n 2: \"0.125rem\",\n 4: \".25rem\",\n },\n borderRadius: {\n none: \"0\",\n DEFAULT: \".25rem\", // c-rounded\n md: \".375rem\",\n lg: \".5rem\",\n xl: \".75rem\",\n \"2xl\": \"1rem\",\n full: \"9999px\", // full rounded\n },\n boxShadow: {\n DEFAULT: \"0 0.125rem 0.75rem rgba(0, 0, 0, 0.1)\", // c-shadow\n md: \"0 0.25rem 1.5rem rgba(0, 0, 0, 0.15)\",\n lg: \"0 0.375rem 2.25rem rgba(0, 0, 0, 0.2)\",\n },\n fontFamily: {\n base: baseFont,\n brand: `BrownPro,${baseFont}`,\n mono: \"Consolas,'Liberation Mono',Menlo,Courier,monospace\",\n },\n fontWeight: {\n regular: \"400\",\n bold: \"600\",\n },\n spacing: {\n none: \"0\",\n \"2xs\": \".25rem\",\n xs: \".5rem\",\n sm: \"1rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n xl: \"3rem\",\n \"2xl\": \"4rem\",\n },\n screens: { ...breakpoints },\n zIndex: Object.fromEntries(\n Object.entries(zIndexes).map(([key, value]) => [key, value.toString()]),\n ),\n // custom properties, not processed by Tailwindcss itself\n customText: ({ theme }) => ({\n link: {\n cursor: \"pointer\",\n textDecoration: \"underline\",\n fontWeight: 500,\n textUnderlineOffset: \"2px\",\n hover: {\n textDecoration: \"none\",\n },\n focus: {\n textDecoration: \"none\",\n },\n },\n linkVariant: {\n cursor: \"pointer\",\n textDecoration: \"none\",\n fontWeight: 500,\n textUnderlineOffset: \"2px\",\n hover: {\n textDecoration: \"underline\",\n },\n focus: {\n textDecoration: \"underline\",\n },\n },\n heading: {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._36px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: \"-0.5px\",\n from: {\n sm: {\n fontSize: rem(REM._56px),\n },\n },\n },\n subheading: {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._20px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: \"-0.5px\",\n from: {\n sm: {\n fontSize: rem(REM._28px),\n },\n },\n },\n \"title-xl\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._32px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: rem((-2 / 100) * REM._32px),\n from: {\n sm: {\n fontSize: rem(REM._40px),\n letterSpacing: rem((-2 / 100) * REM._40px),\n },\n },\n },\n \"title-lg\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._24px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: rem((-2 / 100) * REM._24px),\n from: {\n sm: {\n fontSize: rem(REM._32px),\n letterSpacing: rem((-2 / 100) * REM._32px),\n },\n },\n },\n \"title-md\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._20px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: rem((-2 / 100) * REM._20px),\n from: {\n sm: {\n fontSize: rem(REM._24px),\n letterSpacing: rem((-2 / 100) * REM._24px),\n },\n },\n },\n \"title-sm\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._16px),\n lineHeight: \"125%\",\n fontWeight: 600,\n letterSpacing: rem((-2 / 100) * REM._16px),\n from: {\n sm: {\n fontSize: rem(REM._18px),\n letterSpacing: rem((-2 / 100) * REM._18px),\n },\n },\n },\n \"title-xs\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._16px),\n lineHeight: \"125%\",\n fontWeight: 600,\n letterSpacing: rem((-2 / 100) * REM._16px),\n },\n //\n \"body-lg\": {\n fontFamily: theme(\"fontFamily\").base,\n fontSize: rem(REM._18px),\n lineHeight: rem(REM._24px),\n },\n \"body-md\": {\n fontFamily: theme(\"fontFamily\").base,\n fontSize: rem(REM._16px),\n lineHeight: rem(REM._24px),\n },\n \"body-sm\": {\n fontFamily: theme(\"fontFamily\").base,\n fontSize: rem(REM._12px),\n lineHeight: rem(REM._16px),\n },\n \"section-heading\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._14px),\n lineHeight: \"175%\",\n fontWeight: 700,\n textTransform: \"uppercase\",\n letterSpacing: \"-0.2px\",\n color: themeColors.onSurfaceVariant,\n },\n }),\n },\n plugins: [\n // custom typography classes\n generators.text,\n // custom border width classes (width default solid style)\n generators.borderWidth,\n // custom border style classes, must be after border width plugin\n generators.borderStyle,\n // Semantic colors (handling hover/press color states)\n generators.getSemanticColorGenerator({\n type: \"semanticStateColor\",\n classPrefix: \"state\",\n cssProperty: CSS_VAR_STATE_INTERACTIVE_COLOR,\n additionalRules: {\n interactive: {\n \"background-image\": `linear-gradient(var(${CSS_VAR_STATE_INTERACTIVE_COLOR}), var(${CSS_VAR_STATE_INTERACTIVE_COLOR}))`,\n },\n },\n }),\n // custom background color with gradient\n generators.getBackgroundBusinessGradientGenerator({ themeColors }),\n ],\n})\n\nmodule.exports = getCobaltTailwindcssConfig\n"],"names":["require$$3","require$$4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getCobaltTailwindcssConfig2.js","sources":["../../utils/getCobaltTailwindcssConfig.js"],"sourcesContent":["/*\n FOR NODE ENVIRONMENT ONLY\n Do never import tailwind file config (or helpers importing it) into Cobalt\n components/stories on src/ side, it will result to have tailwindcss unecessary\n dependencies into build files.\n See https://github.com/tailwindcss/tailwindcss/issues/634#issuecomment-459740859\n If you need data from the theme configuration, you can do the same as we did\n for colors:\n - create a json token file with the data needed (will be the single source of data)\n - In the tailwindcss config file: import and use this json file\n - In the src/ side: import and use this json file also\n*/\nconst defaultTheme = require(\"tailwindcss/defaultTheme\")\nconst breakpoints = require(\"../src/tokens/breakpoints.json\")\nconst zIndexes = require(\"../src/tokens/zIndexes.json\")\nconst { getColorsUsingCSSVariables } = require(\"./helpers\")\nconst generators = require(\"./tailwindcssGenerators\")\n\nconst CSS_VAR_STATE_INTERACTIVE_COLOR = \"--c-state-interactive-color\"\n\nconst rem = (value) => `${value}rem`\n\nconst REM = {\n _12px: 0.75,\n _14px: 0.875,\n _15px: 0.9375,\n _16px: 1,\n _18px: 1.125,\n _20px: 1.25,\n _24px: 1.5,\n _28px: 1.75,\n _32px: 2,\n _36px: 2.25,\n _40px: 2.5,\n _44px: 2.75,\n _56px: 3.5,\n _60px: 3.75,\n _64px: 4,\n}\n\nconst { themeColors, stateColors } = getColorsUsingCSSVariables({\n additionalColors: { transparent: \"transparent\", current: \"currentColor\" },\n})\n\nconst baseFont =\n \"BlinkMacSystemFont,-apple-system,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',Helvetica,Arial,sans-serif\"\n\nconst getCobaltTailwindcssConfig = ({ content, safelist = undefined }) => ({\n content,\n safelist: safelist,\n prefix: \"c-\",\n // utilities to disable\n corePlugins: {\n // Don't use Tailwindcss reset and default styles\n preflight: false,\n // Handle by custom classes via generators\n letterSpacing: false,\n lineHeight: false,\n borderStyle: false,\n borderWidth: false,\n fontSize: false,\n // Not needed, at least for now\n textOpacity: false,\n backgroundOpacity: false,\n caretColor: false,\n boxShadowColor: false,\n ringOffsetColor: false,\n gradientColorStops: false,\n gradientColorStopPositions: false,\n textDecorationColor: false,\n },\n theme: {\n extend: {\n transitionProperty: {\n interactive: `${CSS_VAR_STATE_INTERACTIVE_COLOR}`,\n DEFAULT: `${CSS_VAR_STATE_INTERACTIVE_COLOR}, ${defaultTheme.transitionProperty.DEFAULT}`,\n colors: `${CSS_VAR_STATE_INTERACTIVE_COLOR}, ${defaultTheme.transitionProperty.colors}`,\n },\n },\n colors: themeColors,\n semanticStateColor: {\n interactive: {\n DEFAULT: themeColors.transparent,\n hover: stateColors.hover,\n press: stateColors.press,\n },\n onDrag: stateColors.drag,\n none: {\n DEFAULT: themeColors.transparent,\n hover: themeColors.transparent,\n press: themeColors.transparent,\n },\n },\n borderStyle: {\n solid: \"solid\",\n dashed: \"dashed\",\n none: \"none\",\n },\n borderWidth: {\n 0: \"0\",\n \"0_5\": \"0.5px\",\n DEFAULT: \"1px\",\n 2: \"0.125rem\",\n 4: \".25rem\",\n },\n borderRadius: {\n none: \"0\",\n DEFAULT: \".25rem\", // c-rounded\n md: \".375rem\",\n lg: \".5rem\",\n xl: \".75rem\",\n \"2xl\": \"1rem\",\n full: \"9999px\", // full rounded\n },\n boxShadow: {\n DEFAULT: \"0 0.125rem 0.75rem rgba(0, 0, 0, 0.1)\", // c-shadow\n md: \"0 0.25rem 1.5rem rgba(0, 0, 0, 0.15)\",\n lg: \"0 0.375rem 2.25rem rgba(0, 0, 0, 0.2)\",\n },\n fontFamily: {\n base: baseFont,\n brand: `BrownPro,${baseFont}`,\n mono: \"Consolas,'Liberation Mono',Menlo,Courier,monospace\",\n },\n fontWeight: {\n regular: \"400\",\n bold: \"600\",\n },\n spacing: {\n none: \"0\",\n \"2xs\": \".25rem\",\n xs: \".5rem\",\n sm: \"1rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n xl: \"3rem\",\n \"2xl\": \"4rem\",\n },\n screens: { ...breakpoints },\n zIndex: Object.fromEntries(\n Object.entries(zIndexes).map(([key, value]) => [key, value.toString()]),\n ),\n // custom properties, not processed by Tailwindcss itself\n customText: ({ theme }) => ({\n link: {\n cursor: \"pointer\",\n textDecoration: \"underline\",\n fontWeight: 500,\n textUnderlineOffset: \"2px\",\n hover: {\n textDecoration: \"none\",\n },\n focus: {\n textDecoration: \"none\",\n },\n },\n linkVariant: {\n cursor: \"pointer\",\n textDecoration: \"none\",\n fontWeight: 500,\n textUnderlineOffset: \"2px\",\n hover: {\n textDecoration: \"underline\",\n },\n focus: {\n textDecoration: \"underline\",\n },\n },\n heading: {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._36px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: \"-0.5px\",\n from: {\n sm: {\n fontSize: rem(REM._56px),\n },\n },\n },\n subheading: {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._20px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: \"-0.5px\",\n from: {\n sm: {\n fontSize: rem(REM._28px),\n },\n },\n },\n \"title-xl\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._32px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: rem((-2 / 100) * REM._32px),\n from: {\n sm: {\n fontSize: rem(REM._40px),\n letterSpacing: rem((-2 / 100) * REM._40px),\n },\n },\n },\n \"title-lg\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._24px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: rem((-2 / 100) * REM._24px),\n from: {\n sm: {\n fontSize: rem(REM._32px),\n letterSpacing: rem((-2 / 100) * REM._32px),\n },\n },\n },\n \"title-md\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._20px),\n lineHeight: \"125%\",\n fontWeight: 700,\n letterSpacing: rem((-2 / 100) * REM._20px),\n from: {\n sm: {\n fontSize: rem(REM._24px),\n letterSpacing: rem((-2 / 100) * REM._24px),\n },\n },\n },\n \"title-sm\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._16px),\n lineHeight: \"125%\",\n fontWeight: 600,\n letterSpacing: rem((-2 / 100) * REM._16px),\n from: {\n sm: {\n fontSize: rem(REM._18px),\n letterSpacing: rem((-2 / 100) * REM._18px),\n },\n },\n },\n \"title-xs\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._16px),\n lineHeight: \"125%\",\n fontWeight: 600,\n letterSpacing: rem((-2 / 100) * REM._16px),\n },\n //\n \"body-lg\": {\n fontFamily: theme(\"fontFamily\").base,\n fontSize: rem(REM._18px),\n lineHeight: rem(REM._24px),\n },\n \"body-md\": {\n fontFamily: theme(\"fontFamily\").base,\n fontSize: rem(REM._16px),\n lineHeight: rem(REM._24px),\n },\n \"body-sm\": {\n fontFamily: theme(\"fontFamily\").base,\n fontSize: rem(REM._14px),\n lineHeight: rem(REM._20px),\n },\n \"body-xs\": {\n fontFamily: theme(\"fontFamily\").base,\n fontSize: rem(REM._12px),\n lineHeight: rem(REM._16px),\n },\n \"section-heading\": {\n fontFamily: theme(\"fontFamily\").brand,\n fontSize: rem(REM._14px),\n lineHeight: \"175%\",\n fontWeight: 700,\n textTransform: \"uppercase\",\n letterSpacing: \"-0.2px\",\n color: themeColors.onSurfaceVariant,\n },\n }),\n },\n plugins: [\n // custom typography classes\n generators.text,\n // custom border width classes (width default solid style)\n generators.borderWidth,\n // custom border style classes, must be after border width plugin\n generators.borderStyle,\n // Semantic colors (handling hover/press color states)\n generators.getSemanticColorGenerator({\n type: \"semanticStateColor\",\n classPrefix: \"state\",\n cssProperty: CSS_VAR_STATE_INTERACTIVE_COLOR,\n additionalRules: {\n interactive: {\n \"background-image\": `linear-gradient(var(${CSS_VAR_STATE_INTERACTIVE_COLOR}), var(${CSS_VAR_STATE_INTERACTIVE_COLOR}))`,\n },\n },\n }),\n // custom background color with gradient\n generators.getBackgroundBusinessGradientGenerator({ themeColors }),\n ],\n})\n\nmodule.exports = getCobaltTailwindcssConfig\n"],"names":["require$$3","require$$4"],"mappings":"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"}
|