@spark-ui/components 16.2.3 → 17.0.1-beta.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.
Files changed (196) hide show
  1. package/dist/Button-CXL2NOrq.js +2 -0
  2. package/dist/Button-CXL2NOrq.js.map +1 -0
  3. package/dist/{Button-DPncfbbM.mjs → Button-CcIRizse.mjs} +25 -79
  4. package/dist/Button-CcIRizse.mjs.map +1 -0
  5. package/dist/{Icon-C23-htlD.mjs → Icon-BO327oHU.mjs} +8 -9
  6. package/dist/Icon-BO327oHU.mjs.map +1 -0
  7. package/dist/Icon-C-cNTnzd.js +2 -0
  8. package/dist/Icon-C-cNTnzd.js.map +1 -0
  9. package/dist/{IconButton-Bfd-6BAD.mjs → IconButton-CP4JbWsI.mjs} +14 -14
  10. package/dist/IconButton-CP4JbWsI.mjs.map +1 -0
  11. package/dist/IconButton-JFDGiOOn.js +2 -0
  12. package/dist/IconButton-JFDGiOOn.js.map +1 -0
  13. package/dist/Spinner-Br4Rp9V2.js +2 -0
  14. package/dist/Spinner-Br4Rp9V2.js.map +1 -0
  15. package/dist/{Spinner-aLrtE2JN.mjs → Spinner-Co3AjkQV.mjs} +7 -8
  16. package/dist/Spinner-Co3AjkQV.mjs.map +1 -0
  17. package/dist/TextLink-5MvP0P8D.js +2 -0
  18. package/dist/TextLink-5MvP0P8D.js.map +1 -0
  19. package/dist/{TextLink-D7mOCjY_.mjs → TextLink-Cc_LeVcx.mjs} +10 -11
  20. package/dist/TextLink-Cc_LeVcx.mjs.map +1 -0
  21. package/dist/accordion/index.js +1 -1
  22. package/dist/accordion/index.mjs +1 -1
  23. package/dist/avatar/index.js +1 -1
  24. package/dist/avatar/index.mjs +2 -2
  25. package/dist/badge/BadgeItem.styles.d.ts +1 -1
  26. package/dist/badge/index.js +1 -1
  27. package/dist/badge/index.js.map +1 -1
  28. package/dist/badge/index.mjs +10 -11
  29. package/dist/badge/index.mjs.map +1 -1
  30. package/dist/breadcrumb/index.js +1 -1
  31. package/dist/breadcrumb/index.mjs +2 -2
  32. package/dist/button/Button.styles.d.ts +1 -1
  33. package/dist/button/index.js +1 -1
  34. package/dist/button/index.mjs +1 -1
  35. package/dist/button/variants/contrast.d.ts +0 -4
  36. package/dist/button/variants/filled.d.ts +0 -4
  37. package/dist/button/variants/ghost.d.ts +0 -4
  38. package/dist/button/variants/outlined.d.ts +0 -4
  39. package/dist/button/variants/tinted.d.ts +0 -4
  40. package/dist/card/Backdrop.d.ts +1 -1
  41. package/dist/card/Card.styles.d.ts +1 -1
  42. package/dist/card/Content.styles.d.ts +1 -1
  43. package/dist/card/index.js +1 -1
  44. package/dist/card/index.js.map +1 -1
  45. package/dist/card/index.mjs +12 -31
  46. package/dist/card/index.mjs.map +1 -1
  47. package/dist/carousel/CarouselPageIndicator.d.ts +1 -1
  48. package/dist/carousel/index.js +1 -1
  49. package/dist/carousel/index.js.map +1 -1
  50. package/dist/carousel/index.mjs +29 -29
  51. package/dist/carousel/index.mjs.map +1 -1
  52. package/dist/checkbox/CheckboxInput.styles.d.ts +1 -1
  53. package/dist/checkbox/index.js +1 -1
  54. package/dist/checkbox/index.js.map +1 -1
  55. package/dist/checkbox/index.mjs +26 -33
  56. package/dist/checkbox/index.mjs.map +1 -1
  57. package/dist/chip/Chip.styles.d.ts +1 -1
  58. package/dist/chip/index.js +1 -1
  59. package/dist/chip/index.js.map +1 -1
  60. package/dist/chip/index.mjs +34 -69
  61. package/dist/chip/index.mjs.map +1 -1
  62. package/dist/chip/variants/dashed.d.ts +0 -4
  63. package/dist/chip/variants/outlined.d.ts +0 -4
  64. package/dist/chip/variants/tinted.d.ts +0 -4
  65. package/dist/combobox/index.js +1 -1
  66. package/dist/combobox/index.js.map +1 -1
  67. package/dist/combobox/index.mjs +41 -41
  68. package/dist/combobox/index.mjs.map +1 -1
  69. package/dist/dialog/index.js +1 -1
  70. package/dist/dialog/index.mjs +2 -2
  71. package/dist/drawer/index.js +1 -1
  72. package/dist/drawer/index.mjs +2 -2
  73. package/dist/dropdown/index.js +1 -1
  74. package/dist/dropdown/index.js.map +1 -1
  75. package/dist/dropdown/index.mjs +2 -2
  76. package/dist/dropdown/index.mjs.map +1 -1
  77. package/dist/file-upload/index.js +1 -1
  78. package/dist/file-upload/index.js.map +1 -1
  79. package/dist/file-upload/index.mjs +4 -4
  80. package/dist/file-upload/index.mjs.map +1 -1
  81. package/dist/form-field/index.js +1 -1
  82. package/dist/form-field/index.mjs +1 -1
  83. package/dist/icon/Icon.styles.d.ts +1 -1
  84. package/dist/icon/index.js +1 -1
  85. package/dist/icon/index.mjs +1 -1
  86. package/dist/icon-button/index.js +1 -1
  87. package/dist/icon-button/index.mjs +1 -1
  88. package/dist/input/index.js +1 -1
  89. package/dist/input/index.js.map +1 -1
  90. package/dist/input/index.mjs +7 -7
  91. package/dist/input/index.mjs.map +1 -1
  92. package/dist/pagination/index.js +1 -1
  93. package/dist/pagination/index.mjs +3 -3
  94. package/dist/popover/PopoverContent.styles.d.ts +1 -1
  95. package/dist/popover/PopoverContext.d.ts +1 -1
  96. package/dist/popover/index.js +1 -1
  97. package/dist/popover/index.js.map +1 -1
  98. package/dist/popover/index.mjs +33 -35
  99. package/dist/popover/index.mjs.map +1 -1
  100. package/dist/progress/ProgressIndicator.d.ts +1 -1
  101. package/dist/progress/index.js +1 -1
  102. package/dist/progress/index.js.map +1 -1
  103. package/dist/progress/index.mjs +42 -43
  104. package/dist/progress/index.mjs.map +1 -1
  105. package/dist/progress-tracker/ProgressTrackerStep.styles.d.ts +1 -1
  106. package/dist/progress-tracker/ProgressTrackerStepIndicator.styles.d.ts +1 -1
  107. package/dist/progress-tracker/index.js +1 -1
  108. package/dist/progress-tracker/index.js.map +1 -1
  109. package/dist/progress-tracker/index.mjs +38 -38
  110. package/dist/progress-tracker/index.mjs.map +1 -1
  111. package/dist/radio-group/RadioIndicator.styles.d.ts +1 -1
  112. package/dist/radio-group/RadioInput.styles.d.ts +1 -1
  113. package/dist/radio-group/index.js +1 -1
  114. package/dist/radio-group/index.js.map +1 -1
  115. package/dist/radio-group/index.mjs +47 -53
  116. package/dist/radio-group/index.mjs.map +1 -1
  117. package/dist/rating/index.js +1 -1
  118. package/dist/rating/index.mjs +1 -1
  119. package/dist/rating-display/index.js +1 -1
  120. package/dist/rating-display/index.mjs +1 -1
  121. package/dist/scrolling-list/index.js +1 -1
  122. package/dist/scrolling-list/index.mjs +3 -3
  123. package/dist/segmented-gauge/SegmentedGauge.d.ts +1 -1
  124. package/dist/segmented-gauge/SegmentedGaugeContext.d.ts +1 -1
  125. package/dist/segmented-gauge/index.js +1 -1
  126. package/dist/segmented-gauge/index.js.map +1 -1
  127. package/dist/segmented-gauge/index.mjs +14 -16
  128. package/dist/segmented-gauge/index.mjs.map +1 -1
  129. package/dist/select/index.js +1 -1
  130. package/dist/select/index.js.map +1 -1
  131. package/dist/select/index.mjs +2 -2
  132. package/dist/select/index.mjs.map +1 -1
  133. package/dist/slider/SliderThumb.styles.d.ts +1 -1
  134. package/dist/slider/SliderTrack.styles.d.ts +1 -1
  135. package/dist/slider/index.js +1 -1
  136. package/dist/slider/index.js.map +1 -1
  137. package/dist/slider/index.mjs +3 -5
  138. package/dist/slider/index.mjs.map +1 -1
  139. package/dist/snackbar/SnackbarItem.styles.d.ts +1 -1
  140. package/dist/snackbar/index.js +1 -1
  141. package/dist/snackbar/index.js.map +1 -1
  142. package/dist/snackbar/index.mjs +24 -35
  143. package/dist/snackbar/index.mjs.map +1 -1
  144. package/dist/snackbar/snackbarVariants.d.ts +0 -8
  145. package/dist/spinner/Spinner.styles.d.ts +1 -1
  146. package/dist/spinner/index.js +1 -1
  147. package/dist/spinner/index.mjs +1 -1
  148. package/dist/stepper/index.js +1 -1
  149. package/dist/stepper/index.mjs +2 -2
  150. package/dist/switch/SwitchInput.styles.d.ts +1 -1
  151. package/dist/switch/index.js +1 -1
  152. package/dist/switch/index.js.map +1 -1
  153. package/dist/switch/index.mjs +22 -23
  154. package/dist/switch/index.mjs.map +1 -1
  155. package/dist/tabs/TabsTrigger.styles.d.ts +1 -1
  156. package/dist/tabs/index.js +1 -1
  157. package/dist/tabs/index.js.map +1 -1
  158. package/dist/tabs/index.mjs +20 -21
  159. package/dist/tabs/index.mjs.map +1 -1
  160. package/dist/tag/Tag.styles.d.ts +1 -1
  161. package/dist/tag/index.js +1 -1
  162. package/dist/tag/index.js.map +1 -1
  163. package/dist/tag/index.mjs +19 -35
  164. package/dist/tag/index.mjs.map +1 -1
  165. package/dist/tag/variants/filled.d.ts +0 -4
  166. package/dist/tag/variants/outlined.d.ts +0 -4
  167. package/dist/tag/variants/tinted.d.ts +0 -4
  168. package/dist/text-link/TextLink.d.ts +1 -1
  169. package/dist/text-link/index.js +1 -1
  170. package/dist/text-link/index.mjs +1 -1
  171. package/dist/textarea/index.js +1 -1
  172. package/dist/textarea/index.js.map +1 -1
  173. package/dist/textarea/index.mjs +10 -14
  174. package/dist/textarea/index.mjs.map +1 -1
  175. package/dist/toast/Toast.styles.d.ts +1 -1
  176. package/dist/toast/index.js +1 -1
  177. package/dist/toast/index.js.map +1 -1
  178. package/dist/toast/index.mjs +25 -37
  179. package/dist/toast/index.mjs.map +1 -1
  180. package/dist/toast/types.d.ts +1 -1
  181. package/package.json +4 -4
  182. package/dist/Button-B6rA3-e5.js +0 -2
  183. package/dist/Button-B6rA3-e5.js.map +0 -1
  184. package/dist/Button-DPncfbbM.mjs.map +0 -1
  185. package/dist/Icon-C23-htlD.mjs.map +0 -1
  186. package/dist/Icon-CF0W0LKr.js +0 -2
  187. package/dist/Icon-CF0W0LKr.js.map +0 -1
  188. package/dist/IconButton-Bfd-6BAD.mjs.map +0 -1
  189. package/dist/IconButton-D3g86WpZ.js +0 -2
  190. package/dist/IconButton-D3g86WpZ.js.map +0 -1
  191. package/dist/Spinner-_Kffli3B.js +0 -2
  192. package/dist/Spinner-_Kffli3B.js.map +0 -1
  193. package/dist/Spinner-aLrtE2JN.mjs.map +0 -1
  194. package/dist/TextLink-C3xDLsbC.js +0 -2
  195. package/dist/TextLink-C3xDLsbC.js.map +0 -1
  196. package/dist/TextLink-D7mOCjY_.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { InputGroup as e, Input as i } from "../input/index.mjs";
3
- import { cx as T } from "class-variance-authority";
3
+ import { cx as g } from "class-variance-authority";
4
4
  const t = (a) => /* @__PURE__ */ r(e.ClearButton, { inline: !0, "data-spark-component": "textarea-group-trailing-icon", ...a });
5
5
  t.id = e.ClearButton.id;
6
6
  t.displayName = "TextareaGroup.ClearButton";
@@ -12,32 +12,28 @@ n.displayName = "TextareaGroup.LeadingIcon";
12
12
  const o = (a) => /* @__PURE__ */ r(e.TrailingIcon, { "data-spark-component": "textarea-group-trailing-icon", ...a });
13
13
  o.id = e.TrailingIcon.id;
14
14
  o.displayName = "TextareaGroup.TrailingIcon";
15
- const c = ({
15
+ const d = ({
16
16
  className: a,
17
- disabled: s,
18
- rows: d = 1,
17
+ disabled: c,
18
+ rows: s = 1,
19
19
  isResizable: u = !0,
20
20
  ref: l,
21
21
  onValueChange: x,
22
- ...g
22
+ ...T
23
23
  }) => /* @__PURE__ */ r(
24
24
  i,
25
25
  {
26
- className: T(
27
- a,
28
- "py-[var(--spacing-sz-10)]",
29
- u ? "resize-y" : "resize-none"
30
- ),
26
+ className: g(a, "py-sz-10 rounded-xl!", u ? "resize-y" : "resize-none"),
31
27
  "data-spark-component": "textarea",
32
- disabled: s,
28
+ disabled: c,
33
29
  asChild: !0,
34
30
  onValueChange: x,
35
- children: /* @__PURE__ */ r("textarea", { ref: l, rows: d, ...g })
31
+ children: /* @__PURE__ */ r("textarea", { ref: l, rows: s, ...T })
36
32
  }
37
- ), N = Object.assign(c, {
33
+ ), N = Object.assign(d, {
38
34
  id: i.id
39
35
  });
40
- c.displayName = "Textarea";
36
+ d.displayName = "Textarea";
41
37
  const m = Object.assign(p, {
42
38
  LeadingIcon: n,
43
39
  TrailingIcon: o,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/textarea/TextareaClearButton.tsx","../../src/textarea/TextareaGroup.tsx","../../src/textarea/TextareaLeadingIcon.tsx","../../src/textarea/TextareaTrailingIcon.tsx","../../src/textarea/Textarea.tsx","../../src/textarea/index.ts"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref } from 'react'\n\nimport { InputGroup } from '../input'\n\nexport interface TextareaClearButtonProps extends ComponentPropsWithoutRef<'button'> {\n 'aria-label': string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const TextareaClearButton = (props: TextareaClearButtonProps) => {\n return (\n <InputGroup.ClearButton inline data-spark-component=\"textarea-group-trailing-icon\" {...props} />\n )\n}\n\nTextareaClearButton.id = InputGroup.ClearButton.id\nTextareaClearButton.displayName = 'TextareaGroup.ClearButton'\n","import { InputGroup, InputGroupProps } from '../input'\n\nexport type TextareaGroupProps = InputGroupProps\n\nexport const TextareaGroup = (props: TextareaGroupProps) => {\n return <InputGroup {...props} />\n}\n\nTextareaGroup.displayName = 'TextareaGroup'\n","import { InputGroup, InputLeadingIconProps } from '../input'\n\nexport type TextareaLeadingIconProps = InputLeadingIconProps\n\nexport const TextareaLeadingIcon = (props: InputLeadingIconProps) => {\n return <InputGroup.LeadingIcon data-spark-component=\"textarea-group-leading-icon\" {...props} />\n}\n\nTextareaLeadingIcon.id = InputGroup.LeadingIcon.id\nTextareaLeadingIcon.displayName = 'TextareaGroup.LeadingIcon'\n","import { InputGroup, InputTrailingIconProps } from '../input'\n\nexport type TextareaTrailingIconProps = InputTrailingIconProps\n\nexport const TextareaTrailingIcon = (props: InputTrailingIconProps) => {\n return <InputGroup.TrailingIcon data-spark-component=\"textarea-group-trailing-icon\" {...props} />\n}\n\nTextareaTrailingIcon.id = InputGroup.TrailingIcon.id\nTextareaTrailingIcon.displayName = 'TextareaGroup.TrailingIcon'\n","import { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, PropsWithChildren, Ref } from 'react'\n\nimport { Input, InputProps } from '../input'\n\ntype TextareaPrimitiveProps = ComponentPropsWithoutRef<'textarea'>\n\nexport interface TextareaProps extends TextareaPrimitiveProps, Pick<InputProps, 'onValueChange'> {\n isResizable?: boolean\n ref?: Ref<HTMLTextAreaElement>\n}\n\nconst Root = ({\n className,\n disabled,\n rows = 1,\n isResizable = true,\n ref,\n onValueChange,\n ...others\n}: PropsWithChildren<TextareaProps>) => {\n return (\n <Input\n className={cx(\n className,\n 'py-[var(--spacing-sz-10)]',\n isResizable ? 'resize-y' : 'resize-none'\n )}\n data-spark-component=\"textarea\"\n disabled={disabled}\n asChild\n onValueChange={onValueChange}\n >\n <textarea ref={ref} rows={rows} {...others} />\n </Input>\n )\n}\n\nexport const Textarea = Object.assign(Root, {\n id: Input.id,\n})\n\nRoot.displayName = 'Textarea'\n","import { TextareaClearButton } from './TextareaClearButton'\nimport { TextareaGroup as Root } from './TextareaGroup'\nimport { TextareaLeadingIcon } from './TextareaLeadingIcon'\nimport { TextareaTrailingIcon } from './TextareaTrailingIcon'\n\nexport * from './Textarea'\n\nexport const TextareaGroup: typeof Root & {\n LeadingIcon: typeof TextareaLeadingIcon\n TrailingIcon: typeof TextareaTrailingIcon\n ClearButton: typeof TextareaClearButton\n} = Object.assign(Root, {\n LeadingIcon: TextareaLeadingIcon,\n TrailingIcon: TextareaTrailingIcon,\n ClearButton: TextareaClearButton,\n})\n\nTextareaGroup.displayName = 'TextareaGroup'\nTextareaLeadingIcon.displayName = 'TextareaGroup.LeadingIcon'\nTextareaTrailingIcon.displayName = 'TextareaGroup.TrailingIcon'\nTextareaClearButton.displayName = 'TextareaGroup.ClearButton'\n\nexport { type TextareaGroupProps } from './TextareaGroup'\nexport { type TextareaLeadingIconProps } from './TextareaLeadingIcon'\nexport { type TextareaTrailingIconProps } from './TextareaTrailingIcon'\nexport { type TextareaClearButtonProps } from './TextareaClearButton'\n"],"names":["TextareaClearButton","props","jsx","InputGroup","TextareaGroup","TextareaLeadingIcon","TextareaTrailingIcon","Root","className","disabled","rows","isResizable","ref","onValueChange","others","Input","cx","Textarea"],"mappings":";;;AASO,MAAMA,IAAsB,CAACC,MAEhC,gBAAAC,EAACC,EAAW,aAAX,EAAuB,QAAM,IAAC,wBAAqB,gCAAgC,GAAGF,GAAO;AAIlGD,EAAoB,KAAKG,EAAW,YAAY;AAChDH,EAAoB,cAAc;ACZ3B,MAAMI,IAAgB,CAACH,MACrB,gBAAAC,EAACC,GAAA,EAAY,GAAGF,EAAA,CAAO;AAGhCG,EAAc,cAAc;ACJrB,MAAMC,IAAsB,CAACJ,wBAC1BE,EAAW,aAAX,EAAuB,wBAAqB,+BAA+B,GAAGF,GAAO;AAG/FI,EAAoB,KAAKF,EAAW,YAAY;AAChDE,EAAoB,cAAc;ACL3B,MAAMC,IAAuB,CAACL,wBAC3BE,EAAW,cAAX,EAAwB,wBAAqB,gCAAgC,GAAGF,GAAO;AAGjGK,EAAqB,KAAKH,EAAW,aAAa;AAClDG,EAAqB,cAAc;ACGnC,MAAMC,IAAO,CAAC;AAAA,EACZ,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,aAAAC,IAAc;AAAA,EACd,KAAAC;AAAA,EACA,eAAAC;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAZ;AAAA,EAACa;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACTR;AAAA,MACA;AAAA,MACAG,IAAc,aAAa;AAAA,IAAA;AAAA,IAE7B,wBAAqB;AAAA,IACrB,UAAAF;AAAA,IACA,SAAO;AAAA,IACP,eAAAI;AAAA,IAEA,UAAA,gBAAAX,EAAC,YAAA,EAAS,KAAAU,GAAU,MAAAF,GAAa,GAAGI,EAAA,CAAQ;AAAA,EAAA;AAAA,GAKrCG,IAAW,OAAO,OAAOV,GAAM;AAAA,EAC1C,IAAIQ,EAAM;AACZ,CAAC;AAEDR,EAAK,cAAc;ACnCZ,MAAMH,IAIT,OAAO,OAAOG,GAAM;AAAA,EACtB,aAAaF;AAAA,EACb,cAAcC;AAAA,EACd,aAAaN;AACf,CAAC;AAEDI,EAAc,cAAc;AAC5BC,EAAoB,cAAc;AAClCC,EAAqB,cAAc;AACnCN,EAAoB,cAAc;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/textarea/TextareaClearButton.tsx","../../src/textarea/TextareaGroup.tsx","../../src/textarea/TextareaLeadingIcon.tsx","../../src/textarea/TextareaTrailingIcon.tsx","../../src/textarea/Textarea.tsx","../../src/textarea/index.ts"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref } from 'react'\n\nimport { InputGroup } from '../input'\n\nexport interface TextareaClearButtonProps extends ComponentPropsWithoutRef<'button'> {\n 'aria-label': string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const TextareaClearButton = (props: TextareaClearButtonProps) => {\n return (\n <InputGroup.ClearButton inline data-spark-component=\"textarea-group-trailing-icon\" {...props} />\n )\n}\n\nTextareaClearButton.id = InputGroup.ClearButton.id\nTextareaClearButton.displayName = 'TextareaGroup.ClearButton'\n","import { InputGroup, InputGroupProps } from '../input'\n\nexport type TextareaGroupProps = InputGroupProps\n\nexport const TextareaGroup = (props: TextareaGroupProps) => {\n return <InputGroup {...props} />\n}\n\nTextareaGroup.displayName = 'TextareaGroup'\n","import { InputGroup, InputLeadingIconProps } from '../input'\n\nexport type TextareaLeadingIconProps = InputLeadingIconProps\n\nexport const TextareaLeadingIcon = (props: InputLeadingIconProps) => {\n return <InputGroup.LeadingIcon data-spark-component=\"textarea-group-leading-icon\" {...props} />\n}\n\nTextareaLeadingIcon.id = InputGroup.LeadingIcon.id\nTextareaLeadingIcon.displayName = 'TextareaGroup.LeadingIcon'\n","import { InputGroup, InputTrailingIconProps } from '../input'\n\nexport type TextareaTrailingIconProps = InputTrailingIconProps\n\nexport const TextareaTrailingIcon = (props: InputTrailingIconProps) => {\n return <InputGroup.TrailingIcon data-spark-component=\"textarea-group-trailing-icon\" {...props} />\n}\n\nTextareaTrailingIcon.id = InputGroup.TrailingIcon.id\nTextareaTrailingIcon.displayName = 'TextareaGroup.TrailingIcon'\n","import { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, PropsWithChildren, Ref } from 'react'\n\nimport { Input, InputProps } from '../input'\n\ntype TextareaPrimitiveProps = ComponentPropsWithoutRef<'textarea'>\n\nexport interface TextareaProps extends TextareaPrimitiveProps, Pick<InputProps, 'onValueChange'> {\n isResizable?: boolean\n ref?: Ref<HTMLTextAreaElement>\n}\n\nconst Root = ({\n className,\n disabled,\n rows = 1,\n isResizable = true,\n ref,\n onValueChange,\n ...others\n}: PropsWithChildren<TextareaProps>) => {\n return (\n <Input\n className={cx(className, 'py-sz-10 rounded-xl!', isResizable ? 'resize-y' : 'resize-none')}\n data-spark-component=\"textarea\"\n disabled={disabled}\n asChild\n onValueChange={onValueChange}\n >\n <textarea ref={ref} rows={rows} {...others} />\n </Input>\n )\n}\n\nexport const Textarea = Object.assign(Root, {\n id: Input.id,\n})\n\nRoot.displayName = 'Textarea'\n","import { TextareaClearButton } from './TextareaClearButton'\nimport { TextareaGroup as Root } from './TextareaGroup'\nimport { TextareaLeadingIcon } from './TextareaLeadingIcon'\nimport { TextareaTrailingIcon } from './TextareaTrailingIcon'\n\nexport * from './Textarea'\n\nexport const TextareaGroup: typeof Root & {\n LeadingIcon: typeof TextareaLeadingIcon\n TrailingIcon: typeof TextareaTrailingIcon\n ClearButton: typeof TextareaClearButton\n} = Object.assign(Root, {\n LeadingIcon: TextareaLeadingIcon,\n TrailingIcon: TextareaTrailingIcon,\n ClearButton: TextareaClearButton,\n})\n\nTextareaGroup.displayName = 'TextareaGroup'\nTextareaLeadingIcon.displayName = 'TextareaGroup.LeadingIcon'\nTextareaTrailingIcon.displayName = 'TextareaGroup.TrailingIcon'\nTextareaClearButton.displayName = 'TextareaGroup.ClearButton'\n\nexport { type TextareaGroupProps } from './TextareaGroup'\nexport { type TextareaLeadingIconProps } from './TextareaLeadingIcon'\nexport { type TextareaTrailingIconProps } from './TextareaTrailingIcon'\nexport { type TextareaClearButtonProps } from './TextareaClearButton'\n"],"names":["TextareaClearButton","props","jsx","InputGroup","TextareaGroup","TextareaLeadingIcon","TextareaTrailingIcon","Root","className","disabled","rows","isResizable","ref","onValueChange","others","Input","cx","Textarea"],"mappings":";;;AASO,MAAMA,IAAsB,CAACC,MAEhC,gBAAAC,EAACC,EAAW,aAAX,EAAuB,QAAM,IAAC,wBAAqB,gCAAgC,GAAGF,GAAO;AAIlGD,EAAoB,KAAKG,EAAW,YAAY;AAChDH,EAAoB,cAAc;ACZ3B,MAAMI,IAAgB,CAACH,MACrB,gBAAAC,EAACC,GAAA,EAAY,GAAGF,EAAA,CAAO;AAGhCG,EAAc,cAAc;ACJrB,MAAMC,IAAsB,CAACJ,wBAC1BE,EAAW,aAAX,EAAuB,wBAAqB,+BAA+B,GAAGF,GAAO;AAG/FI,EAAoB,KAAKF,EAAW,YAAY;AAChDE,EAAoB,cAAc;ACL3B,MAAMC,IAAuB,CAACL,wBAC3BE,EAAW,cAAX,EAAwB,wBAAqB,gCAAgC,GAAGF,GAAO;AAGjGK,EAAqB,KAAKH,EAAW,aAAa;AAClDG,EAAqB,cAAc;ACGnC,MAAMC,IAAO,CAAC;AAAA,EACZ,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,aAAAC,IAAc;AAAA,EACd,KAAAC;AAAA,EACA,eAAAC;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAZ;AAAA,EAACa;AAAA,EAAA;AAAA,IACC,WAAWC,EAAGR,GAAW,wBAAwBG,IAAc,aAAa,aAAa;AAAA,IACzF,wBAAqB;AAAA,IACrB,UAAAF;AAAA,IACA,SAAO;AAAA,IACP,eAAAI;AAAA,IAEA,UAAA,gBAAAX,EAAC,YAAA,EAAS,KAAAU,GAAU,MAAAF,GAAa,GAAGI,EAAA,CAAQ;AAAA,EAAA;AAAA,GAKrCG,IAAW,OAAO,OAAOV,GAAM;AAAA,EAC1C,IAAIQ,EAAM;AACZ,CAAC;AAEDR,EAAK,cAAc;AC/BZ,MAAMH,IAIT,OAAO,OAAOG,GAAM;AAAA,EACtB,aAAaF;AAAA,EACb,cAAcC;AAAA,EACd,aAAaN;AACf,CAAC;AAEDI,EAAc,cAAc;AAC5BC,EAAoB,cAAc;AAClCC,EAAqB,cAAc;AACnCN,EAAoB,cAAc;"}
@@ -1,7 +1,7 @@
1
1
  import { VariantProps } from 'class-variance-authority';
2
2
  export declare const toastStyles: (props?: ({
3
3
  design?: "filled" | "tinted" | null | undefined;
4
- intent?: "main" | "alert" | "error" | "support" | "accent" | "basic" | "success" | "info" | "neutral" | "surface" | "surfaceInverse" | null | undefined;
4
+ intent?: "main" | "alert" | "error" | "support" | "accent" | "success" | "info" | "neutral" | "surface" | "surfaceInverse" | null | undefined;
5
5
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
6
6
  export declare const snackbarItemVariantContent: (props?: ({
7
7
  actionOnNewline?: boolean | null | undefined;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),r=require("@base-ui/react/toast"),_=require("../Slot-DQ8z2zsy.js"),c=require("class-variance-authority"),I=require("../Button-B6rA3-e5.js"),w=require("../Icon-CF0W0LKr.js"),N=require("../IconButton-D3g86WpZ.js"),q=require("@spark-ui/icons/AlertFill"),C=require("@spark-ui/icons/Close"),h=require("@spark-ui/icons/InfoFill"),P=require("@spark-ui/icons/ValidFill"),M=require("@spark-ui/icons/WarningFill"),D=require("react");function F(e){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const l=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(s,n,l.get?l:{enumerable:!0,get:()=>e[n]})}}return s.default=e,Object.freeze(s)}const B=F(D),O=c.cva(["gap-lg p-md flex w-max !w-[min(400px,calc(100vw-2rem))] flex-col rounded-lg border-md","absolute right-0 bottom-0 left-auto mr-0","bg-clip-padding shadow-md select-none","focus-visible:ring-focus focus-visible:ring-2 focus-visible:outline-none","z-[calc(1000-var(--toast-index))]","after:absolute after:bottom-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']","[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+calc(min(var(--toast-index),10)*-16px)))_scale(calc(max(0,1-(var(--toast-index)*0.1))))]","ease-standard [transition-property:opacity,transform]","duration-400","data-[starting-style]:[transform:translateY(150%)]","data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y)))]","data-[ending-style]:duration-250","data-[ending-style]:opacity-0","data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]","data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","data-[limited]:opacity-0"],{variants:{design:{filled:"",tinted:""},intent:{success:"",alert:"",error:"",info:"",neutral:"",main:"",basic:"",support:"",accent:"",surface:"",surfaceInverse:""}},compoundVariants:[{design:"filled",intent:"success",class:["bg-success text-on-success border-success"]},{design:"filled",intent:"alert",class:["bg-alert text-on-alert border-alert"]},{design:"filled",intent:"error",class:["bg-error text-on-error border-error"]},{design:"filled",intent:"info",class:["bg-info text-on-info border-info"]},{design:"filled",intent:"neutral",class:["bg-neutral text-on-neutral border-neutral"]},{design:"filled",intent:"main",class:["bg-main text-on-main border-main"]},{design:"filled",intent:"basic",class:["bg-basic text-on-basic border-basic"]},{design:"filled",intent:"support",class:["bg-support text-on-support border-support"]},{design:"filled",intent:"accent",class:["bg-accent text-on-accent border-accent"]},{design:"filled",intent:"surface",class:["bg-surface text-on-surface border-surface"]},{design:"filled",intent:"surfaceInverse",class:["bg-surface-inverse text-on-surface-inverse border-surface-inverse"]},{design:"tinted",intent:"success",class:["bg-success-container text-on-success-container border-success"]},{design:"tinted",intent:"alert",class:["bg-alert-container text-on-alert-container border-alert"]},{design:"tinted",intent:"error",class:["bg-error-container text-on-error-container border-error"]},{design:"tinted",intent:"info",class:["bg-info-container text-on-info-container border-info"]},{design:"tinted",intent:"neutral",class:["bg-neutral-container text-on-neutral-container border-neutral"]},{design:"tinted",intent:"main",class:["bg-main-container text-on-main-container border-main"]},{design:"tinted",intent:"basic",class:["bg-basic-container text-on-basic-container border-basic"]},{design:"tinted",intent:"support",class:["bg-support-container text-on-support-container border-support"]},{design:"tinted",intent:"accent",class:["bg-accent-container text-on-accent-container border-accent"]},{design:"tinted",intent:"surface",class:["bg-surface text-on-surface border-surface"]},{design:"tinted",intent:"surfaceInverse",class:["bg-surface-inverse text-on-surface-inverse border-surface-inverse"]}],defaultVariants:{design:"filled",intent:"neutral"}});c.cva(["inline-grid items-center","col-start-1 row-start-1","pl-md pr-lg"],{variants:{actionOnNewline:{true:["grid-rows-[52px_1fr_52px]","grid-cols-[min-content_1fr_min-content]","[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']"],false:["grid-cols-[min-content_1fr_min-content_min-content]","[grid-template-areas:'icon_message_action_close']"]}},defaultVariants:{actionOnNewline:!1}});function A(e){return e==="surfaceInverse"?"surface":e==="surface"?"surfaceInverse":e==="error"?"danger":e}function S(e){return e==="surfaceInverse"?"surfaceInverse":e==="surface"?"surface":e==="error"?"danger":e}const V=(e,{toastDesign:s,toastIntent:n})=>{if(!e)return{};const{design:l,intent:i,className:d,onClick:u,...o}=e;return{design:l??s,intent:i??A(n),className:c.cx("ml-auto",d),onClick:u,...o}},Y=(e,s,n)=>({swipeDirection:["down","right"],toast:e,className:c.cx(O({design:s,intent:n})),style:{"--gap":"var(--spacing-md)","--offset-y":"calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y))"}});function z(e){switch(e){case"info":return t.jsx(h.InfoFill,{});case"success":return t.jsx(P.ValidFill,{});case"alert":return t.jsx(M.WarningFill,{});case"error":return t.jsx(q.AlertFill,{});case"main":case"support":case"accent":case"basic":case"neutral":case"surface":case"surfaceInverse":default:return t.jsx(h.InfoFill,{})}}function R({toast:e}){const{icon:s,intent:n="info",design:l,action:i,isClosable:d,closeLabel:u="Close",compact:o=!1}=e.data??{},f="tinted",g=i?.close?r.Toast.Close:r.Toast.Action,p=V(i,{toastDesign:f,toastIntent:n}),x=Y(e,f,n),b=s??z(n),m=a=>d?t.jsx(r.Toast.Close,{className:a,render:t.jsx(N.IconButton,{"aria-label":u,design:f,intent:S(n),size:"md"}),children:t.jsx(w.Icon,{children:t.jsx(C.Close,{})})}):null,v=()=>{const a=e.data?.title??e.title,y=!!(e.data?.description??e.description);return typeof a!="string"&&a!==void 0?t.jsx(r.Toast.Title,{className:y?"text-headline-2":"text-body-1",render:t.jsx("div",{}),children:a}):t.jsx(r.Toast.Title,{className:y?"text-headline-2":"text-body-1"})},T=()=>{const a=e.data?.description??e.description;return a?typeof a!="string"?t.jsx(r.Toast.Description,{className:"text-body-1",render:t.jsx("div",{}),children:a}):t.jsx(r.Toast.Description,{className:"text-body-1"}):null};return t.jsx(r.Toast.Root,{...x,children:t.jsxs("div",{className:c.cx("flex",o?"gap-lg items-center":"gap-md flex-col"),children:[t.jsxs("div",{className:"gap-lg p-md flex grow items-center",children:[t.jsx(w.Icon,{size:"md",children:b}),t.jsxs("div",{className:c.cx("gap-sm flex flex-col",o&&"flex-1",!o&&d&&"pr-3xl"),children:[v(),T()]})]}),t.jsxs("div",{className:c.cx("flex"),children:[i&&t.jsx(g,{render:t.jsx(I.Button,{...p}),children:i.label}),o&&m()]}),!o&&m("top-md right-md absolute")]})},e.id)}function j(){const e=r.Toast.useToastManager(),s=B.useCallback(()=>{e.toasts.forEach(({id:n})=>e.close(n))},[e]);return{...e,closeAll:s}}function k(){const{toasts:e}=j();return e.map(s=>t.jsx(R,{toast:s},s.id))}function X({children:e,limit:s=3,...n}){return t.jsxs(r.Toast.Provider,{limit:s,...n,children:[t.jsx(r.Toast.Portal,{children:t.jsx(r.Toast.Viewport,{className:c.cx("z-toast right-lg bottom-lg text-on-surfa- fixed top-auto mx-auto flex w-fit flex-col items-end"),children:t.jsx(k,{})})}),e]})}function L({children:e,onClick:s,asChild:n=!1,title:l,description:i,timeout:d=5e3,design:u="filled",intent:o="neutral",isClosable:f=!0,icon:g,action:p,compact:x,priority:b="low"}){const m=j(),v=n?_.Slot:"button";function T(a){s?.(a),m.add({title:l,description:i,timeout:d,priority:b,data:{design:u,intent:o,isClosable:f,...g&&{icon:g},action:p,...x!==void 0&&{compact:x}}})}return t.jsx(v,{...!n&&{type:"button"},onClick:T,children:e})}const W=r.Toast.createToastManager;exports.ToastProvider=X;exports.ToastTrigger=L;exports.createToastManager=W;exports.useToastManager=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),s=require("@base-ui/react/toast"),_=require("../Slot-DQ8z2zsy.js"),c=require("class-variance-authority"),I=require("../Button-CXL2NOrq.js"),w=require("../Icon-C-cNTnzd.js"),N=require("../IconButton-JFDGiOOn.js"),q=require("@spark-ui/icons/AlertFill"),C=require("@spark-ui/icons/Close"),h=require("@spark-ui/icons/InfoFill"),P=require("@spark-ui/icons/ValidFill"),M=require("@spark-ui/icons/WarningFill"),D=require("react");function F(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const l=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,l.get?l:{enumerable:!0,get:()=>e[n]})}}return r.default=e,Object.freeze(r)}const B=F(D),O=c.cva(["gap-lg p-md flex w-max !w-[min(400px,calc(100vw-2rem))] flex-col rounded-lg border-md","absolute right-0 bottom-0 left-auto mr-0","bg-clip-padding shadow-md select-none","focus-visible:ring-focus focus-visible:ring-2 focus-visible:outline-none","z-[calc(1000-var(--toast-index))]","after:absolute after:bottom-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']","[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+calc(min(var(--toast-index),10)*-16px)))_scale(calc(max(0,1-(var(--toast-index)*0.1))))]","ease-standard [transition-property:opacity,transform]","duration-400","data-[starting-style]:[transform:translateY(150%)]","data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y)))]","data-[ending-style]:duration-250","data-[ending-style]:opacity-0","data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]","data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","data-[limited]:opacity-0"],{variants:{design:{filled:"",tinted:""},intent:{success:"",alert:"",error:"",info:"",neutral:"",main:"",support:"",accent:"",surface:"",surfaceInverse:""}},compoundVariants:[{design:"filled",intent:"success",class:["bg-success text-on-success border-success"]},{design:"filled",intent:"alert",class:["bg-alert text-on-alert border-alert"]},{design:"filled",intent:"error",class:["bg-error text-on-error border-error"]},{design:"filled",intent:"info",class:["bg-info text-on-info border-info"]},{design:"filled",intent:"neutral",class:["bg-neutral text-on-neutral border-neutral"]},{design:"filled",intent:"main",class:["bg-main text-on-main border-main"]},{design:"filled",intent:"support",class:["bg-support text-on-support border-support"]},{design:"filled",intent:"accent",class:["bg-accent text-on-accent border-accent"]},{design:"filled",intent:"surface",class:["bg-surface text-on-surface border-surface"]},{design:"filled",intent:"surfaceInverse",class:["bg-surface-inverse text-on-surface-inverse border-surface-inverse"]},{design:"tinted",intent:"success",class:["bg-success-container text-on-success-container border-success"]},{design:"tinted",intent:"alert",class:["bg-alert-container text-on-alert-container border-alert"]},{design:"tinted",intent:"error",class:["bg-error-container text-on-error-container border-error"]},{design:"tinted",intent:"info",class:["bg-info-container text-on-info-container border-info"]},{design:"tinted",intent:"neutral",class:["bg-neutral-container text-on-neutral-container border-neutral"]},{design:"tinted",intent:"main",class:["bg-main-container text-on-main-container border-main"]},{design:"tinted",intent:"support",class:["bg-support-container text-on-support-container border-support"]},{design:"tinted",intent:"accent",class:["bg-accent-container text-on-accent-container border-accent"]},{design:"tinted",intent:"surface",class:["bg-surface text-on-surface border-surface"]},{design:"tinted",intent:"surfaceInverse",class:["bg-surface-inverse text-on-surface-inverse border-surface-inverse"]}],defaultVariants:{design:"filled",intent:"neutral"}});c.cva(["inline-grid items-center","col-start-1 row-start-1","pl-md pr-lg"],{variants:{actionOnNewline:{true:["grid-rows-[52px_1fr_52px]","grid-cols-[min-content_1fr_min-content]","[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']"],false:["grid-cols-[min-content_1fr_min-content_min-content]","[grid-template-areas:'icon_message_action_close']"]}},defaultVariants:{actionOnNewline:!1}});function A(e){return e==="surfaceInverse"?"surface":e==="surface"?"surfaceInverse":e==="error"?"danger":e}function S(e){return e==="surfaceInverse"?"surfaceInverse":e==="surface"?"surface":e==="error"?"danger":e}const V=(e,{toastDesign:r,toastIntent:n})=>{if(!e)return{};const{design:l,intent:i,className:d,onClick:u,...o}=e;return{design:l??r,intent:i??A(n),className:c.cx("ml-auto",d),onClick:u,...o}},Y=(e,r,n)=>({swipeDirection:["down","right"],toast:e,className:c.cx(O({design:r,intent:n})),style:{"--gap":"var(--spacing-md)","--offset-y":"calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y))"}});function z(e){switch(e){case"info":return t.jsx(h.InfoFill,{});case"success":return t.jsx(P.ValidFill,{});case"alert":return t.jsx(M.WarningFill,{});case"error":return t.jsx(q.AlertFill,{});case"main":case"support":case"accent":case"neutral":case"surface":case"surfaceInverse":default:return t.jsx(h.InfoFill,{})}}function R({toast:e}){const{icon:r,intent:n="info",design:l,action:i,isClosable:d,closeLabel:u="Close",compact:o=!1}=e.data??{},f="tinted",g=i?.close?s.Toast.Close:s.Toast.Action,p=V(i,{toastDesign:f,toastIntent:n}),x=Y(e,f,n),b=r??z(n),m=a=>d?t.jsx(s.Toast.Close,{className:a,render:t.jsx(N.IconButton,{"aria-label":u,design:f,intent:S(n),size:"md"}),children:t.jsx(w.Icon,{children:t.jsx(C.Close,{})})}):null,v=()=>{const a=e.data?.title??e.title,y=!!(e.data?.description??e.description);return typeof a!="string"&&a!==void 0?t.jsx(s.Toast.Title,{className:y?"text-headline-2":"text-body-1",render:t.jsx("div",{}),children:a}):t.jsx(s.Toast.Title,{className:y?"text-headline-2":"text-body-1"})},T=()=>{const a=e.data?.description??e.description;return a?typeof a!="string"?t.jsx(s.Toast.Description,{className:"text-body-1",render:t.jsx("div",{}),children:a}):t.jsx(s.Toast.Description,{className:"text-body-1"}):null};return t.jsx(s.Toast.Root,{...x,children:t.jsxs("div",{className:c.cx("flex",o?"gap-lg items-center":"gap-md flex-col"),children:[t.jsxs("div",{className:"gap-lg p-md flex grow items-center",children:[t.jsx(w.Icon,{size:"md",children:b}),t.jsxs("div",{className:c.cx("gap-sm flex flex-col",o&&"flex-1",!o&&d&&"pr-3xl"),children:[v(),T()]})]}),t.jsxs("div",{className:c.cx("flex"),children:[i&&t.jsx(g,{render:t.jsx(I.Button,{...p}),children:i.label}),o&&m()]}),!o&&m("top-md right-md absolute")]})},e.id)}function j(){const e=s.Toast.useToastManager(),r=B.useCallback(()=>{e.toasts.forEach(({id:n})=>e.close(n))},[e]);return{...e,closeAll:r}}function k(){const{toasts:e}=j();return e.map(r=>t.jsx(R,{toast:r},r.id))}function X({children:e,limit:r=3,...n}){return t.jsxs(s.Toast.Provider,{limit:r,...n,children:[t.jsx(s.Toast.Portal,{children:t.jsx(s.Toast.Viewport,{className:c.cx("z-toast right-lg bottom-lg text-on-surfa- fixed top-auto mx-auto flex w-fit flex-col items-end"),children:t.jsx(k,{})})}),e]})}function L({children:e,onClick:r,asChild:n=!1,title:l,description:i,timeout:d=5e3,design:u="filled",intent:o="neutral",isClosable:f=!0,icon:g,action:p,compact:x,priority:b="low"}){const m=j(),v=n?_.Slot:"button";function T(a){r?.(a),m.add({title:l,description:i,timeout:d,priority:b,data:{design:u,intent:o,isClosable:f,...g&&{icon:g},action:p,...x!==void 0&&{compact:x}}})}return t.jsx(v,{...!n&&{type:"button"},onClick:T,children:e})}const W=s.Toast.createToastManager;exports.ToastProvider=X;exports.ToastTrigger=L;exports.createToastManager=W;exports.useToastManager=j;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/toast/Toast.styles.ts","../../src/toast/Toast.tsx","../../src/toast/useToastManager.ts","../../src/toast/index.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority'\n\nexport const toastStyles = cva(\n [\n 'gap-lg p-md flex w-max !w-[min(400px,calc(100vw-2rem))] flex-col rounded-lg border-md',\n 'absolute right-0 bottom-0 left-auto mr-0',\n 'bg-clip-padding shadow-md select-none',\n 'focus-visible:ring-focus focus-visible:ring-2 focus-visible:outline-none',\n 'z-[calc(1000-var(--toast-index))]',\n \"after:absolute after:bottom-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n // Stack effect while not focused\n '[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+calc(min(var(--toast-index),10)*-16px)))_scale(calc(max(0,1-(var(--toast-index)*0.1))))]',\n // Scale and translate\n 'ease-standard [transition-property:opacity,transform]',\n 'duration-400',\n // Present when the toast is animating in.\n 'data-[starting-style]:[transform:translateY(150%)]',\n // Expanded: Present when the toast is expanded in the viewport.\n 'data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y)))]',\n // Present when the toast is animating out.\n 'data-[ending-style]:duration-250',\n 'data-[ending-style]:opacity-0',\n 'data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]',\n 'data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n 'data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n // Limited: Present when the toast was removed due to exceeding the limit.\n 'data-[limited]:opacity-0',\n ],\n {\n variants: {\n design: {\n filled: '',\n tinted: '',\n },\n intent: {\n success: '',\n alert: '',\n error: '',\n info: '',\n neutral: '',\n main: '',\n basic: '',\n support: '',\n accent: '',\n surface: '',\n surfaceInverse: '',\n },\n },\n compoundVariants: [\n // Filled variants\n {\n design: 'filled',\n intent: 'success',\n class: ['bg-success text-on-success border-success'],\n },\n {\n design: 'filled',\n intent: 'alert',\n class: ['bg-alert text-on-alert border-alert'],\n },\n {\n design: 'filled',\n intent: 'error',\n class: ['bg-error text-on-error border-error'],\n },\n {\n design: 'filled',\n intent: 'info',\n class: ['bg-info text-on-info border-info'],\n },\n {\n design: 'filled',\n intent: 'neutral',\n class: ['bg-neutral text-on-neutral border-neutral'],\n },\n {\n design: 'filled',\n intent: 'main',\n class: ['bg-main text-on-main border-main'],\n },\n {\n design: 'filled',\n intent: 'basic',\n class: ['bg-basic text-on-basic border-basic'],\n },\n {\n design: 'filled',\n intent: 'support',\n class: ['bg-support text-on-support border-support'],\n },\n {\n design: 'filled',\n intent: 'accent',\n class: ['bg-accent text-on-accent border-accent'],\n },\n {\n design: 'filled',\n intent: 'surface',\n class: ['bg-surface text-on-surface border-surface'],\n },\n {\n design: 'filled',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse border-surface-inverse'],\n },\n\n // Tinted variants\n {\n design: 'tinted',\n intent: 'success',\n class: ['bg-success-container text-on-success-container border-success'],\n },\n {\n design: 'tinted',\n intent: 'alert',\n class: ['bg-alert-container text-on-alert-container border-alert'],\n },\n {\n design: 'tinted',\n intent: 'error',\n class: ['bg-error-container text-on-error-container border-error'],\n },\n {\n design: 'tinted',\n intent: 'info',\n class: ['bg-info-container text-on-info-container border-info'],\n },\n {\n design: 'tinted',\n intent: 'neutral',\n class: ['bg-neutral-container text-on-neutral-container border-neutral'],\n },\n {\n design: 'tinted',\n intent: 'main',\n class: ['bg-main-container text-on-main-container border-main'],\n },\n {\n design: 'tinted',\n intent: 'basic',\n class: ['bg-basic-container text-on-basic-container border-basic'],\n },\n {\n design: 'tinted',\n intent: 'support',\n class: ['bg-support-container text-on-support-container border-support'],\n },\n {\n design: 'tinted',\n intent: 'accent',\n class: ['bg-accent-container text-on-accent-container border-accent'],\n },\n {\n design: 'tinted',\n intent: 'surface',\n class: ['bg-surface text-on-surface border-surface'],\n },\n {\n design: 'tinted',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse border-surface-inverse'],\n },\n ],\n defaultVariants: {\n design: 'filled',\n intent: 'neutral',\n },\n }\n)\n\nexport const snackbarItemVariantContent = cva(\n [\n 'inline-grid items-center',\n 'col-start-1 row-start-1',\n 'pl-md pr-lg', // applying padding on the parent prevents VoiceOver on Safari from reading snackbar content 🤷\n ],\n {\n variants: {\n /**\n * Force action button displaying on a new line\n * @default false\n */\n actionOnNewline: {\n true: [\n 'grid-rows-[52px_1fr_52px]',\n 'grid-cols-[min-content_1fr_min-content]',\n \"[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']\",\n ],\n false: [\n 'grid-cols-[min-content_1fr_min-content_min-content]',\n \"[grid-template-areas:'icon_message_action_close']\",\n ],\n },\n },\n defaultVariants: {\n actionOnNewline: false,\n },\n }\n)\n\nexport type ToastVariantProps = VariantProps<typeof toastStyles>\nexport type SnackbarItemVariantContentProps = VariantProps<typeof snackbarItemVariantContent>\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Button, ButtonProps } from '@spark-ui/components/button'\nimport { Icon } from '@spark-ui/components/icon'\nimport { IconButton } from '@spark-ui/components/icon-button'\nimport { AlertFill } from '@spark-ui/icons/AlertFill'\nimport { Close } from '@spark-ui/icons/Close'\nimport { InfoFill } from '@spark-ui/icons/InfoFill'\nimport { ValidFill } from '@spark-ui/icons/ValidFill'\nimport { WarningFill } from '@spark-ui/icons/WarningFill'\nimport { cx } from 'class-variance-authority'\n\nimport { toastStyles } from './Toast.styles'\nimport type { ToastData, ToastDesign, ToastIntent, ToastObject } from './types'\n\nfunction getButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surface'\n if (intent === 'surface') return 'surfaceInverse'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nfunction getCloseButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surfaceInverse'\n if (intent === 'surface') return 'surface'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nconst getActionProps = (\n action: ToastData['action'],\n { toastDesign, toastIntent }: { toastDesign?: ToastDesign; toastIntent?: ToastIntent }\n): ButtonProps => {\n if (!action) return {}\n\n const { design, intent, className, onClick, ...rest } = action\n\n return {\n design: design ?? toastDesign,\n intent: intent ?? getButtonIntent(toastIntent),\n className: cx('ml-auto', className),\n onClick,\n ...rest,\n }\n}\n\nconst getToastRootProps = (toast: ToastObject, design: ToastDesign, intent: ToastIntent) => ({\n swipeDirection: ['down', 'right'] as ['down', 'right'],\n toast,\n className: cx(toastStyles({ design, intent })),\n style: {\n ['--gap' as string]: 'var(--spacing-md)',\n ['--offset-y' as string]:\n 'calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y))',\n },\n})\n\nfunction getDefaultIcon(intent: ToastIntent): React.ReactNode {\n switch (intent) {\n case 'info':\n return <InfoFill />\n case 'success':\n return <ValidFill />\n case 'alert':\n return <WarningFill />\n case 'error':\n return <AlertFill />\n case 'main':\n case 'support':\n case 'accent':\n case 'basic':\n case 'neutral':\n case 'surface':\n case 'surfaceInverse':\n default:\n return <InfoFill />\n }\n}\n\nexport function Toast({ toast }: { toast: ToastObject }) {\n const {\n icon: ToastIcon,\n intent = 'info',\n design: _design, // deprecated prop, ignored\n action,\n isClosable,\n closeLabel = 'Close',\n compact = false,\n } = toast.data ?? {}\n\n // Always use 'tinted' design regardless of prop value\n const design = 'tinted' as const\n\n const ActionButton = action?.close ? BaseToast.Close : BaseToast.Action\n const actionProps = getActionProps(action, { toastDesign: design, toastIntent: intent })\n const rootProps = getToastRootProps(toast, design, intent)\n\n // Use provided icon or default icon based on intent\n const icon = ToastIcon ?? getDefaultIcon(intent)\n\n const getCloseButton = (className?: string) => {\n if (!isClosable) return null\n\n return (\n <BaseToast.Close\n className={className}\n render={\n <IconButton\n aria-label={closeLabel}\n design={design}\n intent={getCloseButtonIntent(intent)}\n size=\"md\"\n />\n }\n >\n <Icon>\n <Close />\n </Icon>\n </BaseToast.Close>\n )\n }\n\n const renderTitle = () => {\n // Check ToastData first for JSX, then fallback to toast.title (string)\n const title = toast.data?.title ?? toast.title\n const hasDescription = !!(toast.data?.description ?? toast.description)\n\n if (typeof title !== 'string' && title !== undefined) {\n return (\n <BaseToast.Title\n className={hasDescription ? 'text-headline-2' : 'text-body-1'}\n render={<div />}\n >\n {title}\n </BaseToast.Title>\n )\n }\n\n return <BaseToast.Title className={hasDescription ? 'text-headline-2' : 'text-body-1'} />\n }\n\n const renderDescription = () => {\n // Check ToastData first for JSX, then fallback to toast.description (string)\n const description = toast.data?.description ?? toast.description\n\n if (!description) return null\n\n if (typeof description !== 'string') {\n return (\n <BaseToast.Description className=\"text-body-1\" render={<div />}>\n {description}\n </BaseToast.Description>\n )\n }\n\n return <BaseToast.Description className=\"text-body-1\" />\n }\n\n return (\n <BaseToast.Root key={toast.id} {...rootProps}>\n <div className={cx('flex', compact ? 'gap-lg items-center' : 'gap-md flex-col')}>\n <div className=\"gap-lg p-md flex grow items-center\">\n {/* Icon */}\n <Icon size=\"md\">{icon}</Icon>\n {/* Title and description */}\n <div\n className={cx(\n 'gap-sm flex flex-col',\n compact && 'flex-1',\n !compact && isClosable && 'pr-3xl'\n )}\n >\n {renderTitle()}\n {renderDescription()}\n </div>\n </div>\n\n <div className={cx('flex')}>\n {/* Action button */}\n {action && (\n <ActionButton render={<Button {...actionProps} />}>{action.label}</ActionButton>\n )}\n {/* Close button - compact layout only */}\n {compact && getCloseButton()}\n </div>\n\n {/* Close button - default layout only */}\n {!compact && getCloseButton('top-md right-md absolute')}\n </div>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport * as React from 'react'\n\nimport type { UseToastManagerReturnValue } from './types'\n\nexport function useToastManager(): UseToastManagerReturnValue {\n const baseToastManager = BaseToast.useToastManager()\n\n const closeAll = React.useCallback((): void => {\n baseToastManager.toasts.forEach(({ id }) => baseToastManager.close(id))\n }, [baseToastManager])\n\n return {\n ...baseToastManager,\n closeAll,\n } as UseToastManagerReturnValue\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Slot } from '@spark-ui/components/slot'\nimport { cx } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { Toast } from './Toast'\nimport type { ToastData, ToastObject } from './types'\nimport { useToastManager } from './useToastManager'\n\nexport * from './types'\n\nfunction ToastList() {\n const { toasts } = useToastManager()\n\n return toasts.map(toast => <Toast key={toast.id} toast={toast} />)\n}\n\ninterface ToastProviderProps extends React.ComponentProps<typeof BaseToast.Provider> {\n children: React.ReactNode\n}\n\nexport function ToastProvider({ children, limit = 3, ...props }: ToastProviderProps) {\n return (\n <BaseToast.Provider limit={limit} {...props}>\n <BaseToast.Portal>\n <BaseToast.Viewport\n className={cx(\n 'z-toast right-lg bottom-lg text-on-surfa- fixed top-auto mx-auto flex w-fit flex-col items-end'\n )}\n >\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n {children}\n </BaseToast.Provider>\n )\n}\n\ninterface ToastTriggerProps\n extends Omit<React.ComponentPropsWithRef<'button'>, 'title'>,\n Pick<ToastObject, 'priority'>,\n Pick<ToastData, 'design' | 'intent' | 'icon' | 'isClosable' | 'action' | 'compact'> {\n children: React.ReactNode\n asChild?: boolean\n title: string | React.ReactNode\n description?: string | React.ReactNode\n timeout?: number\n}\n\nexport function ToastTrigger({\n children,\n onClick,\n asChild = false,\n title,\n description,\n timeout = 5000,\n design = 'filled',\n intent = 'neutral',\n isClosable = true,\n icon,\n action,\n compact,\n priority = 'low',\n}: ToastTriggerProps) {\n const toastManager = useToastManager()\n\n const Component = asChild ? Slot : 'button'\n\n function createToast(e: React.MouseEvent<HTMLButtonElement>) {\n onClick?.(e)\n toastManager.add({\n title,\n description,\n timeout,\n priority,\n data: {\n design,\n intent,\n isClosable,\n ...(icon && { icon }),\n action,\n ...(compact !== undefined && { compact }),\n },\n })\n }\n\n return (\n <Component {...(!asChild && { type: 'button' })} onClick={createToast}>\n {children}\n </Component>\n )\n}\n\nexport type ToastManager = ReturnType<typeof BaseToast.createToastManager>\n\nexport const createToastManager: () => ToastManager = BaseToast.createToastManager\n\nexport { useToastManager }\n"],"names":["toastStyles","cva","getButtonIntent","intent","getCloseButtonIntent","getActionProps","action","toastDesign","toastIntent","design","className","onClick","rest","cx","getToastRootProps","toast","getDefaultIcon","InfoFill","ValidFill","WarningFill","AlertFill","Toast","ToastIcon","_design","isClosable","closeLabel","compact","ActionButton","BaseToast","actionProps","rootProps","icon","getCloseButton","jsx","IconButton","Icon","Close","renderTitle","title","hasDescription","renderDescription","description","jsxs","Button","useToastManager","baseToastManager","closeAll","React","id","ToastList","toasts","ToastProvider","children","limit","props","ToastTrigger","asChild","timeout","priority","toastManager","Component","Slot","createToast","e","createToastManager"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/toast/Toast.styles.ts","../../src/toast/Toast.tsx","../../src/toast/useToastManager.ts","../../src/toast/index.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority'\n\nexport const toastStyles = cva(\n [\n 'gap-lg p-md flex w-max !w-[min(400px,calc(100vw-2rem))] flex-col rounded-lg border-md',\n 'absolute right-0 bottom-0 left-auto mr-0',\n 'bg-clip-padding shadow-md select-none',\n 'focus-visible:ring-focus focus-visible:ring-2 focus-visible:outline-none',\n 'z-[calc(1000-var(--toast-index))]',\n \"after:absolute after:bottom-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n // Stack effect while not focused\n '[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+calc(min(var(--toast-index),10)*-16px)))_scale(calc(max(0,1-(var(--toast-index)*0.1))))]',\n // Scale and translate\n 'ease-standard [transition-property:opacity,transform]',\n 'duration-400',\n // Present when the toast is animating in.\n 'data-[starting-style]:[transform:translateY(150%)]',\n // Expanded: Present when the toast is expanded in the viewport.\n 'data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y)))]',\n // Present when the toast is animating out.\n 'data-[ending-style]:duration-250',\n 'data-[ending-style]:opacity-0',\n 'data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]',\n 'data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n 'data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n // Limited: Present when the toast was removed due to exceeding the limit.\n 'data-[limited]:opacity-0',\n ],\n {\n variants: {\n design: {\n filled: '',\n tinted: '',\n },\n intent: {\n success: '',\n alert: '',\n error: '',\n info: '',\n neutral: '',\n main: '',\n support: '',\n accent: '',\n surface: '',\n surfaceInverse: '',\n },\n },\n compoundVariants: [\n // Filled variants\n {\n design: 'filled',\n intent: 'success',\n class: ['bg-success text-on-success border-success'],\n },\n {\n design: 'filled',\n intent: 'alert',\n class: ['bg-alert text-on-alert border-alert'],\n },\n {\n design: 'filled',\n intent: 'error',\n class: ['bg-error text-on-error border-error'],\n },\n {\n design: 'filled',\n intent: 'info',\n class: ['bg-info text-on-info border-info'],\n },\n {\n design: 'filled',\n intent: 'neutral',\n class: ['bg-neutral text-on-neutral border-neutral'],\n },\n {\n design: 'filled',\n intent: 'main',\n class: ['bg-main text-on-main border-main'],\n },\n {\n design: 'filled',\n intent: 'support',\n class: ['bg-support text-on-support border-support'],\n },\n {\n design: 'filled',\n intent: 'accent',\n class: ['bg-accent text-on-accent border-accent'],\n },\n {\n design: 'filled',\n intent: 'surface',\n class: ['bg-surface text-on-surface border-surface'],\n },\n {\n design: 'filled',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse border-surface-inverse'],\n },\n\n // Tinted variants\n {\n design: 'tinted',\n intent: 'success',\n class: ['bg-success-container text-on-success-container border-success'],\n },\n {\n design: 'tinted',\n intent: 'alert',\n class: ['bg-alert-container text-on-alert-container border-alert'],\n },\n {\n design: 'tinted',\n intent: 'error',\n class: ['bg-error-container text-on-error-container border-error'],\n },\n {\n design: 'tinted',\n intent: 'info',\n class: ['bg-info-container text-on-info-container border-info'],\n },\n {\n design: 'tinted',\n intent: 'neutral',\n class: ['bg-neutral-container text-on-neutral-container border-neutral'],\n },\n {\n design: 'tinted',\n intent: 'main',\n class: ['bg-main-container text-on-main-container border-main'],\n },\n {\n design: 'tinted',\n intent: 'support',\n class: ['bg-support-container text-on-support-container border-support'],\n },\n {\n design: 'tinted',\n intent: 'accent',\n class: ['bg-accent-container text-on-accent-container border-accent'],\n },\n {\n design: 'tinted',\n intent: 'surface',\n class: ['bg-surface text-on-surface border-surface'],\n },\n {\n design: 'tinted',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse border-surface-inverse'],\n },\n ],\n defaultVariants: {\n design: 'filled',\n intent: 'neutral',\n },\n }\n)\n\nexport const snackbarItemVariantContent = cva(\n [\n 'inline-grid items-center',\n 'col-start-1 row-start-1',\n 'pl-md pr-lg', // applying padding on the parent prevents VoiceOver on Safari from reading snackbar content 🤷\n ],\n {\n variants: {\n /**\n * Force action button displaying on a new line\n * @default false\n */\n actionOnNewline: {\n true: [\n 'grid-rows-[52px_1fr_52px]',\n 'grid-cols-[min-content_1fr_min-content]',\n \"[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']\",\n ],\n false: [\n 'grid-cols-[min-content_1fr_min-content_min-content]',\n \"[grid-template-areas:'icon_message_action_close']\",\n ],\n },\n },\n defaultVariants: {\n actionOnNewline: false,\n },\n }\n)\n\nexport type ToastVariantProps = VariantProps<typeof toastStyles>\nexport type SnackbarItemVariantContentProps = VariantProps<typeof snackbarItemVariantContent>\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Button, ButtonProps } from '@spark-ui/components/button'\nimport { Icon } from '@spark-ui/components/icon'\nimport { IconButton } from '@spark-ui/components/icon-button'\nimport { AlertFill } from '@spark-ui/icons/AlertFill'\nimport { Close } from '@spark-ui/icons/Close'\nimport { InfoFill } from '@spark-ui/icons/InfoFill'\nimport { ValidFill } from '@spark-ui/icons/ValidFill'\nimport { WarningFill } from '@spark-ui/icons/WarningFill'\nimport { cx } from 'class-variance-authority'\n\nimport { toastStyles } from './Toast.styles'\nimport type { ToastData, ToastDesign, ToastIntent, ToastObject } from './types'\n\nfunction getButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surface'\n if (intent === 'surface') return 'surfaceInverse'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nfunction getCloseButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surfaceInverse'\n if (intent === 'surface') return 'surface'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nconst getActionProps = (\n action: ToastData['action'],\n { toastDesign, toastIntent }: { toastDesign?: ToastDesign; toastIntent?: ToastIntent }\n): ButtonProps => {\n if (!action) return {}\n\n const { design, intent, className, onClick, ...rest } = action\n\n return {\n design: design ?? toastDesign,\n intent: intent ?? getButtonIntent(toastIntent),\n className: cx('ml-auto', className),\n onClick,\n ...rest,\n }\n}\n\nconst getToastRootProps = (toast: ToastObject, design: ToastDesign, intent: ToastIntent) => ({\n swipeDirection: ['down', 'right'] as ['down', 'right'],\n toast,\n className: cx(toastStyles({ design, intent })),\n style: {\n ['--gap' as string]: 'var(--spacing-md)',\n ['--offset-y' as string]:\n 'calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y))',\n },\n})\n\nfunction getDefaultIcon(intent: ToastIntent): React.ReactNode {\n switch (intent) {\n case 'info':\n return <InfoFill />\n case 'success':\n return <ValidFill />\n case 'alert':\n return <WarningFill />\n case 'error':\n return <AlertFill />\n case 'main':\n case 'support':\n case 'accent':\n case 'neutral':\n case 'surface':\n case 'surfaceInverse':\n default:\n return <InfoFill />\n }\n}\n\nexport function Toast({ toast }: { toast: ToastObject }) {\n const {\n icon: ToastIcon,\n intent = 'info',\n design: _design, // deprecated prop, ignored\n action,\n isClosable,\n closeLabel = 'Close',\n compact = false,\n } = toast.data ?? {}\n\n // Always use 'tinted' design regardless of prop value\n const design = 'tinted' as const\n\n const ActionButton = action?.close ? BaseToast.Close : BaseToast.Action\n const actionProps = getActionProps(action, { toastDesign: design, toastIntent: intent })\n const rootProps = getToastRootProps(toast, design, intent)\n\n // Use provided icon or default icon based on intent\n const icon = ToastIcon ?? getDefaultIcon(intent)\n\n const getCloseButton = (className?: string) => {\n if (!isClosable) return null\n\n return (\n <BaseToast.Close\n className={className}\n render={\n <IconButton\n aria-label={closeLabel}\n design={design}\n intent={getCloseButtonIntent(intent)}\n size=\"md\"\n />\n }\n >\n <Icon>\n <Close />\n </Icon>\n </BaseToast.Close>\n )\n }\n\n const renderTitle = () => {\n // Check ToastData first for JSX, then fallback to toast.title (string)\n const title = toast.data?.title ?? toast.title\n const hasDescription = !!(toast.data?.description ?? toast.description)\n\n if (typeof title !== 'string' && title !== undefined) {\n return (\n <BaseToast.Title\n className={hasDescription ? 'text-headline-2' : 'text-body-1'}\n render={<div />}\n >\n {title}\n </BaseToast.Title>\n )\n }\n\n return <BaseToast.Title className={hasDescription ? 'text-headline-2' : 'text-body-1'} />\n }\n\n const renderDescription = () => {\n // Check ToastData first for JSX, then fallback to toast.description (string)\n const description = toast.data?.description ?? toast.description\n\n if (!description) return null\n\n if (typeof description !== 'string') {\n return (\n <BaseToast.Description className=\"text-body-1\" render={<div />}>\n {description}\n </BaseToast.Description>\n )\n }\n\n return <BaseToast.Description className=\"text-body-1\" />\n }\n\n return (\n <BaseToast.Root key={toast.id} {...rootProps}>\n <div className={cx('flex', compact ? 'gap-lg items-center' : 'gap-md flex-col')}>\n <div className=\"gap-lg p-md flex grow items-center\">\n {/* Icon */}\n <Icon size=\"md\">{icon}</Icon>\n {/* Title and description */}\n <div\n className={cx(\n 'gap-sm flex flex-col',\n compact && 'flex-1',\n !compact && isClosable && 'pr-3xl'\n )}\n >\n {renderTitle()}\n {renderDescription()}\n </div>\n </div>\n\n <div className={cx('flex')}>\n {/* Action button */}\n {action && (\n <ActionButton render={<Button {...actionProps} />}>{action.label}</ActionButton>\n )}\n {/* Close button - compact layout only */}\n {compact && getCloseButton()}\n </div>\n\n {/* Close button - default layout only */}\n {!compact && getCloseButton('top-md right-md absolute')}\n </div>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport * as React from 'react'\n\nimport type { UseToastManagerReturnValue } from './types'\n\nexport function useToastManager(): UseToastManagerReturnValue {\n const baseToastManager = BaseToast.useToastManager()\n\n const closeAll = React.useCallback((): void => {\n baseToastManager.toasts.forEach(({ id }) => baseToastManager.close(id))\n }, [baseToastManager])\n\n return {\n ...baseToastManager,\n closeAll,\n } as UseToastManagerReturnValue\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Slot } from '@spark-ui/components/slot'\nimport { cx } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { Toast } from './Toast'\nimport type { ToastData, ToastObject } from './types'\nimport { useToastManager } from './useToastManager'\n\nexport * from './types'\n\nfunction ToastList() {\n const { toasts } = useToastManager()\n\n return toasts.map(toast => <Toast key={toast.id} toast={toast} />)\n}\n\ninterface ToastProviderProps extends React.ComponentProps<typeof BaseToast.Provider> {\n children: React.ReactNode\n}\n\nexport function ToastProvider({ children, limit = 3, ...props }: ToastProviderProps) {\n return (\n <BaseToast.Provider limit={limit} {...props}>\n <BaseToast.Portal>\n <BaseToast.Viewport\n className={cx(\n 'z-toast right-lg bottom-lg text-on-surfa- fixed top-auto mx-auto flex w-fit flex-col items-end'\n )}\n >\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n {children}\n </BaseToast.Provider>\n )\n}\n\ninterface ToastTriggerProps\n extends Omit<React.ComponentPropsWithRef<'button'>, 'title'>,\n Pick<ToastObject, 'priority'>,\n Pick<ToastData, 'design' | 'intent' | 'icon' | 'isClosable' | 'action' | 'compact'> {\n children: React.ReactNode\n asChild?: boolean\n title: string | React.ReactNode\n description?: string | React.ReactNode\n timeout?: number\n}\n\nexport function ToastTrigger({\n children,\n onClick,\n asChild = false,\n title,\n description,\n timeout = 5000,\n design = 'filled',\n intent = 'neutral',\n isClosable = true,\n icon,\n action,\n compact,\n priority = 'low',\n}: ToastTriggerProps) {\n const toastManager = useToastManager()\n\n const Component = asChild ? Slot : 'button'\n\n function createToast(e: React.MouseEvent<HTMLButtonElement>) {\n onClick?.(e)\n toastManager.add({\n title,\n description,\n timeout,\n priority,\n data: {\n design,\n intent,\n isClosable,\n ...(icon && { icon }),\n action,\n ...(compact !== undefined && { compact }),\n },\n })\n }\n\n return (\n <Component {...(!asChild && { type: 'button' })} onClick={createToast}>\n {children}\n </Component>\n )\n}\n\nexport type ToastManager = ReturnType<typeof BaseToast.createToastManager>\n\nexport const createToastManager: () => ToastManager = BaseToast.createToastManager\n\nexport { useToastManager }\n"],"names":["toastStyles","cva","getButtonIntent","intent","getCloseButtonIntent","getActionProps","action","toastDesign","toastIntent","design","className","onClick","rest","cx","getToastRootProps","toast","getDefaultIcon","InfoFill","ValidFill","WarningFill","AlertFill","Toast","ToastIcon","_design","isClosable","closeLabel","compact","ActionButton","BaseToast","actionProps","rootProps","icon","getCloseButton","jsx","IconButton","Icon","Close","renderTitle","title","hasDescription","renderDescription","description","jsxs","Button","useToastManager","baseToastManager","closeAll","React","id","ToastList","toasts","ToastProvider","children","limit","props","ToastTrigger","asChild","timeout","priority","toastManager","Component","Slot","createToast","e","createToastManager"],"mappings":"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"}
@@ -2,9 +2,9 @@ import { jsx as t, jsxs as u } from "react/jsx-runtime";
2
2
  import { Toast as a } from "@base-ui/react/toast";
3
3
  import { S as C } from "../Slot-DLY1rJrG.mjs";
4
4
  import { cva as T, cx as l } from "class-variance-authority";
5
- import { B } from "../Button-DPncfbbM.mjs";
6
- import { I as _ } from "../Icon-C23-htlD.mjs";
7
- import { I as D } from "../IconButton-Bfd-6BAD.mjs";
5
+ import { B } from "../Button-CcIRizse.mjs";
6
+ import { I as _ } from "../Icon-BO327oHU.mjs";
7
+ import { I as D } from "../IconButton-CP4JbWsI.mjs";
8
8
  import { AlertFill as P } from "@spark-ui/icons/AlertFill";
9
9
  import { Close as M } from "@spark-ui/icons/Close";
10
10
  import { InfoFill as I } from "@spark-ui/icons/InfoFill";
@@ -50,7 +50,6 @@ const z = T(
50
50
  info: "",
51
51
  neutral: "",
52
52
  main: "",
53
- basic: "",
54
53
  support: "",
55
54
  accent: "",
56
55
  surface: "",
@@ -89,11 +88,6 @@ const z = T(
89
88
  intent: "main",
90
89
  class: ["bg-main text-on-main border-main"]
91
90
  },
92
- {
93
- design: "filled",
94
- intent: "basic",
95
- class: ["bg-basic text-on-basic border-basic"]
96
- },
97
91
  {
98
92
  design: "filled",
99
93
  intent: "support",
@@ -145,11 +139,6 @@ const z = T(
145
139
  intent: "main",
146
140
  class: ["bg-main-container text-on-main-container border-main"]
147
141
  },
148
- {
149
- design: "tinted",
150
- intent: "basic",
151
- class: ["bg-basic-container text-on-basic-container border-basic"]
152
- },
153
142
  {
154
143
  design: "tinted",
155
144
  intent: "support",
@@ -215,13 +204,13 @@ function X(e) {
215
204
  }
216
205
  const k = (e, { toastDesign: r, toastIntent: n }) => {
217
206
  if (!e) return {};
218
- const { design: g, intent: o, className: c, onClick: d, ...i } = e;
207
+ const { design: m, intent: i, className: c, onClick: d, ...o } = e;
219
208
  return {
220
- design: g ?? r,
221
- intent: o ?? F(n),
209
+ design: m ?? r,
210
+ intent: i ?? F(n),
222
211
  className: l("ml-auto", c),
223
212
  onClick: d,
224
- ...i
213
+ ...o
225
214
  };
226
215
  }, R = (e, r, n) => ({
227
216
  swipeDirection: ["down", "right"],
@@ -245,7 +234,6 @@ function S(e) {
245
234
  case "main":
246
235
  case "support":
247
236
  case "accent":
248
- case "basic":
249
237
  case "neutral":
250
238
  case "surface":
251
239
  case "surfaceInverse":
@@ -257,13 +245,13 @@ function j({ toast: e }) {
257
245
  const {
258
246
  icon: r,
259
247
  intent: n = "info",
260
- design: g,
248
+ design: m,
261
249
  // deprecated prop, ignored
262
- action: o,
250
+ action: i,
263
251
  isClosable: c,
264
252
  closeLabel: d = "Close",
265
- compact: i = !1
266
- } = e.data ?? {}, f = "tinted", m = o?.close ? a.Close : a.Action, x = k(o, { toastDesign: f, toastIntent: n }), p = R(e, f, n), v = r ?? S(n), b = (s) => c ? /* @__PURE__ */ t(
253
+ compact: o = !1
254
+ } = e.data ?? {}, f = "tinted", g = i?.close ? a.Close : a.Action, x = k(i, { toastDesign: f, toastIntent: n }), p = R(e, f, n), v = r ?? S(n), b = (s) => c ? /* @__PURE__ */ t(
267
255
  a.Close,
268
256
  {
269
257
  className: s,
@@ -292,7 +280,7 @@ function j({ toast: e }) {
292
280
  const s = e.data?.description ?? e.description;
293
281
  return s ? typeof s != "string" ? /* @__PURE__ */ t(a.Description, { className: "text-body-1", render: /* @__PURE__ */ t("div", {}), children: s }) : /* @__PURE__ */ t(a.Description, { className: "text-body-1" }) : null;
294
282
  };
295
- return /* @__PURE__ */ t(a.Root, { ...p, children: /* @__PURE__ */ u("div", { className: l("flex", i ? "gap-lg items-center" : "gap-md flex-col"), children: [
283
+ return /* @__PURE__ */ t(a.Root, { ...p, children: /* @__PURE__ */ u("div", { className: l("flex", o ? "gap-lg items-center" : "gap-md flex-col"), children: [
296
284
  /* @__PURE__ */ u("div", { className: "gap-lg p-md flex grow items-center", children: [
297
285
  /* @__PURE__ */ t(_, { size: "md", children: v }),
298
286
  /* @__PURE__ */ u(
@@ -300,8 +288,8 @@ function j({ toast: e }) {
300
288
  {
301
289
  className: l(
302
290
  "gap-sm flex flex-col",
303
- i && "flex-1",
304
- !i && c && "pr-3xl"
291
+ o && "flex-1",
292
+ !o && c && "pr-3xl"
305
293
  ),
306
294
  children: [
307
295
  w(),
@@ -311,10 +299,10 @@ function j({ toast: e }) {
311
299
  )
312
300
  ] }),
313
301
  /* @__PURE__ */ u("div", { className: l("flex"), children: [
314
- o && /* @__PURE__ */ t(m, { render: /* @__PURE__ */ t(B, { ...x }), children: o.label }),
315
- i && b()
302
+ i && /* @__PURE__ */ t(g, { render: /* @__PURE__ */ t(B, { ...x }), children: i.label }),
303
+ o && b()
316
304
  ] }),
317
- !i && b("top-md right-md absolute")
305
+ !o && b("top-md right-md absolute")
318
306
  ] }) }, e.id);
319
307
  }
320
308
  function N() {
@@ -348,13 +336,13 @@ function te({
348
336
  children: e,
349
337
  onClick: r,
350
338
  asChild: n = !1,
351
- title: g,
352
- description: o,
339
+ title: m,
340
+ description: i,
353
341
  timeout: c = 5e3,
354
342
  design: d = "filled",
355
- intent: i = "neutral",
343
+ intent: o = "neutral",
356
344
  isClosable: f = !0,
357
- icon: m,
345
+ icon: g,
358
346
  action: x,
359
347
  compact: p,
360
348
  priority: v = "low"
@@ -362,15 +350,15 @@ function te({
362
350
  const b = N(), w = n ? C : "button";
363
351
  function y(s) {
364
352
  r?.(s), b.add({
365
- title: g,
366
- description: o,
353
+ title: m,
354
+ description: i,
367
355
  timeout: c,
368
356
  priority: v,
369
357
  data: {
370
358
  design: d,
371
- intent: i,
359
+ intent: o,
372
360
  isClosable: f,
373
- ...m && { icon: m },
361
+ ...g && { icon: g },
374
362
  action: x,
375
363
  ...p !== void 0 && { compact: p }
376
364
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/toast/Toast.styles.ts","../../src/toast/Toast.tsx","../../src/toast/useToastManager.ts","../../src/toast/index.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority'\n\nexport const toastStyles = cva(\n [\n 'gap-lg p-md flex w-max !w-[min(400px,calc(100vw-2rem))] flex-col rounded-lg border-md',\n 'absolute right-0 bottom-0 left-auto mr-0',\n 'bg-clip-padding shadow-md select-none',\n 'focus-visible:ring-focus focus-visible:ring-2 focus-visible:outline-none',\n 'z-[calc(1000-var(--toast-index))]',\n \"after:absolute after:bottom-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n // Stack effect while not focused\n '[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+calc(min(var(--toast-index),10)*-16px)))_scale(calc(max(0,1-(var(--toast-index)*0.1))))]',\n // Scale and translate\n 'ease-standard [transition-property:opacity,transform]',\n 'duration-400',\n // Present when the toast is animating in.\n 'data-[starting-style]:[transform:translateY(150%)]',\n // Expanded: Present when the toast is expanded in the viewport.\n 'data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y)))]',\n // Present when the toast is animating out.\n 'data-[ending-style]:duration-250',\n 'data-[ending-style]:opacity-0',\n 'data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]',\n 'data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n 'data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n // Limited: Present when the toast was removed due to exceeding the limit.\n 'data-[limited]:opacity-0',\n ],\n {\n variants: {\n design: {\n filled: '',\n tinted: '',\n },\n intent: {\n success: '',\n alert: '',\n error: '',\n info: '',\n neutral: '',\n main: '',\n basic: '',\n support: '',\n accent: '',\n surface: '',\n surfaceInverse: '',\n },\n },\n compoundVariants: [\n // Filled variants\n {\n design: 'filled',\n intent: 'success',\n class: ['bg-success text-on-success border-success'],\n },\n {\n design: 'filled',\n intent: 'alert',\n class: ['bg-alert text-on-alert border-alert'],\n },\n {\n design: 'filled',\n intent: 'error',\n class: ['bg-error text-on-error border-error'],\n },\n {\n design: 'filled',\n intent: 'info',\n class: ['bg-info text-on-info border-info'],\n },\n {\n design: 'filled',\n intent: 'neutral',\n class: ['bg-neutral text-on-neutral border-neutral'],\n },\n {\n design: 'filled',\n intent: 'main',\n class: ['bg-main text-on-main border-main'],\n },\n {\n design: 'filled',\n intent: 'basic',\n class: ['bg-basic text-on-basic border-basic'],\n },\n {\n design: 'filled',\n intent: 'support',\n class: ['bg-support text-on-support border-support'],\n },\n {\n design: 'filled',\n intent: 'accent',\n class: ['bg-accent text-on-accent border-accent'],\n },\n {\n design: 'filled',\n intent: 'surface',\n class: ['bg-surface text-on-surface border-surface'],\n },\n {\n design: 'filled',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse border-surface-inverse'],\n },\n\n // Tinted variants\n {\n design: 'tinted',\n intent: 'success',\n class: ['bg-success-container text-on-success-container border-success'],\n },\n {\n design: 'tinted',\n intent: 'alert',\n class: ['bg-alert-container text-on-alert-container border-alert'],\n },\n {\n design: 'tinted',\n intent: 'error',\n class: ['bg-error-container text-on-error-container border-error'],\n },\n {\n design: 'tinted',\n intent: 'info',\n class: ['bg-info-container text-on-info-container border-info'],\n },\n {\n design: 'tinted',\n intent: 'neutral',\n class: ['bg-neutral-container text-on-neutral-container border-neutral'],\n },\n {\n design: 'tinted',\n intent: 'main',\n class: ['bg-main-container text-on-main-container border-main'],\n },\n {\n design: 'tinted',\n intent: 'basic',\n class: ['bg-basic-container text-on-basic-container border-basic'],\n },\n {\n design: 'tinted',\n intent: 'support',\n class: ['bg-support-container text-on-support-container border-support'],\n },\n {\n design: 'tinted',\n intent: 'accent',\n class: ['bg-accent-container text-on-accent-container border-accent'],\n },\n {\n design: 'tinted',\n intent: 'surface',\n class: ['bg-surface text-on-surface border-surface'],\n },\n {\n design: 'tinted',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse border-surface-inverse'],\n },\n ],\n defaultVariants: {\n design: 'filled',\n intent: 'neutral',\n },\n }\n)\n\nexport const snackbarItemVariantContent = cva(\n [\n 'inline-grid items-center',\n 'col-start-1 row-start-1',\n 'pl-md pr-lg', // applying padding on the parent prevents VoiceOver on Safari from reading snackbar content 🤷\n ],\n {\n variants: {\n /**\n * Force action button displaying on a new line\n * @default false\n */\n actionOnNewline: {\n true: [\n 'grid-rows-[52px_1fr_52px]',\n 'grid-cols-[min-content_1fr_min-content]',\n \"[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']\",\n ],\n false: [\n 'grid-cols-[min-content_1fr_min-content_min-content]',\n \"[grid-template-areas:'icon_message_action_close']\",\n ],\n },\n },\n defaultVariants: {\n actionOnNewline: false,\n },\n }\n)\n\nexport type ToastVariantProps = VariantProps<typeof toastStyles>\nexport type SnackbarItemVariantContentProps = VariantProps<typeof snackbarItemVariantContent>\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Button, ButtonProps } from '@spark-ui/components/button'\nimport { Icon } from '@spark-ui/components/icon'\nimport { IconButton } from '@spark-ui/components/icon-button'\nimport { AlertFill } from '@spark-ui/icons/AlertFill'\nimport { Close } from '@spark-ui/icons/Close'\nimport { InfoFill } from '@spark-ui/icons/InfoFill'\nimport { ValidFill } from '@spark-ui/icons/ValidFill'\nimport { WarningFill } from '@spark-ui/icons/WarningFill'\nimport { cx } from 'class-variance-authority'\n\nimport { toastStyles } from './Toast.styles'\nimport type { ToastData, ToastDesign, ToastIntent, ToastObject } from './types'\n\nfunction getButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surface'\n if (intent === 'surface') return 'surfaceInverse'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nfunction getCloseButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surfaceInverse'\n if (intent === 'surface') return 'surface'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nconst getActionProps = (\n action: ToastData['action'],\n { toastDesign, toastIntent }: { toastDesign?: ToastDesign; toastIntent?: ToastIntent }\n): ButtonProps => {\n if (!action) return {}\n\n const { design, intent, className, onClick, ...rest } = action\n\n return {\n design: design ?? toastDesign,\n intent: intent ?? getButtonIntent(toastIntent),\n className: cx('ml-auto', className),\n onClick,\n ...rest,\n }\n}\n\nconst getToastRootProps = (toast: ToastObject, design: ToastDesign, intent: ToastIntent) => ({\n swipeDirection: ['down', 'right'] as ['down', 'right'],\n toast,\n className: cx(toastStyles({ design, intent })),\n style: {\n ['--gap' as string]: 'var(--spacing-md)',\n ['--offset-y' as string]:\n 'calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y))',\n },\n})\n\nfunction getDefaultIcon(intent: ToastIntent): React.ReactNode {\n switch (intent) {\n case 'info':\n return <InfoFill />\n case 'success':\n return <ValidFill />\n case 'alert':\n return <WarningFill />\n case 'error':\n return <AlertFill />\n case 'main':\n case 'support':\n case 'accent':\n case 'basic':\n case 'neutral':\n case 'surface':\n case 'surfaceInverse':\n default:\n return <InfoFill />\n }\n}\n\nexport function Toast({ toast }: { toast: ToastObject }) {\n const {\n icon: ToastIcon,\n intent = 'info',\n design: _design, // deprecated prop, ignored\n action,\n isClosable,\n closeLabel = 'Close',\n compact = false,\n } = toast.data ?? {}\n\n // Always use 'tinted' design regardless of prop value\n const design = 'tinted' as const\n\n const ActionButton = action?.close ? BaseToast.Close : BaseToast.Action\n const actionProps = getActionProps(action, { toastDesign: design, toastIntent: intent })\n const rootProps = getToastRootProps(toast, design, intent)\n\n // Use provided icon or default icon based on intent\n const icon = ToastIcon ?? getDefaultIcon(intent)\n\n const getCloseButton = (className?: string) => {\n if (!isClosable) return null\n\n return (\n <BaseToast.Close\n className={className}\n render={\n <IconButton\n aria-label={closeLabel}\n design={design}\n intent={getCloseButtonIntent(intent)}\n size=\"md\"\n />\n }\n >\n <Icon>\n <Close />\n </Icon>\n </BaseToast.Close>\n )\n }\n\n const renderTitle = () => {\n // Check ToastData first for JSX, then fallback to toast.title (string)\n const title = toast.data?.title ?? toast.title\n const hasDescription = !!(toast.data?.description ?? toast.description)\n\n if (typeof title !== 'string' && title !== undefined) {\n return (\n <BaseToast.Title\n className={hasDescription ? 'text-headline-2' : 'text-body-1'}\n render={<div />}\n >\n {title}\n </BaseToast.Title>\n )\n }\n\n return <BaseToast.Title className={hasDescription ? 'text-headline-2' : 'text-body-1'} />\n }\n\n const renderDescription = () => {\n // Check ToastData first for JSX, then fallback to toast.description (string)\n const description = toast.data?.description ?? toast.description\n\n if (!description) return null\n\n if (typeof description !== 'string') {\n return (\n <BaseToast.Description className=\"text-body-1\" render={<div />}>\n {description}\n </BaseToast.Description>\n )\n }\n\n return <BaseToast.Description className=\"text-body-1\" />\n }\n\n return (\n <BaseToast.Root key={toast.id} {...rootProps}>\n <div className={cx('flex', compact ? 'gap-lg items-center' : 'gap-md flex-col')}>\n <div className=\"gap-lg p-md flex grow items-center\">\n {/* Icon */}\n <Icon size=\"md\">{icon}</Icon>\n {/* Title and description */}\n <div\n className={cx(\n 'gap-sm flex flex-col',\n compact && 'flex-1',\n !compact && isClosable && 'pr-3xl'\n )}\n >\n {renderTitle()}\n {renderDescription()}\n </div>\n </div>\n\n <div className={cx('flex')}>\n {/* Action button */}\n {action && (\n <ActionButton render={<Button {...actionProps} />}>{action.label}</ActionButton>\n )}\n {/* Close button - compact layout only */}\n {compact && getCloseButton()}\n </div>\n\n {/* Close button - default layout only */}\n {!compact && getCloseButton('top-md right-md absolute')}\n </div>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport * as React from 'react'\n\nimport type { UseToastManagerReturnValue } from './types'\n\nexport function useToastManager(): UseToastManagerReturnValue {\n const baseToastManager = BaseToast.useToastManager()\n\n const closeAll = React.useCallback((): void => {\n baseToastManager.toasts.forEach(({ id }) => baseToastManager.close(id))\n }, [baseToastManager])\n\n return {\n ...baseToastManager,\n closeAll,\n } as UseToastManagerReturnValue\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Slot } from '@spark-ui/components/slot'\nimport { cx } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { Toast } from './Toast'\nimport type { ToastData, ToastObject } from './types'\nimport { useToastManager } from './useToastManager'\n\nexport * from './types'\n\nfunction ToastList() {\n const { toasts } = useToastManager()\n\n return toasts.map(toast => <Toast key={toast.id} toast={toast} />)\n}\n\ninterface ToastProviderProps extends React.ComponentProps<typeof BaseToast.Provider> {\n children: React.ReactNode\n}\n\nexport function ToastProvider({ children, limit = 3, ...props }: ToastProviderProps) {\n return (\n <BaseToast.Provider limit={limit} {...props}>\n <BaseToast.Portal>\n <BaseToast.Viewport\n className={cx(\n 'z-toast right-lg bottom-lg text-on-surfa- fixed top-auto mx-auto flex w-fit flex-col items-end'\n )}\n >\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n {children}\n </BaseToast.Provider>\n )\n}\n\ninterface ToastTriggerProps\n extends Omit<React.ComponentPropsWithRef<'button'>, 'title'>,\n Pick<ToastObject, 'priority'>,\n Pick<ToastData, 'design' | 'intent' | 'icon' | 'isClosable' | 'action' | 'compact'> {\n children: React.ReactNode\n asChild?: boolean\n title: string | React.ReactNode\n description?: string | React.ReactNode\n timeout?: number\n}\n\nexport function ToastTrigger({\n children,\n onClick,\n asChild = false,\n title,\n description,\n timeout = 5000,\n design = 'filled',\n intent = 'neutral',\n isClosable = true,\n icon,\n action,\n compact,\n priority = 'low',\n}: ToastTriggerProps) {\n const toastManager = useToastManager()\n\n const Component = asChild ? Slot : 'button'\n\n function createToast(e: React.MouseEvent<HTMLButtonElement>) {\n onClick?.(e)\n toastManager.add({\n title,\n description,\n timeout,\n priority,\n data: {\n design,\n intent,\n isClosable,\n ...(icon && { icon }),\n action,\n ...(compact !== undefined && { compact }),\n },\n })\n }\n\n return (\n <Component {...(!asChild && { type: 'button' })} onClick={createToast}>\n {children}\n </Component>\n )\n}\n\nexport type ToastManager = ReturnType<typeof BaseToast.createToastManager>\n\nexport const createToastManager: () => ToastManager = BaseToast.createToastManager\n\nexport { useToastManager }\n"],"names":["toastStyles","cva","getButtonIntent","intent","getCloseButtonIntent","getActionProps","action","toastDesign","toastIntent","design","className","onClick","rest","cx","getToastRootProps","toast","getDefaultIcon","InfoFill","ValidFill","WarningFill","AlertFill","Toast","ToastIcon","_design","isClosable","closeLabel","compact","ActionButton","BaseToast","actionProps","rootProps","icon","getCloseButton","jsx","IconButton","Icon","Close","renderTitle","title","hasDescription","renderDescription","description","jsxs","Button","useToastManager","baseToastManager","closeAll","React","id","ToastList","toasts","ToastProvider","children","limit","props","ToastTrigger","asChild","timeout","priority","toastManager","Component","Slot","createToast","e","createToastManager"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/toast/Toast.styles.ts","../../src/toast/Toast.tsx","../../src/toast/useToastManager.ts","../../src/toast/index.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority'\n\nexport const toastStyles = cva(\n [\n 'gap-lg p-md flex w-max !w-[min(400px,calc(100vw-2rem))] flex-col rounded-lg border-md',\n 'absolute right-0 bottom-0 left-auto mr-0',\n 'bg-clip-padding shadow-md select-none',\n 'focus-visible:ring-focus focus-visible:ring-2 focus-visible:outline-none',\n 'z-[calc(1000-var(--toast-index))]',\n \"after:absolute after:bottom-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n // Stack effect while not focused\n '[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+calc(min(var(--toast-index),10)*-16px)))_scale(calc(max(0,1-(var(--toast-index)*0.1))))]',\n // Scale and translate\n 'ease-standard [transition-property:opacity,transform]',\n 'duration-400',\n // Present when the toast is animating in.\n 'data-[starting-style]:[transform:translateY(150%)]',\n // Expanded: Present when the toast is expanded in the viewport.\n 'data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y)))]',\n // Present when the toast is animating out.\n 'data-[ending-style]:duration-250',\n 'data-[ending-style]:opacity-0',\n 'data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]',\n 'data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n 'data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n // Limited: Present when the toast was removed due to exceeding the limit.\n 'data-[limited]:opacity-0',\n ],\n {\n variants: {\n design: {\n filled: '',\n tinted: '',\n },\n intent: {\n success: '',\n alert: '',\n error: '',\n info: '',\n neutral: '',\n main: '',\n support: '',\n accent: '',\n surface: '',\n surfaceInverse: '',\n },\n },\n compoundVariants: [\n // Filled variants\n {\n design: 'filled',\n intent: 'success',\n class: ['bg-success text-on-success border-success'],\n },\n {\n design: 'filled',\n intent: 'alert',\n class: ['bg-alert text-on-alert border-alert'],\n },\n {\n design: 'filled',\n intent: 'error',\n class: ['bg-error text-on-error border-error'],\n },\n {\n design: 'filled',\n intent: 'info',\n class: ['bg-info text-on-info border-info'],\n },\n {\n design: 'filled',\n intent: 'neutral',\n class: ['bg-neutral text-on-neutral border-neutral'],\n },\n {\n design: 'filled',\n intent: 'main',\n class: ['bg-main text-on-main border-main'],\n },\n {\n design: 'filled',\n intent: 'support',\n class: ['bg-support text-on-support border-support'],\n },\n {\n design: 'filled',\n intent: 'accent',\n class: ['bg-accent text-on-accent border-accent'],\n },\n {\n design: 'filled',\n intent: 'surface',\n class: ['bg-surface text-on-surface border-surface'],\n },\n {\n design: 'filled',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse border-surface-inverse'],\n },\n\n // Tinted variants\n {\n design: 'tinted',\n intent: 'success',\n class: ['bg-success-container text-on-success-container border-success'],\n },\n {\n design: 'tinted',\n intent: 'alert',\n class: ['bg-alert-container text-on-alert-container border-alert'],\n },\n {\n design: 'tinted',\n intent: 'error',\n class: ['bg-error-container text-on-error-container border-error'],\n },\n {\n design: 'tinted',\n intent: 'info',\n class: ['bg-info-container text-on-info-container border-info'],\n },\n {\n design: 'tinted',\n intent: 'neutral',\n class: ['bg-neutral-container text-on-neutral-container border-neutral'],\n },\n {\n design: 'tinted',\n intent: 'main',\n class: ['bg-main-container text-on-main-container border-main'],\n },\n {\n design: 'tinted',\n intent: 'support',\n class: ['bg-support-container text-on-support-container border-support'],\n },\n {\n design: 'tinted',\n intent: 'accent',\n class: ['bg-accent-container text-on-accent-container border-accent'],\n },\n {\n design: 'tinted',\n intent: 'surface',\n class: ['bg-surface text-on-surface border-surface'],\n },\n {\n design: 'tinted',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse border-surface-inverse'],\n },\n ],\n defaultVariants: {\n design: 'filled',\n intent: 'neutral',\n },\n }\n)\n\nexport const snackbarItemVariantContent = cva(\n [\n 'inline-grid items-center',\n 'col-start-1 row-start-1',\n 'pl-md pr-lg', // applying padding on the parent prevents VoiceOver on Safari from reading snackbar content 🤷\n ],\n {\n variants: {\n /**\n * Force action button displaying on a new line\n * @default false\n */\n actionOnNewline: {\n true: [\n 'grid-rows-[52px_1fr_52px]',\n 'grid-cols-[min-content_1fr_min-content]',\n \"[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']\",\n ],\n false: [\n 'grid-cols-[min-content_1fr_min-content_min-content]',\n \"[grid-template-areas:'icon_message_action_close']\",\n ],\n },\n },\n defaultVariants: {\n actionOnNewline: false,\n },\n }\n)\n\nexport type ToastVariantProps = VariantProps<typeof toastStyles>\nexport type SnackbarItemVariantContentProps = VariantProps<typeof snackbarItemVariantContent>\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Button, ButtonProps } from '@spark-ui/components/button'\nimport { Icon } from '@spark-ui/components/icon'\nimport { IconButton } from '@spark-ui/components/icon-button'\nimport { AlertFill } from '@spark-ui/icons/AlertFill'\nimport { Close } from '@spark-ui/icons/Close'\nimport { InfoFill } from '@spark-ui/icons/InfoFill'\nimport { ValidFill } from '@spark-ui/icons/ValidFill'\nimport { WarningFill } from '@spark-ui/icons/WarningFill'\nimport { cx } from 'class-variance-authority'\n\nimport { toastStyles } from './Toast.styles'\nimport type { ToastData, ToastDesign, ToastIntent, ToastObject } from './types'\n\nfunction getButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surface'\n if (intent === 'surface') return 'surfaceInverse'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nfunction getCloseButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surfaceInverse'\n if (intent === 'surface') return 'surface'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nconst getActionProps = (\n action: ToastData['action'],\n { toastDesign, toastIntent }: { toastDesign?: ToastDesign; toastIntent?: ToastIntent }\n): ButtonProps => {\n if (!action) return {}\n\n const { design, intent, className, onClick, ...rest } = action\n\n return {\n design: design ?? toastDesign,\n intent: intent ?? getButtonIntent(toastIntent),\n className: cx('ml-auto', className),\n onClick,\n ...rest,\n }\n}\n\nconst getToastRootProps = (toast: ToastObject, design: ToastDesign, intent: ToastIntent) => ({\n swipeDirection: ['down', 'right'] as ['down', 'right'],\n toast,\n className: cx(toastStyles({ design, intent })),\n style: {\n ['--gap' as string]: 'var(--spacing-md)',\n ['--offset-y' as string]:\n 'calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y))',\n },\n})\n\nfunction getDefaultIcon(intent: ToastIntent): React.ReactNode {\n switch (intent) {\n case 'info':\n return <InfoFill />\n case 'success':\n return <ValidFill />\n case 'alert':\n return <WarningFill />\n case 'error':\n return <AlertFill />\n case 'main':\n case 'support':\n case 'accent':\n case 'neutral':\n case 'surface':\n case 'surfaceInverse':\n default:\n return <InfoFill />\n }\n}\n\nexport function Toast({ toast }: { toast: ToastObject }) {\n const {\n icon: ToastIcon,\n intent = 'info',\n design: _design, // deprecated prop, ignored\n action,\n isClosable,\n closeLabel = 'Close',\n compact = false,\n } = toast.data ?? {}\n\n // Always use 'tinted' design regardless of prop value\n const design = 'tinted' as const\n\n const ActionButton = action?.close ? BaseToast.Close : BaseToast.Action\n const actionProps = getActionProps(action, { toastDesign: design, toastIntent: intent })\n const rootProps = getToastRootProps(toast, design, intent)\n\n // Use provided icon or default icon based on intent\n const icon = ToastIcon ?? getDefaultIcon(intent)\n\n const getCloseButton = (className?: string) => {\n if (!isClosable) return null\n\n return (\n <BaseToast.Close\n className={className}\n render={\n <IconButton\n aria-label={closeLabel}\n design={design}\n intent={getCloseButtonIntent(intent)}\n size=\"md\"\n />\n }\n >\n <Icon>\n <Close />\n </Icon>\n </BaseToast.Close>\n )\n }\n\n const renderTitle = () => {\n // Check ToastData first for JSX, then fallback to toast.title (string)\n const title = toast.data?.title ?? toast.title\n const hasDescription = !!(toast.data?.description ?? toast.description)\n\n if (typeof title !== 'string' && title !== undefined) {\n return (\n <BaseToast.Title\n className={hasDescription ? 'text-headline-2' : 'text-body-1'}\n render={<div />}\n >\n {title}\n </BaseToast.Title>\n )\n }\n\n return <BaseToast.Title className={hasDescription ? 'text-headline-2' : 'text-body-1'} />\n }\n\n const renderDescription = () => {\n // Check ToastData first for JSX, then fallback to toast.description (string)\n const description = toast.data?.description ?? toast.description\n\n if (!description) return null\n\n if (typeof description !== 'string') {\n return (\n <BaseToast.Description className=\"text-body-1\" render={<div />}>\n {description}\n </BaseToast.Description>\n )\n }\n\n return <BaseToast.Description className=\"text-body-1\" />\n }\n\n return (\n <BaseToast.Root key={toast.id} {...rootProps}>\n <div className={cx('flex', compact ? 'gap-lg items-center' : 'gap-md flex-col')}>\n <div className=\"gap-lg p-md flex grow items-center\">\n {/* Icon */}\n <Icon size=\"md\">{icon}</Icon>\n {/* Title and description */}\n <div\n className={cx(\n 'gap-sm flex flex-col',\n compact && 'flex-1',\n !compact && isClosable && 'pr-3xl'\n )}\n >\n {renderTitle()}\n {renderDescription()}\n </div>\n </div>\n\n <div className={cx('flex')}>\n {/* Action button */}\n {action && (\n <ActionButton render={<Button {...actionProps} />}>{action.label}</ActionButton>\n )}\n {/* Close button - compact layout only */}\n {compact && getCloseButton()}\n </div>\n\n {/* Close button - default layout only */}\n {!compact && getCloseButton('top-md right-md absolute')}\n </div>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport * as React from 'react'\n\nimport type { UseToastManagerReturnValue } from './types'\n\nexport function useToastManager(): UseToastManagerReturnValue {\n const baseToastManager = BaseToast.useToastManager()\n\n const closeAll = React.useCallback((): void => {\n baseToastManager.toasts.forEach(({ id }) => baseToastManager.close(id))\n }, [baseToastManager])\n\n return {\n ...baseToastManager,\n closeAll,\n } as UseToastManagerReturnValue\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Slot } from '@spark-ui/components/slot'\nimport { cx } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { Toast } from './Toast'\nimport type { ToastData, ToastObject } from './types'\nimport { useToastManager } from './useToastManager'\n\nexport * from './types'\n\nfunction ToastList() {\n const { toasts } = useToastManager()\n\n return toasts.map(toast => <Toast key={toast.id} toast={toast} />)\n}\n\ninterface ToastProviderProps extends React.ComponentProps<typeof BaseToast.Provider> {\n children: React.ReactNode\n}\n\nexport function ToastProvider({ children, limit = 3, ...props }: ToastProviderProps) {\n return (\n <BaseToast.Provider limit={limit} {...props}>\n <BaseToast.Portal>\n <BaseToast.Viewport\n className={cx(\n 'z-toast right-lg bottom-lg text-on-surfa- fixed top-auto mx-auto flex w-fit flex-col items-end'\n )}\n >\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n {children}\n </BaseToast.Provider>\n )\n}\n\ninterface ToastTriggerProps\n extends Omit<React.ComponentPropsWithRef<'button'>, 'title'>,\n Pick<ToastObject, 'priority'>,\n Pick<ToastData, 'design' | 'intent' | 'icon' | 'isClosable' | 'action' | 'compact'> {\n children: React.ReactNode\n asChild?: boolean\n title: string | React.ReactNode\n description?: string | React.ReactNode\n timeout?: number\n}\n\nexport function ToastTrigger({\n children,\n onClick,\n asChild = false,\n title,\n description,\n timeout = 5000,\n design = 'filled',\n intent = 'neutral',\n isClosable = true,\n icon,\n action,\n compact,\n priority = 'low',\n}: ToastTriggerProps) {\n const toastManager = useToastManager()\n\n const Component = asChild ? Slot : 'button'\n\n function createToast(e: React.MouseEvent<HTMLButtonElement>) {\n onClick?.(e)\n toastManager.add({\n title,\n description,\n timeout,\n priority,\n data: {\n design,\n intent,\n isClosable,\n ...(icon && { icon }),\n action,\n ...(compact !== undefined && { compact }),\n },\n })\n }\n\n return (\n <Component {...(!asChild && { type: 'button' })} onClick={createToast}>\n {children}\n </Component>\n )\n}\n\nexport type ToastManager = ReturnType<typeof BaseToast.createToastManager>\n\nexport const createToastManager: () => ToastManager = BaseToast.createToastManager\n\nexport { useToastManager }\n"],"names":["toastStyles","cva","getButtonIntent","intent","getCloseButtonIntent","getActionProps","action","toastDesign","toastIntent","design","className","onClick","rest","cx","getToastRootProps","toast","getDefaultIcon","InfoFill","ValidFill","WarningFill","AlertFill","Toast","ToastIcon","_design","isClosable","closeLabel","compact","ActionButton","BaseToast","actionProps","rootProps","icon","getCloseButton","jsx","IconButton","Icon","Close","renderTitle","title","hasDescription","renderDescription","description","jsxs","Button","useToastManager","baseToastManager","closeAll","React","id","ToastList","toasts","ToastProvider","children","limit","props","ToastTrigger","asChild","timeout","priority","toastManager","Component","Slot","createToast","e","createToastManager"],"mappings":";;;;;;;;;;;;;AAEO,MAAMA,IAAcC;AAAA,EACzB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MAAA;AAAA,MAEV,QAAQ;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,IAEF,kBAAkB;AAAA;AAAA,MAEhB;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,2CAA2C;AAAA,MAAA;AAAA,MAErD;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,qCAAqC;AAAA,MAAA;AAAA,MAE/C;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,qCAAqC;AAAA,MAAA;AAAA,MAE/C;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,kCAAkC;AAAA,MAAA;AAAA,MAE5C;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,2CAA2C;AAAA,MAAA;AAAA,MAErD;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,kCAAkC;AAAA,MAAA;AAAA,MAE5C;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,2CAA2C;AAAA,MAAA;AAAA,MAErD;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,wCAAwC;AAAA,MAAA;AAAA,MAElD;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,2CAA2C;AAAA,MAAA;AAAA,MAErD;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,mEAAmE;AAAA,MAAA;AAAA;AAAA,MAI7E;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,+DAA+D;AAAA,MAAA;AAAA,MAEzE;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,yDAAyD;AAAA,MAAA;AAAA,MAEnE;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,yDAAyD;AAAA,MAAA;AAAA,MAEnE;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,sDAAsD;AAAA,MAAA;AAAA,MAEhE;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,+DAA+D;AAAA,MAAA;AAAA,MAEzE;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,sDAAsD;AAAA,MAAA;AAAA,MAEhE;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,+DAA+D;AAAA,MAAA;AAAA,MAEzE;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,4DAA4D;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,2CAA2C;AAAA,MAAA;AAAA,MAErD;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,CAAC,mEAAmE;AAAA,MAAA;AAAA,IAC7E;AAAA,IAEF,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ;AAE0CA;AAAA,EACxC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,MAKR,iBAAiB;AAAA,QACf,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,OAAO;AAAA,UACL;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,IAEF,iBAAiB;AAAA,MACf,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAEJ;AC7KA,SAASC,EAAgBC,GAA6C;AACpE,SAAIA,MAAW,mBAAyB,YACpCA,MAAW,YAAkB,mBAC7BA,MAAW,UAAgB,WAExBA;AACT;AAEA,SAASC,EAAqBD,GAA6C;AACzE,SAAIA,MAAW,mBAAyB,mBACpCA,MAAW,YAAkB,YAC7BA,MAAW,UAAgB,WAExBA;AACT;AAEA,MAAME,IAAiB,CACrBC,GACA,EAAE,aAAAC,GAAa,aAAAC,QACC;AAChB,MAAI,CAACF,EAAQ,QAAO,CAAA;AAEpB,QAAM,EAAE,QAAAG,GAAQ,QAAAN,GAAQ,WAAAO,GAAW,SAAAC,GAAS,GAAGC,MAASN;AAExD,SAAO;AAAA,IACL,QAAQG,KAAUF;AAAA,IAClB,QAAQJ,KAAUD,EAAgBM,CAAW;AAAA,IAC7C,WAAWK,EAAG,WAAWH,CAAS;AAAA,IAClC,SAAAC;AAAA,IACA,GAAGC;AAAA,EAAA;AAEP,GAEME,IAAoB,CAACC,GAAoBN,GAAqBN,OAAyB;AAAA,EAC3F,gBAAgB,CAAC,QAAQ,OAAO;AAAA,EAChC,OAAAY;AAAA,EACA,WAAWF,EAAGb,EAAY,EAAE,QAAAS,GAAQ,QAAAN,EAAA,CAAQ,CAAC;AAAA,EAC7C,OAAO;AAAA,IACJ,SAAoB;AAAA,IACpB,cACC;AAAA,EAAA;AAEN;AAEA,SAASa,EAAeb,GAAsC;AAC5D,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,+BAAQc,GAAA,EAAS;AAAA,IACnB,KAAK;AACH,+BAAQC,GAAA,EAAU;AAAA,IACpB,KAAK;AACH,+BAAQC,GAAA,EAAY;AAAA,IACtB,KAAK;AACH,+BAAQC,GAAA,EAAU;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL;AACE,+BAAQH,GAAA,EAAS;AAAA,EAAA;AAEvB;AAEO,SAASI,EAAM,EAAE,OAAAN,KAAiC;AACvD,QAAM;AAAA,IACJ,MAAMO;AAAA,IACN,QAAAnB,IAAS;AAAA,IACT,QAAQoB;AAAA;AAAA,IACR,QAAAjB;AAAA,IACA,YAAAkB;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,SAAAC,IAAU;AAAA,EAAA,IACRX,EAAM,QAAQ,CAAA,GAGZN,IAAS,UAETkB,IAAerB,GAAQ,QAAQsB,EAAU,QAAQA,EAAU,QAC3DC,IAAcxB,EAAeC,GAAQ,EAAE,aAAaG,GAAQ,aAAaN,GAAQ,GACjF2B,IAAYhB,EAAkBC,GAAON,GAAQN,CAAM,GAGnD4B,IAAOT,KAAaN,EAAeb,CAAM,GAEzC6B,IAAiB,CAACtB,MACjBc,IAGH,gBAAAS;AAAA,IAACL,EAAU;AAAA,IAAV;AAAA,MACC,WAAAlB;AAAA,MACA,QACE,gBAAAuB;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,cAAYT;AAAA,UACZ,QAAAhB;AAAA,UACA,QAAQL,EAAqBD,CAAM;AAAA,UACnC,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAIT,UAAA,gBAAA8B,EAACE,GAAA,EACC,UAAA,gBAAAF,EAACG,GAAA,CAAA,CAAM,EAAA,CACT;AAAA,IAAA;AAAA,EAAA,IAhBoB,MAqBpBC,IAAc,MAAM;AAExB,UAAMC,IAAQvB,EAAM,MAAM,SAASA,EAAM,OACnCwB,IAAiB,CAAC,EAAExB,EAAM,MAAM,eAAeA,EAAM;AAE3D,WAAI,OAAOuB,KAAU,YAAYA,MAAU,SAEvC,gBAAAL;AAAA,MAACL,EAAU;AAAA,MAAV;AAAA,QACC,WAAWW,IAAiB,oBAAoB;AAAA,QAChD,0BAAS,OAAA,EAAI;AAAA,QAEZ,UAAAD;AAAA,MAAA;AAAA,IAAA,sBAKCV,EAAU,OAAV,EAAgB,WAAWW,IAAiB,oBAAoB,eAAe;AAAA,EACzF,GAEMC,IAAoB,MAAM;AAE9B,UAAMC,IAAc1B,EAAM,MAAM,eAAeA,EAAM;AAErD,WAAK0B,IAED,OAAOA,KAAgB,WAEvB,gBAAAR,EAACL,EAAU,aAAV,EAAsB,WAAU,eAAc,QAAQ,gBAAAK,EAAC,OAAA,CAAA,CAAI,GACzD,UAAAQ,EAAA,CACH,IAIG,gBAAAR,EAACL,EAAU,aAAV,EAAsB,WAAU,cAAA,CAAc,IAV7B;AAAA,EAW3B;AAEA,SACE,gBAAAK,EAACL,EAAU,MAAV,EAA+B,GAAGE,GACjC,UAAA,gBAAAY,EAAC,OAAA,EAAI,WAAW7B,EAAG,QAAQa,IAAU,wBAAwB,iBAAiB,GAC5E,UAAA;AAAA,IAAA,gBAAAgB,EAAC,OAAA,EAAI,WAAU,sCAEb,UAAA;AAAA,MAAA,gBAAAT,EAACE,GAAA,EAAK,MAAK,MAAM,UAAAJ,GAAK;AAAA,MAEtB,gBAAAW;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW7B;AAAA,YACT;AAAA,YACAa,KAAW;AAAA,YACX,CAACA,KAAWF,KAAc;AAAA,UAAA;AAAA,UAG3B,UAAA;AAAA,YAAAa,EAAA;AAAA,YACAG,EAAA;AAAA,UAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,IACrB,GACF;AAAA,IAEA,gBAAAE,EAAC,OAAA,EAAI,WAAW7B,EAAG,MAAM,GAEtB,UAAA;AAAA,MAAAP,KACC,gBAAA2B,EAACN,KAAa,QAAQ,gBAAAM,EAACU,KAAQ,GAAGd,EAAA,CAAa,GAAK,UAAAvB,EAAO,MAAA,CAAM;AAAA,MAGlEoB,KAAWM,EAAA;AAAA,IAAe,GAC7B;AAAA,IAGC,CAACN,KAAWM,EAAe,0BAA0B;AAAA,EAAA,GACxD,EAAA,GA7BmBjB,EAAM,EA8B3B;AAEJ;AC1LO,SAAS6B,IAA8C;AAC5D,QAAMC,IAAmBjB,EAAU,gBAAA,GAE7BkB,IAAWC,EAAM,YAAY,MAAY;AAC7C,IAAAF,EAAiB,OAAO,QAAQ,CAAC,EAAE,IAAAG,QAASH,EAAiB,MAAMG,CAAE,CAAC;AAAA,EACxE,GAAG,CAACH,CAAgB,CAAC;AAErB,SAAO;AAAA,IACL,GAAGA;AAAA,IACH,UAAAC;AAAA,EAAA;AAEJ;ACLA,SAASG,IAAY;AACnB,QAAM,EAAE,QAAAC,EAAA,IAAWN,EAAA;AAEnB,SAAOM,EAAO,IAAI,CAAAnC,MAAS,gBAAAkB,EAACZ,KAAqB,OAAAN,EAAA,GAAVA,EAAM,EAAkB,CAAE;AACnE;AAMO,SAASoC,GAAc,EAAE,UAAAC,GAAU,OAAAC,IAAQ,GAAG,GAAGC,KAA6B;AACnF,2BACG1B,EAAU,UAAV,EAAmB,OAAAyB,GAAe,GAAGC,GACpC,UAAA;AAAA,IAAA,gBAAArB,EAACL,EAAU,QAAV,EACC,UAAA,gBAAAK;AAAA,MAACL,EAAU;AAAA,MAAV;AAAA,QACC,WAAWf;AAAA,UACT;AAAA,QAAA;AAAA,QAGF,4BAACoC,GAAA,CAAA,CAAU;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,IACCG;AAAA,EAAA,GACH;AAEJ;AAaO,SAASG,GAAa;AAAA,EAC3B,UAAAH;AAAA,EACA,SAAAzC;AAAA,EACA,SAAA6C,IAAU;AAAA,EACV,OAAAlB;AAAA,EACA,aAAAG;AAAA,EACA,SAAAgB,IAAU;AAAA,EACV,QAAAhD,IAAS;AAAA,EACT,QAAAN,IAAS;AAAA,EACT,YAAAqB,IAAa;AAAA,EACb,MAAAO;AAAA,EACA,QAAAzB;AAAA,EACA,SAAAoB;AAAA,EACA,UAAAgC,IAAW;AACb,GAAsB;AACpB,QAAMC,IAAef,EAAA,GAEfgB,IAAYJ,IAAUK,IAAO;AAEnC,WAASC,EAAYC,GAAwC;AAC3D,IAAApD,IAAUoD,CAAC,GACXJ,EAAa,IAAI;AAAA,MACf,OAAArB;AAAA,MACA,aAAAG;AAAA,MACA,SAAAgB;AAAA,MACA,UAAAC;AAAA,MACA,MAAM;AAAA,QACJ,QAAAjD;AAAA,QACA,QAAAN;AAAA,QACA,YAAAqB;AAAA,QACA,GAAIO,KAAQ,EAAE,MAAAA,EAAA;AAAA,QACd,QAAAzB;AAAA,QACA,GAAIoB,MAAY,UAAa,EAAE,SAAAA,EAAA;AAAA,MAAQ;AAAA,IACzC,CACD;AAAA,EACH;AAEA,SACE,gBAAAO,EAAC2B,GAAA,EAAW,GAAI,CAACJ,KAAW,EAAE,MAAM,YAAa,SAASM,GACvD,UAAAV,EAAA,CACH;AAEJ;AAIO,MAAMY,KAAyCpC,EAAU;"}
@@ -1,7 +1,7 @@
1
1
  import { Toast as BaseToast } from '@base-ui/react/toast';
2
2
  import { ButtonProps } from '../button';
3
3
  import * as React from 'react';
4
- export type ToastIntent = /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'main' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'support' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'accent' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'basic' | 'success' | 'alert' | 'error' | 'info' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'neutral' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'surface' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'surfaceInverse';
4
+ export type ToastIntent = /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'main' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'support' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'accent' | 'success' | 'alert' | 'error' | 'info' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'neutral' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'surface' | /** @deprecated Use 'info', 'success', 'alert', or 'error' instead */ 'surfaceInverse';
5
5
  export type ToastDesign = 'tinted' | 'filled';
6
6
  export interface ToastData {
7
7
  icon?: React.ReactNode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spark-ui/components",
3
- "version": "16.2.3",
3
+ "version": "17.0.1-beta.0",
4
4
  "license": "MIT",
5
5
  "description": "Spark (Leboncoin design system) components.",
6
6
  "exports": {
@@ -54,9 +54,9 @@
54
54
  "@react-aria/toast": "^3.0.0-beta.18",
55
55
  "@react-stately/numberfield": "3.9.11",
56
56
  "@react-stately/toast": "^3.0.0-beta.7",
57
- "@spark-ui/hooks": "^16.2.3",
58
- "@spark-ui/icons": "^16.2.3",
59
- "@spark-ui/internal-utils": "^16.2.3",
57
+ "@spark-ui/hooks": "^17.0.1-beta.0",
58
+ "@spark-ui/icons": "^17.0.1-beta.0",
59
+ "@spark-ui/internal-utils": "^17.0.1-beta.0",
60
60
  "@zag-js/pagination": "1.30.0",
61
61
  "@zag-js/react": "1.30.0",
62
62
  "class-variance-authority": "0.7.1",