@fpkit/acss 0.5.11 → 0.5.13

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 (312) hide show
  1. package/README.md +514 -18
  2. package/libs/chunk-23ANBDCR.js +8 -0
  3. package/libs/chunk-23ANBDCR.js.map +1 -0
  4. package/libs/chunk-2LTJ7HHX.cjs +18 -0
  5. package/libs/chunk-2LTJ7HHX.cjs.map +1 -0
  6. package/libs/chunk-2Y7W75TT.js +9 -0
  7. package/libs/chunk-2Y7W75TT.js.map +1 -0
  8. package/libs/chunk-3MKLDCKQ.cjs +31 -0
  9. package/libs/chunk-3MKLDCKQ.cjs.map +1 -0
  10. package/libs/chunk-5M57K4SW.js +8 -0
  11. package/libs/chunk-5M57K4SW.js.map +1 -0
  12. package/libs/chunk-5S4ORA4C.cjs +15 -0
  13. package/libs/chunk-5S4ORA4C.cjs.map +1 -0
  14. package/libs/chunk-772NRB75.js +9 -0
  15. package/libs/chunk-772NRB75.js.map +1 -0
  16. package/libs/chunk-AHDJGCG5.cjs +15 -0
  17. package/libs/chunk-AHDJGCG5.cjs.map +1 -0
  18. package/libs/chunk-B7F5FS6D.cjs +16 -0
  19. package/libs/chunk-B7F5FS6D.cjs.map +1 -0
  20. package/libs/chunk-BHRQBJRY.js +8 -0
  21. package/libs/chunk-BHRQBJRY.js.map +1 -0
  22. package/libs/chunk-D4YLRWAO.cjs +18 -0
  23. package/libs/chunk-D4YLRWAO.cjs.map +1 -0
  24. package/libs/chunk-ETFLFC2S.js +10 -0
  25. package/libs/chunk-ETFLFC2S.js.map +1 -0
  26. package/libs/chunk-G55UJ53G.cjs +16 -0
  27. package/libs/chunk-G55UJ53G.cjs.map +1 -0
  28. package/libs/chunk-GZ4QFPRY.js +9 -0
  29. package/libs/chunk-GZ4QFPRY.js.map +1 -0
  30. package/libs/chunk-IYUN2EW3.cjs +15 -0
  31. package/libs/chunk-IYUN2EW3.cjs.map +1 -0
  32. package/libs/chunk-J32EZPYD.cjs +15 -0
  33. package/libs/chunk-J32EZPYD.cjs.map +1 -0
  34. package/libs/chunk-JJ43O4Y5.js +8 -0
  35. package/libs/chunk-JJ43O4Y5.js.map +1 -0
  36. package/libs/chunk-KUKIVRC2.js +7 -0
  37. package/libs/chunk-KUKIVRC2.js.map +1 -0
  38. package/libs/chunk-L75OQKEI.cjs +13 -0
  39. package/libs/chunk-L75OQKEI.cjs.map +1 -0
  40. package/libs/chunk-LT5KZ2QW.cjs +22 -0
  41. package/libs/chunk-LT5KZ2QW.cjs.map +1 -0
  42. package/libs/chunk-M5RRNTVX.cjs +15 -0
  43. package/libs/chunk-M5RRNTVX.cjs.map +1 -0
  44. package/libs/chunk-NGTJDDFO.js +8 -0
  45. package/libs/chunk-NGTJDDFO.js.map +1 -0
  46. package/libs/chunk-OK5QEIMD.cjs +17 -0
  47. package/libs/chunk-OK5QEIMD.cjs.map +1 -0
  48. package/libs/chunk-P2DC76ZZ.cjs +18 -0
  49. package/libs/chunk-P2DC76ZZ.cjs.map +1 -0
  50. package/libs/chunk-P7TTEYCD.js +7 -0
  51. package/libs/chunk-P7TTEYCD.js.map +1 -0
  52. package/libs/chunk-PQ2K3BM6.cjs +17 -0
  53. package/libs/chunk-PQ2K3BM6.cjs.map +1 -0
  54. package/libs/chunk-QLZWHAMK.js +8 -0
  55. package/libs/chunk-QLZWHAMK.js.map +1 -0
  56. package/libs/chunk-RIVUMPOG.js +8 -0
  57. package/libs/chunk-RIVUMPOG.js.map +1 -0
  58. package/libs/chunk-ROZI23GS.cjs +15 -0
  59. package/libs/chunk-ROZI23GS.cjs.map +1 -0
  60. package/libs/chunk-S7BABR7Z.cjs +13 -0
  61. package/libs/chunk-S7BABR7Z.cjs.map +1 -0
  62. package/libs/chunk-SMYRLO3E.js +8 -0
  63. package/libs/chunk-SMYRLO3E.js.map +1 -0
  64. package/libs/chunk-TYRCEX2L.js +8 -0
  65. package/libs/chunk-TYRCEX2L.js.map +1 -0
  66. package/libs/chunk-VUH3FXGJ.js +11 -0
  67. package/libs/chunk-VUH3FXGJ.js.map +1 -0
  68. package/libs/chunk-XBA562WW.js +8 -0
  69. package/libs/chunk-XBA562WW.js.map +1 -0
  70. package/libs/chunk-XTQKWY7W.cjs +32 -0
  71. package/libs/chunk-XTQKWY7W.cjs.map +1 -0
  72. package/libs/chunk-ZANSFMTD.js +9 -0
  73. package/libs/chunk-ZANSFMTD.js.map +1 -0
  74. package/libs/component-props-a8a2f97e.d.ts +38 -0
  75. package/libs/components/alert/alert.css +1 -1
  76. package/libs/components/alert/alert.css.map +1 -1
  77. package/libs/components/alert/alert.min.css +2 -2
  78. package/libs/components/badge/badge.css +1 -1
  79. package/libs/components/badge/badge.css.map +1 -1
  80. package/libs/components/badge/badge.min.css +2 -2
  81. package/libs/components/breadcrumbs/breadcrumb.cjs +24 -0
  82. package/libs/components/breadcrumbs/breadcrumb.cjs.map +1 -0
  83. package/libs/components/breadcrumbs/breadcrumb.d.cts +290 -0
  84. package/libs/components/breadcrumbs/breadcrumb.d.ts +290 -0
  85. package/libs/components/breadcrumbs/breadcrumb.js +5 -0
  86. package/libs/components/breadcrumbs/breadcrumb.js.map +1 -0
  87. package/libs/components/button.cjs +19 -0
  88. package/libs/components/button.cjs.map +1 -0
  89. package/libs/components/button.d.cts +16 -0
  90. package/libs/components/button.d.ts +16 -0
  91. package/libs/components/button.js +4 -0
  92. package/libs/components/button.js.map +1 -0
  93. package/libs/components/buttons/button.css +1 -1
  94. package/libs/components/buttons/button.css.map +1 -1
  95. package/libs/components/buttons/button.min.css +2 -2
  96. package/libs/components/card.cjs +31 -0
  97. package/libs/components/card.cjs.map +1 -0
  98. package/libs/components/card.d.cts +302 -0
  99. package/libs/components/card.d.ts +302 -0
  100. package/libs/components/card.js +4 -0
  101. package/libs/components/card.js.map +1 -0
  102. package/libs/components/cards/card.css +1 -1
  103. package/libs/components/cards/card.css.map +1 -1
  104. package/libs/components/cards/card.min.css +2 -2
  105. package/libs/components/details/details.css +1 -1
  106. package/libs/components/details/details.css.map +1 -1
  107. package/libs/components/details/details.min.css +2 -2
  108. package/libs/components/dialog/dialog.cjs +22 -0
  109. package/libs/components/dialog/dialog.cjs.map +1 -0
  110. package/libs/components/dialog/dialog.css +1 -1
  111. package/libs/components/dialog/dialog.css.map +1 -1
  112. package/libs/components/dialog/dialog.d.cts +105 -0
  113. package/libs/components/dialog/dialog.d.ts +105 -0
  114. package/libs/components/dialog/dialog.js +7 -0
  115. package/libs/components/dialog/dialog.js.map +1 -0
  116. package/libs/components/dialog/dialog.min.css +2 -2
  117. package/libs/components/form/fields.cjs +19 -0
  118. package/libs/components/form/fields.cjs.map +1 -0
  119. package/libs/components/form/fields.d.cts +24 -0
  120. package/libs/components/form/fields.d.ts +24 -0
  121. package/libs/components/form/fields.js +4 -0
  122. package/libs/components/form/fields.js.map +1 -0
  123. package/libs/components/form/inputs.cjs +19 -0
  124. package/libs/components/form/inputs.cjs.map +1 -0
  125. package/libs/components/form/inputs.d.cts +2 -0
  126. package/libs/components/form/inputs.d.ts +2 -0
  127. package/libs/components/form/inputs.js +4 -0
  128. package/libs/components/form/inputs.js.map +1 -0
  129. package/libs/components/form/textarea.cjs +19 -0
  130. package/libs/components/form/textarea.cjs.map +1 -0
  131. package/libs/components/form/textarea.d.cts +29 -0
  132. package/libs/components/form/textarea.d.ts +29 -0
  133. package/libs/components/form/textarea.js +4 -0
  134. package/libs/components/form/textarea.js.map +1 -0
  135. package/libs/components/heading/heading.cjs +10 -0
  136. package/libs/components/heading/heading.cjs.map +1 -0
  137. package/libs/components/heading/heading.d.cts +3 -0
  138. package/libs/components/heading/heading.d.ts +3 -0
  139. package/libs/components/heading/heading.js +4 -0
  140. package/libs/components/heading/heading.js.map +1 -0
  141. package/libs/components/icons/icon.cjs +19 -0
  142. package/libs/components/icons/icon.cjs.map +1 -0
  143. package/libs/{icons-31ace3de.d.ts → components/icons/icon.d.cts} +151 -61
  144. package/libs/components/icons/icon.d.ts +445 -0
  145. package/libs/components/icons/icon.js +4 -0
  146. package/libs/components/icons/icon.js.map +1 -0
  147. package/libs/components/images/img.css +1 -1
  148. package/libs/components/images/img.css.map +1 -1
  149. package/libs/components/images/img.min.css +2 -2
  150. package/libs/components/link/link.cjs +19 -0
  151. package/libs/components/link/link.cjs.map +1 -0
  152. package/libs/components/link/link.d.cts +19 -0
  153. package/libs/components/link/link.d.ts +19 -0
  154. package/libs/components/link/link.js +4 -0
  155. package/libs/components/link/link.js.map +1 -0
  156. package/libs/components/list/list.cjs +23 -0
  157. package/libs/components/list/list.cjs.map +1 -0
  158. package/libs/components/list/list.d.cts +39 -0
  159. package/libs/components/list/list.d.ts +39 -0
  160. package/libs/components/list/list.js +4 -0
  161. package/libs/components/list/list.js.map +1 -0
  162. package/libs/components/modal.cjs +14 -0
  163. package/libs/components/modal.cjs.map +1 -0
  164. package/libs/components/modal.d.cts +35 -0
  165. package/libs/components/modal.d.ts +35 -0
  166. package/libs/components/modal.js +5 -0
  167. package/libs/components/modal.js.map +1 -0
  168. package/libs/components/nav/nav.cjs +28 -0
  169. package/libs/components/nav/nav.cjs.map +1 -0
  170. package/libs/components/nav/nav.d.cts +44 -0
  171. package/libs/components/nav/nav.d.ts +44 -0
  172. package/libs/components/nav/nav.js +5 -0
  173. package/libs/components/nav/nav.js.map +1 -0
  174. package/libs/components/popover/popover.cjs +23 -0
  175. package/libs/components/popover/popover.cjs.map +1 -0
  176. package/libs/components/popover/popover.d.cts +40 -0
  177. package/libs/components/popover/popover.d.ts +40 -0
  178. package/libs/components/popover/popover.js +4 -0
  179. package/libs/components/popover/popover.js.map +1 -0
  180. package/libs/components/tables/table.cjs +21 -0
  181. package/libs/components/tables/table.cjs.map +1 -0
  182. package/libs/components/tables/table.d.cts +36 -0
  183. package/libs/components/tables/table.d.ts +36 -0
  184. package/libs/components/tables/table.js +4 -0
  185. package/libs/components/tables/table.js.map +1 -0
  186. package/libs/components/text/text.cjs +23 -0
  187. package/libs/components/text/text.cjs.map +1 -0
  188. package/libs/components/text/text.d.cts +30 -0
  189. package/libs/components/text/text.d.ts +30 -0
  190. package/libs/components/text/text.js +4 -0
  191. package/libs/components/text/text.js.map +1 -0
  192. package/libs/heading-3648c538.d.ts +250 -0
  193. package/libs/hooks.cjs +7 -0
  194. package/libs/hooks.d.cts +5 -0
  195. package/libs/hooks.d.ts +5 -0
  196. package/libs/hooks.js +3 -0
  197. package/libs/icons.cjs +3 -2
  198. package/libs/icons.d.cts +3 -1
  199. package/libs/icons.d.ts +3 -1
  200. package/libs/icons.js +2 -1
  201. package/libs/index.cjs +174 -62
  202. package/libs/index.cjs.map +1 -1
  203. package/libs/index.css +1 -1
  204. package/libs/index.css.map +1 -1
  205. package/libs/index.d.cts +529 -446
  206. package/libs/index.d.ts +529 -446
  207. package/libs/index.js +36 -7
  208. package/libs/index.js.map +1 -1
  209. package/libs/inputs-f3a216db.d.ts +45 -0
  210. package/libs/ui-645f95b5.d.ts +285 -0
  211. package/package.json +2 -2
  212. package/src/components/README-UI.mdx +416 -0
  213. package/src/components/alert/ACCESSIBILITY.md +319 -0
  214. package/src/components/alert/README.mdx +475 -19
  215. package/src/components/alert/alert.scss +113 -6
  216. package/src/components/alert/alert.stories.tsx +372 -0
  217. package/src/components/alert/alert.test.tsx +762 -0
  218. package/src/components/alert/alert.tsx +331 -66
  219. package/src/components/alert/views/alert-actions.tsx +13 -0
  220. package/src/components/alert/views/alert-content.tsx +17 -0
  221. package/src/components/alert/views/alert-icon.tsx +53 -0
  222. package/src/components/alert/views/alert-screen-reader-text.tsx +30 -0
  223. package/src/components/alert/views/alert-title.tsx +23 -0
  224. package/src/components/alert/views/alert-view.tsx +158 -0
  225. package/src/components/alert/views/index.ts +12 -0
  226. package/src/components/badge/badge.mdx +186 -49
  227. package/src/components/badge/badge.scss +20 -2
  228. package/src/components/badge/badge.stories.tsx +160 -14
  229. package/src/components/badge/badge.test.tsx +179 -0
  230. package/src/components/badge/badge.tsx +97 -4
  231. package/src/components/breadcrumbs/README.mdx +364 -45
  232. package/src/components/breadcrumbs/__snapshots__/breadcrumb.test.tsx.snap +152 -0
  233. package/src/components/breadcrumbs/breadcrumb.stories.tsx +7 -3
  234. package/src/components/breadcrumbs/breadcrumb.test.tsx +490 -0
  235. package/src/components/breadcrumbs/breadcrumb.tsx +427 -170
  236. package/src/components/button.ts +2 -0
  237. package/src/components/buttons/button.scss +34 -31
  238. package/src/components/buttons/button.stories.tsx +35 -0
  239. package/src/components/card.ts +2 -0
  240. package/src/components/cards/README.mdx +657 -0
  241. package/src/components/cards/card.scss +22 -0
  242. package/src/components/cards/card.stories.tsx +167 -5
  243. package/src/components/cards/card.test.tsx +360 -20
  244. package/src/components/cards/card.tsx +200 -79
  245. package/src/components/cards/card.types.ts +135 -0
  246. package/src/components/cards/card.utils.ts +79 -0
  247. package/src/components/details/ACCESSIBILITY-REVIEW-LIVE.md +1050 -0
  248. package/src/components/details/ACCESSIBILITY-REVIEW.md +502 -0
  249. package/src/components/details/README.mdx +437 -69
  250. package/src/components/details/details.scss +16 -0
  251. package/src/components/details/details.test.tsx +385 -0
  252. package/src/components/details/details.tsx +101 -69
  253. package/src/components/details/details.types.ts +76 -0
  254. package/src/components/dialog/README.mdx +513 -110
  255. package/src/components/dialog/dialog-modal.tsx +79 -56
  256. package/src/components/dialog/dialog.scss +53 -3
  257. package/src/components/dialog/dialog.stories.tsx +10 -7
  258. package/src/components/dialog/dialog.test.tsx +450 -0
  259. package/src/components/dialog/dialog.tsx +69 -59
  260. package/src/components/dialog/dialog.types.ts +133 -0
  261. package/src/components/dialog/views/dialog-footer.tsx +54 -11
  262. package/src/components/dialog/views/dialog-header.tsx +20 -15
  263. package/src/components/heading/heading.stories.tsx +44 -4
  264. package/src/components/heading/heading.tsx +89 -23
  265. package/src/components/icons/README.mdx +332 -0
  266. package/src/components/icons/icon.stories.tsx +74 -1
  267. package/src/components/icons/icon.tsx +89 -1
  268. package/src/components/icons/types.ts +47 -0
  269. package/src/components/images/README.mdx +340 -24
  270. package/src/components/images/img.scss +19 -3
  271. package/src/components/images/img.stories.tsx +424 -15
  272. package/src/components/images/img.test.tsx +354 -25
  273. package/src/components/images/img.tsx +186 -63
  274. package/src/components/images/img.types.ts +211 -0
  275. package/src/components/modal.ts +1 -0
  276. package/src/components/title/MIGRATION.md +199 -0
  277. package/src/components/title/README.md +326 -0
  278. package/src/components/title/README.mdx +452 -0
  279. package/src/components/title/title.stories.tsx +393 -0
  280. package/src/components/title/title.test.tsx +251 -0
  281. package/src/components/title/title.tsx +219 -0
  282. package/src/components/ui.stories.tsx +894 -0
  283. package/src/components/ui.test.tsx +559 -0
  284. package/src/components/ui.tsx +266 -15
  285. package/src/components/word-count/README.md +240 -0
  286. package/src/hooks.ts +1 -0
  287. package/src/index.ts +51 -19
  288. package/src/sass/_properties.scss +1 -0
  289. package/src/styles/alert/alert.css +94 -4
  290. package/src/styles/alert/alert.css.map +1 -1
  291. package/src/styles/badge/badge.css +20 -2
  292. package/src/styles/badge/badge.css.map +1 -1
  293. package/src/styles/buttons/button.css +31 -31
  294. package/src/styles/buttons/button.css.map +1 -1
  295. package/src/styles/cards/card.css +16 -0
  296. package/src/styles/cards/card.css.map +1 -1
  297. package/src/styles/details/details.css +19 -0
  298. package/src/styles/details/details.css.map +1 -1
  299. package/src/styles/dialog/dialog.css +43 -2
  300. package/src/styles/dialog/dialog.css.map +1 -1
  301. package/src/styles/images/img.css +15 -3
  302. package/src/styles/images/img.css.map +1 -1
  303. package/src/styles/index.css +240 -43
  304. package/src/styles/index.css.map +1 -1
  305. package/src/test/setup.d.ts +9 -0
  306. package/src/test/setup.ts +53 -1
  307. package/libs/chunk-PWVRDQ3R.js +0 -8
  308. package/libs/chunk-PWVRDQ3R.js.map +0 -1
  309. package/libs/chunk-SVS4MX3U.cjs +0 -31
  310. package/libs/chunk-SVS4MX3U.cjs.map +0 -1
  311. package/src/components/cards/README.md +0 -80
  312. package/src/components/dialog/hooks/useClickOutside.ts +0 -33
@@ -1,3 +1,3 @@
1
- button{--btn-xs: 0.7rem;--btn-sm: 0.8rem;--btn-md: 0.95rem;--btn-lg: 1.3125rem;--btn-pill: 100rem;--btn-height: 1.8rem;--fs: 0.95rem;--btn-fs: 0.9375rem;--btn-bg: lightgray;--btn-width: max-content;--btn-calc-height: var(--btn-height, calc(36rem / 16));font-size:var(--btn-fs);font-weight:var(--btn-fw, 500);height:var(--btn-height, 1.55rem);max-height:var(--btn-calc-height);min-height:.8rem;place-items:var(--btn-place, center);padding-inline:var(--btn-px, calc(var(--btn-fs) + 1.1%));padding-block:var(--btn-py, calc(var(--btn-fs) + 0.75%));border:var(--btn-bdr, none);border-radius:var(--btn-rds, 0.375rem);-webkit-text-decoration:var(--btn-deco, none);text-decoration:var(--btn-deco, none);color:var(--btn-cl, currentColor);display:var(--btn-dsp, inline-flex);gap:var(--btn-gap, 0.2rem);white-space:var(--btn-wspc, inherit);margin:var(--btn-spc, 0);transition:var(--tran-all);background-color:var(--btn-bg, var(--btn));outline:none;width:var(--btn-width);display:inline-flex;align-items:center;line-height:0cap}button[type]{background-color:var(--btn-bg, var(--neutral-300));--btn-bdr: solid var(--btn-sg)}button[type=submit],button[style*=submit]{--btn-bg: var(--primary-500, royal-blue);--btn-color: white}button[disabled],button[aria-disabled=true]{cursor:var(--btn-cursor, not-allowed)}button[disabled]:is(:hover,:focus),button[aria-disabled=true]:is(:hover,:focus){transform:none}button:is(:hover,:focus){background-color:var(--btn-bg, var(--btn, lightgray));filter:invert(1) hue-rotate 180deg;transform:scale(0.95) var(--line-style, solid);outline-offset:var(--line-offset, 1px)}button:is(:hover,:focus)[aria-disabled=true]{transform:none;opacity:var(--btn-opacity, 0.5)}button[type=reset]{--btn-bg: transparent;--btn-color: gray;--btn-bdr: gray thin solid}button[type=submit]{--btn-bg: var(--primary-700, blue);--btn-cl: #fff;--btn-color: rgb(231, 231, 231);--btn-border: none}button[data-fp-btn~=pill],button[data-btn~=pill],button[data-style~=pill]{border-radius:var(--btn-pill, 100rem)}button[data-btn~=xs]{padding-inline:var(--btn-xs);--btn-fs: var(--btn-xs);--btn-height: 0.5rem;text-transform:uppercase}button[data-btn~=sm]{--btn-fs: var(--btn-sm);--btn-height: 0.8rem}button[data-btn~=md]{--btn-fs: var(--btn-md);--btn-height: 1.3rem}button[data-btn~=lg]{--btn-fs: var(--btn-lg);--btn-height: 1.8rem}button[data-btn~=icon]{padding:unset;height:unset;--btn-bg: transparent;min-width:1.5rem;min-height:1.5rem;text-align:center;display:inline-flex;align-items:center;justify-content:center}button[data-btn~=text]{--btn-bg: transparent;--btn-cl: currentColor;--btn-bdr: none;--btn-height: unset;--btn-width: unset;--btn-py: 0.75rem;--btn-px: 0.75rem}button[data-btn~=text]:is(:hover,:focus){background-color:rgba(0,0,0,0);outline:.07rem solid var(--btn-cl);outline-offset:0}
1
+ button{--btn-xs: 0.6875rem;--btn-sm: 0.8125rem;--btn-md: 0.9375rem;--btn-lg: 1.125rem;--btn-pill: 100rem;--btn-fs: var(--btn-md);--btn-height: calc(var(--btn-fs) * 2.25);--btn-bg: lightgray;--btn-width: max-content;font-size:var(--btn-fs);font-weight:var(--btn-fw, 500);height:var(--btn-height);place-items:var(--btn-place, center);padding-inline:var(--btn-px, calc(var(--btn-fs) * 1.5));padding-block:var(--btn-py, calc(var(--btn-fs) * 0.5));border:var(--btn-bdr, none);border-radius:var(--btn-rds, 0.375rem);-webkit-text-decoration:var(--btn-deco, none);text-decoration:var(--btn-deco, none);color:var(--btn-cl, currentColor);display:var(--btn-dsp, inline-flex);gap:var(--btn-gap, 0.2rem);white-space:var(--btn-wspc, inherit);margin:var(--btn-spc, 0);transition:var(--btn-transition, var(--tran-all, all 0.3s cubic-bezier(0.4, 0, 0.2, 1)));background-color:var(--btn-bg, var(--btn));outline:none;width:var(--btn-width);display:inline-flex;align-items:center;line-height:0cap}button[type]{background-color:var(--btn-bg, var(--neutral-300));--btn-bdr: solid var(--btn-sg)}button[type=submit],button[style*=submit]{--btn-bg: var(--primary-500, royal-blue);--btn-color: white}button[disabled],button[aria-disabled=true]{cursor:var(--btn-cursor, not-allowed)}button[disabled]:is(:hover,:focus),button[aria-disabled=true]:is(:hover,:focus){transform:none}button:is(:hover,:focus){filter:var(--btn-hover-filter, brightness(0.85));transform:var(--btn-hover-transform, scale(1.03));outline:var(--btn-hover-outline, thin);outline-offset:var(--line-offset, 1px)}button:is(:hover,:focus)[aria-disabled=true]{transform:none;opacity:var(--btn-opacity, 0.5);filter:none}button[type=reset]{--btn-bg: transparent;--btn-color: gray;--btn-bdr: gray thin solid}button[type=submit]{--btn-bg: var(--primary-700, blue);--btn-cl: #fff;--btn-color: rgb(231, 231, 231);--btn-border: none}button[data-fp-btn~=pill],button[data-btn~=pill],button[data-style~=pill]{border-radius:var(--btn-pill, 100rem)}button[data-btn~=xs],button .btn-xs{--btn-fs: var(--btn-xs);text-transform:uppercase}button[data-btn~=sm],button .btn-sm{--btn-fs: var(--btn-sm)}button[data-btn~=md],button .btn-md{--btn-fs: var(--btn-md)}button[data-btn~=lg],button .btn-lg{--btn-fs: var(--btn-lg)}button[data-btn~=icon],button .btn-icon{padding:unset;height:unset;--btn-bg: transparent;min-width:1.5rem;min-height:1.5rem;text-align:center;display:inline-flex;align-items:center;justify-content:center}button[data-btn~=text],button .btn-text{--btn-bg: transparent;--btn-cl: currentColor;--btn-bdr: none;--btn-height: unset;--btn-width: unset;--btn-py: 0.75rem;--btn-px: 0.75rem}button[data-btn~=text]:is(:hover,:focus),button .btn-text:is(:hover,:focus){background-color:color-mix(in srgb, var(--btn-cl) 10%, transparent);outline:.025rem solid var(--btn-cl);outline-offset:0;filter:none}
2
2
 
3
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FDRSxnQkFBQSxDQUNBLGdCQUFBLENBQ0EsaUJBQUEsQ0FDQSxtQkFBQSxDQUNBLGtCQUFBLENBQ0Esb0JBQUEsQ0FDQSxhQUFBLENBQ0EsbUJBQUEsQ0FDQSxtQkFBQSxDQUNBLHdCQUFBLENBQ0Esc0RBQUEsQ0FFQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsaUNBQUEsQ0FDQSxpQ0FBQSxDQUNBLGdCQUFBLENBQ0Esb0NBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0EsMkJBQUEsQ0FDQSxzQ0FBQSxDQUNBLDZDQUFBLENBQUEscUNBQUEsQ0FDQSxpQ0FBQSxDQUNBLG1DQUFBLENBQ0EsMEJBQUEsQ0FDQSxvQ0FBQSxDQUNBLHdCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQ0FBQSxDQUNBLFlBQUEsQ0FDQSxzQkFBQSxDQUNBLG1CQUFBLENBQ0Esa0JBQUEsQ0FDQSxnQkFBQSxDQUVBLGFBQ0Usa0RBQUEsQ0FDQSw4QkFBQSxDQUdGLDBDQUVFLHdDQUFBLENBQ0Esa0JBQUEsQ0FHRiw0Q0FFRSxxQ0FBQSxDQUdBLGdGQUNFLGNBQUEsQ0FPSix5QkFFRSxxREFBQSxDQUNBLGtDQUFBLENBQ0EsOENBQUEsQ0FDQSxzQ0FBQSxDQUVBLDZDQUNFLGNBQUEsQ0FDQSwrQkFBQSxDQUlKLG1CQUNFLHFCQUFBLENBQ0EsaUJBQUEsQ0FDQSwwQkFBQSxDQUdGLG9CQUNFLGtDQUFBLENBQ0EsY0FBQSxDQUNBLCtCQUFBLENBQ0Esa0JBQUEsQ0FHRiwwRUFHRSxxQ0FBQSxDQUdGLHFCQUNFLDRCQUFBLENBQ0EsdUJBQUEsQ0FDQSxvQkFBQSxDQUNBLHdCQUFBLENBR0YscUJBQ0UsdUJBQUEsQ0FDQSxvQkFBQSxDQUdGLHFCQUNFLHVCQUFBLENBQ0Esb0JBQUEsQ0FHRixxQkFDRSx1QkFBQSxDQUNBLG9CQUFBLENBR0YsdUJBQ0UsYUFBQSxDQUNBLFlBQUEsQ0FDQSxxQkFBQSxDQUNBLGdCQUFBLENBQ0EsaUJBQUEsQ0FDQSxpQkFBQSxDQUNBLG1CQUFBLENBQ0Esa0JBQUEsQ0FDQSxzQkFBQSxDQUdGLHVCQUNFLHFCQUFBLENBQ0Esc0JBQUEsQ0FDQSxlQUFBLENBQ0EsbUJBQUEsQ0FDQSxrQkFBQSxDQUNBLGlCQUFBLENBQ0EsaUJBQUEsQ0FDQSx5Q0FDRSw4QkFBQSxDQUNBLGtDQUFBLENBQ0EsZ0JBQUEiLCJmaWxlIjoiYnV0dG9uLm1pbi5jc3MifQ== */
3
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FDRSxtQkFBQSxDQUNBLG1CQUFBLENBQ0EsbUJBQUEsQ0FDQSxrQkFBQSxDQUNBLGtCQUFBLENBQ0EsdUJBQUEsQ0FDQSx3Q0FBQSxDQUNBLG1CQUFBLENBQ0Esd0JBQUEsQ0FFQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0Esd0JBQUEsQ0FDQSxvQ0FBQSxDQUNBLHVEQUFBLENBQ0Esc0RBQUEsQ0FDQSwyQkFBQSxDQUNBLHNDQUFBLENBQ0EsNkNBQUEsQ0FBQSxxQ0FBQSxDQUNBLGlDQUFBLENBQ0EsbUNBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0Esd0JBQUEsQ0FDQSx3RkFBQSxDQUlBLDBDQUFBLENBQ0EsWUFBQSxDQUNBLHNCQUFBLENBQ0EsbUJBQUEsQ0FDQSxrQkFBQSxDQUNBLGdCQUFBLENBRUEsYUFDRSxrREFBQSxDQUNBLDhCQUFBLENBR0YsMENBRUUsd0NBQUEsQ0FDQSxrQkFBQSxDQUdGLDRDQUVFLHFDQUFBLENBR0EsZ0ZBQ0UsY0FBQSxDQU9KLHlCQUVFLGdEQUFBLENBQ0EsaURBQUEsQ0FDQSxzQ0FBQSxDQUNBLHNDQUFBLENBR0EsNkNBQ0UsY0FBQSxDQUNBLCtCQUFBLENBQ0EsV0FBQSxDQUlKLG1CQUNFLHFCQUFBLENBQ0EsaUJBQUEsQ0FDQSwwQkFBQSxDQUdGLG9CQUNFLGtDQUFBLENBQ0EsY0FBQSxDQUNBLCtCQUFBLENBQ0Esa0JBQUEsQ0FHRiwwRUFHRSxxQ0FBQSxDQUdGLG9DQUVFLHVCQUFBLENBQ0Esd0JBQUEsQ0FHRixvQ0FFRSx1QkFBQSxDQUdGLG9DQUVFLHVCQUFBLENBR0Ysb0NBRUUsdUJBQUEsQ0FHRix3Q0FFRSxhQUFBLENBQ0EsWUFBQSxDQUNBLHFCQUFBLENBQ0EsZ0JBQUEsQ0FDQSxpQkFBQSxDQUNBLGlCQUFBLENBQ0EsbUJBQUEsQ0FDQSxrQkFBQSxDQUNBLHNCQUFBLENBR0Ysd0NBRUUscUJBQUEsQ0FDQSxzQkFBQSxDQUNBLGVBQUEsQ0FDQSxtQkFBQSxDQUNBLGtCQUFBLENBQ0EsaUJBQUEsQ0FDQSxpQkFBQSxDQUNBLDRFQUNFLG1FQUFBLENBQ0EsbUNBQUEsQ0FDQSxnQkFBQSxDQUNBLFdBQUEiLCJmaWxlIjoiYnV0dG9uLm1pbi5jc3MifQ== */
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var chunkP2DC76ZZ_cjs = require('../chunk-P2DC76ZZ.cjs');
6
+ require('../chunk-L75OQKEI.cjs');
7
+
8
+
9
+
10
+ Object.defineProperty(exports, 'Card', {
11
+ enumerable: true,
12
+ get: function () { return chunkP2DC76ZZ_cjs.d; }
13
+ });
14
+ Object.defineProperty(exports, 'Content', {
15
+ enumerable: true,
16
+ get: function () { return chunkP2DC76ZZ_cjs.b; }
17
+ });
18
+ Object.defineProperty(exports, 'Footer', {
19
+ enumerable: true,
20
+ get: function () { return chunkP2DC76ZZ_cjs.c; }
21
+ });
22
+ Object.defineProperty(exports, 'Title', {
23
+ enumerable: true,
24
+ get: function () { return chunkP2DC76ZZ_cjs.a; }
25
+ });
26
+ Object.defineProperty(exports, 'default', {
27
+ enumerable: true,
28
+ get: function () { return chunkP2DC76ZZ_cjs.e; }
29
+ });
30
+ //# sourceMappingURL=out.js.map
31
+ //# sourceMappingURL=card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,302 @@
1
+ import React__default from 'react';
2
+ import { U as UI } from '../ui-645f95b5.js';
3
+
4
+ /**
5
+ * Base props shared across all Card sub-components.
6
+ *
7
+ * This interface provides common styling and structural props
8
+ * that all Card sub-components support.
9
+ */
10
+ interface CardSubComponentProps {
11
+ /** CSS class names to apply */
12
+ className?: string;
13
+ /** Inline styles to apply */
14
+ style?: React__default.CSSProperties;
15
+ /** Child elements to render */
16
+ children?: React__default.ReactNode;
17
+ }
18
+ /**
19
+ * Props for the Card.Title sub-component.
20
+ *
21
+ * @extends CardSubComponentProps
22
+ */
23
+ interface CardTitleProps extends CardSubComponentProps {
24
+ /**
25
+ * HTML element to render as.
26
+ * @default 'h3'
27
+ */
28
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
29
+ /**
30
+ * HTML id attribute for the title.
31
+ * Useful for aria-labelledby references.
32
+ */
33
+ id?: string;
34
+ }
35
+ /**
36
+ * Props for the Card.Content sub-component.
37
+ *
38
+ * @extends CardSubComponentProps
39
+ */
40
+ interface CardContentProps extends CardSubComponentProps {
41
+ /**
42
+ * HTML element to render as.
43
+ * Use 'article' for standalone content, 'div' for generic containers.
44
+ * @default 'article'
45
+ */
46
+ as?: 'article' | 'div' | 'section';
47
+ }
48
+ /**
49
+ * Props for the Card.Footer sub-component.
50
+ *
51
+ * @extends CardSubComponentProps
52
+ */
53
+ interface CardFooterProps extends CardSubComponentProps {
54
+ /**
55
+ * HTML element to render as.
56
+ * @default 'div'
57
+ */
58
+ as?: 'div' | 'footer';
59
+ }
60
+ /**
61
+ * Props for the main Card component.
62
+ *
63
+ * Extends all props from the UI component while adding Card-specific functionality.
64
+ * Supports polymorphic rendering via the `as` prop.
65
+ *
66
+ * @extends React.ComponentProps<typeof UI>
67
+ */
68
+ interface CardProps extends React__default.ComponentProps<typeof UI> {
69
+ /**
70
+ * HTML element to render the Card as.
71
+ * Inherits from UI component's polymorphic `as` prop.
72
+ * @default 'div'
73
+ */
74
+ as?: React__default.ElementType;
75
+ /**
76
+ * ARIA role for the card.
77
+ * Use 'article' for standalone content, 'region' with aria-label for landmarks.
78
+ * @example
79
+ * ```tsx
80
+ * <Card role="article">...</Card>
81
+ * <Card role="region" aria-label="User profile">...</Card>
82
+ * ```
83
+ */
84
+ role?: string;
85
+ /**
86
+ * Accessible label for the card.
87
+ * Required when using interactive cards or role="region".
88
+ * @example
89
+ * ```tsx
90
+ * <Card role="region" aria-label="Featured products">...</Card>
91
+ * ```
92
+ */
93
+ 'aria-label'?: string;
94
+ /**
95
+ * ID of element that labels this card.
96
+ * @example
97
+ * ```tsx
98
+ * <Card aria-labelledby="card-title-1">
99
+ * <Card.Title id="card-title-1">Title</Card.Title>
100
+ * </Card>
101
+ * ```
102
+ */
103
+ 'aria-labelledby'?: string;
104
+ /**
105
+ * ID of element that describes this card.
106
+ */
107
+ 'aria-describedby'?: string;
108
+ /**
109
+ * Makes the card interactive with keyboard support.
110
+ * Adds tabIndex, role="button", and keyboard event handlers.
111
+ * @default false
112
+ */
113
+ interactive?: boolean;
114
+ /**
115
+ * Click handler for interactive cards.
116
+ * When provided without `interactive`, a warning will be logged in development.
117
+ */
118
+ onClick?: (event: React__default.MouseEvent | React__default.KeyboardEvent) => void;
119
+ /**
120
+ * Tab index for keyboard navigation.
121
+ * Automatically set to 0 when `interactive` is true.
122
+ */
123
+ tabIndex?: number;
124
+ }
125
+
126
+ /**
127
+ * Card.Title - Title sub-component for Card
128
+ *
129
+ * Renders a heading element for the card title. Defaults to h3 for proper
130
+ * document outline, but can be customized via the `as` prop.
131
+ *
132
+ * ## Accessibility
133
+ * - Use appropriate heading level based on document structure
134
+ * - Combine with `aria-labelledby` on parent Card for accessible names
135
+ *
136
+ * @example
137
+ * ```tsx
138
+ * <Card aria-labelledby="card-title-1">
139
+ * <Card.Title id="card-title-1">Featured Product</Card.Title>
140
+ * </Card>
141
+ * ```
142
+ *
143
+ * @example
144
+ * ```tsx
145
+ * // Custom heading level
146
+ * <Card.Title as="h2">Section Title</Card.Title>
147
+ * ```
148
+ */
149
+ declare const Title: {
150
+ ({ children, className, style, as, ...props }: CardTitleProps): React__default.JSX.Element;
151
+ displayName: string;
152
+ };
153
+ /**
154
+ * Card.Content - Content sub-component for Card
155
+ *
156
+ * Renders the main content area of the card. Defaults to `<article>` for
157
+ * standalone content, but can be changed to `div` or `section` via the `as` prop.
158
+ *
159
+ * ## Semantic HTML Guidelines
160
+ * - Use `article` (default) for self-contained, syndicate-able content
161
+ * - Use `div` for generic content containers
162
+ * - Use `section` for thematic groupings with a heading
163
+ *
164
+ * @example
165
+ * ```tsx
166
+ * <Card>
167
+ * <Card.Title>Article Title</Card.Title>
168
+ * <Card.Content>
169
+ * <p>This is standalone content...</p>
170
+ * </Card.Content>
171
+ * </Card>
172
+ * ```
173
+ *
174
+ * @example
175
+ * ```tsx
176
+ * // Generic container (not standalone content)
177
+ * <Card.Content as="div">
178
+ * <p>Generic content...</p>
179
+ * </Card.Content>
180
+ * ```
181
+ */
182
+ declare const Content: {
183
+ ({ children, className, style, as, ...props }: CardContentProps): React__default.JSX.Element;
184
+ displayName: string;
185
+ };
186
+ /**
187
+ * Card.Footer - Footer sub-component for Card
188
+ *
189
+ * Renders a footer section for the card. Use for actions, metadata, or
190
+ * supplementary information.
191
+ *
192
+ * @example
193
+ * ```tsx
194
+ * <Card>
195
+ * <Card.Title>Product</Card.Title>
196
+ * <Card.Content>Description...</Card.Content>
197
+ * <Card.Footer>
198
+ * <button>Add to Cart</button>
199
+ * <span>$29.99</span>
200
+ * </Card.Footer>
201
+ * </Card>
202
+ * ```
203
+ *
204
+ * @example
205
+ * ```tsx
206
+ * // Semantic footer element
207
+ * <Card.Footer as="footer">
208
+ * <p>Last updated: 2024-01-15</p>
209
+ * </Card.Footer>
210
+ * ```
211
+ */
212
+ declare const Footer: {
213
+ ({ children, className, style, as, ...props }: CardFooterProps): React__default.JSX.Element;
214
+ displayName: string;
215
+ };
216
+ /**
217
+ * Card - A flexible, accessible card component with compound component pattern
218
+ *
219
+ * The Card component provides a container for grouping related content and actions.
220
+ * It follows the compound component pattern, exposing `Card.Title`, `Card.Content`,
221
+ * and `Card.Footer` sub-components for structured layouts.
222
+ *
223
+ * ## Features
224
+ * - **Polymorphic rendering**: Render as any HTML element via `as` prop
225
+ * - **Compound components**: Structured sub-components for consistent layouts
226
+ * - **Interactive variant**: Built-in keyboard navigation and ARIA support
227
+ * - **Fully accessible**: WCAG 2.1 AA compliant with proper semantic HTML
228
+ *
229
+ * ## Accessibility
230
+ *
231
+ * ### Non-Interactive Cards
232
+ * - Use semantic HTML: `article` for standalone content, `section` for groupings
233
+ * - Provide accessible names with `aria-labelledby` referencing the title
234
+ *
235
+ * ### Interactive Cards (Clickable)
236
+ * - Set `interactive={true}` to enable keyboard navigation (Enter/Space)
237
+ * - Provide accessible name via `aria-label` or `aria-labelledby`
238
+ * - Ensure adequate focus indicators (handled by CSS)
239
+ *
240
+ * @example
241
+ * // Basic card with compound components
242
+ * ```tsx
243
+ * <Card>
244
+ * <Card.Title>Product Name</Card.Title>
245
+ * <Card.Content>
246
+ * <p>Product description goes here...</p>
247
+ * </Card.Content>
248
+ * <Card.Footer>
249
+ * <button>Buy Now</button>
250
+ * </Card.Footer>
251
+ * </Card>
252
+ * ```
253
+ *
254
+ * @example
255
+ * // Accessible interactive card
256
+ * ```tsx
257
+ * <Card
258
+ * interactive
259
+ * aria-label="View product details"
260
+ * onClick={() => navigate('/product/123')}
261
+ * >
262
+ * <Card.Title>Product Name</Card.Title>
263
+ * <Card.Content>Click anywhere to view details</Card.Content>
264
+ * </Card>
265
+ * ```
266
+ *
267
+ * @example
268
+ * // Semantic article card with accessible name
269
+ * ```tsx
270
+ * <Card as="article" aria-labelledby="article-title">
271
+ * <Card.Title id="article-title">Article Headline</Card.Title>
272
+ * <Card.Content>Article body...</Card.Content>
273
+ * </Card>
274
+ * ```
275
+ *
276
+ * @example
277
+ * // Card as a landmark region
278
+ * ```tsx
279
+ * <Card role="region" aria-label="Featured products">
280
+ * <Card.Title>Featured</Card.Title>
281
+ * <Card.Content>...</Card.Content>
282
+ * </Card>
283
+ * ```
284
+ */
285
+ declare const Card: {
286
+ ({ as, styles, children, classes, id, interactive, onClick, tabIndex, role, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...props }: CardProps): React__default.JSX.Element;
287
+ displayName: string;
288
+ Title: {
289
+ ({ children, className, style, as, ...props }: CardTitleProps): React__default.JSX.Element;
290
+ displayName: string;
291
+ };
292
+ Content: {
293
+ ({ children, className, style, as, ...props }: CardContentProps): React__default.JSX.Element;
294
+ displayName: string;
295
+ };
296
+ Footer: {
297
+ ({ children, className, style, as, ...props }: CardFooterProps): React__default.JSX.Element;
298
+ displayName: string;
299
+ };
300
+ };
301
+
302
+ export { Card, CardProps, Content, Footer, Title, Card as default };
@@ -0,0 +1,302 @@
1
+ import React__default from 'react';
2
+ import { U as UI } from '../ui-645f95b5.js';
3
+
4
+ /**
5
+ * Base props shared across all Card sub-components.
6
+ *
7
+ * This interface provides common styling and structural props
8
+ * that all Card sub-components support.
9
+ */
10
+ interface CardSubComponentProps {
11
+ /** CSS class names to apply */
12
+ className?: string;
13
+ /** Inline styles to apply */
14
+ style?: React__default.CSSProperties;
15
+ /** Child elements to render */
16
+ children?: React__default.ReactNode;
17
+ }
18
+ /**
19
+ * Props for the Card.Title sub-component.
20
+ *
21
+ * @extends CardSubComponentProps
22
+ */
23
+ interface CardTitleProps extends CardSubComponentProps {
24
+ /**
25
+ * HTML element to render as.
26
+ * @default 'h3'
27
+ */
28
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
29
+ /**
30
+ * HTML id attribute for the title.
31
+ * Useful for aria-labelledby references.
32
+ */
33
+ id?: string;
34
+ }
35
+ /**
36
+ * Props for the Card.Content sub-component.
37
+ *
38
+ * @extends CardSubComponentProps
39
+ */
40
+ interface CardContentProps extends CardSubComponentProps {
41
+ /**
42
+ * HTML element to render as.
43
+ * Use 'article' for standalone content, 'div' for generic containers.
44
+ * @default 'article'
45
+ */
46
+ as?: 'article' | 'div' | 'section';
47
+ }
48
+ /**
49
+ * Props for the Card.Footer sub-component.
50
+ *
51
+ * @extends CardSubComponentProps
52
+ */
53
+ interface CardFooterProps extends CardSubComponentProps {
54
+ /**
55
+ * HTML element to render as.
56
+ * @default 'div'
57
+ */
58
+ as?: 'div' | 'footer';
59
+ }
60
+ /**
61
+ * Props for the main Card component.
62
+ *
63
+ * Extends all props from the UI component while adding Card-specific functionality.
64
+ * Supports polymorphic rendering via the `as` prop.
65
+ *
66
+ * @extends React.ComponentProps<typeof UI>
67
+ */
68
+ interface CardProps extends React__default.ComponentProps<typeof UI> {
69
+ /**
70
+ * HTML element to render the Card as.
71
+ * Inherits from UI component's polymorphic `as` prop.
72
+ * @default 'div'
73
+ */
74
+ as?: React__default.ElementType;
75
+ /**
76
+ * ARIA role for the card.
77
+ * Use 'article' for standalone content, 'region' with aria-label for landmarks.
78
+ * @example
79
+ * ```tsx
80
+ * <Card role="article">...</Card>
81
+ * <Card role="region" aria-label="User profile">...</Card>
82
+ * ```
83
+ */
84
+ role?: string;
85
+ /**
86
+ * Accessible label for the card.
87
+ * Required when using interactive cards or role="region".
88
+ * @example
89
+ * ```tsx
90
+ * <Card role="region" aria-label="Featured products">...</Card>
91
+ * ```
92
+ */
93
+ 'aria-label'?: string;
94
+ /**
95
+ * ID of element that labels this card.
96
+ * @example
97
+ * ```tsx
98
+ * <Card aria-labelledby="card-title-1">
99
+ * <Card.Title id="card-title-1">Title</Card.Title>
100
+ * </Card>
101
+ * ```
102
+ */
103
+ 'aria-labelledby'?: string;
104
+ /**
105
+ * ID of element that describes this card.
106
+ */
107
+ 'aria-describedby'?: string;
108
+ /**
109
+ * Makes the card interactive with keyboard support.
110
+ * Adds tabIndex, role="button", and keyboard event handlers.
111
+ * @default false
112
+ */
113
+ interactive?: boolean;
114
+ /**
115
+ * Click handler for interactive cards.
116
+ * When provided without `interactive`, a warning will be logged in development.
117
+ */
118
+ onClick?: (event: React__default.MouseEvent | React__default.KeyboardEvent) => void;
119
+ /**
120
+ * Tab index for keyboard navigation.
121
+ * Automatically set to 0 when `interactive` is true.
122
+ */
123
+ tabIndex?: number;
124
+ }
125
+
126
+ /**
127
+ * Card.Title - Title sub-component for Card
128
+ *
129
+ * Renders a heading element for the card title. Defaults to h3 for proper
130
+ * document outline, but can be customized via the `as` prop.
131
+ *
132
+ * ## Accessibility
133
+ * - Use appropriate heading level based on document structure
134
+ * - Combine with `aria-labelledby` on parent Card for accessible names
135
+ *
136
+ * @example
137
+ * ```tsx
138
+ * <Card aria-labelledby="card-title-1">
139
+ * <Card.Title id="card-title-1">Featured Product</Card.Title>
140
+ * </Card>
141
+ * ```
142
+ *
143
+ * @example
144
+ * ```tsx
145
+ * // Custom heading level
146
+ * <Card.Title as="h2">Section Title</Card.Title>
147
+ * ```
148
+ */
149
+ declare const Title: {
150
+ ({ children, className, style, as, ...props }: CardTitleProps): React__default.JSX.Element;
151
+ displayName: string;
152
+ };
153
+ /**
154
+ * Card.Content - Content sub-component for Card
155
+ *
156
+ * Renders the main content area of the card. Defaults to `<article>` for
157
+ * standalone content, but can be changed to `div` or `section` via the `as` prop.
158
+ *
159
+ * ## Semantic HTML Guidelines
160
+ * - Use `article` (default) for self-contained, syndicate-able content
161
+ * - Use `div` for generic content containers
162
+ * - Use `section` for thematic groupings with a heading
163
+ *
164
+ * @example
165
+ * ```tsx
166
+ * <Card>
167
+ * <Card.Title>Article Title</Card.Title>
168
+ * <Card.Content>
169
+ * <p>This is standalone content...</p>
170
+ * </Card.Content>
171
+ * </Card>
172
+ * ```
173
+ *
174
+ * @example
175
+ * ```tsx
176
+ * // Generic container (not standalone content)
177
+ * <Card.Content as="div">
178
+ * <p>Generic content...</p>
179
+ * </Card.Content>
180
+ * ```
181
+ */
182
+ declare const Content: {
183
+ ({ children, className, style, as, ...props }: CardContentProps): React__default.JSX.Element;
184
+ displayName: string;
185
+ };
186
+ /**
187
+ * Card.Footer - Footer sub-component for Card
188
+ *
189
+ * Renders a footer section for the card. Use for actions, metadata, or
190
+ * supplementary information.
191
+ *
192
+ * @example
193
+ * ```tsx
194
+ * <Card>
195
+ * <Card.Title>Product</Card.Title>
196
+ * <Card.Content>Description...</Card.Content>
197
+ * <Card.Footer>
198
+ * <button>Add to Cart</button>
199
+ * <span>$29.99</span>
200
+ * </Card.Footer>
201
+ * </Card>
202
+ * ```
203
+ *
204
+ * @example
205
+ * ```tsx
206
+ * // Semantic footer element
207
+ * <Card.Footer as="footer">
208
+ * <p>Last updated: 2024-01-15</p>
209
+ * </Card.Footer>
210
+ * ```
211
+ */
212
+ declare const Footer: {
213
+ ({ children, className, style, as, ...props }: CardFooterProps): React__default.JSX.Element;
214
+ displayName: string;
215
+ };
216
+ /**
217
+ * Card - A flexible, accessible card component with compound component pattern
218
+ *
219
+ * The Card component provides a container for grouping related content and actions.
220
+ * It follows the compound component pattern, exposing `Card.Title`, `Card.Content`,
221
+ * and `Card.Footer` sub-components for structured layouts.
222
+ *
223
+ * ## Features
224
+ * - **Polymorphic rendering**: Render as any HTML element via `as` prop
225
+ * - **Compound components**: Structured sub-components for consistent layouts
226
+ * - **Interactive variant**: Built-in keyboard navigation and ARIA support
227
+ * - **Fully accessible**: WCAG 2.1 AA compliant with proper semantic HTML
228
+ *
229
+ * ## Accessibility
230
+ *
231
+ * ### Non-Interactive Cards
232
+ * - Use semantic HTML: `article` for standalone content, `section` for groupings
233
+ * - Provide accessible names with `aria-labelledby` referencing the title
234
+ *
235
+ * ### Interactive Cards (Clickable)
236
+ * - Set `interactive={true}` to enable keyboard navigation (Enter/Space)
237
+ * - Provide accessible name via `aria-label` or `aria-labelledby`
238
+ * - Ensure adequate focus indicators (handled by CSS)
239
+ *
240
+ * @example
241
+ * // Basic card with compound components
242
+ * ```tsx
243
+ * <Card>
244
+ * <Card.Title>Product Name</Card.Title>
245
+ * <Card.Content>
246
+ * <p>Product description goes here...</p>
247
+ * </Card.Content>
248
+ * <Card.Footer>
249
+ * <button>Buy Now</button>
250
+ * </Card.Footer>
251
+ * </Card>
252
+ * ```
253
+ *
254
+ * @example
255
+ * // Accessible interactive card
256
+ * ```tsx
257
+ * <Card
258
+ * interactive
259
+ * aria-label="View product details"
260
+ * onClick={() => navigate('/product/123')}
261
+ * >
262
+ * <Card.Title>Product Name</Card.Title>
263
+ * <Card.Content>Click anywhere to view details</Card.Content>
264
+ * </Card>
265
+ * ```
266
+ *
267
+ * @example
268
+ * // Semantic article card with accessible name
269
+ * ```tsx
270
+ * <Card as="article" aria-labelledby="article-title">
271
+ * <Card.Title id="article-title">Article Headline</Card.Title>
272
+ * <Card.Content>Article body...</Card.Content>
273
+ * </Card>
274
+ * ```
275
+ *
276
+ * @example
277
+ * // Card as a landmark region
278
+ * ```tsx
279
+ * <Card role="region" aria-label="Featured products">
280
+ * <Card.Title>Featured</Card.Title>
281
+ * <Card.Content>...</Card.Content>
282
+ * </Card>
283
+ * ```
284
+ */
285
+ declare const Card: {
286
+ ({ as, styles, children, classes, id, interactive, onClick, tabIndex, role, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...props }: CardProps): React__default.JSX.Element;
287
+ displayName: string;
288
+ Title: {
289
+ ({ children, className, style, as, ...props }: CardTitleProps): React__default.JSX.Element;
290
+ displayName: string;
291
+ };
292
+ Content: {
293
+ ({ children, className, style, as, ...props }: CardContentProps): React__default.JSX.Element;
294
+ displayName: string;
295
+ };
296
+ Footer: {
297
+ ({ children, className, style, as, ...props }: CardFooterProps): React__default.JSX.Element;
298
+ displayName: string;
299
+ };
300
+ };
301
+
302
+ export { Card, CardProps, Content, Footer, Title, Card as default };
@@ -0,0 +1,4 @@
1
+ export { d as Card, b as Content, c as Footer, a as Title, e as default } from '../chunk-JJ43O4Y5.js';
2
+ import '../chunk-KUKIVRC2.js';
3
+ //# sourceMappingURL=out.js.map
4
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1 +1 @@
1
- :root{--card-p: 2rem;--card-bg: #fff;--card-radius: calc(var(--card-p) / 4);--card-position: relative;--card-display: flex;--card-direction: column;--card-gap: 1rem}[data-card],[data-component~=card]{display:var(--card-display);flex-direction:var(--card-direction);gap:var(--card-gap);border-radius:var(--card-radius);background-color:var(--card-bg);text-align:var(--card-align, left)}[data-card] h3,[data-card] h2,[data-component~=card] h3,[data-component~=card] h2{margin-block-end:0;padding-block-end:0}[data-card]+div,[data-component~=card]+div{margin-block-start:0}[data-card]>article,[data-component~=card]>article{display:flex;flex-direction:column;flex:2}[data-card]>*:not(img),[data-component~=card]>*:not(img){padding-inline:var(--card-p)}[data-card]>*:last-child:not(img),[data-component~=card]>*:last-child:not(img){padding-block-end:var(--card-p)}[data-card]>*:first-child:not(img),[data-component~=card]>*:first-child:not(img){padding-block-start:calc(var(--card-p) - .5rem)}/*# sourceMappingURL=card.css.map */
1
+ :root{--card-p: 2rem;--card-bg: #fff;--card-radius: calc(var(--card-p) / 4);--card-position: relative;--card-display: flex;--card-direction: column;--card-gap: 1rem}[data-card],[data-component~=card]{display:var(--card-display);flex-direction:var(--card-direction);gap:var(--card-gap);border-radius:var(--card-radius);background-color:var(--card-bg);text-align:var(--card-align, left)}[data-card] h3,[data-card] h2,[data-component~=card] h3,[data-component~=card] h2{margin-block-end:0;padding-block-end:0}[data-card]+div,[data-component~=card]+div{margin-block-start:0}[data-card]>article,[data-component~=card]>article{display:flex;flex-direction:column;flex:2}[data-card]>*:not(img),[data-component~=card]>*:not(img){padding-inline:var(--card-p)}[data-card]>*:last-child:not(img),[data-component~=card]>*:last-child:not(img){padding-block-end:var(--card-p)}[data-card]>*:first-child:not(img),[data-component~=card]>*:first-child:not(img){padding-block-start:calc(var(--card-p) - .5rem)}[data-card=interactive]{cursor:pointer;transition:box-shadow .2s ease,transform .2s ease}[data-card=interactive]:hover{transform:translateY(-2px);box-shadow:0 .25rem .75rem rgba(0,0,0,.15)}[data-card=interactive]:focus-visible{outline:.125rem solid var(--focus-color, #0066CC);outline-offset:.125rem}[data-card=interactive]:focus:not(:focus-visible){outline:none}/*# sourceMappingURL=card.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/components/cards/card.scss"],"names":[],"mappings":"AAAA,MACE,eACA,gBACA,uCACA,0BACA,qBACA,yBACA,iBAGF,mCAEE,4BACA,qCACA,oBACA,iCACA,gCACA,mCAEA,kFAEE,mBACA,oBAEF,2CACE,qBAEF,mDACE,aACA,sBACA,OAGF,yDACE,6BAEF,+EAEE,gCAEF,iFACE","file":"card.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/components/cards/card.scss"],"names":[],"mappings":"AAAA,MACE,eACA,gBACA,uCACA,0BACA,qBACA,yBACA,iBAGF,mCAEE,4BACA,qCACA,oBACA,iCACA,gCACA,mCAEA,kFAEE,mBACA,oBAEF,2CACE,qBAEF,mDACE,aACA,sBACA,OAGF,yDACE,6BAEF,+EAEE,gCAEF,iFACE,gDAKJ,wBACE,eACA,kDAEA,8BACE,2BACA,2CAIF,sCACE,kDACA,uBAIF,kDACE","file":"card.css"}