@pearpages/pulp-react 0.0.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 (286) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/dist/ListboxOptions-DLsT-dkV.d.ts +11 -0
  4. package/dist/ToggleField-C-qKSgHh.d.ts +3 -0
  5. package/dist/accordion.css +90 -0
  6. package/dist/accordion.css.map +1 -0
  7. package/dist/accordion.d.ts +71 -0
  8. package/dist/accordion.js +6 -0
  9. package/dist/accordion.js.map +1 -0
  10. package/dist/alert.css +246 -0
  11. package/dist/alert.css.map +1 -0
  12. package/dist/alert.d.ts +46 -0
  13. package/dist/alert.js +10 -0
  14. package/dist/alert.js.map +1 -0
  15. package/dist/badge.css +89 -0
  16. package/dist/badge.css.map +1 -0
  17. package/dist/badge.d.ts +38 -0
  18. package/dist/badge.js +5 -0
  19. package/dist/badge.js.map +1 -0
  20. package/dist/button.css +162 -0
  21. package/dist/button.css.map +1 -0
  22. package/dist/button.d.ts +61 -0
  23. package/dist/button.js +8 -0
  24. package/dist/button.js.map +1 -0
  25. package/dist/calendar.css +128 -0
  26. package/dist/calendar.css.map +1 -0
  27. package/dist/calendar.d.ts +48 -0
  28. package/dist/calendar.js +6 -0
  29. package/dist/calendar.js.map +1 -0
  30. package/dist/card.css +66 -0
  31. package/dist/card.css.map +1 -0
  32. package/dist/card.d.ts +69 -0
  33. package/dist/card.js +5 -0
  34. package/dist/card.js.map +1 -0
  35. package/dist/checkbox.css +106 -0
  36. package/dist/checkbox.css.map +1 -0
  37. package/dist/checkbox.d.ts +41 -0
  38. package/dist/checkbox.js +7 -0
  39. package/dist/checkbox.js.map +1 -0
  40. package/dist/chunk-2PXTVZ7H.js +95 -0
  41. package/dist/chunk-2PXTVZ7H.js.map +1 -0
  42. package/dist/chunk-2ZP4ZBI5.js +43 -0
  43. package/dist/chunk-2ZP4ZBI5.js.map +1 -0
  44. package/dist/chunk-3GWESUGD.js +28 -0
  45. package/dist/chunk-3GWESUGD.js.map +1 -0
  46. package/dist/chunk-4HRNRTXI.js +25 -0
  47. package/dist/chunk-4HRNRTXI.js.map +1 -0
  48. package/dist/chunk-5SBKZS56.js +56 -0
  49. package/dist/chunk-5SBKZS56.js.map +1 -0
  50. package/dist/chunk-6I26MMQF.js +19 -0
  51. package/dist/chunk-6I26MMQF.js.map +1 -0
  52. package/dist/chunk-75GTNRBH.js +45 -0
  53. package/dist/chunk-75GTNRBH.js.map +1 -0
  54. package/dist/chunk-7DS4I7OJ.js +30 -0
  55. package/dist/chunk-7DS4I7OJ.js.map +1 -0
  56. package/dist/chunk-ASNTNTJW.js +27 -0
  57. package/dist/chunk-ASNTNTJW.js.map +1 -0
  58. package/dist/chunk-ASOQ2MVR.js +19 -0
  59. package/dist/chunk-ASOQ2MVR.js.map +1 -0
  60. package/dist/chunk-AWQHULJC.js +31 -0
  61. package/dist/chunk-AWQHULJC.js.map +1 -0
  62. package/dist/chunk-BBV4L5WO.js +43 -0
  63. package/dist/chunk-BBV4L5WO.js.map +1 -0
  64. package/dist/chunk-CZBCGLEM.js +9 -0
  65. package/dist/chunk-CZBCGLEM.js.map +1 -0
  66. package/dist/chunk-DWE374JX.js +65 -0
  67. package/dist/chunk-DWE374JX.js.map +1 -0
  68. package/dist/chunk-DXOOW6Q6.js +159 -0
  69. package/dist/chunk-DXOOW6Q6.js.map +1 -0
  70. package/dist/chunk-F3OFZGGE.js +116 -0
  71. package/dist/chunk-F3OFZGGE.js.map +1 -0
  72. package/dist/chunk-FH54XQ35.js +125 -0
  73. package/dist/chunk-FH54XQ35.js.map +1 -0
  74. package/dist/chunk-FXRSZUDH.js +38 -0
  75. package/dist/chunk-FXRSZUDH.js.map +1 -0
  76. package/dist/chunk-GTTXRDXV.js +181 -0
  77. package/dist/chunk-GTTXRDXV.js.map +1 -0
  78. package/dist/chunk-I4KC4V6A.js +31 -0
  79. package/dist/chunk-I4KC4V6A.js.map +1 -0
  80. package/dist/chunk-I5OZ63W7.js +50 -0
  81. package/dist/chunk-I5OZ63W7.js.map +1 -0
  82. package/dist/chunk-IDNGNQNV.js +41 -0
  83. package/dist/chunk-IDNGNQNV.js.map +1 -0
  84. package/dist/chunk-J5S2HVHO.js +67 -0
  85. package/dist/chunk-J5S2HVHO.js.map +1 -0
  86. package/dist/chunk-K5QGGQOV.js +84 -0
  87. package/dist/chunk-K5QGGQOV.js.map +1 -0
  88. package/dist/chunk-KPQGS4PG.js +77 -0
  89. package/dist/chunk-KPQGS4PG.js.map +1 -0
  90. package/dist/chunk-MI4QUKQS.js +8 -0
  91. package/dist/chunk-MI4QUKQS.js.map +1 -0
  92. package/dist/chunk-MRQWUCBA.js +57 -0
  93. package/dist/chunk-MRQWUCBA.js.map +1 -0
  94. package/dist/chunk-MXWXJZFS.js +48 -0
  95. package/dist/chunk-MXWXJZFS.js.map +1 -0
  96. package/dist/chunk-N7L66GMG.js +129 -0
  97. package/dist/chunk-N7L66GMG.js.map +1 -0
  98. package/dist/chunk-NAYFLTK6.js +32 -0
  99. package/dist/chunk-NAYFLTK6.js.map +1 -0
  100. package/dist/chunk-O6OBFL3Q.js +155 -0
  101. package/dist/chunk-O6OBFL3Q.js.map +1 -0
  102. package/dist/chunk-OGIQRHNF.js +52 -0
  103. package/dist/chunk-OGIQRHNF.js.map +1 -0
  104. package/dist/chunk-OUFAFINB.js +45 -0
  105. package/dist/chunk-OUFAFINB.js.map +1 -0
  106. package/dist/chunk-OXYP34CG.js +43 -0
  107. package/dist/chunk-OXYP34CG.js.map +1 -0
  108. package/dist/chunk-P5C2U5ZF.js +73 -0
  109. package/dist/chunk-P5C2U5ZF.js.map +1 -0
  110. package/dist/chunk-PM4YO67Q.js +53 -0
  111. package/dist/chunk-PM4YO67Q.js.map +1 -0
  112. package/dist/chunk-Q6J6BMSB.js +86 -0
  113. package/dist/chunk-Q6J6BMSB.js.map +1 -0
  114. package/dist/chunk-T76YSNTZ.js +33 -0
  115. package/dist/chunk-T76YSNTZ.js.map +1 -0
  116. package/dist/chunk-TGMDOQCL.js +53 -0
  117. package/dist/chunk-TGMDOQCL.js.map +1 -0
  118. package/dist/chunk-TVI5AXLE.js +41 -0
  119. package/dist/chunk-TVI5AXLE.js.map +1 -0
  120. package/dist/chunk-U6QRAD73.js +22 -0
  121. package/dist/chunk-U6QRAD73.js.map +1 -0
  122. package/dist/chunk-UX42PQLT.js +76 -0
  123. package/dist/chunk-UX42PQLT.js.map +1 -0
  124. package/dist/chunk-XDVS7HX7.js +100 -0
  125. package/dist/chunk-XDVS7HX7.js.map +1 -0
  126. package/dist/chunk-Y4TZA77G.js +57 -0
  127. package/dist/chunk-Y4TZA77G.js.map +1 -0
  128. package/dist/chunk-YUHS5S5Y.js +12 -0
  129. package/dist/chunk-YUHS5S5Y.js.map +1 -0
  130. package/dist/chunk-Z4PN6B2C.js +17 -0
  131. package/dist/chunk-Z4PN6B2C.js.map +1 -0
  132. package/dist/chunk-ZVDN3GRI.js +49 -0
  133. package/dist/chunk-ZVDN3GRI.js.map +1 -0
  134. package/dist/combobox.css +280 -0
  135. package/dist/combobox.css.map +1 -0
  136. package/dist/combobox.d.ts +75 -0
  137. package/dist/combobox.js +10 -0
  138. package/dist/combobox.js.map +1 -0
  139. package/dist/component-manifest.json +3370 -0
  140. package/dist/date-picker.css +267 -0
  141. package/dist/date-picker.css.map +1 -0
  142. package/dist/date-picker.d.ts +59 -0
  143. package/dist/date-picker.js +8 -0
  144. package/dist/date-picker.js.map +1 -0
  145. package/dist/dialog.css +62 -0
  146. package/dist/dialog.css.map +1 -0
  147. package/dist/dialog.d.ts +56 -0
  148. package/dist/dialog.js +3 -0
  149. package/dist/dialog.js.map +1 -0
  150. package/dist/field.css +28 -0
  151. package/dist/field.css.map +1 -0
  152. package/dist/field.d.ts +98 -0
  153. package/dist/field.js +5 -0
  154. package/dist/field.js.map +1 -0
  155. package/dist/floating-Bw-LN_QT.d.ts +5 -0
  156. package/dist/heading.css +30 -0
  157. package/dist/heading.css.map +1 -0
  158. package/dist/heading.d.ts +316 -0
  159. package/dist/heading.js +4 -0
  160. package/dist/heading.js.map +1 -0
  161. package/dist/icon-button.css +177 -0
  162. package/dist/icon-button.css.map +1 -0
  163. package/dist/icon-button.d.ts +29 -0
  164. package/dist/icon-button.js +9 -0
  165. package/dist/icon-button.js.map +1 -0
  166. package/dist/icon.css +25 -0
  167. package/dist/icon.css.map +1 -0
  168. package/dist/icon.d.ts +33 -0
  169. package/dist/icon.js +4 -0
  170. package/dist/icon.js.map +1 -0
  171. package/dist/index.css +2345 -0
  172. package/dist/index.css.map +1 -0
  173. package/dist/index.d.ts +42 -0
  174. package/dist/index.js +49 -0
  175. package/dist/index.js.map +1 -0
  176. package/dist/inline.css +63 -0
  177. package/dist/inline.css.map +1 -0
  178. package/dist/inline.d.ts +322 -0
  179. package/dist/inline.js +4 -0
  180. package/dist/inline.js.map +1 -0
  181. package/dist/listbox.css +95 -0
  182. package/dist/listbox.css.map +1 -0
  183. package/dist/listbox.d.ts +47 -0
  184. package/dist/listbox.js +7 -0
  185. package/dist/listbox.js.map +1 -0
  186. package/dist/menu.css +102 -0
  187. package/dist/menu.css.map +1 -0
  188. package/dist/menu.d.ts +76 -0
  189. package/dist/menu.js +9 -0
  190. package/dist/menu.js.map +1 -0
  191. package/dist/pagination.css +212 -0
  192. package/dist/pagination.css.map +1 -0
  193. package/dist/pagination.d.ts +52 -0
  194. package/dist/pagination.js +10 -0
  195. package/dist/pagination.js.map +1 -0
  196. package/dist/picker.css +209 -0
  197. package/dist/picker.css.map +1 -0
  198. package/dist/picker.d.ts +57 -0
  199. package/dist/picker.js +8 -0
  200. package/dist/picker.js.map +1 -0
  201. package/dist/popover.css +48 -0
  202. package/dist/popover.css.map +1 -0
  203. package/dist/popover.d.ts +68 -0
  204. package/dist/popover.js +7 -0
  205. package/dist/popover.js.map +1 -0
  206. package/dist/progress.css +83 -0
  207. package/dist/progress.css.map +1 -0
  208. package/dist/progress.d.ts +40 -0
  209. package/dist/progress.js +5 -0
  210. package/dist/progress.js.map +1 -0
  211. package/dist/radio.css +107 -0
  212. package/dist/radio.css.map +1 -0
  213. package/dist/radio.d.ts +68 -0
  214. package/dist/radio.js +6 -0
  215. package/dist/radio.js.map +1 -0
  216. package/dist/select.css +98 -0
  217. package/dist/select.css.map +1 -0
  218. package/dist/select.d.ts +39 -0
  219. package/dist/select.js +6 -0
  220. package/dist/select.js.map +1 -0
  221. package/dist/skeleton.css +59 -0
  222. package/dist/skeleton.css.map +1 -0
  223. package/dist/skeleton.d.ts +34 -0
  224. package/dist/skeleton.js +4 -0
  225. package/dist/skeleton.js.map +1 -0
  226. package/dist/slider.css +126 -0
  227. package/dist/slider.css.map +1 -0
  228. package/dist/slider.d.ts +61 -0
  229. package/dist/slider.js +5 -0
  230. package/dist/slider.js.map +1 -0
  231. package/dist/spinner.css +60 -0
  232. package/dist/spinner.css.map +1 -0
  233. package/dist/spinner.d.ts +34 -0
  234. package/dist/spinner.js +5 -0
  235. package/dist/spinner.js.map +1 -0
  236. package/dist/stack.css +60 -0
  237. package/dist/stack.css.map +1 -0
  238. package/dist/stack.d.ts +319 -0
  239. package/dist/stack.js +4 -0
  240. package/dist/stack.js.map +1 -0
  241. package/dist/switch.css +97 -0
  242. package/dist/switch.css.map +1 -0
  243. package/dist/switch.d.ts +35 -0
  244. package/dist/switch.js +7 -0
  245. package/dist/switch.js.map +1 -0
  246. package/dist/table.css +188 -0
  247. package/dist/table.css.map +1 -0
  248. package/dist/table.d.ts +137 -0
  249. package/dist/table.js +6 -0
  250. package/dist/table.js.map +1 -0
  251. package/dist/tabs.css +75 -0
  252. package/dist/tabs.css.map +1 -0
  253. package/dist/tabs.d.ts +73 -0
  254. package/dist/tabs.js +5 -0
  255. package/dist/tabs.js.map +1 -0
  256. package/dist/text-field.css +75 -0
  257. package/dist/text-field.css.map +1 -0
  258. package/dist/text-field.d.ts +43 -0
  259. package/dist/text-field.js +6 -0
  260. package/dist/text-field.js.map +1 -0
  261. package/dist/text.css +53 -0
  262. package/dist/text.css.map +1 -0
  263. package/dist/text.d.ts +331 -0
  264. package/dist/text.js +4 -0
  265. package/dist/text.js.map +1 -0
  266. package/dist/textarea.css +84 -0
  267. package/dist/textarea.css.map +1 -0
  268. package/dist/textarea.d.ts +40 -0
  269. package/dist/textarea.js +6 -0
  270. package/dist/textarea.js.map +1 -0
  271. package/dist/toast.css +300 -0
  272. package/dist/toast.css.map +1 -0
  273. package/dist/toast.d.ts +60 -0
  274. package/dist/toast.js +11 -0
  275. package/dist/toast.js.map +1 -0
  276. package/dist/tooltip.css +36 -0
  277. package/dist/tooltip.css.map +1 -0
  278. package/dist/tooltip.d.ts +34 -0
  279. package/dist/tooltip.js +5 -0
  280. package/dist/tooltip.js.map +1 -0
  281. package/dist/visually-hidden.css +15 -0
  282. package/dist/visually-hidden.css.map +1 -0
  283. package/dist/visually-hidden.d.ts +308 -0
  284. package/dist/visually-hidden.js +4 -0
  285. package/dist/visually-hidden.js.map +1 -0
  286. package/package.json +261 -0
package/dist/toast.css ADDED
@@ -0,0 +1,300 @@
1
+ /* src/icon/Icon.module.css */
2
+ @layer components {
3
+ .Icon_icon {
4
+ display: inline-flex;
5
+ flex: none;
6
+ inline-size: 1em;
7
+ block-size: 1em;
8
+ font-size: var(--icon-size-md);
9
+ vertical-align: middle;
10
+ &[data-size=sm] {
11
+ font-size: var(--icon-size-sm);
12
+ }
13
+ &[data-size=lg] {
14
+ font-size: var(--icon-size-lg);
15
+ }
16
+ &[data-size=inherit] {
17
+ font-size: inherit;
18
+ }
19
+ & > * {
20
+ inline-size: 100%;
21
+ block-size: 100%;
22
+ }
23
+ }
24
+ }
25
+
26
+ /* src/visually-hidden/VisuallyHidden.module.css */
27
+ @layer components {
28
+ .VisuallyHidden_root {
29
+ position: absolute;
30
+ inline-size: var(--visually-hidden-size);
31
+ block-size: var(--visually-hidden-size);
32
+ padding: 0;
33
+ margin: 0;
34
+ overflow: hidden;
35
+ clip-path: inset(50%);
36
+ white-space: nowrap;
37
+ border: 0;
38
+ }
39
+ }
40
+
41
+ /* src/spinner/Spinner.module.css */
42
+ @layer components {
43
+ .Spinner_spinner {
44
+ --_size: var(--spinner-size-md);
45
+ --_track: var(--spinner-track);
46
+ --_indicator: var(--spinner-indicator);
47
+ display: inline-flex;
48
+ flex: none;
49
+ inline-size: var(--_size);
50
+ block-size: var(--_size);
51
+ vertical-align: middle;
52
+ &[data-size=sm] {
53
+ --_size: var(--spinner-size-sm);
54
+ }
55
+ &[data-size=lg] {
56
+ --_size: var(--spinner-size-lg);
57
+ }
58
+ &[data-size=inherit] {
59
+ --_size: 1em;
60
+ }
61
+ &[data-tone=inherit] {
62
+ --_track: transparent;
63
+ --_indicator: currentcolor;
64
+ }
65
+ }
66
+ .Spinner_ring {
67
+ inline-size: 100%;
68
+ block-size: 100%;
69
+ border: var(--spinner-width) solid var(--_track);
70
+ border-block-start-color: var(--_indicator);
71
+ border-radius: var(--radius-full);
72
+ animation: Spinner_spin var(--spinner-duration) linear infinite;
73
+ }
74
+ @keyframes Spinner_spin {
75
+ to {
76
+ rotate: 1turn;
77
+ }
78
+ }
79
+ @media (prefers-reduced-motion: reduce) {
80
+ .Spinner_ring {
81
+ animation: none;
82
+ }
83
+ }
84
+ }
85
+
86
+ /* src/button/Button.module.css */
87
+ @layer components {
88
+ .Button_button {
89
+ display: inline-flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ gap: var(--button-gap);
93
+ min-block-size: var(--button-height-md);
94
+ padding-block: 0;
95
+ padding-inline: var(--button-padding-inline-md);
96
+ border: 1px solid transparent;
97
+ border-radius: var(--button-radius);
98
+ font-family: var(--button-font-family);
99
+ font-size: var(--button-font-size-md);
100
+ font-weight: var(--button-font-weight);
101
+ line-height: 1;
102
+ text-decoration: none;
103
+ white-space: nowrap;
104
+ cursor: pointer;
105
+ user-select: none;
106
+ transition:
107
+ background-color var(--button-motion-duration) var(--motion-easing-standard),
108
+ border-color var(--button-motion-duration) var(--motion-easing-standard),
109
+ color var(--button-motion-duration) var(--motion-easing-standard);
110
+ &:focus-visible {
111
+ outline: var(--button-focus-ring-width) solid var(--button-focus-ring);
112
+ outline-offset: var(--button-focus-ring-offset);
113
+ }
114
+ &:disabled,
115
+ &[aria-disabled=true] {
116
+ cursor: not-allowed;
117
+ opacity: 0.55;
118
+ }
119
+ &[data-loading] {
120
+ cursor: progress;
121
+ }
122
+ &[data-size=sm] {
123
+ min-block-size: var(--button-height-sm);
124
+ padding-inline: var(--button-padding-inline-sm);
125
+ font-size: var(--button-font-size-sm);
126
+ }
127
+ &[data-size=lg] {
128
+ min-block-size: var(--button-height-lg);
129
+ padding-inline: var(--button-padding-inline-lg);
130
+ font-size: var(--button-font-size-lg);
131
+ }
132
+ &[data-variant=primary] {
133
+ background-color: var(--button-primary-bg);
134
+ color: var(--button-primary-fg);
135
+ &:hover:not(:disabled, [aria-disabled=true]) {
136
+ background-color: var(--button-primary-bg-hover);
137
+ }
138
+ &:active:not(:disabled, [aria-disabled=true]) {
139
+ background-color: var(--button-primary-bg-active);
140
+ }
141
+ }
142
+ &[data-variant=secondary] {
143
+ background-color: var(--button-secondary-bg);
144
+ border-color: var(--button-secondary-border);
145
+ color: var(--button-secondary-fg);
146
+ &:hover:not(:disabled, [aria-disabled=true]) {
147
+ background-color: var(--button-secondary-bg-hover);
148
+ }
149
+ }
150
+ &[data-variant=ghost] {
151
+ background-color: transparent;
152
+ color: var(--button-ghost-fg);
153
+ &:hover:not(:disabled, [aria-disabled=true]) {
154
+ background-color: var(--button-ghost-bg-hover);
155
+ }
156
+ }
157
+ }
158
+ .Button_label {
159
+ display: inline-block;
160
+ }
161
+ }
162
+
163
+ /* src/icon-button/IconButton.module.css */
164
+ @layer components {
165
+ .IconButton_iconButton[data-icon-only] {
166
+ gap: 0;
167
+ inline-size: var(--icon-button-size-md);
168
+ padding-inline: 0;
169
+ &[data-size=sm] {
170
+ inline-size: var(--icon-button-size-sm);
171
+ }
172
+ &[data-size=lg] {
173
+ inline-size: var(--icon-button-size-lg);
174
+ }
175
+ }
176
+ }
177
+
178
+ /* src/alert/Alert.module.css */
179
+ @layer components {
180
+ .Alert_alert {
181
+ --_bg: var(--alert-info-bg);
182
+ --_accent: var(--alert-info-accent);
183
+ --_title: var(--alert-info-title);
184
+ display: flex;
185
+ align-items: flex-start;
186
+ gap: var(--alert-gap);
187
+ padding: var(--alert-padding);
188
+ border: var(--alert-border-width) solid var(--_accent);
189
+ border-inline-start-width: var(--alert-accent-width);
190
+ border-radius: var(--alert-radius);
191
+ background-color: var(--_bg);
192
+ color: var(--alert-fg);
193
+ font-size: var(--alert-font-size);
194
+ &[data-tone=info] {
195
+ --_bg: var(--alert-info-bg);
196
+ --_accent: var(--alert-info-accent);
197
+ --_title: var(--alert-info-title);
198
+ }
199
+ &[data-tone=success] {
200
+ --_bg: var(--alert-success-bg);
201
+ --_accent: var(--alert-success-accent);
202
+ --_title: var(--alert-success-title);
203
+ }
204
+ &[data-tone=warning] {
205
+ --_bg: var(--alert-warning-bg);
206
+ --_accent: var(--alert-warning-accent);
207
+ --_title: var(--alert-warning-title);
208
+ }
209
+ &[data-tone=error] {
210
+ --_bg: var(--alert-error-bg);
211
+ --_accent: var(--alert-error-accent);
212
+ --_title: var(--alert-error-title);
213
+ }
214
+ }
215
+ .Alert_icon {
216
+ flex: none;
217
+ color: var(--_accent);
218
+ }
219
+ .Alert_body {
220
+ display: flex;
221
+ flex: 1;
222
+ flex-direction: column;
223
+ gap: var(--space-1);
224
+ min-inline-size: 0;
225
+ }
226
+ .Alert_title {
227
+ margin: 0;
228
+ color: var(--_title);
229
+ font-weight: var(--alert-title-font-weight);
230
+ }
231
+ .Alert_content {
232
+ overflow-wrap: anywhere;
233
+ }
234
+ .Alert_action {
235
+ display: flex;
236
+ flex-wrap: wrap;
237
+ gap: var(--space-2);
238
+ margin-block-start: var(--space-1);
239
+ }
240
+ .Alert_dismiss {
241
+ flex: none;
242
+ margin-block: calc(-1 * var(--space-1));
243
+ margin-inline-end: calc(-1 * var(--space-2));
244
+ }
245
+ }
246
+
247
+ /* src/toast/Toast.module.css */
248
+ @layer components {
249
+ .Toast_region {
250
+ --_top: auto;
251
+ --_end: var(--toast-offset);
252
+ --_bottom: var(--toast-offset);
253
+ --_start: auto;
254
+ position: fixed;
255
+ z-index: var(--toast-layer);
256
+ inset: var(--_top) var(--_end) var(--_bottom) var(--_start);
257
+ inline-size: min(var(--toast-width), 100vw);
258
+ padding: 0;
259
+ pointer-events: none;
260
+ &[data-placement=top-end] {
261
+ --_top: var(--toast-offset);
262
+ --_bottom: auto;
263
+ }
264
+ &[data-placement=top-center] {
265
+ --_top: var(--toast-offset);
266
+ --_bottom: auto;
267
+ --_start: 0;
268
+ --_end: 0;
269
+ margin-inline: auto;
270
+ }
271
+ }
272
+ .Toast_list {
273
+ display: flex;
274
+ flex-direction: column;
275
+ gap: var(--toast-gap);
276
+ margin: 0;
277
+ padding: 0;
278
+ list-style: none;
279
+ }
280
+ .Toast_item {
281
+ pointer-events: auto;
282
+ animation: Toast_enter var(--toast-motion-duration) var(--motion-easing-standard);
283
+ }
284
+ .Toast_toast {
285
+ border-radius: var(--toast-radius);
286
+ box-shadow: var(--toast-shadow);
287
+ }
288
+ @keyframes Toast_enter {
289
+ from {
290
+ opacity: 0;
291
+ translate: 0 var(--space-2);
292
+ }
293
+ }
294
+ @media (prefers-reduced-motion: reduce) {
295
+ .Toast_item {
296
+ animation: none;
297
+ }
298
+ }
299
+ }
300
+ /*# sourceMappingURL=toast.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icon/Icon.module.css","../src/visually-hidden/VisuallyHidden.module.css","../src/spinner/Spinner.module.css","../src/button/Button.module.css","../src/icon-button/IconButton.module.css","../src/alert/Alert.module.css","../src/toast/Toast.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n","/* Every value is a token (--spinner-*). The ring is a border with one coloured side. */\n\n@layer components {\n .spinner {\n --_size: var(--spinner-size-md);\n --_track: var(--spinner-track);\n --_indicator: var(--spinner-indicator);\n\n display: inline-flex;\n flex: none;\n inline-size: var(--_size);\n block-size: var(--_size);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { --_size: var(--spinner-size-sm); }\n &[data-size=\"lg\"] { --_size: var(--spinner-size-lg); }\n &[data-size=\"inherit\"] { --_size: 1em; }\n\n &[data-tone=\"inherit\"] {\n --_track: transparent;\n --_indicator: currentcolor;\n }\n }\n\n .ring {\n inline-size: 100%;\n block-size: 100%;\n border: var(--spinner-width) solid var(--_track);\n border-block-start-color: var(--_indicator);\n border-radius: var(--radius-full);\n animation: spin var(--spinner-duration) linear infinite;\n }\n\n @keyframes spin {\n to {\n rotate: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ring {\n animation: none;\n }\n }\n}\n","/*\n * Every value is a token. State is expressed through data attributes so the\n * styling hooks survive a change of styling tool, and so tests and agents can\n * read state off the DOM.\n */\n\n@layer components {\n .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--button-gap);\n min-block-size: var(--button-height-md);\n padding-block: 0;\n padding-inline: var(--button-padding-inline-md);\n border: 1px solid transparent;\n border-radius: var(--button-radius);\n font-family: var(--button-font-family);\n font-size: var(--button-font-size-md);\n font-weight: var(--button-font-weight);\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n transition:\n background-color var(--button-motion-duration) var(--motion-easing-standard),\n border-color var(--button-motion-duration) var(--motion-easing-standard),\n color var(--button-motion-duration) var(--motion-easing-standard);\n\n &:focus-visible {\n outline: var(--button-focus-ring-width) solid var(--button-focus-ring);\n outline-offset: var(--button-focus-ring-offset);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-loading] {\n cursor: progress;\n }\n\n &[data-size=\"sm\"] {\n min-block-size: var(--button-height-sm);\n padding-inline: var(--button-padding-inline-sm);\n font-size: var(--button-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n min-block-size: var(--button-height-lg);\n padding-inline: var(--button-padding-inline-lg);\n font-size: var(--button-font-size-lg);\n }\n\n &[data-variant=\"primary\"] {\n background-color: var(--button-primary-bg);\n color: var(--button-primary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-active);\n }\n }\n\n &[data-variant=\"secondary\"] {\n background-color: var(--button-secondary-bg);\n border-color: var(--button-secondary-border);\n color: var(--button-secondary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-secondary-bg-hover);\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n color: var(--button-ghost-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-ghost-bg-hover);\n }\n }\n }\n\n .label {\n display: inline-block;\n }\n}\n","/* Squares a Button. Selectors carry the data attribute so they outrank Button's own size rules. */\n\n@layer components {\n .iconButton[data-icon-only] {\n gap: 0;\n inline-size: var(--icon-button-size-md);\n padding-inline: 0;\n\n &[data-size=\"sm\"] { inline-size: var(--icon-button-size-sm); }\n &[data-size=\"lg\"] { inline-size: var(--icon-button-size-lg); }\n }\n}\n","/* Every value is a token (--alert-*). Tone resolves into private custom properties. */\n\n@layer components {\n .alert {\n --_bg: var(--alert-info-bg);\n --_accent: var(--alert-info-accent);\n --_title: var(--alert-info-title);\n\n display: flex;\n align-items: flex-start;\n gap: var(--alert-gap);\n padding: var(--alert-padding);\n border: var(--alert-border-width) solid var(--_accent);\n border-inline-start-width: var(--alert-accent-width);\n border-radius: var(--alert-radius);\n background-color: var(--_bg);\n color: var(--alert-fg);\n font-size: var(--alert-font-size);\n\n &[data-tone=\"info\"] {\n --_bg: var(--alert-info-bg);\n --_accent: var(--alert-info-accent);\n --_title: var(--alert-info-title);\n }\n\n &[data-tone=\"success\"] {\n --_bg: var(--alert-success-bg);\n --_accent: var(--alert-success-accent);\n --_title: var(--alert-success-title);\n }\n\n &[data-tone=\"warning\"] {\n --_bg: var(--alert-warning-bg);\n --_accent: var(--alert-warning-accent);\n --_title: var(--alert-warning-title);\n }\n\n &[data-tone=\"error\"] {\n --_bg: var(--alert-error-bg);\n --_accent: var(--alert-error-accent);\n --_title: var(--alert-error-title);\n }\n }\n\n .icon {\n flex: none;\n color: var(--_accent);\n }\n\n .body {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--space-1);\n min-inline-size: 0;\n }\n\n .title {\n margin: 0;\n color: var(--_title);\n font-weight: var(--alert-title-font-weight);\n }\n\n .content {\n overflow-wrap: anywhere;\n }\n\n .action {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-2);\n margin-block-start: var(--space-1);\n }\n\n .dismiss {\n flex: none;\n margin-block: calc(-1 * var(--space-1));\n margin-inline-end: calc(-1 * var(--space-2));\n }\n}\n","/* Every value is a token (--toast-*). The region is fixed; placement is a data attribute. */\n\n@layer components {\n .region {\n --_top: auto;\n --_end: var(--toast-offset);\n --_bottom: var(--toast-offset);\n --_start: auto;\n\n position: fixed;\n z-index: var(--toast-layer);\n inset: var(--_top) var(--_end) var(--_bottom) var(--_start);\n inline-size: min(var(--toast-width), 100vw);\n padding: 0;\n pointer-events: none;\n\n &[data-placement=\"top-end\"] {\n --_top: var(--toast-offset);\n --_bottom: auto;\n }\n\n &[data-placement=\"top-center\"] {\n --_top: var(--toast-offset);\n --_bottom: auto;\n --_start: 0;\n --_end: 0;\n\n margin-inline: auto;\n }\n }\n\n .list {\n display: flex;\n flex-direction: column;\n gap: var(--toast-gap);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .item {\n pointer-events: auto;\n animation: enter var(--toast-motion-duration) var(--motion-easing-standard);\n }\n\n .toast {\n border-radius: var(--toast-radius);\n box-shadow: var(--toast-shadow);\n }\n\n @keyframes enter {\n from {\n opacity: 0;\n translate: 0 var(--space-2);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .item {\n animation: none;\n }\n }\n}\n"],"mappings":"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","names":["icon","root","spinner","ring","spin","button","label","iconButton","alert","icon","body","title","content","action","dismiss","region","list","item","toast","enter"]}
@@ -0,0 +1,60 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { AlertTone } from './alert.js';
4
+
5
+ type ToastPlacement = 'bottom-end' | 'top-end' | 'top-center';
6
+ interface ToastProviderProps {
7
+ /** @default 'bottom-end' */
8
+ placement?: ToastPlacement;
9
+ /** Most toasts shown at once; the oldest is dismissed first. @default 5 */
10
+ max?: number;
11
+ /** Default auto-dismiss time in milliseconds. @default 6000 */
12
+ duration?: number;
13
+ /** Accessible name of the region. @default 'Notifications' */
14
+ label?: string;
15
+ children: ReactNode;
16
+ }
17
+ /**
18
+ * Mount once near the app root. Owns a portal element with a polite live
19
+ * region; `useToast()` adds notifications to it. Timers pause while the
20
+ * region is hovered or holds focus, Escape dismisses the focused toast, and
21
+ * error toasts stay until dismissed. Each toast is an Alert.
22
+ *
23
+ * @status stable
24
+ * @category Feedback
25
+ * @accessibility Owns a `region` named "Notifications" with `aria-live="polite"`; each toast is an Alert with its live role off (the region announces). Timers pause while the region is hovered or holds focus; Escape dismisses the focused toast; error toasts stay until dismissed.
26
+ * @do Mount it once near the app root.
27
+ * Keep messages to one sentence; put detail behind an `action`.
28
+ * @dont Use a toast for an error the user must fix in a form; show it at the field.
29
+ * Stack more than a few; the cap drops the oldest.
30
+ */
31
+ declare function ToastProvider({ placement, max, duration, label, children }: ToastProviderProps): react.JSX.Element;
32
+ declare namespace ToastProvider {
33
+ var displayName: string;
34
+ }
35
+
36
+ interface ToastOptions {
37
+ title: ReactNode;
38
+ description?: ReactNode;
39
+ /** @default 'info' */
40
+ tone?: AlertTone;
41
+ /** Milliseconds before auto-dismiss; `Infinity` keeps it until dismissed. Errors default to `Infinity`. */
42
+ duration?: number;
43
+ action?: {
44
+ label: string;
45
+ onClick: () => void;
46
+ };
47
+ }
48
+ interface ToastItem extends ToastOptions {
49
+ id: string;
50
+ }
51
+ interface ToastContextValue {
52
+ /** Shows a toast and returns its id. */
53
+ toast: (options: ToastOptions) => string;
54
+ dismiss: (id: string) => void;
55
+ dismissAll: () => void;
56
+ }
57
+ /** The toast API. Must be used inside `ToastProvider`. */
58
+ declare function useToast(): ToastContextValue;
59
+
60
+ export { type ToastContextValue, type ToastItem, type ToastOptions, type ToastPlacement, ToastProvider, type ToastProviderProps, useToast };
package/dist/toast.js ADDED
@@ -0,0 +1,11 @@
1
+ export { ToastProvider, useToast } from './chunk-DXOOW6Q6.js';
2
+ import './chunk-PM4YO67Q.js';
3
+ import './chunk-FXRSZUDH.js';
4
+ import './chunk-KPQGS4PG.js';
5
+ import './chunk-I4KC4V6A.js';
6
+ import './chunk-ZVDN3GRI.js';
7
+ import './chunk-Z4PN6B2C.js';
8
+ import './chunk-ASNTNTJW.js';
9
+ import './chunk-MI4QUKQS.js';
10
+ //# sourceMappingURL=toast.js.map
11
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"toast.js"}
@@ -0,0 +1,36 @@
1
+ /* src/internal/floating.css */
2
+ @property --_gap { syntax: "<length>"; inherits: false; initial-value: 0px; }
3
+
4
+ /* src/tooltip/Tooltip.module.css */
5
+ @layer components {
6
+ .Tooltip_tooltip {
7
+ --_gap: var(--tooltip-gap);
8
+ position: fixed;
9
+ z-index: var(--tooltip-layer);
10
+ inset-block-start: var(--_y);
11
+ inset-inline-start: var(--_x);
12
+ max-inline-size: var(--tooltip-max-width);
13
+ padding-block: var(--tooltip-padding-block);
14
+ padding-inline: var(--tooltip-padding-inline);
15
+ border-radius: var(--tooltip-radius);
16
+ background-color: var(--tooltip-bg);
17
+ color: var(--tooltip-fg);
18
+ font-family: var(--font-family-body);
19
+ font-size: var(--tooltip-font-size);
20
+ line-height: var(--font-line-height-normal);
21
+ box-shadow: var(--tooltip-shadow);
22
+ pointer-events: none;
23
+ animation: Tooltip_fade var(--tooltip-duration) var(--motion-easing-standard);
24
+ }
25
+ @keyframes Tooltip_fade {
26
+ from {
27
+ opacity: 0;
28
+ }
29
+ }
30
+ @media (prefers-reduced-motion: reduce) {
31
+ .Tooltip_tooltip {
32
+ animation: none;
33
+ }
34
+ }
35
+ }
36
+ /*# sourceMappingURL=tooltip.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/floating.css","../src/tooltip/Tooltip.module.css"],"sourcesContent":["/*\n * Registers the gap the floating hook reads. An unregistered custom property\n * computes to its specified text (\"calc(0.25rem * 2)\"), which no number\n * parser can use; a registered <length> computes to pixels (\"8px\"). Browsers\n * without @property (Firefox before 128) fall back to a gap of 0.\n * Outside the components layer on purpose: registration is not cascaded.\n */\n\n@property --_gap {\n syntax: \"<length>\";\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- a registered <length> needs a unit in its initial value */\n initial-value: 0px;\n}\n","/* Every value is a token (--tooltip-*). Position comes in as --_x/--_y from the floating hook. */\n\n@layer components {\n .tooltip {\n --_gap: var(--tooltip-gap);\n\n position: fixed;\n z-index: var(--tooltip-layer);\n inset-block-start: var(--_y);\n inset-inline-start: var(--_x);\n max-inline-size: var(--tooltip-max-width);\n padding-block: var(--tooltip-padding-block);\n padding-inline: var(--tooltip-padding-inline);\n border-radius: var(--tooltip-radius);\n background-color: var(--tooltip-bg);\n color: var(--tooltip-fg);\n font-family: var(--font-family-body);\n font-size: var(--tooltip-font-size);\n line-height: var(--font-line-height-normal);\n box-shadow: var(--tooltip-shadow);\n pointer-events: none;\n animation: fade var(--tooltip-duration) var(--motion-easing-standard);\n }\n\n @keyframes fade {\n from {\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .tooltip {\n animation: none;\n }\n }\n}\n"],"mappings":";AAQA,UAAU,OAAO,EACf,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,KAAK,EAEf,aAAa,EAAE,GAAG;;;ACVpB;AACE,GAACA;AACC,YAAQ,IAAI;AAEZ,cAAU;AACV,aAAS,IAAI;AACb,uBAAmB,IAAI;AACvB,wBAAoB,IAAI;AACxB,qBAAiB,IAAI;AACrB,mBAAe,IAAI;AACnB,oBAAgB,IAAI;AACpB,mBAAe,IAAI;AACnB,sBAAkB,IAAI;AACtB,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,oBAAgB;AAChB,eAAW,aAAK,IAAI,oBAAoB,IAAI;AAC9C;AAEA,aAHaC;AAIX;AACE,eAAS;AACX;AACF;AAEA,UAAO,wBAAyB;AAC9B,KA5BDD;AA6BG,iBAAW;AACb;AACF;AACF;","names":["tooltip","fade"]}
@@ -0,0 +1,34 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, ReactElement } from 'react';
3
+ import { F as FloatingPlacement } from './floating-Bw-LN_QT.js';
4
+ import '@floating-ui/react-dom';
5
+
6
+ type TooltipPlacement = FloatingPlacement;
7
+ interface TooltipProps {
8
+ /** The tooltip text. Supplementary only: it must not be the control's only name. */
9
+ content: ReactNode;
10
+ /** Preferred side; flips when there is no room. @default 'top' */
11
+ placement?: TooltipPlacement;
12
+ /** Hover delay in milliseconds. Focus shows immediately. @default 300 */
13
+ delay?: number;
14
+ /** The single element that owns the tooltip; it receives the hover, focus and `aria-describedby` wiring. */
15
+ children: ReactElement;
16
+ }
17
+ /**
18
+ * A short description shown on hover or focus and linked with
19
+ * `aria-describedby` while visible. Never the only name of a control: use it
20
+ * for extra detail, and give icon-only controls a real label. Escape hides it.
21
+ *
22
+ * @status stable
23
+ * @category Overlays
24
+ * @accessibility Shown on hover after a delay and on focus immediately; the trigger gets `aria-describedby` pointing at the `tooltip` while it is visible; Escape hides it. It is a description, never a name.
25
+ * @do Use it for extra detail on controls that already have a name.
26
+ * @dont Put interactive content in it.
27
+ * Use it to name an icon-only control; use IconButton's `label`.
28
+ */
29
+ declare function Tooltip({ content, placement, delay, children }: TooltipProps): react.JSX.Element;
30
+ declare namespace Tooltip {
31
+ var displayName: string;
32
+ }
33
+
34
+ export { Tooltip, type TooltipPlacement, type TooltipProps };
@@ -0,0 +1,5 @@
1
+ export { Tooltip } from './chunk-Y4TZA77G.js';
2
+ import './chunk-U6QRAD73.js';
3
+ import './chunk-ZVDN3GRI.js';
4
+ //# sourceMappingURL=tooltip.js.map
5
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tooltip.js"}
@@ -0,0 +1,15 @@
1
+ /* src/visually-hidden/VisuallyHidden.module.css */
2
+ @layer components {
3
+ .VisuallyHidden_root {
4
+ position: absolute;
5
+ inline-size: var(--visually-hidden-size);
6
+ block-size: var(--visually-hidden-size);
7
+ padding: 0;
8
+ margin: 0;
9
+ overflow: hidden;
10
+ clip-path: inset(50%);
11
+ white-space: nowrap;
12
+ border: 0;
13
+ }
14
+ }
15
+ /*# sourceMappingURL=visually-hidden.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/visually-hidden/VisuallyHidden.module.css"],"sourcesContent":["/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n"],"mappings":";AAEA;AACE,GAACA;AACC,cAAU;AACV,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,aAAS;AACT,YAAQ;AACR,cAAU;AACV,eAAW,MAAM;AACjB,iBAAa;AACb,YAAQ;AACV;AACF;","names":["root"]}