@cellarnode/ui 0.16.9 → 0.17.3

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 (311) hide show
  1. package/dist/chat/global-chat-widget.js +2 -2
  2. package/dist/chat/global-chat-widget.js.map +1 -1
  3. package/dist/chat/global-chat-widget.test.d.ts +2 -0
  4. package/dist/chat/global-chat-widget.test.d.ts.map +1 -0
  5. package/dist/chat/global-chat-widget.test.js +167 -0
  6. package/dist/chat/global-chat-widget.test.js.map +1 -0
  7. package/dist/chat/index.d.ts +0 -1
  8. package/dist/chat/index.d.ts.map +1 -1
  9. package/dist/chat/index.js +0 -1
  10. package/dist/chat/index.js.map +1 -1
  11. package/dist/components/__tests__/animated-list-skeleton.test.d.ts +2 -0
  12. package/dist/components/__tests__/animated-list-skeleton.test.d.ts.map +1 -0
  13. package/dist/components/__tests__/animated-list-skeleton.test.js +11 -0
  14. package/dist/components/__tests__/animated-list-skeleton.test.js.map +1 -0
  15. package/dist/components/__tests__/card-grid-skeleton.test.d.ts +2 -0
  16. package/dist/components/__tests__/card-grid-skeleton.test.d.ts.map +1 -0
  17. package/dist/components/__tests__/card-grid-skeleton.test.js +22 -0
  18. package/dist/components/__tests__/card-grid-skeleton.test.js.map +1 -0
  19. package/dist/components/__tests__/dashboard-stats-grid-skeleton.test.d.ts +2 -0
  20. package/dist/components/__tests__/dashboard-stats-grid-skeleton.test.d.ts.map +1 -0
  21. package/dist/components/__tests__/dashboard-stats-grid-skeleton.test.js +39 -0
  22. package/dist/components/__tests__/dashboard-stats-grid-skeleton.test.js.map +1 -0
  23. package/dist/components/__tests__/data-table-skeleton.test.d.ts +2 -0
  24. package/dist/components/__tests__/data-table-skeleton.test.d.ts.map +1 -0
  25. package/dist/components/__tests__/data-table-skeleton.test.js +27 -0
  26. package/dist/components/__tests__/data-table-skeleton.test.js.map +1 -0
  27. package/dist/components/__tests__/detail-page-skeleton.test.d.ts +2 -0
  28. package/dist/components/__tests__/detail-page-skeleton.test.d.ts.map +1 -0
  29. package/dist/components/__tests__/detail-page-skeleton.test.js +30 -0
  30. package/dist/components/__tests__/detail-page-skeleton.test.js.map +1 -0
  31. package/dist/components/__tests__/list-item-skeleton.test.d.ts +2 -0
  32. package/dist/components/__tests__/list-item-skeleton.test.d.ts.map +1 -0
  33. package/dist/components/__tests__/list-item-skeleton.test.js +38 -0
  34. package/dist/components/__tests__/list-item-skeleton.test.js.map +1 -0
  35. package/dist/components/__tests__/profile-header-skeleton.test.d.ts +2 -0
  36. package/dist/components/__tests__/profile-header-skeleton.test.d.ts.map +1 -0
  37. package/dist/components/__tests__/profile-header-skeleton.test.js +17 -0
  38. package/dist/components/__tests__/profile-header-skeleton.test.js.map +1 -0
  39. package/dist/components/__tests__/stat-card-skeleton.test.d.ts +2 -0
  40. package/dist/components/__tests__/stat-card-skeleton.test.d.ts.map +1 -0
  41. package/dist/components/__tests__/stat-card-skeleton.test.js +33 -0
  42. package/dist/components/__tests__/stat-card-skeleton.test.js.map +1 -0
  43. package/dist/components/animated-list.d.ts +11 -1
  44. package/dist/components/animated-list.d.ts.map +1 -1
  45. package/dist/components/animated-list.js +7 -1
  46. package/dist/components/animated-list.js.map +1 -1
  47. package/dist/components/animated-list.stories.d.ts +3 -2
  48. package/dist/components/animated-list.stories.d.ts.map +1 -1
  49. package/dist/components/bottle-extract-dialog.js +4 -5
  50. package/dist/components/bottle-extract-dialog.js.map +1 -1
  51. package/dist/components/bottle-extract-dialog.test.d.ts +2 -0
  52. package/dist/components/bottle-extract-dialog.test.d.ts.map +1 -0
  53. package/dist/components/bottle-extract-dialog.test.js +99 -0
  54. package/dist/components/bottle-extract-dialog.test.js.map +1 -0
  55. package/dist/components/branch-edit-banner.js +1 -1
  56. package/dist/components/branch-edit-banner.js.map +1 -1
  57. package/dist/components/branch-overview-panel.d.ts.map +1 -1
  58. package/dist/components/branch-overview-panel.js +8 -0
  59. package/dist/components/branch-overview-panel.js.map +1 -1
  60. package/dist/components/branch-overview-panel.stories.d.ts +8 -0
  61. package/dist/components/branch-overview-panel.stories.d.ts.map +1 -1
  62. package/dist/components/branch-overview-panel.stories.js.map +1 -1
  63. package/dist/components/branch-resolution-modal.d.ts.map +1 -1
  64. package/dist/components/branch-resolution-modal.js +9 -0
  65. package/dist/components/branch-resolution-modal.js.map +1 -1
  66. package/dist/components/branch-resolution-modal.stories.d.ts +9 -0
  67. package/dist/components/branch-resolution-modal.stories.d.ts.map +1 -1
  68. package/dist/components/branch-resolution-modal.stories.js.map +1 -1
  69. package/dist/components/branch-resolution-modal.test.js +9 -0
  70. package/dist/components/branch-resolution-modal.test.js.map +1 -1
  71. package/dist/components/card-grid-skeleton.d.ts +9 -0
  72. package/dist/components/card-grid-skeleton.d.ts.map +1 -0
  73. package/dist/components/card-grid-skeleton.js +16 -0
  74. package/dist/components/card-grid-skeleton.js.map +1 -0
  75. package/dist/components/card-grid-skeleton.stories.d.ts +35 -0
  76. package/dist/components/card-grid-skeleton.stories.d.ts.map +1 -0
  77. package/dist/components/card-grid-skeleton.stories.js +22 -0
  78. package/dist/components/card-grid-skeleton.stories.js.map +1 -0
  79. package/dist/components/card.js +2 -2
  80. package/dist/components/card.js.map +1 -1
  81. package/dist/components/celebration-pulse.d.ts.map +1 -1
  82. package/dist/components/celebration-pulse.js +1 -1
  83. package/dist/components/celebration-pulse.js.map +1 -1
  84. package/dist/components/dashboard-stats-grid.d.ts +11 -1
  85. package/dist/components/dashboard-stats-grid.d.ts.map +1 -1
  86. package/dist/components/dashboard-stats-grid.js +19 -12
  87. package/dist/components/dashboard-stats-grid.js.map +1 -1
  88. package/dist/components/dashboard-stats-grid.stories.d.ts +19 -0
  89. package/dist/components/dashboard-stats-grid.stories.d.ts.map +1 -0
  90. package/dist/components/dashboard-stats-grid.stories.js +34 -0
  91. package/dist/components/dashboard-stats-grid.stories.js.map +1 -0
  92. package/dist/components/data-table-skeleton.d.ts +9 -0
  93. package/dist/components/data-table-skeleton.d.ts.map +1 -0
  94. package/dist/components/data-table-skeleton.js +14 -0
  95. package/dist/components/data-table-skeleton.js.map +1 -0
  96. package/dist/components/data-table-skeleton.stories.d.ts +36 -0
  97. package/dist/components/data-table-skeleton.stories.d.ts.map +1 -0
  98. package/dist/components/data-table-skeleton.stories.js +22 -0
  99. package/dist/components/data-table-skeleton.stories.js.map +1 -0
  100. package/dist/components/detail-page-skeleton.d.ts +11 -0
  101. package/dist/components/detail-page-skeleton.d.ts.map +1 -0
  102. package/dist/components/detail-page-skeleton.js +14 -0
  103. package/dist/components/detail-page-skeleton.js.map +1 -0
  104. package/dist/components/{kanban-card.stories.d.ts → detail-page-skeleton.stories.d.ts} +4 -5
  105. package/dist/components/detail-page-skeleton.stories.d.ts.map +1 -0
  106. package/dist/components/detail-page-skeleton.stories.js +15 -0
  107. package/dist/components/detail-page-skeleton.stories.js.map +1 -0
  108. package/dist/components/drawer.js +1 -1
  109. package/dist/components/drawer.js.map +1 -1
  110. package/dist/components/extraction-phase-stepper.d.ts.map +1 -1
  111. package/dist/components/extraction-phase-stepper.js +5 -4
  112. package/dist/components/extraction-phase-stepper.js.map +1 -1
  113. package/dist/components/journey-card.js +2 -2
  114. package/dist/components/journey-card.js.map +1 -1
  115. package/dist/components/journey-card.test.d.ts +2 -0
  116. package/dist/components/journey-card.test.d.ts.map +1 -0
  117. package/dist/components/journey-card.test.js +82 -0
  118. package/dist/components/journey-card.test.js.map +1 -0
  119. package/dist/components/kanban-board.stories.d.ts.map +1 -1
  120. package/dist/components/kanban-board.stories.js +13 -3
  121. package/dist/components/kanban-board.stories.js.map +1 -1
  122. package/dist/components/kanban-dnd-board.stories.d.ts.map +1 -1
  123. package/dist/components/kanban-dnd-board.stories.js +7 -4
  124. package/dist/components/kanban-dnd-board.stories.js.map +1 -1
  125. package/dist/components/label.js +1 -1
  126. package/dist/components/label.js.map +1 -1
  127. package/dist/components/list-item-skeleton.d.ts +9 -0
  128. package/dist/components/list-item-skeleton.d.ts.map +1 -0
  129. package/dist/components/list-item-skeleton.js +13 -0
  130. package/dist/components/list-item-skeleton.js.map +1 -0
  131. package/dist/components/list-item-skeleton.stories.d.ts +27 -0
  132. package/dist/components/list-item-skeleton.stories.d.ts.map +1 -0
  133. package/dist/components/list-item-skeleton.stories.js +21 -0
  134. package/dist/components/list-item-skeleton.stories.js.map +1 -0
  135. package/dist/components/offer-card.js +1 -1
  136. package/dist/components/offer-card.js.map +1 -1
  137. package/dist/components/offer-card.test.d.ts +2 -0
  138. package/dist/components/offer-card.test.d.ts.map +1 -0
  139. package/dist/components/offer-card.test.js +73 -0
  140. package/dist/components/offer-card.test.js.map +1 -0
  141. package/dist/components/product-card.js +1 -1
  142. package/dist/components/product-card.js.map +1 -1
  143. package/dist/components/product-card.stories.js +2 -2
  144. package/dist/components/product-card.stories.js.map +1 -1
  145. package/dist/components/profile-header-skeleton.d.ts +12 -0
  146. package/dist/components/profile-header-skeleton.d.ts.map +1 -0
  147. package/dist/components/profile-header-skeleton.js +15 -0
  148. package/dist/components/profile-header-skeleton.js.map +1 -0
  149. package/dist/components/profile-header-skeleton.stories.d.ts +15 -0
  150. package/dist/components/profile-header-skeleton.stories.d.ts.map +1 -0
  151. package/dist/components/profile-header-skeleton.stories.js +15 -0
  152. package/dist/components/profile-header-skeleton.stories.js.map +1 -0
  153. package/dist/components/reason-pill.js +1 -1
  154. package/dist/components/reason-pill.js.map +1 -1
  155. package/dist/components/score-chip.js +1 -1
  156. package/dist/components/score-chip.js.map +1 -1
  157. package/dist/components/shadcn-dialog.js +1 -1
  158. package/dist/components/shadcn-dialog.js.map +1 -1
  159. package/dist/components/skeleton.d.ts +6 -1
  160. package/dist/components/skeleton.d.ts.map +1 -1
  161. package/dist/components/skeleton.js +5 -2
  162. package/dist/components/skeleton.js.map +1 -1
  163. package/dist/components/skeleton.stories.d.ts +9 -1
  164. package/dist/components/skeleton.stories.d.ts.map +1 -1
  165. package/dist/components/skeleton.stories.js +16 -5
  166. package/dist/components/skeleton.stories.js.map +1 -1
  167. package/dist/components/sortable-card-shell.test.d.ts +2 -0
  168. package/dist/components/sortable-card-shell.test.d.ts.map +1 -0
  169. package/dist/components/sortable-card-shell.test.js +115 -0
  170. package/dist/components/sortable-card-shell.test.js.map +1 -0
  171. package/dist/components/stat-card.d.ts +10 -1
  172. package/dist/components/stat-card.d.ts.map +1 -1
  173. package/dist/components/stat-card.js +15 -1
  174. package/dist/components/stat-card.js.map +1 -1
  175. package/dist/components/stat-card.stories.d.ts +6 -2
  176. package/dist/components/stat-card.stories.d.ts.map +1 -1
  177. package/dist/components/stat-card.stories.js +17 -4
  178. package/dist/components/stat-card.stories.js.map +1 -1
  179. package/dist/components/variant-picker-dialog.stories.js +1 -1
  180. package/dist/components/variant-picker-dialog.stories.js.map +1 -1
  181. package/dist/components/variant-picker-dialog.test.js +1 -1
  182. package/dist/components/variant-picker-dialog.test.js.map +1 -1
  183. package/dist/globe/__tests__/globe-loading-skeleton.test.d.ts +2 -0
  184. package/dist/globe/__tests__/globe-loading-skeleton.test.d.ts.map +1 -0
  185. package/dist/globe/__tests__/globe-loading-skeleton.test.js +29 -0
  186. package/dist/globe/__tests__/globe-loading-skeleton.test.js.map +1 -0
  187. package/dist/globe/globe-loading-skeleton.d.ts +13 -5
  188. package/dist/globe/globe-loading-skeleton.d.ts.map +1 -1
  189. package/dist/globe/globe-loading-skeleton.js +9 -2
  190. package/dist/globe/globe-loading-skeleton.js.map +1 -1
  191. package/dist/index.d.ts +6 -10
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +7 -7
  194. package/dist/index.js.map +1 -1
  195. package/dist/nav/app-sidebar.js +1 -1
  196. package/dist/nav/app-sidebar.js.map +1 -1
  197. package/dist/offer/index.d.ts +1 -3
  198. package/dist/offer/index.d.ts.map +1 -1
  199. package/dist/offer/index.js +5 -2
  200. package/dist/offer/index.js.map +1 -1
  201. package/dist/offer/negotiation-event-card.stories.d.ts +1 -1
  202. package/dist/offer/negotiation-event-card.stories.d.ts.map +1 -1
  203. package/dist/offer/negotiation-event-card.stories.js +3 -1
  204. package/dist/offer/negotiation-event-card.stories.js.map +1 -1
  205. package/dist/opportunities/opportunities-table.js +1 -1
  206. package/dist/opportunities/opportunities-table.js.map +1 -1
  207. package/dist/opportunities/opportunities-table.test.d.ts +2 -0
  208. package/dist/opportunities/opportunities-table.test.d.ts.map +1 -0
  209. package/dist/opportunities/opportunities-table.test.js +87 -0
  210. package/dist/opportunities/opportunities-table.test.js.map +1 -0
  211. package/dist/skeleton/__tests__/loader.test.d.ts +2 -0
  212. package/dist/skeleton/__tests__/loader.test.d.ts.map +1 -0
  213. package/dist/skeleton/__tests__/loader.test.js +33 -0
  214. package/dist/skeleton/__tests__/loader.test.js.map +1 -0
  215. package/dist/skeleton/__tests__/primitive.test.d.ts +2 -0
  216. package/dist/skeleton/__tests__/primitive.test.d.ts.map +1 -0
  217. package/dist/skeleton/__tests__/primitive.test.js +36 -0
  218. package/dist/skeleton/__tests__/primitive.test.js.map +1 -0
  219. package/dist/skeleton/__tests__/provider.test.d.ts +2 -0
  220. package/dist/skeleton/__tests__/provider.test.d.ts.map +1 -0
  221. package/dist/skeleton/__tests__/provider.test.js +88 -0
  222. package/dist/skeleton/__tests__/provider.test.js.map +1 -0
  223. package/dist/skeleton/index.d.ts +5 -0
  224. package/dist/skeleton/index.d.ts.map +1 -0
  225. package/dist/skeleton/index.js +5 -0
  226. package/dist/skeleton/index.js.map +1 -0
  227. package/dist/skeleton/loader.d.ts +15 -0
  228. package/dist/skeleton/loader.d.ts.map +1 -0
  229. package/dist/skeleton/loader.js +21 -0
  230. package/dist/skeleton/loader.js.map +1 -0
  231. package/dist/skeleton/loader.stories.d.ts +16 -0
  232. package/dist/skeleton/loader.stories.d.ts.map +1 -0
  233. package/dist/skeleton/loader.stories.js +27 -0
  234. package/dist/skeleton/loader.stories.js.map +1 -0
  235. package/dist/skeleton/provider.d.ts +23 -0
  236. package/dist/skeleton/provider.d.ts.map +1 -0
  237. package/dist/skeleton/provider.js +27 -0
  238. package/dist/skeleton/provider.js.map +1 -0
  239. package/dist/skeleton/stagger.d.ts +30 -0
  240. package/dist/skeleton/stagger.d.ts.map +1 -0
  241. package/dist/skeleton/stagger.js +45 -0
  242. package/dist/skeleton/stagger.js.map +1 -0
  243. package/package.json +1 -1
  244. package/src/theme/tokens.css +93 -0
  245. package/dist/chat/messenger-chat-header.d.ts +0 -14
  246. package/dist/chat/messenger-chat-header.d.ts.map +0 -1
  247. package/dist/chat/messenger-chat-header.js +0 -25
  248. package/dist/chat/messenger-chat-header.js.map +0 -1
  249. package/dist/components/asset-list.d.ts +0 -34
  250. package/dist/components/asset-list.d.ts.map +0 -1
  251. package/dist/components/asset-list.js +0 -34
  252. package/dist/components/asset-list.js.map +0 -1
  253. package/dist/components/asset-list.stories.d.ts +0 -20
  254. package/dist/components/asset-list.stories.d.ts.map +0 -1
  255. package/dist/components/asset-list.stories.js +0 -50
  256. package/dist/components/asset-list.stories.js.map +0 -1
  257. package/dist/components/classification-select.d.ts +0 -24
  258. package/dist/components/classification-select.d.ts.map +0 -1
  259. package/dist/components/classification-select.js +0 -51
  260. package/dist/components/classification-select.js.map +0 -1
  261. package/dist/components/classification-select.stories.d.ts +0 -17
  262. package/dist/components/classification-select.stories.d.ts.map +0 -1
  263. package/dist/components/classification-select.stories.js +0 -100
  264. package/dist/components/classification-select.stories.js.map +0 -1
  265. package/dist/components/completed-offer-card.d.ts +0 -34
  266. package/dist/components/completed-offer-card.d.ts.map +0 -1
  267. package/dist/components/completed-offer-card.js +0 -20
  268. package/dist/components/completed-offer-card.js.map +0 -1
  269. package/dist/components/completed-offer-card.stories.d.ts +0 -17
  270. package/dist/components/completed-offer-card.stories.d.ts.map +0 -1
  271. package/dist/components/completed-offer-card.stories.js +0 -75
  272. package/dist/components/completed-offer-card.stories.js.map +0 -1
  273. package/dist/components/kanban-card.d.ts +0 -8
  274. package/dist/components/kanban-card.d.ts.map +0 -1
  275. package/dist/components/kanban-card.js +0 -13
  276. package/dist/components/kanban-card.js.map +0 -1
  277. package/dist/components/kanban-card.stories.d.ts.map +0 -1
  278. package/dist/components/kanban-card.stories.js +0 -30
  279. package/dist/components/kanban-card.stories.js.map +0 -1
  280. package/dist/components/price-comparison.d.ts +0 -13
  281. package/dist/components/price-comparison.d.ts.map +0 -1
  282. package/dist/components/price-comparison.js +0 -60
  283. package/dist/components/price-comparison.js.map +0 -1
  284. package/dist/components/price-comparison.stories.d.ts +0 -11
  285. package/dist/components/price-comparison.stories.d.ts.map +0 -1
  286. package/dist/components/price-comparison.stories.js +0 -56
  287. package/dist/components/price-comparison.stories.js.map +0 -1
  288. package/dist/components/pricing-reference-card.d.ts +0 -13
  289. package/dist/components/pricing-reference-card.d.ts.map +0 -1
  290. package/dist/components/pricing-reference-card.js +0 -38
  291. package/dist/components/pricing-reference-card.js.map +0 -1
  292. package/dist/components/pricing-reference-card.stories.d.ts +0 -11
  293. package/dist/components/pricing-reference-card.stories.d.ts.map +0 -1
  294. package/dist/components/pricing-reference-card.stories.js +0 -54
  295. package/dist/components/pricing-reference-card.stories.js.map +0 -1
  296. package/dist/components/pricing-reference-card.test.d.ts +0 -2
  297. package/dist/components/pricing-reference-card.test.d.ts.map +0 -1
  298. package/dist/components/pricing-reference-card.test.js +0 -31
  299. package/dist/components/pricing-reference-card.test.js.map +0 -1
  300. package/dist/offer/negotiation-event-card.d.ts +0 -9
  301. package/dist/offer/negotiation-event-card.d.ts.map +0 -1
  302. package/dist/offer/negotiation-event-card.js +0 -39
  303. package/dist/offer/negotiation-event-card.js.map +0 -1
  304. package/dist/offer/org-banner.d.ts +0 -11
  305. package/dist/offer/org-banner.d.ts.map +0 -1
  306. package/dist/offer/org-banner.js +0 -19
  307. package/dist/offer/org-banner.js.map +0 -1
  308. package/dist/offer/org-banner.stories.d.ts +0 -18
  309. package/dist/offer/org-banner.stories.d.ts.map +0 -1
  310. package/dist/offer/org-banner.stories.js +0 -51
  311. package/dist/offer/org-banner.stories.js.map +0 -1
@@ -34,7 +34,7 @@ export const Default = {
34
34
  export const WithPlaceholder = {
35
35
  args: {
36
36
  image: null,
37
- placeholder: (_jsx("div", { className: "flex size-full items-center justify-center bg-gradient-to-br from-teal-600 to-teal-800", children: _jsx("span", { className: "text-7xl font-bold text-white/80", children: "S" }) })),
37
+ placeholder: (_jsx("div", { className: "flex size-full items-center justify-center bg-linear-to-br from-teal-600 to-teal-800", children: _jsx("span", { className: "text-7xl font-bold text-white/80", children: "S" }) })),
38
38
  title: "Sourdough Boule",
39
39
  subtitle: "Bread · Sourdough",
40
40
  statusSlot: (_jsx("span", { className: "rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800", children: "Needs Review" })),
@@ -47,7 +47,7 @@ export const WithPlaceholder = {
47
47
  export const Draft = {
48
48
  args: {
49
49
  image: null,
50
- placeholder: (_jsx("div", { className: "flex size-full items-center justify-center bg-gradient-to-br from-slate-400 to-slate-600", children: _jsx("span", { className: "text-7xl font-bold text-white/80", children: "H" }) })),
50
+ placeholder: (_jsx("div", { className: "flex size-full items-center justify-center bg-linear-to-br from-slate-400 to-slate-600", children: _jsx("span", { className: "text-7xl font-bold text-white/80", children: "H" }) })),
51
51
  title: "Honey Wheat Loaf",
52
52
  subtitle: "Bread · Whole wheat",
53
53
  statusSlot: (_jsx("span", { className: "rounded-full bg-slate-200 px-3 py-1 text-xs font-semibold text-slate-700", children: "Draft" })),
@@ -1 +1 @@
1
- {"version":3,"file":"product-card.stories.js","sourceRoot":"","sources":["../../src/components/product-card.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,SAAS,EACP,uLAAuL;aAC1L;SACF;KACF;CACiC,CAAC;AAErC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,GAAG,EAAE,yEAAyE;YAC9E,OAAO,EAAE,iBAAiB;YAC1B,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,8BAA8B;QACxC,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,0EAA0E,uBAEnF,CACR;QACD,UAAU,EAAE,CACV,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,sBAAa,EAClD,eAAM,SAAS,EAAC,2EAA2E,0BAEpF,IACH,CACP;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;KAC5C;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,CACX,cAAK,SAAS,EAAC,wFAAwF,YACrG,eAAM,SAAS,EAAC,kCAAkC,kBAAS,GACvD,CACP;QACD,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,mBAAmB;QAC7B,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,4EAA4E,6BAErF,CACR;QACD,UAAU,EAAE,CACV,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,sBAAa,EAClD,eAAM,SAAS,EAAC,+BAA+B,+BAAsB,IACjE,CACP;KACF;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,CACX,cAAK,SAAS,EAAC,0FAA0F,YACvG,eAAM,SAAS,EAAC,kCAAkC,kBAAS,GACvD,CACP;QACD,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,qBAAqB;QAC/B,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,0EAA0E,sBAEnF,CACR;KACF;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"product-card.stories.js","sourceRoot":"","sources":["../../src/components/product-card.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,SAAS,EACP,uLAAuL;aAC1L;SACF;KACF;CACiC,CAAC;AAErC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,GAAG,EAAE,yEAAyE;YAC9E,OAAO,EAAE,iBAAiB;YAC1B,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,8BAA8B;QACxC,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,0EAA0E,uBAEnF,CACR;QACD,UAAU,EAAE,CACV,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,sBAAa,EAClD,eAAM,SAAS,EAAC,2EAA2E,0BAEpF,IACH,CACP;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;KAC5C;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,CACX,cAAK,SAAS,EAAC,sFAAsF,YACnG,eAAM,SAAS,EAAC,kCAAkC,kBAAS,GACvD,CACP;QACD,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,mBAAmB;QAC7B,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,4EAA4E,6BAErF,CACR;QACD,UAAU,EAAE,CACV,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,sBAAa,EAClD,eAAM,SAAS,EAAC,+BAA+B,+BAAsB,IACjE,CACP;KACF;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,CACX,cAAK,SAAS,EAAC,wFAAwF,YACrG,eAAM,SAAS,EAAC,kCAAkC,kBAAS,GACvD,CACP;QACD,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,qBAAqB;QAC/B,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,0EAA0E,sBAEnF,CACR;KACF;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ import { type SkeletonTier } from "../skeleton/stagger";
3
+ export interface ProfileHeaderSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ tier?: SkeletonTier;
5
+ }
6
+ /**
7
+ * Replaces the 9-part hand-rolled skeleton currently inlined in
8
+ * cellarnode-importer-dashboard's organization-profile-content.tsx.
9
+ * Shape: banner (wide rectangle) + avatar (circle) + title + description + 2 grid cards.
10
+ */
11
+ export declare function ProfileHeaderSkeleton({ tier, className, ...rest }: ProfileHeaderSkeletonProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=profile-header-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-header-skeleton.d.ts","sourceRoot":"","sources":["../../src/components/profile-header-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,WAAW,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtF,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,SAAS,EACT,GAAG,IAAI,EACR,EAAE,0BAA0B,2CA6B5B"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils";
3
+ import { Skeleton } from "./skeleton";
4
+ import { useSkeletonContext } from "../skeleton/stagger";
5
+ /**
6
+ * Replaces the 9-part hand-rolled skeleton currently inlined in
7
+ * cellarnode-importer-dashboard's organization-profile-content.tsx.
8
+ * Shape: banner (wide rectangle) + avatar (circle) + title + description + 2 grid cards.
9
+ */
10
+ export function ProfileHeaderSkeleton({ tier, className, ...rest }) {
11
+ const ctx = useSkeletonContext();
12
+ const resolvedTier = tier ?? (ctx.hasProvider ? ctx.tier : "hero");
13
+ return (_jsxs("div", { className: cn("flex flex-col gap-6", className), ...rest, children: [_jsx(Skeleton, { tier: resolvedTier, className: "h-40 w-full rounded-2xl" }), _jsxs("div", { className: "flex items-start gap-4", children: [_jsx(Skeleton, { tier: resolvedTier, className: "size-20 shrink-0 rounded-full" }), _jsxs("div", { className: "flex flex-1 flex-col gap-3", children: [_jsx(Skeleton, { tier: resolvedTier, className: "h-6 w-64" }), _jsx(Skeleton, { tier: resolvedTier, className: "h-4 w-full max-w-2xl" }), _jsx(Skeleton, { tier: resolvedTier, className: "h-4 w-3/4 max-w-xl" })] })] }), _jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [_jsxs("div", { className: "flex flex-col gap-3 rounded-2xl border border-border/60 bg-card p-5", children: [_jsx(Skeleton, { tier: resolvedTier, className: "h-3 w-24" }), _jsx(Skeleton, { tier: resolvedTier, className: "h-5 w-40" }), _jsx(Skeleton, { tier: resolvedTier, className: "h-3 w-full max-w-xs" })] }), _jsxs("div", { className: "flex flex-col gap-3 rounded-2xl border border-border/60 bg-card p-5", children: [_jsx(Skeleton, { tier: resolvedTier, className: "h-3 w-24" }), _jsx(Skeleton, { tier: resolvedTier, className: "h-5 w-40" }), _jsx(Skeleton, { tier: resolvedTier, className: "h-3 w-full max-w-xs" })] })] })] }));
14
+ }
15
+ //# sourceMappingURL=profile-header-skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-header-skeleton.js","sourceRoot":"","sources":["../../src/components/profile-header-skeleton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAC;AAM5E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,IAAI,EACJ,SAAS,EACT,GAAG,IAAI,EACoB;IAC3B,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,MAAM,YAAY,GAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEjF,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAAM,IAAI,aAC5D,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,yBAAyB,GAAG,EACpE,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,+BAA+B,GAAG,EAC1E,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,UAAU,GAAG,EACrD,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,sBAAsB,GAAG,EACjE,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,oBAAoB,GAAG,IAC3D,IACF,EACN,eAAK,SAAS,EAAC,2BAA2B,aACxC,eAAK,SAAS,EAAC,qEAAqE,aAClF,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,UAAU,GAAG,EACrD,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,UAAU,GAAG,EACrD,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,qBAAqB,GAAG,IAC5D,EACN,eAAK,SAAS,EAAC,qEAAqE,aAClF,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,UAAU,GAAG,EACrD,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,UAAU,GAAG,EACrD,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,qBAAqB,GAAG,IAC5D,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import { ProfileHeaderSkeleton } from "./profile-header-skeleton";
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof ProfileHeaderSkeleton;
6
+ tags: string[];
7
+ parameters: {
8
+ layout: string;
9
+ };
10
+ };
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+ export declare const Default: Story;
14
+ export declare const InProvider: Story;
15
+ //# sourceMappingURL=profile-header-skeleton.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-header-skeleton.stories.d.ts","sourceRoot":"","sources":["../../src/components/profile-header-skeleton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,QAAA,MAAM,IAAI;;;;;;;CAKoC,CAAC;AAE/C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AACjC,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ProfileHeaderSkeleton } from "./profile-header-skeleton";
3
+ import { SkeletonProvider } from "../skeleton/provider";
4
+ const meta = {
5
+ title: "Components/ProfileHeaderSkeleton",
6
+ component: ProfileHeaderSkeleton,
7
+ tags: ["autodocs"],
8
+ parameters: { layout: "padded" },
9
+ };
10
+ export default meta;
11
+ export const Default = {};
12
+ export const InProvider = {
13
+ render: () => (_jsx(SkeletonProvider, { tier: "hero", children: _jsx(ProfileHeaderSkeleton, {}) })),
14
+ };
15
+ //# sourceMappingURL=profile-header-skeleton.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-header-skeleton.stories.js","sourceRoot":"","sources":["../../src/components/profile-header-skeleton.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,kCAAkC;IACzC,SAAS,EAAE,qBAAqB;IAChC,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;CACY,CAAC;AAE/C,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,gBAAgB,IAAC,IAAI,EAAC,MAAM,YAC3B,KAAC,qBAAqB,KAAG,GACR,CACpB;CACF,CAAC"}
@@ -18,6 +18,6 @@ export function ReasonPill({ kind, signal, label, className }) {
18
18
  const ariaLabel = kind === "miss" ? `${signal} mismatch: ${label}` :
19
19
  kind === "warn" ? `${signal} partial match: ${label}` :
20
20
  `${signal} match: ${label}`;
21
- return (_jsxs("span", { className: cn("inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px] font-semibold leading-none", kindClasses[kind], className), "aria-label": ariaLabel, children: [kind === "ok" && _jsx(Check, { className: "size-2.5", "aria-hidden": true }), kind === "miss" && _jsx(X, { className: "size-2.5", "aria-hidden": true }), kind === "warn" && _jsx("span", { "aria-hidden": true, children: "\u2248" }), _jsx("span", { "aria-hidden": true, children: label })] }));
21
+ return (_jsxs("span", { className: cn("inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px]/none font-semibold", kindClasses[kind], className), "aria-label": ariaLabel, children: [kind === "ok" && _jsx(Check, { className: "size-2.5", "aria-hidden": true }), kind === "miss" && _jsx(X, { className: "size-2.5", "aria-hidden": true }), kind === "warn" && _jsx("span", { "aria-hidden": true, children: "\u2248" }), _jsx("span", { "aria-hidden": true, children: label })] }));
22
22
  }
23
23
  //# sourceMappingURL=reason-pill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reason-pill.js","sourceRoot":"","sources":["../../src/components/reason-pill.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,MAAM,WAAW,GAAmC;IAClD,EAAE,EAAE,4BAA4B;IAChC,IAAI,EAAE,yEAAyE;IAC/E,mEAAmE;IACnE,IAAI,EAAE,6CAA6C;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAmB;IAC5E,MAAM,SAAS,GACb,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,mBAAmB,KAAK,EAAE,CAAC,CAAC;YACvD,GAAG,MAAM,WAAW,KAAK,EAAE,CAAC;IAE9B,OAAO,CACL,gBACE,SAAS,EAAE,EAAE,CACX,kGAAkG,EAClG,WAAW,CAAC,IAAI,CAAC,EACjB,SAAS,CACV,gBACW,SAAS,aAEpB,IAAI,KAAK,IAAI,IAAI,KAAC,KAAK,IAAC,SAAS,EAAC,UAAU,wBAAe,EAC3D,IAAI,KAAK,MAAM,IAAI,KAAC,CAAC,IAAC,SAAS,EAAC,UAAU,wBAAe,EACzD,IAAI,KAAK,MAAM,IAAI,yDAA0B,EAC9C,8CAAmB,KAAK,GAAQ,IAC3B,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"reason-pill.js","sourceRoot":"","sources":["../../src/components/reason-pill.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,MAAM,WAAW,GAAmC;IAClD,EAAE,EAAE,4BAA4B;IAChC,IAAI,EAAE,yEAAyE;IAC/E,mEAAmE;IACnE,IAAI,EAAE,6CAA6C;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAmB;IAC5E,MAAM,SAAS,GACb,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,mBAAmB,KAAK,EAAE,CAAC,CAAC;YACvD,GAAG,MAAM,WAAW,KAAK,EAAE,CAAC;IAE9B,OAAO,CACL,gBACE,SAAS,EAAE,EAAE,CACX,0FAA0F,EAC1F,WAAW,CAAC,IAAI,CAAC,EACjB,SAAS,CACV,gBACW,SAAS,aAEpB,IAAI,KAAK,IAAI,IAAI,KAAC,KAAK,IAAC,SAAS,EAAC,UAAU,wBAAe,EAC3D,IAAI,KAAK,MAAM,IAAI,KAAC,CAAC,IAAC,SAAS,EAAC,UAAU,wBAAe,EACzD,IAAI,KAAK,MAAM,IAAI,yDAA0B,EAC9C,8CAAmB,KAAK,GAAQ,IAC3B,CACR,CAAC;AACJ,CAAC"}
@@ -21,6 +21,6 @@ const bandClasses = {
21
21
  export function ScoreChip({ score, band, className }) {
22
22
  const b = band ?? deriveBand(score);
23
23
  const display = Math.max(0, Math.min(100, Math.round(score)));
24
- return (_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center rounded-full px-2 py-0.5 text-[10px] font-bold leading-none tabular-nums", bandClasses[b], className), "aria-label": `Match score ${display} of 100`, children: display }));
24
+ return (_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center rounded-full px-2 py-0.5 text-[10px]/none font-bold tabular-nums", bandClasses[b], className), "aria-label": `Match score ${display} of 100`, children: display }));
25
25
  }
26
26
  //# sourceMappingURL=score-chip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"score-chip.js","sourceRoot":"","sources":["../../src/components/score-chip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,WAAW,GAA8B;IAC7C,GAAG,EAAE,oCAAoC;IACzC,IAAI,EAAE,yEAAyE;IAC/E,IAAI,EAAE,gCAAgC;CACvC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAkB;IAClE,MAAM,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,2HAA2H,EAC3H,WAAW,CAAC,CAAC,CAAC,EACd,SAAS,CACV,gBACW,eAAe,OAAO,SAAS,YAE1C,OAAO,GACH,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"score-chip.js","sourceRoot":"","sources":["../../src/components/score-chip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,WAAW,GAA8B;IAC7C,GAAG,EAAE,oCAAoC;IACzC,IAAI,EAAE,yEAAyE;IAC/E,IAAI,EAAE,gCAAgC;CACvC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAkB;IAClE,MAAM,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,mHAAmH,EACnH,WAAW,CAAC,CAAC,CAAC,EACd,SAAS,CACV,gBACW,eAAe,OAAO,SAAS,YAE1C,OAAO,GACH,CACR,CAAC;AACJ,CAAC"}
@@ -28,7 +28,7 @@ function ShadcnDialogFooter({ className, showCloseButton = false, children, ...p
28
28
  return (_jsxs("div", { "data-slot": "dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props, children: [children, showCloseButton && (_jsx(DialogPrimitive.Close, { asChild: true, children: _jsx(ShadcnButton, { variant: "outline", children: "Close" }) }))] }));
29
29
  }
30
30
  function ShadcnDialogTitle({ className, ...props }) {
31
- return (_jsx(DialogPrimitive.Title, { "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className), ...props }));
31
+ return (_jsx(DialogPrimitive.Title, { "data-slot": "dialog-title", className: cn("text-lg/none font-semibold", className), ...props }));
32
32
  }
33
33
  function ShadcnDialogDescription({ className, ...props }) {
34
34
  return (_jsx(DialogPrimitive.Description, { "data-slot": "dialog-description", className: cn("text-sm text-muted-foreground", className), ...props }));
@@ -1 +1 @@
1
- {"version":3,"file":"shadcn-dialog.js","sourceRoot":"","sources":["../../src/components/shadcn-dialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shadcn-dialog.js","sourceRoot":"","sources":["../../src/components/shadcn-dialog.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
- declare function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
1
+ import * as React from "react";
2
+ import { type SkeletonTier } from "../skeleton/stagger";
3
+ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ tier?: SkeletonTier;
5
+ }
6
+ declare function Skeleton({ tier, className, ...props }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
2
7
  export { Skeleton };
3
8
  //# sourceMappingURL=skeleton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"AAEA,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAE9E;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACzE,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,iBAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAY7D;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cn } from "../lib/utils";
3
- function Skeleton({ className, ...props }) {
4
- return _jsx("div", { className: cn("animate-pulse rounded-md bg-muted", className), ...props });
3
+ import { useSkeletonContext } from "../skeleton/stagger";
4
+ function Skeleton({ tier, className, ...props }) {
5
+ const ctx = useSkeletonContext();
6
+ const resolvedTier = tier ?? ctx.tier;
7
+ return (_jsx("div", { "data-skeleton": "", "data-tier": resolvedTier, "aria-hidden": "true", className: cn("rounded-md", className), ...props }));
5
8
  }
6
9
  export { Skeleton };
7
10
  //# sourceMappingURL=skeleton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwC;IAC7E,OAAO,cAAK,SAAS,EAAE,EAAE,CAAC,mCAAmC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC3F,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAC;AAM5E,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiB;IAC5D,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,MAAM,YAAY,GAAiB,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;IACpD,OAAO,CACL,+BACgB,EAAE,eACL,YAAY,iBACX,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAClC,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -7,10 +7,18 @@ declare const meta: {
7
7
  parameters: {
8
8
  layout: string;
9
9
  };
10
+ argTypes: {
11
+ tier: {
12
+ control: "select";
13
+ options: string[];
14
+ };
15
+ };
10
16
  };
11
17
  export default meta;
12
18
  type Story = StoryObj<typeof meta>;
13
19
  export declare const Default: Story;
14
- export declare const CardSkeleton: Story;
20
+ export declare const ThreeTiers: Story;
21
+ export declare const InProviderInheritsTier: Story;
22
+ export declare const CardComposition: Story;
15
23
  export declare const CircleSkeleton: Story;
16
24
  //# sourceMappingURL=skeleton.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.stories.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,QAAA,MAAM,IAAI;;;;;;;CAKuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KA4B1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAU5B,CAAC"}
1
+ {"version":3,"file":"skeleton.stories.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,QAAA,MAAM,IAAI;;;;;;;;;;;;;CAWuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAiBxB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAUpC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAU7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAU5B,CAAC"}
@@ -1,19 +1,30 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Skeleton } from "./skeleton";
3
+ import { SkeletonProvider } from "../skeleton/provider";
3
4
  const meta = {
4
5
  title: "Components/Skeleton",
5
6
  component: Skeleton,
6
7
  tags: ["autodocs"],
7
8
  parameters: { layout: "centered" },
9
+ argTypes: {
10
+ tier: {
11
+ control: "select",
12
+ options: ["hero", "data", "inline"],
13
+ },
14
+ },
8
15
  };
9
16
  export default meta;
10
17
  export const Default = {
11
- args: {
12
- className: "h-4 w-48",
13
- },
18
+ args: { className: "h-4 w-48" },
19
+ };
20
+ export const ThreeTiers = {
21
+ render: () => (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "w-16 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: "Inline" }), _jsx(Skeleton, { tier: "inline", className: "h-4 w-48" })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "w-16 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: "Data" }), _jsx(Skeleton, { tier: "data", className: "h-4 w-48" })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "w-16 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: "Hero" }), _jsx(Skeleton, { tier: "hero", className: "h-4 w-48" })] })] })),
22
+ };
23
+ export const InProviderInheritsTier = {
24
+ render: () => (_jsx(SkeletonProvider, { tier: "data", children: _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Skeleton, { className: "h-4 w-64" }), _jsx(Skeleton, { className: "h-4 w-48" }), _jsx(Skeleton, { className: "h-4 w-56" })] }) })),
14
25
  };
15
- export const CardSkeleton = {
16
- render: () => (_jsxs("div", { className: "w-80 rounded-lg border bg-card p-8 shadow-sm", children: [_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx(Skeleton, { className: "h-5 w-3/4" }), _jsx(Skeleton, { className: "h-4 w-full" }), _jsx(Skeleton, { className: "h-4 w-5/6" })] }), _jsxs("div", { className: "mt-6 flex flex-col gap-2", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx(Skeleton, { className: "h-3 w-16" }), _jsx(Skeleton, { className: "h-3 w-20" })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx(Skeleton, { className: "h-3 w-16" }), _jsx(Skeleton, { className: "h-3 w-14" })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx(Skeleton, { className: "h-3 w-16" }), _jsx(Skeleton, { className: "h-3 w-10" })] })] }), _jsxs("div", { className: "mt-6 flex gap-2", children: [_jsx(Skeleton, { className: "h-6 w-20 rounded-md" }), _jsx(Skeleton, { className: "h-6 w-16 rounded-md" })] })] })),
26
+ export const CardComposition = {
27
+ render: () => (_jsx("div", { className: "w-80 rounded-lg border bg-card p-8 shadow-sm", children: _jsxs("div", { className: "flex flex-col gap-3", children: [_jsx(Skeleton, { className: "h-5 w-3/4" }), _jsx(Skeleton, { className: "h-4 w-full" }), _jsx(Skeleton, { className: "h-4 w-5/6" })] }) })),
17
28
  };
18
29
  export const CircleSkeleton = {
19
30
  render: () => (_jsxs("div", { className: "flex items-center gap-4", children: [_jsx(Skeleton, { className: "size-12 rounded-full" }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Skeleton, { className: "h-4 w-32" }), _jsx(Skeleton, { className: "h-3 w-24" })] })] })),
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.stories.js","sourceRoot":"","sources":["../../src/components/skeleton.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;CACH,CAAC;AAElC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,SAAS,EAAE,UAAU;KACtB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,SAAS,EAAC,8CAA8C,aAC3D,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,GAAG,EAClC,KAAC,QAAQ,IAAC,SAAS,EAAC,YAAY,GAAG,EACnC,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,GAAG,IAC9B,EACN,eAAK,SAAS,EAAC,0BAA0B,aACvC,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,IAC7B,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,IAC7B,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,IAC7B,IACF,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,KAAC,QAAQ,IAAC,SAAS,EAAC,qBAAqB,GAAG,EAC5C,KAAC,QAAQ,IAAC,SAAS,EAAC,qBAAqB,GAAG,IACxC,IACF,CACP;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAU;IACnC,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,QAAQ,IAAC,SAAS,EAAC,sBAAsB,GAAG,EAC7C,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,IAC7B,IACF,CACP;CACF,CAAC"}
1
+ {"version":3,"file":"skeleton.stories.js","sourceRoot":"","sources":["../../src/components/skeleton.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;IAClC,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC;KACF;CAC8B,CAAC;AAElC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,SAAS,EAAC,qBAAqB,aAClC,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,0EAA0E,uBAAc,EACxG,KAAC,QAAQ,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,UAAU,GAAG,IAC3C,EACN,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,0EAA0E,qBAAY,EACtG,KAAC,QAAQ,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,UAAU,GAAG,IACzC,EACN,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,0EAA0E,qBAAY,EACtG,KAAC,QAAQ,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,UAAU,GAAG,IACzC,IACF,CACP;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAU;IAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,gBAAgB,IAAC,IAAI,EAAC,MAAM,YAC3B,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,IAC7B,GACW,CACpB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,cAAK,SAAS,EAAC,8CAA8C,YAC3D,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,GAAG,EAClC,KAAC,QAAQ,IAAC,SAAS,EAAC,YAAY,GAAG,EACnC,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,GAAG,IAC9B,GACF,CACP;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAU;IACnC,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,QAAQ,IAAC,SAAS,EAAC,sBAAsB,GAAG,EAC7C,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,IAC7B,IACF,CACP;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sortable-card-shell.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortable-card-shell.test.d.ts","sourceRoot":"","sources":["../../src/components/sortable-card-shell.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,115 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { describe, it, expect, beforeAll } from "vitest";
3
+ import { render, screen } from "@testing-library/react";
4
+ // @dnd-kit/dom touches `ResizeObserver` at module load time; jsdom does not
5
+ // provide one. Install a no-op polyfill BEFORE importing @dnd-kit/react or
6
+ // the shell (which transitively imports @dnd-kit/dom).
7
+ if (typeof globalThis.ResizeObserver === "undefined") {
8
+ class ResizeObserverPolyfill {
9
+ observe() { }
10
+ unobserve() { }
11
+ disconnect() { }
12
+ }
13
+ globalThis.ResizeObserver =
14
+ ResizeObserverPolyfill;
15
+ }
16
+ // Imports deferred to after the polyfill so module-level access succeeds.
17
+ const { DragDropProvider } = await import("@dnd-kit/react");
18
+ const { SortableCardShell, SORTABLE_CARD_NO_DRAG_SELECTOR } = await import("./sortable-card-shell");
19
+ beforeAll(() => {
20
+ // Sanity check — confirm the polyfill stuck.
21
+ expect(typeof globalThis.ResizeObserver).toBe("function");
22
+ });
23
+ // ─── Test harness ───────────────────────────────────────────────────────────
24
+ //
25
+ // `SortableCardShell` uses `useSortable` / `useDraggable` from @dnd-kit/react,
26
+ // which require a `DragDropProvider` ancestor. All tests wrap children in the
27
+ // provider; we are NOT testing dnd-kit's internals (activation, pointer
28
+ // tracking, drop detection) — we trust those. We test the two invariants
29
+ // this shell owns:
30
+ // 1. Visual affordances (grip is aria-hidden + pointer-events-none).
31
+ // 2. The interactive-element guard SELECTOR used by PointerSensor's
32
+ // `preventActivation` hook. The selector itself is a pure string, so
33
+ // we can verify its semantics by querying DOM with `closest()` — this
34
+ // is exactly the same call the guard performs at runtime.
35
+ //
36
+ // We do NOT try to actually fire a drag and assert the sensor's internal
37
+ // state: that would require a much heavier jsdom + PointerEvent polyfill
38
+ // setup and would mostly re-test @dnd-kit itself.
39
+ function renderWithProvider(ui) {
40
+ return render(_jsx(DragDropProvider, { children: ui }));
41
+ }
42
+ describe("SortableCardShell", () => {
43
+ it("renders children (smoke test, sortable mode)", () => {
44
+ renderWithProvider(_jsx(SortableCardShell, { id: "card-1", index: 0, group: "col-a", children: _jsx("div", { "data-testid": "card-body", children: "Ch\u00E2teau Margaux" }) }));
45
+ expect(screen.getByTestId("card-body")).toBeInTheDocument();
46
+ expect(screen.getByText("Château Margaux")).toBeInTheDocument();
47
+ });
48
+ it("renders children in draggable mode", () => {
49
+ renderWithProvider(_jsx(SortableCardShell, { id: "card-2", mode: "draggable", children: _jsx("div", { "data-testid": "card-body", children: "P\u00E9trus 2015" }) }));
50
+ expect(screen.getByTestId("card-body")).toBeInTheDocument();
51
+ });
52
+ it("renders a grip affordance that is aria-hidden and pointer-events-none", () => {
53
+ const { container } = renderWithProvider(_jsx(SortableCardShell, { id: "card-grip", index: 0, group: "col-a", children: _jsx("div", { children: "body" }) }));
54
+ // The grip is an aria-hidden <span> sibling of the card body. Query it
55
+ // by attribute — this is the most robust selector since the grip has no
56
+ // accessible name by design.
57
+ const grip = container.querySelector('[aria-hidden="true"]');
58
+ expect(grip).not.toBeNull();
59
+ // Pointer events must be disabled so the whole card remains the drag
60
+ // activation surface — the grip is purely visual.
61
+ expect(grip?.className).toContain("pointer-events-none");
62
+ // lucide-react renders an inline SVG inside the grip.
63
+ expect(grip?.querySelector("svg")).not.toBeNull();
64
+ });
65
+ it("omits the grip when hideGrip is true", () => {
66
+ const { container } = renderWithProvider(_jsx(SortableCardShell, { id: "card-no-grip", index: 0, group: "col-a", hideGrip: true, children: _jsx("div", { children: "body" }) }));
67
+ expect(container.querySelector('[aria-hidden="true"]')).toBeNull();
68
+ });
69
+ // ─── Interactive-element guard ────────────────────────────────────────────
70
+ //
71
+ // The shell registers a PointerSensor with
72
+ // `preventActivation: (e) => shouldPreventDragActivation(e)`, which does
73
+ // `target.closest(SORTABLE_CARD_NO_DRAG_SELECTOR)`. We verify the selector
74
+ // matches the right elements; that is the same check the guard performs.
75
+ it("interactive guard: a <button> inside the card matches the no-drag selector", () => {
76
+ renderWithProvider(_jsx(SortableCardShell, { id: "card-btn", index: 0, group: "col-a", children: _jsx("div", { children: _jsx("button", { type: "button", "data-testid": "row-menu", children: "Menu" }) }) }));
77
+ const btn = screen.getByTestId("row-menu");
78
+ // `closest()` on the button itself should return the button — meaning
79
+ // a pointerdown on that target would short-circuit activation.
80
+ expect(btn.closest(SORTABLE_CARD_NO_DRAG_SELECTOR)).toBe(btn);
81
+ });
82
+ it("interactive guard: an element with data-no-drag matches the no-drag selector", () => {
83
+ renderWithProvider(_jsx(SortableCardShell, { id: "card-no-drag", index: 0, group: "col-a", children: _jsx("div", { children: _jsx("div", { "data-no-drag": true, "data-testid": "badge", children: "Badge" }) }) }));
84
+ const badge = screen.getByTestId("badge");
85
+ expect(badge.closest(SORTABLE_CARD_NO_DRAG_SELECTOR)).toBe(badge);
86
+ });
87
+ it("interactive guard: a plain <div> does NOT match the no-drag selector (drag would proceed)", () => {
88
+ renderWithProvider(_jsx(SortableCardShell, { id: "card-plain", index: 0, group: "col-a", children: _jsx("div", { "data-testid": "plain-body", children: "Drag me from here" }) }));
89
+ const plain = screen.getByTestId("plain-body");
90
+ // No ancestor or self matches any interactive selector — activation is
91
+ // allowed to proceed (drag would start).
92
+ expect(plain.closest(SORTABLE_CARD_NO_DRAG_SELECTOR)).toBeNull();
93
+ });
94
+ it("interactive guard: a nested element inside a <button> matches via closest()", () => {
95
+ // Realistic case: a button containing an icon <span> — the pointerdown
96
+ // target is often the inner element, and `closest()` should still find
97
+ // the wrapping <button> ancestor.
98
+ renderWithProvider(_jsx(SortableCardShell, { id: "card-nested", index: 0, group: "col-a", children: _jsx("div", { children: _jsx("button", { type: "button", children: _jsx("span", { "data-testid": "icon", children: "x" }) }) }) }));
99
+ const icon = screen.getByTestId("icon");
100
+ const match = icon.closest(SORTABLE_CARD_NO_DRAG_SELECTOR);
101
+ expect(match).not.toBeNull();
102
+ expect(match?.tagName).toBe("BUTTON");
103
+ });
104
+ it("exports a selector string that includes the common interactive tags", () => {
105
+ // Defensive snapshot of the guard's surface area. If this list ever
106
+ // shrinks, a regression would silently break click-through; this test
107
+ // will flag it.
108
+ expect(SORTABLE_CARD_NO_DRAG_SELECTOR).toContain("[data-no-drag]");
109
+ expect(SORTABLE_CARD_NO_DRAG_SELECTOR).toContain("button");
110
+ expect(SORTABLE_CARD_NO_DRAG_SELECTOR).toContain("a");
111
+ expect(SORTABLE_CARD_NO_DRAG_SELECTOR).toContain("input");
112
+ expect(SORTABLE_CARD_NO_DRAG_SELECTOR).toContain("[role='menuitem']");
113
+ });
114
+ });
115
+ //# sourceMappingURL=sortable-card-shell.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortable-card-shell.test.js","sourceRoot":"","sources":["../../src/components/sortable-card-shell.test.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import * as React from "react";
2
+ import { type SkeletonTier } from "../skeleton/stagger";
2
3
  export interface StatCardProps {
3
4
  icon: React.ReactNode;
4
5
  label: string;
@@ -8,5 +9,13 @@ export interface StatCardProps {
8
9
  renderLink?: (href: string, children: React.ReactNode) => React.ReactNode;
9
10
  className?: string;
10
11
  }
11
- export declare function StatCard({ icon, label, value, description, href, renderLink, className, }: StatCardProps): import("react/jsx-runtime").JSX.Element;
12
+ declare function StatCardBase({ icon, label, value, description, href, renderLink, className, }: StatCardProps): import("react/jsx-runtime").JSX.Element;
13
+ export interface StatCardSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
14
+ tier?: SkeletonTier;
15
+ }
16
+ declare function StatCardSkeleton({ tier, style, className, ...rest }: StatCardSkeletonProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare const StatCard: typeof StatCardBase & {
18
+ Skeleton: typeof StatCardSkeleton;
19
+ };
20
+ export {};
12
21
  //# sourceMappingURL=stat-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat-card.d.ts","sourceRoot":"","sources":["../../src/components/stat-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAU,EACV,SAAS,GACV,EAAE,aAAa,2CAiCf"}
1
+ {"version":3,"file":"stat-card.d.ts","sourceRoot":"","sources":["../../src/components/stat-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAuC,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7F,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,YAAY,CAAC,EACpB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAU,EACV,SAAS,GACV,EAAE,aAAa,2CAiCf;AAED,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACjF,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,iBAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB,2CAgCnF;AAED,eAAO,MAAM,QAAQ;;CAA8D,CAAC"}
@@ -1,10 +1,24 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { cn } from "../lib/utils";
3
- export function StatCard({ icon, label, value, description, href, renderLink, className, }) {
3
+ import { Skeleton } from "./skeleton";
4
+ import { useCascadeIndex, useSkeletonContext } from "../skeleton/stagger";
5
+ function StatCardBase({ icon, label, value, description, href, renderLink, className, }) {
4
6
  const cardContent = (_jsxs("div", { className: cn("h-full border-border/60 bg-card rounded-2xl p-5 transition-colors", href && renderLink && "hover:bg-accent/30 cursor-pointer", className), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "grid gap-1.5", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: label }), _jsx("p", { className: "text-3xl font-bold tracking-tight text-foreground", children: value })] }), _jsx("div", { className: "tone-icon tone-brand shrink-0 rounded-xl p-2.5", children: icon })] }), description && (_jsx("p", { className: "mt-4 text-sm/5 text-muted-foreground", children: description }))] }));
5
7
  if (href && renderLink) {
6
8
  return _jsx(_Fragment, { children: renderLink(href, cardContent) });
7
9
  }
8
10
  return cardContent;
9
11
  }
12
+ function StatCardSkeleton({ tier, style, className, ...rest }) {
13
+ const ctx = useSkeletonContext();
14
+ const resolvedTier = tier ?? (ctx.hasProvider ? ctx.tier : "hero");
15
+ const index = useCascadeIndex();
16
+ const delayMs = index * ctx.stagger;
17
+ const mergedStyle = {
18
+ ...(style ?? {}),
19
+ ["--skeleton-delay"]: `${delayMs}ms`,
20
+ };
21
+ return (_jsxs("div", { "data-skeleton-card": "", "data-tier": resolvedTier, className: cn("rounded-2xl border border-border/60 bg-card p-5", className), style: mergedStyle, ...rest, children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "grid gap-2.5", children: [_jsx(Skeleton, { tier: resolvedTier, className: "h-3 w-20" }), _jsx(Skeleton, { tier: resolvedTier, className: "h-7 w-24" })] }), _jsx(Skeleton, { tier: resolvedTier, className: "size-9 rounded-xl" })] }), _jsx(Skeleton, { tier: resolvedTier, className: "mt-4 h-3 w-40" })] }));
22
+ }
23
+ export const StatCard = Object.assign(StatCardBase, { Skeleton: StatCardSkeleton });
10
24
  //# sourceMappingURL=stat-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat-card.js","sourceRoot":"","sources":["../../src/components/stat-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAU,EACV,SAAS,GACK;IACd,MAAM,WAAW,GAAG,CAClB,eACE,SAAS,EAAE,EAAE,CACX,mEAAmE,EACnE,IAAI,IAAI,UAAU,IAAI,mCAAmC,EACzD,SAAS,CACV,aAED,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,cAAc,aAC3B,YAAG,SAAS,EAAC,yEAAyE,YACnF,KAAK,GACJ,EACJ,YAAG,SAAS,EAAC,mDAAmD,YAC7D,KAAK,GACJ,IACA,EACN,cAAK,SAAS,EAAC,gDAAgD,YAC5D,IAAI,GACD,IACF,EACL,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,sCAAsC,YAAE,WAAW,GAAK,CACtE,IACG,CACP,CAAC;IAEF,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;QACvB,OAAO,4BAAG,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,GAAI,CAAC;IAC9C,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"stat-card.js","sourceRoot":"","sources":["../../src/components/stat-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAC;AAY7F,SAAS,YAAY,CAAC,EACpB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAU,EACV,SAAS,GACK;IACd,MAAM,WAAW,GAAG,CAClB,eACE,SAAS,EAAE,EAAE,CACX,mEAAmE,EACnE,IAAI,IAAI,UAAU,IAAI,mCAAmC,EACzD,SAAS,CACV,aAED,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,cAAc,aAC3B,YAAG,SAAS,EAAC,yEAAyE,YACnF,KAAK,GACJ,EACJ,YAAG,SAAS,EAAC,mDAAmD,YAC7D,KAAK,GACJ,IACA,EACN,cAAK,SAAS,EAAC,gDAAgD,YAC5D,IAAI,GACD,IACF,EACL,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,sCAAsC,YAAE,WAAW,GAAK,CACtE,IACG,CACP,CAAC;IAEF,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;QACvB,OAAO,4BAAG,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,GAAI,CAAC;IAC9C,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAMD,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAyB;IAClF,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,MAAM,YAAY,GAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;IAEpC,MAAM,WAAW,GAAwB;QACvC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAChB,CAAC,kBAA4B,CAAC,EAAE,GAAG,OAAO,IAAI;KAC/C,CAAC;IAEF,OAAO,CACL,qCACqB,EAAE,eACV,YAAY,EACvB,SAAS,EAAE,EAAE,CACX,iDAAiD,EACjD,SAAS,CACV,EACD,KAAK,EAAE,WAAW,KACd,IAAI,aAER,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,cAAc,aAC3B,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,UAAU,GAAG,EACrD,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,UAAU,GAAG,IACjD,EACN,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,mBAAmB,GAAG,IAC1D,EACN,KAAC,QAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,eAAe,GAAG,IACtD,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import type { StoryObj } from "@storybook/react-vite";
2
- import { StatCard } from "./stat-card";
3
2
  declare const meta: {
4
3
  title: string;
5
- component: typeof StatCard;
4
+ component: (({ icon, label, value, description, href, renderLink, className, }: import("./stat-card").StatCardProps) => import("react/jsx-runtime").JSX.Element) & {
5
+ Skeleton: ({ tier, style, className, ...rest }: import("./stat-card").StatCardSkeletonProps) => import("react/jsx-runtime").JSX.Element;
6
+ };
6
7
  tags: string[];
7
8
  parameters: {
8
9
  layout: string;
@@ -14,4 +15,7 @@ export declare const Default: Story;
14
15
  export declare const WithDescription: Story;
15
16
  export declare const Grid: Story;
16
17
  export declare const Clickable: Story;
18
+ export declare const SkeletonStandalone: Story;
19
+ export declare const SkeletonInProvider: Story;
20
+ export declare const SkeletonInlineTier: Story;
17
21
  //# sourceMappingURL=stat-card.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat-card.stories.d.ts","sourceRoot":"","sources":["../../src/components/stat-card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,QAAA,MAAM,IAAI;;;;;;;CAKuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAoEnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KA8BlB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAcvB,CAAC"}
1
+ {"version":3,"file":"stat-card.stories.d.ts","sourceRoot":"","sources":["../../src/components/stat-card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAsE5D,QAAA,MAAM,IAAI;;;;;;;;;CAKuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KA8BlB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAcvB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAGhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAYhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAGhC,CAAC"}
@@ -1,5 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { StatCard } from "./stat-card";
3
+ import { SkeletonProvider } from "../skeleton/provider";
4
+ const WineIcon = () => (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "size-5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M8 22h8M12 11v11M6 2h12l-2 7a4 4 0 0 1-8 0L6 2z" }) }));
5
+ const OffersIcon = () => (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", className: "size-5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" }), _jsx("path", { d: "m3.3 7 8.7 5 8.7-5M12 22V12" })] }));
6
+ const MatchIcon = () => (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", className: "size-5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M22 11.08V12a10 10 0 1 1-5.93-9.14" }), _jsx("polyline", { points: "22 4 12 14.01 9 11.01" })] }));
7
+ const TenderIcon = () => (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", className: "size-5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), _jsx("polyline", { points: "14 2 14 8 20 8" }), _jsx("line", { x1: "16", y1: "13", x2: "8", y2: "13" }), _jsx("line", { x1: "16", y1: "17", x2: "8", y2: "17" }), _jsx("polyline", { points: "10 9 9 9 8 9" })] }));
3
8
  const meta = {
4
9
  title: "Components/StatCard",
5
10
  component: StatCard,
@@ -7,10 +12,6 @@ const meta = {
7
12
  parameters: { layout: "padded" },
8
13
  };
9
14
  export default meta;
10
- const WineIcon = () => (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "size-5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M8 22h8M12 11v11M6 2h12l-2 7a4 4 0 0 1-8 0L6 2z" }) }));
11
- const OffersIcon = () => (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", className: "size-5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" }), _jsx("path", { d: "m3.3 7 8.7 5 8.7-5M12 22V12" })] }));
12
- const MatchIcon = () => (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", className: "size-5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M22 11.08V12a10 10 0 1 1-5.93-9.14" }), _jsx("polyline", { points: "22 4 12 14.01 9 11.01" })] }));
13
- const TenderIcon = () => (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", className: "size-5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), _jsx("polyline", { points: "14 2 14 8 20 8" }), _jsx("line", { x1: "16", y1: "13", x2: "8", y2: "13" }), _jsx("line", { x1: "16", y1: "17", x2: "8", y2: "17" }), _jsx("polyline", { points: "10 9 9 9 8 9" })] }));
14
15
  export const Default = {
15
16
  args: {
16
17
  icon: _jsx(WineIcon, {}),
@@ -43,4 +44,16 @@ export const Clickable = {
43
44
  },
44
45
  decorators: [(Story) => _jsx("div", { className: "w-64", children: _jsx(Story, {}) })],
45
46
  };
47
+ export const SkeletonStandalone = {
48
+ args: { icon: null, label: "", value: "" },
49
+ render: () => _jsx(StatCard.Skeleton, {}),
50
+ };
51
+ export const SkeletonInProvider = {
52
+ args: { icon: null, label: "", value: "" },
53
+ render: () => (_jsx(SkeletonProvider, { tier: "hero", stagger: 120, children: _jsxs("div", { className: "grid grid-cols-4 gap-4", children: [_jsx(StatCard.Skeleton, {}), _jsx(StatCard.Skeleton, {}), _jsx(StatCard.Skeleton, {}), _jsx(StatCard.Skeleton, {})] }) })),
54
+ };
55
+ export const SkeletonInlineTier = {
56
+ args: { icon: null, label: "", value: "" },
57
+ render: () => _jsx(StatCard.Skeleton, { tier: "inline" }),
58
+ };
46
59
  //# sourceMappingURL=stat-card.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat-card.stories.js","sourceRoot":"","sources":["../../src/components/stat-card.stories.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stat-card.stories.js","sourceRoot":"","sources":["../../src/components/stat-card.stories.tsx"],"names":[],"mappings":"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"}