@warp-ds/elements 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +199 -129
  3. package/dist/index.js.map +4 -4
  4. package/dist/packages/affix/index.js +139 -62
  5. package/dist/packages/affix/index.js.map +4 -4
  6. package/dist/packages/alert/index.js +148 -71
  7. package/dist/packages/alert/index.js.map +4 -4
  8. package/dist/packages/attention/index.d.ts +1 -1
  9. package/dist/packages/attention/index.js +139 -62
  10. package/dist/packages/attention/index.js.map +4 -4
  11. package/dist/packages/badge/index.js +114 -46
  12. package/dist/packages/badge/index.js.map +3 -3
  13. package/dist/packages/box/index.js +105 -39
  14. package/dist/packages/box/index.js.map +3 -3
  15. package/dist/packages/breadcrumbs/index.js +142 -65
  16. package/dist/packages/breadcrumbs/index.js.map +4 -4
  17. package/dist/packages/broadcast/index.js.map +1 -1
  18. package/dist/packages/button/index.js +139 -62
  19. package/dist/packages/button/index.js.map +4 -4
  20. package/dist/packages/card/index.js +112 -46
  21. package/dist/packages/card/index.js.map +3 -3
  22. package/dist/packages/expandable/index.js +139 -62
  23. package/dist/packages/expandable/index.js.map +4 -4
  24. package/dist/packages/pill/index.js +141 -64
  25. package/dist/packages/pill/index.js.map +4 -4
  26. package/dist/packages/select/index.js +153 -80
  27. package/dist/packages/select/index.js.map +4 -4
  28. package/dist/packages/textfield/index.d.ts +0 -1
  29. package/dist/packages/textfield/index.js +119 -55
  30. package/dist/packages/textfield/index.js.map +3 -3
  31. package/dist/packages/toast/index.js +146 -69
  32. package/dist/packages/toast/index.js.map +4 -4
  33. package/package.json +25 -37
@@ -1033,26 +1033,27 @@ function interleave(array, separator2) {
1033
1033
  return array.flatMap((el) => [el, separator2]).slice(0, -1);
1034
1034
  }
1035
1035
 
1036
- // node_modules/.pnpm/@warp-ds+css@1.7.0/node_modules/@warp-ds/css/component-classes/index.js
1036
+ // node_modules/.pnpm/@warp-ds+css@1.9.1/node_modules/@warp-ds/css/component-classes/index.js
1037
1037
  var box = {
1038
1038
  box: "group block relative break-words last-child:mb-0 p-16 rounded-8",
1039
1039
  // Relative here enables w-clickable
1040
1040
  bleed: "-mx-16 sm:mx-0 rounded-l-0 rounded-r-0 sm:rounded-8",
1041
1041
  // We target L and R to override the default rounded-8
1042
- info: "i-bg-$color-box-info-background i-text-$color-box-info-text",
1043
- neutral: "i-bg-$color-box-neutral-background i-text-$color-box-neutral-text",
1044
- bordered: "border-2 i-border-$color-box-bordered-border i-bg-$color-box-bordered-background i-text-$color-box-bordered-text",
1045
- infoClickable: "hover:i-bg-$color-box-info-background-hover active:i-bg-$color-box-info-background-hover",
1046
- neutralClickable: "hover:i-bg-$color-box-neutral-background-hover active:i-bg-$color-box-neutral-background-hover",
1047
- borderedClickable: "hover:i-bg-$color-box-bordered-background-hover active:i-bg-$color-box-bordered-background-hover hover:i-border-$color-box-bordered-border-hover active:i-border-$color-box-bordered-border-hover"
1042
+ info: "s-bg-info-subtle",
1043
+ neutral: "bg-[--w-s-color-surface-sunken]",
1044
+ bordered: "border-2 s-border s-bg",
1045
+ infoClickable: "hover:s-bg-info-subtle-hover active:s-bg-info-subtle-hover",
1046
+ neutralClickable: "hover:s-bg-subtle-hover active:s-bg-subtle-hover",
1047
+ borderedClickable: "hover:s-bg-hover active:s-bg-hover hover:s-border-hover active:s-border-hover"
1048
1048
  };
1049
1049
  var buttonReset = "focus:outline-none appearance-none cursor-pointer bg-transparent border-0 m-0 p-0 inline-block";
1050
1050
  var expandable = {
1051
1051
  expandable: "will-change-height",
1052
- expandableTitle: "font-bold i-text-$color-expandable-title-text",
1053
- expandableBox: "i-bg-$color-expandable-background hover:i-bg-$color-expandable-background-hover py-0 px-0 " + box.box,
1052
+ expandableTitle: "font-bold s-text",
1053
+ expandableBox: "s-bg-subtle hover:s-bg-subtle-hover py-0 px-0 " + box.box,
1054
+ expandableInfo: "s-bg-info-subtle! hover:s-bg-info-subtle-hover!",
1054
1055
  expandableBleed: box.bleed,
1055
- chevron: "inline-block align-middle i-text-$color-expandable-icon",
1056
+ chevron: "inline-block align-middle s-icon",
1056
1057
  chevronNonBox: "ml-8",
1057
1058
  chevronBox: "",
1058
1059
  chevronTransform: "transform transition-transform transform-gpu ease-in-out",
@@ -1072,17 +1073,17 @@ var expandable = {
1072
1073
  };
1073
1074
  var buttonDefaultStyling = "font-bold focusable justify-center transition-colors ease-in-out";
1074
1075
  var buttonColors = {
1075
- primary: "i-text-$color-button-primary-text hover:i-text-$color-button-primary-text i-bg-$color-button-primary-background hover:i-bg-$color-button-primary-background-hover active:i-bg-$color-button-primary-background-active",
1076
- secondary: "i-text-$color-button-secondary-text hover:i-text-$color-button-secondary-text i-border-$color-button-secondary-border i-bg-$color-button-secondary-background hover:i-bg-$color-button-secondary-background-hover hover:i-border-$color-button-secondary-border-hover active:i-bg-$color-button-secondary-background-active",
1077
- utility: "i-text-$color-button-utility-text hover:i-text-$color-button-utility-text i-bg-$color-button-utility-background i-border-$color-button-utility-border hover:i-bg-$color-button-utility-background hover:i-border-$color-button-utility-border-hover active:i-border-$color-button-utility-border-active",
1078
- destructive: "i-bg-$color-button-negative-background i-text-$color-button-negative-text hover:i-text-$color-button-negative-text hover:i-bg-$color-button-negative-background-hover active:i-bg-$color-button-negative-background-active",
1079
- pill: "i-text-$color-button-pill-icon hover:i-text-$color-button-pill-icon-hover active:i-text-$color-button-pill-icon-active i-bg-$color-button-pill-background hover:i-bg-$color-button-pill-background-hover active:i-bg-$color-button-pill-background-active",
1080
- disabled: "i-text-$color-button-disabled-text i-bg-$color-button-disabled-background",
1081
- quiet: "i-bg-$color-button-quiet-background i-text-$color-button-quiet-text hover:i-bg-$color-button-quiet-background-hover active:i-bg-$color-button-quiet-background-active",
1082
- utilityQuiet: "i-text-$color-button-utility-quiet-text i-bg-$color-button-utility-quiet-background hover:i-bg-$color-button-utility-quiet-background-hover",
1083
- negativeQuiet: "i-bg-$color-button-negative-quiet-background i-text-$color-button-negative-quiet-text hover:i-bg-$color-button-negative-quiet-background-hover active:i-bg-$color-button-negative-quiet-background-active",
1084
- loading: "i-text-$color-button-loading-text i-bg-$color-button-loading-background",
1085
- link: "i-text-$color-button-link-text"
1076
+ primary: "s-text-inverted bg-[--w-color-button-primary-background] hover:bg-[--w-color-button-primary-background-hover] active:bg-[--w-color-button-primary-background-active]",
1077
+ secondary: "s-text-link s-border s-bg hover:s-bg-hover hover:s-border-hover active:s-bg-active",
1078
+ utility: "s-text s-bg hover:s-bg-hover active:s-bg-active s-border hover:s-border-hover active:s-border-active",
1079
+ destructive: "s-bg-negative s-text-inverted hover:s-bg-negative-hover active:s-bg-negative-active",
1080
+ pill: "s-icon hover:s-icon-hover active:s-icon-active bg-transparent hover:bg-[--w-color-button-pill-background-hover] active:bg-[--w-color-button-pill-background-active]",
1081
+ disabled: "s-text-inverted s-bg-disabled",
1082
+ quiet: "bg-transparent s-text-link hover:s-bg-hover active:s-bg-active",
1083
+ utilityQuiet: "s-text bg-transparent hover:s-bg-hover active:s-bg-active",
1084
+ negativeQuiet: "bg-transparent s-text-negative hover:s-bg-negative-subtle-hover active:s-bg-negative-subtle-active",
1085
+ loading: "s-text s-bg-subtle",
1086
+ link: "s-text-link"
1086
1087
  };
1087
1088
  var buttonTypes = {
1088
1089
  primary: `border-0 rounded-8 ${buttonDefaultStyling}`,
@@ -1186,10 +1187,10 @@ var button = {
1186
1187
  contentWidth: "max-w-max"
1187
1188
  };
1188
1189
  var modal = {
1189
- //TODO: this class can be removed when we have the solution for opacity and we can add rgba values to the background of the backdrop
1190
- transparentBg: `before:i-bg-$color-modal-backdrop-background before:content-[""] before:absolute before:top-0 before:bottom-0 before:left-0 before:right-0 before:opacity-25`,
1191
- backdrop: "fixed inset-0 flex sm:place-content-center sm:place-items-center items-end z-30 [--w-modal-max-height:80%] [--w-modal-width:640px]",
1192
- modal: "pb-safe-[32] i-shadow-$shadow-modal max-h-[--w-modal-max-height] min-h-[--w-modal-min-height] w-[--w-modal-width] h-[--w-modal-height] relative transition-300 ease-in-out backface-hidden will-change-height rounded-8 mx-0 sm:mx-16 i-bg-$color-modal-background flex flex-col overflow-hidden outline-none space-y-16 pt-8 sm:pt-32 sm:pb-32 rounded-b-0 sm:rounded-b-8",
1190
+ transparentBg: "",
1191
+ //TODO: Remove in v2 - previously used for opacity before changing to a rgba background in backdrop
1192
+ backdrop: "fixed inset-0 flex sm:place-content-center sm:place-items-center items-end z-30 [--w-modal-max-height:80%] [--w-modal-width:640px] bg-[--w-black/25]",
1193
+ modal: "pb-safe-[32] shadow-m max-h-[--w-modal-max-height] min-h-[--w-modal-min-height] w-[--w-modal-width] h-[--w-modal-height] relative transition-300 ease-in-out backface-hidden will-change-height rounded-8 mx-0 sm:mx-16 bg-[--w-s-color-surface-elevated-100] flex flex-col overflow-hidden outline-none space-y-16 pt-8 sm:pt-32 sm:pb-32 rounded-b-0 sm:rounded-b-8",
1193
1194
  content: "block overflow-y-auto overflow-x-hidden last-child:mb-0 grow shrink px-16 sm:px-32 relative",
1194
1195
  footer: "flex justify-end shrink-0 px-16 sm:px-32",
1195
1196
  transitionTitle: "transition-all duration-300",
@@ -1204,30 +1205,87 @@ var modal = {
1204
1205
  titleButtonIconRotated: "transform rotate-90"
1205
1206
  };
1206
1207
  var label = {
1207
- label: "antialiased block relative text-s font-bold pb-4 cursor-pointer i-text-$color-label-text",
1208
- labelInvalid: "i-text-$color-label-text-negative",
1209
- optional: "pl-8 font-normal text-s i-text-$color-label-optional-text"
1208
+ label: "antialiased block relative text-s font-bold pb-4 cursor-pointer s-text",
1209
+ optional: "pl-8 font-normal text-s s-text-subtle",
1210
+ labelInvalid: "s-text-negative"
1211
+ // TODO: Remove in v2 - kept for backwards compatibility
1210
1212
  };
1211
- var prefixSuffixWrapperBase = "absolute top-0 bottom-0 flex justify-center items-center focusable focus:[--w-outline-offset:-2px] bg-transparent ";
1213
+ var prefixSuffixWrapperBase = "absolute top-0 bottom-0 flex justify-center items-center focusable rounded-4 focus:[--w-outline-offset:-2px] bg-transparent ";
1212
1214
  var suffix = {
1213
1215
  wrapper: prefixSuffixWrapperBase + "right-0",
1214
1216
  wrapperWithLabel: "w-max pr-12",
1215
1217
  wrapperWithIcon: "w-40",
1216
- label: "antialiased block relative cursor-default pb-0 font-bold text-xs i-text-$color-label-text"
1218
+ label: "antialiased block relative cursor-default pb-0 font-bold text-xs s-text"
1217
1219
  };
1218
1220
  var prefix = {
1219
1221
  wrapper: prefixSuffixWrapperBase + "left-0",
1220
1222
  wrapperWithLabel: "w-max pl-12",
1221
1223
  wrapperWithIcon: "w-40",
1222
- label: "antialiased block relative cursor-default pb-0 font-bold text-xs i-text-$color-label-text"
1224
+ label: "antialiased block relative cursor-default pb-0 font-bold text-xs s-text"
1223
1225
  };
1224
1226
  var breadcrumbs = {
1225
1227
  wrapper: "flex space-x-8",
1226
- text: "i-text-$color-breadcrumbs-text",
1227
- link: "i-text-$color-breadcrumbs-link-text",
1228
- separator: "select-none i-text-$color-breadcrumbs-icon",
1228
+ text: "s-text",
1229
+ link: "s-text-link",
1230
+ separator: "select-none s-icon",
1229
1231
  a11y: "sr-only"
1230
1232
  };
1233
+ var toggle = {
1234
+ // wrapper classes
1235
+ field: "relative text-m",
1236
+ // true
1237
+ wrapper: "relative py-1",
1238
+ // true
1239
+ wrapperRadioButtons: "inline-flex font-bold rounded-8 focus-within:focusable",
1240
+ // isRadioButton && !isEqualWidth
1241
+ wrapperRadioButtonsJustified: "flex font-bold rounded-8 focus-within:focusable",
1242
+ // isRadioButton && isEqualWidth,
1243
+ // group classes
1244
+ radioButtonsGroup: "group",
1245
+ // isRadioButton
1246
+ radioButtonsGroupJustified: "grow-1 shrink-0 basis-auto",
1247
+ // isRadioButton && isEqualWidth
1248
+ // input classes
1249
+ input: "peer",
1250
+ a11y: "sr-only",
1251
+ // label classes
1252
+ label: "peer-focus:focusable cursor-pointer text-m s-text s-border py-2 pl-28 select-none relative block before:border before:absolute before:transition-all before:left-0 before:w-20 before:h-20 before:top-2",
1253
+ // !isRadioButton
1254
+ labelBefore: 'before:content-[""] before:block',
1255
+ // !isRadioButton && !isIndeterminate
1256
+ checkbox: "before:s-bg before:rounded-2 hover:before:s-border-primary hover:before:s-bg-hover peer-checked:before:bg-center peer-checked:before:bg-[url(var(--w-form-check-mark))] peer-checked:before:s-border-primary peer-checked:before:s-bg-primary peer-checked:peer-hover:before:s-border-primary-hover peer-checked:peer-hover:before:s-bg-primary-hover",
1257
+ // isCheckbox && !isIndeterminate && !isInvalid && !isDisabled
1258
+ checkboxInvalid: "before:s-bg before:s-border-negative before:rounded-2 hover:before:s-bg-negative-subtle-hover hover:before:s-border-negative-hover peer-checked:before:bg-center peer-checked:before:bg-[url(var(--w-form-check-mark))] peer-checked:before:s-bg-negative peer-checked:before:s-border-negative peer-checked:peer-hover:before:s-bg-negative-hover peer-checked:peer-hover:before:s-border-negative-hover",
1259
+ // isCheckbox && !isIndeterminate && isInvalid && !isDisabled
1260
+ checkboxDisabled: "before:s-bg-disabled-subtle before:s-border-disabled pointer-events-none before:rounded-2 peer-checked:before:bg-center peer-checked:before:bg-[url(var(--w-form-check-mark))] peer-checked:before:s-border-disabled peer-checked:before:s-bg-disabled",
1261
+ // isCheckbox && !isIndeterminate && !isInvalid && isDisabled
1262
+ indeterminate: 'before:content-["\u2013"] before:rounded-2 before:leading-xs before:text-center before:font-bold before:s-icon-inverted peer-indeterminate:before:s-border-primary peer-indeterminate:before:s-bg-primary peer-indeterminate:hover:before:s-border-primary-hover peer-indeterminate:hover:before:s-bg-primary-hover',
1263
+ // isCheckbox && isIndeterminate && !isInvalid && !isDisabled
1264
+ indeterminateInvalid: 'before:content-["\u2013"] before:rounded-2 before:leading-xs before:text-center before:font-bold before:s-icon-inverted peer-indeterminate:before:s-border-negative peer-indeterminate:before:s-bg-negative peer-indeterminate:hover:before:s-border-negative-hover peer-indeterminate:hover:before:s-bg-negative-hover',
1265
+ // isCheckbox && isIndeterminate && isInvalid && !isDisabled
1266
+ indeterminateDisabled: 'before:content-["\u2013"] before:rounded-2 before:leading-xs before:text-center before:font-bold pointer-events-none before:s-icon-inverted peer-indeterminate:before:s-border-disabled peer-indeterminate:before:s-bg-disabled',
1267
+ // isCheckbox && isIndeterminate && !isInvalid && isDisabled
1268
+ radio: "before:s-bg before:rounded-full peer-checked:before:border-[6] peer-checked:before:s-border-selected peer-checked:peer-hover:before:s-border-selected-hover peer-hover:before:s-border-primary peer-hover:before:s-bg-hover",
1269
+ // isRadio && !isDisabled && !isInvalid
1270
+ radioInvalid: "before:s-bg before:s-border-negative before:rounded-full peer-checked:before:border-[6] peer-hover:before:s-bg-negative-subtle peer-hover:before:s-border-negative-hover peer-checked:before:s-border-negative peer-checked:peer-hover:before:s-border-negative-hover",
1271
+ // isRadio && isInvalid && !isDisabled
1272
+ radioDisabled: "before:s-bg-disabled-subtle before:s-border-disabled pointer-events-none before:rounded-full peer-checked:before:border-[6]",
1273
+ // isRadio && !isInvalid && isDisabled
1274
+ radioButtonsLabel: "peer-hover:peer-not-checked:s-bg-hover peer-checked:s-text-inverted peer-checked:s-bg-primary peer-checked:s-border-primary block relative font-bold cursor-pointer s-text-link text-center s-bg border-2 s-border group-first-of-type:rounded-tl-8 group-first-of-type:rounded-bl-8 group-last-of-type:rounded-tr-8 group-last-of-type:rounded-br-8 group-not-last-of-type:border-r-0 peer-checked:z-10 group-not-first:-ml-2",
1275
+ // isRadioButtons
1276
+ radioButtonsRegular: "text-s py-8 pl-12 pr-14",
1277
+ // isRadioButtons && !isSmall
1278
+ radioButtonsSmall: "text-xs py-[5px] px-[8px]"
1279
+ // isRadioButtons && isSmall
1280
+ };
1281
+ var deadToggle = {
1282
+ wrapper: `${toggle.wrapper} h-20 w-20 pointer-events-none`,
1283
+ input: `${toggle.input} hidden`,
1284
+ inputVue: "hidden",
1285
+ labelRadio: `${toggle.label} ${toggle.labelBefore} ${toggle.radio}`,
1286
+ labelCheckbox: `${toggle.label} ${toggle.labelBefore} ${toggle.checkbox}`,
1287
+ labelVue: "-mt-2"
1288
+ };
1231
1289
  var clickable = {
1232
1290
  toggle: "absolute inset-0 h-full w-full appearance-none cursor-pointer focusable focusable-inset",
1233
1291
  label: `px-12 ${label.label} py-8! cursor-pointer focusable focusable-inset`,
@@ -1236,19 +1294,27 @@ var clickable = {
1236
1294
  };
1237
1295
  var attention = {
1238
1296
  base: "border-2 relative flex items-start",
1239
- tooltip: "i-bg-$color-tooltip-background i-border-$color-tooltip-background i-shadow-$shadow-tooltip i-text-$color-tooltip-text rounded-4 py-6 px-8",
1240
- callout: "i-bg-$color-callout-background i-border-$color-callout-border i-text-$color-callout-text py-8 px-16 rounded-8",
1241
- highlight: "i-bg-$color-callout-background i-border-$color-callout-border i-text-$color-callout-text py-8 px-16 rounded-8 drop-shadow-m",
1242
- popover: "i-bg-$color-popover-background i-border-$color-popover-background i-text-$color-popover-paragraph-text rounded-8 p-16 drop-shadow-m",
1297
+ tooltip: "s-bg-inverted border-[--w-s-color-background-inverted] shadow-m s-text-inverted-static rounded-4 py-6 px-8",
1298
+ callout: "bg-[--w-color-callout-background] border-[--w-color-callout-border] s-text py-8 px-16 rounded-8",
1299
+ highlight: "bg-[--w-color-callout-background] border-[--w-color-callout-border] s-text py-8 px-16 rounded-8 drop-shadow-m translate-z-0",
1300
+ popover: "bg-[--w-s-color-surface-elevated-300] border-[--w-s-color-surface-elevated-300] s-text rounded-8 p-16 drop-shadow-m translate-z-0",
1243
1301
  arrowBase: "absolute h-[14px] w-[14px] border-2 border-b-0 border-r-0 rounded-tl-4 transform",
1302
+ arrowDirectionLeftStart: "-left-[8px]",
1244
1303
  arrowDirectionLeft: "-left-[8px]",
1304
+ arrowDirectionLeftEnd: "-left-[8px]",
1305
+ arrowDirectionRightStart: "-right-[8px]",
1245
1306
  arrowDirectionRight: "-right-[8px]",
1307
+ arrowDirectionRightEnd: "-right-[8px]",
1308
+ arrowDirectionBottomStart: "-bottom-[8px]",
1246
1309
  arrowDirectionBottom: "-bottom-[8px]",
1310
+ arrowDirectionBottomEnd: "-bottom-[8px]",
1311
+ arrowDirectionTopStart: "-top-[8px]",
1247
1312
  arrowDirectionTop: "-top-[8px]",
1248
- arrowTooltip: "i-bg-$color-tooltip-background i-border-$color-tooltip-background",
1249
- arrowCallout: "i-bg-$color-callout-background i-border-$color-callout-border",
1250
- arrowPopover: "i-bg-$color-popover-background i-border-$color-popover-background",
1251
- arrowHighlight: "i-bg-$color-callout-background i-border-$color-callout-border",
1313
+ arrowDirectionTopEnd: "-top-[8px]",
1314
+ arrowTooltip: "s-bg-inverted border-[--w-s-color-background-inverted]",
1315
+ arrowCallout: "bg-[--w-color-callout-background] border-[--w-color-callout-border]",
1316
+ arrowPopover: "bg-[--w-s-color-surface-elevated-300] border-[--w-s-color-surface-elevated-300]",
1317
+ arrowHighlight: "bg-[--w-color-callout-background] border-[--w-color-callout-border]",
1252
1318
  content: "last-child:mb-0",
1253
1319
  notCallout: "absolute z-50",
1254
1320
  closeBtn: `${buttonTextSizes.medium} ${buttonTypes.pill} ${buttonColors.pill} justify-self-end -mr-8 ml-8`
@@ -1271,10 +1337,10 @@ function kebabCaseAttributes(constructor) {
1271
1337
  };
1272
1338
  }
1273
1339
 
1274
- // node_modules/.pnpm/@lingui+core@4.7.0/node_modules/@lingui/core/dist/index.mjs
1340
+ // node_modules/.pnpm/@lingui+core@4.7.1/node_modules/@lingui/core/dist/index.mjs
1275
1341
  var import_unraw = __toESM(require_dist(), 1);
1276
1342
 
1277
- // node_modules/.pnpm/@lingui+message-utils@4.7.0/node_modules/@lingui/message-utils/dist/compileMessage.mjs
1343
+ // node_modules/.pnpm/@lingui+message-utils@4.7.1/node_modules/@lingui/message-utils/dist/compileMessage.mjs
1278
1344
  var import_parser = __toESM(require_parser(), 1);
1279
1345
  function processTokens(tokens, mapText) {
1280
1346
  if (!tokens.filter((token) => token.type !== "content").length) {
@@ -1324,7 +1390,7 @@ Message: ${message}`);
1324
1390
  }
1325
1391
  }
1326
1392
 
1327
- // node_modules/.pnpm/@lingui+core@4.7.0/node_modules/@lingui/core/dist/index.mjs
1393
+ // node_modules/.pnpm/@lingui+core@4.7.1/node_modules/@lingui/core/dist/index.mjs
1328
1394
  var isString = (s) => typeof s === "string";
1329
1395
  var isFunction = (f) => typeof f === "function";
1330
1396
  var cache = /* @__PURE__ */ new Map();
@@ -1376,6 +1442,7 @@ function cacheKey(type, locales, options) {
1376
1442
  return `${type}-${localeKey}-${JSON.stringify(options)}`;
1377
1443
  }
1378
1444
  var UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/g;
1445
+ var OCTOTHORPE_PH = "%__lingui_octothorpe__%";
1379
1446
  var getDefaultFormats = (locale, passedLocales, formats = {}) => {
1380
1447
  const locales = passedLocales || locale;
1381
1448
  const style = (format) => {
@@ -1384,7 +1451,7 @@ var getDefaultFormats = (locale, passedLocales, formats = {}) => {
1384
1451
  const replaceOctothorpe = (value, message) => {
1385
1452
  const numberFormat = Object.keys(formats).length ? style("number") : void 0;
1386
1453
  const valueStr = number(locales, value, numberFormat);
1387
- return message.replace("#", valueStr);
1454
+ return message.replace(new RegExp(OCTOTHORPE_PH, "g"), valueStr);
1388
1455
  };
1389
1456
  return {
1390
1457
  plural: (value, cases) => {
@@ -1399,43 +1466,53 @@ var getDefaultFormats = (locale, passedLocales, formats = {}) => {
1399
1466
  },
1400
1467
  select: selectFormatter,
1401
1468
  number: (value, format) => number(locales, value, style(format)),
1402
- date: (value, format) => date(locales, value, style(format)),
1403
- undefined: undefinedFormatter
1469
+ date: (value, format) => date(locales, value, style(format))
1404
1470
  };
1405
1471
  };
1406
1472
  var selectFormatter = (value, rules) => {
1407
1473
  var _a;
1408
1474
  return (_a = rules[value]) != null ? _a : rules.other;
1409
1475
  };
1410
- var undefinedFormatter = (value) => value;
1411
1476
  function interpolate(translation, locale, locales) {
1412
1477
  return (values = {}, formats) => {
1413
1478
  const formatters = getDefaultFormats(locale, locales, formats);
1414
- const formatMessage = (message) => {
1415
- if (!Array.isArray(message))
1416
- return message;
1417
- return message.reduce((message2, token) => {
1418
- if (isString(token))
1419
- return message2 + token;
1479
+ const formatMessage = (tokens) => {
1480
+ if (!Array.isArray(tokens))
1481
+ return tokens;
1482
+ return tokens.reduce((message, token) => {
1483
+ if (token === "#") {
1484
+ return message + OCTOTHORPE_PH;
1485
+ }
1486
+ if (isString(token)) {
1487
+ return message + token;
1488
+ }
1420
1489
  const [name, type, format] = token;
1421
1490
  let interpolatedFormat = {};
1422
- if (format != null && typeof format === "object") {
1423
- Object.entries(format).forEach(([key, value2]) => {
1424
- interpolatedFormat[key] = formatMessage(value2);
1425
- });
1491
+ if (type === "plural" || type === "selectordinal" || type === "select") {
1492
+ Object.entries(format).forEach(
1493
+ ([key, value2]) => {
1494
+ interpolatedFormat[key] = formatMessage(value2);
1495
+ }
1496
+ );
1426
1497
  } else {
1427
1498
  interpolatedFormat = format;
1428
1499
  }
1429
- const formatter = formatters[type];
1430
- const value = formatter(values[name], interpolatedFormat);
1431
- if (value == null)
1432
- return message2;
1433
- return message2 + value;
1500
+ let value;
1501
+ if (type) {
1502
+ const formatter = formatters[type];
1503
+ value = formatter(values[name], interpolatedFormat);
1504
+ } else {
1505
+ value = values[name];
1506
+ }
1507
+ if (value == null) {
1508
+ return message;
1509
+ }
1510
+ return message + value;
1434
1511
  }, "");
1435
1512
  };
1436
1513
  const result = formatMessage(translation);
1437
1514
  if (isString(result) && UNICODE_REGEX.test(result)) {
1438
- return (0, import_unraw.default)(result.trim());
1515
+ return (0, import_unraw.unraw)(result.trim());
1439
1516
  }
1440
1517
  if (isString(result))
1441
1518
  return result.trim();