@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/badge.css ADDED
@@ -0,0 +1,89 @@
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/badge/Badge.module.css */
27
+ @layer components {
28
+ .Badge_badge {
29
+ --_bg: var(--badge-neutral-subtle-bg);
30
+ --_fg: var(--badge-neutral-subtle-fg);
31
+ display: inline-flex;
32
+ align-items: center;
33
+ gap: var(--badge-gap);
34
+ padding-block: var(--badge-padding-block);
35
+ padding-inline: var(--badge-padding-inline-md);
36
+ border-radius: var(--badge-radius);
37
+ background-color: var(--_bg);
38
+ color: var(--_fg);
39
+ font-size: var(--badge-font-size-md);
40
+ font-weight: var(--badge-font-weight);
41
+ line-height: var(--badge-line-height);
42
+ white-space: nowrap;
43
+ &[data-size=sm] {
44
+ padding-inline: var(--badge-padding-inline-sm);
45
+ font-size: var(--badge-font-size-sm);
46
+ }
47
+ &[data-tone=neutral][data-variant=solid] {
48
+ --_bg: var(--badge-neutral-solid-bg);
49
+ --_fg: var(--badge-neutral-solid-fg);
50
+ }
51
+ &[data-tone=neutral][data-variant=subtle] {
52
+ --_bg: var(--badge-neutral-subtle-bg);
53
+ --_fg: var(--badge-neutral-subtle-fg);
54
+ }
55
+ &[data-tone=info][data-variant=solid] {
56
+ --_bg: var(--badge-info-solid-bg);
57
+ --_fg: var(--badge-info-solid-fg);
58
+ }
59
+ &[data-tone=info][data-variant=subtle] {
60
+ --_bg: var(--badge-info-subtle-bg);
61
+ --_fg: var(--badge-info-subtle-fg);
62
+ }
63
+ &[data-tone=success][data-variant=solid] {
64
+ --_bg: var(--badge-success-solid-bg);
65
+ --_fg: var(--badge-success-solid-fg);
66
+ }
67
+ &[data-tone=success][data-variant=subtle] {
68
+ --_bg: var(--badge-success-subtle-bg);
69
+ --_fg: var(--badge-success-subtle-fg);
70
+ }
71
+ &[data-tone=warning][data-variant=solid] {
72
+ --_bg: var(--badge-warning-solid-bg);
73
+ --_fg: var(--badge-warning-solid-fg);
74
+ }
75
+ &[data-tone=warning][data-variant=subtle] {
76
+ --_bg: var(--badge-warning-subtle-bg);
77
+ --_fg: var(--badge-warning-subtle-fg);
78
+ }
79
+ &[data-tone=error][data-variant=solid] {
80
+ --_bg: var(--badge-error-solid-bg);
81
+ --_fg: var(--badge-error-solid-fg);
82
+ }
83
+ &[data-tone=error][data-variant=subtle] {
84
+ --_bg: var(--badge-error-subtle-bg);
85
+ --_fg: var(--badge-error-subtle-fg);
86
+ }
87
+ }
88
+ }
89
+ /*# sourceMappingURL=badge.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icon/Icon.module.css","../src/badge/Badge.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","/* Every value is a token (--badge-*). Tone × variant resolve into private custom properties. */\n\n@layer components {\n .badge {\n --_bg: var(--badge-neutral-subtle-bg);\n --_fg: var(--badge-neutral-subtle-fg);\n\n display: inline-flex;\n align-items: center;\n gap: var(--badge-gap);\n padding-block: var(--badge-padding-block);\n padding-inline: var(--badge-padding-inline-md);\n border-radius: var(--badge-radius);\n background-color: var(--_bg);\n color: var(--_fg);\n font-size: var(--badge-font-size-md);\n font-weight: var(--badge-font-weight);\n line-height: var(--badge-line-height);\n white-space: nowrap;\n\n &[data-size=\"sm\"] {\n padding-inline: var(--badge-padding-inline-sm);\n font-size: var(--badge-font-size-sm);\n }\n\n &[data-tone=\"neutral\"][data-variant=\"solid\"] {\n --_bg: var(--badge-neutral-solid-bg);\n --_fg: var(--badge-neutral-solid-fg);\n }\n\n &[data-tone=\"neutral\"][data-variant=\"subtle\"] {\n --_bg: var(--badge-neutral-subtle-bg);\n --_fg: var(--badge-neutral-subtle-fg);\n }\n\n &[data-tone=\"info\"][data-variant=\"solid\"] {\n --_bg: var(--badge-info-solid-bg);\n --_fg: var(--badge-info-solid-fg);\n }\n\n &[data-tone=\"info\"][data-variant=\"subtle\"] {\n --_bg: var(--badge-info-subtle-bg);\n --_fg: var(--badge-info-subtle-fg);\n }\n\n &[data-tone=\"success\"][data-variant=\"solid\"] {\n --_bg: var(--badge-success-solid-bg);\n --_fg: var(--badge-success-solid-fg);\n }\n\n &[data-tone=\"success\"][data-variant=\"subtle\"] {\n --_bg: var(--badge-success-subtle-bg);\n --_fg: var(--badge-success-subtle-fg);\n }\n\n &[data-tone=\"warning\"][data-variant=\"solid\"] {\n --_bg: var(--badge-warning-solid-bg);\n --_fg: var(--badge-warning-solid-fg);\n }\n\n &[data-tone=\"warning\"][data-variant=\"subtle\"] {\n --_bg: var(--badge-warning-subtle-bg);\n --_fg: var(--badge-warning-subtle-fg);\n }\n\n &[data-tone=\"error\"][data-variant=\"solid\"] {\n --_bg: var(--badge-error-solid-bg);\n --_fg: var(--badge-error-solid-fg);\n }\n\n &[data-tone=\"error\"][data-variant=\"subtle\"] {\n --_bg: var(--badge-error-subtle-bg);\n --_fg: var(--badge-error-subtle-fg);\n }\n }\n}\n"],"mappings":";AAEA;AACE,GAACA;AACC,aAAS;AACT,UAAM;AACN,iBAAa;AACb,gBAAY;AACZ,eAAW,IAAI;AACf,oBAAgB;AAEhB,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAuB,iBAAW;AAAS;AAE7C,MAAE,EAAE;AACF,mBAAa;AACb,kBAAY;AACd;AACF;AACF;;;AClBA;AACE,GAACC;AACC,WAAO,IAAI;AACX,WAAO,IAAI;AAEX,aAAS;AACT,iBAAa;AACb,SAAK,IAAI;AACT,mBAAe,IAAI;AACnB,oBAAgB,IAAI;AACpB,mBAAe,IAAI;AACnB,sBAAkB,IAAI;AACtB,WAAO,IAAI;AACX,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,iBAAa,IAAI;AACjB,iBAAa;AAEb,KAAC,CAAC;AACA,sBAAgB,IAAI;AACpB,iBAAW,IAAI;AACjB;AAEA,KAAC,CAAC,kBAAoB,CAAC;AACrB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,kBAAoB,CAAC;AACrB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,eAAiB,CAAC;AAClB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,eAAiB,CAAC;AAClB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,kBAAoB,CAAC;AACrB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,kBAAoB,CAAC;AACrB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,kBAAoB,CAAC;AACrB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,kBAAoB,CAAC;AACrB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,gBAAkB,CAAC;AACnB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AAEA,KAAC,CAAC,gBAAkB,CAAC;AACnB,aAAO,IAAI;AACX,aAAO,IAAI;AACb;AACF;AACF;","names":["icon","badge"]}
@@ -0,0 +1,38 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode, Ref } from 'react';
3
+
4
+ type BadgeTone = 'neutral' | 'info' | 'success' | 'warning' | 'error';
5
+ type BadgeVariant = 'solid' | 'subtle';
6
+ type BadgeSize = 'sm' | 'md';
7
+ interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
8
+ /** Meaning, not colour: `neutral` for counts and tags. @default 'neutral' */
9
+ tone?: BadgeTone;
10
+ /** `solid` fills with the tone; `subtle` tints and uses the tone as text. @default 'subtle' */
11
+ variant?: BadgeVariant;
12
+ /** @default 'md' */
13
+ size?: BadgeSize;
14
+ /** Leading glyph, decorative. */
15
+ icon?: ReactNode;
16
+ ref?: Ref<HTMLSpanElement>;
17
+ children: ReactNode;
18
+ }
19
+ /**
20
+ * A small label for status, counts and tags. Tone and variant resolve
21
+ * through `--badge-*` onto the status tokens, whose contrast is proven by
22
+ * the token tests. Not interactive: for a removable chip, compose with a
23
+ * Button.
24
+ *
25
+ * @status stable
26
+ * @category Feedback
27
+ * @accessibility Plain text: no role, no interaction. Every tone × variant pair meets WCAG AA, proven by the token tests. Tone is reinforced by the text, not only by colour.
28
+ * @do Keep the text to one or two words.
29
+ * Pair a leading icon with text, never alone.
30
+ * @dont Make it clickable; compose a Button for a removable chip.
31
+ * Use tone alone to convey meaning; say it in the text.
32
+ */
33
+ declare function Badge({ tone, variant, size, icon, className, ref, children, ...rest }: BadgeProps): react.JSX.Element;
34
+ declare namespace Badge {
35
+ var displayName: string;
36
+ }
37
+
38
+ export { Badge, type BadgeProps, type BadgeSize, type BadgeTone, type BadgeVariant };
package/dist/badge.js ADDED
@@ -0,0 +1,5 @@
1
+ export { Badge } from './chunk-6I26MMQF.js';
2
+ import './chunk-ASNTNTJW.js';
3
+ import './chunk-MI4QUKQS.js';
4
+ //# sourceMappingURL=badge.js.map
5
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"badge.js"}
@@ -0,0 +1,162 @@
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
+ /*# sourceMappingURL=button.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"],"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"],"mappings":"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","names":["icon","root","spinner","ring","spin","button","label"]}
@@ -0,0 +1,61 @@
1
+ import * as react from 'react';
2
+ import { ButtonHTMLAttributes, ReactNode, Ref } from 'react';
3
+
4
+ type ButtonVariant = 'primary' | 'secondary' | 'ghost';
5
+ type ButtonSize = 'sm' | 'md' | 'lg';
6
+ interface ButtonProps<E extends HTMLElement = HTMLButtonElement> extends ButtonHTMLAttributes<HTMLButtonElement> {
7
+ /**
8
+ * Visual emphasis. One `primary` per view; `secondary` for the rest;
9
+ * `ghost` for actions that sit inside other content.
10
+ * @default 'primary'
11
+ */
12
+ variant?: ButtonVariant;
13
+ /** @default 'md' */
14
+ size?: ButtonSize;
15
+ /**
16
+ * Shows a spinner, sets `aria-busy` and `aria-disabled`, and blocks
17
+ * activation. The element stays focusable so focus is not lost mid-action,
18
+ * and the label stays in place so the button keeps its width.
19
+ * @default false
20
+ */
21
+ loading?: boolean;
22
+ /** Decorative element before the label. Hidden from assistive technology. */
23
+ iconStart?: ReactNode;
24
+ /** Decorative element after the label. Hidden from assistive technology. */
25
+ iconEnd?: ReactNode;
26
+ /**
27
+ * Render the single child element instead of a `<button>`, merging the
28
+ * button's props into it. Use it to style a router `<Link>` or an `<a>` as a
29
+ * button. Disabled and loading states then use `aria-disabled`, and the
30
+ * child's own `onClick` does not run while the control is inert.
31
+ * @default false
32
+ */
33
+ asChild?: boolean;
34
+ /**
35
+ * The rendered element. With `asChild` that is the child's element, so pass
36
+ * the type parameter: `<Button<HTMLAnchorElement> asChild ref={anchorRef}>`.
37
+ */
38
+ ref?: Ref<E>;
39
+ children: ReactNode;
40
+ }
41
+ /**
42
+ * The one action component. Variants map to emphasis, not colour: one
43
+ * `primary` per view, `secondary` for the rest, `ghost` inside other content.
44
+ * Every value comes from `--button-*` tokens, so a brand restyles it without
45
+ * touching the component. State is exposed as `data-variant`, `data-size` and
46
+ * `data-loading` for styling, tests and agents alike.
47
+ *
48
+ * @status stable
49
+ * @category Actions
50
+ * @accessibility A native `button` (or the child element with `asChild`). `loading` sets `aria-disabled` and `aria-busy` and keeps focus; only `disabled` removes it from the tab order. Icon-only use warns in development: use IconButton, which requires a name.
51
+ * @do One `primary` per view.
52
+ * Use `asChild` for links that look like buttons, keeping the `a` semantics.
53
+ * @dont Use `loading` on a button that is not the one that started the work.
54
+ * Rely on colour to tell variants apart; the label carries the meaning.
55
+ */
56
+ declare function Button<E extends HTMLElement = HTMLButtonElement>({ variant, size, loading, iconStart, iconEnd, asChild, className, disabled, type, onClick, ref, children, ...rest }: ButtonProps<E>): react.JSX.Element;
57
+ declare namespace Button {
58
+ var displayName: string;
59
+ }
60
+
61
+ export { Button, type ButtonProps, type ButtonSize, type ButtonVariant };
package/dist/button.js ADDED
@@ -0,0 +1,8 @@
1
+ export { Button } from './chunk-KPQGS4PG.js';
2
+ import './chunk-I4KC4V6A.js';
3
+ import './chunk-ZVDN3GRI.js';
4
+ import './chunk-Z4PN6B2C.js';
5
+ import './chunk-ASNTNTJW.js';
6
+ import './chunk-MI4QUKQS.js';
7
+ //# sourceMappingURL=button.js.map
8
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"button.js"}
@@ -0,0 +1,128 @@
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/calendar/Calendar.module.css */
27
+ @layer components {
28
+ .Calendar_root {
29
+ display: inline-flex;
30
+ flex-direction: column;
31
+ gap: var(--calendar-gap);
32
+ padding: var(--calendar-padding);
33
+ background-color: var(--calendar-bg);
34
+ color: var(--calendar-fg);
35
+ font-family: var(--calendar-font-family);
36
+ font-size: var(--calendar-font-size);
37
+ }
38
+ .Calendar_header {
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: space-between;
42
+ gap: var(--calendar-gap);
43
+ }
44
+ .Calendar_heading {
45
+ margin: 0;
46
+ font-size: var(--calendar-heading-font-size);
47
+ font-weight: var(--calendar-heading-font-weight);
48
+ }
49
+ .Calendar_nav {
50
+ display: grid;
51
+ place-items: center;
52
+ inline-size: var(--calendar-nav-size);
53
+ block-size: var(--calendar-nav-size);
54
+ padding: 0;
55
+ border: none;
56
+ border-radius: var(--calendar-nav-radius);
57
+ background-color: transparent;
58
+ color: var(--calendar-nav-fg);
59
+ cursor: pointer;
60
+ transition: background-color var(--calendar-motion-duration) var(--motion-easing-standard);
61
+ &[data-hovered] {
62
+ background-color: var(--calendar-nav-bg-hover);
63
+ color: var(--calendar-nav-fg-hover);
64
+ }
65
+ &[data-focus-visible] {
66
+ outline: var(--calendar-focus-ring-width) solid var(--calendar-focus-ring);
67
+ outline-offset: var(--calendar-focus-ring-offset);
68
+ }
69
+ &[data-disabled] {
70
+ cursor: not-allowed;
71
+ opacity: 0.55;
72
+ }
73
+ }
74
+ .Calendar_grid {
75
+ border-collapse: collapse;
76
+ border-spacing: 0;
77
+ }
78
+ .Calendar_weekday {
79
+ inline-size: var(--calendar-cell-size);
80
+ padding: 0;
81
+ color: var(--calendar-weekday-fg);
82
+ font-size: var(--calendar-weekday-font-size);
83
+ font-weight: var(--calendar-weekday-font-weight);
84
+ text-align: center;
85
+ }
86
+ .Calendar_cell {
87
+ display: grid;
88
+ place-items: center;
89
+ inline-size: var(--calendar-cell-size);
90
+ block-size: var(--calendar-cell-size);
91
+ border-radius: var(--calendar-cell-radius);
92
+ color: var(--calendar-cell-fg);
93
+ cursor: pointer;
94
+ outline: none;
95
+ transition: background-color var(--calendar-motion-duration) var(--motion-easing-standard);
96
+ &[data-outside-month] {
97
+ display: none;
98
+ }
99
+ &[data-today] {
100
+ color: var(--calendar-cell-fg-today);
101
+ font-weight: var(--calendar-heading-font-weight);
102
+ }
103
+ &[data-hovered] {
104
+ background-color: var(--calendar-cell-bg-hover);
105
+ }
106
+ &[data-selected] {
107
+ background-color: var(--calendar-cell-bg-selected);
108
+ color: var(--calendar-cell-fg-selected);
109
+ &[data-hovered] {
110
+ background-color: var(--calendar-cell-bg-selected-hover);
111
+ }
112
+ }
113
+ &[data-focus-visible] {
114
+ outline: var(--calendar-focus-ring-width) solid var(--calendar-focus-ring);
115
+ outline-offset: var(--calendar-focus-ring-offset);
116
+ }
117
+ &[data-unavailable] {
118
+ color: var(--calendar-cell-fg-unavailable);
119
+ text-decoration: line-through;
120
+ cursor: not-allowed;
121
+ }
122
+ &[data-disabled] {
123
+ color: var(--calendar-cell-fg-unavailable);
124
+ cursor: not-allowed;
125
+ }
126
+ }
127
+ }
128
+ /*# sourceMappingURL=calendar.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icon/Icon.module.css","../src/calendar/Calendar.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","/*\n * Every value is a token (--calendar-*). React Aria writes the cell state:\n * data-selected, data-focused, data-focus-visible, data-hovered,\n * data-disabled, data-unavailable, data-today, data-outside-month.\n */\n\n@layer components {\n .root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--calendar-gap);\n padding: var(--calendar-padding);\n background-color: var(--calendar-bg);\n color: var(--calendar-fg);\n font-family: var(--calendar-font-family);\n font-size: var(--calendar-font-size);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--calendar-gap);\n }\n\n .heading {\n margin: 0;\n font-size: var(--calendar-heading-font-size);\n font-weight: var(--calendar-heading-font-weight);\n }\n\n .nav {\n display: grid;\n place-items: center;\n inline-size: var(--calendar-nav-size);\n block-size: var(--calendar-nav-size);\n padding: 0;\n border: none;\n border-radius: var(--calendar-nav-radius);\n background-color: transparent;\n color: var(--calendar-nav-fg);\n cursor: pointer;\n transition: background-color var(--calendar-motion-duration) var(--motion-easing-standard);\n\n &[data-hovered] {\n background-color: var(--calendar-nav-bg-hover);\n color: var(--calendar-nav-fg-hover);\n }\n\n &[data-focus-visible] {\n outline: var(--calendar-focus-ring-width) solid var(--calendar-focus-ring);\n outline-offset: var(--calendar-focus-ring-offset);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n }\n\n .grid {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n .weekday {\n inline-size: var(--calendar-cell-size);\n padding: 0;\n color: var(--calendar-weekday-fg);\n font-size: var(--calendar-weekday-font-size);\n font-weight: var(--calendar-weekday-font-weight);\n text-align: center;\n }\n\n .cell {\n display: grid;\n place-items: center;\n inline-size: var(--calendar-cell-size);\n block-size: var(--calendar-cell-size);\n border-radius: var(--calendar-cell-radius);\n color: var(--calendar-cell-fg);\n cursor: pointer;\n outline: none;\n transition: background-color var(--calendar-motion-duration) var(--motion-easing-standard);\n\n &[data-outside-month] {\n display: none;\n }\n\n &[data-today] {\n color: var(--calendar-cell-fg-today);\n font-weight: var(--calendar-heading-font-weight);\n }\n\n &[data-hovered] {\n background-color: var(--calendar-cell-bg-hover);\n }\n\n &[data-selected] {\n background-color: var(--calendar-cell-bg-selected);\n color: var(--calendar-cell-fg-selected);\n\n &[data-hovered] {\n background-color: var(--calendar-cell-bg-selected-hover);\n }\n }\n\n &[data-focus-visible] {\n outline: var(--calendar-focus-ring-width) solid var(--calendar-focus-ring);\n outline-offset: var(--calendar-focus-ring-offset);\n }\n\n &[data-unavailable] {\n color: var(--calendar-cell-fg-unavailable);\n text-decoration: line-through;\n cursor: not-allowed;\n }\n\n /* Disabled dims the days, not the month name, so the visible text keeps its contrast. */\n &[data-disabled] {\n color: var(--calendar-cell-fg-unavailable);\n cursor: not-allowed;\n }\n }\n}\n"],"mappings":";AAEA;AACE,GAACA;AACC,aAAS;AACT,UAAM;AACN,iBAAa;AACb,gBAAY;AACZ,eAAW,IAAI;AACf,oBAAgB;AAEhB,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAuB,iBAAW;AAAS;AAE7C,MAAE,EAAE;AACF,mBAAa;AACb,kBAAY;AACd;AACF;AACF;;;ACdA;AACE,GAACC;AACC,aAAS;AACT,oBAAgB;AAChB,SAAK,IAAI;AACT,aAAS,IAAI;AACb,sBAAkB,IAAI;AACtB,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,eAAW,IAAI;AACjB;AAEA,GAACC;AACC,aAAS;AACT,iBAAa;AACb,qBAAiB;AACjB,SAAK,IAAI;AACX;AAEA,GAACC;AACC,YAAQ;AACR,eAAW,IAAI;AACf,iBAAa,IAAI;AACnB;AAEA,GAACC;AACC,aAAS;AACT,iBAAa;AACb,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,aAAS;AACT,YAAQ;AACR,mBAAe,IAAI;AACnB,sBAAkB;AAClB,WAAO,IAAI;AACX,YAAQ;AACR,gBAAY,iBAAiB,IAAI,4BAA4B,IAAI;AAEjE,KAAC,CAAC;AACA,wBAAkB,IAAI;AACtB,aAAO,IAAI;AACb;AAEA,KAAC,CAAC;AACA,eAAS,IAAI,6BAA6B,MAAM,IAAI;AACpD,sBAAgB,IAAI;AACtB;AAEA,KAAC,CAAC;AACA,cAAQ;AACR,eAAS;AACX;AACF;AAEA,GAACC;AACC,qBAAiB;AACjB,oBAAgB;AAClB;AAEA,GAACC;AACC,iBAAa,IAAI;AACjB,aAAS;AACT,WAAO,IAAI;AACX,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,gBAAY;AACd;AAEA,GAACC;AACC,aAAS;AACT,iBAAa;AACb,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,mBAAe,IAAI;AACnB,WAAO,IAAI;AACX,YAAQ;AACR,aAAS;AACT,gBAAY,iBAAiB,IAAI,4BAA4B,IAAI;AAEjE,KAAC,CAAC;AACA,eAAS;AACX;AAEA,KAAC,CAAC;AACA,aAAO,IAAI;AACX,mBAAa,IAAI;AACnB;AAEA,KAAC,CAAC;AACA,wBAAkB,IAAI;AACxB;AAEA,KAAC,CAAC;AACA,wBAAkB,IAAI;AACtB,aAAO,IAAI;AAEX,OAAC,CAAC;AACA,0BAAkB,IAAI;AACxB;AACF;AAEA,KAAC,CAAC;AACA,eAAS,IAAI,6BAA6B,MAAM,IAAI;AACpD,sBAAgB,IAAI;AACtB;AAEA,KAAC,CAAC;AACA,aAAO,IAAI;AACX,uBAAiB;AACjB,cAAQ;AACV;AAGA,KAAC,CAAC;AACA,aAAO,IAAI;AACX,cAAQ;AACV;AACF;AACF;","names":["icon","root","header","heading","nav","grid","weekday","cell"]}
@@ -0,0 +1,48 @@
1
+ import * as react from 'react';
2
+ import { Ref } from 'react';
3
+
4
+ interface CalendarProps {
5
+ /** Selected date as `YYYY-MM-DD` (controlled). `null` is "none". */
6
+ value?: string | null;
7
+ defaultValue?: string | null;
8
+ onChange?: (value: string | null) => void;
9
+ /** Earliest selectable date, `YYYY-MM-DD`. */
10
+ min?: string;
11
+ /** Latest selectable date, `YYYY-MM-DD`. */
12
+ max?: string;
13
+ /** Marks single dates as unavailable (shown, not selectable). */
14
+ isDateUnavailable?: (date: string) => boolean;
15
+ /** @default false */
16
+ disabled?: boolean;
17
+ /** @default false */
18
+ readOnly?: boolean;
19
+ /** BCP 47 tag. Month names, weekday order and the first day of the week follow it; defaults to the browser's. */
20
+ locale?: string;
21
+ /** The grid's accessible name. @default 'Calendar' */
22
+ 'aria-label'?: string;
23
+ id?: string;
24
+ className?: string;
25
+ ref?: Ref<HTMLDivElement>;
26
+ }
27
+ /**
28
+ * A month grid for choosing one date, on React Aria's calendar (decision
29
+ * record 001): arrows move by day and week, Page Up/Down by month, Home and
30
+ * End to the edges of the week, Enter or Space selects; every cell is
31
+ * announced with its full date and the grid is named by a visually hidden
32
+ * level-2 heading. Dates cross the API as ISO strings. For a date inside a
33
+ * form, DatePicker wraps this in a field with a popover.
34
+ *
35
+ * @status experimental
36
+ * @category Forms
37
+ * @accessibility The grid is `role="grid"` named by a visually hidden level-2 heading ("Calendar, September 2026"); each day is a button announced with its full date, today and selection state. Arrows move by day and week, Page Up/Down by month, Home/End to the week edges, Enter or Space selects.
38
+ * @do Pass `locale` when the app's language is not the browser's.
39
+ * Mark unavailable dates with `isDateUnavailable` rather than removing them.
40
+ * @dont Use it inside a form; use DatePicker, which adds the field and the popover.
41
+ * Set `min` after `max`; the vendor disables the whole grid.
42
+ */
43
+ declare function Calendar({ value, defaultValue, onChange, min, max, isDateUnavailable, disabled, readOnly, locale, 'aria-label': ariaLabel, className, ref, ...rest }: CalendarProps): react.JSX.Element;
44
+ declare namespace Calendar {
45
+ var displayName: string;
46
+ }
47
+
48
+ export { Calendar, type CalendarProps };
@@ -0,0 +1,6 @@
1
+ export { Calendar } from './chunk-5SBKZS56.js';
2
+ import './chunk-OXYP34CG.js';
3
+ import './chunk-ASNTNTJW.js';
4
+ import './chunk-MI4QUKQS.js';
5
+ //# sourceMappingURL=calendar.js.map
6
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"calendar.js"}
package/dist/card.css ADDED
@@ -0,0 +1,66 @@
1
+ /* src/card/Card.module.css */
2
+ @layer components {
3
+ .Card_card {
4
+ --_pad: var(--card-padding-md);
5
+ display: flex;
6
+ flex-direction: column;
7
+ min-inline-size: 0;
8
+ border: 1px solid transparent;
9
+ border-radius: var(--card-radius);
10
+ background-color: var(--card-bg);
11
+ color: var(--card-fg);
12
+ text-decoration: none;
13
+ transition:
14
+ border-color var(--card-motion-duration) var(--motion-easing-standard),
15
+ box-shadow var(--card-motion-duration) var(--motion-easing-standard),
16
+ translate var(--card-motion-duration) var(--motion-easing-standard);
17
+ &[data-padding=sm] {
18
+ --_pad: var(--card-padding-sm);
19
+ }
20
+ &[data-padding=lg] {
21
+ --_pad: var(--card-padding-lg);
22
+ }
23
+ &[data-variant=raised] {
24
+ box-shadow: var(--card-shadow);
25
+ }
26
+ &[data-variant=outlined] {
27
+ border-color: var(--card-border);
28
+ }
29
+ &[data-variant=sunken] {
30
+ background-color: var(--card-bg-sunken);
31
+ }
32
+ &[data-interactive] {
33
+ cursor: pointer;
34
+ &:hover {
35
+ border-color: var(--card-border-hover);
36
+ translate: 0 -1px;
37
+ }
38
+ &:focus-visible {
39
+ outline: var(--card-focus-ring-width) solid var(--card-focus-ring);
40
+ outline-offset: var(--card-focus-ring-offset);
41
+ }
42
+ }
43
+ }
44
+ .Card_header,
45
+ .Card_body,
46
+ .Card_footer {
47
+ padding: var(--_pad);
48
+ }
49
+ .Card_header {
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: var(--card-gap);
53
+ border-block-end: 1px solid var(--card-divider);
54
+ }
55
+ .Card_body {
56
+ flex: 1;
57
+ }
58
+ .Card_footer {
59
+ display: flex;
60
+ flex-wrap: wrap;
61
+ align-items: center;
62
+ gap: var(--card-gap);
63
+ border-block-start: 1px solid var(--card-divider);
64
+ }
65
+ }
66
+ /*# sourceMappingURL=card.css.map */