@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
@@ -48,7 +48,7 @@ export class WarpAttention extends WarpAttention_base {
48
48
  canClose: boolean;
49
49
  noArrow: boolean;
50
50
  connectedCallback(): void;
51
- set _actualDirection(arg: any);
51
+ set _actualDirection(v: any);
52
52
  get _actualDirection(): any;
53
53
  placement: any;
54
54
  get _arrowDirection(): any;
@@ -1060,26 +1060,27 @@ function generateRandomId() {
1060
1060
  return `m${Math.random().toString(36).slice(2)}`;
1061
1061
  }
1062
1062
 
1063
- // node_modules/.pnpm/@warp-ds+css@1.7.0/node_modules/@warp-ds/css/component-classes/index.js
1063
+ // node_modules/.pnpm/@warp-ds+css@1.9.1/node_modules/@warp-ds/css/component-classes/index.js
1064
1064
  var box = {
1065
1065
  box: "group block relative break-words last-child:mb-0 p-16 rounded-8",
1066
1066
  // Relative here enables w-clickable
1067
1067
  bleed: "-mx-16 sm:mx-0 rounded-l-0 rounded-r-0 sm:rounded-8",
1068
1068
  // We target L and R to override the default rounded-8
1069
- info: "i-bg-$color-box-info-background i-text-$color-box-info-text",
1070
- neutral: "i-bg-$color-box-neutral-background i-text-$color-box-neutral-text",
1071
- bordered: "border-2 i-border-$color-box-bordered-border i-bg-$color-box-bordered-background i-text-$color-box-bordered-text",
1072
- infoClickable: "hover:i-bg-$color-box-info-background-hover active:i-bg-$color-box-info-background-hover",
1073
- neutralClickable: "hover:i-bg-$color-box-neutral-background-hover active:i-bg-$color-box-neutral-background-hover",
1074
- 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"
1069
+ info: "s-bg-info-subtle",
1070
+ neutral: "bg-[--w-s-color-surface-sunken]",
1071
+ bordered: "border-2 s-border s-bg",
1072
+ infoClickable: "hover:s-bg-info-subtle-hover active:s-bg-info-subtle-hover",
1073
+ neutralClickable: "hover:s-bg-subtle-hover active:s-bg-subtle-hover",
1074
+ borderedClickable: "hover:s-bg-hover active:s-bg-hover hover:s-border-hover active:s-border-hover"
1075
1075
  };
1076
1076
  var buttonReset = "focus:outline-none appearance-none cursor-pointer bg-transparent border-0 m-0 p-0 inline-block";
1077
1077
  var expandable = {
1078
1078
  expandable: "will-change-height",
1079
- expandableTitle: "font-bold i-text-$color-expandable-title-text",
1080
- expandableBox: "i-bg-$color-expandable-background hover:i-bg-$color-expandable-background-hover py-0 px-0 " + box.box,
1079
+ expandableTitle: "font-bold s-text",
1080
+ expandableBox: "s-bg-subtle hover:s-bg-subtle-hover py-0 px-0 " + box.box,
1081
+ expandableInfo: "s-bg-info-subtle! hover:s-bg-info-subtle-hover!",
1081
1082
  expandableBleed: box.bleed,
1082
- chevron: "inline-block align-middle i-text-$color-expandable-icon",
1083
+ chevron: "inline-block align-middle s-icon",
1083
1084
  chevronNonBox: "ml-8",
1084
1085
  chevronBox: "",
1085
1086
  chevronTransform: "transform transition-transform transform-gpu ease-in-out",
@@ -1099,17 +1100,17 @@ var expandable = {
1099
1100
  };
1100
1101
  var buttonDefaultStyling = "font-bold focusable justify-center transition-colors ease-in-out";
1101
1102
  var buttonColors = {
1102
- 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",
1103
- 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",
1104
- 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",
1105
- 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",
1106
- 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",
1107
- disabled: "i-text-$color-button-disabled-text i-bg-$color-button-disabled-background",
1108
- 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",
1109
- utilityQuiet: "i-text-$color-button-utility-quiet-text i-bg-$color-button-utility-quiet-background hover:i-bg-$color-button-utility-quiet-background-hover",
1110
- 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",
1111
- loading: "i-text-$color-button-loading-text i-bg-$color-button-loading-background",
1112
- link: "i-text-$color-button-link-text"
1103
+ 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]",
1104
+ secondary: "s-text-link s-border s-bg hover:s-bg-hover hover:s-border-hover active:s-bg-active",
1105
+ utility: "s-text s-bg hover:s-bg-hover active:s-bg-active s-border hover:s-border-hover active:s-border-active",
1106
+ destructive: "s-bg-negative s-text-inverted hover:s-bg-negative-hover active:s-bg-negative-active",
1107
+ 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]",
1108
+ disabled: "s-text-inverted s-bg-disabled",
1109
+ quiet: "bg-transparent s-text-link hover:s-bg-hover active:s-bg-active",
1110
+ utilityQuiet: "s-text bg-transparent hover:s-bg-hover active:s-bg-active",
1111
+ negativeQuiet: "bg-transparent s-text-negative hover:s-bg-negative-subtle-hover active:s-bg-negative-subtle-active",
1112
+ loading: "s-text s-bg-subtle",
1113
+ link: "s-text-link"
1113
1114
  };
1114
1115
  var buttonTypes = {
1115
1116
  primary: `border-0 rounded-8 ${buttonDefaultStyling}`,
@@ -1213,10 +1214,10 @@ var button = {
1213
1214
  contentWidth: "max-w-max"
1214
1215
  };
1215
1216
  var modal = {
1216
- //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
1217
- 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`,
1218
- 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]",
1219
- 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",
1217
+ transparentBg: "",
1218
+ //TODO: Remove in v2 - previously used for opacity before changing to a rgba background in backdrop
1219
+ 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]",
1220
+ 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",
1220
1221
  content: "block overflow-y-auto overflow-x-hidden last-child:mb-0 grow shrink px-16 sm:px-32 relative",
1221
1222
  footer: "flex justify-end shrink-0 px-16 sm:px-32",
1222
1223
  transitionTitle: "transition-all duration-300",
@@ -1231,22 +1232,79 @@ var modal = {
1231
1232
  titleButtonIconRotated: "transform rotate-90"
1232
1233
  };
1233
1234
  var label = {
1234
- label: "antialiased block relative text-s font-bold pb-4 cursor-pointer i-text-$color-label-text",
1235
- labelInvalid: "i-text-$color-label-text-negative",
1236
- optional: "pl-8 font-normal text-s i-text-$color-label-optional-text"
1235
+ label: "antialiased block relative text-s font-bold pb-4 cursor-pointer s-text",
1236
+ optional: "pl-8 font-normal text-s s-text-subtle",
1237
+ labelInvalid: "s-text-negative"
1238
+ // TODO: Remove in v2 - kept for backwards compatibility
1237
1239
  };
1238
- var prefixSuffixWrapperBase = "absolute top-0 bottom-0 flex justify-center items-center focusable focus:[--w-outline-offset:-2px] bg-transparent ";
1240
+ var prefixSuffixWrapperBase = "absolute top-0 bottom-0 flex justify-center items-center focusable rounded-4 focus:[--w-outline-offset:-2px] bg-transparent ";
1239
1241
  var suffix = {
1240
1242
  wrapper: prefixSuffixWrapperBase + "right-0",
1241
1243
  wrapperWithLabel: "w-max pr-12",
1242
1244
  wrapperWithIcon: "w-40",
1243
- label: "antialiased block relative cursor-default pb-0 font-bold text-xs i-text-$color-label-text"
1245
+ label: "antialiased block relative cursor-default pb-0 font-bold text-xs s-text"
1244
1246
  };
1245
1247
  var prefix = {
1246
1248
  wrapper: prefixSuffixWrapperBase + "left-0",
1247
1249
  wrapperWithLabel: "w-max pl-12",
1248
1250
  wrapperWithIcon: "w-40",
1249
- label: "antialiased block relative cursor-default pb-0 font-bold text-xs i-text-$color-label-text"
1251
+ label: "antialiased block relative cursor-default pb-0 font-bold text-xs s-text"
1252
+ };
1253
+ var toggle = {
1254
+ // wrapper classes
1255
+ field: "relative text-m",
1256
+ // true
1257
+ wrapper: "relative py-1",
1258
+ // true
1259
+ wrapperRadioButtons: "inline-flex font-bold rounded-8 focus-within:focusable",
1260
+ // isRadioButton && !isEqualWidth
1261
+ wrapperRadioButtonsJustified: "flex font-bold rounded-8 focus-within:focusable",
1262
+ // isRadioButton && isEqualWidth,
1263
+ // group classes
1264
+ radioButtonsGroup: "group",
1265
+ // isRadioButton
1266
+ radioButtonsGroupJustified: "grow-1 shrink-0 basis-auto",
1267
+ // isRadioButton && isEqualWidth
1268
+ // input classes
1269
+ input: "peer",
1270
+ a11y: "sr-only",
1271
+ // label classes
1272
+ 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",
1273
+ // !isRadioButton
1274
+ labelBefore: 'before:content-[""] before:block',
1275
+ // !isRadioButton && !isIndeterminate
1276
+ 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",
1277
+ // isCheckbox && !isIndeterminate && !isInvalid && !isDisabled
1278
+ 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",
1279
+ // isCheckbox && !isIndeterminate && isInvalid && !isDisabled
1280
+ 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",
1281
+ // isCheckbox && !isIndeterminate && !isInvalid && isDisabled
1282
+ 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',
1283
+ // isCheckbox && isIndeterminate && !isInvalid && !isDisabled
1284
+ 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',
1285
+ // isCheckbox && isIndeterminate && isInvalid && !isDisabled
1286
+ 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',
1287
+ // isCheckbox && isIndeterminate && !isInvalid && isDisabled
1288
+ 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",
1289
+ // isRadio && !isDisabled && !isInvalid
1290
+ 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",
1291
+ // isRadio && isInvalid && !isDisabled
1292
+ radioDisabled: "before:s-bg-disabled-subtle before:s-border-disabled pointer-events-none before:rounded-full peer-checked:before:border-[6]",
1293
+ // isRadio && !isInvalid && isDisabled
1294
+ 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",
1295
+ // isRadioButtons
1296
+ radioButtonsRegular: "text-s py-8 pl-12 pr-14",
1297
+ // isRadioButtons && !isSmall
1298
+ radioButtonsSmall: "text-xs py-[5px] px-[8px]"
1299
+ // isRadioButtons && isSmall
1300
+ };
1301
+ var deadToggle = {
1302
+ wrapper: `${toggle.wrapper} h-20 w-20 pointer-events-none`,
1303
+ input: `${toggle.input} hidden`,
1304
+ inputVue: "hidden",
1305
+ labelRadio: `${toggle.label} ${toggle.labelBefore} ${toggle.radio}`,
1306
+ labelCheckbox: `${toggle.label} ${toggle.labelBefore} ${toggle.checkbox}`,
1307
+ labelVue: "-mt-2"
1250
1308
  };
1251
1309
  var clickable = {
1252
1310
  toggle: "absolute inset-0 h-full w-full appearance-none cursor-pointer focusable focusable-inset",
@@ -1256,19 +1314,27 @@ var clickable = {
1256
1314
  };
1257
1315
  var attention = {
1258
1316
  base: "border-2 relative flex items-start",
1259
- 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",
1260
- callout: "i-bg-$color-callout-background i-border-$color-callout-border i-text-$color-callout-text py-8 px-16 rounded-8",
1261
- 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",
1262
- popover: "i-bg-$color-popover-background i-border-$color-popover-background i-text-$color-popover-paragraph-text rounded-8 p-16 drop-shadow-m",
1317
+ tooltip: "s-bg-inverted border-[--w-s-color-background-inverted] shadow-m s-text-inverted-static rounded-4 py-6 px-8",
1318
+ callout: "bg-[--w-color-callout-background] border-[--w-color-callout-border] s-text py-8 px-16 rounded-8",
1319
+ 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",
1320
+ 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",
1263
1321
  arrowBase: "absolute h-[14px] w-[14px] border-2 border-b-0 border-r-0 rounded-tl-4 transform",
1322
+ arrowDirectionLeftStart: "-left-[8px]",
1264
1323
  arrowDirectionLeft: "-left-[8px]",
1324
+ arrowDirectionLeftEnd: "-left-[8px]",
1325
+ arrowDirectionRightStart: "-right-[8px]",
1265
1326
  arrowDirectionRight: "-right-[8px]",
1327
+ arrowDirectionRightEnd: "-right-[8px]",
1328
+ arrowDirectionBottomStart: "-bottom-[8px]",
1266
1329
  arrowDirectionBottom: "-bottom-[8px]",
1330
+ arrowDirectionBottomEnd: "-bottom-[8px]",
1331
+ arrowDirectionTopStart: "-top-[8px]",
1267
1332
  arrowDirectionTop: "-top-[8px]",
1268
- arrowTooltip: "i-bg-$color-tooltip-background i-border-$color-tooltip-background",
1269
- arrowCallout: "i-bg-$color-callout-background i-border-$color-callout-border",
1270
- arrowPopover: "i-bg-$color-popover-background i-border-$color-popover-background",
1271
- arrowHighlight: "i-bg-$color-callout-background i-border-$color-callout-border",
1333
+ arrowDirectionTopEnd: "-top-[8px]",
1334
+ arrowTooltip: "s-bg-inverted border-[--w-s-color-background-inverted]",
1335
+ arrowCallout: "bg-[--w-color-callout-background] border-[--w-color-callout-border]",
1336
+ arrowPopover: "bg-[--w-s-color-surface-elevated-300] border-[--w-s-color-surface-elevated-300]",
1337
+ arrowHighlight: "bg-[--w-color-callout-background] border-[--w-color-callout-border]",
1272
1338
  content: "last-child:mb-0",
1273
1339
  notCallout: "absolute z-50",
1274
1340
  closeBtn: `${buttonTextSizes.medium} ${buttonTypes.pill} ${buttonColors.pill} justify-self-end -mr-8 ml-8`
@@ -1687,10 +1753,10 @@ async function useRecompute(state) {
1687
1753
  }
1688
1754
  }
1689
1755
 
1690
- // node_modules/.pnpm/@lingui+core@4.7.0/node_modules/@lingui/core/dist/index.mjs
1756
+ // node_modules/.pnpm/@lingui+core@4.7.1/node_modules/@lingui/core/dist/index.mjs
1691
1757
  var import_unraw = __toESM(require_dist(), 1);
1692
1758
 
1693
- // node_modules/.pnpm/@lingui+message-utils@4.7.0/node_modules/@lingui/message-utils/dist/compileMessage.mjs
1759
+ // node_modules/.pnpm/@lingui+message-utils@4.7.1/node_modules/@lingui/message-utils/dist/compileMessage.mjs
1694
1760
  var import_parser = __toESM(require_parser(), 1);
1695
1761
  function processTokens(tokens, mapText) {
1696
1762
  if (!tokens.filter((token) => token.type !== "content").length) {
@@ -1740,7 +1806,7 @@ Message: ${message}`);
1740
1806
  }
1741
1807
  }
1742
1808
 
1743
- // node_modules/.pnpm/@lingui+core@4.7.0/node_modules/@lingui/core/dist/index.mjs
1809
+ // node_modules/.pnpm/@lingui+core@4.7.1/node_modules/@lingui/core/dist/index.mjs
1744
1810
  var isString = (s3) => typeof s3 === "string";
1745
1811
  var isFunction = (f3) => typeof f3 === "function";
1746
1812
  var cache = /* @__PURE__ */ new Map();
@@ -1792,6 +1858,7 @@ function cacheKey(type, locales, options) {
1792
1858
  return `${type}-${localeKey}-${JSON.stringify(options)}`;
1793
1859
  }
1794
1860
  var UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/g;
1861
+ var OCTOTHORPE_PH = "%__lingui_octothorpe__%";
1795
1862
  var getDefaultFormats = (locale, passedLocales, formats = {}) => {
1796
1863
  const locales = passedLocales || locale;
1797
1864
  const style = (format) => {
@@ -1800,7 +1867,7 @@ var getDefaultFormats = (locale, passedLocales, formats = {}) => {
1800
1867
  const replaceOctothorpe = (value, message) => {
1801
1868
  const numberFormat = Object.keys(formats).length ? style("number") : void 0;
1802
1869
  const valueStr = number(locales, value, numberFormat);
1803
- return message.replace("#", valueStr);
1870
+ return message.replace(new RegExp(OCTOTHORPE_PH, "g"), valueStr);
1804
1871
  };
1805
1872
  return {
1806
1873
  plural: (value, cases) => {
@@ -1815,43 +1882,53 @@ var getDefaultFormats = (locale, passedLocales, formats = {}) => {
1815
1882
  },
1816
1883
  select: selectFormatter,
1817
1884
  number: (value, format) => number(locales, value, style(format)),
1818
- date: (value, format) => date(locales, value, style(format)),
1819
- undefined: undefinedFormatter
1885
+ date: (value, format) => date(locales, value, style(format))
1820
1886
  };
1821
1887
  };
1822
1888
  var selectFormatter = (value, rules) => {
1823
1889
  var _a;
1824
1890
  return (_a = rules[value]) != null ? _a : rules.other;
1825
1891
  };
1826
- var undefinedFormatter = (value) => value;
1827
1892
  function interpolate(translation, locale, locales) {
1828
1893
  return (values = {}, formats) => {
1829
1894
  const formatters = getDefaultFormats(locale, locales, formats);
1830
- const formatMessage = (message) => {
1831
- if (!Array.isArray(message))
1832
- return message;
1833
- return message.reduce((message2, token) => {
1834
- if (isString(token))
1835
- return message2 + token;
1895
+ const formatMessage = (tokens) => {
1896
+ if (!Array.isArray(tokens))
1897
+ return tokens;
1898
+ return tokens.reduce((message, token) => {
1899
+ if (token === "#") {
1900
+ return message + OCTOTHORPE_PH;
1901
+ }
1902
+ if (isString(token)) {
1903
+ return message + token;
1904
+ }
1836
1905
  const [name, type, format] = token;
1837
1906
  let interpolatedFormat = {};
1838
- if (format != null && typeof format === "object") {
1839
- Object.entries(format).forEach(([key, value2]) => {
1840
- interpolatedFormat[key] = formatMessage(value2);
1841
- });
1907
+ if (type === "plural" || type === "selectordinal" || type === "select") {
1908
+ Object.entries(format).forEach(
1909
+ ([key, value2]) => {
1910
+ interpolatedFormat[key] = formatMessage(value2);
1911
+ }
1912
+ );
1842
1913
  } else {
1843
1914
  interpolatedFormat = format;
1844
1915
  }
1845
- const formatter = formatters[type];
1846
- const value = formatter(values[name], interpolatedFormat);
1847
- if (value == null)
1848
- return message2;
1849
- return message2 + value;
1916
+ let value;
1917
+ if (type) {
1918
+ const formatter = formatters[type];
1919
+ value = formatter(values[name], interpolatedFormat);
1920
+ } else {
1921
+ value = values[name];
1922
+ }
1923
+ if (value == null) {
1924
+ return message;
1925
+ }
1926
+ return message + value;
1850
1927
  }, "");
1851
1928
  };
1852
1929
  const result = formatMessage(translation);
1853
1930
  if (isString(result) && UNICODE_REGEX.test(result)) {
1854
- return (0, import_unraw.default)(result.trim());
1931
+ return (0, import_unraw.unraw)(result.trim());
1855
1932
  }
1856
1933
  if (isString(result))
1857
1934
  return result.trim();