@revikornmann/muka-ui 0.7.0 → 0.9.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/build/manifest.json +4 -1
- package/dist/cjs/components/Alert/Alert.css +7 -0
- package/dist/cjs/components/Button/Button.css +29 -0
- package/dist/cjs/components/Button/Button.js +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js +44 -5
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/DataPieChart/DataPieChart.css +29 -0
- package/dist/cjs/components/DataPieChart/DataPieChart.js +20 -3
- package/dist/cjs/components/DataPieChart/DataPieChart.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.js +51 -6
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.js +64 -7
- package/dist/cjs/components/Dialog/Dialog.js.map +1 -1
- package/dist/cjs/components/Form/Form.css +17 -0
- package/dist/cjs/components/Form/Form.js +31 -0
- package/dist/cjs/components/Form/Form.js.map +1 -0
- package/dist/cjs/components/Form/index.js +13 -0
- package/dist/cjs/components/Form/index.js.map +1 -0
- package/dist/cjs/components/Form/useForm.js +95 -0
- package/dist/cjs/components/Form/useForm.js.map +1 -0
- package/dist/cjs/components/Input/Input.js +52 -5
- package/dist/cjs/components/Input/Input.js.map +1 -1
- package/dist/cjs/components/LicensePlateInput/LicensePlateInput.js +50 -5
- package/dist/cjs/components/LicensePlateInput/LicensePlateInput.js.map +1 -1
- package/dist/cjs/components/NumberInput/NumberInput.js +51 -6
- package/dist/cjs/components/NumberInput/NumberInput.js.map +1 -1
- package/dist/cjs/components/PhotoUploader/PhotoUploader.css +125 -0
- package/dist/cjs/components/PhotoUploader/PhotoUploader.js +257 -0
- package/dist/cjs/components/PhotoUploader/PhotoUploader.js.map +1 -0
- package/dist/cjs/components/PhotoUploader/index.js +6 -0
- package/dist/cjs/components/PhotoUploader/index.js.map +1 -0
- package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.css +32 -2
- package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js +13 -2
- package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
- package/dist/cjs/components/Radio/Radio.js +37 -5
- package/dist/cjs/components/Radio/Radio.js.map +1 -1
- package/dist/cjs/components/RangeSlider/RangeSlider.js +37 -5
- package/dist/cjs/components/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +53 -7
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js +43 -5
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/Thumbnail/Thumbnail.css +171 -0
- package/dist/cjs/components/Thumbnail/Thumbnail.js +55 -0
- package/dist/cjs/components/Thumbnail/Thumbnail.js.map +1 -0
- package/dist/cjs/components/Thumbnail/index.js +6 -0
- package/dist/cjs/components/Thumbnail/index.js.map +1 -0
- package/dist/cjs/components/Toggle/Toggle.js +37 -5
- package/dist/cjs/components/Toggle/Toggle.js.map +1 -1
- package/dist/cjs/components/index.js +10 -3
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/esm/components/Alert/Alert.css +7 -0
- package/dist/esm/components/Button/Button.css +29 -0
- package/dist/esm/components/Button/Button.js +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +11 -4
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/DataPieChart/DataPieChart.css +29 -0
- package/dist/esm/components/DataPieChart/DataPieChart.js +20 -3
- package/dist/esm/components/DataPieChart/DataPieChart.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +18 -5
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +31 -7
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Form/Form.css +17 -0
- package/dist/esm/components/Form/Form.js +27 -0
- package/dist/esm/components/Form/Form.js.map +1 -0
- package/dist/esm/components/Form/index.js +4 -0
- package/dist/esm/components/Form/index.js.map +1 -0
- package/dist/esm/components/Form/useForm.js +92 -0
- package/dist/esm/components/Form/useForm.js.map +1 -0
- package/dist/esm/components/Input/Input.js +19 -4
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/LicensePlateInput/LicensePlateInput.js +17 -4
- package/dist/esm/components/LicensePlateInput/LicensePlateInput.js.map +1 -1
- package/dist/esm/components/NumberInput/NumberInput.js +18 -5
- package/dist/esm/components/NumberInput/NumberInput.js.map +1 -1
- package/dist/esm/components/PhotoUploader/PhotoUploader.css +125 -0
- package/dist/esm/components/PhotoUploader/PhotoUploader.js +254 -0
- package/dist/esm/components/PhotoUploader/PhotoUploader.js.map +1 -0
- package/dist/esm/components/PhotoUploader/index.js +2 -0
- package/dist/esm/components/PhotoUploader/index.js.map +1 -0
- package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.css +32 -2
- package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js +13 -2
- package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
- package/dist/esm/components/Radio/Radio.js +4 -4
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/RangeSlider/RangeSlider.js +4 -4
- package/dist/esm/components/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/esm/components/Select/Select.js +18 -5
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Textarea/Textarea.js +10 -4
- package/dist/esm/components/Textarea/Textarea.js.map +1 -1
- package/dist/esm/components/Thumbnail/Thumbnail.css +171 -0
- package/dist/esm/components/Thumbnail/Thumbnail.js +52 -0
- package/dist/esm/components/Thumbnail/Thumbnail.js.map +1 -0
- package/dist/esm/components/Thumbnail/index.js +2 -0
- package/dist/esm/components/Thumbnail/index.js.map +1 -0
- package/dist/esm/components/Toggle/Toggle.js +4 -4
- package/dist/esm/components/Toggle/Toggle.js.map +1 -1
- package/dist/esm/components/index.js +3 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/styles/components/Alert.css +7 -0
- package/dist/styles/components/Button.css +29 -0
- package/dist/styles/components/DataPieChart.css +29 -0
- package/dist/styles/components/Form.css +17 -0
- package/dist/styles/components/PhotoUploader.css +125 -0
- package/dist/styles/components/ProgressAccordeon.css +32 -2
- package/dist/styles/components/Thumbnail.css +171 -0
- package/dist/styles/index.css +2554 -2099
- package/dist/styles/muka-dark.css +2554 -2099
- package/dist/styles/muka-light.css +2554 -2099
- package/dist/styles/tokens-bouwplan-dark.css +38 -0
- package/dist/styles/tokens-bouwplan-light.css +38 -0
- package/dist/styles/tokens-fscl-dark.css +38 -0
- package/dist/styles/tokens-fscl-light.css +38 -0
- package/dist/styles/tokens-grip-dark.css +38 -0
- package/dist/styles/tokens-grip-light.css +38 -0
- package/dist/styles/tokens-muka-dark.css +38 -0
- package/dist/styles/tokens-muka-light.css +38 -0
- package/dist/styles/tokens-wireframe-dark.css +80 -42
- package/dist/styles/tokens-wireframe-light.css +80 -42
- package/dist/styles/wireframe-dark.css +2596 -2141
- package/dist/styles/wireframe-light.css +2596 -2141
- package/dist/types/components/Button/Button.d.ts +2 -2
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/types/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/types/components/DataPieChart/DataPieChart.d.ts +7 -0
- package/dist/types/components/DataPieChart/DataPieChart.d.ts.map +1 -1
- package/dist/types/components/DatePicker/DatePicker.d.ts +5 -1
- package/dist/types/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/types/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/components/FileUpload/FileUpload.d.ts +1 -1
- package/dist/types/components/FileUpload/FileUpload.d.ts.map +1 -1
- package/dist/types/components/FileUpload/FileUploadItem.d.ts +1 -1
- package/dist/types/components/FileUpload/FileUploadItem.d.ts.map +1 -1
- package/dist/types/components/Form/Form.d.ts +34 -0
- package/dist/types/components/Form/Form.d.ts.map +1 -0
- package/dist/types/components/Form/index.d.ts +4 -0
- package/dist/types/components/Form/index.d.ts.map +1 -0
- package/dist/types/components/Form/useForm.d.ts +74 -0
- package/dist/types/components/Form/useForm.d.ts.map +1 -0
- package/dist/types/components/Input/Input.d.ts +5 -1
- package/dist/types/components/Input/Input.d.ts.map +1 -1
- package/dist/types/components/LicensePlateInput/LicensePlateInput.d.ts +5 -1
- package/dist/types/components/LicensePlateInput/LicensePlateInput.d.ts.map +1 -1
- package/dist/types/components/NumberInput/NumberInput.d.ts +5 -1
- package/dist/types/components/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/types/components/PhotoUploader/PhotoUploader.d.ts +71 -0
- package/dist/types/components/PhotoUploader/PhotoUploader.d.ts.map +1 -0
- package/dist/types/components/PhotoUploader/index.d.ts +2 -0
- package/dist/types/components/PhotoUploader/index.d.ts.map +1 -0
- package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts.map +1 -1
- package/dist/types/components/Radio/Radio.d.ts +1 -1
- package/dist/types/components/Radio/Radio.d.ts.map +1 -1
- package/dist/types/components/RangeSlider/RangeSlider.d.ts +1 -1
- package/dist/types/components/RangeSlider/RangeSlider.d.ts.map +1 -1
- package/dist/types/components/Select/Select.d.ts +7 -1
- package/dist/types/components/Select/Select.d.ts.map +1 -1
- package/dist/types/components/Textarea/Textarea.d.ts +5 -1
- package/dist/types/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/types/components/Thumbnail/Thumbnail.d.ts +77 -0
- package/dist/types/components/Thumbnail/Thumbnail.d.ts.map +1 -0
- package/dist/types/components/Thumbnail/index.d.ts +2 -0
- package/dist/types/components/Thumbnail/index.d.ts.map +1 -0
- package/dist/types/components/Toggle/Toggle.d.ts +1 -1
- package/dist/types/components/Toggle/Toggle.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +3 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/tokens/t2-alias/brand/wireframe/radius.json +34 -0
- package/tokens/t4-components/button.json +56 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useId } from 'react';
|
|
3
|
+
import React, { useId } from 'react';
|
|
4
4
|
import './Radio.css';
|
|
5
5
|
/**
|
|
6
6
|
* Radio Component
|
|
@@ -17,7 +17,7 @@ import './Radio.css';
|
|
|
17
17
|
* - radio.dot.size.{size}
|
|
18
18
|
* - radio.color.{state}.{background|border|dot}
|
|
19
19
|
*/
|
|
20
|
-
export const Radio = ({ checked, defaultChecked, onChange, label, disabled = false, name, value, size = 'md', className = '', id, ...props })
|
|
20
|
+
export const Radio = React.forwardRef(function Radio({ checked, defaultChecked, onChange, label, disabled = false, name, value, size = 'md', className = '', id, ...props }, forwardedRef) {
|
|
21
21
|
const generatedId = useId();
|
|
22
22
|
const inputId = id || generatedId;
|
|
23
23
|
const wrapperClasses = [
|
|
@@ -26,7 +26,7 @@ export const Radio = ({ checked, defaultChecked, onChange, label, disabled = fal
|
|
|
26
26
|
disabled && 'muka-radio--disabled',
|
|
27
27
|
className
|
|
28
28
|
].filter(Boolean).join(' ');
|
|
29
|
-
return (_jsxs("label", { className: wrapperClasses, htmlFor: inputId, children: [_jsxs("span", { className: "muka-radio__control", children: [_jsx("input", { type: "radio", id: inputId, className: "muka-radio__input", checked: checked, defaultChecked: defaultChecked, onChange: onChange, disabled: disabled, name: name, value: value, ...props }), _jsx("span", { className: "muka-radio__indicator", children: _jsx("span", { className: "muka-radio__dot" }) })] }), label && _jsx("span", { className: "muka-radio__label", children: label })] }));
|
|
30
|
-
};
|
|
29
|
+
return (_jsxs("label", { className: wrapperClasses, htmlFor: inputId, children: [_jsxs("span", { className: "muka-radio__control", children: [_jsx("input", { ref: forwardedRef, type: "radio", id: inputId, className: "muka-radio__input", checked: checked, defaultChecked: defaultChecked, onChange: onChange, disabled: disabled, name: name, value: value, ...props }), _jsx("span", { className: "muka-radio__indicator", children: _jsx("span", { className: "muka-radio__dot" }) })] }), label && _jsx("span", { className: "muka-radio__label", children: label })] }));
|
|
30
|
+
});
|
|
31
31
|
export default Radio;
|
|
32
32
|
//# sourceMappingURL=Radio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../../components/Radio/Radio.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,
|
|
1
|
+
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../../components/Radio/Radio.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,aAAa,CAAC;AAkCrB;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAA+B,SAAS,KAAK,CAChF,EACE,OAAO,EACP,cAAc,EACd,QAAQ,EACR,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,KAAK,EACL,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,EAAE,EACd,EAAE,EACF,GAAG,KAAK,EACT,EACD,YAAY;IAEZ,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,EAAE,IAAI,WAAW,CAAC;IAElC,MAAM,cAAc,GAAG;QACrB,YAAY;QACZ,eAAe,IAAI,EAAE;QACrB,QAAQ,IAAI,sBAAsB;QAClC,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,iBAAO,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,aAChD,gBAAM,SAAS,EAAC,qBAAqB,aACnC,gBACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,OAAO,EACZ,EAAE,EAAE,OAAO,EACX,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,KACR,KAAK,GACT,EACF,eAAM,SAAS,EAAC,uBAAuB,YACrC,eAAM,SAAS,EAAC,iBAAiB,GAAG,GAC/B,IACF,EACN,KAAK,IAAI,eAAM,SAAS,EAAC,mBAAmB,YAAE,KAAK,GAAQ,IACtD,CACT,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,KAAK,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useId } from 'react';
|
|
3
|
+
import React, { useId } from 'react';
|
|
4
4
|
import { Icon } from '../Icon';
|
|
5
5
|
import './RangeSlider.css';
|
|
6
6
|
/**
|
|
@@ -19,7 +19,7 @@ import './RangeSlider.css';
|
|
|
19
19
|
* - Wraps a native <input type="range">, so keyboard and screen-reader support
|
|
20
20
|
* come for free. Provide a visible `label` or an `aria-label`.
|
|
21
21
|
*/
|
|
22
|
-
export const RangeSlider = ({ value, onChange, min, max, step = 1, label, tooltip, optional = false, showValue = true, formatValue, helperText, size = 'md', disabled = false, id, className = '', 'aria-label': ariaLabel, })
|
|
22
|
+
export const RangeSlider = React.forwardRef(function RangeSlider({ value, onChange, min, max, step = 1, label, tooltip, optional = false, showValue = true, formatValue, helperText, size = 'md', disabled = false, id, className = '', 'aria-label': ariaLabel, }, forwardedRef) {
|
|
23
23
|
const generatedId = useId();
|
|
24
24
|
const inputId = id ?? generatedId;
|
|
25
25
|
const helperId = helperText ? `${inputId}-helper` : undefined;
|
|
@@ -35,7 +35,7 @@ export const RangeSlider = ({ value, onChange, min, max, step = 1, label, toolti
|
|
|
35
35
|
disabled ? 'muka-range-slider--disabled' : '',
|
|
36
36
|
className,
|
|
37
37
|
].filter(Boolean).join(' ');
|
|
38
|
-
return (_jsxs("div", { className: rootClasses, children: [showHeader && (_jsxs("div", { className: "muka-range-slider__header", children: [_jsxs("span", { className: "muka-range-slider__label-group", children: [label && (_jsx("label", { htmlFor: inputId, className: "muka-range-slider__label", children: label })), tooltip && (_jsx(Icon, { name: "information", variant: "line", size: "sm", colorVariant: "subtle", label: tooltip, className: "muka-range-slider__info" })), optional && (_jsx("span", { className: "muka-range-slider__optional", children: "Optional" }))] }), showValue && (_jsx("span", { className: "muka-range-slider__value", children: formatValue ? formatValue(value) : value }))] })), _jsx("div", { className: "muka-range-slider__bar", children: _jsx("input", { id: inputId, type: "range", className: "muka-range-slider__input", value: value, min: min, max: max, step: step, disabled: disabled, "aria-label": label ? undefined : ariaLabel, "aria-describedby": helperId, style: { ['--muka-range-fill']: `${fillPct}%` }, onChange: (e) => onChange(Number(e.target.value)) }) }), helperText && (_jsx("p", { id: helperId, className: "muka-range-slider__helper", children: helperText }))] }));
|
|
39
|
-
};
|
|
38
|
+
return (_jsxs("div", { className: rootClasses, children: [showHeader && (_jsxs("div", { className: "muka-range-slider__header", children: [_jsxs("span", { className: "muka-range-slider__label-group", children: [label && (_jsx("label", { htmlFor: inputId, className: "muka-range-slider__label", children: label })), tooltip && (_jsx(Icon, { name: "information", variant: "line", size: "sm", colorVariant: "subtle", label: tooltip, className: "muka-range-slider__info" })), optional && (_jsx("span", { className: "muka-range-slider__optional", children: "Optional" }))] }), showValue && (_jsx("span", { className: "muka-range-slider__value", children: formatValue ? formatValue(value) : value }))] })), _jsx("div", { className: "muka-range-slider__bar", children: _jsx("input", { ref: forwardedRef, id: inputId, type: "range", className: "muka-range-slider__input", value: value, min: min, max: max, step: step, disabled: disabled, "aria-label": label ? undefined : ariaLabel, "aria-describedby": helperId, style: { ['--muka-range-fill']: `${fillPct}%` }, onChange: (e) => onChange(Number(e.target.value)) }) }), helperText && (_jsx("p", { id: helperId, className: "muka-range-slider__helper", children: helperText }))] }));
|
|
39
|
+
});
|
|
40
40
|
export default RangeSlider;
|
|
41
41
|
//# sourceMappingURL=RangeSlider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeSlider.js","sourceRoot":"","sources":["../../../../components/RangeSlider/RangeSlider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,
|
|
1
|
+
{"version":3,"file":"RangeSlider.js","sourceRoot":"","sources":["../../../../components/RangeSlider/RangeSlider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useId, useRef } from 'react';
|
|
3
|
+
import React, { useState, useId, useRef } from 'react';
|
|
4
4
|
import './Select.css';
|
|
5
5
|
import { Icon } from '../Icon';
|
|
6
6
|
/**
|
|
@@ -17,7 +17,7 @@ import { Icon } from '../Icon';
|
|
|
17
17
|
* - text.input.{size}
|
|
18
18
|
* - text.label.{size}.semibold
|
|
19
19
|
*/
|
|
20
|
-
export function Select({ options, value, onChange, onValueChange, placeholder, label, helperText, error = false, errorMessage, disabled = false, size = 'md', fullWidth = false, required = false, name, className = '', ...props }) {
|
|
20
|
+
export const Select = React.forwardRef(function Select({ options, value, onChange, onValueChange, placeholder, label, helperText, error = false, errorMessage, disabled = false, size = 'md', fullWidth = false, required = false, name, className = '', onBlur, onFocus, ...props }, forwardedRef) {
|
|
21
21
|
const [isFocused, setIsFocused] = useState(false);
|
|
22
22
|
const selectRef = useRef(null);
|
|
23
23
|
const generatedId = useId();
|
|
@@ -45,10 +45,23 @@ export function Select({ options, value, onChange, onValueChange, placeholder, l
|
|
|
45
45
|
e.preventDefault();
|
|
46
46
|
selectRef.current?.focus();
|
|
47
47
|
}
|
|
48
|
-
}, children: [_jsxs("select", { ref:
|
|
48
|
+
}, children: [_jsxs("select", { ref: (node) => {
|
|
49
|
+
selectRef.current = node;
|
|
50
|
+
if (typeof forwardedRef === 'function')
|
|
51
|
+
forwardedRef(node);
|
|
52
|
+
else if (forwardedRef)
|
|
53
|
+
forwardedRef.current =
|
|
54
|
+
node;
|
|
55
|
+
}, id: selectId, className: "muka-select__native", value: value, onChange: (e) => {
|
|
49
56
|
onChange?.(e);
|
|
50
57
|
onValueChange?.(e.target.value);
|
|
51
|
-
}, disabled: disabled, name: name, required: required, "aria-invalid": error || undefined, "aria-describedby": describedBy, onFocus: () =>
|
|
52
|
-
|
|
58
|
+
}, disabled: disabled, name: name, required: required, "aria-invalid": error || undefined, "aria-describedby": describedBy, onFocus: (e) => {
|
|
59
|
+
setIsFocused(true);
|
|
60
|
+
onFocus?.(e);
|
|
61
|
+
}, onBlur: (e) => {
|
|
62
|
+
setIsFocused(false);
|
|
63
|
+
onBlur?.(e);
|
|
64
|
+
}, ...props, children: [placeholder && (_jsx("option", { value: "", disabled: true, children: placeholder })), options.map((option) => (_jsx("option", { value: option.value, disabled: option.disabled, children: option.label }, option.value)))] }), _jsx("span", { className: "muka-select__chevron", "aria-hidden": "true", children: _jsx(Icon, { name: "arrow-down-s", variant: "line", size: "sm" }) })] }), showError && (_jsx("p", { className: "muka-select__error", id: errorMessageId, role: "alert", children: errorMessage })), !showError && helperText && (_jsx("p", { className: "muka-select__helper", id: helperTextId, children: helperText }))] }));
|
|
65
|
+
});
|
|
53
66
|
export default Select;
|
|
54
67
|
//# sourceMappingURL=Select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../components/Select/Select.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,
|
|
1
|
+
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../components/Select/Select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useId } from 'react';
|
|
3
|
+
import React, { useState, useId } from 'react';
|
|
4
4
|
import './Textarea.css';
|
|
5
|
-
export const Textarea = ({ value, onChange, placeholder, label, helperText, error = false, errorMessage, disabled = false, readOnly = false, size = 'md', rows, resize = 'vertical', showCount = false, maxLength, className = '', name, id, required = false, })
|
|
5
|
+
export const Textarea = React.forwardRef(function Textarea({ value, onChange, placeholder, label, helperText, error = false, errorMessage, disabled = false, readOnly = false, size = 'md', rows, resize = 'vertical', showCount = false, maxLength, className = '', name, id, required = false, onBlur, onFocus, }, forwardedRef) {
|
|
6
6
|
const [isFocused, setIsFocused] = useState(false);
|
|
7
7
|
const generatedId = useId();
|
|
8
8
|
const textareaId = id || name || generatedId;
|
|
@@ -22,7 +22,13 @@ export const Textarea = ({ value, onChange, placeholder, label, helperText, erro
|
|
|
22
22
|
error && 'muka-textarea__field--error',
|
|
23
23
|
disabled && 'muka-textarea__field--disabled',
|
|
24
24
|
].filter(Boolean).join(' ');
|
|
25
|
-
return (_jsxs("div", { className: wrapperClasses, children: [label && (_jsxs("label", { className: `muka-textarea__label muka-textarea__label--${size}`, htmlFor: textareaId, children: [label, required && _jsx("span", { className: "muka-textarea__required", "aria-hidden": "true", children: " *" })] })), _jsx("div", { className: fieldClasses, children: _jsx("textarea", { id: textareaId, className: "muka-textarea__native", value: value, onChange: onChange, placeholder: placeholder, disabled: disabled, readOnly: readOnly, name: name, required: required, rows: rows, maxLength: maxLength, "aria-invalid": error || undefined, "aria-describedby": describedBy, onFocus: () =>
|
|
26
|
-
|
|
25
|
+
return (_jsxs("div", { className: wrapperClasses, children: [label && (_jsxs("label", { className: `muka-textarea__label muka-textarea__label--${size}`, htmlFor: textareaId, children: [label, required && _jsx("span", { className: "muka-textarea__required", "aria-hidden": "true", children: " *" })] })), _jsx("div", { className: fieldClasses, children: _jsx("textarea", { ref: forwardedRef, id: textareaId, className: "muka-textarea__native", value: value, onChange: onChange, placeholder: placeholder, disabled: disabled, readOnly: readOnly, name: name, required: required, rows: rows, maxLength: maxLength, "aria-invalid": error || undefined, "aria-describedby": describedBy, onFocus: (e) => {
|
|
26
|
+
setIsFocused(true);
|
|
27
|
+
onFocus?.(e);
|
|
28
|
+
}, onBlur: (e) => {
|
|
29
|
+
setIsFocused(false);
|
|
30
|
+
onBlur?.(e);
|
|
31
|
+
}, style: { resize } }) }), _jsxs("div", { className: "muka-textarea__footer", children: [showError && (_jsx("p", { className: "muka-textarea__error", id: errorMessageId, role: "alert", children: errorMessage })), !showError && helperText && (_jsx("p", { className: "muka-textarea__helper", id: helperTextId, children: helperText })), showCount && (_jsxs("span", { className: "muka-textarea__count", children: [charCount, maxLength ? `/${maxLength}` : ''] }))] })] }));
|
|
32
|
+
});
|
|
27
33
|
export default Textarea;
|
|
28
34
|
//# sourceMappingURL=Textarea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../../../components/Textarea/Textarea.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,
|
|
1
|
+
{"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../../../components/Textarea/Textarea.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/* Thumbnail Component Styles - Using Muka Design Tokens */
|
|
2
|
+
|
|
3
|
+
.muka-thumbnail {
|
|
4
|
+
position: relative;
|
|
5
|
+
flex-shrink: 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* The frame carries the border, background and shape clip. Keeping it separate
|
|
9
|
+
from the root lets the remove (×) button sit outside the clip (needed for the
|
|
10
|
+
circular/ellipse shape, whose corners would otherwise clip the button). */
|
|
11
|
+
.muka-thumbnail__frame {
|
|
12
|
+
position: absolute;
|
|
13
|
+
inset: 0;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
border: var(--border-width-regular, 1px) solid var(--color-black-alpha-3);
|
|
16
|
+
border-radius: var(--border-radius-lg);
|
|
17
|
+
background-color: var(--color-surface-level1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* ─── Shapes ──────────────────────────────────────────── */
|
|
21
|
+
.muka-thumbnail--4-3 {
|
|
22
|
+
width: 160px;
|
|
23
|
+
height: 120px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.muka-thumbnail--1-1 {
|
|
27
|
+
width: 120px;
|
|
28
|
+
height: 120px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.muka-thumbnail--ellipse {
|
|
32
|
+
width: 120px;
|
|
33
|
+
height: 120px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.muka-thumbnail--ellipse .muka-thumbnail__frame {
|
|
37
|
+
border-radius: var(--border-radius-full);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Image fills the frame, cropped to cover. Sits at scale(1) by default so the
|
|
41
|
+
interactive hover zoom has a clean origin. */
|
|
42
|
+
.muka-thumbnail__image {
|
|
43
|
+
position: absolute;
|
|
44
|
+
inset: 0;
|
|
45
|
+
width: 100%;
|
|
46
|
+
height: 100%;
|
|
47
|
+
object-fit: cover;
|
|
48
|
+
display: block;
|
|
49
|
+
transform-origin: center;
|
|
50
|
+
/* Micro-interaction: hover zoom eases out over the "micro" duration. */
|
|
51
|
+
transition: transform var(--motion-duration-micro) var(--motion-easing-enter);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* ─── Interactive (click-to-enlarge) ──────────────────── */
|
|
55
|
+
.muka-thumbnail__trigger {
|
|
56
|
+
position: absolute;
|
|
57
|
+
inset: 0;
|
|
58
|
+
padding: 0;
|
|
59
|
+
border: 0;
|
|
60
|
+
background: none;
|
|
61
|
+
cursor: pointer;
|
|
62
|
+
overflow: hidden;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.muka-thumbnail__trigger:focus-visible {
|
|
66
|
+
outline: 2px solid var(--color-border-focus);
|
|
67
|
+
outline-offset: -2px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* On hover the image scales up ~8px (160px → 168px) with an ease-out feel. */
|
|
71
|
+
.muka-thumbnail--interactive:hover .muka-thumbnail__image {
|
|
72
|
+
transform: scale(1.05);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* ─── Loading overlay + progress donut ────────────────── */
|
|
76
|
+
.muka-thumbnail__overlay {
|
|
77
|
+
position: absolute;
|
|
78
|
+
inset: 0;
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
justify-content: center;
|
|
82
|
+
background-color: var(--dialog-color-backdrop);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.muka-thumbnail__progress {
|
|
86
|
+
width: 40px;
|
|
87
|
+
height: 40px;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* ─── Error / corrupt state ───────────────────────────── */
|
|
91
|
+
.muka-thumbnail--error .muka-thumbnail__frame {
|
|
92
|
+
background-color: var(--alias-color-state-error-muted);
|
|
93
|
+
border-color: var(--alias-color-state-error-default);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.muka-thumbnail__error {
|
|
97
|
+
position: absolute;
|
|
98
|
+
inset: 0;
|
|
99
|
+
display: flex;
|
|
100
|
+
flex-direction: column;
|
|
101
|
+
align-items: center;
|
|
102
|
+
justify-content: center;
|
|
103
|
+
gap: var(--spacing-2);
|
|
104
|
+
padding: var(--spacing-3);
|
|
105
|
+
text-align: center;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.muka-thumbnail__error-icon {
|
|
109
|
+
color: var(--alert-color-error-accent);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.muka-thumbnail__caption {
|
|
113
|
+
max-width: 100%;
|
|
114
|
+
overflow: hidden;
|
|
115
|
+
text-overflow: ellipsis;
|
|
116
|
+
white-space: nowrap;
|
|
117
|
+
color: var(--alert-color-error-accent);
|
|
118
|
+
font-family: var(--text-body-sm-regular-fontFamily);
|
|
119
|
+
font-size: var(--text-body-sm-regular-fontSize);
|
|
120
|
+
font-weight: var(--text-body-sm-regular-fontWeight);
|
|
121
|
+
line-height: var(--text-body-sm-regular-lineHeight);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* ─── Remove (×) button ───────────────────────────────── */
|
|
125
|
+
.muka-thumbnail__remove {
|
|
126
|
+
position: absolute;
|
|
127
|
+
top: var(--spacing-2);
|
|
128
|
+
right: var(--spacing-2);
|
|
129
|
+
display: flex;
|
|
130
|
+
align-items: center;
|
|
131
|
+
justify-content: center;
|
|
132
|
+
width: var(--size-2xl);
|
|
133
|
+
height: var(--size-2xl);
|
|
134
|
+
padding: 0;
|
|
135
|
+
color: var(--button-color-tertiary-foreground-default);
|
|
136
|
+
background-color: var(--button-color-tertiary-background-default);
|
|
137
|
+
border: var(--border-width-regular, 1px) solid var(--button-color-tertiary-border-default);
|
|
138
|
+
border-radius: var(--border-radius-lg);
|
|
139
|
+
cursor: pointer;
|
|
140
|
+
transition: background-color var(--motion-duration-micro) var(--motion-easing-enter),
|
|
141
|
+
border-color var(--motion-duration-micro) var(--motion-easing-enter);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.muka-thumbnail__remove:hover {
|
|
145
|
+
color: var(--button-color-tertiary-foreground-hover);
|
|
146
|
+
background-color: var(--button-color-tertiary-background-hover);
|
|
147
|
+
border-color: var(--button-color-tertiary-border-hover);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.muka-thumbnail__remove:active {
|
|
151
|
+
color: var(--button-color-tertiary-foreground-pressed);
|
|
152
|
+
background-color: var(--button-color-tertiary-background-pressed);
|
|
153
|
+
border-color: var(--button-color-tertiary-border-pressed);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.muka-thumbnail__remove:focus-visible {
|
|
157
|
+
outline: 2px solid var(--color-border-focus);
|
|
158
|
+
outline-offset: 2px;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* ─── Reduced motion ──────────────────────────────────── */
|
|
162
|
+
@media (prefers-reduced-motion: reduce) {
|
|
163
|
+
.muka-thumbnail__image,
|
|
164
|
+
.muka-thumbnail__remove {
|
|
165
|
+
transition: none;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.muka-thumbnail--interactive:hover .muka-thumbnail__image {
|
|
169
|
+
transform: none;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { DataPieChart } from '../DataPieChart';
|
|
5
|
+
import { Icon } from '../Icon';
|
|
6
|
+
import './Thumbnail.css';
|
|
7
|
+
/**
|
|
8
|
+
* Thumbnail Component
|
|
9
|
+
*
|
|
10
|
+
* A single uploaded-photo tile used by `PhotoUploader`. Shows an image cropped
|
|
11
|
+
* to fill a fixed frame, with several behaviours driven by props:
|
|
12
|
+
*
|
|
13
|
+
* - **processing** — a dark overlay with an indeterminate (spinning) donut for
|
|
14
|
+
* pre-upload work (e.g. HEIC conversion / compression).
|
|
15
|
+
* - **loading** — a dark overlay with a `DataPieChart` progress donut; swaps
|
|
16
|
+
* seamlessly from `processing` (same ring).
|
|
17
|
+
* - **error** — a red tile with an error icon + caption (filename); the × stays.
|
|
18
|
+
* - **loaded, interactive** — hovering scales the image up ~8px (motion tokens)
|
|
19
|
+
* and clicking activates `onClick` (e.g. to enlarge in a dialog).
|
|
20
|
+
* - **removable** — a tertiary × button in the top-right corner calls
|
|
21
|
+
* `onRemove` to delete the photo.
|
|
22
|
+
*
|
|
23
|
+
* Tokens used: border-radius-lg, color-black-alpha-3, dialog-color-backdrop,
|
|
24
|
+
* button-color-tertiary-*, alias-color-state-error-*, alert-color-error-accent,
|
|
25
|
+
* motion-duration-micro, motion-easing-enter.
|
|
26
|
+
*/
|
|
27
|
+
export const Thumbnail = forwardRef(({ src, alt = '', shape = '4:3', loading = false, progress = 0, processing = false, error = false, caption, errorReason, onRemove, onClick, removeLabel = 'Remove photo', viewLabel = 'View photo', className = '', ...props }, ref) => {
|
|
28
|
+
const isBusy = loading || processing;
|
|
29
|
+
const isInteractive = !isBusy && !error && Boolean(onClick);
|
|
30
|
+
const showRemove = !isBusy && Boolean(onRemove);
|
|
31
|
+
const classes = [
|
|
32
|
+
'muka-thumbnail',
|
|
33
|
+
// '4:3' → '--4-3', '1:1' → '--1-1', 'ellipse' → '--ellipse'
|
|
34
|
+
`muka-thumbnail--${shape.replace(':', '-')}`,
|
|
35
|
+
loading && 'muka-thumbnail--loading',
|
|
36
|
+
processing && 'muka-thumbnail--processing',
|
|
37
|
+
error && 'muka-thumbnail--error',
|
|
38
|
+
isInteractive && 'muka-thumbnail--interactive',
|
|
39
|
+
className,
|
|
40
|
+
]
|
|
41
|
+
.filter(Boolean)
|
|
42
|
+
.join(' ');
|
|
43
|
+
const image = _jsx("img", { className: "muka-thumbnail__image", src: src, alt: alt });
|
|
44
|
+
const removeButton = showRemove ? (_jsx("button", { type: "button", className: "muka-thumbnail__remove", onClick: onRemove, "aria-label": removeLabel, children: _jsx(Icon, { name: "close", variant: "line", size: "xs" }) })) : null;
|
|
45
|
+
// The frame owns the shape's clip (border-radius + overflow), so the remove
|
|
46
|
+
// button — a sibling of the frame — is never clipped, even for the circle.
|
|
47
|
+
const frameContent = error ? (_jsxs("div", { className: "muka-thumbnail__error", children: [_jsx(Icon, { className: "muka-thumbnail__error-icon", name: "error-warning", variant: "fill", size: "lg", label: errorReason ?? 'Upload failed' }), caption && _jsx("span", { className: "muka-thumbnail__caption", children: caption })] })) : (_jsxs(_Fragment, { children: [isInteractive ? (_jsx("button", { type: "button", className: "muka-thumbnail__trigger", onClick: onClick, "aria-label": viewLabel, children: image })) : (image), isBusy && (_jsx("div", { className: "muka-thumbnail__overlay", children: _jsx(DataPieChart, { className: "muka-thumbnail__progress", value: progress, indeterminate: processing, size: 40, variant: "donut", "aria-label": processing ? 'Processing' : `Uploading, ${Math.round(progress)}%` }) }))] }));
|
|
48
|
+
return (_jsxs("div", { ref: ref, className: classes, title: error ? errorReason : undefined, ...props, children: [_jsx("div", { className: "muka-thumbnail__frame", children: frameContent }), removeButton] }));
|
|
49
|
+
});
|
|
50
|
+
Thumbnail.displayName = 'Thumbnail';
|
|
51
|
+
export default Thumbnail;
|
|
52
|
+
//# sourceMappingURL=Thumbnail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Thumbnail.js","sourceRoot":"","sources":["../../../../components/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../components/Thumbnail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useId } from 'react';
|
|
3
|
+
import React, { useId } from 'react';
|
|
4
4
|
import './Toggle.css';
|
|
5
5
|
/**
|
|
6
6
|
* Toggle Component
|
|
@@ -20,7 +20,7 @@ import './Toggle.css';
|
|
|
20
20
|
* - text.label.lg.* (for label)
|
|
21
21
|
* - text.body.base.regular (for caption)
|
|
22
22
|
*/
|
|
23
|
-
export const Toggle = ({ checked, defaultChecked, onChange, label, caption, showDivider = false, icon, disabled = false, name, className = '', id, ...props })
|
|
23
|
+
export const Toggle = React.forwardRef(function Toggle({ checked, defaultChecked, onChange, label, caption, showDivider = false, icon, disabled = false, name, className = '', id, ...props }, forwardedRef) {
|
|
24
24
|
const generatedId = useId();
|
|
25
25
|
const inputId = id || generatedId;
|
|
26
26
|
const wrapperClasses = [
|
|
@@ -30,7 +30,7 @@ export const Toggle = ({ checked, defaultChecked, onChange, label, caption, show
|
|
|
30
30
|
caption && 'muka-toggle--with-caption',
|
|
31
31
|
className
|
|
32
32
|
].filter(Boolean).join(' ');
|
|
33
|
-
return (_jsxs("div", { className: wrapperClasses, children: [icon && _jsx("span", { className: "muka-toggle__icon", "aria-hidden": "true", children: icon }), _jsxs("div", { className: "muka-toggle__content", children: [label && (_jsx("label", { className: "muka-toggle__label", htmlFor: inputId, children: label })), caption && (_jsx("span", { className: "muka-toggle__caption", children: caption }))] }), _jsxs("label", { className: "muka-toggle__switch", htmlFor: inputId, children: [_jsx("input", { type: "checkbox", role: "switch", id: inputId, className: "muka-toggle__input", checked: checked, defaultChecked: defaultChecked, onChange: onChange, disabled: disabled, name: name, "aria-checked": checked, ...props }), _jsx("span", { className: "muka-toggle__track", children: _jsx("span", { className: "muka-toggle__knob" }) })] }), showDivider && _jsx("div", { className: "muka-toggle__divider" })] }));
|
|
34
|
-
};
|
|
33
|
+
return (_jsxs("div", { className: wrapperClasses, children: [icon && _jsx("span", { className: "muka-toggle__icon", "aria-hidden": "true", children: icon }), _jsxs("div", { className: "muka-toggle__content", children: [label && (_jsx("label", { className: "muka-toggle__label", htmlFor: inputId, children: label })), caption && (_jsx("span", { className: "muka-toggle__caption", children: caption }))] }), _jsxs("label", { className: "muka-toggle__switch", htmlFor: inputId, children: [_jsx("input", { ref: forwardedRef, type: "checkbox", role: "switch", id: inputId, className: "muka-toggle__input", checked: checked, defaultChecked: defaultChecked, onChange: onChange, disabled: disabled, name: name, "aria-checked": checked, ...props }), _jsx("span", { className: "muka-toggle__track", children: _jsx("span", { className: "muka-toggle__knob" }) })] }), showDivider && _jsx("div", { className: "muka-toggle__divider" })] }));
|
|
34
|
+
});
|
|
35
35
|
export default Toggle;
|
|
36
36
|
//# sourceMappingURL=Toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../../components/Toggle/Toggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,
|
|
1
|
+
{"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../../components/Toggle/Toggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,cAAc,CAAC;AAqCtB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAgC,SAAS,MAAM,CACnF,EACE,OAAO,EACP,cAAc,EACd,QAAQ,EACR,KAAK,EACL,OAAO,EACP,WAAW,GAAG,KAAK,EACnB,IAAI,EACJ,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,SAAS,GAAG,EAAE,EACd,EAAE,EACF,GAAG,KAAK,EACT,EACD,YAAY;IAEZ,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,EAAE,IAAI,WAAW,CAAC;IAElC,MAAM,cAAc,GAAG;QACrB,aAAa;QACb,QAAQ,IAAI,uBAAuB;QACnC,WAAW,IAAI,2BAA2B;QAC1C,OAAO,IAAI,2BAA2B;QACtC,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,eAAK,SAAS,EAAE,cAAc,aAC3B,IAAI,IAAI,eAAM,SAAS,EAAC,mBAAmB,iBAAa,MAAM,YAAE,IAAI,GAAQ,EAE7E,eAAK,SAAS,EAAC,sBAAsB,aAClC,KAAK,IAAI,CACR,gBAAO,SAAS,EAAC,oBAAoB,EAAC,OAAO,EAAE,OAAO,YACnD,KAAK,GACA,CACT,EACA,OAAO,IAAI,CACV,eAAM,SAAS,EAAC,sBAAsB,YAAE,OAAO,GAAQ,CACxD,IACG,EAEN,iBAAO,SAAS,EAAC,qBAAqB,EAAC,OAAO,EAAE,OAAO,aACrD,gBACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,OAAO,EACX,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,kBACI,OAAO,KACjB,KAAK,GACT,EACF,eAAM,SAAS,EAAC,oBAAoB,YAClC,eAAM,SAAS,EAAC,mBAAmB,GAAG,GACjC,IACD,EAEP,WAAW,IAAI,cAAK,SAAS,EAAC,sBAAsB,GAAG,IACpD,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
export { Button } from './Button';
|
|
3
3
|
export { ListItem } from './ListItem';
|
|
4
4
|
export { Input } from './Input';
|
|
5
|
+
export { Form, useForm, } from './Form';
|
|
5
6
|
export { NumberInput } from './NumberInput';
|
|
6
7
|
export { Card } from './Card';
|
|
7
8
|
export { Label } from './Label';
|
|
@@ -71,4 +72,6 @@ export { Combobox, } from './Combobox';
|
|
|
71
72
|
export { SwipeActions, } from './SwipeActions';
|
|
72
73
|
export { PullToRefresh } from './PullToRefresh';
|
|
73
74
|
export { LicensePlateInput, } from './LicensePlateInput';
|
|
75
|
+
export { Thumbnail } from './Thumbnail';
|
|
76
|
+
export { PhotoUploader, } from './PhotoUploader';
|
|
74
77
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -109,6 +109,13 @@
|
|
|
109
109
|
height: 100%;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
/* The leading icon and the dismiss (×) icon inherit the variant accent set on
|
|
113
|
+
their container, overriding the Icon component's default color. */
|
|
114
|
+
.muka-alert__icon .muka-icon,
|
|
115
|
+
.muka-alert__dismiss .muka-icon {
|
|
116
|
+
color: inherit;
|
|
117
|
+
}
|
|
118
|
+
|
|
112
119
|
/* Content */
|
|
113
120
|
.muka-alert__content {
|
|
114
121
|
flex: 1;
|
|
@@ -200,6 +200,35 @@
|
|
|
200
200
|
opacity: 1;
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
+
/* Muted variant - same as ghost but resting foreground is subtle, darkens on interaction */
|
|
204
|
+
.muka-button--muted {
|
|
205
|
+
background-color: var(--button-color-muted-background-default);
|
|
206
|
+
color: var(--button-color-muted-foreground-default);
|
|
207
|
+
border: 1px solid var(--button-color-muted-border-default);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.muka-button--muted:hover:not(:disabled) {
|
|
211
|
+
background-color: var(--button-color-muted-background-hover);
|
|
212
|
+
color: var(--button-color-muted-foreground-hover);
|
|
213
|
+
border-color: var(--button-color-muted-border-hover);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.muka-button--muted:active:not(:disabled),
|
|
217
|
+
.muka-button--muted.muka-button--pressed:not(:disabled),
|
|
218
|
+
.muka-button--muted[data-state="open"]:not(:disabled) {
|
|
219
|
+
background-color: var(--button-color-muted-background-pressed);
|
|
220
|
+
color: var(--button-color-muted-foreground-pressed);
|
|
221
|
+
border-color: var(--button-color-muted-border-pressed);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.muka-button--muted:disabled {
|
|
225
|
+
background-color: var(--button-color-muted-background-disabled);
|
|
226
|
+
color: var(--button-color-muted-foreground-disabled);
|
|
227
|
+
border-color: var(--button-color-muted-border-disabled);
|
|
228
|
+
cursor: not-allowed;
|
|
229
|
+
opacity: 1;
|
|
230
|
+
}
|
|
231
|
+
|
|
203
232
|
/* General disabled state - fallback */
|
|
204
233
|
.muka-button:disabled {
|
|
205
234
|
cursor: not-allowed;
|
|
@@ -27,6 +27,35 @@
|
|
|
27
27
|
transition: stroke-dasharray 0.3s ease;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
/* ─── Indeterminate (spinner) ─────────────────────────── */
|
|
31
|
+
/* A masked ring filled with an angular (conic) gradient that rotates. The mask
|
|
32
|
+
band matches the donut geometry (r=40, strokeWidth=16 → 64%–96% of radius) so
|
|
33
|
+
it swaps seamlessly with the value-based progress donut. */
|
|
34
|
+
.muka-data-pie-chart__spinner-track,
|
|
35
|
+
.muka-data-pie-chart__spinner {
|
|
36
|
+
position: absolute;
|
|
37
|
+
inset: 0;
|
|
38
|
+
border-radius: 50%;
|
|
39
|
+
-webkit-mask: radial-gradient(farthest-side, transparent 63%, #000 65%, #000 95%, transparent 97%);
|
|
40
|
+
mask: radial-gradient(farthest-side, transparent 63%, #000 65%, #000 95%, transparent 97%);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.muka-data-pie-chart__spinner {
|
|
44
|
+
animation: muka-data-pie-chart-spin 0.9s linear infinite;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@keyframes muka-data-pie-chart-spin {
|
|
48
|
+
to {
|
|
49
|
+
transform: rotate(360deg);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@media (prefers-reduced-motion: reduce) {
|
|
54
|
+
.muka-data-pie-chart__spinner {
|
|
55
|
+
animation-duration: 2.5s;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
30
59
|
.muka-data-pie-chart__value {
|
|
31
60
|
position: absolute;
|
|
32
61
|
inset: 0;
|