@fpkit/acss 3.1.1 → 3.2.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 (202) hide show
  1. package/libs/{chunk-2NRIP6RB.cjs → chunk-2C3YLBWP.cjs} +3 -3
  2. package/libs/{chunk-NWJDAHP6.cjs → chunk-2GJHKWEK.cjs} +3 -3
  3. package/libs/{chunk-FVROL3V5.js → chunk-2JCDEC32.js} +3 -3
  4. package/libs/{chunk-IRLFZ3OL.js → chunk-3XJC4XUG.js} +2 -2
  5. package/libs/{chunk-L6PRDL6F.cjs → chunk-5CJPTDK3.cjs} +3 -3
  6. package/libs/{chunk-E4OSROCA.cjs → chunk-5QSNJQVH.cjs} +3 -3
  7. package/libs/{chunk-O3JIHC5M.cjs → chunk-6BUJZ4DJ.cjs} +3 -3
  8. package/libs/{chunk-WXBFBWYF.cjs → chunk-AFINOD2L.cjs} +3 -3
  9. package/libs/{chunk-HRRHPLER.js → chunk-AWZLSWDO.js} +2 -2
  10. package/libs/chunk-DDSXKOUB.js +7 -0
  11. package/libs/chunk-DDSXKOUB.js.map +1 -0
  12. package/libs/{chunk-CWRNJA4P.js → chunk-DIJBIOFE.js} +3 -3
  13. package/libs/chunk-EJ6KYBFE.cjs +13 -0
  14. package/libs/chunk-EJ6KYBFE.cjs.map +1 -0
  15. package/libs/{chunk-GUJSMQ3V.cjs → chunk-EKJYOCLY.cjs} +3 -3
  16. package/libs/{chunk-X5RKCLDC.cjs → chunk-F64GE6RG.cjs} +4 -4
  17. package/libs/{chunk-5RAWNUVD.js → chunk-IBUTNPTQ.js} +2 -2
  18. package/libs/chunk-IWP4VJEP.cjs +18 -0
  19. package/libs/chunk-IWP4VJEP.cjs.map +1 -0
  20. package/libs/{chunk-ZFJ4U45S.js → chunk-KDMX3FAW.js} +2 -2
  21. package/libs/{chunk-DYFAUAB7.cjs → chunk-LXODKKA3.cjs} +4 -4
  22. package/libs/{chunk-MPTMPBFT.js → chunk-M7JLT62Q.js} +2 -2
  23. package/libs/{chunk-IQ76HGVP.js → chunk-MBWI67UT.js} +2 -2
  24. package/libs/{chunk-O5XAJ7BY.cjs → chunk-NCGVF2QS.cjs} +4 -4
  25. package/libs/{chunk-W2UIN7EV.cjs → chunk-NPWHQVYB.cjs} +3 -3
  26. package/libs/{chunk-43TK2ICH.js → chunk-PMWL5XZ4.js} +3 -3
  27. package/libs/{chunk-KVKQLRJG.js → chunk-TF3GQKOY.js} +2 -2
  28. package/libs/{chunk-IEB64SWY.js → chunk-U5VA34SU.js} +2 -2
  29. package/libs/chunk-UGMP72J2.js +8 -0
  30. package/libs/chunk-UGMP72J2.js.map +1 -0
  31. package/libs/{chunk-EE3ZWSBY.cjs → chunk-URBGDUFN.cjs} +6 -6
  32. package/libs/{chunk-TPIB3RQP.js → chunk-ZF6Y7W57.js} +5 -5
  33. package/libs/component-props-50e69975.d.ts +66 -0
  34. package/libs/components/box/box.css +1 -0
  35. package/libs/components/box/box.css.map +1 -0
  36. package/libs/components/box/box.min.css +3 -0
  37. package/libs/components/breadcrumbs/breadcrumb.cjs +6 -6
  38. package/libs/components/breadcrumbs/breadcrumb.js +3 -3
  39. package/libs/components/button.cjs +4 -4
  40. package/libs/components/button.d.cts +10 -3
  41. package/libs/components/button.d.ts +10 -3
  42. package/libs/components/button.js +2 -2
  43. package/libs/components/card.cjs +7 -7
  44. package/libs/components/card.d.cts +13 -85
  45. package/libs/components/card.d.ts +13 -85
  46. package/libs/components/card.js +2 -2
  47. package/libs/components/cards/card.css +1 -1
  48. package/libs/components/cards/card.css.map +1 -1
  49. package/libs/components/cards/card.min.css +2 -2
  50. package/libs/components/cluster/cluster.css +1 -0
  51. package/libs/components/cluster/cluster.css.map +1 -0
  52. package/libs/components/cluster/cluster.min.css +3 -0
  53. package/libs/components/dialog/dialog.cjs +7 -7
  54. package/libs/components/dialog/dialog.js +5 -5
  55. package/libs/components/form/fields.cjs +4 -4
  56. package/libs/components/form/fields.js +2 -2
  57. package/libs/components/form/textarea.cjs +4 -4
  58. package/libs/components/form/textarea.js +2 -2
  59. package/libs/components/grid/grid.css +1 -0
  60. package/libs/components/grid/grid.css.map +1 -0
  61. package/libs/components/grid/grid.min.css +3 -0
  62. package/libs/components/heading/heading.cjs +3 -3
  63. package/libs/components/heading/heading.js +2 -2
  64. package/libs/components/icons/icon.cjs +4 -4
  65. package/libs/components/icons/icon.d.cts +2 -2
  66. package/libs/components/icons/icon.d.ts +2 -2
  67. package/libs/components/icons/icon.js +2 -2
  68. package/libs/components/link/link.cjs +6 -6
  69. package/libs/components/link/link.js +2 -2
  70. package/libs/components/list/list.cjs +5 -5
  71. package/libs/components/list/list.js +2 -2
  72. package/libs/components/modal.cjs +4 -4
  73. package/libs/components/modal.d.cts +1 -1
  74. package/libs/components/modal.d.ts +1 -1
  75. package/libs/components/modal.js +3 -3
  76. package/libs/components/nav/nav.cjs +7 -7
  77. package/libs/components/nav/nav.js +3 -3
  78. package/libs/components/stack/stack.css +1 -0
  79. package/libs/components/stack/stack.css.map +1 -0
  80. package/libs/components/stack/stack.min.css +3 -0
  81. package/libs/components/tables/table.d.cts +1 -1
  82. package/libs/components/tables/table.d.ts +1 -1
  83. package/libs/components/text/text.cjs +5 -5
  84. package/libs/components/text/text.js +2 -2
  85. package/libs/hooks.cjs +4 -4
  86. package/libs/hooks.js +3 -3
  87. package/libs/{icons-287fce3a.d.ts → icons-df8e744f.d.ts} +1 -1
  88. package/libs/icons.cjs +3 -3
  89. package/libs/icons.d.cts +2 -2
  90. package/libs/icons.d.ts +2 -2
  91. package/libs/icons.js +2 -2
  92. package/libs/index.cjs +64 -63
  93. package/libs/index.cjs.map +1 -1
  94. package/libs/index.css +1 -1
  95. package/libs/index.css.map +1 -1
  96. package/libs/index.d.cts +923 -4
  97. package/libs/index.d.ts +923 -4
  98. package/libs/index.js +28 -28
  99. package/libs/index.js.map +1 -1
  100. package/package.json +2 -2
  101. package/src/components/alert/STYLES.mdx +790 -0
  102. package/src/components/badge/STYLES.mdx +610 -0
  103. package/src/components/box/README.mdx +401 -0
  104. package/src/components/box/STYLES.mdx +360 -0
  105. package/src/components/box/box.scss +245 -0
  106. package/src/components/box/box.stories.tsx +395 -0
  107. package/src/components/box/box.test.tsx +425 -0
  108. package/src/components/box/box.tsx +170 -0
  109. package/src/components/box/box.types.ts +166 -0
  110. package/src/components/breadcrumbs/STYLES.mdx +99 -0
  111. package/src/components/buttons/STYLES.mdx +766 -0
  112. package/src/components/cards/STYLES.mdx +835 -0
  113. package/src/components/cards/card.scss +29 -21
  114. package/src/components/cards/card.tsx +13 -3
  115. package/src/components/cards/card.types.ts +13 -0
  116. package/src/components/cluster/README.mdx +595 -0
  117. package/src/components/cluster/STYLES.mdx +626 -0
  118. package/src/components/cluster/cluster.scss +86 -0
  119. package/src/components/cluster/cluster.stories.tsx +385 -0
  120. package/src/components/cluster/cluster.test.tsx +655 -0
  121. package/src/components/cluster/cluster.tsx +94 -0
  122. package/src/components/cluster/cluster.types.ts +75 -0
  123. package/src/components/details/STYLES.mdx +445 -0
  124. package/src/components/dialog/STYLES.mdx +888 -0
  125. package/src/components/flexbox/STYLES.mdx +1 -1
  126. package/src/components/form/STYLES.mdx +821 -0
  127. package/src/components/grid/README.mdx +709 -0
  128. package/src/components/grid/STYLES.mdx +785 -0
  129. package/src/components/grid/grid.scss +287 -0
  130. package/src/components/grid/grid.stories.tsx +486 -0
  131. package/src/components/grid/grid.test.tsx +981 -0
  132. package/src/components/grid/grid.tsx +222 -0
  133. package/src/components/grid/grid.types.ts +344 -0
  134. package/src/components/icons/STYLES.mdx +56 -0
  135. package/src/components/images/STYLES.mdx +75 -0
  136. package/src/components/layout/STYLES.mdx +556 -0
  137. package/src/components/link/STYLES.mdx +75 -0
  138. package/src/components/list/STYLES.mdx +631 -0
  139. package/src/components/nav/STYLES.mdx +460 -0
  140. package/src/components/progress/STYLES.mdx +64 -0
  141. package/src/components/stack/README.mdx +400 -0
  142. package/src/components/stack/STYLES.mdx +414 -0
  143. package/src/components/stack/stack.scss +109 -0
  144. package/src/components/stack/stack.stories.tsx +559 -0
  145. package/src/components/stack/stack.test.tsx +426 -0
  146. package/src/components/stack/stack.tsx +141 -0
  147. package/src/components/stack/stack.types.ts +133 -0
  148. package/src/components/tag/STYLES.mdx +105 -0
  149. package/src/components/text-to-speech/STYLES.mdx +80 -0
  150. package/src/components/ui.tsx +3 -3
  151. package/src/index.scss +5 -1
  152. package/src/index.ts +305 -12
  153. package/src/sass/GLOBALS-STYLES.md +631 -0
  154. package/src/sass/_globals.scss +45 -24
  155. package/src/styles/box/box.css +220 -0
  156. package/src/styles/box/box.css.map +1 -0
  157. package/src/styles/cards/card.css +22 -17
  158. package/src/styles/cards/card.css.map +1 -1
  159. package/src/styles/cluster/cluster.css +71 -0
  160. package/src/styles/cluster/cluster.css.map +1 -0
  161. package/src/styles/grid/grid.css +238 -0
  162. package/src/styles/grid/grid.css.map +1 -0
  163. package/src/styles/index.css +667 -49
  164. package/src/styles/index.css.map +1 -1
  165. package/src/styles/stack/stack.css +86 -0
  166. package/src/styles/stack/stack.css.map +1 -0
  167. package/src/types/component-props.ts +42 -14
  168. package/src/types/layout-primitives.ts +48 -0
  169. package/src/types/shared.ts +10 -26
  170. package/libs/chunk-ENTCUJ3A.cjs +0 -13
  171. package/libs/chunk-ENTCUJ3A.cjs.map +0 -1
  172. package/libs/chunk-HHLNOC5T.js +0 -7
  173. package/libs/chunk-HHLNOC5T.js.map +0 -1
  174. package/libs/chunk-KK47SYZI.js +0 -8
  175. package/libs/chunk-KK47SYZI.js.map +0 -1
  176. package/libs/chunk-W5TKWBFC.cjs +0 -18
  177. package/libs/chunk-W5TKWBFC.cjs.map +0 -1
  178. package/libs/component-props-67d978a2.d.ts +0 -38
  179. /package/libs/{chunk-2NRIP6RB.cjs.map → chunk-2C3YLBWP.cjs.map} +0 -0
  180. /package/libs/{chunk-NWJDAHP6.cjs.map → chunk-2GJHKWEK.cjs.map} +0 -0
  181. /package/libs/{chunk-FVROL3V5.js.map → chunk-2JCDEC32.js.map} +0 -0
  182. /package/libs/{chunk-IRLFZ3OL.js.map → chunk-3XJC4XUG.js.map} +0 -0
  183. /package/libs/{chunk-L6PRDL6F.cjs.map → chunk-5CJPTDK3.cjs.map} +0 -0
  184. /package/libs/{chunk-E4OSROCA.cjs.map → chunk-5QSNJQVH.cjs.map} +0 -0
  185. /package/libs/{chunk-O3JIHC5M.cjs.map → chunk-6BUJZ4DJ.cjs.map} +0 -0
  186. /package/libs/{chunk-WXBFBWYF.cjs.map → chunk-AFINOD2L.cjs.map} +0 -0
  187. /package/libs/{chunk-HRRHPLER.js.map → chunk-AWZLSWDO.js.map} +0 -0
  188. /package/libs/{chunk-CWRNJA4P.js.map → chunk-DIJBIOFE.js.map} +0 -0
  189. /package/libs/{chunk-GUJSMQ3V.cjs.map → chunk-EKJYOCLY.cjs.map} +0 -0
  190. /package/libs/{chunk-X5RKCLDC.cjs.map → chunk-F64GE6RG.cjs.map} +0 -0
  191. /package/libs/{chunk-5RAWNUVD.js.map → chunk-IBUTNPTQ.js.map} +0 -0
  192. /package/libs/{chunk-ZFJ4U45S.js.map → chunk-KDMX3FAW.js.map} +0 -0
  193. /package/libs/{chunk-DYFAUAB7.cjs.map → chunk-LXODKKA3.cjs.map} +0 -0
  194. /package/libs/{chunk-MPTMPBFT.js.map → chunk-M7JLT62Q.js.map} +0 -0
  195. /package/libs/{chunk-IQ76HGVP.js.map → chunk-MBWI67UT.js.map} +0 -0
  196. /package/libs/{chunk-O5XAJ7BY.cjs.map → chunk-NCGVF2QS.cjs.map} +0 -0
  197. /package/libs/{chunk-W2UIN7EV.cjs.map → chunk-NPWHQVYB.cjs.map} +0 -0
  198. /package/libs/{chunk-43TK2ICH.js.map → chunk-PMWL5XZ4.js.map} +0 -0
  199. /package/libs/{chunk-KVKQLRJG.js.map → chunk-TF3GQKOY.js.map} +0 -0
  200. /package/libs/{chunk-IEB64SWY.js.map → chunk-U5VA34SU.js.map} +0 -0
  201. /package/libs/{chunk-EE3ZWSBY.cjs.map → chunk-URBGDUFN.cjs.map} +0 -0
  202. /package/libs/{chunk-TPIB3RQP.js.map → chunk-ZF6Y7W57.js.map} +0 -0
@@ -1,34 +1,35 @@
1
1
  :root {
2
2
  // Base card properties
3
- --card-padding: 2rem;
4
- --card-bg: #fff;
3
+ --card-padding: 1.5rem;
4
+ --card-bg: var(--color-surface, #ffffff);
5
5
  --card-radius: calc(var(--card-padding) / 4);
6
- --card-position: relative;
7
- --card-display: flex;
8
- --card-direction: column;
9
6
  --card-gap: 1rem;
10
7
 
11
8
  // Element-specific variables (NEW - for complex card layouts)
12
9
  --card-header-padding: 1rem 1.5rem;
13
- --card-header-bg: #f8f9fa;
14
- --card-header-border-bottom: 1px solid #dee2e6;
10
+ --card-header-bg: var(--color-surface-secondary, #f8f9fa);
11
+ --card-header-border-bottom-width: 0.0625rem;
12
+ --card-header-border-bottom-style: solid;
13
+ --card-header-border-bottom-color: var(--color-border, #dee2e6);
15
14
 
16
15
  --card-body-padding: 1.5rem;
17
16
 
18
17
  --card-footer-padding: 1rem 1.5rem;
19
- --card-footer-bg: #f8f9fa;
20
- --card-footer-border-top: 1px solid #dee2e6;
18
+ --card-footer-bg: var(--color-surface-secondary, #f8f9fa);
19
+ --card-footer-border-top-width: 0.0625rem;
20
+ --card-footer-border-top-style: solid;
21
+ --card-footer-border-top-color: var(--color-border, #dee2e6);
21
22
  }
22
23
 
23
24
  [data-card],
24
- [data-component~='card'] {
25
- display: var(--card-display);
26
- flex-direction: var(--card-direction);
25
+ [data-component~="card"] {
26
+ display: flex;
27
+ flex-direction: column;
27
28
  gap: var(--card-gap);
28
29
  border-radius: var(--card-radius);
29
30
  background-color: var(--card-bg);
30
31
  text-align: var(--card-align, left);
31
-
32
+
32
33
  h3,
33
34
  h2 {
34
35
  margin-block-end: 0;
@@ -47,10 +48,11 @@
47
48
  padding-inline: var(--card-padding);
48
49
  }
49
50
  > *:last-child:not(img) {
50
- // margin-block-end: 0;
51
51
  padding-block-end: var(--card-padding);
52
52
  }
53
53
  > *:first-child:not(img) {
54
+ // Reduced top padding to account for heading's inherent spacing
55
+ // Prevents excessive whitespace above titles
54
56
  padding-block-start: calc(var(--card-padding) - 0.5rem);
55
57
  }
56
58
 
@@ -59,7 +61,7 @@
59
61
  > [data-card-header] {
60
62
  padding: var(--card-header-padding);
61
63
  background-color: var(--card-header-bg);
62
- border-bottom: var(--card-header-border-bottom);
64
+ border-bottom: var(--card-header-border-bottom-width) var(--card-header-border-bottom-style) var(--card-header-border-bottom-color);
63
65
  border-radius: var(--card-radius) var(--card-radius) 0 0;
64
66
  }
65
67
 
@@ -72,24 +74,31 @@
72
74
  > [data-card-footer] {
73
75
  padding: var(--card-footer-padding);
74
76
  background-color: var(--card-footer-bg);
75
- border-top: var(--card-footer-border-top);
77
+ border-top: var(--card-footer-border-top-width) var(--card-footer-border-top-style) var(--card-footer-border-top-color);
76
78
  border-radius: 0 0 var(--card-radius) var(--card-radius);
77
79
  }
78
80
  }
79
81
 
80
82
  // Interactive card styles - WCAG 2.4.7 compliant focus indicators
81
83
  [data-card="interactive"] {
84
+ --card-transition-duration: 0.2s;
85
+ --card-transition-timing: ease;
86
+ --card-hover-lift: -0.125rem;
87
+ --card-hover-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);
88
+
82
89
  cursor: pointer;
83
- transition: box-shadow 0.2s ease, transform 0.2s ease;
90
+ transition:
91
+ box-shadow var(--card-transition-duration) var(--card-transition-timing),
92
+ transform var(--card-transition-duration) var(--card-transition-timing);
84
93
 
85
94
  &:hover {
86
- transform: translateY(-2px);
87
- box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);
95
+ transform: translateY(var(--card-hover-lift));
96
+ box-shadow: var(--card-hover-shadow);
88
97
  }
89
98
 
90
99
  // Visible focus indicator with 3:1 minimum contrast (WCAG 2.4.7)
91
100
  &:focus-visible {
92
- outline: 0.125rem solid var(--focus-color, #0066CC);
101
+ outline: 0.125rem solid var(--color-focus, #0066cc);
93
102
  outline-offset: 0.125rem;
94
103
  }
95
104
 
@@ -98,4 +107,3 @@
98
107
  outline: none;
99
108
  }
100
109
  }
101
-
@@ -5,6 +5,7 @@ import type {
5
5
  CardTitleProps,
6
6
  CardContentProps,
7
7
  CardFooterProps,
8
+ CardComponent,
8
9
  } from './card.types'
9
10
  import { cn, CARD_CLASSES, handleCardKeyDown, warnInteractiveUsage } from './card.utils'
10
11
 
@@ -218,7 +219,7 @@ Footer.displayName = 'Card.Footer'
218
219
  * </Card>
219
220
  * ```
220
221
  */
221
- export const Card = ({
222
+ const CardRoot = ({
222
223
  as = 'div',
223
224
  styles,
224
225
  children,
@@ -275,11 +276,20 @@ export const Card = ({
275
276
  )
276
277
  }
277
278
 
278
- export default Card
279
+ // Create compound component with proper TypeScript typing
280
+ export const Card = CardRoot as CardComponent
279
281
  Card.displayName = 'Card'
280
282
  Card.Title = Title
281
283
  Card.Content = Content
282
284
  Card.Footer = Footer
283
285
 
286
+ export default Card
287
+
284
288
  // Export types for external consumption
285
- export type { CardProps, CardTitleProps, CardContentProps, CardFooterProps } from './card.types'
289
+ export type {
290
+ CardProps,
291
+ CardTitleProps,
292
+ CardContentProps,
293
+ CardFooterProps,
294
+ CardComponent,
295
+ } from './card.types'
@@ -61,6 +61,19 @@ export interface CardFooterProps extends CardSubComponentProps {
61
61
  as?: 'div' | 'footer'
62
62
  }
63
63
 
64
+ /**
65
+ * Type for Card component with attached sub-components.
66
+ *
67
+ * This type ensures TypeScript recognizes Card.Title, Card.Content, and Card.Footer
68
+ * as valid properties on the Card component.
69
+ */
70
+ export interface CardComponent extends React.FC<CardProps> {
71
+ Title: React.FC<CardTitleProps>
72
+ Content: React.FC<CardContentProps>
73
+ Footer: React.FC<CardFooterProps>
74
+ displayName: string
75
+ }
76
+
64
77
  /**
65
78
  * Props for the main Card component.
66
79
  *