@purpur/library 9.7.4 → 9.8.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/.lintstagedrc.mts +10 -0
- package/@types/scss.d.ts +4 -0
- package/CHANGELOG.json +4062 -0
- package/CHANGELOG.md +2118 -0
- package/dist/LICENSE.txt +7 -7
- package/dist/{ThemeProvider-DiDBfyFA.mjs → ThemeProvider-BJ25_asg.mjs} +13 -13
- package/dist/{ThemeProvider-DiDBfyFA.mjs.map → ThemeProvider-BJ25_asg.mjs.map} +1 -1
- package/dist/{ThemeProvider-D7oXcAde.js → ThemeProvider-BJGm3zai.js} +2 -2
- package/dist/{ThemeProvider-D7oXcAde.js.map → ThemeProvider-BJGm3zai.js.map} +1 -1
- package/dist/{autocomplete-BEGRn-Wh.mjs → autocomplete-A9-Ni60G.mjs} +2 -2
- package/dist/{autocomplete-BEGRn-Wh.mjs.map → autocomplete-A9-Ni60G.mjs.map} +1 -1
- package/dist/{autocomplete-3kV1btuI.js → autocomplete-Bbth0nDG.js} +2 -2
- package/dist/{autocomplete-3kV1btuI.js.map → autocomplete-Bbth0nDG.js.map} +1 -1
- package/dist/autocomplete.cjs.js +1 -1
- package/dist/autocomplete.es.js +1 -1
- package/dist/components/accordion/src/accordion.visual.fixtures.d.ts +13 -0
- package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -0
- package/dist/components/badge/src/badge.visual.fixtures.d.ts +13 -0
- package/dist/components/badge/src/badge.visual.fixtures.d.ts.map +1 -0
- package/dist/components/footer/src/telia-logo.d.ts.map +1 -1
- package/dist/components/hero-banner/src/hero-banner-types.d.ts +48 -0
- package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -0
- package/dist/components/hero-banner/src/hero-banner.d.ts +5 -48
- package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
- package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts +1 -1
- package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts.map +1 -1
- package/dist/components-metadata.js +2 -2
- package/dist/{date-field-BKKty89_.js → date-field-CKxEWHG3.js} +2 -2
- package/dist/{date-field-BKKty89_.js.map → date-field-CKxEWHG3.js.map} +1 -1
- package/dist/{date-field-Cv5CKR1y.mjs → date-field-HEFdHIxk.mjs} +2 -2
- package/dist/{date-field-Cv5CKR1y.mjs.map → date-field-HEFdHIxk.mjs.map} +1 -1
- package/dist/date-field.cjs.js +1 -1
- package/dist/date-field.es.js +1 -1
- package/dist/{date-picker-CIizn3Pv.js → date-picker-CDBwkAJI.js} +2 -2
- package/dist/{date-picker-CIizn3Pv.js.map → date-picker-CDBwkAJI.js.map} +1 -1
- package/dist/{date-picker-DixxW60s.mjs → date-picker-cQewKIMN.mjs} +6 -6
- package/dist/{date-picker-DixxW60s.mjs.map → date-picker-cQewKIMN.mjs.map} +1 -1
- package/dist/date-picker.cjs.js +1 -1
- package/dist/date-picker.es.js +1 -1
- package/dist/{date-range-field-D8vLeSwp.js → date-range-field-D7Hn9FGN.js} +2 -2
- package/dist/{date-range-field-D8vLeSwp.js.map → date-range-field-D7Hn9FGN.js.map} +1 -1
- package/dist/{date-range-field-CFcjprIl.mjs → date-range-field-_WctWD29.mjs} +2 -2
- package/dist/{date-range-field-CFcjprIl.mjs.map → date-range-field-_WctWD29.mjs.map} +1 -1
- package/dist/date-range-field.cjs.js +1 -1
- package/dist/date-range-field.es.js +1 -1
- package/dist/{drawer-DyhsP34o.js → drawer-DyLQfvEh.js} +2 -2
- package/dist/{drawer-DyhsP34o.js.map → drawer-DyLQfvEh.js.map} +1 -1
- package/dist/{drawer-BzkRd9F0.mjs → drawer-cIUx6WSZ.mjs} +3 -3
- package/dist/{drawer-BzkRd9F0.mjs.map → drawer-cIUx6WSZ.mjs.map} +1 -1
- package/dist/drawer.cjs.js +1 -1
- package/dist/drawer.es.js +1 -1
- package/dist/{footer-DenAcikt.mjs → footer-BMlXRro2.mjs} +86 -96
- package/dist/footer-BMlXRro2.mjs.map +1 -0
- package/dist/footer-cet787Iq.js +2 -0
- package/dist/footer-cet787Iq.js.map +1 -0
- package/dist/footer.cjs.js +1 -1
- package/dist/footer.es.js +1 -1
- package/dist/{hero-banner-B7xrDfzN.mjs → hero-banner-B08jC0Sf.mjs} +77 -77
- package/dist/hero-banner-B08jC0Sf.mjs.map +1 -0
- package/dist/hero-banner-D__doaU7.js +2 -0
- package/dist/hero-banner-D__doaU7.js.map +1 -0
- package/dist/hero-banner.cjs.js +1 -1
- package/dist/hero-banner.es.js +1 -1
- package/dist/library.cjs.js +1 -1
- package/dist/library.es.js +21 -21
- package/dist/{modal-DJn9idcw.js → modal-CmPPxJ7Y.js} +2 -2
- package/dist/{modal-DJn9idcw.js.map → modal-CmPPxJ7Y.js.map} +1 -1
- package/dist/{modal-EIP36327.mjs → modal-Evh8sCBO.mjs} +3 -3
- package/dist/{modal-EIP36327.mjs.map → modal-Evh8sCBO.mjs.map} +1 -1
- package/dist/modal.cjs.js +1 -1
- package/dist/modal.es.js +1 -1
- package/dist/{popover-DERrvReO.mjs → popover-BSUdf0Ae.mjs} +3 -3
- package/dist/{popover-DERrvReO.mjs.map → popover-BSUdf0Ae.mjs.map} +1 -1
- package/dist/{popover-DnGgzfQr.js → popover-XJqF5DHT.js} +2 -2
- package/dist/{popover-DnGgzfQr.js.map → popover-XJqF5DHT.js.map} +1 -1
- package/dist/popover.cjs.js +1 -1
- package/dist/popover.es.js +1 -1
- package/dist/{promotion-card-DKc2Cx1h.js → promotion-card-BnXD2mkp.js} +2 -2
- package/dist/{promotion-card-DKc2Cx1h.js.map → promotion-card-BnXD2mkp.js.map} +1 -1
- package/dist/{promotion-card-BnzIVNQ4.mjs → promotion-card-DOO0VCI8.mjs} +2 -2
- package/dist/{promotion-card-BnzIVNQ4.mjs.map → promotion-card-DOO0VCI8.mjs.map} +1 -1
- package/dist/promotion-card.cjs.js +1 -1
- package/dist/promotion-card.es.js +1 -1
- package/dist/purpur.css +1 -1
- package/dist/{quantity-selector-CvBvnMeB.mjs → quantity-selector-B4YnfmNb.mjs} +2 -2
- package/dist/{quantity-selector-CvBvnMeB.mjs.map → quantity-selector-B4YnfmNb.mjs.map} +1 -1
- package/dist/{quantity-selector-CDSfcTb1.js → quantity-selector-CTBoxiPO.js} +2 -2
- package/dist/{quantity-selector-CDSfcTb1.js.map → quantity-selector-CTBoxiPO.js.map} +1 -1
- package/dist/quantity-selector.cjs.js +1 -1
- package/dist/quantity-selector.es.js +1 -1
- package/dist/{search-field-DKyNh7pE.mjs → search-field-_h8xn-sj.mjs} +2 -2
- package/dist/{search-field-DKyNh7pE.mjs.map → search-field-_h8xn-sj.mjs.map} +1 -1
- package/dist/{search-field-2vdDbiT0.js → search-field-vh6uz5KV.js} +2 -2
- package/dist/{search-field-2vdDbiT0.js.map → search-field-vh6uz5KV.js.map} +1 -1
- package/dist/search-field.cjs.js +1 -1
- package/dist/search-field.es.js +1 -1
- package/dist/{stepper-e0qicwqd.mjs → stepper-B-nCLs2D.mjs} +2 -2
- package/dist/{stepper-e0qicwqd.mjs.map → stepper-B-nCLs2D.mjs.map} +1 -1
- package/dist/{stepper-5qMo_shq.js → stepper-CTKlnH0q.js} +2 -2
- package/dist/{stepper-5qMo_shq.js.map → stepper-CTKlnH0q.js.map} +1 -1
- package/dist/stepper.cjs.js +1 -1
- package/dist/stepper.es.js +1 -1
- package/dist/{table-i1Gs9e0e.mjs → table-DOPXfD-s.mjs} +6 -6
- package/dist/{table-i1Gs9e0e.mjs.map → table-DOPXfD-s.mjs.map} +1 -1
- package/dist/{table-BOCcBzSO.js → table-DTQe4nN8.js} +2 -2
- package/dist/{table-BOCcBzSO.js.map → table-DTQe4nN8.js.map} +1 -1
- package/dist/table.cjs.js +1 -1
- package/dist/table.es.js +1 -1
- package/dist/{text-area-D0truMT1.js → text-area-9RUldq6W.js} +2 -2
- package/dist/{text-area-D0truMT1.js.map → text-area-9RUldq6W.js.map} +1 -1
- package/dist/{text-area-IVH-k4MM.mjs → text-area-C58aZEPa.mjs} +3 -3
- package/dist/{text-area-IVH-k4MM.mjs.map → text-area-C58aZEPa.mjs.map} +1 -1
- package/dist/text-area.cjs.js +1 -1
- package/dist/text-area.es.js +1 -1
- package/dist/text-field-C2W13n15.js +2 -0
- package/dist/{text-field-CYJzQG3h.js.map → text-field-C2W13n15.js.map} +1 -1
- package/dist/{text-field-BQfxJobW.mjs → text-field-D8MMa6ij.mjs} +114 -114
- package/dist/{text-field-BQfxJobW.mjs.map → text-field-D8MMa6ij.mjs.map} +1 -1
- package/dist/text-field.cjs.js +1 -1
- package/dist/text-field.es.js +1 -1
- package/dist/theme.cjs.js +1 -1
- package/dist/theme.es.js +3 -3
- package/dist/tokens/color/variables.css +1 -1
- package/dist/tokens/color/variables.dark.css +1 -1
- package/dist/tokens/color/variables.dark.js +1 -1
- package/dist/tokens/color/variables.dark.json +1 -1
- package/dist/tokens/color/variables.dark.scss +1 -1
- package/dist/tokens/color/variables.js +1 -1
- package/dist/tokens/color/variables.json +1 -1
- package/dist/tokens/color/variables.scss +1 -1
- package/dist/tokens.cjs.js +1 -1
- package/dist/tokens.es.js +1 -1
- package/dist/{tooltip-CJGmJDFQ.js → tooltip-CDnJKoIA.js} +2 -2
- package/dist/{tooltip-CJGmJDFQ.js.map → tooltip-CDnJKoIA.js.map} +1 -1
- package/dist/{tooltip-RA-03bKs.mjs → tooltip-pwJMEBBP.mjs} +3 -3
- package/dist/{tooltip-RA-03bKs.mjs.map → tooltip-pwJMEBBP.mjs.map} +1 -1
- package/dist/tooltip.cjs.js +1 -1
- package/dist/tooltip.es.js +1 -1
- package/dist/{useColorScheme-B9DWd-LN.mjs → useColorScheme-B7lGBSe4.mjs} +2 -2
- package/dist/{useColorScheme-B9DWd-LN.mjs.map → useColorScheme-B7lGBSe4.mjs.map} +1 -1
- package/dist/useColorScheme-BHhPgv9q.js +2 -0
- package/dist/{useColorScheme-DbTQjxNB.js.map → useColorScheme-BHhPgv9q.js.map} +1 -1
- package/dist/useThemePortalContainer-CUcqV327.js +2 -0
- package/dist/{useThemePortalContainer-D9BYjEvT.js.map → useThemePortalContainer-CUcqV327.js.map} +1 -1
- package/dist/useThemePortalContainer-D13Xx24N.mjs +9 -0
- package/dist/{useThemePortalContainer-tFLTaYKN.mjs.map → useThemePortalContainer-D13Xx24N.mjs.map} +1 -1
- package/dist/{variables-B5hbV0Uy.mjs → variables-BrsAsWIF.mjs} +2 -2
- package/dist/{variables-B5hbV0Uy.mjs.map → variables-BrsAsWIF.mjs.map} +1 -1
- package/dist/{variables-DoI78zZc.js → variables-D1vNo1lO.js} +2 -2
- package/dist/{variables-DoI78zZc.js.map → variables-D1vNo1lO.js.map} +1 -1
- package/eslint.config.mjs +2 -0
- package/package.json +27 -31
- package/scripts/generate.mts +269 -0
- package/src/accordion.ts +6 -0
- package/src/alert-badge.ts +6 -0
- package/src/aliases.ts +302 -0
- package/src/autocomplete.ts +6 -0
- package/src/avatar.ts +6 -0
- package/src/badge.ts +6 -0
- package/src/breadcrumbs.ts +6 -0
- package/src/button.ts +6 -0
- package/src/calendar.ts +6 -0
- package/src/card.ts +6 -0
- package/src/carousel.ts +6 -0
- package/src/chat-field.ts +6 -0
- package/src/checkbox.ts +6 -0
- package/src/chip-group.ts +6 -0
- package/src/color-dot.ts +6 -0
- package/src/comparison-table.ts +6 -0
- package/src/container.ts +6 -0
- package/src/content-block.ts +6 -0
- package/src/countdown.ts +6 -0
- package/src/counter-badge.ts +6 -0
- package/src/cta-link.ts +6 -0
- package/src/date-field.ts +6 -0
- package/src/date-picker.ts +6 -0
- package/src/date-range-field.ts +6 -0
- package/src/dismissable-chip-group.ts +6 -0
- package/src/drawer.ts +6 -0
- package/src/dropdown.ts +6 -0
- package/src/entries.js +73 -0
- package/src/field-error-text.ts +6 -0
- package/src/field-helper-text.ts +6 -0
- package/src/footer.ts +6 -0
- package/src/grid.ts +6 -0
- package/src/heading.ts +6 -0
- package/src/hero-banner.ts +6 -0
- package/src/label.ts +6 -0
- package/src/library.ts +77 -0
- package/src/link.ts +6 -0
- package/src/listbox.ts +6 -0
- package/src/loading.ts +6 -0
- package/src/message.ts +6 -0
- package/src/modal.ts +6 -0
- package/src/notification-banner.ts +6 -0
- package/src/notification.ts +6 -0
- package/src/pagination.ts +6 -0
- package/src/paragraph.ts +6 -0
- package/src/password-field.ts +7 -0
- package/src/popover.ts +6 -0
- package/src/product-card.ts +6 -0
- package/src/promotion-card.ts +6 -0
- package/src/purpur.css +1 -0
- package/src/quantity-selector.ts +6 -0
- package/src/radio-button-group.ts +6 -0
- package/src/radio-card-group.ts +6 -0
- package/src/rich-text.ts +6 -0
- package/src/search-field.ts +6 -0
- package/src/select.ts +6 -0
- package/src/skeleton.ts +6 -0
- package/src/slider.ts +6 -0
- package/src/spacer.ts +6 -0
- package/src/spinner.ts +6 -0
- package/src/stepper.ts +6 -0
- package/src/table.ts +6 -0
- package/src/tabs.ts +6 -0
- package/src/text-area.ts +6 -0
- package/src/text-field.ts +6 -0
- package/src/text-spacing.ts +6 -0
- package/src/theme.ts +6 -0
- package/src/toggle.ts +6 -0
- package/src/tokens.ts +6 -0
- package/src/tooltip.ts +6 -0
- package/src/visually-hidden.ts +6 -0
- package/tokens/_dark.scss +9 -0
- package/tokens/_index.scss +9 -0
- package/tokens/border/variables.css +13 -0
- package/tokens/border/variables.d.ts +10 -0
- package/tokens/border/variables.dark.css +12 -0
- package/tokens/border/variables.dark.d.ts +10 -0
- package/tokens/border/variables.dark.js +10 -0
- package/tokens/border/variables.dark.json +18 -0
- package/tokens/border/variables.dark.scss +10 -0
- package/tokens/border/variables.js +10 -0
- package/tokens/border/variables.json +18 -0
- package/tokens/border/variables.scss +10 -0
- package/tokens/breakpoint/variables.css +11 -0
- package/tokens/breakpoint/variables.d.ts +8 -0
- package/tokens/breakpoint/variables.dark.css +10 -0
- package/tokens/breakpoint/variables.dark.d.ts +8 -0
- package/tokens/breakpoint/variables.dark.js +8 -0
- package/tokens/breakpoint/variables.dark.json +14 -0
- package/tokens/breakpoint/variables.dark.scss +8 -0
- package/tokens/breakpoint/variables.js +8 -0
- package/tokens/breakpoint/variables.json +14 -0
- package/tokens/breakpoint/variables.scss +8 -0
- package/tokens/color/variables.css +262 -0
- package/tokens/color/variables.d.ts +253 -0
- package/tokens/color/variables.dark.css +262 -0
- package/tokens/color/variables.dark.d.ts +252 -0
- package/tokens/color/variables.dark.js +252 -0
- package/tokens/color/variables.dark.json +306 -0
- package/tokens/color/variables.dark.scss +252 -0
- package/tokens/color/variables.js +253 -0
- package/tokens/color/variables.json +307 -0
- package/tokens/color/variables.scss +253 -0
- package/tokens/dark.css +9 -0
- package/tokens/dark.d.ts +9 -0
- package/tokens/dark.js +9 -0
- package/tokens/filter/variables.css +4 -0
- package/tokens/filter/variables.d.ts +1 -0
- package/tokens/filter/variables.dark.css +3 -0
- package/tokens/filter/variables.dark.d.ts +1 -0
- package/tokens/filter/variables.dark.js +1 -0
- package/tokens/filter/variables.dark.json +7 -0
- package/tokens/filter/variables.dark.scss +1 -0
- package/tokens/filter/variables.js +1 -0
- package/tokens/filter/variables.json +7 -0
- package/tokens/filter/variables.scss +1 -0
- package/tokens/gradient/variables.css +53 -0
- package/tokens/gradient/variables.d.ts +9 -0
- package/tokens/gradient/variables.dark.css +51 -0
- package/tokens/gradient/variables.dark.d.ts +9 -0
- package/tokens/gradient/variables.dark.js +18 -0
- package/tokens/gradient/variables.dark.json +27 -0
- package/tokens/gradient/variables.dark.scss +36 -0
- package/tokens/gradient/variables.js +18 -0
- package/tokens/gradient/variables.json +27 -0
- package/tokens/gradient/variables.scss +42 -0
- package/tokens/index.css +18 -0
- package/tokens/index.d.ts +9 -0
- package/tokens/index.js +9 -0
- package/tokens/motion/variables.css +14 -0
- package/tokens/motion/variables.d.ts +11 -0
- package/tokens/motion/variables.dark.css +13 -0
- package/tokens/motion/variables.dark.d.ts +11 -0
- package/tokens/motion/variables.dark.js +11 -0
- package/tokens/motion/variables.dark.json +19 -0
- package/tokens/motion/variables.dark.scss +11 -0
- package/tokens/motion/variables.js +11 -0
- package/tokens/motion/variables.json +19 -0
- package/tokens/motion/variables.scss +11 -0
- package/tokens/shadow/variables.css +11 -0
- package/tokens/shadow/variables.d.ts +4 -0
- package/tokens/shadow/variables.dark.css +10 -0
- package/tokens/shadow/variables.dark.d.ts +4 -0
- package/tokens/shadow/variables.dark.js +4 -0
- package/tokens/shadow/variables.dark.json +8 -0
- package/tokens/shadow/variables.dark.scss +4 -0
- package/tokens/shadow/variables.js +4 -0
- package/tokens/shadow/variables.json +8 -0
- package/tokens/shadow/variables.scss +4 -0
- package/tokens/spacing/variables.css +26 -0
- package/tokens/spacing/variables.d.ts +23 -0
- package/tokens/spacing/variables.dark.css +17 -0
- package/tokens/spacing/variables.dark.d.ts +15 -0
- package/tokens/spacing/variables.dark.js +15 -0
- package/tokens/spacing/variables.dark.json +19 -0
- package/tokens/spacing/variables.dark.scss +15 -0
- package/tokens/spacing/variables.js +23 -0
- package/tokens/spacing/variables.json +31 -0
- package/tokens/spacing/variables.scss +23 -0
- package/tokens/typography/variables.css +30 -0
- package/tokens/typography/variables.d.ts +26 -0
- package/tokens/typography/variables.dark.css +29 -0
- package/tokens/typography/variables.dark.d.ts +26 -0
- package/tokens/typography/variables.dark.js +28 -0
- package/tokens/typography/variables.dark.json +38 -0
- package/tokens/typography/variables.dark.scss +26 -0
- package/tokens/typography/variables.js +28 -0
- package/tokens/typography/variables.json +38 -0
- package/tokens/typography/variables.scss +26 -0
- package/vite-plugin-generate-components-metadata.js +62 -0
- package/dist/footer-3Y-664-8.js +0 -2
- package/dist/footer-3Y-664-8.js.map +0 -1
- package/dist/footer-DenAcikt.mjs.map +0 -1
- package/dist/hero-banner-B7xrDfzN.mjs.map +0 -1
- package/dist/hero-banner-DthITuQ7.js +0 -2
- package/dist/hero-banner-DthITuQ7.js.map +0 -1
- package/dist/text-field-CYJzQG3h.js +0 -2
- package/dist/useColorScheme-DbTQjxNB.js +0 -2
- package/dist/useThemePortalContainer-D9BYjEvT.js +0 -2
- package/dist/useThemePortalContainer-tFLTaYKN.mjs +0 -9
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as n, jsxs as A } from "react/jsx-runtime";
|
|
2
2
|
import { useRef as U, forwardRef as q, useId as te, useState as C, useCallback as ie, useEffect as L, isValidElement as ae } from "react";
|
|
3
|
-
import { b as
|
|
3
|
+
import { b as ne } from "./icon-DNHpBTHs-JfI8WyiR.mjs";
|
|
4
4
|
import { c as Q } from "./bind-CU-R61T-.mjs";
|
|
5
|
-
import { b as
|
|
5
|
+
import { b as re } from "./button-4-yWOgtD.mjs";
|
|
6
6
|
import { F as ue } from "./field-error-text-CBSX8dGx.mjs";
|
|
7
|
-
import { F as
|
|
8
|
-
import { r as
|
|
9
|
-
import { r as
|
|
7
|
+
import { F as le } from "./field-helper-text-C5ee4SFV.mjs";
|
|
8
|
+
import { r as _e } from "./check-circle-filled.es-umBwOv5_.mjs";
|
|
9
|
+
import { r as de } from "./close.es-BPmk2wkU.mjs";
|
|
10
10
|
import { L as pe } from "./label-7sJe5-pX.mjs";
|
|
11
|
-
import { a as
|
|
12
|
-
const
|
|
11
|
+
import { a as oe } from "./spinner-DRQN6YdK.mjs";
|
|
12
|
+
const se = {
|
|
13
13
|
name: "edit-ai",
|
|
14
14
|
svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M18.175 22.5c.464-.002.856-.304.978-.755.41-1.533 1.255-2.463 2.655-2.926a1.02 1.02 0 0 0 .015-1.93c-1.437-.508-2.283-1.434-2.664-2.919a1.017 1.017 0 0 0-.974-.766c-.445.02-.865.305-.986.747-.422 1.518-1.267 2.447-2.661 2.923a1.02 1.02 0 0 0-.686.969c0 .436.278.824.686.961 1.4.479 2.243 1.414 2.657 2.946.12.442.523.75.978.75h.002Zm-1.788-4.66a5.334 5.334 0 0 0 1.78-1.867 5.323 5.323 0 0 0 1.792 1.87 5.256 5.256 0 0 0-1.787 1.88 5.326 5.326 0 0 0-1.785-1.883Zm4.668-12.884L18.19 2.091a1.9 1.9 0 0 0-2.687 0l-11.37 11.37a.9.9 0 0 0-.212.335L1.556 20.44a.9.9 0 0 0 1.15 1.15l6.644-2.365a.9.9 0 0 0 .335-.212l11.37-11.37a1.9 1.9 0 0 0 0-2.687ZM3.888 19.26l1.253-3.518 2.264 2.264-3.517 1.254ZM19.781 6.37 9.048 17.104 6.04 14.098l8.16-8.16 1.504 1.503a.9.9 0 1 0 1.273-1.273l-1.504-1.503 1.302-1.3a.1.1 0 0 1 .14 0l2.865 2.864a.1.1 0 0 1 0 .141Z"/></svg>',
|
|
15
15
|
keywords: ["edit-ai"],
|
|
16
16
|
category: "ai"
|
|
17
|
-
}, W = (t) => /* @__PURE__ */
|
|
17
|
+
}, W = (t) => /* @__PURE__ */ n(ne, { ...t, svg: se });
|
|
18
18
|
W.displayName = "IconEditAi";
|
|
19
19
|
const X = {
|
|
20
|
-
"purpur-text-field-ai": "_purpur-text-field-
|
|
21
|
-
"purpur-text-field-ai__label": "_purpur-text-field-
|
|
22
|
-
"purpur-text-field-ai__label-text": "_purpur-text-field-ai__label-
|
|
23
|
-
"purpur-text-field-ai__field-row": "_purpur-text-field-ai__field-
|
|
24
|
-
"purpur-text-field-ai__frame": "_purpur-text-field-
|
|
25
|
-
"purpur-text-field-ai__frame--negative": "_purpur-text-field-ai__frame--
|
|
26
|
-
"purpur-text-field-ai__input-container": "_purpur-text-field-ai__input-
|
|
27
|
-
"purpur-text-field-ai__input-container--disabled": "_purpur-text-field-ai__input-container--
|
|
28
|
-
"purpur-text-field-ai__input-container--readonly": "_purpur-text-field-ai__input-container--
|
|
29
|
-
"purpur-text-field-ai__input-container--has-clear-button": "_purpur-text-field-ai__input-container--has-clear-
|
|
30
|
-
"purpur-text-field-ai__input-container--end-adornment": "_purpur-text-field-ai__input-container--end-
|
|
31
|
-
"purpur-text-field-ai__input": "_purpur-text-field-
|
|
32
|
-
"purpur-text-field-ai__input-container--start-adornment": "_purpur-text-field-ai__input-container--start-
|
|
33
|
-
"purpur-text-field-ai__input-container--negative": "_purpur-text-field-ai__input-container--
|
|
34
|
-
"purpur-text-field-ai__valid-icon": "_purpur-text-field-ai__valid-
|
|
35
|
-
"purpur-text-field-ai__valid-icon--negative": "_purpur-text-field-ai__valid-icon--
|
|
36
|
-
"purpur-text-field-ai__frame--ai": "_purpur-text-field-ai__frame--
|
|
37
|
-
"purpur-text-field-ai__ai-icon": "_purpur-text-field-ai__ai-
|
|
38
|
-
"purpur-text-field-ai__input--ai": "_purpur-text-field-ai__input--
|
|
39
|
-
"purpur-text-field-ai__input--valid": "_purpur-text-field-ai__input--
|
|
40
|
-
"purpur-text-field-ai__input--error": "_purpur-text-field-ai__input--
|
|
41
|
-
"purpur-text-field-ai__input--negative": "_purpur-text-field-ai__input--
|
|
42
|
-
"purpur-text-field-ai__adornment-container": "_purpur-text-field-ai__adornment-
|
|
43
|
-
"purpur-text-field-ai__ai-icon--negative": "_purpur-text-field-ai__ai-icon--
|
|
20
|
+
"purpur-text-field-ai": "_purpur-text-field-ai_1n0m8_1",
|
|
21
|
+
"purpur-text-field-ai__label": "_purpur-text-field-ai__label_1n0m8_7",
|
|
22
|
+
"purpur-text-field-ai__label-text": "_purpur-text-field-ai__label-text_1n0m8_12",
|
|
23
|
+
"purpur-text-field-ai__field-row": "_purpur-text-field-ai__field-row_1n0m8_15",
|
|
24
|
+
"purpur-text-field-ai__frame": "_purpur-text-field-ai__frame_1n0m8_19",
|
|
25
|
+
"purpur-text-field-ai__frame--negative": "_purpur-text-field-ai__frame--negative_1n0m8_26",
|
|
26
|
+
"purpur-text-field-ai__input-container": "_purpur-text-field-ai__input-container_1n0m8_29",
|
|
27
|
+
"purpur-text-field-ai__input-container--disabled": "_purpur-text-field-ai__input-container--disabled_1n0m8_40",
|
|
28
|
+
"purpur-text-field-ai__input-container--readonly": "_purpur-text-field-ai__input-container--readonly_1n0m8_43",
|
|
29
|
+
"purpur-text-field-ai__input-container--has-clear-button": "_purpur-text-field-ai__input-container--has-clear-button_1n0m8_46",
|
|
30
|
+
"purpur-text-field-ai__input-container--end-adornment": "_purpur-text-field-ai__input-container--end-adornment_1n0m8_49",
|
|
31
|
+
"purpur-text-field-ai__input": "_purpur-text-field-ai__input_1n0m8_29",
|
|
32
|
+
"purpur-text-field-ai__input-container--start-adornment": "_purpur-text-field-ai__input-container--start-adornment_1n0m8_55",
|
|
33
|
+
"purpur-text-field-ai__input-container--negative": "_purpur-text-field-ai__input-container--negative_1n0m8_61",
|
|
34
|
+
"purpur-text-field-ai__valid-icon": "_purpur-text-field-ai__valid-icon_1n0m8_93",
|
|
35
|
+
"purpur-text-field-ai__valid-icon--negative": "_purpur-text-field-ai__valid-icon--negative_1n0m8_96",
|
|
36
|
+
"purpur-text-field-ai__frame--ai": "_purpur-text-field-ai__frame--ai_1n0m8_102",
|
|
37
|
+
"purpur-text-field-ai__ai-icon": "_purpur-text-field-ai__ai-icon_1n0m8_119",
|
|
38
|
+
"purpur-text-field-ai__input--ai": "_purpur-text-field-ai__input--ai_1n0m8_174",
|
|
39
|
+
"purpur-text-field-ai__input--valid": "_purpur-text-field-ai__input--valid_1n0m8_186",
|
|
40
|
+
"purpur-text-field-ai__input--error": "_purpur-text-field-ai__input--error_1n0m8_186",
|
|
41
|
+
"purpur-text-field-ai__input--negative": "_purpur-text-field-ai__input--negative_1n0m8_234",
|
|
42
|
+
"purpur-text-field-ai__adornment-container": "_purpur-text-field-ai__adornment-container_1n0m8_253",
|
|
43
|
+
"purpur-text-field-ai__ai-icon--negative": "_purpur-text-field-ai__ai-icon--negative_1n0m8_263"
|
|
44
44
|
}, fe = {
|
|
45
|
-
"purpur-text-field-default": "_purpur-text-field-
|
|
46
|
-
"purpur-text-field-default__label": "_purpur-text-field-
|
|
47
|
-
"purpur-text-field-default__label-text": "_purpur-text-field-default__label-
|
|
48
|
-
"purpur-text-field-default__field-row": "_purpur-text-field-default__field-
|
|
49
|
-
"purpur-text-field-default__frame": "_purpur-text-field-
|
|
50
|
-
"purpur-text-field-default__frame--negative": "_purpur-text-field-default__frame--
|
|
51
|
-
"purpur-text-field-default__input-container": "_purpur-text-field-default__input-
|
|
52
|
-
"purpur-text-field-default__input-container--disabled": "_purpur-text-field-default__input-container--
|
|
53
|
-
"purpur-text-field-default__input-container--readonly": "_purpur-text-field-default__input-container--
|
|
54
|
-
"purpur-text-field-default__input-container--has-clear-button": "_purpur-text-field-default__input-container--has-clear-
|
|
55
|
-
"purpur-text-field-default__input-container--end-adornment": "_purpur-text-field-default__input-container--end-
|
|
56
|
-
"purpur-text-field-default__input": "_purpur-text-field-
|
|
57
|
-
"purpur-text-field-default__input-container--start-adornment": "_purpur-text-field-default__input-container--start-
|
|
58
|
-
"purpur-text-field-default__input-container--negative": "_purpur-text-field-default__input-container--
|
|
59
|
-
"purpur-text-field-default__valid-icon": "_purpur-text-field-default__valid-
|
|
60
|
-
"purpur-text-field-default__valid-icon--negative": "_purpur-text-field-default__valid-icon--
|
|
61
|
-
"purpur-text-field-default__input--valid": "_purpur-text-field-default__input--
|
|
62
|
-
"purpur-text-field-default__input--error": "_purpur-text-field-default__input--
|
|
63
|
-
"purpur-text-field-default__input--negative": "_purpur-text-field-default__input--
|
|
64
|
-
"purpur-text-field-default__adornment-container": "_purpur-text-field-default__adornment-
|
|
65
|
-
}, ce = (t) => U(t),
|
|
45
|
+
"purpur-text-field-default": "_purpur-text-field-default_2b9ea_1",
|
|
46
|
+
"purpur-text-field-default__label": "_purpur-text-field-default__label_2b9ea_7",
|
|
47
|
+
"purpur-text-field-default__label-text": "_purpur-text-field-default__label-text_2b9ea_12",
|
|
48
|
+
"purpur-text-field-default__field-row": "_purpur-text-field-default__field-row_2b9ea_15",
|
|
49
|
+
"purpur-text-field-default__frame": "_purpur-text-field-default__frame_2b9ea_19",
|
|
50
|
+
"purpur-text-field-default__frame--negative": "_purpur-text-field-default__frame--negative_2b9ea_26",
|
|
51
|
+
"purpur-text-field-default__input-container": "_purpur-text-field-default__input-container_2b9ea_29",
|
|
52
|
+
"purpur-text-field-default__input-container--disabled": "_purpur-text-field-default__input-container--disabled_2b9ea_40",
|
|
53
|
+
"purpur-text-field-default__input-container--readonly": "_purpur-text-field-default__input-container--readonly_2b9ea_43",
|
|
54
|
+
"purpur-text-field-default__input-container--has-clear-button": "_purpur-text-field-default__input-container--has-clear-button_2b9ea_46",
|
|
55
|
+
"purpur-text-field-default__input-container--end-adornment": "_purpur-text-field-default__input-container--end-adornment_2b9ea_49",
|
|
56
|
+
"purpur-text-field-default__input": "_purpur-text-field-default__input_2b9ea_29",
|
|
57
|
+
"purpur-text-field-default__input-container--start-adornment": "_purpur-text-field-default__input-container--start-adornment_2b9ea_55",
|
|
58
|
+
"purpur-text-field-default__input-container--negative": "_purpur-text-field-default__input-container--negative_2b9ea_61",
|
|
59
|
+
"purpur-text-field-default__valid-icon": "_purpur-text-field-default__valid-icon_2b9ea_93",
|
|
60
|
+
"purpur-text-field-default__valid-icon--negative": "_purpur-text-field-default__valid-icon--negative_2b9ea_96",
|
|
61
|
+
"purpur-text-field-default__input--valid": "_purpur-text-field-default__input--valid_2b9ea_125",
|
|
62
|
+
"purpur-text-field-default__input--error": "_purpur-text-field-default__input--error_2b9ea_125",
|
|
63
|
+
"purpur-text-field-default__input--negative": "_purpur-text-field-default__input--negative_2b9ea_143",
|
|
64
|
+
"purpur-text-field-default__adornment-container": "_purpur-text-field-default__adornment-container_2b9ea_159"
|
|
65
|
+
}, ce = (t) => U(t), me = "purpur-text-field-default", D = q(
|
|
66
66
|
({
|
|
67
67
|
["data-testid"]: t,
|
|
68
68
|
className: c,
|
|
69
|
-
clearButtonAriaLabel:
|
|
69
|
+
clearButtonAriaLabel: d,
|
|
70
70
|
beforeField: v,
|
|
71
71
|
afterField: h,
|
|
72
72
|
endAdornment: g,
|
|
@@ -86,15 +86,15 @@ const X = {
|
|
|
86
86
|
_frameModifiers: E,
|
|
87
87
|
_inputContainerRef: V,
|
|
88
88
|
...i
|
|
89
|
-
},
|
|
90
|
-
const
|
|
91
|
-
p.current =
|
|
89
|
+
}, m) => {
|
|
90
|
+
const l = Q.bind(j ?? fe), e = k ?? me, x = te(), b = i.id ?? x, a = (r) => t ? `${t}-${r}` : void 0, B = Z && !f, s = y ? `${b}-helper-text` : void 0, M = [S].filter((r) => !!r), w = (typeof i.value == "number" ? i.value !== void 0 : i.value?.length) && !i.disabled && !i.readOnly && !$ && F && d, p = ce(null), H = (r) => {
|
|
91
|
+
p.current = r, typeof m == "function" ? m(r) : m && (m.current = r);
|
|
92
92
|
}, O = () => {
|
|
93
93
|
F?.(), p.current?.focus();
|
|
94
|
-
},
|
|
94
|
+
}, _ = [
|
|
95
95
|
...N ?? [],
|
|
96
|
-
$ && /* @__PURE__ */
|
|
97
|
-
|
|
96
|
+
$ && /* @__PURE__ */ n(
|
|
97
|
+
oe,
|
|
98
98
|
{
|
|
99
99
|
disabled: i.disabled,
|
|
100
100
|
size: "xs",
|
|
@@ -103,74 +103,74 @@ const X = {
|
|
|
103
103
|
},
|
|
104
104
|
"spinner"
|
|
105
105
|
),
|
|
106
|
-
w && /* @__PURE__ */
|
|
107
|
-
|
|
106
|
+
w && /* @__PURE__ */ n(
|
|
107
|
+
re,
|
|
108
108
|
{
|
|
109
109
|
negative: u,
|
|
110
110
|
variant: "tertiary-purple",
|
|
111
111
|
onClick: O,
|
|
112
112
|
iconOnly: !0,
|
|
113
|
-
"aria-label":
|
|
113
|
+
"aria-label": d ?? "",
|
|
114
114
|
"data-testid": a("clear-button"),
|
|
115
115
|
tabIndex: -1,
|
|
116
|
-
children: /* @__PURE__ */
|
|
116
|
+
children: /* @__PURE__ */ n(de, { size: "xs" })
|
|
117
117
|
},
|
|
118
118
|
"clear-button"
|
|
119
119
|
),
|
|
120
|
-
B && /* @__PURE__ */
|
|
121
|
-
|
|
120
|
+
B && /* @__PURE__ */ n(
|
|
121
|
+
_e,
|
|
122
122
|
{
|
|
123
123
|
"data-testid": a("valid-icon"),
|
|
124
|
-
className:
|
|
124
|
+
className: l(`${e}__valid-icon`, {
|
|
125
125
|
[`${e}__valid-icon--negative`]: u
|
|
126
126
|
})
|
|
127
127
|
},
|
|
128
128
|
"valid-icon"
|
|
129
129
|
)
|
|
130
|
-
].filter((
|
|
130
|
+
].filter((r) => !!r), o = l(`${e}__input-container`, {
|
|
131
131
|
[`${e}__input-container--start-adornment`]: M.length,
|
|
132
|
-
[`${e}__input-container--end-adornment`]:
|
|
132
|
+
[`${e}__input-container--end-adornment`]: _.length || g,
|
|
133
133
|
[`${e}__input-container--disabled`]: i.disabled,
|
|
134
134
|
[`${e}__input-container--has-clear-button`]: w,
|
|
135
135
|
[`${e}__input-container--readonly`]: i.readOnly && !i.disabled,
|
|
136
136
|
[`${e}__input-container--negative`]: u
|
|
137
137
|
});
|
|
138
|
-
return /* @__PURE__ */ A("div", { className:
|
|
138
|
+
return /* @__PURE__ */ A("div", { className: l(c, e), children: [
|
|
139
139
|
T && /* @__PURE__ */ A(
|
|
140
140
|
pe,
|
|
141
141
|
{
|
|
142
142
|
htmlFor: b,
|
|
143
|
-
className:
|
|
143
|
+
className: l(`${e}__label`),
|
|
144
144
|
"data-testid": a("label"),
|
|
145
145
|
disabled: i.disabled,
|
|
146
146
|
negative: u,
|
|
147
147
|
children: [
|
|
148
|
-
i.required && !R && /* @__PURE__ */
|
|
148
|
+
i.required && !R && /* @__PURE__ */ n("span", { "aria-hidden": !0, children: "*" }),
|
|
149
149
|
T
|
|
150
150
|
]
|
|
151
151
|
}
|
|
152
152
|
),
|
|
153
|
-
/* @__PURE__ */ A("div", { className:
|
|
153
|
+
/* @__PURE__ */ A("div", { className: l(`${e}__field-row`), children: [
|
|
154
154
|
!!v && v,
|
|
155
|
-
/* @__PURE__ */ A("div", { ref: V, className:
|
|
156
|
-
!!M.length && /* @__PURE__ */
|
|
155
|
+
/* @__PURE__ */ A("div", { ref: V, className: o, children: [
|
|
156
|
+
!!M.length && /* @__PURE__ */ n(
|
|
157
157
|
"div",
|
|
158
158
|
{
|
|
159
159
|
"data-testid": a("start-adornments"),
|
|
160
|
-
className:
|
|
160
|
+
className: l(`${e}__adornment-container`),
|
|
161
161
|
children: M
|
|
162
162
|
}
|
|
163
163
|
),
|
|
164
|
-
/* @__PURE__ */
|
|
164
|
+
/* @__PURE__ */ n(
|
|
165
165
|
"input",
|
|
166
166
|
{
|
|
167
167
|
...i,
|
|
168
168
|
id: b,
|
|
169
169
|
ref: H,
|
|
170
170
|
"data-testid": a("input"),
|
|
171
|
-
"aria-describedby": i["aria-describedby"] ||
|
|
171
|
+
"aria-describedby": i["aria-describedby"] || s,
|
|
172
172
|
"aria-invalid": i["aria-invalid"] || !!f,
|
|
173
|
-
className:
|
|
173
|
+
className: l([
|
|
174
174
|
`${e}__input`,
|
|
175
175
|
{
|
|
176
176
|
[`${e}__input--valid`]: B,
|
|
@@ -181,22 +181,22 @@ const X = {
|
|
|
181
181
|
])
|
|
182
182
|
}
|
|
183
183
|
),
|
|
184
|
-
/* @__PURE__ */
|
|
184
|
+
/* @__PURE__ */ n(
|
|
185
185
|
"div",
|
|
186
186
|
{
|
|
187
|
-
className:
|
|
187
|
+
className: l(`${e}__frame`, {
|
|
188
188
|
[`${e}__frame--negative`]: u,
|
|
189
189
|
...E ?? {}
|
|
190
190
|
})
|
|
191
191
|
}
|
|
192
192
|
),
|
|
193
|
-
(!!
|
|
193
|
+
(!!_.length || g) && /* @__PURE__ */ A(
|
|
194
194
|
"div",
|
|
195
195
|
{
|
|
196
196
|
"data-testid": a("end-adornments"),
|
|
197
|
-
className:
|
|
197
|
+
className: l(`${e}__adornment-container`),
|
|
198
198
|
children: [
|
|
199
|
-
|
|
199
|
+
_,
|
|
200
200
|
g
|
|
201
201
|
]
|
|
202
202
|
}
|
|
@@ -204,26 +204,26 @@ const X = {
|
|
|
204
204
|
] }),
|
|
205
205
|
!!h && h
|
|
206
206
|
] }),
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
s && /* @__PURE__ */ n(
|
|
208
|
+
le,
|
|
209
209
|
{
|
|
210
210
|
"data-testid": a("helper-text"),
|
|
211
|
-
id:
|
|
211
|
+
id: s,
|
|
212
212
|
negative: u,
|
|
213
213
|
disabled: i.disabled,
|
|
214
214
|
children: y
|
|
215
215
|
}
|
|
216
216
|
),
|
|
217
|
-
f && /* @__PURE__ */
|
|
217
|
+
f && /* @__PURE__ */ n(ue, { "data-testid": a("error-text"), negative: u, children: f })
|
|
218
218
|
] });
|
|
219
219
|
}
|
|
220
220
|
);
|
|
221
221
|
D.displayName = "TextField";
|
|
222
|
-
const
|
|
222
|
+
const xe = Q.bind(X), I = "purpur-text-field-ai", K = 1400, be = (t) => typeof t == "number" ? !Number.isNaN(t) : typeof t == "string" || Array.isArray(t) ? t.length > 0 : t != null, Y = q(
|
|
223
223
|
({
|
|
224
224
|
["data-testid"]: t,
|
|
225
225
|
animatePrepopulatedValue: c = !1,
|
|
226
|
-
typingAnimationDurationMs:
|
|
226
|
+
typingAnimationDurationMs: d = K,
|
|
227
227
|
endAdornment: v,
|
|
228
228
|
value: h,
|
|
229
229
|
defaultValue: g,
|
|
@@ -234,24 +234,24 @@ const me = Q.bind(X), I = "purpur-text-field-ai", K = 1400, be = (t) => typeof t
|
|
|
234
234
|
negative: $ = !1,
|
|
235
235
|
...F
|
|
236
236
|
}, S) => {
|
|
237
|
-
const Z = (
|
|
238
|
-
|
|
239
|
-
}, []), H = (
|
|
240
|
-
p(), e(null), u || k(
|
|
237
|
+
const Z = (_) => t ? `${t}-${_}` : void 0, u = h !== void 0, [j, k] = C(g), [N, z] = C(!1), [E, V] = C(!1), [i, m] = C(!1), [l, e] = C(null), x = U(null), b = U(null), a = u ? h : j, s = be(a) && !N, G = l !== null ? l : a ?? "", w = s && c && !i && !y && !R, p = ie(() => {
|
|
238
|
+
x.current !== null && (window.clearInterval(x.current), x.current = null);
|
|
239
|
+
}, []), H = (_) => {
|
|
240
|
+
p(), e(null), u || k(_.currentTarget.value), z(!0), f?.(_);
|
|
241
241
|
};
|
|
242
242
|
L(() => {
|
|
243
243
|
if (!w || typeof IntersectionObserver > "u")
|
|
244
244
|
return;
|
|
245
|
-
const
|
|
246
|
-
if (!
|
|
245
|
+
const _ = b.current;
|
|
246
|
+
if (!_)
|
|
247
247
|
return;
|
|
248
|
-
const
|
|
249
|
-
(
|
|
250
|
-
|
|
248
|
+
const o = new IntersectionObserver(
|
|
249
|
+
(r) => {
|
|
250
|
+
r.some((ee) => ee.isIntersecting) && (V(!0), m(!0), o.disconnect());
|
|
251
251
|
},
|
|
252
252
|
{ threshold: 0.35 }
|
|
253
253
|
);
|
|
254
|
-
return
|
|
254
|
+
return o.observe(_), () => o.disconnect();
|
|
255
255
|
}, [w]), L(() => {
|
|
256
256
|
if (!E || N || typeof a != "string")
|
|
257
257
|
return;
|
|
@@ -260,32 +260,32 @@ const me = Q.bind(X), I = "purpur-text-field-ai", K = 1400, be = (t) => typeof t
|
|
|
260
260
|
return;
|
|
261
261
|
}
|
|
262
262
|
p(), e("");
|
|
263
|
-
let
|
|
264
|
-
const
|
|
265
|
-
return
|
|
266
|
-
|
|
263
|
+
let o = 0;
|
|
264
|
+
const r = Number.isFinite(d) && d > 0 ? d : K, J = Math.max(20, Math.floor(r / a.length));
|
|
265
|
+
return x.current = window.setInterval(() => {
|
|
266
|
+
o += 1, e(a.slice(0, o)), o >= a.length && (p(), e(null), V(!1));
|
|
267
267
|
}, J), p;
|
|
268
268
|
}, [
|
|
269
269
|
p,
|
|
270
270
|
N,
|
|
271
271
|
E,
|
|
272
|
-
|
|
272
|
+
d,
|
|
273
273
|
a
|
|
274
274
|
]), L(() => p, [p]);
|
|
275
275
|
const O = [];
|
|
276
|
-
return v === void 0 &&
|
|
277
|
-
/* @__PURE__ */
|
|
276
|
+
return v === void 0 && s && O.push(
|
|
277
|
+
/* @__PURE__ */ n(
|
|
278
278
|
W,
|
|
279
279
|
{
|
|
280
280
|
size: "xs",
|
|
281
281
|
"data-testid": Z("edit-ai-icon"),
|
|
282
|
-
className:
|
|
282
|
+
className: xe(`${I}__ai-icon`, {
|
|
283
283
|
[`${I}__ai-icon--negative`]: $
|
|
284
284
|
})
|
|
285
285
|
},
|
|
286
286
|
"ai-icon"
|
|
287
287
|
)
|
|
288
|
-
), /* @__PURE__ */
|
|
288
|
+
), /* @__PURE__ */ n(
|
|
289
289
|
D,
|
|
290
290
|
{
|
|
291
291
|
ref: S,
|
|
@@ -301,8 +301,8 @@ const me = Q.bind(X), I = "purpur-text-field-ai", K = 1400, be = (t) => typeof t
|
|
|
301
301
|
_styles: X,
|
|
302
302
|
_rootClassName: I,
|
|
303
303
|
_prependEndAdornments: O,
|
|
304
|
-
_inputModifiers: { [`${I}__input--ai`]:
|
|
305
|
-
_frameModifiers: { [`${I}__frame--ai`]:
|
|
304
|
+
_inputModifiers: { [`${I}__input--ai`]: s },
|
|
305
|
+
_frameModifiers: { [`${I}__frame--ai`]: s },
|
|
306
306
|
_inputContainerRef: b
|
|
307
307
|
}
|
|
308
308
|
);
|
|
@@ -310,7 +310,7 @@ const me = Q.bind(X), I = "purpur-text-field-ai", K = 1400, be = (t) => typeof t
|
|
|
310
310
|
);
|
|
311
311
|
Y.displayName = "TextField";
|
|
312
312
|
const Re = ["default", "ai"], P = q(
|
|
313
|
-
({ variant: t = "default", ...c },
|
|
313
|
+
({ variant: t = "default", ...c }, d) => t === "ai" ? /* @__PURE__ */ n(Y, { ref: d, ...c }) : /* @__PURE__ */ n(D, { ref: d, ...c })
|
|
314
314
|
);
|
|
315
315
|
P.displayName = "TextField";
|
|
316
316
|
const Te = (t) => ae(t) && t.type.displayName === P.displayName;
|
|
@@ -319,4 +319,4 @@ export {
|
|
|
319
319
|
Te as i,
|
|
320
320
|
Re as t
|
|
321
321
|
};
|
|
322
|
-
//# sourceMappingURL=text-field-
|
|
322
|
+
//# sourceMappingURL=text-field-D8MMa6ij.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-field-BQfxJobW.mjs","sources":["../../../components/icon/dist/components/edit-ai.es.js","../../../components/text-field/src/utils.ts","../../../components/text-field/src/text-field-base.tsx","../../../components/text-field/src/text-field-ai.tsx","../../../components/text-field/src/text-field.tsx"],"sourcesContent":["import { jsx as i } from \"react/jsx-runtime\";\nimport { I as o } from \"../icon-DNHpBTHs.mjs\";\nconst t = {\n name: \"edit-ai\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M18.175 22.5c.464-.002.856-.304.978-.755.41-1.533 1.255-2.463 2.655-2.926a1.02 1.02 0 0 0 .015-1.93c-1.437-.508-2.283-1.434-2.664-2.919a1.017 1.017 0 0 0-.974-.766c-.445.02-.865.305-.986.747-.422 1.518-1.267 2.447-2.661 2.923a1.02 1.02 0 0 0-.686.969c0 .436.278.824.686.961 1.4.479 2.243 1.414 2.657 2.946.12.442.523.75.978.75h.002Zm-1.788-4.66a5.334 5.334 0 0 0 1.78-1.867 5.323 5.323 0 0 0 1.792 1.87 5.256 5.256 0 0 0-1.787 1.88 5.326 5.326 0 0 0-1.785-1.883Zm4.668-12.884L18.19 2.091a1.9 1.9 0 0 0-2.687 0l-11.37 11.37a.9.9 0 0 0-.212.335L1.556 20.44a.9.9 0 0 0 1.15 1.15l6.644-2.365a.9.9 0 0 0 .335-.212l11.37-11.37a1.9 1.9 0 0 0 0-2.687ZM3.888 19.26l1.253-3.518 2.264 2.264-3.517 1.254ZM19.781 6.37 9.048 17.104 6.04 14.098l8.16-8.16 1.504 1.503a.9.9 0 1 0 1.273-1.273l-1.504-1.503 1.302-1.3a.1.1 0 0 1 .14 0l2.865 2.864a.1.1 0 0 1 0 .141Z\"/></svg>',\n keywords: [\"edit-ai\"],\n category: \"ai\"\n}, l = (a) => /* @__PURE__ */ i(o, { ...a, svg: t });\nl.displayName = \"IconEditAi\";\nexport {\n l as IconEditAi\n};\n//# sourceMappingURL=edit-ai.es.js.map\n","import { type MutableRefObject, useRef } from \"react\";\n\nexport const useMutableRefObject = <T>(value: T): MutableRefObject<T> => {\n return useRef<T>(value) as MutableRefObject<T>;\n};\n","import React, { forwardRef, type ReactNode, useId } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCheckCircleFilled } from \"@purpur/icon/check-circle-filled\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport type { TextFieldBaseProps } from \"./text-field\";\nimport defaultStyles from \"./text-field.module.scss\";\nimport { useMutableRefObject } from \"./utils\";\n\nconst defaultRootClassName = \"purpur-text-field-default\";\n\n// Internal overrides for variant composition (not part of the public API)\nexport type TextFieldBaseInternalOverrides = {\n _styles?: Record<string, string>;\n _rootClassName?: string;\n _prependEndAdornments?: ReactNode[];\n _inputModifiers?: Record<string, boolean>;\n _frameModifiers?: Record<string, boolean>;\n _inputContainerRef?: React.Ref<HTMLDivElement>;\n};\n\nexport const TextFieldBase = forwardRef<\n HTMLInputElement,\n TextFieldBaseProps & TextFieldBaseInternalOverrides\n>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n beforeField,\n afterField,\n endAdornment,\n errorText,\n helperText,\n hideRequiredAsterisk = false,\n label,\n loading = false,\n onClear,\n startAdornment,\n valid = false,\n negative = false,\n _styles,\n _rootClassName,\n _prependEndAdornments,\n _inputModifiers,\n _frameModifiers,\n _inputContainerRef,\n ...inputProps\n },\n ref\n ) => {\n const cx = c.bind(_styles ?? defaultStyles);\n const rootClassName = _rootClassName ?? defaultRootClassName;\n const randomId = useId();\n const inputId = inputProps.id ?? randomId;\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const helperTextId = helperText ? `${inputId}-helper-text` : undefined;\n const startAdornments: ReactNode[] = [startAdornment].filter((adornment) => !!adornment);\n const hasValue =\n typeof inputProps.value === \"number\"\n ? inputProps.value !== undefined\n : inputProps.value?.length;\n const hasClearButton =\n hasValue &&\n !inputProps.disabled &&\n !inputProps.readOnly &&\n !loading &&\n onClear &&\n clearButtonAriaLabel;\n\n const internalRef = useMutableRefObject<HTMLInputElement | null>(null);\n const setRef = (node: HTMLInputElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n const handleClear = () => {\n onClear?.();\n internalRef.current?.focus();\n };\n\n const localEndAdornments: ReactNode[] = [\n ...(_prependEndAdornments ?? []),\n loading && (\n <Spinner\n key=\"spinner\"\n disabled={inputProps.disabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n negative={negative}\n />\n ),\n hasClearButton && (\n <Button\n negative={negative}\n key=\"clear-button\"\n variant=\"tertiary-purple\"\n onClick={handleClear}\n iconOnly\n aria-label={clearButtonAriaLabel ?? \"\"}\n data-testid={getTestId(\"clear-button\")}\n tabIndex={-1}\n >\n <IconClose size=\"xs\" />\n </Button>\n ),\n isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`, {\n [`${rootClassName}__valid-icon--negative`]: negative,\n })}\n />\n ),\n ].filter((adornment) => !!adornment);\n\n const inputContainerClassnames = cx(`${rootClassName}__input-container`, {\n [`${rootClassName}__input-container--start-adornment`]: startAdornments.length,\n [`${rootClassName}__input-container--end-adornment`]:\n localEndAdornments.length || endAdornment,\n [`${rootClassName}__input-container--disabled`]: inputProps.disabled,\n [`${rootClassName}__input-container--has-clear-button`]: hasClearButton,\n [`${rootClassName}__input-container--readonly`]: inputProps.readOnly && !inputProps.disabled,\n [`${rootClassName}__input-container--negative`]: negative,\n });\n\n return (\n <div className={cx(className, rootClassName)}>\n {label && (\n <Label\n htmlFor={inputId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={inputProps.disabled}\n negative={negative}\n >\n {inputProps.required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n {!!beforeField && beforeField}\n <div ref={_inputContainerRef} className={inputContainerClassnames}>\n {!!startAdornments.length && (\n <div\n data-testid={getTestId(\"start-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {startAdornments}\n </div>\n )}\n <input\n {...inputProps}\n id={inputId}\n ref={setRef}\n data-testid={getTestId(\"input\")}\n aria-describedby={inputProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={inputProps[\"aria-invalid\"] || !!errorText}\n className={cx([\n `${rootClassName}__input`,\n {\n [`${rootClassName}__input--valid`]: isValid,\n [`${rootClassName}__input--error`]: !!errorText,\n [`${rootClassName}__input--negative`]: negative,\n ...(_inputModifiers ?? {}),\n },\n ])}\n />\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n ...(_frameModifiers ?? {}),\n })}\n />\n {(!!localEndAdornments.length || endAdornment) && (\n <div\n data-testid={getTestId(\"end-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {localEndAdornments}\n {endAdornment}\n </div>\n )}\n </div>\n {!!afterField && afterField}\n </div>\n {helperTextId && (\n <FieldHelperText\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n disabled={inputProps.disabled}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextFieldBase.displayName = \"TextField\";\n","import React, { forwardRef, type ReactNode, useCallback, useEffect, useRef, useState } from \"react\";\nimport { IconEditAi } from \"@purpur/icon/edit-ai\";\nimport c from \"classnames/bind\";\n\nimport type { TextFieldAiInternalProps } from \"./text-field\";\nimport aiStyles from \"./text-field-ai.module.scss\";\nimport { TextFieldBase } from \"./text-field-base\";\n\nconst cx = c.bind(aiStyles);\nconst rootClassName = \"purpur-text-field-ai\";\nconst defaultTypingAnimationDurationMs = 1400;\n\nconst hasInputValue = (value: unknown) => {\n if (typeof value === \"number\") {\n return !Number.isNaN(value);\n }\n\n if (typeof value === \"string\") {\n return value.length > 0;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null;\n};\n\nexport const TextFieldAiInternal = forwardRef<HTMLInputElement, TextFieldAiInternalProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n animatePrepopulatedValue = false,\n typingAnimationDurationMs = defaultTypingAnimationDurationMs,\n endAdornment,\n value: controlledValue,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n valid = false,\n negative = false,\n ...baseProps\n },\n ref\n ) => {\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const [hasUserEditedValue, setHasUserEditedValue] = useState(false);\n const [shouldAnimatePrepopulatedValue, setShouldAnimatePrepopulatedValue] = useState(false);\n const [hasAnimatedPrepopulatedValue, setHasAnimatedPrepopulatedValue] = useState(false);\n const [animatedTypingValue, setAnimatedTypingValue] = useState<string | null>(null);\n const typingAnimationTimerRef = useRef<number | null>(null);\n const inputContainerRef = useRef<HTMLDivElement | null>(null);\n\n const value = isControlled ? controlledValue : uncontrolledValue;\n const hasValue = hasInputValue(value);\n const isAiPresentationActive = hasValue && !hasUserEditedValue;\n const isTypingAnimationRunning = animatedTypingValue !== null;\n const displayValue = isTypingAnimationRunning ? animatedTypingValue : value ?? \"\";\n const shouldAnimatePrepopulated =\n isAiPresentationActive &&\n animatePrepopulatedValue &&\n !hasAnimatedPrepopulatedValue &&\n !disabled &&\n !readOnly;\n\n const clearTypingAnimation = useCallback(() => {\n if (typingAnimationTimerRef.current !== null) {\n window.clearInterval(typingAnimationTimerRef.current);\n typingAnimationTimerRef.current = null;\n }\n }, []);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n clearTypingAnimation();\n setAnimatedTypingValue(null);\n\n if (!isControlled) {\n setUncontrolledValue(event.currentTarget.value);\n }\n\n setHasUserEditedValue(true);\n onChange?.(event);\n };\n\n useEffect(() => {\n if (!shouldAnimatePrepopulated || typeof IntersectionObserver === \"undefined\") {\n return;\n }\n\n const node = inputContainerRef.current;\n\n if (!node) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const isVisible = entries.some((entry) => entry.isIntersecting);\n\n if (isVisible) {\n setShouldAnimatePrepopulatedValue(true);\n setHasAnimatedPrepopulatedValue(true);\n observer.disconnect();\n }\n },\n { threshold: 0.35 }\n );\n\n observer.observe(node);\n\n return () => observer.disconnect();\n }, [shouldAnimatePrepopulated]);\n\n useEffect(() => {\n if (!shouldAnimatePrepopulatedValue || hasUserEditedValue || typeof value !== \"string\") {\n return;\n }\n\n const shouldReduceMotion = window.matchMedia?.(\"(prefers-reduced-motion: reduce)\")?.matches;\n\n if (shouldReduceMotion || value.length === 0) {\n setShouldAnimatePrepopulatedValue(false);\n return;\n }\n\n clearTypingAnimation();\n setAnimatedTypingValue(\"\");\n\n let index = 0;\n const safeAnimationDuration =\n Number.isFinite(typingAnimationDurationMs) && typingAnimationDurationMs > 0\n ? typingAnimationDurationMs\n : defaultTypingAnimationDurationMs;\n const intervalDuration = Math.max(20, Math.floor(safeAnimationDuration / value.length));\n\n typingAnimationTimerRef.current = window.setInterval(() => {\n index += 1;\n setAnimatedTypingValue(value.slice(0, index));\n\n if (index >= value.length) {\n clearTypingAnimation();\n setAnimatedTypingValue(null);\n setShouldAnimatePrepopulatedValue(false);\n }\n }, intervalDuration);\n\n return clearTypingAnimation;\n }, [\n clearTypingAnimation,\n hasUserEditedValue,\n shouldAnimatePrepopulatedValue,\n typingAnimationDurationMs,\n value,\n ]);\n\n useEffect(() => clearTypingAnimation, [clearTypingAnimation]);\n\n const aiEndAdornments: ReactNode[] = [];\n\n if (endAdornment === undefined && isAiPresentationActive) {\n aiEndAdornments.push(\n <IconEditAi\n key=\"ai-icon\"\n size=\"xs\"\n data-testid={getTestId(\"edit-ai-icon\")}\n className={cx(`${rootClassName}__ai-icon`, {\n [`${rootClassName}__ai-icon--negative`]: negative,\n })}\n />\n );\n }\n\n return (\n <TextFieldBase\n ref={ref}\n data-testid={dataTestId}\n {...baseProps}\n endAdornment={endAdornment}\n value={displayValue}\n onChange={handleInputChange}\n disabled={disabled}\n readOnly={readOnly}\n valid={valid}\n negative={negative}\n _styles={aiStyles}\n _rootClassName={rootClassName}\n _prependEndAdornments={aiEndAdornments}\n _inputModifiers={{ [`${rootClassName}__input--ai`]: isAiPresentationActive }}\n _frameModifiers={{ [`${rootClassName}__frame--ai`]: isAiPresentationActive }}\n _inputContainerRef={inputContainerRef}\n />\n );\n }\n);\n\nTextFieldAiInternal.displayName = \"TextField\";\n","import React, {\n forwardRef,\n type HTMLInputTypeAttribute,\n isValidElement,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport { TextFieldAiInternal } from \"./text-field-ai\";\nimport { TextFieldBase } from \"./text-field-base\";\n\nexport const textFieldVariants = [\"default\", \"ai\"] as const;\nexport type TextFieldVariant = (typeof textFieldVariants)[number];\n\ntype TextFieldCommonProps = {\n /**\n * Use to display e.g. a button before the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n beforeField?: ReactNode;\n /**\n * Use to display e.g. a button after the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n afterField?: ReactNode;\n /**\n * Use to display e.g. an icon at the end inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n endAdornment?: ReactNode;\n /**\n * Use to render error message below the text field. The text field renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the field's input. Renders below the field.\n * */\n helperText?: string;\n /**\n * The label of the text field.\n * */\n label?: string;\n /**\n * Use to render a spinner at the end inside of the text field.\n */\n loading?: boolean;\n /**\n * Hide the asterisk for required fields.\n * This is useful when the field is required but the context already indicates that.\n */\n hideRequiredAsterisk?: boolean;\n /**\n * Use to display e.g. an icon at the start inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n startAdornment?: ReactNode;\n /**\n * Use to set the type of the field.\n */\n type?: Extract<\n HTMLInputTypeAttribute,\n \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\"\n >;\n /**\n * Use to render text field with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n negative?: boolean;\n};\n\ntype TextFieldClearProps =\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n }\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel?: never;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear?: never;\n };\n\ntype TextFieldAiProps = {\n /**\n * Animate prepopulated value once when the field scrolls into view.\n */\n animatePrepopulatedValue?: boolean;\n /**\n * Duration in milliseconds for the prepopulated typing animation.\n */\n typingAnimationDurationMs?: number;\n};\n\nexport type TextFieldBaseProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldCommonProps &\n TextFieldClearProps;\n\nexport type TextFieldAiInternalProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldCommonProps &\n TextFieldClearProps &\n TextFieldAiProps;\n\nexport type TextFieldProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldCommonProps &\n TextFieldClearProps &\n TextFieldAiProps & {\n /**\n * Use to select the text field variant.\n * - `\"default\"` renders a standard text field.\n * - `\"ai\"` renders a text field with AI presentation (gradient border, AI icon, typing animation).\n * @default \"default\"\n */\n variant?: TextFieldVariant;\n };\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n ({ variant = \"default\", ...props }, ref) => {\n if (variant === \"ai\") {\n return <TextFieldAiInternal ref={ref} {...props} />;\n }\n\n return <TextFieldBase ref={ref} {...props} />;\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport const isTextField = (child?: ReactNode): child is ReactElement<TextFieldProps> =>\n isValidElement<TextFieldProps>(child) &&\n (child.type as any).displayName === TextField.displayName; // eslint-disable-line @typescript-eslint/no-explicit-any\n"],"names":["t","l","a","i","o","useMutableRefObject","value","useRef","defaultRootClassName","TextFieldBase","forwardRef","dataTestId","className","clearButtonAriaLabel","beforeField","afterField","endAdornment","errorText","helperText","hideRequiredAsterisk","label","loading","onClear","startAdornment","valid","negative","_styles","_rootClassName","_prependEndAdornments","_inputModifiers","_frameModifiers","_inputContainerRef","inputProps","ref","cx","c","defaultStyles","rootClassName","randomId","useId","inputId","getTestId","name","isValid","helperTextId","startAdornments","adornment","hasClearButton","internalRef","setRef","node","handleClear","localEndAdornments","jsx","Spinner","Button","IconClose","IconCheckCircleFilled","inputContainerClassnames","jsxs","Label","FieldHelperText","FieldErrorText","aiStyles","defaultTypingAnimationDurationMs","hasInputValue","TextFieldAiInternal","animatePrepopulatedValue","typingAnimationDurationMs","controlledValue","defaultValue","onChange","disabled","readOnly","baseProps","isControlled","uncontrolledValue","setUncontrolledValue","useState","hasUserEditedValue","setHasUserEditedValue","shouldAnimatePrepopulatedValue","setShouldAnimatePrepopulatedValue","hasAnimatedPrepopulatedValue","setHasAnimatedPrepopulatedValue","animatedTypingValue","setAnimatedTypingValue","typingAnimationTimerRef","inputContainerRef","isAiPresentationActive","displayValue","shouldAnimatePrepopulated","clearTypingAnimation","useCallback","handleInputChange","event","useEffect","observer","entries","entry","index","safeAnimationDuration","intervalDuration","aiEndAdornments","IconEditAi","textFieldVariants","TextField","variant","props","isTextField","child","isValidElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"text-field-D8MMa6ij.mjs","sources":["../../../components/icon/dist/components/edit-ai.es.js","../../../components/text-field/src/utils.ts","../../../components/text-field/src/text-field-base.tsx","../../../components/text-field/src/text-field-ai.tsx","../../../components/text-field/src/text-field.tsx"],"sourcesContent":["import { jsx as i } from \"react/jsx-runtime\";\nimport { I as o } from \"../icon-DNHpBTHs.mjs\";\nconst t = {\n name: \"edit-ai\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M18.175 22.5c.464-.002.856-.304.978-.755.41-1.533 1.255-2.463 2.655-2.926a1.02 1.02 0 0 0 .015-1.93c-1.437-.508-2.283-1.434-2.664-2.919a1.017 1.017 0 0 0-.974-.766c-.445.02-.865.305-.986.747-.422 1.518-1.267 2.447-2.661 2.923a1.02 1.02 0 0 0-.686.969c0 .436.278.824.686.961 1.4.479 2.243 1.414 2.657 2.946.12.442.523.75.978.75h.002Zm-1.788-4.66a5.334 5.334 0 0 0 1.78-1.867 5.323 5.323 0 0 0 1.792 1.87 5.256 5.256 0 0 0-1.787 1.88 5.326 5.326 0 0 0-1.785-1.883Zm4.668-12.884L18.19 2.091a1.9 1.9 0 0 0-2.687 0l-11.37 11.37a.9.9 0 0 0-.212.335L1.556 20.44a.9.9 0 0 0 1.15 1.15l6.644-2.365a.9.9 0 0 0 .335-.212l11.37-11.37a1.9 1.9 0 0 0 0-2.687ZM3.888 19.26l1.253-3.518 2.264 2.264-3.517 1.254ZM19.781 6.37 9.048 17.104 6.04 14.098l8.16-8.16 1.504 1.503a.9.9 0 1 0 1.273-1.273l-1.504-1.503 1.302-1.3a.1.1 0 0 1 .14 0l2.865 2.864a.1.1 0 0 1 0 .141Z\"/></svg>',\n keywords: [\"edit-ai\"],\n category: \"ai\"\n}, l = (a) => /* @__PURE__ */ i(o, { ...a, svg: t });\nl.displayName = \"IconEditAi\";\nexport {\n l as IconEditAi\n};\n//# sourceMappingURL=edit-ai.es.js.map\n","import { type MutableRefObject, useRef } from \"react\";\n\nexport const useMutableRefObject = <T>(value: T): MutableRefObject<T> => {\n return useRef<T>(value) as MutableRefObject<T>;\n};\n","import React, { forwardRef, type ReactNode, useId } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCheckCircleFilled } from \"@purpur/icon/check-circle-filled\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport type { TextFieldBaseProps } from \"./text-field\";\nimport defaultStyles from \"./text-field.module.scss\";\nimport { useMutableRefObject } from \"./utils\";\n\nconst defaultRootClassName = \"purpur-text-field-default\";\n\n// Internal overrides for variant composition (not part of the public API)\nexport type TextFieldBaseInternalOverrides = {\n _styles?: Record<string, string>;\n _rootClassName?: string;\n _prependEndAdornments?: ReactNode[];\n _inputModifiers?: Record<string, boolean>;\n _frameModifiers?: Record<string, boolean>;\n _inputContainerRef?: React.Ref<HTMLDivElement>;\n};\n\nexport const TextFieldBase = forwardRef<\n HTMLInputElement,\n TextFieldBaseProps & TextFieldBaseInternalOverrides\n>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n beforeField,\n afterField,\n endAdornment,\n errorText,\n helperText,\n hideRequiredAsterisk = false,\n label,\n loading = false,\n onClear,\n startAdornment,\n valid = false,\n negative = false,\n _styles,\n _rootClassName,\n _prependEndAdornments,\n _inputModifiers,\n _frameModifiers,\n _inputContainerRef,\n ...inputProps\n },\n ref\n ) => {\n const cx = c.bind(_styles ?? defaultStyles);\n const rootClassName = _rootClassName ?? defaultRootClassName;\n const randomId = useId();\n const inputId = inputProps.id ?? randomId;\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const helperTextId = helperText ? `${inputId}-helper-text` : undefined;\n const startAdornments: ReactNode[] = [startAdornment].filter((adornment) => !!adornment);\n const hasValue =\n typeof inputProps.value === \"number\"\n ? inputProps.value !== undefined\n : inputProps.value?.length;\n const hasClearButton =\n hasValue &&\n !inputProps.disabled &&\n !inputProps.readOnly &&\n !loading &&\n onClear &&\n clearButtonAriaLabel;\n\n const internalRef = useMutableRefObject<HTMLInputElement | null>(null);\n const setRef = (node: HTMLInputElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n const handleClear = () => {\n onClear?.();\n internalRef.current?.focus();\n };\n\n const localEndAdornments: ReactNode[] = [\n ...(_prependEndAdornments ?? []),\n loading && (\n <Spinner\n key=\"spinner\"\n disabled={inputProps.disabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n negative={negative}\n />\n ),\n hasClearButton && (\n <Button\n negative={negative}\n key=\"clear-button\"\n variant=\"tertiary-purple\"\n onClick={handleClear}\n iconOnly\n aria-label={clearButtonAriaLabel ?? \"\"}\n data-testid={getTestId(\"clear-button\")}\n tabIndex={-1}\n >\n <IconClose size=\"xs\" />\n </Button>\n ),\n isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`, {\n [`${rootClassName}__valid-icon--negative`]: negative,\n })}\n />\n ),\n ].filter((adornment) => !!adornment);\n\n const inputContainerClassnames = cx(`${rootClassName}__input-container`, {\n [`${rootClassName}__input-container--start-adornment`]: startAdornments.length,\n [`${rootClassName}__input-container--end-adornment`]:\n localEndAdornments.length || endAdornment,\n [`${rootClassName}__input-container--disabled`]: inputProps.disabled,\n [`${rootClassName}__input-container--has-clear-button`]: hasClearButton,\n [`${rootClassName}__input-container--readonly`]: inputProps.readOnly && !inputProps.disabled,\n [`${rootClassName}__input-container--negative`]: negative,\n });\n\n return (\n <div className={cx(className, rootClassName)}>\n {label && (\n <Label\n htmlFor={inputId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={inputProps.disabled}\n negative={negative}\n >\n {inputProps.required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n {!!beforeField && beforeField}\n <div ref={_inputContainerRef} className={inputContainerClassnames}>\n {!!startAdornments.length && (\n <div\n data-testid={getTestId(\"start-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {startAdornments}\n </div>\n )}\n <input\n {...inputProps}\n id={inputId}\n ref={setRef}\n data-testid={getTestId(\"input\")}\n aria-describedby={inputProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={inputProps[\"aria-invalid\"] || !!errorText}\n className={cx([\n `${rootClassName}__input`,\n {\n [`${rootClassName}__input--valid`]: isValid,\n [`${rootClassName}__input--error`]: !!errorText,\n [`${rootClassName}__input--negative`]: negative,\n ...(_inputModifiers ?? {}),\n },\n ])}\n />\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n ...(_frameModifiers ?? {}),\n })}\n />\n {(!!localEndAdornments.length || endAdornment) && (\n <div\n data-testid={getTestId(\"end-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {localEndAdornments}\n {endAdornment}\n </div>\n )}\n </div>\n {!!afterField && afterField}\n </div>\n {helperTextId && (\n <FieldHelperText\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n disabled={inputProps.disabled}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextFieldBase.displayName = \"TextField\";\n","import React, { forwardRef, type ReactNode, useCallback, useEffect, useRef, useState } from \"react\";\nimport { IconEditAi } from \"@purpur/icon/edit-ai\";\nimport c from \"classnames/bind\";\n\nimport type { TextFieldAiInternalProps } from \"./text-field\";\nimport aiStyles from \"./text-field-ai.module.scss\";\nimport { TextFieldBase } from \"./text-field-base\";\n\nconst cx = c.bind(aiStyles);\nconst rootClassName = \"purpur-text-field-ai\";\nconst defaultTypingAnimationDurationMs = 1400;\n\nconst hasInputValue = (value: unknown) => {\n if (typeof value === \"number\") {\n return !Number.isNaN(value);\n }\n\n if (typeof value === \"string\") {\n return value.length > 0;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null;\n};\n\nexport const TextFieldAiInternal = forwardRef<HTMLInputElement, TextFieldAiInternalProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n animatePrepopulatedValue = false,\n typingAnimationDurationMs = defaultTypingAnimationDurationMs,\n endAdornment,\n value: controlledValue,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n valid = false,\n negative = false,\n ...baseProps\n },\n ref\n ) => {\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const [hasUserEditedValue, setHasUserEditedValue] = useState(false);\n const [shouldAnimatePrepopulatedValue, setShouldAnimatePrepopulatedValue] = useState(false);\n const [hasAnimatedPrepopulatedValue, setHasAnimatedPrepopulatedValue] = useState(false);\n const [animatedTypingValue, setAnimatedTypingValue] = useState<string | null>(null);\n const typingAnimationTimerRef = useRef<number | null>(null);\n const inputContainerRef = useRef<HTMLDivElement | null>(null);\n\n const value = isControlled ? controlledValue : uncontrolledValue;\n const hasValue = hasInputValue(value);\n const isAiPresentationActive = hasValue && !hasUserEditedValue;\n const isTypingAnimationRunning = animatedTypingValue !== null;\n const displayValue = isTypingAnimationRunning ? animatedTypingValue : value ?? \"\";\n const shouldAnimatePrepopulated =\n isAiPresentationActive &&\n animatePrepopulatedValue &&\n !hasAnimatedPrepopulatedValue &&\n !disabled &&\n !readOnly;\n\n const clearTypingAnimation = useCallback(() => {\n if (typingAnimationTimerRef.current !== null) {\n window.clearInterval(typingAnimationTimerRef.current);\n typingAnimationTimerRef.current = null;\n }\n }, []);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n clearTypingAnimation();\n setAnimatedTypingValue(null);\n\n if (!isControlled) {\n setUncontrolledValue(event.currentTarget.value);\n }\n\n setHasUserEditedValue(true);\n onChange?.(event);\n };\n\n useEffect(() => {\n if (!shouldAnimatePrepopulated || typeof IntersectionObserver === \"undefined\") {\n return;\n }\n\n const node = inputContainerRef.current;\n\n if (!node) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const isVisible = entries.some((entry) => entry.isIntersecting);\n\n if (isVisible) {\n setShouldAnimatePrepopulatedValue(true);\n setHasAnimatedPrepopulatedValue(true);\n observer.disconnect();\n }\n },\n { threshold: 0.35 }\n );\n\n observer.observe(node);\n\n return () => observer.disconnect();\n }, [shouldAnimatePrepopulated]);\n\n useEffect(() => {\n if (!shouldAnimatePrepopulatedValue || hasUserEditedValue || typeof value !== \"string\") {\n return;\n }\n\n const shouldReduceMotion = window.matchMedia?.(\"(prefers-reduced-motion: reduce)\")?.matches;\n\n if (shouldReduceMotion || value.length === 0) {\n setShouldAnimatePrepopulatedValue(false);\n return;\n }\n\n clearTypingAnimation();\n setAnimatedTypingValue(\"\");\n\n let index = 0;\n const safeAnimationDuration =\n Number.isFinite(typingAnimationDurationMs) && typingAnimationDurationMs > 0\n ? typingAnimationDurationMs\n : defaultTypingAnimationDurationMs;\n const intervalDuration = Math.max(20, Math.floor(safeAnimationDuration / value.length));\n\n typingAnimationTimerRef.current = window.setInterval(() => {\n index += 1;\n setAnimatedTypingValue(value.slice(0, index));\n\n if (index >= value.length) {\n clearTypingAnimation();\n setAnimatedTypingValue(null);\n setShouldAnimatePrepopulatedValue(false);\n }\n }, intervalDuration);\n\n return clearTypingAnimation;\n }, [\n clearTypingAnimation,\n hasUserEditedValue,\n shouldAnimatePrepopulatedValue,\n typingAnimationDurationMs,\n value,\n ]);\n\n useEffect(() => clearTypingAnimation, [clearTypingAnimation]);\n\n const aiEndAdornments: ReactNode[] = [];\n\n if (endAdornment === undefined && isAiPresentationActive) {\n aiEndAdornments.push(\n <IconEditAi\n key=\"ai-icon\"\n size=\"xs\"\n data-testid={getTestId(\"edit-ai-icon\")}\n className={cx(`${rootClassName}__ai-icon`, {\n [`${rootClassName}__ai-icon--negative`]: negative,\n })}\n />\n );\n }\n\n return (\n <TextFieldBase\n ref={ref}\n data-testid={dataTestId}\n {...baseProps}\n endAdornment={endAdornment}\n value={displayValue}\n onChange={handleInputChange}\n disabled={disabled}\n readOnly={readOnly}\n valid={valid}\n negative={negative}\n _styles={aiStyles}\n _rootClassName={rootClassName}\n _prependEndAdornments={aiEndAdornments}\n _inputModifiers={{ [`${rootClassName}__input--ai`]: isAiPresentationActive }}\n _frameModifiers={{ [`${rootClassName}__frame--ai`]: isAiPresentationActive }}\n _inputContainerRef={inputContainerRef}\n />\n );\n }\n);\n\nTextFieldAiInternal.displayName = \"TextField\";\n","import React, {\n forwardRef,\n type HTMLInputTypeAttribute,\n isValidElement,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport { TextFieldAiInternal } from \"./text-field-ai\";\nimport { TextFieldBase } from \"./text-field-base\";\n\nexport const textFieldVariants = [\"default\", \"ai\"] as const;\nexport type TextFieldVariant = (typeof textFieldVariants)[number];\n\ntype TextFieldCommonProps = {\n /**\n * Use to display e.g. a button before the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n beforeField?: ReactNode;\n /**\n * Use to display e.g. a button after the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n afterField?: ReactNode;\n /**\n * Use to display e.g. an icon at the end inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n endAdornment?: ReactNode;\n /**\n * Use to render error message below the text field. The text field renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the field's input. Renders below the field.\n * */\n helperText?: string;\n /**\n * The label of the text field.\n * */\n label?: string;\n /**\n * Use to render a spinner at the end inside of the text field.\n */\n loading?: boolean;\n /**\n * Hide the asterisk for required fields.\n * This is useful when the field is required but the context already indicates that.\n */\n hideRequiredAsterisk?: boolean;\n /**\n * Use to display e.g. an icon at the start inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n startAdornment?: ReactNode;\n /**\n * Use to set the type of the field.\n */\n type?: Extract<\n HTMLInputTypeAttribute,\n \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\"\n >;\n /**\n * Use to render text field with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n negative?: boolean;\n};\n\ntype TextFieldClearProps =\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n }\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel?: never;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear?: never;\n };\n\ntype TextFieldAiProps = {\n /**\n * Animate prepopulated value once when the field scrolls into view.\n */\n animatePrepopulatedValue?: boolean;\n /**\n * Duration in milliseconds for the prepopulated typing animation.\n */\n typingAnimationDurationMs?: number;\n};\n\nexport type TextFieldBaseProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldCommonProps &\n TextFieldClearProps;\n\nexport type TextFieldAiInternalProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldCommonProps &\n TextFieldClearProps &\n TextFieldAiProps;\n\nexport type TextFieldProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldCommonProps &\n TextFieldClearProps &\n TextFieldAiProps & {\n /**\n * Use to select the text field variant.\n * - `\"default\"` renders a standard text field.\n * - `\"ai\"` renders a text field with AI presentation (gradient border, AI icon, typing animation).\n * @default \"default\"\n */\n variant?: TextFieldVariant;\n };\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n ({ variant = \"default\", ...props }, ref) => {\n if (variant === \"ai\") {\n return <TextFieldAiInternal ref={ref} {...props} />;\n }\n\n return <TextFieldBase ref={ref} {...props} />;\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport const isTextField = (child?: ReactNode): child is ReactElement<TextFieldProps> =>\n isValidElement<TextFieldProps>(child) &&\n (child.type as any).displayName === TextField.displayName; // eslint-disable-line @typescript-eslint/no-explicit-any\n"],"names":["t","l","a","i","o","useMutableRefObject","value","useRef","defaultRootClassName","TextFieldBase","forwardRef","dataTestId","className","clearButtonAriaLabel","beforeField","afterField","endAdornment","errorText","helperText","hideRequiredAsterisk","label","loading","onClear","startAdornment","valid","negative","_styles","_rootClassName","_prependEndAdornments","_inputModifiers","_frameModifiers","_inputContainerRef","inputProps","ref","cx","c","defaultStyles","rootClassName","randomId","useId","inputId","getTestId","name","isValid","helperTextId","startAdornments","adornment","hasClearButton","internalRef","setRef","node","handleClear","localEndAdornments","jsx","Spinner","Button","IconClose","IconCheckCircleFilled","inputContainerClassnames","jsxs","Label","FieldHelperText","FieldErrorText","aiStyles","defaultTypingAnimationDurationMs","hasInputValue","TextFieldAiInternal","animatePrepopulatedValue","typingAnimationDurationMs","controlledValue","defaultValue","onChange","disabled","readOnly","baseProps","isControlled","uncontrolledValue","setUncontrolledValue","useState","hasUserEditedValue","setHasUserEditedValue","shouldAnimatePrepopulatedValue","setShouldAnimatePrepopulatedValue","hasAnimatedPrepopulatedValue","setHasAnimatedPrepopulatedValue","animatedTypingValue","setAnimatedTypingValue","typingAnimationTimerRef","inputContainerRef","isAiPresentationActive","displayValue","shouldAnimatePrepopulated","clearTypingAnimation","useCallback","handleInputChange","event","useEffect","observer","entries","entry","index","safeAnimationDuration","intervalDuration","aiEndAdornments","IconEditAi","textFieldVariants","TextField","variant","props","isTextField","child","isValidElement"],"mappings":"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"}
|
package/dist/text-field.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./text-field-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./text-field-C2W13n15.js");exports.TextField=e.TextField;exports.isTextField=e.isTextField;exports.textFieldVariants=e.textFieldVariants;
|
|
2
2
|
//# sourceMappingURL=text-field.cjs.js.map
|
package/dist/text-field.es.js
CHANGED
package/dist/theme.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ThemeProvider-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ThemeProvider-BJGm3zai.js"),r=require("./useColorScheme-BHhPgv9q.js"),o=require("./useThemePortalContainer-CUcqV327.js");exports.ThemeProvider=e.ThemeProvider;exports.teliaTheme=e.teliaTheme;exports.useApplyTheme=e.useApplyTheme;exports.useTheme=e.useTheme;exports.useColorScheme=r.useColorScheme;exports.useThemePortalContainer=o.useThemePortalContainer;
|
|
2
2
|
//# sourceMappingURL=theme.cjs.js.map
|
package/dist/theme.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { T as r, t as a, u as s, a as m } from "./ThemeProvider-
|
|
2
|
-
import { u } from "./useColorScheme-
|
|
3
|
-
import { u as T } from "./useThemePortalContainer-
|
|
1
|
+
import { T as r, t as a, u as s, a as m } from "./ThemeProvider-BJ25_asg.mjs";
|
|
2
|
+
import { u } from "./useColorScheme-B7lGBSe4.mjs";
|
|
3
|
+
import { u as T } from "./useThemePortalContainer-D13Xx24N.mjs";
|
|
4
4
|
export {
|
|
5
5
|
r as ThemeProvider,
|
|
6
6
|
a as teliaTheme,
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
--purpur-color-background-secondary-negative: var(--purpur-color-purple-900);
|
|
179
179
|
--purpur-color-background-on-image: var(--purpur-color-transparent-white-850);
|
|
180
180
|
--purpur-color-background-on-image-negative: var(--purpur-color-transparent-black-700);
|
|
181
|
-
--purpur-color-background-interactive-auto-fill: var(--purpur-color-
|
|
181
|
+
--purpur-color-background-interactive-auto-fill: var(--purpur-color-purple-50);
|
|
182
182
|
--purpur-color-background-interactive-primary: var(--purpur-color-purple-800);
|
|
183
183
|
--purpur-color-background-interactive-primary-hover: var(--purpur-color-purple-700);
|
|
184
184
|
--purpur-color-background-interactive-primary-active: var(--purpur-color-purple-600);
|
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
--purpur-color-background-secondary-negative: var(--purpur-color-gray-50);
|
|
181
181
|
--purpur-color-background-on-image: var(--purpur-color-transparent-black-700);
|
|
182
182
|
--purpur-color-background-on-image-negative: var(--purpur-color-transparent-white-850);
|
|
183
|
-
--purpur-color-background-interactive-auto-fill: var(--purpur-color-
|
|
183
|
+
--purpur-color-background-interactive-auto-fill: var(--purpur-color-purple-800);
|
|
184
184
|
--purpur-color-background-interactive-primary: var(--purpur-color-purple-100);
|
|
185
185
|
--purpur-color-background-interactive-primary-hover: var(--purpur-color-purple-200);
|
|
186
186
|
--purpur-color-background-interactive-primary-active: var(--purpur-color-purple-300);
|