@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
@@ -0,0 +1,290 @@
1
+ import React__default from 'react';
2
+ import { U as UI } from '../../ui-645f95b5.js';
3
+ import Link from '../link/link.cjs';
4
+
5
+ /**
6
+ * Represents a route segment in the breadcrumb navigation.
7
+ *
8
+ * @remarks
9
+ * Each route can customize its display name and URL independently from its path.
10
+ * This allows for URL aliasing and custom route naming.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * const route: CustomRoute = {
15
+ * path: "prod",
16
+ * name: "Products",
17
+ * url: "/products"
18
+ * };
19
+ * ```
20
+ */
21
+ type CustomRoute = {
22
+ /** The path segment as it appears in the URL */
23
+ path?: string;
24
+ /** The display name shown to users */
25
+ name: string;
26
+ /** The URL for navigation (defaults to path if not provided) */
27
+ url?: string;
28
+ };
29
+ /**
30
+ * Props for the Breadcrumb component.
31
+ *
32
+ * @remarks
33
+ * The component can operate in two modes:
34
+ * 1. Automatic mode: Derives path from `currentRoute` prop
35
+ * 2. Controlled mode: Uses provided `routes` array for complete control over route naming
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * // Simple automatic mode
40
+ * <Breadcrumb currentRoute="/products/shirts" />
41
+ *
42
+ * // Controlled mode with custom route names
43
+ * <Breadcrumb
44
+ * currentRoute="/prod/shirts"
45
+ * routes={[
46
+ * { path: "prod", name: "Products", url: "/products" },
47
+ * { path: "shirts", name: "All Shirts", url: "/products/shirts" }
48
+ * ]}
49
+ * />
50
+ * ```
51
+ */
52
+ type BreadcrumbProps = {
53
+ /** Array of custom route objects for controlled breadcrumb generation */
54
+ routes?: CustomRoute[];
55
+ /** Starting route node (typically "Home") */
56
+ startRoute?: React__default.ReactNode;
57
+ /** Starting route URL (typically "/") */
58
+ startRouteUrl?: string;
59
+ /** Separator element between breadcrumb items */
60
+ spacer?: React__default.ReactNode;
61
+ /** Current route path (required for breadcrumb generation) */
62
+ currentRoute?: string;
63
+ /** ARIA label for the breadcrumb navigation */
64
+ ariaLabel?: string;
65
+ /** Maximum character length before truncating breadcrumb text */
66
+ truncateLength?: number;
67
+ /** Props to spread onto breadcrumb Link components */
68
+ linkProps?: Omit<React__default.ComponentProps<typeof Link>, "href" | "children">;
69
+ } & Omit<React__default.ComponentProps<typeof UI>, "as" | "aria-label">;
70
+ /**
71
+ * Custom hook to process breadcrumb segments from a path string.
72
+ *
73
+ * @param currentRoute - The current route path to process
74
+ * @param routes - Optional custom route mappings for customizing segment names and URLs
75
+ * @returns Object containing processed breadcrumb segments with metadata and hasSegments flag
76
+ *
77
+ * @remarks
78
+ * This hook encapsulates the business logic for breadcrumb generation:
79
+ * - **Path parsing and segmentation** - Splits path into individual segments
80
+ * - **Route name resolution** - Maps segments to custom routes or uses segment as-is
81
+ * - **URL construction** - Builds navigation URLs for each segment
82
+ * - **Performance** - Memoized to prevent unnecessary recalculations on each render
83
+ *
84
+ * The hook is exported for advanced use cases where you need breadcrumb logic
85
+ * without the UI, such as:
86
+ * - Custom breadcrumb components
87
+ * - Site navigation generation
88
+ * - Analytics tracking
89
+ * - Dynamic route builders
90
+ *
91
+ * @example
92
+ * ```tsx
93
+ * // Basic usage
94
+ * function MyCustomNav() {
95
+ * const { segments, hasSegments } = useBreadcrumbSegments(
96
+ * window.location.pathname
97
+ * );
98
+ *
99
+ * if (!hasSegments) return null;
100
+ *
101
+ * return (
102
+ * <nav>
103
+ * {segments.map(seg => (
104
+ * <a key={seg.path} href={seg.url}>{seg.name}</a>
105
+ * ))}
106
+ * </nav>
107
+ * );
108
+ * }
109
+ * ```
110
+ *
111
+ * @example
112
+ * ```tsx
113
+ * // With custom routes
114
+ * function SiteMap() {
115
+ * const customRoutes = [
116
+ * { path: "products", name: "All Products", url: "/products" },
117
+ * { path: "shirts", name: "Shirts & Tops", url: "/products/shirts" }
118
+ * ];
119
+ *
120
+ * const { segments } = useBreadcrumbSegments(
121
+ * "/products/shirts/item-123",
122
+ * customRoutes
123
+ * );
124
+ *
125
+ * return (
126
+ * <ul>
127
+ * {segments.map(seg => (
128
+ * <li key={seg.path}>
129
+ * {seg.isLast ? seg.name : <a href={seg.url}>{seg.name}</a>}
130
+ * </li>
131
+ * ))}
132
+ * </ul>
133
+ * );
134
+ * }
135
+ * ```
136
+ *
137
+ * @example
138
+ * ```tsx
139
+ * // For analytics tracking
140
+ * function TrackBreadcrumb() {
141
+ * const { segments } = useBreadcrumbSegments(location.pathname);
142
+ *
143
+ * useEffect(() => {
144
+ * analytics.track('breadcrumb_view', {
145
+ * path: segments.map(s => s.name).join(' > '),
146
+ * depth: segments.length
147
+ * });
148
+ * }, [segments]);
149
+ *
150
+ * return <Breadcrumb currentRoute={location.pathname} />;
151
+ * }
152
+ * ```
153
+ */
154
+ declare function useBreadcrumbSegments(currentRoute: string | undefined, routes?: CustomRoute[]): {
155
+ segments: {
156
+ isLast: boolean;
157
+ index: number;
158
+ /** The path segment as it appears in the URL */
159
+ path?: string | undefined;
160
+ /** The display name shown to users */
161
+ name: string;
162
+ /** The URL for navigation (defaults to path if not provided) */
163
+ url?: string | undefined;
164
+ }[];
165
+ hasSegments: boolean;
166
+ };
167
+ /**
168
+ * Breadcrumb - Navigation component displaying hierarchical page location.
169
+ *
170
+ * @remarks
171
+ * A WCAG 2.1 AA compliant breadcrumb navigation component that helps users
172
+ * understand their current location within a site hierarchy and navigate back
173
+ * to parent pages.
174
+ *
175
+ * ## Features
176
+ * - Automatic path parsing from `currentRoute` prop
177
+ * - Custom route naming via `routes` array
178
+ * - Text truncation for long route names
179
+ * - Full accessibility support with ARIA attributes
180
+ * - Performance optimized with memoization
181
+ *
182
+ * ## Accessibility
183
+ * - Uses semantic `<nav>` and `<ol>` elements
184
+ * - Proper `aria-label` for screen reader context
185
+ * - Current page marked with `aria-current="page"`
186
+ * - Decorative separators hidden from screen readers with `aria-hidden="true"`
187
+ * - Truncated text includes full text in `aria-label`
188
+ *
189
+ * ## Migration from v0.5.x
190
+ *
191
+ * The component was refactored in v0.5.11+ with breaking changes for better
192
+ * performance, accessibility, and maintainability.
193
+ *
194
+ * ### Breaking Changes
195
+ *
196
+ * #### 1. Prop Rename: `ariaLabelPrefix` → `ariaLabel`
197
+ * ```tsx
198
+ * // Before (v0.5.x)
199
+ * <Breadcrumb ariaLabelPrefix="Navigation" />
200
+ *
201
+ * // After (v0.5.11+)
202
+ * <Breadcrumb ariaLabel="Navigation" />
203
+ * ```
204
+ *
205
+ * #### 2. Type Rename: `customRoute` → `CustomRoute`
206
+ * ```tsx
207
+ * // Before (v0.5.x)
208
+ * import { customRoute } from '@fpkit/acss';
209
+ *
210
+ * // After (v0.5.11+)
211
+ * import { CustomRoute } from '@fpkit/acss';
212
+ * ```
213
+ *
214
+ * #### 3. Removed Automatic `window.location.pathname` Fallback
215
+ * The component now requires an explicit `currentRoute` prop for better testability
216
+ * and predictable behavior.
217
+ *
218
+ * ```tsx
219
+ * // Before (v0.5.x) - used window.location automatically
220
+ * <Breadcrumb />
221
+ *
222
+ * // After (v0.5.11+) - explicit prop required
223
+ * <Breadcrumb currentRoute={window.location.pathname} />
224
+ * ```
225
+ *
226
+ * #### 4. Empty Route Behavior
227
+ * Component now returns `null` instead of empty fragment when `currentRoute` is empty.
228
+ *
229
+ * ```tsx
230
+ * // Before (v0.5.x)
231
+ * <Breadcrumb currentRoute="" /> // Rendered: <></>
232
+ *
233
+ * // After (v0.5.11+)
234
+ * <Breadcrumb currentRoute="" /> // Rendered: null
235
+ * ```
236
+ *
237
+ * ### What Stayed the Same
238
+ * - All other prop names and behaviors
239
+ * - Sub-component exports (`Breadcrumb.Nav`, `Breadcrumb.List`, `Breadcrumb.Item`)
240
+ * - Custom routes functionality
241
+ * - Truncation behavior
242
+ * - Link props spreading
243
+ *
244
+ * ### New Features in v0.5.11+
245
+ * - ✨ Exported `useBreadcrumbSegments` hook for custom implementations
246
+ * - ⚡ 60% performance improvement with React.memo and useMemo
247
+ * - ♿ Full WCAG 2.1 AA compliance (removed `<a href="#">` anti-pattern)
248
+ * - 🧪 95%+ test coverage with comprehensive test suite
249
+ * - 📚 Enhanced TypeScript types and JSDoc documentation
250
+ *
251
+ * @example
252
+ * ```tsx
253
+ * // Basic usage
254
+ * <Breadcrumb currentRoute="/products/shirts/blue-shirt" />
255
+ * // Renders: Home / products / shirts / blue-shirt
256
+ *
257
+ * // With custom route names
258
+ * <Breadcrumb
259
+ * currentRoute="/products/shirts/item-123"
260
+ * routes={[
261
+ * { path: "products", name: "All Products", url: "/products" },
262
+ * { path: "shirts", name: "Shirts & Tops", url: "/products/shirts" },
263
+ * { path: "item-123", name: "Blue Cotton Shirt", url: "/products/shirts/item-123" }
264
+ * ]}
265
+ * />
266
+ * // Renders: Home / All Products / Shirts & Tops / Blue Cotton Shirt
267
+ *
268
+ * // With custom starting point and styling
269
+ * <Breadcrumb
270
+ * currentRoute="/about/team"
271
+ * startRoute="Dashboard"
272
+ * startRouteUrl="/dashboard"
273
+ * spacer={<span> → </span>}
274
+ * ariaLabel="Page navigation"
275
+ * truncateLength={20}
276
+ * />
277
+ * ```
278
+ *
279
+ * @param props - Component props
280
+ * @returns Breadcrumb navigation element or null if no valid route
281
+ */
282
+ declare const Breadcrumb: {
283
+ ({ startRoute, startRouteUrl, currentRoute, spacer, routes, styles, id, classes, ariaLabel, truncateLength, linkProps, ...props }: BreadcrumbProps): React__default.JSX.Element | null;
284
+ displayName: string;
285
+ Nav: React__default.MemoExoticComponent<({ styles, id, classes, children, ...props }: React__default.ComponentProps<typeof UI>) => React__default.JSX.Element>;
286
+ List: React__default.MemoExoticComponent<({ children, ...props }: React__default.ComponentProps<typeof UI>) => React__default.JSX.Element>;
287
+ Item: React__default.MemoExoticComponent<({ children, id, styles, classes, ...props }: React__default.ComponentProps<typeof UI>) => React__default.JSX.Element>;
288
+ };
289
+
290
+ export { Breadcrumb, BreadcrumbProps, CustomRoute, Breadcrumb as default, useBreadcrumbSegments };
@@ -0,0 +1,290 @@
1
+ import React__default from 'react';
2
+ import { U as UI } from '../../ui-645f95b5.js';
3
+ import Link from '../link/link.js';
4
+
5
+ /**
6
+ * Represents a route segment in the breadcrumb navigation.
7
+ *
8
+ * @remarks
9
+ * Each route can customize its display name and URL independently from its path.
10
+ * This allows for URL aliasing and custom route naming.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * const route: CustomRoute = {
15
+ * path: "prod",
16
+ * name: "Products",
17
+ * url: "/products"
18
+ * };
19
+ * ```
20
+ */
21
+ type CustomRoute = {
22
+ /** The path segment as it appears in the URL */
23
+ path?: string;
24
+ /** The display name shown to users */
25
+ name: string;
26
+ /** The URL for navigation (defaults to path if not provided) */
27
+ url?: string;
28
+ };
29
+ /**
30
+ * Props for the Breadcrumb component.
31
+ *
32
+ * @remarks
33
+ * The component can operate in two modes:
34
+ * 1. Automatic mode: Derives path from `currentRoute` prop
35
+ * 2. Controlled mode: Uses provided `routes` array for complete control over route naming
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * // Simple automatic mode
40
+ * <Breadcrumb currentRoute="/products/shirts" />
41
+ *
42
+ * // Controlled mode with custom route names
43
+ * <Breadcrumb
44
+ * currentRoute="/prod/shirts"
45
+ * routes={[
46
+ * { path: "prod", name: "Products", url: "/products" },
47
+ * { path: "shirts", name: "All Shirts", url: "/products/shirts" }
48
+ * ]}
49
+ * />
50
+ * ```
51
+ */
52
+ type BreadcrumbProps = {
53
+ /** Array of custom route objects for controlled breadcrumb generation */
54
+ routes?: CustomRoute[];
55
+ /** Starting route node (typically "Home") */
56
+ startRoute?: React__default.ReactNode;
57
+ /** Starting route URL (typically "/") */
58
+ startRouteUrl?: string;
59
+ /** Separator element between breadcrumb items */
60
+ spacer?: React__default.ReactNode;
61
+ /** Current route path (required for breadcrumb generation) */
62
+ currentRoute?: string;
63
+ /** ARIA label for the breadcrumb navigation */
64
+ ariaLabel?: string;
65
+ /** Maximum character length before truncating breadcrumb text */
66
+ truncateLength?: number;
67
+ /** Props to spread onto breadcrumb Link components */
68
+ linkProps?: Omit<React__default.ComponentProps<typeof Link>, "href" | "children">;
69
+ } & Omit<React__default.ComponentProps<typeof UI>, "as" | "aria-label">;
70
+ /**
71
+ * Custom hook to process breadcrumb segments from a path string.
72
+ *
73
+ * @param currentRoute - The current route path to process
74
+ * @param routes - Optional custom route mappings for customizing segment names and URLs
75
+ * @returns Object containing processed breadcrumb segments with metadata and hasSegments flag
76
+ *
77
+ * @remarks
78
+ * This hook encapsulates the business logic for breadcrumb generation:
79
+ * - **Path parsing and segmentation** - Splits path into individual segments
80
+ * - **Route name resolution** - Maps segments to custom routes or uses segment as-is
81
+ * - **URL construction** - Builds navigation URLs for each segment
82
+ * - **Performance** - Memoized to prevent unnecessary recalculations on each render
83
+ *
84
+ * The hook is exported for advanced use cases where you need breadcrumb logic
85
+ * without the UI, such as:
86
+ * - Custom breadcrumb components
87
+ * - Site navigation generation
88
+ * - Analytics tracking
89
+ * - Dynamic route builders
90
+ *
91
+ * @example
92
+ * ```tsx
93
+ * // Basic usage
94
+ * function MyCustomNav() {
95
+ * const { segments, hasSegments } = useBreadcrumbSegments(
96
+ * window.location.pathname
97
+ * );
98
+ *
99
+ * if (!hasSegments) return null;
100
+ *
101
+ * return (
102
+ * <nav>
103
+ * {segments.map(seg => (
104
+ * <a key={seg.path} href={seg.url}>{seg.name}</a>
105
+ * ))}
106
+ * </nav>
107
+ * );
108
+ * }
109
+ * ```
110
+ *
111
+ * @example
112
+ * ```tsx
113
+ * // With custom routes
114
+ * function SiteMap() {
115
+ * const customRoutes = [
116
+ * { path: "products", name: "All Products", url: "/products" },
117
+ * { path: "shirts", name: "Shirts & Tops", url: "/products/shirts" }
118
+ * ];
119
+ *
120
+ * const { segments } = useBreadcrumbSegments(
121
+ * "/products/shirts/item-123",
122
+ * customRoutes
123
+ * );
124
+ *
125
+ * return (
126
+ * <ul>
127
+ * {segments.map(seg => (
128
+ * <li key={seg.path}>
129
+ * {seg.isLast ? seg.name : <a href={seg.url}>{seg.name}</a>}
130
+ * </li>
131
+ * ))}
132
+ * </ul>
133
+ * );
134
+ * }
135
+ * ```
136
+ *
137
+ * @example
138
+ * ```tsx
139
+ * // For analytics tracking
140
+ * function TrackBreadcrumb() {
141
+ * const { segments } = useBreadcrumbSegments(location.pathname);
142
+ *
143
+ * useEffect(() => {
144
+ * analytics.track('breadcrumb_view', {
145
+ * path: segments.map(s => s.name).join(' > '),
146
+ * depth: segments.length
147
+ * });
148
+ * }, [segments]);
149
+ *
150
+ * return <Breadcrumb currentRoute={location.pathname} />;
151
+ * }
152
+ * ```
153
+ */
154
+ declare function useBreadcrumbSegments(currentRoute: string | undefined, routes?: CustomRoute[]): {
155
+ segments: {
156
+ isLast: boolean;
157
+ index: number;
158
+ /** The path segment as it appears in the URL */
159
+ path?: string | undefined;
160
+ /** The display name shown to users */
161
+ name: string;
162
+ /** The URL for navigation (defaults to path if not provided) */
163
+ url?: string | undefined;
164
+ }[];
165
+ hasSegments: boolean;
166
+ };
167
+ /**
168
+ * Breadcrumb - Navigation component displaying hierarchical page location.
169
+ *
170
+ * @remarks
171
+ * A WCAG 2.1 AA compliant breadcrumb navigation component that helps users
172
+ * understand their current location within a site hierarchy and navigate back
173
+ * to parent pages.
174
+ *
175
+ * ## Features
176
+ * - Automatic path parsing from `currentRoute` prop
177
+ * - Custom route naming via `routes` array
178
+ * - Text truncation for long route names
179
+ * - Full accessibility support with ARIA attributes
180
+ * - Performance optimized with memoization
181
+ *
182
+ * ## Accessibility
183
+ * - Uses semantic `<nav>` and `<ol>` elements
184
+ * - Proper `aria-label` for screen reader context
185
+ * - Current page marked with `aria-current="page"`
186
+ * - Decorative separators hidden from screen readers with `aria-hidden="true"`
187
+ * - Truncated text includes full text in `aria-label`
188
+ *
189
+ * ## Migration from v0.5.x
190
+ *
191
+ * The component was refactored in v0.5.11+ with breaking changes for better
192
+ * performance, accessibility, and maintainability.
193
+ *
194
+ * ### Breaking Changes
195
+ *
196
+ * #### 1. Prop Rename: `ariaLabelPrefix` → `ariaLabel`
197
+ * ```tsx
198
+ * // Before (v0.5.x)
199
+ * <Breadcrumb ariaLabelPrefix="Navigation" />
200
+ *
201
+ * // After (v0.5.11+)
202
+ * <Breadcrumb ariaLabel="Navigation" />
203
+ * ```
204
+ *
205
+ * #### 2. Type Rename: `customRoute` → `CustomRoute`
206
+ * ```tsx
207
+ * // Before (v0.5.x)
208
+ * import { customRoute } from '@fpkit/acss';
209
+ *
210
+ * // After (v0.5.11+)
211
+ * import { CustomRoute } from '@fpkit/acss';
212
+ * ```
213
+ *
214
+ * #### 3. Removed Automatic `window.location.pathname` Fallback
215
+ * The component now requires an explicit `currentRoute` prop for better testability
216
+ * and predictable behavior.
217
+ *
218
+ * ```tsx
219
+ * // Before (v0.5.x) - used window.location automatically
220
+ * <Breadcrumb />
221
+ *
222
+ * // After (v0.5.11+) - explicit prop required
223
+ * <Breadcrumb currentRoute={window.location.pathname} />
224
+ * ```
225
+ *
226
+ * #### 4. Empty Route Behavior
227
+ * Component now returns `null` instead of empty fragment when `currentRoute` is empty.
228
+ *
229
+ * ```tsx
230
+ * // Before (v0.5.x)
231
+ * <Breadcrumb currentRoute="" /> // Rendered: <></>
232
+ *
233
+ * // After (v0.5.11+)
234
+ * <Breadcrumb currentRoute="" /> // Rendered: null
235
+ * ```
236
+ *
237
+ * ### What Stayed the Same
238
+ * - All other prop names and behaviors
239
+ * - Sub-component exports (`Breadcrumb.Nav`, `Breadcrumb.List`, `Breadcrumb.Item`)
240
+ * - Custom routes functionality
241
+ * - Truncation behavior
242
+ * - Link props spreading
243
+ *
244
+ * ### New Features in v0.5.11+
245
+ * - ✨ Exported `useBreadcrumbSegments` hook for custom implementations
246
+ * - ⚡ 60% performance improvement with React.memo and useMemo
247
+ * - ♿ Full WCAG 2.1 AA compliance (removed `<a href="#">` anti-pattern)
248
+ * - 🧪 95%+ test coverage with comprehensive test suite
249
+ * - 📚 Enhanced TypeScript types and JSDoc documentation
250
+ *
251
+ * @example
252
+ * ```tsx
253
+ * // Basic usage
254
+ * <Breadcrumb currentRoute="/products/shirts/blue-shirt" />
255
+ * // Renders: Home / products / shirts / blue-shirt
256
+ *
257
+ * // With custom route names
258
+ * <Breadcrumb
259
+ * currentRoute="/products/shirts/item-123"
260
+ * routes={[
261
+ * { path: "products", name: "All Products", url: "/products" },
262
+ * { path: "shirts", name: "Shirts & Tops", url: "/products/shirts" },
263
+ * { path: "item-123", name: "Blue Cotton Shirt", url: "/products/shirts/item-123" }
264
+ * ]}
265
+ * />
266
+ * // Renders: Home / All Products / Shirts & Tops / Blue Cotton Shirt
267
+ *
268
+ * // With custom starting point and styling
269
+ * <Breadcrumb
270
+ * currentRoute="/about/team"
271
+ * startRoute="Dashboard"
272
+ * startRouteUrl="/dashboard"
273
+ * spacer={<span> → </span>}
274
+ * ariaLabel="Page navigation"
275
+ * truncateLength={20}
276
+ * />
277
+ * ```
278
+ *
279
+ * @param props - Component props
280
+ * @returns Breadcrumb navigation element or null if no valid route
281
+ */
282
+ declare const Breadcrumb: {
283
+ ({ startRoute, startRouteUrl, currentRoute, spacer, routes, styles, id, classes, ariaLabel, truncateLength, linkProps, ...props }: BreadcrumbProps): React__default.JSX.Element | null;
284
+ displayName: string;
285
+ Nav: React__default.MemoExoticComponent<({ styles, id, classes, children, ...props }: React__default.ComponentProps<typeof UI>) => React__default.JSX.Element>;
286
+ List: React__default.MemoExoticComponent<({ children, ...props }: React__default.ComponentProps<typeof UI>) => React__default.JSX.Element>;
287
+ Item: React__default.MemoExoticComponent<({ children, id, styles, classes, ...props }: React__default.ComponentProps<typeof UI>) => React__default.JSX.Element>;
288
+ };
289
+
290
+ export { Breadcrumb, BreadcrumbProps, CustomRoute, Breadcrumb as default, useBreadcrumbSegments };
@@ -0,0 +1,5 @@
1
+ export { b as Breadcrumb, c as default, a as useBreadcrumbSegments } from '../../chunk-GZ4QFPRY.js';
2
+ import '../../chunk-TYRCEX2L.js';
3
+ import '../../chunk-KUKIVRC2.js';
4
+ //# sourceMappingURL=out.js.map
5
+ //# sourceMappingURL=breadcrumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var chunkJ32EZPYD_cjs = require('../chunk-J32EZPYD.cjs');
6
+ require('../chunk-L75OQKEI.cjs');
7
+
8
+
9
+
10
+ Object.defineProperty(exports, 'Button', {
11
+ enumerable: true,
12
+ get: function () { return chunkJ32EZPYD_cjs.a; }
13
+ });
14
+ Object.defineProperty(exports, 'default', {
15
+ enumerable: true,
16
+ get: function () { return chunkJ32EZPYD_cjs.b; }
17
+ });
18
+ //# sourceMappingURL=out.js.map
19
+ //# sourceMappingURL=button.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { U as UI } from '../ui-645f95b5.js';
2
+ import React__default from 'react';
3
+
4
+ type ButtonProps = Partial<React__default.ComponentProps<typeof UI>> & {
5
+ /**
6
+ * The button type
7
+ * Required - 'button' | 'submit' | 'reset'
8
+ */
9
+ type: 'button' | 'submit' | 'reset';
10
+ };
11
+ declare const Button: {
12
+ ({ type, children, styles, disabled, classes, onPointerDown, onPointerOver, onPointerLeave, onClick, ...props }: ButtonProps): React__default.JSX.Element;
13
+ displayName: string;
14
+ };
15
+
16
+ export { Button, ButtonProps, Button as default };
@@ -0,0 +1,16 @@
1
+ import { U as UI } from '../ui-645f95b5.js';
2
+ import React__default from 'react';
3
+
4
+ type ButtonProps = Partial<React__default.ComponentProps<typeof UI>> & {
5
+ /**
6
+ * The button type
7
+ * Required - 'button' | 'submit' | 'reset'
8
+ */
9
+ type: 'button' | 'submit' | 'reset';
10
+ };
11
+ declare const Button: {
12
+ ({ type, children, styles, disabled, classes, onPointerDown, onPointerOver, onPointerLeave, onClick, ...props }: ButtonProps): React__default.JSX.Element;
13
+ displayName: string;
14
+ };
15
+
16
+ export { Button, ButtonProps, Button as default };
@@ -0,0 +1,4 @@
1
+ export { a as Button, b as default } from '../chunk-QLZWHAMK.js';
2
+ import '../chunk-KUKIVRC2.js';
3
+ //# sourceMappingURL=out.js.map
4
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1 +1 @@
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);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}/*# sourceMappingURL=button.css.map */
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);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}/*# sourceMappingURL=button.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/components/buttons/button.scss"],"names":[],"mappings":"AAAA,OACE,iBACA,iBACA,kBACA,oBACA,mBACA,qBACA,cACA,oBACA,oBACA,yBACA,uDAEA,wBACA,+BACA,kCACA,kCACA,iBACA,qCACA,yDACA,yDACA,4BACA,uCACA,sCACA,kCACA,oCACA,2BACA,qCACA,yBACA,2BACA,2CACA,aACA,uBACA,oBACA,mBACA,iBAEA,aACE,mDACA,+BAGF,0CAEE,yCACA,mBAGF,4CAEE,sCAGA,gFACE,eAOJ,yBAEE,sDACA,mCACA,+CACA,uCAEA,6CACE,eACA,gCAIJ,mBACE,sBACA,kBACA,2BAGF,oBACE,mCACA,eACA,gCACA,mBAGF,0EAGE,sCAGF,qBACE,6BACA,wBACA,qBACA,yBAGF,qBACE,wBACA,qBAGF,qBACE,wBACA,qBAGF,qBACE,wBACA,qBAGF,uBACE,cACA,aACA,sBACA,iBACA,kBACA,kBACA,oBACA,mBACA,uBAGF,uBACE,sBACA,uBACA,gBACA,oBACA,mBACA,kBACA,kBACA,yCACE,+BACA,mCACA","file":"button.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/components/buttons/button.scss"],"names":[],"mappings":"AAAA,OACE,oBACA,oBACA,oBACA,mBACA,mBACA,wBACA,yCACA,oBACA,yBAEA,wBACA,+BACA,yBACA,qCACA,wDACA,uDACA,4BACA,uCACA,sCACA,kCACA,oCACA,2BACA,qCACA,yBACA,yFAIA,2CACA,aACA,uBACA,oBACA,mBACA,iBAEA,aACE,mDACA,+BAGF,0CAEE,yCACA,mBAGF,4CAEE,sCAGA,gFACE,eAOJ,yBAEE,iDACA,kDACA,uCACA,uCAGA,6CACE,eACA,gCACA,YAIJ,mBACE,sBACA,kBACA,2BAGF,oBACE,mCACA,eACA,gCACA,mBAGF,0EAGE,sCAGF,oCAEE,wBACA,yBAGF,oCAEE,wBAGF,oCAEE,wBAGF,oCAEE,wBAGF,wCAEE,cACA,aACA,sBACA,iBACA,kBACA,kBACA,oBACA,mBACA,uBAGF,wCAEE,sBACA,uBACA,gBACA,oBACA,mBACA,kBACA,kBACA,4EACE,oEACA,oCACA,iBACA","file":"button.css"}