@fpkit/acss 3.3.0 → 3.5.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 (99) hide show
  1. package/libs/index.cjs +22 -20
  2. package/libs/index.cjs.map +1 -1
  3. package/libs/index.d.cts +309 -1
  4. package/libs/index.d.ts +309 -1
  5. package/libs/index.js +9 -9
  6. package/libs/index.js.map +1 -1
  7. package/package.json +2 -2
  8. package/src/components/col/README.mdx +661 -0
  9. package/src/components/col/col.stories.tsx +527 -0
  10. package/src/components/col/col.test.tsx +366 -0
  11. package/src/components/col/col.tsx +107 -0
  12. package/src/components/col/col.types.ts +90 -0
  13. package/src/components/row/README.mdx +324 -0
  14. package/src/components/row/row.stories.tsx +595 -0
  15. package/src/components/row/row.test.tsx +358 -0
  16. package/src/components/row/row.tsx +121 -0
  17. package/src/components/row/row.types.ts +93 -0
  18. package/src/index.scss +1 -0
  19. package/src/index.ts +2 -0
  20. package/src/sass/README.mdx +597 -0
  21. package/src/sass/_columns.scss +394 -0
  22. package/src/sass/columns.stories.tsx +456 -0
  23. package/src/styles/index.css +392 -0
  24. package/src/styles/index.css.map +1 -1
  25. package/src/types/layout-primitives.ts +81 -0
  26. package/libs/components/alert/alert.css +0 -1
  27. package/libs/components/alert/alert.css.map +0 -1
  28. package/libs/components/alert/alert.min.css +0 -3
  29. package/libs/components/badge/badge.css +0 -1
  30. package/libs/components/badge/badge.css.map +0 -1
  31. package/libs/components/badge/badge.min.css +0 -3
  32. package/libs/components/box/box.css +0 -1
  33. package/libs/components/box/box.css.map +0 -1
  34. package/libs/components/box/box.min.css +0 -3
  35. package/libs/components/breadcrumbs/breadcrumb.css +0 -1
  36. package/libs/components/breadcrumbs/breadcrumb.css.map +0 -1
  37. package/libs/components/breadcrumbs/breadcrumb.min.css +0 -3
  38. package/libs/components/buttons/button.css +0 -1
  39. package/libs/components/buttons/button.css.map +0 -1
  40. package/libs/components/buttons/button.min.css +0 -3
  41. package/libs/components/cards/card-style.css +0 -1
  42. package/libs/components/cards/card-style.css.map +0 -1
  43. package/libs/components/cards/card-style.min.css +0 -3
  44. package/libs/components/cards/card.css +0 -1
  45. package/libs/components/cards/card.css.map +0 -1
  46. package/libs/components/cards/card.min.css +0 -3
  47. package/libs/components/cluster/cluster.css +0 -1
  48. package/libs/components/cluster/cluster.css.map +0 -1
  49. package/libs/components/cluster/cluster.min.css +0 -3
  50. package/libs/components/details/details.css +0 -1
  51. package/libs/components/details/details.css.map +0 -1
  52. package/libs/components/details/details.min.css +0 -3
  53. package/libs/components/dialog/dialog.css +0 -1
  54. package/libs/components/dialog/dialog.css.map +0 -1
  55. package/libs/components/dialog/dialog.min.css +0 -3
  56. package/libs/components/flexbox/flex.css +0 -1
  57. package/libs/components/flexbox/flex.css.map +0 -1
  58. package/libs/components/flexbox/flex.min.css +0 -3
  59. package/libs/components/form/form.css +0 -1
  60. package/libs/components/form/form.css.map +0 -1
  61. package/libs/components/form/form.min.css +0 -3
  62. package/libs/components/grid/grid.css +0 -1
  63. package/libs/components/grid/grid.css.map +0 -1
  64. package/libs/components/grid/grid.min.css +0 -3
  65. package/libs/components/icons/icon.css +0 -1
  66. package/libs/components/icons/icon.css.map +0 -1
  67. package/libs/components/icons/icon.min.css +0 -3
  68. package/libs/components/images/img.css +0 -1
  69. package/libs/components/images/img.css.map +0 -1
  70. package/libs/components/images/img.min.css +0 -3
  71. package/libs/components/layout/landmarks.css +0 -1
  72. package/libs/components/layout/landmarks.css.map +0 -1
  73. package/libs/components/layout/landmarks.min.css +0 -3
  74. package/libs/components/link/link.css +0 -1
  75. package/libs/components/link/link.css.map +0 -1
  76. package/libs/components/link/link.min.css +0 -3
  77. package/libs/components/list/list.css +0 -1
  78. package/libs/components/list/list.css.map +0 -1
  79. package/libs/components/list/list.min.css +0 -3
  80. package/libs/components/nav/nav.css +0 -1
  81. package/libs/components/nav/nav.css.map +0 -1
  82. package/libs/components/nav/nav.min.css +0 -3
  83. package/libs/components/progress/progress.css +0 -1
  84. package/libs/components/progress/progress.css.map +0 -1
  85. package/libs/components/progress/progress.min.css +0 -3
  86. package/libs/components/stack/stack.css +0 -1
  87. package/libs/components/stack/stack.css.map +0 -1
  88. package/libs/components/stack/stack.min.css +0 -3
  89. package/libs/components/styles/index.css +0 -1
  90. package/libs/components/styles/index.css.map +0 -1
  91. package/libs/components/styles/index.min.css +0 -3
  92. package/libs/components/tag/tag.css +0 -1
  93. package/libs/components/tag/tag.css.map +0 -1
  94. package/libs/components/tag/tag.min.css +0 -3
  95. package/libs/components/text-to-speech/text-to-speech.css +0 -1
  96. package/libs/components/text-to-speech/text-to-speech.css.map +0 -1
  97. package/libs/components/text-to-speech/text-to-speech.min.css +0 -3
  98. package/libs/index.css +0 -1
  99. package/libs/index.css.map +0 -1
@@ -0,0 +1,394 @@
1
+ /**
2
+ * 12-Column Utility System
3
+ *
4
+ * Layout-agnostic column width utilities following Bootstrap/Foundation patterns.
5
+ * Works with Flex, Grid, or standalone elements.
6
+ *
7
+ * Responsive Behavior:
8
+ * - Mobile (< 48rem): All columns 100% width (stacked)
9
+ * - Desktop (>= 48rem): Fractional percentage widths
10
+ *
11
+ * All units in rem (1rem = 16px base).
12
+ */
13
+
14
+ /* CSS Custom Properties */
15
+ :root {
16
+ --col-breakpoint: 48rem; /* 768px - matches fpkit md breakpoint */
17
+
18
+ /* Column width percentages (fractions of 12) */
19
+ --col-1: 8.333333%;
20
+ --col-2: 16.666667%;
21
+ --col-3: 25%;
22
+ --col-4: 33.333333%;
23
+ --col-5: 41.666667%;
24
+ --col-6: 50%;
25
+ --col-7: 58.333333%;
26
+ --col-8: 66.666667%;
27
+ --col-9: 75%;
28
+ --col-10: 83.333333%;
29
+ --col-11: 91.666667%;
30
+ --col-12: 100%;
31
+ }
32
+
33
+ /* ============================================================================
34
+ Row Container Utility (Optional)
35
+ ========================================================================== */
36
+
37
+ /**
38
+ * .col-row provides a convenient flex container for column layouts.
39
+ * Alternative to using the Flex component for simple, standalone usage.
40
+ *
41
+ * Usage:
42
+ * <div className="col-row">
43
+ * <div className="col-6">Column 1</div>
44
+ * <div className="col-6">Column 2</div>
45
+ * </div>
46
+ */
47
+ .col-row {
48
+ display: flex;
49
+ flex-wrap: wrap;
50
+ gap: var(
51
+ --spacing-md
52
+ ); /* Default gap - can be overridden with gap utilities */
53
+ }
54
+
55
+ /* ============================================================================
56
+ Base Column Classes - Mobile First (100% width)
57
+ ========================================================================== */
58
+
59
+ .col-1,
60
+ .col-2,
61
+ .col-3,
62
+ .col-4,
63
+ .col-5,
64
+ .col-6,
65
+ .col-7,
66
+ .col-8,
67
+ .col-9,
68
+ .col-10,
69
+ .col-11,
70
+ .col-12 {
71
+ flex: 0 0 100%; /* flex-grow flex-shrink flex-basis */
72
+ min-width: 0; /* Prevent content overflow in flex containers */
73
+ box-sizing: border-box;
74
+ }
75
+
76
+ /* Desktop Column Widths (>= 48rem / 768px) */
77
+ @media (width >= 48rem) {
78
+ /* Prevent wrapping at desktop - columns shrink to fit instead */
79
+ .col-row {
80
+ flex-wrap: nowrap;
81
+ }
82
+
83
+ .col-1 {
84
+ flex: 0 1 var(--col-1);
85
+ }
86
+
87
+ .col-2 {
88
+ flex: 0 1 var(--col-2);
89
+ }
90
+ .col-3 {
91
+ flex: 0 1 var(--col-3);
92
+ }
93
+ .col-4 {
94
+ flex: 0 1 var(--col-4);
95
+ }
96
+ .col-5 {
97
+ flex: 0 1 var(--col-5);
98
+ }
99
+ .col-6 {
100
+ flex: 0 1 var(--col-6);
101
+ }
102
+ .col-7 {
103
+ flex: 0 1 var(--col-7);
104
+ }
105
+ .col-8 {
106
+ flex: 0 1 var(--col-8);
107
+ }
108
+ .col-9 {
109
+ flex: 0 1 var(--col-9);
110
+ }
111
+ .col-10 {
112
+ flex: 0 1 var(--col-10);
113
+ }
114
+ .col-11 {
115
+ flex: 0 1 var(--col-11);
116
+ }
117
+ .col-12 {
118
+ flex: 0 1 var(--col-12);
119
+ }
120
+ }
121
+
122
+ /* ============================================================================
123
+ Proportional Layout Mode (Opt-in)
124
+ ========================================================================== */
125
+
126
+ /**
127
+ * .col-row-proportional prevents columns from stacking on tablets and larger.
128
+ * Columns still stack on mobile phones (< 30rem / 480px) for readability,
129
+ * but maintain proportional widths on tablets and desktops (>= 30rem / 480px).
130
+ *
131
+ * Usage with Row component:
132
+ * <Row alwaysProportional>
133
+ * <Col span={6}>Column 1</Col>
134
+ * <Col span={6}>Column 2</Col>
135
+ * </Row>
136
+ *
137
+ * Usage with vanilla HTML:
138
+ * <div className="col-row col-row-proportional">
139
+ * <div className="col-6">Column 1</div>
140
+ * <div className="col-6">Column 2</div>
141
+ * </div>
142
+ */
143
+ @media (width >= 30rem) {
144
+ .col-row-proportional {
145
+ .col-1,
146
+ .col-2,
147
+ .col-3,
148
+ .col-4,
149
+ .col-5,
150
+ .col-6,
151
+ .col-7,
152
+ .col-8,
153
+ .col-9,
154
+ .col-10,
155
+ .col-11,
156
+ .col-12 {
157
+ flex: 0 1 auto; /* Allow proportional sizing with shrink */
158
+ }
159
+
160
+ .col-1 {
161
+ flex-basis: var(--col-1);
162
+ }
163
+ .col-2 {
164
+ flex-basis: var(--col-2);
165
+ }
166
+ .col-3 {
167
+ flex-basis: var(--col-3);
168
+ }
169
+ .col-4 {
170
+ flex-basis: var(--col-4);
171
+ }
172
+ .col-5 {
173
+ flex-basis: var(--col-5);
174
+ }
175
+ .col-6 {
176
+ flex-basis: var(--col-6);
177
+ }
178
+ .col-7 {
179
+ flex-basis: var(--col-7);
180
+ }
181
+ .col-8 {
182
+ flex-basis: var(--col-8);
183
+ }
184
+ .col-9 {
185
+ flex-basis: var(--col-9);
186
+ }
187
+ .col-10 {
188
+ flex-basis: var(--col-10);
189
+ }
190
+ .col-11 {
191
+ flex-basis: var(--col-11);
192
+ }
193
+ .col-12 {
194
+ flex-basis: var(--col-12);
195
+ }
196
+ }
197
+ }
198
+
199
+ /* Optional: Column Offset Utilities */
200
+ @media (width >= 48rem) {
201
+ .col-offset-0 {
202
+ margin-inline-start: 0;
203
+ }
204
+ .col-offset-1 {
205
+ margin-inline-start: var(--col-1);
206
+ }
207
+ .col-offset-2 {
208
+ margin-inline-start: var(--col-2);
209
+ }
210
+ .col-offset-3 {
211
+ margin-inline-start: var(--col-3);
212
+ }
213
+ .col-offset-4 {
214
+ margin-inline-start: var(--col-4);
215
+ }
216
+ .col-offset-5 {
217
+ margin-inline-start: var(--col-5);
218
+ }
219
+ .col-offset-6 {
220
+ margin-inline-start: var(--col-6);
221
+ }
222
+ .col-offset-7 {
223
+ margin-inline-start: var(--col-7);
224
+ }
225
+ .col-offset-8 {
226
+ margin-inline-start: var(--col-8);
227
+ }
228
+ .col-offset-9 {
229
+ margin-inline-start: var(--col-9);
230
+ }
231
+ .col-offset-10 {
232
+ margin-inline-start: var(--col-10);
233
+ }
234
+ .col-offset-11 {
235
+ margin-inline-start: var(--col-11);
236
+ }
237
+ }
238
+
239
+ /* Optional: Auto-Width Columns */
240
+ .col-auto {
241
+ width: auto;
242
+ flex: 0 0 auto;
243
+ }
244
+
245
+ /* Optional: Flex-Grow Columns */
246
+ /**
247
+ * .col-flex provides a column that grows to fill remaining space.
248
+ * Different from .col-auto (content-based) - this uses flex-grow.
249
+ *
250
+ * Key Differences:
251
+ * - .col-auto: Sizes to content width (flex: 0 0 auto)
252
+ * - .col-flex: Grows to fill space (flex: 1 1 0%)
253
+ *
254
+ * Responsive Behavior:
255
+ * - Mobile (< 48rem): 100% width (stacked)
256
+ * - Desktop (>= 48rem): Grows to fill remaining space
257
+ *
258
+ * Usage:
259
+ * <Row>
260
+ * <Col span={3}>Fixed 25%</Col>
261
+ * <Col span="flex">Fills remaining 75%</Col>
262
+ * </Row>
263
+ */
264
+ .col-flex {
265
+ /* Mobile: Stack like all columns */
266
+ flex: 0 0 100%;
267
+ min-width: 0; /* Prevent content overflow */
268
+ box-sizing: border-box;
269
+ }
270
+
271
+ /* Desktop: Grow to fill available space */
272
+ @media (width >= 48rem) {
273
+ .col-flex {
274
+ flex: 1 1 0%; /* flex-grow: 1, flex-shrink: 1, flex-basis: 0% */
275
+ }
276
+ }
277
+
278
+ /* Optional: Column Order Utilities */
279
+ @media (width >= 48rem) {
280
+ .col-order-first {
281
+ order: -1;
282
+ }
283
+ .col-order-last {
284
+ order: 13;
285
+ }
286
+ .col-order-0 {
287
+ order: 0;
288
+ }
289
+ .col-order-1 {
290
+ order: 1;
291
+ }
292
+ .col-order-2 {
293
+ order: 2;
294
+ }
295
+ .col-order-3 {
296
+ order: 3;
297
+ }
298
+ .col-order-4 {
299
+ order: 4;
300
+ }
301
+ .col-order-5 {
302
+ order: 5;
303
+ }
304
+ .col-order-6 {
305
+ order: 6;
306
+ }
307
+ .col-order-7 {
308
+ order: 7;
309
+ }
310
+ .col-order-8 {
311
+ order: 8;
312
+ }
313
+ .col-order-9 {
314
+ order: 9;
315
+ }
316
+ .col-order-10 {
317
+ order: 10;
318
+ }
319
+ .col-order-11 {
320
+ order: 11;
321
+ }
322
+ .col-order-12 {
323
+ order: 12;
324
+ }
325
+ }
326
+
327
+ /* ============================================================================
328
+ Row Variant Utilities (for Row React Component)
329
+ ========================================================================== */
330
+
331
+ /* Row Gap Utilities - Override default gap */
332
+ .col-row-gap-0 {
333
+ gap: 0;
334
+ }
335
+ .col-row-gap-xs {
336
+ gap: var(--spacing-xs);
337
+ }
338
+ .col-row-gap-sm {
339
+ gap: var(--spacing-sm);
340
+ }
341
+ .col-row-gap-md {
342
+ gap: var(--spacing-md);
343
+ }
344
+ .col-row-gap-lg {
345
+ gap: var(--spacing-lg);
346
+ }
347
+ .col-row-gap-xl {
348
+ gap: var(--spacing-xl);
349
+ }
350
+
351
+ /* Row Justify Content Utilities */
352
+ .col-row-justify-start {
353
+ justify-content: flex-start;
354
+ }
355
+ .col-row-justify-center {
356
+ justify-content: center;
357
+ }
358
+ .col-row-justify-end {
359
+ justify-content: flex-end;
360
+ }
361
+ .col-row-justify-between {
362
+ justify-content: space-between;
363
+ }
364
+ .col-row-justify-around {
365
+ justify-content: space-around;
366
+ }
367
+ .col-row-justify-evenly {
368
+ justify-content: space-evenly;
369
+ }
370
+
371
+ /* Row Align Items Utilities */
372
+ .col-row-align-start {
373
+ align-items: flex-start;
374
+ }
375
+ .col-row-align-center {
376
+ align-items: center;
377
+ }
378
+ .col-row-align-end {
379
+ align-items: flex-end;
380
+ }
381
+ .col-row-align-baseline {
382
+ align-items: baseline;
383
+ }
384
+ .col-row-align-stretch {
385
+ align-items: stretch;
386
+ }
387
+
388
+ /* Row Wrap Utilities */
389
+ .col-row-nowrap {
390
+ flex-wrap: nowrap;
391
+ }
392
+ .col-row-wrap-reverse {
393
+ flex-wrap: wrap-reverse;
394
+ }