@particle-academy/react-fancy 5.15.0 → 5.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/badge.cjs +3 -2
- package/dist/badge.js +2 -1
- package/dist/button.cjs +4 -3
- package/dist/button.js +2 -1
- package/dist/callout.cjs +3 -2
- package/dist/callout.js +2 -1
- package/dist/{chunk-VE3EM4K2.cjs → chunk-23CLGUMT.cjs} +2 -2
- package/dist/{chunk-VE3EM4K2.cjs.map → chunk-23CLGUMT.cjs.map} +1 -1
- package/dist/{chunk-C4Z4S3CX.js → chunk-2ICXWLKS.js} +2 -2
- package/dist/{chunk-C4Z4S3CX.js.map → chunk-2ICXWLKS.js.map} +1 -1
- package/dist/chunk-3I2KWNXT.cjs +4 -0
- package/dist/chunk-3I2KWNXT.cjs.map +1 -0
- package/dist/{chunk-7C7VF4WY.cjs → chunk-6FYMMQ3G.cjs} +2 -2
- package/dist/{chunk-7C7VF4WY.cjs.map → chunk-6FYMMQ3G.cjs.map} +1 -1
- package/dist/{chunk-WEGL4S52.js → chunk-6RYZ2MOE.js} +2 -2
- package/dist/{chunk-WEGL4S52.js.map → chunk-6RYZ2MOE.js.map} +1 -1
- package/dist/{chunk-2CNSZCVE.cjs → chunk-6Y2QO7YV.cjs} +4 -4
- package/dist/{chunk-2CNSZCVE.cjs.map → chunk-6Y2QO7YV.cjs.map} +1 -1
- package/dist/chunk-AR2IBCX7.cjs +1354 -0
- package/dist/chunk-AR2IBCX7.cjs.map +1 -0
- package/dist/{chunk-CTMJYV3O.js → chunk-B4JLRS5E.js} +2 -2
- package/dist/{chunk-CTMJYV3O.js.map → chunk-B4JLRS5E.js.map} +1 -1
- package/dist/{chunk-ECZ66DKF.js → chunk-BWT2L6XP.js} +2 -2
- package/dist/{chunk-ECZ66DKF.js.map → chunk-BWT2L6XP.js.map} +1 -1
- package/dist/{chunk-O432BDEO.js → chunk-CEEEENPW.js} +6 -3
- package/dist/chunk-CEEEENPW.js.map +1 -0
- package/dist/{chunk-MILTPAF6.js → chunk-CQWPMRYS.js} +2 -2
- package/dist/{chunk-MILTPAF6.js.map → chunk-CQWPMRYS.js.map} +1 -1
- package/dist/{chunk-C5AZNBVB.js → chunk-DDRHCFUE.js} +2 -2
- package/dist/{chunk-C5AZNBVB.js.map → chunk-DDRHCFUE.js.map} +1 -1
- package/dist/{chunk-FA3D4GFC.cjs → chunk-EQGY3QDJ.cjs} +5 -5
- package/dist/{chunk-FA3D4GFC.cjs.map → chunk-EQGY3QDJ.cjs.map} +1 -1
- package/dist/{chunk-DOSSIU6S.cjs → chunk-FO4GCX67.cjs} +6 -3
- package/dist/chunk-FO4GCX67.cjs.map +1 -0
- package/dist/chunk-GNHQVPZP.js +3 -0
- package/dist/chunk-GNHQVPZP.js.map +1 -0
- package/dist/{chunk-GZIUE4DE.js → chunk-HNITJ2UR.js} +3 -3
- package/dist/{chunk-GZIUE4DE.js.map → chunk-HNITJ2UR.js.map} +1 -1
- package/dist/{chunk-XZYKPGSK.cjs → chunk-HTKDPFLJ.cjs} +2 -2
- package/dist/{chunk-XZYKPGSK.cjs.map → chunk-HTKDPFLJ.cjs.map} +1 -1
- package/dist/chunk-HXLSEBAL.cjs +4 -0
- package/dist/chunk-HXLSEBAL.cjs.map +1 -0
- package/dist/{chunk-GKPCXPCD.js → chunk-I2JXK25I.js} +51 -12
- package/dist/chunk-I2JXK25I.js.map +1 -0
- package/dist/chunk-IQ4KQJAO.js +3 -0
- package/dist/chunk-IQ4KQJAO.js.map +1 -0
- package/dist/chunk-J324MF75.js +3 -0
- package/dist/chunk-J324MF75.js.map +1 -0
- package/dist/{chunk-PZIAL4OP.cjs → chunk-JU5W65N3.cjs} +2 -2
- package/dist/{chunk-PZIAL4OP.cjs.map → chunk-JU5W65N3.cjs.map} +1 -1
- package/dist/{chunk-2G3L4BLU.cjs → chunk-KKYP5R3G.cjs} +2 -2
- package/dist/{chunk-2G3L4BLU.cjs.map → chunk-KKYP5R3G.cjs.map} +1 -1
- package/dist/chunk-LQ4ICCN2.js +3 -0
- package/dist/chunk-LQ4ICCN2.js.map +1 -0
- package/dist/{chunk-IF3T3ZCB.cjs → chunk-LYFUPTLG.cjs} +51 -12
- package/dist/chunk-LYFUPTLG.cjs.map +1 -0
- package/dist/chunk-M5MUGSON.cjs +4 -0
- package/dist/chunk-M5MUGSON.cjs.map +1 -0
- package/dist/{chunk-UH2YXQ2B.cjs → chunk-MPDLL4X3.cjs} +2 -2
- package/dist/{chunk-UH2YXQ2B.cjs.map → chunk-MPDLL4X3.cjs.map} +1 -1
- package/dist/chunk-NMXCQOHV.js +3 -0
- package/dist/chunk-NMXCQOHV.js.map +1 -0
- package/dist/chunk-NW3GJWJ7.js +3 -0
- package/dist/chunk-NW3GJWJ7.js.map +1 -0
- package/dist/chunk-OYZDSMNP.cjs +4 -0
- package/dist/chunk-OYZDSMNP.cjs.map +1 -0
- package/dist/{chunk-UWVVEB2N.js → chunk-P7AJAN62.js} +2 -2
- package/dist/{chunk-UWVVEB2N.js.map → chunk-P7AJAN62.js.map} +1 -1
- package/dist/{chunk-NPKE2IX6.js → chunk-PITWDKKY.js} +2 -2
- package/dist/{chunk-NPKE2IX6.js.map → chunk-PITWDKKY.js.map} +1 -1
- package/dist/{chunk-7AFEKDUS.js → chunk-PJ4TQ6YO.js} +4 -4
- package/dist/{chunk-7AFEKDUS.js.map → chunk-PJ4TQ6YO.js.map} +1 -1
- package/dist/chunk-QGPMVFZJ.cjs +4 -0
- package/dist/chunk-QGPMVFZJ.cjs.map +1 -0
- package/dist/{chunk-W2Q4OWHX.cjs → chunk-RMFLRBUC.cjs} +6 -6
- package/dist/{chunk-W2Q4OWHX.cjs.map → chunk-RMFLRBUC.cjs.map} +1 -1
- package/dist/chunk-SHDSKHCC.js +3 -0
- package/dist/chunk-SHDSKHCC.js.map +1 -0
- package/dist/chunk-TMR56BBE.js +3 -0
- package/dist/chunk-TMR56BBE.js.map +1 -0
- package/dist/chunk-URTLYNZI.cjs +4 -0
- package/dist/chunk-URTLYNZI.cjs.map +1 -0
- package/dist/chunk-V4EARA4F.js +3 -0
- package/dist/chunk-V4EARA4F.js.map +1 -0
- package/dist/chunk-VBWRH4UW.cjs +4 -0
- package/dist/chunk-VBWRH4UW.cjs.map +1 -0
- package/dist/{chunk-K2DZEYBF.js → chunk-WNIP443K.js} +3 -3
- package/dist/{chunk-K2DZEYBF.js.map → chunk-WNIP443K.js.map} +1 -1
- package/dist/{chunk-2S7WRR5P.cjs → chunk-X5VZRFQD.cjs} +2 -2
- package/dist/{chunk-2S7WRR5P.cjs.map → chunk-X5VZRFQD.cjs.map} +1 -1
- package/dist/chunk-XFBLUPKF.cjs +4 -0
- package/dist/chunk-XFBLUPKF.cjs.map +1 -0
- package/dist/chunk-XURQVDCN.cjs +4 -0
- package/dist/chunk-XURQVDCN.cjs.map +1 -0
- package/dist/{chunk-WVO2EKE6.cjs → chunk-Y5V5GBN4.cjs} +2 -2
- package/dist/{chunk-WVO2EKE6.cjs.map → chunk-Y5V5GBN4.cjs.map} +1 -1
- package/dist/chunk-Y6DK4CGY.js +1341 -0
- package/dist/chunk-Y6DK4CGY.js.map +1 -0
- package/dist/color-picker.cjs +3 -2
- package/dist/color-picker.d.cts +10 -1
- package/dist/color-picker.d.ts +10 -1
- package/dist/color-picker.js +2 -1
- package/dist/date-picker.cjs +3 -2
- package/dist/date-picker.js +2 -1
- package/dist/index-BfFk-CIv.d.ts +330 -0
- package/dist/index-BypPN_6l.d.cts +330 -0
- package/dist/index.cjs +123 -65
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +28 -18
- package/dist/input.cjs +3 -2
- package/dist/input.js +2 -1
- package/dist/inputs.cjs +26 -22
- package/dist/inputs.js +10 -6
- package/dist/json-editor.cjs +77 -0
- package/dist/json-editor.cjs.map +1 -0
- package/dist/json-editor.d.cts +4 -0
- package/dist/json-editor.d.ts +4 -0
- package/dist/json-editor.js +28 -0
- package/dist/json-editor.js.map +1 -0
- package/dist/magic-wand.cjs +6 -4
- package/dist/magic-wand.js +5 -3
- package/dist/prompt-input.cjs +4 -3
- package/dist/prompt-input.js +3 -2
- package/dist/reason-tag.cjs +4 -3
- package/dist/reason-tag.js +3 -2
- package/dist/select.cjs +3 -2
- package/dist/select.js +2 -1
- package/dist/switch.cjs +3 -2
- package/dist/switch.js +2 -1
- package/dist/table.cjs +11 -11
- package/dist/table.d.cts +18 -9
- package/dist/table.d.ts +18 -9
- package/dist/table.js +1 -1
- package/dist/text.cjs +3 -2
- package/dist/text.js +2 -1
- package/package.json +12 -2
- package/dist/chunk-DOSSIU6S.cjs.map +0 -1
- package/dist/chunk-GKPCXPCD.js.map +0 -1
- package/dist/chunk-IF3T3ZCB.cjs.map +0 -1
- package/dist/chunk-O432BDEO.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/inputs/DatePicker/DatePicker.tsx"],"names":["forwardRef","useId","cn","inputBaseClasses","inputSizeClasses","dirtyClasses","errorClasses","jsx","useFieldMode","useInlineEdit","useControllableState","DisplayValue","Field","jsxs"],"mappings":"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","file":"chunk-2G3L4BLU.cjs","sourcesContent":["import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport {\n dirtyClasses,\n errorClasses,\n inputBaseClasses,\n inputSizeClasses,\n} from \"../inputs.utils\";\nimport type { DatePickerProps } from \"./DatePicker.types\";\n\n/** Locale-format an ISO date / datetime-local string; fall back to the raw value. */\nfunction formatDateValue(iso: string, includeTime?: boolean): string {\n if (!iso) return \"\";\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return iso;\n return includeTime\n ? date.toLocaleString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n })\n : date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n}\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n (props, ref) => {\n const {\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n min,\n max,\n includeTime,\n } = props;\n\n const autoId = useId();\n const pickerId = id ?? autoId;\n const inputType = includeTime ? \"datetime-local\" : \"date\";\n\n const inputClasses = cn(\n inputBaseClasses,\n inputSizeClasses[size],\n dirtyClasses(dirty),\n errorClasses(error),\n \"w-full\",\n );\n\n if (props.range) {\n return (\n <RangeDatePicker\n {...props}\n id={pickerId}\n inputType={inputType}\n inputClasses={inputClasses}\n ref={ref}\n />\n );\n }\n\n return (\n <SingleDatePicker\n {...props}\n range={false}\n id={pickerId}\n inputType={inputType}\n inputClasses={inputClasses}\n ref={ref}\n />\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n\ninterface InternalProps {\n inputType: string;\n inputClasses: string;\n}\n\nconst SingleDatePicker = forwardRef<\n HTMLInputElement,\n DatePickerProps & { range?: false } & InternalProps\n>(\n (\n {\n size = \"md\",\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n min,\n max,\n includeTime,\n mode,\n inputType,\n inputClasses,\n ...rest\n },\n ref,\n ) => {\n const singleProps = rest as {\n value?: string;\n defaultValue?: string;\n onValueChange?: (v: string) => void;\n };\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n singleProps.value,\n singleProps.defaultValue ?? \"\",\n singleProps.onValueChange,\n );\n\n const input = !showControl ? (\n <DisplayValue\n size={size}\n className={className}\n interactive={interactive}\n onActivate={enterEdit}\n >\n {formatDateValue(value, includeTime)}\n </DisplayValue>\n ) : (\n <input\n data-react-fancy-date-picker=\"\"\n ref={ref}\n id={id}\n type={inputType}\n name={name}\n min={min}\n max={max}\n value={value}\n disabled={disabled}\n required={required}\n onChange={(e) => setValue(e.target.value)}\n className={cn(inputClasses, className)}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n />\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n required={required}\n htmlFor={id}\n size={size}\n >\n {input}\n </Field>\n );\n }\n\n return input;\n },\n);\n\nSingleDatePicker.displayName = \"SingleDatePicker\";\n\nconst RangeDatePicker = forwardRef<\n HTMLInputElement,\n DatePickerProps & { range: true } & InternalProps\n>(\n (\n {\n size = \"md\",\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n min,\n max,\n includeTime,\n mode,\n inputType,\n inputClasses,\n ...rest\n },\n ref,\n ) => {\n const rangeProps = rest as {\n value?: [string, string];\n defaultValue?: [string, string];\n onValueChange?: (v: [string, string]) => void;\n };\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n rangeProps.value,\n rangeProps.defaultValue ?? [\"\", \"\"] as [string, string],\n rangeProps.onValueChange,\n );\n\n const input = !showControl ? (\n <DisplayValue\n size={size}\n className={className}\n interactive={interactive}\n onActivate={enterEdit}\n >\n {value[0] || value[1]\n ? `${formatDateValue(value[0], includeTime)} – ${formatDateValue(value[1], includeTime)}`\n : \"\"}\n </DisplayValue>\n ) : (\n <div\n data-react-fancy-date-picker=\"\"\n className={cn(\"flex items-center gap-2\", className)}\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n >\n <input\n ref={ref}\n id={id}\n type={inputType}\n name={name ? `${name}_start` : undefined}\n min={min}\n max={value[1] || max}\n value={value[0]}\n disabled={disabled}\n required={required}\n onChange={(e) => setValue([e.target.value, value[1]])}\n className={inputClasses}\n autoFocus={interactive}\n />\n <span className=\"text-sm text-zinc-500 dark:text-zinc-400\">to</span>\n <input\n type={inputType}\n name={name ? `${name}_end` : undefined}\n min={value[0] || min}\n max={max}\n value={value[1]}\n disabled={disabled}\n onChange={(e) => setValue([value[0], e.target.value])}\n className={inputClasses}\n />\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n required={required}\n htmlFor={id}\n size={size}\n >\n {input}\n </Field>\n );\n }\n\n return input;\n },\n);\n\nRangeDatePicker.displayName = \"RangeDatePicker\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/DatePicker/DatePicker.tsx"],"names":["forwardRef","useId","cn","inputBaseClasses","inputSizeClasses","dirtyClasses","errorClasses","jsx","useFieldMode","useInlineEdit","useControllableState","DisplayValue","Field","jsxs"],"mappings":"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","file":"chunk-KKYP5R3G.cjs","sourcesContent":["import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport {\n dirtyClasses,\n errorClasses,\n inputBaseClasses,\n inputSizeClasses,\n} from \"../inputs.utils\";\nimport type { DatePickerProps } from \"./DatePicker.types\";\n\n/** Locale-format an ISO date / datetime-local string; fall back to the raw value. */\nfunction formatDateValue(iso: string, includeTime?: boolean): string {\n if (!iso) return \"\";\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return iso;\n return includeTime\n ? date.toLocaleString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n })\n : date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n}\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n (props, ref) => {\n const {\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n min,\n max,\n includeTime,\n } = props;\n\n const autoId = useId();\n const pickerId = id ?? autoId;\n const inputType = includeTime ? \"datetime-local\" : \"date\";\n\n const inputClasses = cn(\n inputBaseClasses,\n inputSizeClasses[size],\n dirtyClasses(dirty),\n errorClasses(error),\n \"w-full\",\n );\n\n if (props.range) {\n return (\n <RangeDatePicker\n {...props}\n id={pickerId}\n inputType={inputType}\n inputClasses={inputClasses}\n ref={ref}\n />\n );\n }\n\n return (\n <SingleDatePicker\n {...props}\n range={false}\n id={pickerId}\n inputType={inputType}\n inputClasses={inputClasses}\n ref={ref}\n />\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n\ninterface InternalProps {\n inputType: string;\n inputClasses: string;\n}\n\nconst SingleDatePicker = forwardRef<\n HTMLInputElement,\n DatePickerProps & { range?: false } & InternalProps\n>(\n (\n {\n size = \"md\",\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n min,\n max,\n includeTime,\n mode,\n inputType,\n inputClasses,\n ...rest\n },\n ref,\n ) => {\n const singleProps = rest as {\n value?: string;\n defaultValue?: string;\n onValueChange?: (v: string) => void;\n };\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n singleProps.value,\n singleProps.defaultValue ?? \"\",\n singleProps.onValueChange,\n );\n\n const input = !showControl ? (\n <DisplayValue\n size={size}\n className={className}\n interactive={interactive}\n onActivate={enterEdit}\n >\n {formatDateValue(value, includeTime)}\n </DisplayValue>\n ) : (\n <input\n data-react-fancy-date-picker=\"\"\n ref={ref}\n id={id}\n type={inputType}\n name={name}\n min={min}\n max={max}\n value={value}\n disabled={disabled}\n required={required}\n onChange={(e) => setValue(e.target.value)}\n className={cn(inputClasses, className)}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n />\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n required={required}\n htmlFor={id}\n size={size}\n >\n {input}\n </Field>\n );\n }\n\n return input;\n },\n);\n\nSingleDatePicker.displayName = \"SingleDatePicker\";\n\nconst RangeDatePicker = forwardRef<\n HTMLInputElement,\n DatePickerProps & { range: true } & InternalProps\n>(\n (\n {\n size = \"md\",\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n min,\n max,\n includeTime,\n mode,\n inputType,\n inputClasses,\n ...rest\n },\n ref,\n ) => {\n const rangeProps = rest as {\n value?: [string, string];\n defaultValue?: [string, string];\n onValueChange?: (v: [string, string]) => void;\n };\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n rangeProps.value,\n rangeProps.defaultValue ?? [\"\", \"\"] as [string, string],\n rangeProps.onValueChange,\n );\n\n const input = !showControl ? (\n <DisplayValue\n size={size}\n className={className}\n interactive={interactive}\n onActivate={enterEdit}\n >\n {value[0] || value[1]\n ? `${formatDateValue(value[0], includeTime)} – ${formatDateValue(value[1], includeTime)}`\n : \"\"}\n </DisplayValue>\n ) : (\n <div\n data-react-fancy-date-picker=\"\"\n className={cn(\"flex items-center gap-2\", className)}\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n >\n <input\n ref={ref}\n id={id}\n type={inputType}\n name={name ? `${name}_start` : undefined}\n min={min}\n max={value[1] || max}\n value={value[0]}\n disabled={disabled}\n required={required}\n onChange={(e) => setValue([e.target.value, value[1]])}\n className={inputClasses}\n autoFocus={interactive}\n />\n <span className=\"text-sm text-zinc-500 dark:text-zinc-400\">to</span>\n <input\n type={inputType}\n name={name ? `${name}_end` : undefined}\n min={value[0] || min}\n max={max}\n value={value[1]}\n disabled={disabled}\n onChange={(e) => setValue([value[0], e.target.value])}\n className={inputClasses}\n />\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n required={required}\n htmlFor={id}\n size={size}\n >\n {input}\n </Field>\n );\n }\n\n return input;\n },\n);\n\nRangeDatePicker.displayName = \"RangeDatePicker\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-LQ4ICCN2.js"}
|
|
@@ -13,11 +13,27 @@ function useTable() {
|
|
|
13
13
|
}
|
|
14
14
|
return ctx;
|
|
15
15
|
}
|
|
16
|
-
function TableHead({ children, className }) {
|
|
17
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16
|
+
function TableHead({ children, className, ...rest }) {
|
|
17
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18
|
+
"thead",
|
|
19
|
+
{
|
|
20
|
+
...rest,
|
|
21
|
+
"data-react-fancy-table-head": "",
|
|
22
|
+
className: chunk3Z6ALUWP_cjs.cn("border-b border-zinc-200 dark:border-zinc-700", className),
|
|
23
|
+
children
|
|
24
|
+
}
|
|
25
|
+
);
|
|
18
26
|
}
|
|
19
|
-
function TableBody({ children, className }) {
|
|
20
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
function TableBody({ children, className, ...rest }) {
|
|
28
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
29
|
+
"tbody",
|
|
30
|
+
{
|
|
31
|
+
...rest,
|
|
32
|
+
"data-react-fancy-table-body": "",
|
|
33
|
+
className: chunk3Z6ALUWP_cjs.cn("divide-y divide-zinc-100 dark:divide-zinc-800", className),
|
|
34
|
+
children
|
|
35
|
+
}
|
|
36
|
+
);
|
|
21
37
|
}
|
|
22
38
|
function TableRow({
|
|
23
39
|
children,
|
|
@@ -101,22 +117,37 @@ function TableCell({ children, className, header, ...rest }) {
|
|
|
101
117
|
}
|
|
102
118
|
);
|
|
103
119
|
}
|
|
104
|
-
function TableColumn({
|
|
120
|
+
function TableColumn({
|
|
121
|
+
label,
|
|
122
|
+
sortKey,
|
|
123
|
+
className,
|
|
124
|
+
"aria-sort": ariaSortProp,
|
|
125
|
+
onClick,
|
|
126
|
+
...rest
|
|
127
|
+
}) {
|
|
105
128
|
const { sortKey: currentSort, sortDir, toggleSort } = useTable();
|
|
106
|
-
const isSorted = sortKey && currentSort === sortKey;
|
|
129
|
+
const isSorted = sortKey != null && currentSort === sortKey;
|
|
130
|
+
const ariaSort = ariaSortProp ?? (sortKey == null ? void 0 : isSorted ? sortDir === "asc" ? "ascending" : "descending" : "none");
|
|
107
131
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
108
132
|
"th",
|
|
109
133
|
{
|
|
134
|
+
...rest,
|
|
110
135
|
"data-react-fancy-table-column": "",
|
|
136
|
+
"aria-sort": ariaSort,
|
|
111
137
|
className: chunk3Z6ALUWP_cjs.cn(
|
|
112
138
|
"px-4 py-3 text-left text-sm font-medium text-zinc-500 dark:text-zinc-400",
|
|
113
139
|
sortKey && "cursor-pointer select-none",
|
|
114
140
|
className
|
|
115
141
|
),
|
|
116
|
-
onClick: sortKey ? () =>
|
|
142
|
+
onClick: sortKey || onClick ? (event) => {
|
|
143
|
+
onClick?.(event);
|
|
144
|
+
if (sortKey) {
|
|
145
|
+
toggleSort(sortKey);
|
|
146
|
+
}
|
|
147
|
+
} : void 0,
|
|
117
148
|
children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
118
149
|
label,
|
|
119
|
-
isSorted && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs", children: sortDir === "asc" ? "\u25B2" : "\u25BC" })
|
|
150
|
+
isSorted && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-xs", children: sortDir === "asc" ? "\u25B2" : "\u25BC" })
|
|
120
151
|
] })
|
|
121
152
|
}
|
|
122
153
|
);
|
|
@@ -196,7 +227,7 @@ function TableRowTray({ children, className }) {
|
|
|
196
227
|
}
|
|
197
228
|
);
|
|
198
229
|
}
|
|
199
|
-
function TableRoot({ children, className }) {
|
|
230
|
+
function TableRoot({ children, className, ...rest }) {
|
|
200
231
|
const [sortKey, setSortKey] = react.useState(null);
|
|
201
232
|
const [sortDir, setSortDir] = react.useState("asc");
|
|
202
233
|
const [page, setPage] = react.useState(0);
|
|
@@ -226,7 +257,15 @@ function TableRoot({ children, className }) {
|
|
|
226
257
|
}),
|
|
227
258
|
[sortKey, sortDir, toggleSort, page, searchQuery]
|
|
228
259
|
);
|
|
229
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TableContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
260
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TableContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
261
|
+
"div",
|
|
262
|
+
{
|
|
263
|
+
...rest,
|
|
264
|
+
"data-react-fancy-table": "",
|
|
265
|
+
className: chunk3Z6ALUWP_cjs.cn("overflow-hidden rounded-lg border border-zinc-200 dark:border-zinc-700", className),
|
|
266
|
+
children: splitTableChildren(children)
|
|
267
|
+
}
|
|
268
|
+
) });
|
|
230
269
|
}
|
|
231
270
|
function splitTableChildren(children) {
|
|
232
271
|
const before = [];
|
|
@@ -269,5 +308,5 @@ exports.TableRow = TableRow;
|
|
|
269
308
|
exports.TableRowTray = TableRowTray;
|
|
270
309
|
exports.TableSearch = TableSearch;
|
|
271
310
|
exports.TableTray = TableTray;
|
|
272
|
-
//# sourceMappingURL=chunk-
|
|
273
|
-
//# sourceMappingURL=chunk-
|
|
311
|
+
//# sourceMappingURL=chunk-LYFUPTLG.cjs.map
|
|
312
|
+
//# sourceMappingURL=chunk-LYFUPTLG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Table/Table.context.ts","../src/components/Table/TableHead.tsx","../src/components/Table/TableBody.tsx","../src/components/Table/TableRow.tsx","../src/components/Table/TableCell.tsx","../src/components/Table/TableColumn.tsx","../src/components/Table/TablePagination.tsx","../src/components/Table/TableSearch.tsx","../src/components/Table/TableTray.tsx","../src/components/Table/TableRowTray.tsx","../src/components/Table/Table.tsx"],"names":["createContext","useContext","jsx","cn","useControllableState","jsxs","Fragment","useState","useCallback","useMemo","Children","isValidElement"],"mappings":"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","file":"chunk-LYFUPTLG.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { TableContextValue } from \"./Table.types\";\n\nexport const TableContext = createContext<TableContextValue | null>(null);\n\nexport function useTable(): TableContextValue {\n const ctx = useContext(TableContext);\n if (!ctx) {\n throw new Error(\"Table compound components must be used within <Table>\");\n }\n return ctx;\n}\n","import { cn } from \"../../utils/cn\";\nimport type { TableHeadProps } from \"./Table.types\";\n\nexport function TableHead({ children, className, ...rest }: TableHeadProps) {\n return (\n <thead\n {...rest}\n data-react-fancy-table-head=\"\"\n className={cn(\"border-b border-zinc-200 dark:border-zinc-700\", className)}\n >\n {children}\n </thead>\n );\n}\n","import { cn } from \"../../utils/cn\";\nimport type { TableBodyProps } from \"./Table.types\";\n\nexport function TableBody({ children, className, ...rest }: TableBodyProps) {\n return (\n <tbody\n {...rest}\n data-react-fancy-table-body=\"\"\n className={cn(\"divide-y divide-zinc-100 dark:divide-zinc-800\", className)}\n >\n {children}\n </tbody>\n );\n}\n","import { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport type { TableRowProps } from \"./Table.types\";\n\nexport function TableRow({\n children,\n className,\n onClick,\n tray,\n trayTriggerPosition = \"end\",\n expanded: controlledExpanded,\n defaultExpanded = false,\n onExpandedChange,\n ...rest\n}: TableRowProps) {\n const [expanded, setExpanded] = useControllableState(\n controlledExpanded,\n defaultExpanded,\n onExpandedChange,\n );\n\n const hasTray = tray != null;\n const showTrigger = hasTray && trayTriggerPosition !== \"hidden\";\n\n const triggerCell = showTrigger ? (\n <td className=\"w-8 px-2\">\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n setExpanded(!expanded);\n }}\n className=\"inline-flex items-center justify-center rounded p-1 text-zinc-400 transition-colors hover:text-zinc-700 dark:text-zinc-500 dark:hover:text-zinc-300\"\n aria-label={expanded ? \"Collapse row\" : \"Expand row\"}\n >\n <svg\n className={cn(\n \"h-4 w-4 transition-transform duration-200\",\n expanded && \"rotate-90\",\n )}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n </td>\n ) : null;\n\n return (\n <>\n <tr\n {...rest}\n data-react-fancy-table-row=\"\"\n className={cn(\n \"transition-colors hover:bg-zinc-50 dark:hover:bg-zinc-800/50\",\n onClick && \"cursor-pointer\",\n className,\n )}\n onClick={onClick}\n >\n {trayTriggerPosition === \"start\" && triggerCell}\n {children}\n {trayTriggerPosition === \"end\" && triggerCell}\n </tr>\n {hasTray && expanded && (\n <tr className=\"bg-zinc-50/50 dark:bg-zinc-800/30\">\n <td colSpan={999}>\n {tray}\n </td>\n </tr>\n )}\n </>\n );\n}\n","import { cn } from \"../../utils/cn\";\nimport type { TableCellProps } from \"./Table.types\";\n\nexport function TableCell({ children, className, header, ...rest }: TableCellProps) {\n const Tag = header ? \"th\" : \"td\";\n return (\n <Tag\n data-react-fancy-table-cell=\"\"\n className={cn(\n \"px-4 py-3 text-sm\",\n header && \"text-left font-medium text-zinc-500 dark:text-zinc-400\",\n className,\n )}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n","import { cn } from \"../../utils/cn\";\nimport { useTable } from \"./Table.context\";\nimport type { TableColumnProps } from \"./Table.types\";\n\nexport function TableColumn({\n label,\n sortKey,\n className,\n \"aria-sort\": ariaSortProp,\n onClick,\n ...rest\n}: TableColumnProps) {\n const { sortKey: currentSort, sortDir, toggleSort } = useTable();\n const isSorted = sortKey != null && currentSort === sortKey;\n\n /**\n * Announce the sort state to anyone who cannot see the arrow.\n *\n * The component already computed `isSorted` and `sortDir` and spent both on a\n * ▲/▼ glyph, so a sortable table sounded exactly like a static one and\n * activating a header produced no feedback at all.\n *\n * `\"none\"` is deliberate and is not the same as omitting the attribute: it\n * says \"this column sorts, but is not the current key\". A non-sortable header\n * gets nothing, because claiming otherwise invites someone to activate an\n * inert control.\n *\n * An explicit `aria-sort` from the caller wins — a server-sorted table knows\n * its own state and this component does not.\n */\n const ariaSort =\n ariaSortProp ?? (sortKey == null ? undefined : isSorted ? (sortDir === \"asc\" ? \"ascending\" : \"descending\") : \"none\");\n\n return (\n <th\n {...rest}\n data-react-fancy-table-column=\"\"\n aria-sort={ariaSort}\n className={cn(\n \"px-4 py-3 text-left text-sm font-medium text-zinc-500 dark:text-zinc-400\",\n sortKey && \"cursor-pointer select-none\",\n className,\n )}\n onClick={\n sortKey || onClick\n ? (event) => {\n // Both, in this order. Dropping the caller's handler because the\n // column happens to sort would be the same silent-prop-loss bug\n // this file just fixed one attribute over.\n onClick?.(event);\n if (sortKey) {\n toggleSort(sortKey);\n }\n }\n : undefined\n }\n >\n <span className=\"inline-flex items-center gap-1\">\n {label}\n {isSorted && (\n <span aria-hidden=\"true\" className=\"text-xs\">\n {sortDir === \"asc\" ? \"▲\" : \"▼\"}\n </span>\n )}\n </span>\n </th>\n );\n}\n","import { cn } from \"../../utils/cn\";\nimport { useTable } from \"./Table.context\";\nimport type { TablePaginationProps } from \"./Table.types\";\n\nexport function TablePagination({\n className,\n total,\n pageSize = 10,\n}: TablePaginationProps) {\n const { page, setPage } = useTable();\n const totalPages = Math.ceil(total / pageSize);\n\n if (totalPages <= 1) return null;\n\n return (\n <div data-react-fancy-table-pagination=\"\" className={cn(\"flex items-center justify-between px-4 py-3 text-sm\", className)}>\n <span className=\"text-zinc-500\">\n Page {page + 1} of {totalPages}\n </span>\n <div className=\"flex gap-1\">\n <button\n type=\"button\"\n disabled={page === 0}\n onClick={() => setPage(page - 1)}\n className=\"rounded border px-2 py-1 disabled:opacity-50 dark:border-zinc-600\"\n >\n Prev\n </button>\n <button\n type=\"button\"\n disabled={page >= totalPages - 1}\n onClick={() => setPage(page + 1)}\n className=\"rounded border px-2 py-1 disabled:opacity-50 dark:border-zinc-600\"\n >\n Next\n </button>\n </div>\n </div>\n );\n}\n","import { cn } from \"../../utils/cn\";\nimport { useTable } from \"./Table.context\";\nimport type { TableSearchProps } from \"./Table.types\";\n\nexport function TableSearch({\n className,\n placeholder = \"Search...\",\n}: TableSearchProps) {\n const { searchQuery, setSearchQuery } = useTable();\n\n return (\n <input\n data-react-fancy-table-search=\"\"\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={placeholder}\n className={cn(\n \"rounded-lg border border-zinc-200 px-3 py-2 text-sm dark:border-zinc-600 dark:bg-zinc-800\",\n className,\n )}\n />\n );\n}\n","import { cn } from \"../../utils/cn\";\nimport type { TableTrayProps } from \"./Table.types\";\n\nexport function TableTray({ children, className }: TableTrayProps) {\n return (\n <div data-react-fancy-table-tray=\"\" className={cn(\"flex items-center justify-between px-4 py-3\", className)}>\n {children}\n </div>\n );\n}\n","import { cn } from \"../../utils/cn\";\nimport type { TableRowTrayProps } from \"./Table.types\";\n\nexport function TableRowTray({ children, className }: TableRowTrayProps) {\n return (\n <div\n data-react-fancy-table-row-tray=\"\"\n className={cn(\n \"border-t border-zinc-200 px-4 py-3 dark:border-zinc-700\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import { Children, isValidElement, useCallback, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { TableContext } from \"./Table.context\";\nimport { TableHead } from \"./TableHead\";\nimport { TableBody } from \"./TableBody\";\nimport { TableRow } from \"./TableRow\";\nimport { TableCell } from \"./TableCell\";\nimport { TableColumn } from \"./TableColumn\";\nimport { TablePagination } from \"./TablePagination\";\nimport { TableSearch } from \"./TableSearch\";\nimport { TableTray } from \"./TableTray\";\nimport { TableRowTray } from \"./TableRowTray\";\nimport type { TableProps, TableContextValue } from \"./Table.types\";\n\nfunction TableRoot({ children, className, ...rest }: TableProps) {\n const [sortKey, setSortKey] = useState<string | null>(null);\n const [sortDir, setSortDir] = useState<\"asc\" | \"desc\">(\"asc\");\n const [page, setPage] = useState(0);\n const [searchQuery, setSearchQuery] = useState(\"\");\n\n const toggleSort = useCallback(\n (key: string) => {\n if (sortKey === key) {\n setSortDir((d) => (d === \"asc\" ? \"desc\" : \"asc\"));\n } else {\n setSortKey(key);\n setSortDir(\"asc\");\n }\n },\n [sortKey],\n );\n\n const ctx = useMemo<TableContextValue>(\n () => ({\n sortKey,\n sortDir,\n toggleSort,\n page,\n setPage,\n pageSize: 10,\n totalRows: 0,\n searchQuery,\n setSearchQuery,\n }),\n [sortKey, sortDir, toggleSort, page, searchQuery],\n );\n\n return (\n <TableContext.Provider value={ctx}>\n <div\n {...rest}\n data-react-fancy-table=\"\"\n className={cn(\"overflow-hidden rounded-lg border border-zinc-200 dark:border-zinc-700\", className)}\n >\n {splitTableChildren(children)}\n </div>\n </TableContext.Provider>\n );\n}\n\nfunction splitTableChildren(children: ReactNode): ReactNode {\n const before: ReactNode[] = [];\n const inside: ReactNode[] = [];\n const after: ReactNode[] = [];\n let seenTableContent = false;\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && (child.type === TableHead || child.type === TableBody)) {\n inside.push(child);\n seenTableContent = true;\n return;\n }\n (seenTableContent ? after : before).push(child);\n });\n\n return (\n <>\n {before}\n {inside.length > 0 && <table className=\"w-full border-collapse\">{inside}</table>}\n {after}\n </>\n );\n}\n\nexport const Table = Object.assign(TableRoot, {\n Head: TableHead,\n Body: TableBody,\n Row: TableRow,\n Cell: TableCell,\n Column: TableColumn,\n Pagination: TablePagination,\n Search: TableSearch,\n Tray: TableTray,\n RowTray: TableRowTray,\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-M5MUGSON.cjs"}
|
|
@@ -162,5 +162,5 @@ var Switch = react.forwardRef(
|
|
|
162
162
|
Switch.displayName = "Switch";
|
|
163
163
|
|
|
164
164
|
exports.Switch = Switch;
|
|
165
|
-
//# sourceMappingURL=chunk-
|
|
166
|
-
//# sourceMappingURL=chunk-
|
|
165
|
+
//# sourceMappingURL=chunk-MPDLL4X3.cjs.map
|
|
166
|
+
//# sourceMappingURL=chunk-MPDLL4X3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/inputs/Switch/Switch.colors.ts","../src/components/inputs/Switch/Switch.tsx"],"names":["forwardRef","useId","useFieldMode","useInlineEdit","useControllableState","jsxs","cn","jsx","dirtyRingClasses"],"mappings":";;;;;;;;;;;AAMO,IAAM,WAAA,GAAqC;AAAA,EAChD,KAAA,EAAO,cAAA;AAAA,EACP,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,aAAA;AAAA,EACN,OAAA,EAAS,gBAAA;AAAA,EACT,KAAA,EAAO,cAAA;AAAA,EACP,GAAA,EAAK,YAAA;AAAA,EACL,MAAA,EAAQ,eAAA;AAAA,EACR,KAAA,EAAO,cAAA;AAAA,EACP,MAAA,EAAQ,eAAA;AAAA,EACR,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO,cAAA;AAAA,EACP,OAAA,EAAS,gBAAA;AAAA,EACT,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,aAAA;AAAA,EACN,GAAA,EAAK,YAAA;AAAA,EACL,IAAA,EAAM,aAAA;AAAA,EACN,MAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ,eAAA;AAAA,EACR,OAAA,EAAS,gBAAA;AAAA,EACT,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;ACpBO,IAAM,MAAA,GAASA,gBAAA;AAAA,EACpB,CACE;AAAA,IACE,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA,EAAS,iBAAA;AAAA,IACT,cAAA,GAAiB,KAAA;AAAA,IACjB,eAAA;AAAA,IACA,KAAA,GAAQ,MAAA;AAAA,IACR,IAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,SAASC,WAAA,EAAM;AACrB,IAAA,MAAM,WAAW,EAAA,IAAM,MAAA;AACvB,IAAA,MAAM,YAAA,GAAeC,+BAAa,IAAI,CAAA;AACtC,IAAA,MAAM,EAAE,aAAa,WAAA,EAAa,SAAA,EAAW,UAAS,GAAIC,+BAAA,CAAc,cAAc,QAAQ,CAAA;AAC9F,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,sCAAA;AAAA,MAC5B,iBAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,EAAA,EAAI,WAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,EAAA,EAAI;AAAA,MACJ,IAAI,CAAA;AAEN,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,EAAA,EAAI,aAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI;AAAA,MACJ,IAAI,CAAA;AAEN,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,EAAA,EAAI,iBAAA;AAAA,MACJ,EAAA,EAAI,eAAA;AAAA,MACJ,EAAA,EAAI,eAAA;AAAA,MACJ,EAAA,EAAI,eAAA;AAAA,MACJ,EAAA,EAAI;AAAA,MACJ,IAAI,CAAA;AAEN,IAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,EAAM,yBAAA,EAAwB,IAAG,SAAA,EAAWC,oBAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA,EACxF,QAAA,EAAA;AAAA,MAAA,CAAC,WAAA,mBACAC,cAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,0BAAA,EAAyB,EAAA;AAAA,UACzB,WAAA,EAAU,MAAA;AAAA,UACV,IAAA,EAAM,cAAc,QAAA,GAAW,MAAA;AAAA,UAC/B,QAAA,EAAU,cAAc,CAAA,GAAI,MAAA;AAAA,UAC5B,KAAA,EAAO,cAAc,eAAA,GAAkB,MAAA;AAAA,UACvC,OAAA,EAAS,cAAc,SAAA,GAAY,MAAA;AAAA,UACnC,SAAA,EACE,WAAA,GACI,CAAC,CAAA,KAAM;AACL,YAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,cAAA,CAAA,CAAE,cAAA,EAAe;AACjB,cAAA,SAAA,EAAU;AAAA,YACZ;AAAA,UACF,CAAA,GACA,MAAA;AAAA,UAEN,SAAA,EAAWD,oBAAA;AAAA,YACT,sDAAA;AAAA,YACA,WAAA,IACE;AAAA,WACJ;AAAA,UAEC,oBAAU,IAAA,GAAO;AAAA;AAAA,OACpB,mBAEFC,cAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,EAAA,EAAI,QAAA;AAAA,UACJ,IAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAK,QAAA;AAAA,UACL,cAAA,EAAc,OAAA;AAAA,UACd,QAAA;AAAA,UACA,SAAA,EAAW,WAAA;AAAA,UACX,QAAQ,MAAM;AACZ,YAAA,IAAI,aAAa,QAAA,EAAS;AAAA,UAC5B,CAAA;AAAA,UACA,OAAA,EAAS,MAAM,UAAA,CAAW,CAAC,OAAO,CAAA;AAAA,UAClC,SAAA,EAAWD,oBAAA;AAAA,YACT,oQAAA;AAAA,YACA,UAAA;AAAA,YACA,OAAA,GAAU,WAAA,CAAY,KAAK,CAAA,GAAI,8BAAA;AAAA,YAC/BE,mCAAiB,KAAK,CAAA;AAAA,YACtB,KAAA,IAAS;AAAA,WACX;AAAA,UAEA,QAAA,kBAAAD,cAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWD,oBAAA;AAAA,gBACT,uFAAA;AAAA,gBACA,SAAA;AAAA,gBACA,UAAU,WAAA,GAAc;AAAA;AAC1B;AAAA;AACF;AAAA,OACF;AAAA,MAEC,IAAA,mCACE,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAY,KAAA,EAAO,OAAA,GAAU,GAAA,GAAM,GAAA,EAAK,CAAA;AAAA,MAAA,CAE7D,KAAA,IAAS,WAAA,qBACTD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EACZ,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCA,eAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,QAAA;AAAA,YACT,SAAA,EAAWC,oBAAA;AAAA,cACT,yDAAA;AAAA,cACA,QAAA,IAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,cACA,QAAA,oBAAYC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAsB,QAAA,EAAA,GAAA,EAAC;AAAA;AAAA;AAAA,SACtD;AAAA,QAED,WAAA,oBACCA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4CACb,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,QAED,KAAA,oBAASA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAwB,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EAC1D;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-UH2YXQ2B.cjs","sourcesContent":["// AUTO-GENERATED by scripts/gen-switch-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../../utils/types\";\n\nexport const switchTrack: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses } from \"../inputs.utils\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { switchTrack } from \"./Switch.colors\";\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n color = \"blue\",\n mode,\n ...rest\n },\n ref,\n ) => {\n const autoId = useId();\n const switchId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [checked, setChecked] = useControllableState(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n );\n\n const trackSizes = {\n xs: \"h-3.5 w-6\",\n sm: \"h-4 w-7\",\n md: \"h-5 w-9\",\n lg: \"h-6 w-11\",\n xl: \"h-7 w-[52px]\",\n }[size];\n\n const knobSizes = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const translateOn = {\n xs: \"translate-x-2.5\",\n sm: \"translate-x-3\",\n md: \"translate-x-4\",\n lg: \"translate-x-5\",\n xl: \"translate-x-6\",\n }[size];\n\n return (\n <div {...rest} data-react-fancy-switch=\"\" className={cn(\"flex items-start gap-2\", className)}>\n {!showControl ? (\n <span\n data-react-fancy-display=\"\"\n data-mode=\"view\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm font-medium text-zinc-700 dark:text-zinc-200\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:text-zinc-900 focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:text-white\",\n )}\n >\n {checked ? \"On\" : \"Off\"}\n </span>\n ) : (\n <button\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n onClick={() => setChecked(!checked)}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n trackSizes,\n checked ? switchTrack[color] : \"bg-zinc-200 dark:bg-zinc-600\",\n dirtyRingClasses(dirty),\n error && \"ring-2 ring-red-500/50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform\",\n knobSizes,\n checked ? translateOn : \"translate-x-0\",\n )}\n />\n </button>\n )}\n {name && (\n <input type=\"hidden\" name={name} value={checked ? \"1\" : \"0\"} />\n )}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={switchId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {label}\n {required && <span className=\"ml-0.5 text-red-500\">*</span>}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {description}\n </span>\n )}\n {error && <span className=\"text-xs text-red-500\">{error}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/Switch/Switch.colors.ts","../src/components/inputs/Switch/Switch.tsx"],"names":["forwardRef","useId","useFieldMode","useInlineEdit","useControllableState","jsxs","cn","jsx","dirtyRingClasses"],"mappings":"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","file":"chunk-MPDLL4X3.cjs","sourcesContent":["// AUTO-GENERATED by scripts/gen-switch-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../../utils/types\";\n\nexport const switchTrack: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses } from \"../inputs.utils\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { switchTrack } from \"./Switch.colors\";\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n color = \"blue\",\n mode,\n ...rest\n },\n ref,\n ) => {\n const autoId = useId();\n const switchId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [checked, setChecked] = useControllableState(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n );\n\n const trackSizes = {\n xs: \"h-3.5 w-6\",\n sm: \"h-4 w-7\",\n md: \"h-5 w-9\",\n lg: \"h-6 w-11\",\n xl: \"h-7 w-[52px]\",\n }[size];\n\n const knobSizes = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const translateOn = {\n xs: \"translate-x-2.5\",\n sm: \"translate-x-3\",\n md: \"translate-x-4\",\n lg: \"translate-x-5\",\n xl: \"translate-x-6\",\n }[size];\n\n return (\n <div {...rest} data-react-fancy-switch=\"\" className={cn(\"flex items-start gap-2\", className)}>\n {!showControl ? (\n <span\n data-react-fancy-display=\"\"\n data-mode=\"view\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm font-medium text-zinc-700 dark:text-zinc-200\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:text-zinc-900 focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:text-white\",\n )}\n >\n {checked ? \"On\" : \"Off\"}\n </span>\n ) : (\n <button\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n onClick={() => setChecked(!checked)}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n trackSizes,\n checked ? switchTrack[color] : \"bg-zinc-200 dark:bg-zinc-600\",\n dirtyRingClasses(dirty),\n error && \"ring-2 ring-red-500/50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform\",\n knobSizes,\n checked ? translateOn : \"translate-x-0\",\n )}\n />\n </button>\n )}\n {name && (\n <input type=\"hidden\" name={name} value={checked ? \"1\" : \"0\"} />\n )}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={switchId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {label}\n {required && <span className=\"ml-0.5 text-red-500\">*</span>}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {description}\n </span>\n )}\n {error && <span className=\"text-xs text-red-500\">{error}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-NMXCQOHV.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-NW3GJWJ7.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-OYZDSMNP.cjs"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Text/Text.tsx"],"names":[],"mappings":";;;;AAIA,IAAM,WAAA,GAA8D;AAAA,EAClE,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,aAAA,GAAkE;AAAA,EACtE,MAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,QAAA,EAAU,eAAA;AAAA,EACV,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,YAAA,GAAgE;AAAA,EACpE,OAAA,EAAS,kCAAA;AAAA,EACT,KAAA,EAAO,kCAAA;AAAA,EACP,MAAA,EAAQ,kCAAA;AAAA,EACR,MAAA,EAAQ,gCAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEO,IAAM,IAAA,GAAO,UAAA;AAAA,EAClB,CACE;AAAA,IACE,IAAI,GAAA,GAAM,GAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,MAAA,GAAS,QAAA;AAAA,IACT,KAAA,GAAQ,SAAA;AAAA,IACR,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,uBACE,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,uBAAA,EAAsB,EAAA;AAAA,QACtB,SAAA,EAAW,EAAA;AAAA,UACT,YAAY,IAAI,CAAA;AAAA,UAChB,cAAc,MAAM,CAAA;AAAA,UACpB,aAAa,KAAK,CAAA;AAAA,UAClB;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/Text/Text.tsx"],"names":[],"mappings":";;;;AAIA,IAAM,WAAA,GAA8D;AAAA,EAClE,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,aAAA,GAAkE;AAAA,EACtE,MAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,QAAA,EAAU,eAAA;AAAA,EACV,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,YAAA,GAAgE;AAAA,EACpE,OAAA,EAAS,kCAAA;AAAA,EACT,KAAA,EAAO,kCAAA;AAAA,EACP,MAAA,EAAQ,kCAAA;AAAA,EACR,MAAA,EAAQ,gCAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEO,IAAM,IAAA,GAAO,UAAA;AAAA,EAClB,CACE;AAAA,IACE,IAAI,GAAA,GAAM,GAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,MAAA,GAAS,QAAA;AAAA,IACT,KAAA,GAAQ,SAAA;AAAA,IACR,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,uBACE,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,uBAAA,EAAsB,EAAA;AAAA,QACtB,SAAA,EAAW,EAAA;AAAA,UACT,YAAY,IAAI,CAAA;AAAA,UAChB,cAAc,MAAM,CAAA;AAAA,UACpB,aAAa,KAAK,CAAA;AAAA,UAClB;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-P7AJAN62.js","sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { TextProps } from \"./Text.types\";\n\nconst sizeClasses: Record<NonNullable<TextProps[\"size\"]>, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n};\n\nconst weightClasses: Record<NonNullable<TextProps[\"weight\"]>, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\nconst colorClasses: Record<NonNullable<TextProps[\"color\"]>, string> = {\n default: \"text-zinc-900 dark:text-zinc-100\",\n muted: \"text-zinc-500 dark:text-zinc-400\",\n accent: \"text-blue-600 dark:text-blue-400\",\n danger: \"text-red-600 dark:text-red-400\",\n success: \"text-emerald-600 dark:text-emerald-400\",\n};\n\nexport const Text = forwardRef<HTMLElement, TextProps>(\n (\n {\n as: Tag = \"p\",\n size = \"md\",\n weight = \"normal\",\n color = \"default\",\n className,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <Tag\n ref={ref as React.Ref<never>}\n data-react-fancy-text=\"\"\n className={cn(\n sizeClasses[size],\n weightClasses[weight],\n colorClasses[color],\n className,\n )}\n {...props}\n >\n {children}\n </Tag>\n );\n },\n);\n\nText.displayName = \"Text\";\n"]}
|
|
@@ -150,5 +150,5 @@ var Badge = forwardRef(
|
|
|
150
150
|
Badge.displayName = "Badge";
|
|
151
151
|
|
|
152
152
|
export { Badge };
|
|
153
|
-
//# sourceMappingURL=chunk-
|
|
154
|
-
//# sourceMappingURL=chunk-
|
|
153
|
+
//# sourceMappingURL=chunk-PITWDKKY.js.map
|
|
154
|
+
//# sourceMappingURL=chunk-PITWDKKY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Badge/Badge.colors.ts","../src/components/Badge/Badge.tsx"],"names":[],"mappings":"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","file":"chunk-NPKE2IX6.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-badge-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const badgeSolid: Record<Color, string> = {\n slate: \"bg-slate-600 text-white dark:bg-slate-500\",\n gray: \"bg-gray-600 text-white dark:bg-gray-500\",\n zinc: \"bg-zinc-600 text-white dark:bg-zinc-500\",\n neutral: \"bg-neutral-600 text-white dark:bg-neutral-500\",\n stone: \"bg-stone-600 text-white dark:bg-stone-500\",\n red: \"bg-red-600 text-white dark:bg-red-500\",\n orange: \"bg-orange-600 text-white dark:bg-orange-500\",\n amber: \"bg-amber-400 text-amber-950 dark:bg-amber-300 dark:text-amber-950\",\n yellow: \"bg-yellow-400 text-yellow-950 dark:bg-yellow-300 dark:text-yellow-950\",\n lime: \"bg-lime-400 text-lime-950 dark:bg-lime-300 dark:text-lime-950\",\n green: \"bg-green-600 text-white dark:bg-green-500\",\n emerald: \"bg-emerald-600 text-white dark:bg-emerald-500\",\n teal: \"bg-teal-600 text-white dark:bg-teal-500\",\n cyan: \"bg-cyan-600 text-white dark:bg-cyan-500\",\n sky: \"bg-sky-600 text-white dark:bg-sky-500\",\n blue: \"bg-blue-600 text-white dark:bg-blue-500\",\n indigo: \"bg-indigo-600 text-white dark:bg-indigo-500\",\n violet: \"bg-violet-600 text-white dark:bg-violet-500\",\n purple: \"bg-purple-600 text-white dark:bg-purple-500\",\n fuchsia: \"bg-fuchsia-600 text-white dark:bg-fuchsia-500\",\n pink: \"bg-pink-600 text-white dark:bg-pink-500\",\n rose: \"bg-rose-600 text-white dark:bg-rose-500\",\n};\n\nexport const badgeOutline: Record<Color, string> = {\n slate: \"border border-slate-300 text-slate-700 dark:border-slate-600 dark:text-slate-300\",\n gray: \"border border-gray-300 text-gray-700 dark:border-gray-600 dark:text-gray-300\",\n zinc: \"border border-zinc-300 text-zinc-700 dark:border-zinc-600 dark:text-zinc-300\",\n neutral: \"border border-neutral-300 text-neutral-700 dark:border-neutral-600 dark:text-neutral-300\",\n stone: \"border border-stone-300 text-stone-700 dark:border-stone-600 dark:text-stone-300\",\n red: \"border border-red-300 text-red-700 dark:border-red-600 dark:text-red-300\",\n orange: \"border border-orange-300 text-orange-700 dark:border-orange-600 dark:text-orange-300\",\n amber: \"border border-amber-300 text-amber-700 dark:border-amber-600 dark:text-amber-300\",\n yellow: \"border border-yellow-300 text-yellow-700 dark:border-yellow-600 dark:text-yellow-300\",\n lime: \"border border-lime-300 text-lime-700 dark:border-lime-600 dark:text-lime-300\",\n green: \"border border-green-300 text-green-700 dark:border-green-600 dark:text-green-300\",\n emerald: \"border border-emerald-300 text-emerald-700 dark:border-emerald-600 dark:text-emerald-300\",\n teal: \"border border-teal-300 text-teal-700 dark:border-teal-600 dark:text-teal-300\",\n cyan: \"border border-cyan-300 text-cyan-700 dark:border-cyan-600 dark:text-cyan-300\",\n sky: \"border border-sky-300 text-sky-700 dark:border-sky-600 dark:text-sky-300\",\n blue: \"border border-blue-300 text-blue-700 dark:border-blue-600 dark:text-blue-300\",\n indigo: \"border border-indigo-300 text-indigo-700 dark:border-indigo-600 dark:text-indigo-300\",\n violet: \"border border-violet-300 text-violet-700 dark:border-violet-600 dark:text-violet-300\",\n purple: \"border border-purple-300 text-purple-700 dark:border-purple-600 dark:text-purple-300\",\n fuchsia: \"border border-fuchsia-300 text-fuchsia-700 dark:border-fuchsia-600 dark:text-fuchsia-300\",\n pink: \"border border-pink-300 text-pink-700 dark:border-pink-600 dark:text-pink-300\",\n rose: \"border border-rose-300 text-rose-700 dark:border-rose-600 dark:text-rose-300\",\n};\n\nexport const badgeSoft: Record<Color, string> = {\n slate: \"bg-slate-100 text-slate-700 dark:bg-slate-900/30 dark:text-slate-300\",\n gray: \"bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-300\",\n zinc: \"bg-zinc-100 text-zinc-700 dark:bg-zinc-900/30 dark:text-zinc-300\",\n neutral: \"bg-neutral-100 text-neutral-700 dark:bg-neutral-900/30 dark:text-neutral-300\",\n stone: \"bg-stone-100 text-stone-700 dark:bg-stone-900/30 dark:text-stone-300\",\n red: \"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300\",\n orange: \"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-300\",\n amber: \"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300\",\n yellow: \"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300\",\n lime: \"bg-lime-100 text-lime-700 dark:bg-lime-900/30 dark:text-lime-300\",\n green: \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300\",\n emerald: \"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300\",\n teal: \"bg-teal-100 text-teal-700 dark:bg-teal-900/30 dark:text-teal-300\",\n cyan: \"bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300\",\n sky: \"bg-sky-100 text-sky-700 dark:bg-sky-900/30 dark:text-sky-300\",\n blue: \"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300\",\n indigo: \"bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-300\",\n violet: \"bg-violet-100 text-violet-700 dark:bg-violet-900/30 dark:text-violet-300\",\n purple: \"bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-300\",\n fuchsia: \"bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/30 dark:text-fuchsia-300\",\n pink: \"bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-300\",\n rose: \"bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-300\",\n};\n\nexport const badgeDot: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { BadgeProps } from \"./Badge.types\";\nimport { badgeSolid, badgeOutline, badgeSoft, badgeDot } from \"./Badge.colors\";\n\ntype BadgeVariant = NonNullable<BadgeProps[\"variant\"]>;\ntype BadgeSize = NonNullable<BadgeProps[\"size\"]>;\n\n// Full Tailwind v4 palette — see Badge.colors.ts (generated literal class maps).\nconst variantMap: Record<BadgeVariant, typeof badgeSoft> = {\n solid: badgeSolid,\n outline: badgeOutline,\n soft: badgeSoft,\n};\n\nconst sizeClasses: Record<BadgeSize, string> = {\n sm: \"text-xs px-1.5 py-0.5\",\n md: \"text-sm px-2 py-0.5\",\n lg: \"text-base px-2.5 py-1\",\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n color = \"zinc\",\n variant = \"soft\",\n size = \"md\",\n dot = false,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <span\n ref={ref}\n data-react-fancy-badge=\"\"\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full font-medium\",\n sizeClasses[size],\n variantMap[variant][color],\n className,\n )}\n {...props}\n >\n {dot && (\n <span\n className={cn(\n \"inline-block h-1.5 w-1.5 rounded-full\",\n badgeDot[color],\n )}\n />\n )}\n {children}\n </span>\n );\n },\n);\n\nBadge.displayName = \"Badge\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Badge/Badge.colors.ts","../src/components/Badge/Badge.tsx"],"names":[],"mappings":"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","file":"chunk-PITWDKKY.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-badge-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const badgeSolid: Record<Color, string> = {\n slate: \"bg-slate-600 text-white dark:bg-slate-500\",\n gray: \"bg-gray-600 text-white dark:bg-gray-500\",\n zinc: \"bg-zinc-600 text-white dark:bg-zinc-500\",\n neutral: \"bg-neutral-600 text-white dark:bg-neutral-500\",\n stone: \"bg-stone-600 text-white dark:bg-stone-500\",\n red: \"bg-red-600 text-white dark:bg-red-500\",\n orange: \"bg-orange-600 text-white dark:bg-orange-500\",\n amber: \"bg-amber-400 text-amber-950 dark:bg-amber-300 dark:text-amber-950\",\n yellow: \"bg-yellow-400 text-yellow-950 dark:bg-yellow-300 dark:text-yellow-950\",\n lime: \"bg-lime-400 text-lime-950 dark:bg-lime-300 dark:text-lime-950\",\n green: \"bg-green-600 text-white dark:bg-green-500\",\n emerald: \"bg-emerald-600 text-white dark:bg-emerald-500\",\n teal: \"bg-teal-600 text-white dark:bg-teal-500\",\n cyan: \"bg-cyan-600 text-white dark:bg-cyan-500\",\n sky: \"bg-sky-600 text-white dark:bg-sky-500\",\n blue: \"bg-blue-600 text-white dark:bg-blue-500\",\n indigo: \"bg-indigo-600 text-white dark:bg-indigo-500\",\n violet: \"bg-violet-600 text-white dark:bg-violet-500\",\n purple: \"bg-purple-600 text-white dark:bg-purple-500\",\n fuchsia: \"bg-fuchsia-600 text-white dark:bg-fuchsia-500\",\n pink: \"bg-pink-600 text-white dark:bg-pink-500\",\n rose: \"bg-rose-600 text-white dark:bg-rose-500\",\n};\n\nexport const badgeOutline: Record<Color, string> = {\n slate: \"border border-slate-300 text-slate-700 dark:border-slate-600 dark:text-slate-300\",\n gray: \"border border-gray-300 text-gray-700 dark:border-gray-600 dark:text-gray-300\",\n zinc: \"border border-zinc-300 text-zinc-700 dark:border-zinc-600 dark:text-zinc-300\",\n neutral: \"border border-neutral-300 text-neutral-700 dark:border-neutral-600 dark:text-neutral-300\",\n stone: \"border border-stone-300 text-stone-700 dark:border-stone-600 dark:text-stone-300\",\n red: \"border border-red-300 text-red-700 dark:border-red-600 dark:text-red-300\",\n orange: \"border border-orange-300 text-orange-700 dark:border-orange-600 dark:text-orange-300\",\n amber: \"border border-amber-300 text-amber-700 dark:border-amber-600 dark:text-amber-300\",\n yellow: \"border border-yellow-300 text-yellow-700 dark:border-yellow-600 dark:text-yellow-300\",\n lime: \"border border-lime-300 text-lime-700 dark:border-lime-600 dark:text-lime-300\",\n green: \"border border-green-300 text-green-700 dark:border-green-600 dark:text-green-300\",\n emerald: \"border border-emerald-300 text-emerald-700 dark:border-emerald-600 dark:text-emerald-300\",\n teal: \"border border-teal-300 text-teal-700 dark:border-teal-600 dark:text-teal-300\",\n cyan: \"border border-cyan-300 text-cyan-700 dark:border-cyan-600 dark:text-cyan-300\",\n sky: \"border border-sky-300 text-sky-700 dark:border-sky-600 dark:text-sky-300\",\n blue: \"border border-blue-300 text-blue-700 dark:border-blue-600 dark:text-blue-300\",\n indigo: \"border border-indigo-300 text-indigo-700 dark:border-indigo-600 dark:text-indigo-300\",\n violet: \"border border-violet-300 text-violet-700 dark:border-violet-600 dark:text-violet-300\",\n purple: \"border border-purple-300 text-purple-700 dark:border-purple-600 dark:text-purple-300\",\n fuchsia: \"border border-fuchsia-300 text-fuchsia-700 dark:border-fuchsia-600 dark:text-fuchsia-300\",\n pink: \"border border-pink-300 text-pink-700 dark:border-pink-600 dark:text-pink-300\",\n rose: \"border border-rose-300 text-rose-700 dark:border-rose-600 dark:text-rose-300\",\n};\n\nexport const badgeSoft: Record<Color, string> = {\n slate: \"bg-slate-100 text-slate-700 dark:bg-slate-900/30 dark:text-slate-300\",\n gray: \"bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-300\",\n zinc: \"bg-zinc-100 text-zinc-700 dark:bg-zinc-900/30 dark:text-zinc-300\",\n neutral: \"bg-neutral-100 text-neutral-700 dark:bg-neutral-900/30 dark:text-neutral-300\",\n stone: \"bg-stone-100 text-stone-700 dark:bg-stone-900/30 dark:text-stone-300\",\n red: \"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300\",\n orange: \"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-300\",\n amber: \"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300\",\n yellow: \"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300\",\n lime: \"bg-lime-100 text-lime-700 dark:bg-lime-900/30 dark:text-lime-300\",\n green: \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300\",\n emerald: \"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300\",\n teal: \"bg-teal-100 text-teal-700 dark:bg-teal-900/30 dark:text-teal-300\",\n cyan: \"bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300\",\n sky: \"bg-sky-100 text-sky-700 dark:bg-sky-900/30 dark:text-sky-300\",\n blue: \"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300\",\n indigo: \"bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-300\",\n violet: \"bg-violet-100 text-violet-700 dark:bg-violet-900/30 dark:text-violet-300\",\n purple: \"bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-300\",\n fuchsia: \"bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/30 dark:text-fuchsia-300\",\n pink: \"bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-300\",\n rose: \"bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-300\",\n};\n\nexport const badgeDot: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { BadgeProps } from \"./Badge.types\";\nimport { badgeSolid, badgeOutline, badgeSoft, badgeDot } from \"./Badge.colors\";\n\ntype BadgeVariant = NonNullable<BadgeProps[\"variant\"]>;\ntype BadgeSize = NonNullable<BadgeProps[\"size\"]>;\n\n// Full Tailwind v4 palette — see Badge.colors.ts (generated literal class maps).\nconst variantMap: Record<BadgeVariant, typeof badgeSoft> = {\n solid: badgeSolid,\n outline: badgeOutline,\n soft: badgeSoft,\n};\n\nconst sizeClasses: Record<BadgeSize, string> = {\n sm: \"text-xs px-1.5 py-0.5\",\n md: \"text-sm px-2 py-0.5\",\n lg: \"text-base px-2.5 py-1\",\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n color = \"zinc\",\n variant = \"soft\",\n size = \"md\",\n dot = false,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <span\n ref={ref}\n data-react-fancy-badge=\"\"\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full font-medium\",\n sizeClasses[size],\n variantMap[variant][color],\n className,\n )}\n {...props}\n >\n {dot && (\n <span\n className={cn(\n \"inline-block h-1.5 w-1.5 rounded-full\",\n badgeDot[color],\n )}\n />\n )}\n {children}\n </span>\n );\n },\n);\n\nBadge.displayName = \"Badge\";\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Textarea } from './chunk-4UA45GB4.js';
|
|
2
|
-
import { Badge } from './chunk-
|
|
3
|
-
import { Button } from './chunk-
|
|
2
|
+
import { Badge } from './chunk-PITWDKKY.js';
|
|
3
|
+
import { Button } from './chunk-6RYZ2MOE.js';
|
|
4
4
|
import { useRef, useState, useCallback, useEffect } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -198,5 +198,5 @@ function caretRect(ta, start, end) {
|
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
export { MagicWand };
|
|
201
|
-
//# sourceMappingURL=chunk-
|
|
202
|
-
//# sourceMappingURL=chunk-
|
|
201
|
+
//# sourceMappingURL=chunk-PJ4TQ6YO.js.map
|
|
202
|
+
//# sourceMappingURL=chunk-PJ4TQ6YO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/MagicWand/MagicWand.tsx"],"names":[],"mappings":"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","file":"chunk-7AFEKDUS.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Button } from \"../Button\";\nimport { Badge } from \"../Badge\";\nimport { Textarea } from \"../inputs/Textarea/Textarea\";\n\n/**\n * MagicWand — selection-anchored floating toolbar for text inputs.\n *\n * When the user highlights text inside the wrapped <Textarea>, a small\n * pill of AI quick-actions floats above the selection. Clicking an\n * action invokes the host callback with the selected substring + range;\n * the host returns a replacement string and MagicWand swaps it in-place.\n *\n * <MagicWand\n * value={body}\n * onValueChange={setBody}\n * actions={[\n * { id: \"rephrase\", label: \"Rephrase\", hint: \"same meaning, different words\",\n * run: async (s) => await ai.rephrase(s) },\n * …\n * ]}\n * />\n *\n * Two appearances: `\"floating\"` (default — full labels) and `\"pill\"`\n * (icon-only, compact). Auto-hides on click-away or scroll by default.\n */\nexport type MagicWandSelection = { start: number; end: number; text: string };\n\nexport type MagicWandAction = {\n /** Stable id, also shown as the busy-state key. */\n id: string;\n /** Display label (first character used in `pill` mode). */\n label: string;\n /** Tooltip body. */\n hint?: string;\n /** Optional kind chip rendered next to the label. */\n tag?: string;\n /** Returns the replacement text for the selection. */\n run: (selection: string, range: MagicWandSelection) => Promise<string> | string;\n};\n\nexport type MagicWandAppearance = \"pill\" | \"floating\";\n\nexport interface MagicWandProps {\n /** Controlled textarea value. */\n value: string;\n /** Called on every edit. */\n onValueChange: (v: string) => void;\n /** Action list. */\n actions: MagicWandAction[];\n /** Visual treatment. Defaults to \"floating\". */\n appearance?: MagicWandAppearance;\n /** Auto-hide the wand on click-away or scroll. Defaults to true. */\n autoHide?: boolean;\n /** Textarea rows. */\n rows?: number;\n /** Placeholder. */\n placeholder?: string;\n /** Called after an action runs successfully. */\n onAction?: (action: MagicWandAction, selection: MagicWandSelection, replacement: string) => void;\n}\n\nexport function MagicWand({\n value,\n onValueChange,\n actions,\n appearance = \"floating\",\n autoHide = true,\n rows = 6,\n placeholder,\n onAction,\n}: MagicWandProps) {\n const taRef = useRef<HTMLTextAreaElement>(null);\n const wandRef = useRef<HTMLDivElement>(null);\n const [sel, setSel] = useState<MagicWandSelection | null>(null);\n const [pos, setPos] = useState<{ x: number; y: number } | null>(null);\n const [busy, setBusy] = useState<string | null>(null);\n\n const measureSelection = useCallback(() => {\n const ta = taRef.current;\n if (!ta) return;\n const start = ta.selectionStart ?? 0;\n const end = ta.selectionEnd ?? 0;\n if (start === end) {\n setSel(null);\n setPos(null);\n return;\n }\n const text = ta.value.slice(start, end);\n setSel({ start, end, text });\n const rect = caretRect(ta, start, end);\n if (rect) setPos({ x: rect.x, y: rect.y });\n }, []);\n\n useEffect(() => {\n if (!autoHide) return;\n const onScroll = () => {\n setSel(null);\n setPos(null);\n };\n window.addEventListener(\"scroll\", onScroll, true);\n return () => window.removeEventListener(\"scroll\", onScroll, true);\n }, [autoHide]);\n\n useEffect(() => {\n if (!autoHide) return;\n const onDocMouseDown = (e: MouseEvent) => {\n if (wandRef.current?.contains(e.target as Node)) return;\n if (taRef.current?.contains(e.target as Node)) return;\n setSel(null);\n setPos(null);\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [autoHide]);\n\n const handleAction = async (action: MagicWandAction) => {\n if (!sel) return;\n setBusy(action.id);\n try {\n const replacement = await action.run(sel.text, sel);\n const next = value.slice(0, sel.start) + replacement + value.slice(sel.end);\n onValueChange(next);\n onAction?.(action, sel, replacement);\n } finally {\n setBusy(null);\n setSel(null);\n setPos(null);\n }\n };\n\n return (\n <div className=\"relative\">\n <Textarea\n ref={taRef as unknown as React.Ref<HTMLTextAreaElement>}\n value={value}\n onValueChange={onValueChange}\n onSelect={measureSelection}\n onKeyUp={measureSelection}\n onMouseUp={measureSelection}\n rows={rows}\n placeholder={placeholder}\n />\n {sel && pos && (\n <Wand\n ref={wandRef}\n pos={pos}\n actions={actions}\n appearance={appearance}\n busy={busy}\n onAction={handleAction}\n selectionLength={sel.text.length}\n />\n )}\n </div>\n );\n}\n\nfunction Wand({\n ref,\n pos,\n actions,\n appearance,\n busy,\n onAction,\n selectionLength,\n}: {\n ref: React.RefObject<HTMLDivElement | null>;\n pos: { x: number; y: number };\n actions: MagicWandAction[];\n appearance: MagicWandAppearance;\n busy: string | null;\n onAction: (a: MagicWandAction) => void;\n selectionLength: number;\n}) {\n return (\n <div\n ref={ref}\n className=\"absolute z-20 -translate-x-1/2 -translate-y-full\"\n style={{ left: pos.x, top: pos.y - 6 }}\n >\n <div className=\"flex items-center gap-1 rounded-full border border-violet-300 bg-white px-1.5 py-1 shadow-lg ring-1 ring-violet-200 dark:border-violet-700 dark:bg-zinc-900 dark:ring-violet-900\">\n <span className=\"ml-1 mr-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-violet-700 dark:text-violet-300\">\n <span aria-hidden>✦</span>\n {appearance === \"floating\" && (\n <Badge color=\"violet\">{selectionLength} chars</Badge>\n )}\n </span>\n {actions.map((a) => (\n <Button\n key={a.id}\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => onAction(a)}\n disabled={busy !== null}\n title={a.hint}\n >\n {busy === a.id ? \"…\" : appearance === \"pill\" ? a.label[0] : a.label}\n {appearance === \"floating\" && a.tag && (\n <span className=\"ml-1 rounded-full bg-zinc-100 px-1 text-[9px] font-medium text-zinc-500 dark:bg-zinc-800\">\n {a.tag}\n </span>\n )}\n </Button>\n ))}\n </div>\n <div className=\"absolute left-1/2 top-full -translate-x-1/2 -translate-y-px\">\n <div className=\"h-2 w-2 rotate-45 border-b border-r border-violet-300 bg-white dark:border-violet-700 dark:bg-zinc-900\" />\n </div>\n </div>\n );\n}\n\n/**\n * Caret/selection geometry: mirror the textarea into a hidden div and\n * measure the selected substring's bounding rect. Not perfect for\n * resized textareas, but works for typical chat composers.\n */\nfunction caretRect(\n ta: HTMLTextAreaElement,\n start: number,\n end: number,\n): { x: number; y: number } | null {\n const div = document.createElement(\"div\");\n const style = getComputedStyle(ta);\n const props = [\n \"boxSizing\",\n \"width\",\n \"height\",\n \"overflowX\",\n \"overflowY\",\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"fontStyle\",\n \"fontVariant\",\n \"fontWeight\",\n \"fontStretch\",\n \"fontSize\",\n \"fontSizeAdjust\",\n \"lineHeight\",\n \"fontFamily\",\n \"textAlign\",\n \"textTransform\",\n \"textIndent\",\n \"letterSpacing\",\n \"wordSpacing\",\n \"tabSize\",\n ] as const;\n for (const p of props) (div.style as any)[p] = (style as any)[p];\n div.style.position = \"absolute\";\n div.style.top = \"-9999px\";\n div.style.left = \"-9999px\";\n div.style.whiteSpace = \"pre-wrap\";\n div.style.wordWrap = \"break-word\";\n\n const value = ta.value;\n div.textContent = value.substring(0, start);\n const startSpan = document.createElement(\"span\");\n startSpan.textContent = value.substring(start, end) || \".\";\n div.appendChild(startSpan);\n\n document.body.appendChild(div);\n const taRect = ta.getBoundingClientRect();\n const parentRect =\n (ta.offsetParent as HTMLElement | null)?.getBoundingClientRect() ?? taRect;\n const spanRect = startSpan.getBoundingClientRect();\n const divRect = div.getBoundingClientRect();\n const offsetX = spanRect.left - divRect.left;\n const offsetY = spanRect.top - divRect.top;\n document.body.removeChild(div);\n\n const x = taRect.left - parentRect.left + offsetX + spanRect.width / 2;\n const y = taRect.top - parentRect.top + offsetY - ta.scrollTop;\n return { x, y };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/MagicWand/MagicWand.tsx"],"names":[],"mappings":"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","file":"chunk-PJ4TQ6YO.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Button } from \"../Button\";\nimport { Badge } from \"../Badge\";\nimport { Textarea } from \"../inputs/Textarea/Textarea\";\n\n/**\n * MagicWand — selection-anchored floating toolbar for text inputs.\n *\n * When the user highlights text inside the wrapped <Textarea>, a small\n * pill of AI quick-actions floats above the selection. Clicking an\n * action invokes the host callback with the selected substring + range;\n * the host returns a replacement string and MagicWand swaps it in-place.\n *\n * <MagicWand\n * value={body}\n * onValueChange={setBody}\n * actions={[\n * { id: \"rephrase\", label: \"Rephrase\", hint: \"same meaning, different words\",\n * run: async (s) => await ai.rephrase(s) },\n * …\n * ]}\n * />\n *\n * Two appearances: `\"floating\"` (default — full labels) and `\"pill\"`\n * (icon-only, compact). Auto-hides on click-away or scroll by default.\n */\nexport type MagicWandSelection = { start: number; end: number; text: string };\n\nexport type MagicWandAction = {\n /** Stable id, also shown as the busy-state key. */\n id: string;\n /** Display label (first character used in `pill` mode). */\n label: string;\n /** Tooltip body. */\n hint?: string;\n /** Optional kind chip rendered next to the label. */\n tag?: string;\n /** Returns the replacement text for the selection. */\n run: (selection: string, range: MagicWandSelection) => Promise<string> | string;\n};\n\nexport type MagicWandAppearance = \"pill\" | \"floating\";\n\nexport interface MagicWandProps {\n /** Controlled textarea value. */\n value: string;\n /** Called on every edit. */\n onValueChange: (v: string) => void;\n /** Action list. */\n actions: MagicWandAction[];\n /** Visual treatment. Defaults to \"floating\". */\n appearance?: MagicWandAppearance;\n /** Auto-hide the wand on click-away or scroll. Defaults to true. */\n autoHide?: boolean;\n /** Textarea rows. */\n rows?: number;\n /** Placeholder. */\n placeholder?: string;\n /** Called after an action runs successfully. */\n onAction?: (action: MagicWandAction, selection: MagicWandSelection, replacement: string) => void;\n}\n\nexport function MagicWand({\n value,\n onValueChange,\n actions,\n appearance = \"floating\",\n autoHide = true,\n rows = 6,\n placeholder,\n onAction,\n}: MagicWandProps) {\n const taRef = useRef<HTMLTextAreaElement>(null);\n const wandRef = useRef<HTMLDivElement>(null);\n const [sel, setSel] = useState<MagicWandSelection | null>(null);\n const [pos, setPos] = useState<{ x: number; y: number } | null>(null);\n const [busy, setBusy] = useState<string | null>(null);\n\n const measureSelection = useCallback(() => {\n const ta = taRef.current;\n if (!ta) return;\n const start = ta.selectionStart ?? 0;\n const end = ta.selectionEnd ?? 0;\n if (start === end) {\n setSel(null);\n setPos(null);\n return;\n }\n const text = ta.value.slice(start, end);\n setSel({ start, end, text });\n const rect = caretRect(ta, start, end);\n if (rect) setPos({ x: rect.x, y: rect.y });\n }, []);\n\n useEffect(() => {\n if (!autoHide) return;\n const onScroll = () => {\n setSel(null);\n setPos(null);\n };\n window.addEventListener(\"scroll\", onScroll, true);\n return () => window.removeEventListener(\"scroll\", onScroll, true);\n }, [autoHide]);\n\n useEffect(() => {\n if (!autoHide) return;\n const onDocMouseDown = (e: MouseEvent) => {\n if (wandRef.current?.contains(e.target as Node)) return;\n if (taRef.current?.contains(e.target as Node)) return;\n setSel(null);\n setPos(null);\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [autoHide]);\n\n const handleAction = async (action: MagicWandAction) => {\n if (!sel) return;\n setBusy(action.id);\n try {\n const replacement = await action.run(sel.text, sel);\n const next = value.slice(0, sel.start) + replacement + value.slice(sel.end);\n onValueChange(next);\n onAction?.(action, sel, replacement);\n } finally {\n setBusy(null);\n setSel(null);\n setPos(null);\n }\n };\n\n return (\n <div className=\"relative\">\n <Textarea\n ref={taRef as unknown as React.Ref<HTMLTextAreaElement>}\n value={value}\n onValueChange={onValueChange}\n onSelect={measureSelection}\n onKeyUp={measureSelection}\n onMouseUp={measureSelection}\n rows={rows}\n placeholder={placeholder}\n />\n {sel && pos && (\n <Wand\n ref={wandRef}\n pos={pos}\n actions={actions}\n appearance={appearance}\n busy={busy}\n onAction={handleAction}\n selectionLength={sel.text.length}\n />\n )}\n </div>\n );\n}\n\nfunction Wand({\n ref,\n pos,\n actions,\n appearance,\n busy,\n onAction,\n selectionLength,\n}: {\n ref: React.RefObject<HTMLDivElement | null>;\n pos: { x: number; y: number };\n actions: MagicWandAction[];\n appearance: MagicWandAppearance;\n busy: string | null;\n onAction: (a: MagicWandAction) => void;\n selectionLength: number;\n}) {\n return (\n <div\n ref={ref}\n className=\"absolute z-20 -translate-x-1/2 -translate-y-full\"\n style={{ left: pos.x, top: pos.y - 6 }}\n >\n <div className=\"flex items-center gap-1 rounded-full border border-violet-300 bg-white px-1.5 py-1 shadow-lg ring-1 ring-violet-200 dark:border-violet-700 dark:bg-zinc-900 dark:ring-violet-900\">\n <span className=\"ml-1 mr-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-violet-700 dark:text-violet-300\">\n <span aria-hidden>✦</span>\n {appearance === \"floating\" && (\n <Badge color=\"violet\">{selectionLength} chars</Badge>\n )}\n </span>\n {actions.map((a) => (\n <Button\n key={a.id}\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => onAction(a)}\n disabled={busy !== null}\n title={a.hint}\n >\n {busy === a.id ? \"…\" : appearance === \"pill\" ? a.label[0] : a.label}\n {appearance === \"floating\" && a.tag && (\n <span className=\"ml-1 rounded-full bg-zinc-100 px-1 text-[9px] font-medium text-zinc-500 dark:bg-zinc-800\">\n {a.tag}\n </span>\n )}\n </Button>\n ))}\n </div>\n <div className=\"absolute left-1/2 top-full -translate-x-1/2 -translate-y-px\">\n <div className=\"h-2 w-2 rotate-45 border-b border-r border-violet-300 bg-white dark:border-violet-700 dark:bg-zinc-900\" />\n </div>\n </div>\n );\n}\n\n/**\n * Caret/selection geometry: mirror the textarea into a hidden div and\n * measure the selected substring's bounding rect. Not perfect for\n * resized textareas, but works for typical chat composers.\n */\nfunction caretRect(\n ta: HTMLTextAreaElement,\n start: number,\n end: number,\n): { x: number; y: number } | null {\n const div = document.createElement(\"div\");\n const style = getComputedStyle(ta);\n const props = [\n \"boxSizing\",\n \"width\",\n \"height\",\n \"overflowX\",\n \"overflowY\",\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"fontStyle\",\n \"fontVariant\",\n \"fontWeight\",\n \"fontStretch\",\n \"fontSize\",\n \"fontSizeAdjust\",\n \"lineHeight\",\n \"fontFamily\",\n \"textAlign\",\n \"textTransform\",\n \"textIndent\",\n \"letterSpacing\",\n \"wordSpacing\",\n \"tabSize\",\n ] as const;\n for (const p of props) (div.style as any)[p] = (style as any)[p];\n div.style.position = \"absolute\";\n div.style.top = \"-9999px\";\n div.style.left = \"-9999px\";\n div.style.whiteSpace = \"pre-wrap\";\n div.style.wordWrap = \"break-word\";\n\n const value = ta.value;\n div.textContent = value.substring(0, start);\n const startSpan = document.createElement(\"span\");\n startSpan.textContent = value.substring(start, end) || \".\";\n div.appendChild(startSpan);\n\n document.body.appendChild(div);\n const taRect = ta.getBoundingClientRect();\n const parentRect =\n (ta.offsetParent as HTMLElement | null)?.getBoundingClientRect() ?? taRect;\n const spanRect = startSpan.getBoundingClientRect();\n const divRect = div.getBoundingClientRect();\n const offsetX = spanRect.left - divRect.left;\n const offsetY = spanRect.top - divRect.top;\n document.body.removeChild(div);\n\n const x = taRect.left - parentRect.left + offsetX + spanRect.width / 2;\n const y = taRect.top - parentRect.top + offsetY - ta.scrollTop;\n return { x, y };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-QGPMVFZJ.cjs"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunk5I4PR2KV_cjs = require('./chunk-5I4PR2KV.cjs');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkX5VZRFQD_cjs = require('./chunk-X5VZRFQD.cjs');
|
|
5
|
+
var chunkHTKDPFLJ_cjs = require('./chunk-HTKDPFLJ.cjs');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
8
|
|
|
@@ -117,13 +117,13 @@ function Wand({
|
|
|
117
117
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 rounded-full border border-violet-300 bg-white px-1.5 py-1 shadow-lg ring-1 ring-violet-200 dark:border-violet-700 dark:bg-zinc-900 dark:ring-violet-900", children: [
|
|
118
118
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1 mr-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-violet-700 dark:text-violet-300", children: [
|
|
119
119
|
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, children: "\u2726" }),
|
|
120
|
-
appearance === "floating" && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
120
|
+
appearance === "floating" && /* @__PURE__ */ jsxRuntime.jsxs(chunkX5VZRFQD_cjs.Badge, { color: "violet", children: [
|
|
121
121
|
selectionLength,
|
|
122
122
|
" chars"
|
|
123
123
|
] })
|
|
124
124
|
] }),
|
|
125
125
|
actions.map((a) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
126
|
-
|
|
126
|
+
chunkHTKDPFLJ_cjs.Button,
|
|
127
127
|
{
|
|
128
128
|
size: "sm",
|
|
129
129
|
variant: "ghost",
|
|
@@ -200,5 +200,5 @@ function caretRect(ta, start, end) {
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
exports.MagicWand = MagicWand;
|
|
203
|
-
//# sourceMappingURL=chunk-
|
|
204
|
-
//# sourceMappingURL=chunk-
|
|
203
|
+
//# sourceMappingURL=chunk-RMFLRBUC.cjs.map
|
|
204
|
+
//# sourceMappingURL=chunk-RMFLRBUC.cjs.map
|