@flamingo-stack/openframe-frontend-core 0.0.582-1967.5390.1 → 0.0.582

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 (115) hide show
  1. package/dist/chunk-2EIGO6ZS.js +1055 -0
  2. package/dist/chunk-2EIGO6ZS.js.map +1 -0
  3. package/dist/{chunk-PDK6KVU6.js → chunk-53ZVUW2M.js} +4 -4
  4. package/dist/{chunk-BTXJQPGE.js → chunk-5U2FU5LM.js} +2 -2
  5. package/dist/{chunk-VG2SRECA.cjs → chunk-7WE6FGGK.cjs} +49 -49
  6. package/dist/{chunk-VG2SRECA.cjs.map → chunk-7WE6FGGK.cjs.map} +1 -1
  7. package/dist/{chunk-EXBNO6FB.js → chunk-CJW6KZD3.js} +2 -2
  8. package/dist/{chunk-UQXQCM3F.cjs → chunk-E4TK2BBD.cjs} +3 -3
  9. package/dist/{chunk-UQXQCM3F.cjs.map → chunk-E4TK2BBD.cjs.map} +1 -1
  10. package/dist/{chunk-NOO3QOJI.js → chunk-EULY3BXB.js} +2 -2
  11. package/dist/{chunk-ML22BIKH.js → chunk-GAL6EXUY.js} +3 -3
  12. package/dist/{chunk-YTZK2ORN.js → chunk-H7K76TPX.js} +4 -4
  13. package/dist/{chunk-RH7EY7YN.cjs → chunk-HMEEW73F.cjs} +1978 -237
  14. package/dist/chunk-HMEEW73F.cjs.map +1 -0
  15. package/dist/{chunk-KNQZZJYJ.js → chunk-IB23CRL2.js} +2 -2
  16. package/dist/{chunk-GHYWIVSU.cjs → chunk-IVJ6TBVW.cjs} +34 -34
  17. package/dist/{chunk-GHYWIVSU.cjs.map → chunk-IVJ6TBVW.cjs.map} +1 -1
  18. package/dist/{chunk-XJ3Y4OOF.js → chunk-IZGXIZWF.js} +2 -2
  19. package/dist/chunk-JMWLF2GL.cjs +1055 -0
  20. package/dist/chunk-JMWLF2GL.cjs.map +1 -0
  21. package/dist/{chunk-MCFETAH7.js → chunk-JUXCEHK2.js} +2 -2
  22. package/dist/{chunk-KX4F4O26.cjs → chunk-KS7NKONC.cjs} +3 -3
  23. package/dist/{chunk-KX4F4O26.cjs.map → chunk-KS7NKONC.cjs.map} +1 -1
  24. package/dist/{chunk-VYNYJVSE.cjs → chunk-LHQ6RVFE.cjs} +17 -17
  25. package/dist/{chunk-VYNYJVSE.cjs.map → chunk-LHQ6RVFE.cjs.map} +1 -1
  26. package/dist/{chunk-LGHMGCUG.cjs → chunk-M3ERSHPM.cjs} +4 -4
  27. package/dist/{chunk-LGHMGCUG.cjs.map → chunk-M3ERSHPM.cjs.map} +1 -1
  28. package/dist/{chunk-Q7X74UZF.cjs → chunk-RBMVTCRM.cjs} +3 -3
  29. package/dist/{chunk-Q7X74UZF.cjs.map → chunk-RBMVTCRM.cjs.map} +1 -1
  30. package/dist/{chunk-LYU3IZOA.cjs → chunk-RILGQ2OY.cjs} +10 -10
  31. package/dist/{chunk-LYU3IZOA.cjs.map → chunk-RILGQ2OY.cjs.map} +1 -1
  32. package/dist/{chunk-T6DRWYLM.cjs → chunk-RQMS2CF5.cjs} +17 -17
  33. package/dist/{chunk-T6DRWYLM.cjs.map → chunk-RQMS2CF5.cjs.map} +1 -1
  34. package/dist/{chunk-TC47NAJ3.cjs → chunk-S2ZXUQLR.cjs} +16 -16
  35. package/dist/{chunk-TC47NAJ3.cjs.map → chunk-S2ZXUQLR.cjs.map} +1 -1
  36. package/dist/{chunk-G3ZMLSKJ.js → chunk-SM6JAZ4C.js} +2 -2
  37. package/dist/{chunk-LENIASJW.js → chunk-T4DIAKIK.js} +2 -2
  38. package/dist/{chunk-ODOFQLSP.cjs → chunk-TMNFC24G.cjs} +13 -13
  39. package/dist/{chunk-ODOFQLSP.cjs.map → chunk-TMNFC24G.cjs.map} +1 -1
  40. package/dist/{chunk-FVF2MVIT.js → chunk-U6GFESVF.js} +2 -2
  41. package/dist/{chunk-2T7GXHRQ.js → chunk-XA5UPYWE.js} +2745 -1004
  42. package/dist/chunk-XA5UPYWE.js.map +1 -0
  43. package/dist/{chunk-TVLQVTZ6.cjs → chunk-XNSEZVV4.cjs} +4 -4
  44. package/dist/{chunk-TVLQVTZ6.cjs.map → chunk-XNSEZVV4.cjs.map} +1 -1
  45. package/dist/{chunk-XJJ2D64Q.cjs → chunk-YU4QZ6I6.cjs} +3 -3
  46. package/dist/{chunk-XJJ2D64Q.cjs.map → chunk-YU4QZ6I6.cjs.map} +1 -1
  47. package/dist/{chunk-LFG5JG2D.js → chunk-ZSENCE55.js} +5 -5
  48. package/dist/components/case-studies/index.cjs +8 -8
  49. package/dist/components/case-studies/index.js +2 -2
  50. package/dist/components/contact/index.cjs +3 -3
  51. package/dist/components/contact/index.js +2 -2
  52. package/dist/components/docs/index.cjs +6 -6
  53. package/dist/components/docs/index.js +5 -5
  54. package/dist/components/embeds/index.cjs +3 -3
  55. package/dist/components/embeds/index.js +2 -2
  56. package/dist/components/faq/index.cjs +3 -3
  57. package/dist/components/faq/index.js +2 -2
  58. package/dist/components/features/index.cjs +2 -2
  59. package/dist/components/features/index.js +1 -1
  60. package/dist/components/features/push-button-selector.d.ts +29 -1
  61. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  62. package/dist/components/help-center-pages/index.cjs +22 -22
  63. package/dist/components/help-center-pages/index.js +13 -13
  64. package/dist/components/index.cjs +61 -892
  65. package/dist/components/index.cjs.map +1 -1
  66. package/dist/components/index.js +244 -1075
  67. package/dist/components/index.js.map +1 -1
  68. package/dist/components/meeting-scheduler/index.cjs +18 -18
  69. package/dist/components/meeting-scheduler/index.js +1 -1
  70. package/dist/components/navigation/index.cjs +5 -5
  71. package/dist/components/navigation/index.js +4 -4
  72. package/dist/components/onboarding-guides/index.cjs +5 -5
  73. package/dist/components/onboarding-guides/index.js +4 -4
  74. package/dist/components/tickets/index.cjs +6 -6
  75. package/dist/components/tickets/index.js +5 -5
  76. package/dist/components/ui/index.cjs +2 -2
  77. package/dist/components/ui/index.js +1 -1
  78. package/dist/index.cjs +6 -6
  79. package/dist/index.js +5 -5
  80. package/dist/utils/announcement-storage.d.ts +16 -25
  81. package/dist/utils/announcement-storage.d.ts.map +1 -1
  82. package/dist/utils/dismiss-cookie.d.ts +8 -27
  83. package/dist/utils/dismiss-cookie.d.ts.map +1 -1
  84. package/dist/utils/dismissal-storage.d.ts +2 -2
  85. package/dist/utils/dismissal-storage.d.ts.map +1 -1
  86. package/dist/utils/index.cjs +53 -70
  87. package/dist/utils/index.cjs.map +1 -1
  88. package/dist/utils/index.js +53 -70
  89. package/dist/utils/index.js.map +1 -1
  90. package/package.json +1 -1
  91. package/src/components/features/.push-button-selector.md +1 -1
  92. package/src/components/features/push-button-selector.tsx +142 -17
  93. package/src/utils/announcement-storage.ts +16 -25
  94. package/src/utils/dismiss-cookie.ts +9 -86
  95. package/src/utils/dismissal-storage.ts +2 -2
  96. package/dist/chunk-2T7GXHRQ.js.map +0 -1
  97. package/dist/chunk-FWNIZC6A.js +0 -1867
  98. package/dist/chunk-FWNIZC6A.js.map +0 -1
  99. package/dist/chunk-IHFTLVDF.cjs +0 -1867
  100. package/dist/chunk-IHFTLVDF.cjs.map +0 -1
  101. package/dist/chunk-RH7EY7YN.cjs.map +0 -1
  102. package/src/utils/__tests__/dismiss-cookie.test.ts +0 -133
  103. /package/dist/{chunk-PDK6KVU6.js.map → chunk-53ZVUW2M.js.map} +0 -0
  104. /package/dist/{chunk-BTXJQPGE.js.map → chunk-5U2FU5LM.js.map} +0 -0
  105. /package/dist/{chunk-EXBNO6FB.js.map → chunk-CJW6KZD3.js.map} +0 -0
  106. /package/dist/{chunk-NOO3QOJI.js.map → chunk-EULY3BXB.js.map} +0 -0
  107. /package/dist/{chunk-ML22BIKH.js.map → chunk-GAL6EXUY.js.map} +0 -0
  108. /package/dist/{chunk-YTZK2ORN.js.map → chunk-H7K76TPX.js.map} +0 -0
  109. /package/dist/{chunk-KNQZZJYJ.js.map → chunk-IB23CRL2.js.map} +0 -0
  110. /package/dist/{chunk-XJ3Y4OOF.js.map → chunk-IZGXIZWF.js.map} +0 -0
  111. /package/dist/{chunk-MCFETAH7.js.map → chunk-JUXCEHK2.js.map} +0 -0
  112. /package/dist/{chunk-G3ZMLSKJ.js.map → chunk-SM6JAZ4C.js.map} +0 -0
  113. /package/dist/{chunk-LENIASJW.js.map → chunk-T4DIAKIK.js.map} +0 -0
  114. /package/dist/{chunk-FVF2MVIT.js.map → chunk-U6GFESVF.js.map} +0 -0
  115. /package/dist/{chunk-LFG5JG2D.js.map → chunk-ZSENCE55.js.map} +0 -0
@@ -15,7 +15,7 @@ import {
15
15
  SoftwareInfo,
16
16
  SoftwareSourceBadge,
17
17
  ToolBadge
18
- } from "../chunk-LENIASJW.js";
18
+ } from "../chunk-T4DIAKIK.js";
19
19
  import {
20
20
  AppHeader,
21
21
  AppLayout,
@@ -34,7 +34,7 @@ import {
34
34
  SlidingSidebar,
35
35
  TicketAlertsButton,
36
36
  TopNavigation
37
- } from "../chunk-ML22BIKH.js";
37
+ } from "../chunk-GAL6EXUY.js";
38
38
  import {
39
39
  DeliveryLists,
40
40
  DeliveryTable,
@@ -48,45 +48,26 @@ import {
48
48
  RoadmapView,
49
49
  useLegalDocs,
50
50
  useRoadmapVoting
51
- } from "../chunk-PDK6KVU6.js";
51
+ } from "../chunk-53ZVUW2M.js";
52
52
  import {
53
- AnnouncementBarSkeleton,
54
- ArticleLayoutSkeleton,
55
- BlogCardGridSkeleton,
56
- BreadcrumbSkeleton,
57
- CardSkeleton,
58
- CardSkeletonGrid,
59
- CategorySidebarSkeleton,
60
53
  DocNavigationProvider,
61
54
  DocViewer,
62
55
  DocsHubPage,
63
56
  EmbedSkeleton,
64
- HeroSkeleton,
65
- InteractiveSkeleton,
66
57
  MarkdownSkeleton,
67
- MediaSkeleton,
68
58
  PersistentFilterControls,
69
59
  PersistentMobileDropdown,
70
60
  PersistentSearchContainer,
71
61
  PersistentSidebar,
72
- ResultsHeaderSkeleton,
73
- SearchContainerSkeleton,
74
- SlackCommunitySkeleton,
75
- StatsSectionSkeleton,
76
- TextSkeleton,
77
- TwoColumnLayoutSkeleton,
78
- UnifiedSkeleton,
79
- VendorDetailLayoutSkeleton,
80
- VendorGridSkeleton,
81
62
  useDocNavigation,
82
63
  useDocumentTree,
83
64
  useScrollSpy
84
- } from "../chunk-FWNIZC6A.js";
65
+ } from "../chunk-2EIGO6ZS.js";
85
66
  import {
86
67
  FileDownloadCard,
87
68
  GoogleSheetsViewer,
88
69
  PdfViewer
89
- } from "../chunk-EXBNO6FB.js";
70
+ } from "../chunk-CJW6KZD3.js";
90
71
  import {
91
72
  PersistentPagination,
92
73
  PersistentPaginationWrapper,
@@ -96,13 +77,13 @@ import {
96
77
  FaqAccordion,
97
78
  FaqDocumentPage,
98
79
  FaqSection
99
- } from "../chunk-XJ3Y4OOF.js";
80
+ } from "../chunk-IZGXIZWF.js";
100
81
  import {
101
82
  MobileNavigationDropdown,
102
83
  MultiLevelNavigation,
103
84
  StickySectionNav,
104
85
  useSectionNavigation
105
- } from "../chunk-NOO3QOJI.js";
86
+ } from "../chunk-EULY3BXB.js";
106
87
  import {
107
88
  DeliveryRow,
108
89
  DevCardRowContent,
@@ -110,16 +91,16 @@ import {
110
91
  DevCardRowSkeletonList,
111
92
  DevSectionPage,
112
93
  DevSectionView
113
- } from "../chunk-MCFETAH7.js";
94
+ } from "../chunk-JUXCEHK2.js";
114
95
  import {
115
96
  EmptyState,
116
97
  UnifiedPagination
117
98
  } from "../chunk-Z2FZ5HP2.js";
118
- import "../chunk-BTXJQPGE.js";
99
+ import "../chunk-5U2FU5LM.js";
119
100
  import {
120
101
  ArticleAuthorByline,
121
102
  DetailPageSkeleton
122
- } from "../chunk-FVF2MVIT.js";
103
+ } from "../chunk-U6GFESVF.js";
123
104
  import {
124
105
  DocSearchBar,
125
106
  DocSearchResultRow,
@@ -127,7 +108,7 @@ import {
127
108
  mapDocSearchResults,
128
109
  resolveSearchResultAction,
129
110
  useDocSearch
130
- } from "../chunk-KNQZZJYJ.js";
111
+ } from "../chunk-IB23CRL2.js";
131
112
  import {
132
113
  useSelfFetch
133
114
  } from "../chunk-UC5RXT3O.js";
@@ -160,6 +141,7 @@ import {
160
141
  AlertDialogTrigger,
161
142
  AlertTitle,
162
143
  AllowedDomainsInput,
144
+ AnnouncementBarSkeleton,
163
145
  AnnouncementBarView,
164
146
  AppLayoutDrawerBody,
165
147
  AppLayoutDrawerClose,
@@ -173,6 +155,7 @@ import {
173
155
  ApprovalRequestNotificationTile,
174
156
  ArrayEntryManager,
175
157
  ArticleDetailLayout,
158
+ ArticleLayoutSkeleton,
176
159
  AspectRatio,
177
160
  AssigneeDropdown,
178
161
  AuthBenefitsPanel,
@@ -184,6 +167,7 @@ import {
184
167
  Badge,
185
168
  BenefitCard,
186
169
  BenefitCardGrid,
170
+ BlogCardGridSkeleton,
187
171
  Board,
188
172
  BoardColumn,
189
173
  BoardColumnHeader,
@@ -197,10 +181,16 @@ import {
197
181
  BreadcrumbList,
198
182
  BreadcrumbPage,
199
183
  BreadcrumbSeparator,
184
+ BreadcrumbSkeleton,
200
185
  BulletList,
201
186
  COMPACT_ROW_MIN_HEIGHT_PX,
202
187
  CUSTOM_PRESET_KEY,
203
188
  CardLoader,
189
+ CardSkeleton,
190
+ CardSkeletonGrid,
191
+ CategoryCardSkeleton,
192
+ CategorySidebarSkeleton,
193
+ CategoryVendorSelectorSkeleton,
204
194
  ChangelogManager,
205
195
  ChangelogSectionsManager,
206
196
  CheckCircleIcon as CheckCircleIcon2,
@@ -214,10 +204,12 @@ import {
214
204
  ColorPickerInput,
215
205
  ColorPresetSelect,
216
206
  CommandBox,
207
+ CommentSkeleton,
217
208
  CompactPageLoader,
218
209
  CompleteAccountForm,
219
210
  ConfidenceBadge,
220
211
  ContentLoader,
212
+ ContentLoadingContainer,
221
213
  ContentPageContainer,
222
214
  CreateOrganizationForm,
223
215
  CrossfadePanels,
@@ -247,6 +239,8 @@ import {
247
239
  DetailPageContainer,
248
240
  DeviceCard,
249
241
  DeviceCardCompact,
242
+ DeviceCardSkeleton,
243
+ DeviceCardSkeletonGrid,
250
244
  Dialog,
251
245
  DialogClose,
252
246
  DialogContent,
@@ -259,6 +253,7 @@ import {
259
253
  DialogTrigger,
260
254
  DropdownButton,
261
255
  DurationInput,
256
+ DynamicSkeleton,
262
257
  DynamicThemeProvider,
263
258
  EMBED_SIZES,
264
259
  EmbedContainer,
@@ -272,6 +267,7 @@ import {
272
267
  FadePreview,
273
268
  FeatureCardGrid,
274
269
  FeatureList,
270
+ FeatureListSkeleton,
275
271
  Field,
276
272
  FigmaEmbed,
277
273
  FigmaPrototypeViewer,
@@ -285,8 +281,10 @@ import {
285
281
  FloatingWalkthroughVideo,
286
282
  FormLoader,
287
283
  FormPageContainer,
284
+ FormSkeleton,
288
285
  GitHubReleasesManager,
289
286
  HeaderButton,
287
+ HeroSkeleton,
290
288
  HiddenTagsPopup,
291
289
  HighlightCard,
292
290
  HighlightCardGrid,
@@ -305,6 +303,7 @@ import {
305
303
  InfoSection,
306
304
  InlineWalkthroughVideo,
307
305
  InputTrigger,
306
+ InteractiveSkeleton,
308
307
  InviteLinkInvalidModal,
309
308
  JsonDetailList,
310
309
  KnowledgeBaseLinksManager,
@@ -314,13 +313,16 @@ import {
314
313
  ListLoader,
315
314
  ListPageContainer,
316
315
  ListPageLayout,
316
+ ListSkeleton,
317
317
  LoadError,
318
318
  LoadingProvider,
319
319
  LoginForm,
320
+ MarginReportSkeleton,
320
321
  MarkdownEditor,
321
322
  MarkdownImage,
322
323
  MediaCarousel,
323
324
  MediaGalleryManager,
325
+ MediaSkeleton,
324
326
  MediaTypeSelector,
325
327
  Menubar,
326
328
  MenubarCheckboxItem,
@@ -341,6 +343,7 @@ import {
341
343
  MinusIcon,
342
344
  MoreAboutButton,
343
345
  MoreActionsMenu,
346
+ MspProfileFormSkeleton,
344
347
  NavigationMenu,
345
348
  NavigationMenuContent,
346
349
  NavigationMenuIndicator,
@@ -349,6 +352,7 @@ import {
349
352
  NavigationMenuList,
350
353
  NavigationMenuTrigger,
351
354
  NavigationMenuViewport,
355
+ NavigationSkeleton,
352
356
  NoData,
353
357
  NoDataAction,
354
358
  NoDataActions,
@@ -370,6 +374,9 @@ import {
370
374
  OpenFrameSsoSignUpForm,
371
375
  OpenFrameWordmark,
372
376
  OrganizationCard,
377
+ OrganizationCardSkeleton,
378
+ OrganizationCardSkeletonGrid,
379
+ OrganizationIconSkeleton,
373
380
  PROVIDER_META,
374
381
  PageActions,
375
382
  PageContainer,
@@ -377,16 +384,22 @@ import {
377
384
  PageLayout,
378
385
  PageLoader,
379
386
  PageShell,
387
+ ParagraphSkeleton,
380
388
  ParallaxImageShowcase,
381
389
  PasswordInput,
382
390
  PasswordResetForm,
383
391
  PathsDisplay,
384
392
  PhoneInput,
385
393
  PlatformFilterComponent,
394
+ PlatformSkeletonContainer,
386
395
  PolicyConfigurationPanel,
387
396
  PoweredByFlamingo,
397
+ PricingSkeleton,
398
+ ProfileLoadingSkeleton,
399
+ ProfileSkeleton,
388
400
  Progress,
389
401
  ProgressBar,
402
+ ProgressiveSkeleton,
390
403
  ProviderButton,
391
404
  PushButtonSelector,
392
405
  QueryReportTable,
@@ -405,10 +418,12 @@ import {
405
418
  ReleaseMediaManager,
406
419
  ReopenTicketModal,
407
420
  ReopenTicketRequestModal,
421
+ ResultsHeaderSkeleton,
408
422
  RichMarkdownRenderer,
409
423
  RichMarkdownRuntimeProvider,
410
424
  SEOEditorPreview,
411
425
  SLOT_STICKINESS,
426
+ SearchContainerSkeleton,
412
427
  SearchInput,
413
428
  SearchableSelect,
414
429
  SectionSelector,
@@ -435,7 +450,9 @@ import {
435
450
  SheetPortal,
436
451
  SheetTitle,
437
452
  SheetTrigger,
453
+ SkeletonPresets,
438
454
  SlackChannelChip,
455
+ SlackCommunitySkeleton,
439
456
  Slider,
440
457
  SocialLinksManager,
441
458
  SortableList,
@@ -445,6 +462,7 @@ import {
445
462
  SsoProviderButtons,
446
463
  StackedRowsPanel,
447
464
  StartWithOpenFrameButton,
465
+ StatsSectionSkeleton,
448
466
  StatusFilterComponent,
449
467
  StatusIndicator,
450
468
  SubtitlesEditor,
@@ -463,6 +481,7 @@ import {
463
481
  TableEmptyState,
464
482
  TableHeader,
465
483
  TableRow,
484
+ TableSkeleton,
466
485
  TableTimestampCell,
467
486
  TagKeyValueFilter,
468
487
  TagSearchInput,
@@ -477,6 +496,7 @@ import {
477
496
  TestRunErrorBanner,
478
497
  TestRunResults,
479
498
  TestRunStatusStat,
499
+ TextSkeleton,
480
500
  Textarea,
481
501
  ThemeProvider,
482
502
  TicketAttachmentsList,
@@ -493,6 +513,7 @@ import {
493
513
  TimeTrackerHeaderButton,
494
514
  TimeTrackerPanel,
495
515
  TimeTrackerProvider,
516
+ TimelineSkeleton,
496
517
  TimingStat,
497
518
  TitleBlock,
498
519
  TitleContentBlock,
@@ -506,15 +527,21 @@ import {
506
527
  TruncateText,
507
528
  TwitterContainer,
508
529
  TwitterEmbedClient,
530
+ TwoColumnLayoutSkeleton,
531
+ UnifiedSkeleton,
509
532
  UnreadCountBadge,
510
533
  UnreadDot,
511
534
  UnsavedChangesChip,
535
+ UsersGridSkeleton,
536
+ VendorDetailLayoutSkeleton,
537
+ VendorGridSkeleton,
512
538
  VideoBitesDisplay,
513
539
  VideoClipsSection,
514
540
  VideoSourceSelector,
515
541
  ViewToggle,
516
542
  WaitlistForm,
517
543
  WarningBlock,
544
+ WizardLayoutSkeleton,
518
545
  XCircleIcon,
519
546
  XIcon as XIcon2,
520
547
  YouTubeContainer,
@@ -559,6 +586,7 @@ import {
559
586
  useAppLayoutDrawerContainer,
560
587
  useBoardCollapse,
561
588
  useConfirm,
589
+ useContentLoading,
562
590
  useDataTable,
563
591
  useDataTableContext,
564
592
  useDynamicTheme,
@@ -577,7 +605,7 @@ import {
577
605
  useTimeTracker,
578
606
  useTrackerClock,
579
607
  useWalkthroughVideo
580
- } from "../chunk-2T7GXHRQ.js";
608
+ } from "../chunk-XA5UPYWE.js";
581
609
  import "../chunk-L2SLFCXP.js";
582
610
  import "../chunk-BJXDHKUX.js";
583
611
  import {
@@ -2128,305 +2156,9 @@ function CommentComposer({
2128
2156
  ] });
2129
2157
  }
2130
2158
 
2131
- // src/components/content-loading-container.tsx
2132
- import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
2133
- function ContentLoadingContainer({
2134
- isLoading,
2135
- children,
2136
- skeletonComponent,
2137
- className,
2138
- minHeight = "min-h-[300px] md:min-h-[800px]",
2139
- loadingOpacity = 1,
2140
- transitionDuration = 300
2141
- }) {
2142
- return /* @__PURE__ */ jsxs8(
2143
- "div",
2144
- {
2145
- className: cn("relative w-full transition-all ease-in-out", minHeight, className),
2146
- style: {
2147
- transitionDuration: `${transitionDuration}ms`
2148
- },
2149
- role: "region",
2150
- "aria-label": isLoading ? "Loading content" : "Content loaded",
2151
- "aria-live": "polite",
2152
- children: [
2153
- isLoading && /* @__PURE__ */ jsx10(
2154
- "div",
2155
- {
2156
- className: "absolute inset-0 z-10 bg-ods-bg",
2157
- style: {
2158
- opacity: loadingOpacity,
2159
- transition: `opacity ${transitionDuration}ms ease-in-out`
2160
- },
2161
- role: "status",
2162
- "aria-label": "Loading content",
2163
- children: skeletonComponent
2164
- }
2165
- ),
2166
- /* @__PURE__ */ jsx10(
2167
- "div",
2168
- {
2169
- className: cn("relative transition-opacity ease-in-out", isLoading && "opacity-0"),
2170
- style: {
2171
- transitionDuration: `${transitionDuration}ms`
2172
- },
2173
- "aria-hidden": isLoading,
2174
- children
2175
- }
2176
- )
2177
- ]
2178
- }
2179
- );
2180
- }
2181
- function useContentLoading(isLoading) {
2182
- const containerProps = {
2183
- "aria-busy": isLoading,
2184
- "data-loading": isLoading
2185
- };
2186
- const getSkeletonCount = (contentType) => {
2187
- return contentType === "vendor" ? 12 : 6;
2188
- };
2189
- const getMinHeight = (contentType) => {
2190
- return contentType === "vendor" ? "min-h-[400px] md:min-h-[900px]" : "min-h-[300px] md:min-h-[800px]";
2191
- };
2192
- return {
2193
- containerProps,
2194
- getSkeletonCount,
2195
- getMinHeight
2196
- };
2197
- }
2198
-
2199
- // src/components/dynamic-skeleton.tsx
2200
- import React from "react";
2201
-
2202
- // src/hooks/use-theme-aware.ts
2203
- function useThemeAware() {
2204
- return {
2205
- themeColors: {},
2206
- platformContext: "default",
2207
- isDarkMode: false,
2208
- platform: "default",
2209
- isDark: false,
2210
- accentColor: "#FFC008"
2211
- };
2212
- }
2213
-
2214
- // src/components/dynamic-skeleton.tsx
2215
- import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
2216
- var sizePresets = {
2217
- sm: { width: "4rem", height: "1rem" },
2218
- md: { width: "8rem", height: "1.5rem" },
2219
- lg: { width: "12rem", height: "2rem" },
2220
- xl: { width: "16rem", height: "2.5rem" }
2221
- };
2222
- var variantStyles = {
2223
- text: "rounded",
2224
- avatar: "rounded-full aspect-square",
2225
- card: "rounded-lg",
2226
- button: "rounded-md",
2227
- image: "rounded-lg aspect-video",
2228
- custom: ""
2229
- };
2230
- function DynamicSkeleton({
2231
- animation = "shimmer",
2232
- variant = "text",
2233
- size = "md",
2234
- width,
2235
- height,
2236
- lines = 1,
2237
- platformAware = true,
2238
- includeAriaLabel = true,
2239
- className,
2240
- children
2241
- }) {
2242
- const { platform, isDark, accentColor } = useThemeAware();
2243
- const dimensions = React.useMemo(() => {
2244
- if (width || height) {
2245
- return {
2246
- width: typeof width === "number" ? `${width}px` : width,
2247
- height: typeof height === "number" ? `${height}px` : height
2248
- };
2249
- }
2250
- if (variant === "avatar") {
2251
- const avatarSize = sizePresets[size].height;
2252
- return { width: avatarSize, height: avatarSize };
2253
- }
2254
- return sizePresets[size];
2255
- }, [width, height, size, variant]);
2256
- const platformStyles = React.useMemo(() => {
2257
- if (!platformAware) return {};
2258
- const baseOpacity = isDark ? 0.1 : 0.15;
2259
- const accentOpacity = isDark ? 0.05 : 0.08;
2260
- return {
2261
- "--skeleton-base": `color-mix(in srgb, var(--color-bg-skeleton) ${baseOpacity * 100}%, transparent)`,
2262
- "--skeleton-highlight": `color-mix(in srgb, ${accentColor} ${accentOpacity * 100}%, var(--color-bg-skeleton))`,
2263
- "--skeleton-accent": `color-mix(in srgb, ${accentColor} 10%, transparent)`
2264
- };
2265
- }, [platformAware, isDark, accentColor]);
2266
- const animationClasses = {
2267
- pulse: "animate-pulse",
2268
- shimmer: "ods-loading-dynamic",
2269
- wave: "skeleton-wave",
2270
- static: ""
2271
- };
2272
- const baseClasses = cn(
2273
- "bg-ods-skeleton",
2274
- variantStyles[variant],
2275
- animationClasses[animation],
2276
- platformAware && `skeleton-platform-${platform}`,
2277
- className
2278
- );
2279
- if (variant === "text" && lines > 1) {
2280
- return /* @__PURE__ */ jsx11(
2281
- "div",
2282
- {
2283
- className: "space-y-2",
2284
- style: platformStyles,
2285
- role: "status",
2286
- "aria-label": includeAriaLabel ? "Loading content..." : void 0,
2287
- children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ jsx11(
2288
- "div",
2289
- {
2290
- className: cn(
2291
- baseClasses,
2292
- index === lines - 1 && "w-3/4"
2293
- // Last line shorter
2294
- ),
2295
- style: {
2296
- ...dimensions,
2297
- width: index === lines - 1 ? "75%" : dimensions.width
2298
- }
2299
- },
2300
- index
2301
- ))
2302
- }
2303
- );
2304
- }
2305
- return /* @__PURE__ */ jsx11(
2306
- "div",
2307
- {
2308
- className: baseClasses,
2309
- style: { ...dimensions, ...platformStyles },
2310
- role: "status",
2311
- "aria-label": includeAriaLabel ? "Loading content..." : void 0,
2312
- children
2313
- }
2314
- );
2315
- }
2316
- var SkeletonPresets = {
2317
- /**
2318
- * Card skeleton with header, content, and actions
2319
- */
2320
- Card: ({ showActions = true, showImage = false }) => /* @__PURE__ */ jsxs9("div", { className: "space-y-4 rounded-lg border border-ods-border bg-ods-card p-6", children: [
2321
- showImage && /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "image", className: "h-40 w-full" }),
2322
- /* @__PURE__ */ jsxs9("div", { className: "space-y-2", children: [
2323
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "lg" }),
2324
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", lines: 2, size: "md" })
2325
- ] }),
2326
- showActions && /* @__PURE__ */ jsxs9("div", { className: "flex gap-2 pt-2", children: [
2327
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "button", width: "6rem", height: "2.5rem" }),
2328
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "button", width: "4rem", height: "2.5rem" })
2329
- ] })
2330
- ] }),
2331
- /**
2332
- * User profile skeleton
2333
- */
2334
- Profile: () => /* @__PURE__ */ jsxs9("div", { className: "flex items-start gap-4 p-4", children: [
2335
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "avatar", size: "lg" }),
2336
- /* @__PURE__ */ jsxs9("div", { className: "flex-1 space-y-2", children: [
2337
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "lg", width: "8rem" }),
2338
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm", width: "12rem" }),
2339
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", lines: 2, size: "md" })
2340
- ] })
2341
- ] }),
2342
- /**
2343
- * Navigation skeleton
2344
- */
2345
- Navigation: ({ items = 5 }) => /* @__PURE__ */ jsx11("nav", { className: "space-y-2 p-4", children: Array.from({ length: items }, (_, index) => /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-3", children: [
2346
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "avatar", size: "sm" }),
2347
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "md" })
2348
- ] }, index)) }),
2349
- /**
2350
- * Table skeleton
2351
- */
2352
- Table: ({ rows = 5, columns = 4 }) => /* @__PURE__ */ jsxs9("div", { className: "space-y-3", children: [
2353
- /* @__PURE__ */ jsx11("div", { className: "grid gap-4", style: { gridTemplateColumns: `repeat(${columns}, 1fr)` }, children: Array.from({ length: columns }, (_, index) => /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "md" }, `header-${index}`)) }),
2354
- Array.from({ length: rows }, (_, rowIndex) => /* @__PURE__ */ jsx11("div", { className: "grid gap-4", style: { gridTemplateColumns: `repeat(${columns}, 1fr)` }, children: Array.from({ length: columns }, (_cell, colIndex) => /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm" }, `cell-${rowIndex}-${colIndex}`)) }, `row-${rowIndex}`))
2355
- ] }),
2356
- /**
2357
- * Vendor grid skeleton (specific to the app)
2358
- */
2359
- VendorGrid: ({ items = 6 }) => /* @__PURE__ */ jsx11("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3", children: Array.from({ length: items }, (_, index) => /* @__PURE__ */ jsxs9("div", { className: "space-y-3 rounded-lg border border-ods-border bg-ods-card p-4", children: [
2360
- /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-3", children: [
2361
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "avatar", size: "md" }),
2362
- /* @__PURE__ */ jsxs9("div", { className: "flex-1", children: [
2363
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "md", width: "6rem" }),
2364
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm", width: "4rem", className: "mt-1" })
2365
- ] })
2366
- ] }),
2367
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", lines: 2, size: "sm" }),
2368
- /* @__PURE__ */ jsxs9("div", { className: "flex gap-2", children: [
2369
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "custom", width: "3rem", height: "1.25rem", className: "rounded-full" }),
2370
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "custom", width: "4rem", height: "1.25rem", className: "rounded-full" })
2371
- ] })
2372
- ] }, index)) }),
2373
- /**
2374
- * Blog post skeleton
2375
- */
2376
- BlogPost: () => /* @__PURE__ */ jsxs9("article", { className: "space-y-6", children: [
2377
- /* @__PURE__ */ jsxs9("div", { className: "space-y-2", children: [
2378
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "xl", width: "75%" }),
2379
- /* @__PURE__ */ jsxs9("div", { className: "flex gap-4 text-sm", children: [
2380
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm", width: "4rem" }),
2381
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm", width: "6rem" })
2382
- ] })
2383
- ] }),
2384
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "image", className: "h-64 w-full" }),
2385
- /* @__PURE__ */ jsx11("div", { className: "space-y-3", children: Array.from({ length: 4 }, (_, index) => /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", lines: 3, size: "md" }, index)) })
2386
- ] })
2387
- };
2388
- function PlatformSkeletonContainer({
2389
- children,
2390
- isLoading,
2391
- skeletonType = "Card",
2392
- skeletonProps = {}
2393
- }) {
2394
- const { platform } = useThemeAware();
2395
- if (!isLoading) {
2396
- return /* @__PURE__ */ jsx11(Fragment2, { children });
2397
- }
2398
- const SkeletonComponent = SkeletonPresets[skeletonType];
2399
- return /* @__PURE__ */ jsx11("div", { className: `platform-skeleton skeleton-${platform}`, children: /* @__PURE__ */ jsx11(SkeletonComponent, { ...skeletonProps }) });
2400
- }
2401
- function ProgressiveSkeleton({
2402
- // Named only to keep it out of the `...props` spread: the stage NAMES are
2403
- // unused, `currentStage` alone selects the skeleton shape below.
2404
- stages: _stages = ["basic", "detailed", "interactive"],
2405
- currentStage = 0,
2406
- children,
2407
- ...props
2408
- }) {
2409
- const { platform } = useThemeAware();
2410
- const stageConfig = {
2411
- 0: { animation: "pulse", variant: "text" },
2412
- 1: { animation: "shimmer", variant: "card" },
2413
- 2: { animation: "wave", variant: "custom" }
2414
- };
2415
- const config = stageConfig[currentStage] || stageConfig[0];
2416
- return /* @__PURE__ */ jsx11(
2417
- DynamicSkeleton,
2418
- {
2419
- ...props,
2420
- ...config,
2421
- className: cn(props.className, `skeleton-stage-${currentStage}`, `skeleton-platform-${platform}`),
2422
- children
2423
- }
2424
- );
2425
- }
2426
-
2427
2159
  // src/components/filter-chip.tsx
2428
2160
  import { X as X2 } from "lucide-react";
2429
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
2161
+ import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
2430
2162
  function FilterChip({
2431
2163
  label,
2432
2164
  variant = "unselected",
@@ -2458,7 +2190,7 @@ function FilterChip({
2458
2190
  subcategory: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/60 hover:bg-ods-border hover:border-ods-accent/80 hover:text-ods-text-primary focus:ring-ods-accent/60 focus:ring-offset-ods-bg",
2459
2191
  tag: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/20 hover:bg-ods-border hover:border-ods-accent/30 hover:text-ods-text-primary focus:ring-ods-accent/20 focus:ring-offset-ods-bg"
2460
2192
  };
2461
- return /* @__PURE__ */ jsxs10(
2193
+ return /* @__PURE__ */ jsxs8(
2462
2194
  "div",
2463
2195
  {
2464
2196
  className: cn(baseClasses, variantClasses[variant], className),
@@ -2472,7 +2204,7 @@ function FilterChip({
2472
2204
  "aria-pressed": onClick && variant === "selected" ? true : void 0,
2473
2205
  "aria-disabled": disabled,
2474
2206
  children: [
2475
- /* @__PURE__ */ jsx12(
2207
+ /* @__PURE__ */ jsx10(
2476
2208
  "span",
2477
2209
  {
2478
2210
  className: cn(
@@ -2483,7 +2215,7 @@ function FilterChip({
2483
2215
  children: label
2484
2216
  }
2485
2217
  ),
2486
- removable && onRemove && /* @__PURE__ */ jsx12(
2218
+ removable && onRemove && /* @__PURE__ */ jsx10(
2487
2219
  "button",
2488
2220
  {
2489
2221
  type: "button",
@@ -2502,7 +2234,7 @@ function FilterChip({
2502
2234
  ),
2503
2235
  "aria-label": `Remove ${label} filter`,
2504
2236
  tabIndex: disabled ? -1 : 0,
2505
- children: /* @__PURE__ */ jsx12(X2, { className: "h-2 w-2 md:h-2 md:w-2" })
2237
+ children: /* @__PURE__ */ jsx10(X2, { className: "h-2 w-2 md:h-2 md:w-2" })
2506
2238
  }
2507
2239
  )
2508
2240
  ]
@@ -2515,7 +2247,7 @@ import { Suspense } from "react";
2515
2247
 
2516
2248
  // src/components/social-icon-row.tsx
2517
2249
  import { Mail } from "lucide-react";
2518
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
2250
+ import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
2519
2251
  var defaultLinks = [
2520
2252
  { platform: "github", href: "https://github.com/flamingo-stack", label: "GitHub" },
2521
2253
  { platform: "linkedin", href: "https://linkedin.com/company/flamingo.run", label: "LinkedIn" },
@@ -2525,44 +2257,44 @@ function renderSocialIcon(platform) {
2525
2257
  const normalizedPlatform = platform.toLowerCase().trim();
2526
2258
  switch (normalizedPlatform) {
2527
2259
  case "github":
2528
- return /* @__PURE__ */ jsx13(GitHubIcon, { className: "h-5 w-5" });
2260
+ return /* @__PURE__ */ jsx11(GitHubIcon, { className: "h-5 w-5" });
2529
2261
  case "twitter":
2530
2262
  case "x":
2531
- return /* @__PURE__ */ jsx13(XLogo, { className: "h-5 w-5" });
2263
+ return /* @__PURE__ */ jsx11(XLogo, { className: "h-5 w-5" });
2532
2264
  case "reddit":
2533
- return /* @__PURE__ */ jsx13(RedditIcon, { className: "h-5 w-5", variant: "white" });
2265
+ return /* @__PURE__ */ jsx11(RedditIcon, { className: "h-5 w-5", variant: "white" });
2534
2266
  case "linkedin":
2535
- return /* @__PURE__ */ jsx13(LinkedInIcon, { className: "h-5 w-5" });
2267
+ return /* @__PURE__ */ jsx11(LinkedInIcon, { className: "h-5 w-5" });
2536
2268
  case "luma":
2537
- return /* @__PURE__ */ jsx13(LumaIcon, { className: "h-5 w-5" });
2269
+ return /* @__PURE__ */ jsx11(LumaIcon, { className: "h-5 w-5" });
2538
2270
  case "whatsapp":
2539
- return /* @__PURE__ */ jsx13(WhatsAppIcon, { className: "h-5 w-5" });
2271
+ return /* @__PURE__ */ jsx11(WhatsAppIcon, { className: "h-5 w-5" });
2540
2272
  case "email":
2541
2273
  case "mail":
2542
- return /* @__PURE__ */ jsx13(Mail, { className: "h-5 w-5" });
2274
+ return /* @__PURE__ */ jsx11(Mail, { className: "h-5 w-5" });
2543
2275
  case "website":
2544
2276
  case "web":
2545
2277
  case "url":
2546
- return /* @__PURE__ */ jsx13(GlobeIcon, { className: "h-5 w-5" });
2278
+ return /* @__PURE__ */ jsx11(GlobeIcon, { className: "h-5 w-5" });
2547
2279
  case "slack":
2548
- return /* @__PURE__ */ jsx13(SlackIcon, { className: "h-5 w-5", injectedColor: "white" });
2280
+ return /* @__PURE__ */ jsx11(SlackIcon, { className: "h-5 w-5", injectedColor: "white" });
2549
2281
  case "discord":
2550
- return /* @__PURE__ */ jsx13(MessageCircleIcon, { className: "h-5 w-5" });
2282
+ return /* @__PURE__ */ jsx11(MessageCircleIcon, { className: "h-5 w-5" });
2551
2283
  case "telegram":
2552
- return /* @__PURE__ */ jsx13(TelegramIcon, { className: "h-5 w-5" });
2284
+ return /* @__PURE__ */ jsx11(TelegramIcon, { className: "h-5 w-5" });
2553
2285
  case "youtube":
2554
2286
  case "yt":
2555
- return /* @__PURE__ */ jsx13(YouTubeIcon, { className: "h-5 w-5" });
2287
+ return /* @__PURE__ */ jsx11(YouTubeIcon, { className: "h-5 w-5" });
2556
2288
  case "instagram":
2557
2289
  case "ig":
2558
- return /* @__PURE__ */ jsx13(InstagramIcon, { className: "h-5 w-5" });
2290
+ return /* @__PURE__ */ jsx11(InstagramIcon, { className: "h-5 w-5" });
2559
2291
  case "facebook":
2560
2292
  case "fb":
2561
- return /* @__PURE__ */ jsx13(FacebookIcon, { className: "h-5 w-5" });
2293
+ return /* @__PURE__ */ jsx11(FacebookIcon, { className: "h-5 w-5" });
2562
2294
  case "copy":
2563
- return /* @__PURE__ */ jsx13(CopyIcon, { className: "h-5 w-5", color: "var(--color-text-primary)" });
2295
+ return /* @__PURE__ */ jsx11(CopyIcon, { className: "h-5 w-5", color: "var(--color-text-primary)" });
2564
2296
  default:
2565
- return /* @__PURE__ */ jsx13(GlobeIcon, { className: "h-5 w-5" });
2297
+ return /* @__PURE__ */ jsx11(GlobeIcon, { className: "h-5 w-5" });
2566
2298
  }
2567
2299
  }
2568
2300
  function SocialIconRow({
@@ -2575,7 +2307,7 @@ function SocialIconRow({
2575
2307
  const resolvedVariant = variant !== void 0 ? variant : compact ? "transparent" : "outline";
2576
2308
  const renderButton = (link, index) => {
2577
2309
  const ariaLabel = link.label || link.platform;
2578
- return link.onClick ? /* @__PURE__ */ jsx13(
2310
+ return link.onClick ? /* @__PURE__ */ jsx11(
2579
2311
  Button,
2580
2312
  {
2581
2313
  type: "button",
@@ -2591,7 +2323,7 @@ function SocialIconRow({
2591
2323
  // Props-based linking — Button renders the anchor itself
2592
2324
  // (openInNewTab carries target="_blank" + rel="noopener noreferrer");
2593
2325
  // no asChild/<a> nesting.
2594
- /* @__PURE__ */ jsx13(
2326
+ /* @__PURE__ */ jsx11(
2595
2327
  Button,
2596
2328
  {
2597
2329
  variant: resolvedVariant,
@@ -2611,33 +2343,33 @@ function SocialIconRow({
2611
2343
  const external = links.filter((l) => l.visibility !== "internal");
2612
2344
  const internal = links.filter((l) => l.visibility === "internal");
2613
2345
  if (external.length > 0 && internal.length > 0) {
2614
- return /* @__PURE__ */ jsxs11("div", { className: rowClass, children: [
2346
+ return /* @__PURE__ */ jsxs9("div", { className: rowClass, children: [
2615
2347
  external.map((l, i) => renderButton(l, i)),
2616
- /* @__PURE__ */ jsx13("span", { "aria-hidden": true, className: "my-1 w-px shrink-0 self-stretch bg-ods-border" }),
2348
+ /* @__PURE__ */ jsx11("span", { "aria-hidden": true, className: "my-1 w-px shrink-0 self-stretch bg-ods-border" }),
2617
2349
  internal.map((l, i) => renderButton(l, external.length + i))
2618
2350
  ] });
2619
2351
  }
2620
2352
  }
2621
- return /* @__PURE__ */ jsx13("div", { className: rowClass, children: links.map((link, index) => renderButton(link, index)) });
2353
+ return /* @__PURE__ */ jsx11("div", { className: rowClass, children: links.map((link, index) => renderButton(link, index)) });
2622
2354
  }
2623
2355
 
2624
2356
  // src/components/footer.tsx
2625
- import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
2357
+ import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
2626
2358
  function NavLinkSkeleton() {
2627
- return /* @__PURE__ */ jsx14(Skeleton, { className: "h-5 w-20 md:h-6 md:w-24" });
2359
+ return /* @__PURE__ */ jsx12(Skeleton, { className: "h-5 w-20 md:h-6 md:w-24" });
2628
2360
  }
2629
2361
  function Footer({ config, renderLink }) {
2630
2362
  if (!config) {
2631
2363
  console.warn("Footer: No config provided");
2632
2364
  return null;
2633
2365
  }
2634
- return /* @__PURE__ */ jsx14(UniversalFooter, { config, renderLink });
2366
+ return /* @__PURE__ */ jsx12(UniversalFooter, { config, renderLink });
2635
2367
  }
2636
2368
  function UniversalFooter({
2637
2369
  config,
2638
2370
  renderLink
2639
2371
  }) {
2640
- const defaultRenderLink = (link) => /* @__PURE__ */ jsx14(
2372
+ const defaultRenderLink = (link) => /* @__PURE__ */ jsx12(
2641
2373
  "a",
2642
2374
  {
2643
2375
  href: link.href,
@@ -2646,21 +2378,21 @@ function UniversalFooter({
2646
2378
  }
2647
2379
  );
2648
2380
  const linkRenderer = renderLink || defaultRenderLink;
2649
- return /* @__PURE__ */ jsxs12(
2381
+ return /* @__PURE__ */ jsxs10(
2650
2382
  "footer",
2651
2383
  {
2652
2384
  className: `flex w-full flex-col items-center justify-center ${config.backgroundColor || "bg-ods-card"} relative z-[44] min-h-[auto] gap-6 border-t border-ods-border px-6 py-10 md:min-h-[248px] md:gap-6`,
2653
2385
  children: [
2654
- /* @__PURE__ */ jsxs12("div", { className: "grid w-full grid-cols-2 items-start gap-6 md:gap-8 lg:grid-cols-4", children: [
2655
- /* @__PURE__ */ jsxs12("div", { className: "col-span-2 flex flex-col items-start gap-4 text-left md:col-span-1 md:gap-6 lg:col-span-1", children: [
2656
- /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
2657
- config.logo && /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(Skeleton, { className: "h-8 w-8" }), children: config.logo }),
2658
- config.nameElement || /* @__PURE__ */ jsx14("span", { className: "whitespace-nowrap font-heading text-heading-5 font-bold text-ods-text-primary", children: config.name })
2386
+ /* @__PURE__ */ jsxs10("div", { className: "grid w-full grid-cols-2 items-start gap-6 md:gap-8 lg:grid-cols-4", children: [
2387
+ /* @__PURE__ */ jsxs10("div", { className: "col-span-2 flex flex-col items-start gap-4 text-left md:col-span-1 md:gap-6 lg:col-span-1", children: [
2388
+ /* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2", children: [
2389
+ config.logo && /* @__PURE__ */ jsx12(Suspense, { fallback: /* @__PURE__ */ jsx12(Skeleton, { className: "h-8 w-8" }), children: config.logo }),
2390
+ config.nameElement || /* @__PURE__ */ jsx12("span", { className: "whitespace-nowrap font-heading text-heading-5 font-bold text-ods-text-primary", children: config.name })
2659
2391
  ] }),
2660
- !config.moveDescriptionToRight && /* @__PURE__ */ jsxs12(Fragment3, { children: [
2661
- /* @__PURE__ */ jsx14("p", { className: "font-body text-sm font-medium leading-[1.43] text-ods-text-primary md:text-sm", children: config.description }),
2662
- config.belowDescriptionContent && /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(Skeleton, { className: "h-8 w-full" }), children: config.belowDescriptionContent }),
2663
- !config.hideSocialRow && /* @__PURE__ */ jsx14(
2392
+ !config.moveDescriptionToRight && /* @__PURE__ */ jsxs10(Fragment2, { children: [
2393
+ /* @__PURE__ */ jsx12("p", { className: "font-body text-sm font-medium leading-[1.43] text-ods-text-primary md:text-sm", children: config.description }),
2394
+ config.belowDescriptionContent && /* @__PURE__ */ jsx12(Suspense, { fallback: /* @__PURE__ */ jsx12(Skeleton, { className: "h-8 w-full" }), children: config.belowDescriptionContent }),
2395
+ !config.hideSocialRow && /* @__PURE__ */ jsx12(
2664
2396
  SocialIconRow,
2665
2397
  {
2666
2398
  className: "pt-2",
@@ -2668,22 +2400,22 @@ function UniversalFooter({
2668
2400
  }
2669
2401
  )
2670
2402
  ] }),
2671
- config.moveDescriptionToRight && config.keepBelowDescriptionLeft && config.belowDescriptionContent && /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(Skeleton, { className: "h-8 w-full" }), children: config.belowDescriptionContent })
2403
+ config.moveDescriptionToRight && config.keepBelowDescriptionLeft && config.belowDescriptionContent && /* @__PURE__ */ jsx12(Suspense, { fallback: /* @__PURE__ */ jsx12(Skeleton, { className: "h-8 w-full" }), children: config.belowDescriptionContent })
2672
2404
  ] }),
2673
- config.sections.map((section, index) => /* @__PURE__ */ jsxs12("div", { className: "col-span-1 flex flex-col items-start gap-3 text-left", children: [
2674
- /* @__PURE__ */ jsx14("h3", { className: "tracking-[-0.02em] text-ods-text-muted text-h5", children: section.title }),
2675
- /* @__PURE__ */ jsx14("div", { className: "flex flex-col gap-3", children: section.links.map((link, linkIndex) => /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(NavLinkSkeleton, {}), children: linkRenderer(link) }, linkIndex)) })
2405
+ config.sections.map((section, index) => /* @__PURE__ */ jsxs10("div", { className: "col-span-1 flex flex-col items-start gap-3 text-left", children: [
2406
+ /* @__PURE__ */ jsx12("h3", { className: "tracking-[-0.02em] text-ods-text-muted text-h5", children: section.title }),
2407
+ /* @__PURE__ */ jsx12("div", { className: "flex flex-col gap-3", children: section.links.map((link, linkIndex) => /* @__PURE__ */ jsx12(Suspense, { fallback: /* @__PURE__ */ jsx12(NavLinkSkeleton, {}), children: linkRenderer(link) }, linkIndex)) })
2676
2408
  ] }, index)),
2677
- config.customComponent && /* @__PURE__ */ jsx14("div", { className: "col-span-2 flex flex-col justify-center md:col-span-1 lg:col-span-1", children: /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(Skeleton, { className: "h-32 w-full" }), children: config.customComponent }) }),
2678
- (config.rightColumnContent || config.moveDescriptionToRight) && /* @__PURE__ */ jsxs12("div", { className: "col-span-2 flex flex-col justify-start gap-4 md:col-span-1 md:gap-6 lg:col-span-1", children: [
2679
- config.moveDescriptionToRight && /* @__PURE__ */ jsxs12(Fragment3, { children: [
2680
- /* @__PURE__ */ jsx14("p", { className: "font-body text-sm font-medium leading-[1.43] text-ods-text-primary md:text-sm", children: config.description }),
2681
- config.belowDescriptionContent && !config.keepBelowDescriptionLeft && /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(Skeleton, { className: "h-8 w-full" }), children: config.belowDescriptionContent })
2409
+ config.customComponent && /* @__PURE__ */ jsx12("div", { className: "col-span-2 flex flex-col justify-center md:col-span-1 lg:col-span-1", children: /* @__PURE__ */ jsx12(Suspense, { fallback: /* @__PURE__ */ jsx12(Skeleton, { className: "h-32 w-full" }), children: config.customComponent }) }),
2410
+ (config.rightColumnContent || config.moveDescriptionToRight) && /* @__PURE__ */ jsxs10("div", { className: "col-span-2 flex flex-col justify-start gap-4 md:col-span-1 md:gap-6 lg:col-span-1", children: [
2411
+ config.moveDescriptionToRight && /* @__PURE__ */ jsxs10(Fragment2, { children: [
2412
+ /* @__PURE__ */ jsx12("p", { className: "font-body text-sm font-medium leading-[1.43] text-ods-text-primary md:text-sm", children: config.description }),
2413
+ config.belowDescriptionContent && !config.keepBelowDescriptionLeft && /* @__PURE__ */ jsx12(Suspense, { fallback: /* @__PURE__ */ jsx12(Skeleton, { className: "h-8 w-full" }), children: config.belowDescriptionContent })
2682
2414
  ] }),
2683
- config.rightColumnContent && /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(Skeleton, { className: "h-32 w-full" }), children: config.rightColumnContent })
2415
+ config.rightColumnContent && /* @__PURE__ */ jsx12(Suspense, { fallback: /* @__PURE__ */ jsx12(Skeleton, { className: "h-32 w-full" }), children: config.rightColumnContent })
2684
2416
  ] })
2685
2417
  ] }),
2686
- /* @__PURE__ */ jsxs12("p", { className: "text-md md:text-md w-full pt-4 text-center font-body font-medium leading-[1.33] text-ods-text-muted md:pt-0", children: [
2418
+ /* @__PURE__ */ jsxs10("p", { className: "text-md md:text-md w-full pt-4 text-center font-body font-medium leading-[1.33] text-ods-text-muted md:pt-0", children: [
2687
2419
  "\xA9 ",
2688
2420
  (/* @__PURE__ */ new Date()).getFullYear(),
2689
2421
  " ",
@@ -3003,20 +2735,20 @@ var blogFilterConfig = {
3003
2735
 
3004
2736
  // src/components/footer-waitlist-button.tsx
3005
2737
  import { useCallback } from "react";
3006
- import { jsx as jsx15 } from "react/jsx-runtime";
2738
+ import { jsx as jsx13 } from "react/jsx-runtime";
3007
2739
  function FooterWaitlistButton({ className }) {
3008
2740
  const router = useRouter();
3009
2741
  const runtime = useChatRuntime();
3010
2742
  const handleClick = useCallback(() => {
3011
2743
  executeNavigationImperative({ runtime, href: "/waitlist#top", fallbackNavigate: router.push });
3012
2744
  }, [router, runtime]);
3013
- return /* @__PURE__ */ jsx15(Button, { onClick: handleClick, className, leftIcon: /* @__PURE__ */ jsx15(OpenFrameLogo, {}), children: "Join Waitlist" });
2745
+ return /* @__PURE__ */ jsx13(Button, { onClick: handleClick, className, leftIcon: /* @__PURE__ */ jsx13(OpenFrameLogo, {}), children: "Join Waitlist" });
3014
2746
  }
3015
2747
 
3016
2748
  // src/components/hero-image-uploader.tsx
3017
2749
  import { Loader2, Image as ImageIcon2, Upload, X as X3 } from "lucide-react";
3018
2750
  import { useRef, useState as useState3 } from "react";
3019
- import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
2751
+ import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
3020
2752
  function readUploadedUrl(payload) {
3021
2753
  if (typeof payload !== "object" || payload === null) return null;
3022
2754
  if ("data" in payload) {
@@ -3119,53 +2851,53 @@ function HeroImageUploader({
3119
2851
  onChange(void 0);
3120
2852
  };
3121
2853
  const heightStyle = typeof height === "number" ? `${height}px` : height;
3122
- return /* @__PURE__ */ jsxs13("div", { className: "h-full max-h-full min-h-[300px] w-full space-y-2", children: [
3123
- imageUrl ? /* @__PURE__ */ jsxs13(
2854
+ return /* @__PURE__ */ jsxs11("div", { className: "h-full max-h-full min-h-[300px] w-full space-y-2", children: [
2855
+ imageUrl ? /* @__PURE__ */ jsxs11(
3124
2856
  "div",
3125
2857
  {
3126
2858
  className: "group relative flex aspect-square h-auto w-full items-center justify-center overflow-hidden md:aspect-auto md:h-full",
3127
2859
  style: { height: heightStyle },
3128
2860
  children: [
3129
- /* @__PURE__ */ jsx16(next_image_default, { src: imageUrl, className: `object-${objectFit}`, alt: "Cover", fill: true, sizes: "100vw", unoptimized: true }),
3130
- /* @__PURE__ */ jsxs13("div", { className: "absolute inset-0 flex items-center justify-center gap-4 rounded-lg bg-black/40 opacity-0 transition-opacity group-hover:opacity-100", children: [
3131
- showReplaceButton && /* @__PURE__ */ jsx16(
2861
+ /* @__PURE__ */ jsx14(next_image_default, { src: imageUrl, className: `object-${objectFit}`, alt: "Cover", fill: true, sizes: "100vw", unoptimized: true }),
2862
+ /* @__PURE__ */ jsxs11("div", { className: "absolute inset-0 flex items-center justify-center gap-4 rounded-lg bg-black/40 opacity-0 transition-opacity group-hover:opacity-100", children: [
2863
+ showReplaceButton && /* @__PURE__ */ jsx14(
3132
2864
  Button,
3133
2865
  {
3134
2866
  variant: "outline",
3135
2867
  size: "icon",
3136
2868
  onClick: openDialog,
3137
2869
  className: "h-12 w-12 rounded-full bg-white text-black hover:bg-gray-100",
3138
- children: /* @__PURE__ */ jsx16(Upload, { className: "h-5 w-5" })
2870
+ children: /* @__PURE__ */ jsx14(Upload, { className: "h-5 w-5" })
3139
2871
  }
3140
2872
  ),
3141
- /* @__PURE__ */ jsx16(
2873
+ /* @__PURE__ */ jsx14(
3142
2874
  Button,
3143
2875
  {
3144
2876
  variant: "outline",
3145
2877
  size: "icon",
3146
2878
  onClick: () => handleRemove(),
3147
2879
  className: "h-12 w-12 rounded-full bg-white text-black hover:bg-gray-100",
3148
- children: /* @__PURE__ */ jsx16(X3, { className: "h-5 w-5" })
2880
+ children: /* @__PURE__ */ jsx14(X3, { className: "h-5 w-5" })
3149
2881
  }
3150
2882
  )
3151
2883
  ] })
3152
2884
  ]
3153
2885
  }
3154
- ) : /* @__PURE__ */ jsx16(
2886
+ ) : /* @__PURE__ */ jsx14(
3155
2887
  "div",
3156
2888
  {
3157
2889
  className: `h-full w-full border-2 border-dashed ${uploading ? "border-ods-accent" : "border-ods-border hover:border-ods-accent"} flex cursor-pointer flex-col items-center justify-center rounded-lg bg-ods-bg`,
3158
2890
  style: { height: heightStyle },
3159
2891
  onClick: openDialog,
3160
- children: uploading ? /* @__PURE__ */ jsx16(Loader2, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs13(Fragment4, { children: [
3161
- /* @__PURE__ */ jsx16(ImageIcon2, { className: "h-12 w-12 text-ods-text-secondary" }),
3162
- /* @__PURE__ */ jsx16("span", { className: "mt-2 text-ods-text-primary text-h6", children: "Upload cover image" }),
3163
- /* @__PURE__ */ jsx16("span", { className: "mt-1 text-ods-text-secondary text-h6", children: "Click to upload or drag and drop" }),
3164
- /* @__PURE__ */ jsx16("span", { className: "text-ods-text-secondary text-h6", children: "PNG, JPEG, WebP, GIF up to 5MB" })
2892
+ children: uploading ? /* @__PURE__ */ jsx14(Loader2, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs11(Fragment3, { children: [
2893
+ /* @__PURE__ */ jsx14(ImageIcon2, { className: "h-12 w-12 text-ods-text-secondary" }),
2894
+ /* @__PURE__ */ jsx14("span", { className: "mt-2 text-ods-text-primary text-h6", children: "Upload cover image" }),
2895
+ /* @__PURE__ */ jsx14("span", { className: "mt-1 text-ods-text-secondary text-h6", children: "Click to upload or drag and drop" }),
2896
+ /* @__PURE__ */ jsx14("span", { className: "text-ods-text-secondary text-h6", children: "PNG, JPEG, WebP, GIF up to 5MB" })
3165
2897
  ] })
3166
2898
  }
3167
2899
  ),
3168
- /* @__PURE__ */ jsx16("input", { ref: inputRef, type: "file", accept: "image/*", onChange: handleSelect, className: "hidden" })
2900
+ /* @__PURE__ */ jsx14("input", { ref: inputRef, type: "file", accept: "image/*", onChange: handleSelect, className: "hidden" })
3169
2901
  ] });
3170
2902
  }
3171
2903
 
@@ -3184,13 +2916,13 @@ var CommunityIcon2 = MessageSquare;
3184
2916
  var CompareIcon2 = GitCompare;
3185
2917
 
3186
2918
  // src/components/icons-block.tsx
3187
- import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
2919
+ import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
3188
2920
  var SunIcon2 = Sun;
3189
2921
  var MoonIcon2 = Moon;
3190
2922
  var CheckCircleIcon3 = CheckCircle;
3191
2923
  var GitHubIcon2 = Github;
3192
2924
  var PlusCircleIcon2 = PlusCircle;
3193
- var OpenmspLogo2 = () => /* @__PURE__ */ jsx17("div", { children: "Logo" });
2925
+ var OpenmspLogo2 = () => /* @__PURE__ */ jsx15("div", { children: "Logo" });
3194
2926
  var availableIcons = [
3195
2927
  VendorDirectoryIcon2,
3196
2928
  OpenSourceIcon2,
@@ -3253,17 +2985,17 @@ function ResponsiveIconsBlock({ loading = false }) {
3253
2985
  return iconGrid[row]?.[col] || availableIcons[0];
3254
2986
  };
3255
2987
  if (loading || iconGrid.length === 0) {
3256
- return /* @__PURE__ */ jsx17(
2988
+ return /* @__PURE__ */ jsx15(
3257
2989
  "div",
3258
2990
  {
3259
2991
  className: "relative h-[80px] w-full overflow-hidden bg-[#1A1A1A] md:h-[112px]",
3260
2992
  role: "presentation",
3261
2993
  "aria-hidden": "true",
3262
- children: /* @__PURE__ */ jsx17("div", { className: "absolute inset-0 animate-pulse bg-[#2A2A2A]/60" })
2994
+ children: /* @__PURE__ */ jsx15("div", { className: "absolute inset-0 animate-pulse bg-[#2A2A2A]/60" })
3263
2995
  }
3264
2996
  );
3265
2997
  }
3266
- return /* @__PURE__ */ jsxs14(
2998
+ return /* @__PURE__ */ jsxs12(
3267
2999
  "div",
3268
3000
  {
3269
3001
  className: "relative z-10 h-[80px] w-full overflow-hidden bg-[#1A1A1A] md:h-[112px]",
@@ -3271,14 +3003,14 @@ function ResponsiveIconsBlock({ loading = false }) {
3271
3003
  role: "presentation",
3272
3004
  "aria-hidden": "true",
3273
3005
  children: [
3274
- /* @__PURE__ */ jsx17("style", { children: `
3006
+ /* @__PURE__ */ jsx15("style", { children: `
3275
3007
  .icons-block svg,
3276
3008
  .icons-block svg * {
3277
3009
  filter: grayscale(100%) brightness(0) invert(1) brightness(0.4) !important;
3278
3010
  fill: currentColor !important;
3279
3011
  }
3280
3012
  ` }),
3281
- /* @__PURE__ */ jsx17(
3013
+ /* @__PURE__ */ jsx15(
3282
3014
  "div",
3283
3015
  {
3284
3016
  className: "icons-block grid h-full w-full",
@@ -3290,7 +3022,7 @@ function ResponsiveIconsBlock({ loading = false }) {
3290
3022
  const col = idx % displayColumns;
3291
3023
  const row = Math.floor(idx / displayColumns);
3292
3024
  const IconComponent = getIconForIndex(idx);
3293
- return /* @__PURE__ */ jsx17(
3025
+ return /* @__PURE__ */ jsx15(
3294
3026
  "div",
3295
3027
  {
3296
3028
  className: "flex h-full w-full items-center justify-center",
@@ -3303,7 +3035,7 @@ function ResponsiveIconsBlock({ loading = false }) {
3303
3035
  boxSizing: "border-box"
3304
3036
  },
3305
3037
  role: "presentation",
3306
- children: /* @__PURE__ */ jsx17(IconComponent, { width: 16, height: 16, className: "text-[#666666] md:h-5 md:w-5", "aria-hidden": "true" })
3038
+ children: /* @__PURE__ */ jsx15(IconComponent, { width: 16, height: 16, className: "text-[#666666] md:h-5 md:w-5", "aria-hidden": "true" })
3307
3039
  },
3308
3040
  idx
3309
3041
  );
@@ -3319,7 +3051,7 @@ function ResponsiveIconsBlock({ loading = false }) {
3319
3051
  import { Check, RotateCcw } from "lucide-react";
3320
3052
  import { useCallback as useCallback2, useState as useState5 } from "react";
3321
3053
  import Cropper from "react-easy-crop";
3322
- import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
3054
+ import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
3323
3055
  function loadImage(src) {
3324
3056
  return new Promise((resolve, reject) => {
3325
3057
  const img = new Image();
@@ -3406,7 +3138,7 @@ var ImageCropper = ({
3406
3138
  onCancel?.();
3407
3139
  }
3408
3140
  };
3409
- return /* @__PURE__ */ jsxs15(
3141
+ return /* @__PURE__ */ jsxs13(
3410
3142
  "div",
3411
3143
  {
3412
3144
  className: cn("relative flex w-full flex-col gap-4", className),
@@ -3414,7 +3146,7 @@ var ImageCropper = ({
3414
3146
  tabIndex: 0,
3415
3147
  "aria-label": "Image cropper",
3416
3148
  children: [
3417
- /* @__PURE__ */ jsx18("div", { className: cn("relative aspect-square w-full overflow-hidden rounded-md md:aspect-video", checkerBg), children: /* @__PURE__ */ jsx18(
3149
+ /* @__PURE__ */ jsx16("div", { className: cn("relative aspect-square w-full overflow-hidden rounded-md md:aspect-video", checkerBg), children: /* @__PURE__ */ jsx16(
3418
3150
  Cropper,
3419
3151
  {
3420
3152
  image: src,
@@ -3431,10 +3163,10 @@ var ImageCropper = ({
3431
3163
  objectFit: "contain"
3432
3164
  }
3433
3165
  ) }),
3434
- /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-4", children: [
3435
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
3436
- /* @__PURE__ */ jsx18("span", { className: "min-w-[60px] text-h6", children: "Zoom" }),
3437
- /* @__PURE__ */ jsx18(
3166
+ /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-4", children: [
3167
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-3", children: [
3168
+ /* @__PURE__ */ jsx16("span", { className: "min-w-[60px] text-h6", children: "Zoom" }),
3169
+ /* @__PURE__ */ jsx16(
3438
3170
  Slider,
3439
3171
  {
3440
3172
  min: 1,
@@ -3447,9 +3179,9 @@ var ImageCropper = ({
3447
3179
  }
3448
3180
  )
3449
3181
  ] }),
3450
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
3451
- /* @__PURE__ */ jsx18("span", { className: "min-w-[60px] text-h6", children: "Rotate" }),
3452
- /* @__PURE__ */ jsx18(
3182
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-3", children: [
3183
+ /* @__PURE__ */ jsx16("span", { className: "min-w-[60px] text-h6", children: "Rotate" }),
3184
+ /* @__PURE__ */ jsx16(
3453
3185
  Slider,
3454
3186
  {
3455
3187
  min: 0,
@@ -3461,12 +3193,12 @@ var ImageCropper = ({
3461
3193
  className: "flex-1"
3462
3194
  }
3463
3195
  ),
3464
- /* @__PURE__ */ jsx18(Button, { variant: "outline", size: "icon", onClick: () => setRotation(0), "aria-label": "Reset rotation", children: /* @__PURE__ */ jsx18(RotateCcw, { className: "h-4 w-4" }) })
3196
+ /* @__PURE__ */ jsx16(Button, { variant: "outline", size: "icon", onClick: () => setRotation(0), "aria-label": "Reset rotation", children: /* @__PURE__ */ jsx16(RotateCcw, { className: "h-4 w-4" }) })
3465
3197
  ] })
3466
3198
  ] }),
3467
- /* @__PURE__ */ jsxs15("div", { className: "mt-2 flex justify-end gap-2", children: [
3468
- onCancel && /* @__PURE__ */ jsx18(Button, { variant: "outline", onClick: onCancel, "aria-label": "Cancel crop", children: "Cancel" }),
3469
- /* @__PURE__ */ jsx18(
3199
+ /* @__PURE__ */ jsxs13("div", { className: "mt-2 flex justify-end gap-2", children: [
3200
+ onCancel && /* @__PURE__ */ jsx16(Button, { variant: "outline", onClick: onCancel, "aria-label": "Cancel crop", children: "Cancel" }),
3201
+ /* @__PURE__ */ jsx16(
3470
3202
  Button,
3471
3203
  {
3472
3204
  variant: "accent",
@@ -3474,7 +3206,7 @@ var ImageCropper = ({
3474
3206
  const result = await exportCrop();
3475
3207
  if (result) onComplete(result);
3476
3208
  },
3477
- leftIcon: /* @__PURE__ */ jsx18(Check, { className: "h-4 w-4" }),
3209
+ leftIcon: /* @__PURE__ */ jsx16(Check, { className: "h-4 w-4" }),
3478
3210
  "aria-label": "Apply crop",
3479
3211
  children: "Apply"
3480
3212
  }
@@ -3486,19 +3218,19 @@ var ImageCropper = ({
3486
3218
  };
3487
3219
 
3488
3220
  // src/components/metric-value.tsx
3489
- import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
3221
+ import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
3490
3222
  function MetricValue({ value, label, className }) {
3491
- return /* @__PURE__ */ jsxs16("div", { className: cn("flex items-end gap-2 whitespace-nowrap text-ods-text-primary text-h4", className), children: [
3223
+ return /* @__PURE__ */ jsxs14("div", { className: cn("flex items-end gap-2 whitespace-nowrap text-ods-text-primary text-h4", className), children: [
3492
3224
  value,
3493
- /* @__PURE__ */ jsx19("span", { className: "text-ods-text-secondary text-h6", children: label })
3225
+ /* @__PURE__ */ jsx17("span", { className: "text-ods-text-secondary text-h6", children: label })
3494
3226
  ] });
3495
3227
  }
3496
3228
 
3497
3229
  // src/components/msp-display.tsx
3498
- import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
3230
+ import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
3499
3231
  function MSPDisplay({ name, logoUrl, size = 40, className }) {
3500
- return /* @__PURE__ */ jsxs17("div", { className: cn("flex min-w-0 items-center gap-2", className), children: [
3501
- /* @__PURE__ */ jsx20(
3232
+ return /* @__PURE__ */ jsxs15("div", { className: cn("flex min-w-0 items-center gap-2", className), children: [
3233
+ /* @__PURE__ */ jsx18(
3502
3234
  SquareAvatar,
3503
3235
  {
3504
3236
  src: logoUrl ? getProxiedImageUrl(logoUrl) || logoUrl : void 0,
@@ -3507,16 +3239,16 @@ function MSPDisplay({ name, logoUrl, size = 40, className }) {
3507
3239
  sizePx: size
3508
3240
  }
3509
3241
  ),
3510
- /* @__PURE__ */ jsx20("h2", { className: "truncate pl-2", children: name })
3242
+ /* @__PURE__ */ jsx18("h2", { className: "truncate pl-2", children: name })
3511
3243
  ] });
3512
3244
  }
3513
3245
 
3514
3246
  // src/components/open-source-features.tsx
3515
3247
  import { Terminal, DollarSign as DollarSign2, Network, Users as Users2 } from "lucide-react";
3516
- import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
3248
+ import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
3517
3249
 
3518
3250
  // src/components/pricing-display.tsx
3519
- import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
3251
+ import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
3520
3252
  var PRICING_STYLES = {
3521
3253
  // Comparison table style (current default)
3522
3254
  comparison: {
@@ -3552,11 +3284,11 @@ function PricingDisplay({
3552
3284
  styleConfig = PRICING_STYLES.comparison
3553
3285
  }) {
3554
3286
  if (typeof pricing === "string") {
3555
- return /* @__PURE__ */ jsx22(LegacyPricingDisplay, { pricing, className, styleConfig });
3287
+ return /* @__PURE__ */ jsx20(LegacyPricingDisplay, { pricing, className, styleConfig });
3556
3288
  }
3557
3289
  const pricingArray = Array.isArray(pricing) ? pricing : [pricing];
3558
3290
  if (!pricingArray || pricingArray.length === 0) {
3559
- return /* @__PURE__ */ jsx22(
3291
+ return /* @__PURE__ */ jsx20(
3560
3292
  "span",
3561
3293
  {
3562
3294
  className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize} ${styleConfig.fontFamily} ${className}`,
@@ -3568,9 +3300,9 @@ function PricingDisplay({
3568
3300
  const item = pricingArray[0];
3569
3301
  const price = item.ranges?.[0]?.min || 0;
3570
3302
  const unit = item.ranges?.[0]?.unit;
3571
- return /* @__PURE__ */ jsxs19("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3572
- /* @__PURE__ */ jsx22("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: formatPriceValue(price, styleConfig.showTildePrefix) }),
3573
- unit && /* @__PURE__ */ jsxs19("span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
3303
+ return /* @__PURE__ */ jsxs17("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3304
+ /* @__PURE__ */ jsx20("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: formatPriceValue(price, styleConfig.showTildePrefix) }),
3305
+ unit && /* @__PURE__ */ jsxs17("span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
3574
3306
  "/",
3575
3307
  unit
3576
3308
  ] })
@@ -3580,9 +3312,9 @@ function PricingDisplay({
3580
3312
  (item) => formatPriceValue(item.ranges?.[0]?.min || 0, styleConfig.showTildePrefix)
3581
3313
  );
3582
3314
  const itemWithUnit = pricingArray.find((item) => item.ranges?.[0]?.unit);
3583
- return /* @__PURE__ */ jsxs19("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3584
- /* @__PURE__ */ jsx22("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: priceValues.join(" | ") }),
3585
- itemWithUnit && itemWithUnit.ranges?.[0]?.unit && /* @__PURE__ */ jsxs19("span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
3315
+ return /* @__PURE__ */ jsxs17("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3316
+ /* @__PURE__ */ jsx20("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: priceValues.join(" | ") }),
3317
+ itemWithUnit && itemWithUnit.ranges?.[0]?.unit && /* @__PURE__ */ jsxs17("span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
3586
3318
  "/",
3587
3319
  itemWithUnit.ranges[0].unit
3588
3320
  ] })
@@ -3603,7 +3335,7 @@ function LegacyPricingDisplay({
3603
3335
  styleConfig = PRICING_STYLES.comparison
3604
3336
  }) {
3605
3337
  if (pricing === "Free" || pricing === "No pricing data") {
3606
- return /* @__PURE__ */ jsx22(
3338
+ return /* @__PURE__ */ jsx20(
3607
3339
  "span",
3608
3340
  {
3609
3341
  className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize} ${styleConfig.fontFamily} ${className}`,
@@ -3665,9 +3397,9 @@ function LegacyPricingDisplay({
3665
3397
  };
3666
3398
  };
3667
3399
  const { mainValue, secondaryInfo } = parsePricing(pricing);
3668
- return /* @__PURE__ */ jsxs19("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3669
- /* @__PURE__ */ jsx22("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: mainValue }),
3670
- secondaryInfo && /* @__PURE__ */ jsx22("span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: secondaryInfo })
3400
+ return /* @__PURE__ */ jsxs17("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3401
+ /* @__PURE__ */ jsx20("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: mainValue }),
3402
+ secondaryInfo && /* @__PURE__ */ jsx20("span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: secondaryInfo })
3671
3403
  ] });
3672
3404
  }
3673
3405
  function formatPricingForDisplay(pricing) {
@@ -3675,7 +3407,7 @@ function formatPricingForDisplay(pricing) {
3675
3407
  }
3676
3408
 
3677
3409
  // src/components/results-count.tsx
3678
- import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
3410
+ import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
3679
3411
  function ResultsCount({ currentPage, pageSize, totalResults, resultType, sortingMessage }) {
3680
3412
  if (totalResults === 0) {
3681
3413
  return null;
@@ -3685,7 +3417,7 @@ function ResultsCount({ currentPage, pageSize, totalResults, resultType, sorting
3685
3417
  const plural = resultType === "vendors" ? "vendors" : "posts";
3686
3418
  const singular = resultType === "vendors" ? "vendor" : "post";
3687
3419
  const displayType = totalResults === 1 ? singular : plural;
3688
- return /* @__PURE__ */ jsx23("div", { className: "mb-6", children: /* @__PURE__ */ jsx23("p", { className: "text-ods-text-secondary text-h6", children: totalResults > 0 && /* @__PURE__ */ jsxs20(Fragment5, { children: [
3420
+ return /* @__PURE__ */ jsx21("div", { className: "mb-6", children: /* @__PURE__ */ jsx21("p", { className: "text-ods-text-secondary text-h6", children: totalResults > 0 && /* @__PURE__ */ jsxs18(Fragment4, { children: [
3689
3421
  "Showing ",
3690
3422
  startIndex,
3691
3423
  "-",
@@ -3694,7 +3426,7 @@ function ResultsCount({ currentPage, pageSize, totalResults, resultType, sorting
3694
3426
  totalResults,
3695
3427
  " ",
3696
3428
  displayType,
3697
- sortingMessage && /* @__PURE__ */ jsxs20("span", { className: "ml-2 text-ods-accent", children: [
3429
+ sortingMessage && /* @__PURE__ */ jsxs18("span", { className: "ml-2 text-ods-accent", children: [
3698
3430
  "\u2022 ",
3699
3431
  sortingMessage
3700
3432
  ] })
@@ -3705,14 +3437,14 @@ function ResultsCount({ currentPage, pageSize, totalResults, resultType, sorting
3705
3437
  import { Boxes, Database, Hand, Plug, ShieldCheck, Sparkles } from "lucide-react";
3706
3438
 
3707
3439
  // src/components/openframe-logo.tsx
3708
- import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
3440
+ import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
3709
3441
  var OpenFrameLogo2 = ({
3710
3442
  className,
3711
3443
  lowerPathColor,
3712
3444
  upperPathColor,
3713
3445
  ...props
3714
3446
  }) => {
3715
- return /* @__PURE__ */ jsx24(
3447
+ return /* @__PURE__ */ jsx22(
3716
3448
  "svg",
3717
3449
  {
3718
3450
  ...props,
@@ -3726,30 +3458,30 @@ var OpenFrameLogo2 = ({
3726
3458
  "--fill-0": "currentColor",
3727
3459
  ...props.style
3728
3460
  },
3729
- children: /* @__PURE__ */ jsxs21("g", { children: [
3730
- /* @__PURE__ */ jsxs21("g", { children: [
3731
- /* @__PURE__ */ jsx24(
3461
+ children: /* @__PURE__ */ jsxs19("g", { children: [
3462
+ /* @__PURE__ */ jsxs19("g", { children: [
3463
+ /* @__PURE__ */ jsx22(
3732
3464
  "path",
3733
3465
  {
3734
3466
  d: "M21.3333 16.5333C21.3333 16.2388 21.5721 16 21.8667 16H26.1333C26.4279 16 26.6667 16.2388 26.6667 16.5333V20.8C26.6667 21.0946 26.4279 21.3333 26.1333 21.3333H21.8667C21.5721 21.3333 21.3333 21.0946 21.3333 20.8V16.5333Z",
3735
3467
  fill: lowerPathColor ?? "#ffffff"
3736
3468
  }
3737
3469
  ),
3738
- /* @__PURE__ */ jsx24(
3470
+ /* @__PURE__ */ jsx22(
3739
3471
  "path",
3740
3472
  {
3741
3473
  d: "M16 21.8667C16 21.5721 16.2388 21.3333 16.5333 21.3333H20.8C21.0946 21.3333 21.3333 21.5721 21.3333 21.8667V26.1333C21.3333 26.4279 21.0946 26.6667 20.8 26.6667H16.5333C16.2388 26.6667 16 26.4279 16 26.1333V21.8667Z",
3742
3474
  fill: lowerPathColor ?? "#ffffff"
3743
3475
  }
3744
3476
  ),
3745
- /* @__PURE__ */ jsx24(
3477
+ /* @__PURE__ */ jsx22(
3746
3478
  "path",
3747
3479
  {
3748
3480
  d: "M26.6667 21.8667C26.6667 21.5721 26.9054 21.3333 27.2 21.3333H31.4667C31.7612 21.3333 32 21.5721 32 21.8667V26.1333C32 26.4279 31.7612 26.6667 31.4667 26.6667H27.2C26.9054 26.6667 26.6667 26.4279 26.6667 26.1333V21.8667Z",
3749
3481
  fill: lowerPathColor ?? "#ffffff"
3750
3482
  }
3751
3483
  ),
3752
- /* @__PURE__ */ jsx24(
3484
+ /* @__PURE__ */ jsx22(
3753
3485
  "path",
3754
3486
  {
3755
3487
  d: "M21.3333 27.2C21.3333 26.9054 21.5721 26.6667 21.8667 26.6667H26.1333C26.4279 26.6667 26.6667 26.9054 26.6667 27.2V31.4667C26.6667 31.7612 26.4279 32 26.1333 32H21.8667C21.5721 32 21.3333 31.7612 21.3333 31.4667V27.2Z",
@@ -3757,7 +3489,7 @@ var OpenFrameLogo2 = ({
3757
3489
  }
3758
3490
  )
3759
3491
  ] }),
3760
- /* @__PURE__ */ jsx24(
3492
+ /* @__PURE__ */ jsx22(
3761
3493
  "path",
3762
3494
  {
3763
3495
  d: "M30.9333 0H1.06667C0.477563 0 0 0.477564 0 1.06667V30.9333C0 31.5224 0.477563 32 1.06667 32H14.9333C15.5224 32 16 31.5224 16 30.9333V27.7333C16 27.1442 15.5224 26.6667 14.9333 26.6667H5.86667C5.57211 26.6667 5.33333 26.4279 5.33333 26.1333V5.86667C5.33333 5.57211 5.57211 5.33333 5.86667 5.33333H26.1333C26.4279 5.33333 26.6667 5.57212 26.6667 5.86667V14.9333C26.6667 15.5224 27.1442 16 27.7333 16H30.9333C31.5224 16 32 15.5224 32 14.9333V1.06667C32 0.477563 31.5224 0 30.9333 0Z",
@@ -3770,7 +3502,7 @@ var OpenFrameLogo2 = ({
3770
3502
  };
3771
3503
 
3772
3504
  // src/components/vendor-tag.tsx
3773
- import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
3505
+ import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
3774
3506
  function VendorTag({ type, text, className = "", hidden = false, size = "md", accentColor }) {
3775
3507
  const baseClasses = cn(
3776
3508
  "flex items-center gap-1.5 whitespace-nowrap rounded border border-ods-border bg-ods-bg",
@@ -3782,99 +3514,99 @@ function VendorTag({ type, text, className = "", hidden = false, size = "md", ac
3782
3514
  return {
3783
3515
  text: "Placeholder",
3784
3516
  textColor: "text-ods-text-primary",
3785
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm", children: /* @__PURE__ */ jsx25(Sparkles, { width: 10, height: 10, className: "text-ods-text-primary" }) })
3517
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm", children: /* @__PURE__ */ jsx23(Sparkles, { width: 10, height: 10, className: "text-ods-text-primary" }) })
3786
3518
  };
3787
3519
  case "ai":
3788
3520
  return {
3789
3521
  text: "AI Selected",
3790
3522
  textColor: "text-ods-text-primary",
3791
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm", children: /* @__PURE__ */ jsx25(Sparkles, { width: 10, height: 10, className: "text-ods-text-primary" }) })
3523
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm", children: /* @__PURE__ */ jsx23(Sparkles, { width: 10, height: 10, className: "text-ods-text-primary" }) })
3792
3524
  };
3793
3525
  case "manual":
3794
3526
  return {
3795
3527
  text: "Manually Selected",
3796
3528
  textColor: "text-ods-text-secondary",
3797
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm", children: /* @__PURE__ */ jsx25(Hand, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3529
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm", children: /* @__PURE__ */ jsx23(Hand, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3798
3530
  };
3799
3531
  case "open-source":
3800
3532
  return {
3801
3533
  text: text || "Open Source",
3802
- icon: /* @__PURE__ */ jsx25(
3534
+ icon: /* @__PURE__ */ jsx23(
3803
3535
  "div",
3804
3536
  {
3805
3537
  className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent",
3806
3538
  style: accentColor ? { backgroundColor: accentColor } : void 0,
3807
- children: /* @__PURE__ */ jsx25(OpenSourceIcon2, { width: 10, height: 10, className: "text-ods-text-on-accent" })
3539
+ children: /* @__PURE__ */ jsx23(OpenSourceIcon2, { width: 10, height: 10, className: "text-ods-text-on-accent" })
3808
3540
  }
3809
3541
  )
3810
3542
  };
3811
3543
  case "commercial":
3812
3544
  return {
3813
3545
  text: text || "Commercial Vendor",
3814
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx25(CoinsIcon2, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3546
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx23(CoinsIcon2, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3815
3547
  };
3816
3548
  // platform-capability tags — same neutral icon-box chrome as 'commercial'
3817
3549
  case "api":
3818
3550
  return {
3819
3551
  text: text || "API",
3820
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx25(Plug, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3552
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx23(Plug, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3821
3553
  };
3822
3554
  case "data":
3823
3555
  return {
3824
3556
  text: text || "Data",
3825
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx25(Database, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3557
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx23(Database, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3826
3558
  };
3827
3559
  case "k8s":
3828
3560
  return {
3829
3561
  text: text || "K8s",
3830
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx25(Boxes, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3562
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx23(Boxes, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3831
3563
  };
3832
3564
  case "secured":
3833
3565
  return {
3834
3566
  text: text || "Secured",
3835
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx25(ShieldCheck, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3567
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx23(ShieldCheck, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3836
3568
  };
3837
3569
  case "free":
3838
3570
  return {
3839
3571
  text: text || "Free",
3840
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx25("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "$" }) })
3572
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx23("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "$" }) })
3841
3573
  };
3842
3574
  case "freemium":
3843
3575
  return {
3844
3576
  text: text || "Freemium",
3845
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx25("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "$" }) })
3577
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx23("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "$" }) })
3846
3578
  };
3847
3579
  case "paid":
3848
3580
  return {
3849
3581
  text: text || "Paid",
3850
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx25(CoinsIcon2, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3582
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx23(CoinsIcon2, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3851
3583
  };
3852
3584
  case "enterprise":
3853
3585
  return {
3854
3586
  text: text || "Enterprise",
3855
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx25("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "E" }) })
3587
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx23("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "E" }) })
3856
3588
  };
3857
3589
  case "recommended":
3858
3590
  return {
3859
3591
  text: text || "Recommended",
3860
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx25("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "\u2605" }) })
3592
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx23("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "\u2605" }) })
3861
3593
  };
3862
3594
  case "classification": {
3863
3595
  const classificationType = text?.toLowerCase();
3864
3596
  if (classificationType === "open_source") {
3865
3597
  return {
3866
3598
  text: "Open Source",
3867
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx25(OpenSourceIcon2, { width: 10, height: 10, className: "text-ods-text-on-accent" }) })
3599
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx23(OpenSourceIcon2, { width: 10, height: 10, className: "text-ods-text-on-accent" }) })
3868
3600
  };
3869
3601
  } else if (classificationType === "commercial") {
3870
3602
  return {
3871
3603
  text: "Commercial Vendor",
3872
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx25(CoinsIcon2, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3604
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx23(CoinsIcon2, { width: 10, height: 10, className: "text-ods-text-secondary" }) })
3873
3605
  };
3874
3606
  } else if (classificationType === "openframe_selected") {
3875
3607
  return {
3876
3608
  text: "OpenFrame Selected",
3877
- icon: /* @__PURE__ */ jsx25(
3609
+ icon: /* @__PURE__ */ jsx23(
3878
3610
  OpenFrameLogo2,
3879
3611
  {
3880
3612
  lowerPathColor: "currentColor",
@@ -3886,14 +3618,14 @@ function VendorTag({ type, text, className = "", hidden = false, size = "md", ac
3886
3618
  } else {
3887
3619
  return {
3888
3620
  text: text || "Classification",
3889
- icon: /* @__PURE__ */ jsx25("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx25("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "C" }) })
3621
+ icon: /* @__PURE__ */ jsx23("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent", children: /* @__PURE__ */ jsx23("span", { className: "text-[8px] font-bold text-ods-text-on-accent", children: "C" }) })
3890
3622
  };
3891
3623
  }
3892
3624
  }
3893
3625
  case "openframe_selected":
3894
3626
  return {
3895
3627
  text: text || "OpenFrame Selected",
3896
- icon: /* @__PURE__ */ jsx25(
3628
+ icon: /* @__PURE__ */ jsx23(
3897
3629
  OpenFrameLogo2,
3898
3630
  {
3899
3631
  lowerPathColor: "currentColor",
@@ -3910,19 +3642,19 @@ function VendorTag({ type, text, className = "", hidden = false, size = "md", ac
3910
3642
  }
3911
3643
  };
3912
3644
  const { text: displayText, icon, textColor } = getTagContent();
3913
- return /* @__PURE__ */ jsxs22("div", { className: cn(baseClasses, className, hidden && "invisible"), children: [
3645
+ return /* @__PURE__ */ jsxs20("div", { className: cn(baseClasses, className, hidden && "invisible"), children: [
3914
3646
  icon,
3915
- /* @__PURE__ */ jsx25("span", { className: cn("font-semibold text-h5", textColor ? textColor : "text-ods-text-primary"), children: displayText })
3647
+ /* @__PURE__ */ jsx23("span", { className: cn("font-semibold text-h5", textColor ? textColor : "text-ods-text-primary"), children: displayText })
3916
3648
  ] });
3917
3649
  }
3918
3650
 
3919
3651
  // src/components/selection-source-badge.tsx
3920
- import { jsx as jsx26 } from "react/jsx-runtime";
3652
+ import { jsx as jsx24 } from "react/jsx-runtime";
3921
3653
  function SelectionSourceBadge({ source, hidden = false }) {
3922
3654
  if (!source) {
3923
3655
  return null;
3924
3656
  }
3925
- return /* @__PURE__ */ jsx26(
3657
+ return /* @__PURE__ */ jsx24(
3926
3658
  VendorTag,
3927
3659
  {
3928
3660
  type: source?.toLowerCase(),
@@ -3933,596 +3665,33 @@ function SelectionSourceBadge({ source, hidden = false }) {
3933
3665
  );
3934
3666
  }
3935
3667
 
3936
- // src/components/loading/content-skeleton.tsx
3937
- import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
3938
- function ParagraphSkeleton({ className, lines = 4 }) {
3939
- const lineWidths = ["w-full", "w-full", "w-5/6", "w-3/4", "w-4/5", "w-2/3"];
3940
- return /* @__PURE__ */ jsx27("div", { className: cn("space-y-2", className), children: Array.from({ length: lines }).map((_, index) => /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: lineWidths[index % lineWidths.length] }, index)) });
3941
- }
3942
- function ListSkeleton({
3943
- className,
3944
- items = 5,
3945
- showIcons = false,
3946
- showActions = false
3947
- }) {
3948
- return /* @__PURE__ */ jsx27("div", { className: cn("space-y-3", className), children: Array.from({ length: items }).map((_, index) => /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between", children: [
3949
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
3950
- showIcons && /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
3951
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-32 md:w-48" })
3952
- ] }),
3953
- showActions && /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2", children: [
3954
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-8" }),
3955
- /* @__PURE__ */ jsx27(UnifiedSkeleton, { variant: "default", className: "h-4 w-4" })
3956
- ] })
3957
- ] }, index)) });
3958
- }
3959
- function TableSkeleton({
3960
- className,
3961
- rows = 5,
3962
- columns = 4
3963
- }) {
3964
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-4", className), children: [
3965
- /* @__PURE__ */ jsx27("div", { className: "grid gap-4", style: { gridTemplateColumns: `repeat(${columns}, 1fr)` }, children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "w-3/4" }, index)) }),
3966
- /* @__PURE__ */ jsx27("div", { className: "space-y-3", children: Array.from({ length: rows }).map((_, rowIndex) => /* @__PURE__ */ jsx27(
3967
- "div",
3968
- {
3969
- className: "grid gap-4 border-b border-ods-divider py-2",
3970
- style: { gridTemplateColumns: `repeat(${columns}, 1fr)` },
3971
- children: Array.from({ length: columns }).map((_cell, colIndex) => /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" }, colIndex))
3972
- },
3973
- rowIndex
3974
- )) })
3975
- ] });
3976
- }
3977
- function FormSkeleton({ className, fields = 4 }) {
3978
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-6", className), children: [
3979
- Array.from({ length: fields }).map((_, index) => /* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
3980
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-24" }),
3981
- /* @__PURE__ */ jsx27(InteractiveSkeleton.Input, {}),
3982
- index % 3 === 0 && /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-48" })
3983
- ] }, index)),
3984
- /* @__PURE__ */ jsxs23("div", { className: "flex gap-4 pt-4", children: [
3985
- /* @__PURE__ */ jsx27(InteractiveSkeleton.Button, {}),
3986
- /* @__PURE__ */ jsx27(InteractiveSkeleton.Button, { className: "bg-ods-border" })
3987
- ] })
3988
- ] });
3989
- }
3990
- function NavigationSkeleton({
3991
- className,
3992
- items = 6,
3993
- horizontal = true
3994
- }) {
3995
- return /* @__PURE__ */ jsx27(
3996
- "nav",
3997
- {
3998
- className: cn("flex gap-4 md:gap-6", !horizontal && "flex-col", className),
3999
- role: "status",
4000
- "aria-label": "Loading navigation",
4001
- children: Array.from({ length: items }).map((_, index) => /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-16 md:w-20" }, index))
4002
- }
4003
- );
4004
- }
4005
- function ProfileSkeleton({
4006
- className,
4007
- showBio = true,
4008
- showStats = true
4009
- }) {
4010
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-4", className), children: [
4011
- /* @__PURE__ */ jsxs23("div", { className: "flex items-start gap-4", children: [
4012
- /* @__PURE__ */ jsx27(MediaSkeleton.Avatar, { size: "lg" }),
4013
- /* @__PURE__ */ jsxs23("div", { className: "flex-1 space-y-2", children: [
4014
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "w-1/2" }),
4015
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-1/3" }),
4016
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" })
4017
- ] })
4018
- ] }),
4019
- showBio && /* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
4020
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-full" }),
4021
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-4/5" }),
4022
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-3/4" })
4023
- ] }),
4024
- showStats && /* @__PURE__ */ jsxs23("div", { className: "flex gap-6", children: [
4025
- /* @__PURE__ */ jsxs23("div", { className: "text-center", children: [
4026
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "mx-auto w-8" }),
4027
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "mx-auto w-12" })
4028
- ] }),
4029
- /* @__PURE__ */ jsxs23("div", { className: "text-center", children: [
4030
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "mx-auto w-8" }),
4031
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "mx-auto w-16" })
4032
- ] }),
4033
- /* @__PURE__ */ jsxs23("div", { className: "text-center", children: [
4034
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "mx-auto w-8" }),
4035
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "mx-auto w-14" })
4036
- ] })
4037
- ] })
4038
- ] });
4039
- }
4040
- function CommentSkeleton({
4041
- className,
4042
- showRating = false,
4043
- showReplies = false
4044
- }) {
4045
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-3", className), children: [
4046
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
4047
- /* @__PURE__ */ jsx27(MediaSkeleton.Avatar, { size: "sm" }),
4048
- /* @__PURE__ */ jsxs23("div", { className: "flex flex-1 items-center gap-4", children: [
4049
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-24" }),
4050
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-16" }),
4051
- showRating && /* @__PURE__ */ jsx27("div", { className: "flex gap-1", children: Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }, i)) })
4052
- ] })
4053
- ] }),
4054
- /* @__PURE__ */ jsxs23("div", { className: "ml-11 space-y-2", children: [
4055
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-full" }),
4056
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-3/4" }),
4057
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-1/2" })
4058
- ] }),
4059
- /* @__PURE__ */ jsxs23("div", { className: "ml-11 flex gap-4", children: [
4060
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-12" }),
4061
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-16" }),
4062
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-8" })
4063
- ] }),
4064
- showReplies && /* @__PURE__ */ jsx27("div", { className: "ml-11 space-y-4 border-l border-ods-divider pl-4", children: Array.from({ length: 2 }).map((_, index) => /* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
4065
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
4066
- /* @__PURE__ */ jsx27(MediaSkeleton.Avatar, { size: "sm" }),
4067
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-20" }),
4068
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-12" })
4069
- ] }),
4070
- /* @__PURE__ */ jsxs23("div", { className: "ml-11", children: [
4071
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-full" }),
4072
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" })
4073
- ] })
4074
- ] }, index)) })
4075
- ] });
4076
- }
4077
- function FeatureListSkeleton({
4078
- className,
4079
- features = 6,
4080
- showIcons = true,
4081
- grouped = false
4082
- }) {
4083
- if (grouped) {
4084
- return /* @__PURE__ */ jsx27("div", { className: cn("space-y-6", className), children: Array.from({ length: 3 }).map((_, groupIndex) => /* @__PURE__ */ jsxs23("div", { className: "space-y-3", children: [
4085
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "w-1/3" }),
4086
- /* @__PURE__ */ jsx27("div", { className: "space-y-2", children: Array.from({ length: features / 3 }).map((_feature, featureIndex) => /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
4087
- showIcons && /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
4088
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" })
4089
- ] }, featureIndex)) })
4090
- ] }, groupIndex)) });
4091
- }
4092
- return /* @__PURE__ */ jsx27("div", { className: cn("space-y-3", className), children: Array.from({ length: features }).map((_, index) => /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
4093
- showIcons && /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
4094
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" })
4095
- ] }, index)) });
4096
- }
4097
- function TimelineSkeleton({ className, items = 5 }) {
4098
- return /* @__PURE__ */ jsx27("div", { className: cn("space-y-6", className), children: Array.from({ length: items }).map((_, index) => /* @__PURE__ */ jsxs23("div", { className: "flex gap-4", children: [
4099
- /* @__PURE__ */ jsxs23("div", { className: "flex flex-col items-center", children: [
4100
- /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
4101
- index < items - 1 && /* @__PURE__ */ jsx27("div", { className: "mt-2 h-12 w-px bg-ods-border" })
4102
- ] }),
4103
- /* @__PURE__ */ jsxs23("div", { className: "flex-1 space-y-2", children: [
4104
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
4105
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-1/3" }),
4106
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-16" })
4107
- ] }),
4108
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-full" }),
4109
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-3/4" })
4110
- ] })
4111
- ] }, index)) });
4112
- }
4113
- function PricingSkeleton({ className, plans = 3 }) {
4114
- return /* @__PURE__ */ jsx27(
4115
- "div",
4116
- {
4117
- className: cn(
4118
- "grid gap-6",
4119
- plans === 2 && "grid-cols-1 md:grid-cols-2",
4120
- plans === 3 && "grid-cols-1 md:grid-cols-3",
4121
- plans === 4 && "grid-cols-1 md:grid-cols-2 lg:grid-cols-4",
4122
- className
4123
- ),
4124
- children: Array.from({ length: plans }).map((_, index) => /* @__PURE__ */ jsx27("div", { className: "rounded-lg border border-ods-border bg-ods-card p-6", children: /* @__PURE__ */ jsxs23("div", { className: "space-y-4", children: [
4125
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "w-1/2" }),
4126
- /* @__PURE__ */ jsxs23("div", { className: "space-y-1", children: [
4127
- /* @__PURE__ */ jsx27(TextSkeleton.Heading, { className: "w-1/3" }),
4128
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-1/4" })
4129
- ] }),
4130
- /* @__PURE__ */ jsx27("div", { className: "space-y-3 py-4", children: Array.from({ length: 5 }).map((_feature, featureIndex) => /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2", children: [
4131
- /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
4132
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-3/4" })
4133
- ] }, featureIndex)) }),
4134
- /* @__PURE__ */ jsx27(InteractiveSkeleton.Button, { className: "w-full" })
4135
- ] }) }, index))
4136
- }
4137
- );
4138
- }
4139
-
4140
- // src/components/profile/ProfileLoadingSkeleton.tsx
4141
- import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
4142
- function ProfileLoadingSkeleton({ className }) {
4143
- return /* @__PURE__ */ jsxs24("div", { className: cn("space-y-6", className), children: [
4144
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center space-x-4", children: [
4145
- /* @__PURE__ */ jsx28("div", { className: "h-16 w-16 animate-pulse rounded-full bg-ods-skeleton" }),
4146
- /* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
4147
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-32 animate-pulse rounded bg-ods-skeleton" }),
4148
- /* @__PURE__ */ jsx28("div", { className: "h-3 w-24 animate-pulse rounded bg-ods-skeleton" })
4149
- ] })
4150
- ] }),
4151
- /* @__PURE__ */ jsxs24("div", { className: "space-y-4", children: [
4152
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-full animate-pulse rounded bg-ods-skeleton" }),
4153
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-3/4 animate-pulse rounded bg-ods-skeleton" }),
4154
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-1/2 animate-pulse rounded bg-ods-skeleton" })
4155
- ] })
4156
- ] });
4157
- }
4158
-
4159
- // src/components/loading/msp-profile-form-skeleton.tsx
4160
- import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
4161
- function MspProfileFormSkeleton({ className, fields = 4 }) {
4162
- return /* @__PURE__ */ jsxs25(
4163
- "div",
4164
- {
4165
- className: cn("grid grid-cols-1 items-stretch gap-6 md:grid-cols-2", className),
4166
- role: "status",
4167
- "aria-label": "Loading MSP profile form",
4168
- children: [
4169
- /* @__PURE__ */ jsxs25("div", { className: "flex h-full flex-col space-y-2", children: [
4170
- /* @__PURE__ */ jsx29(TextSkeleton.Body, { className: "w-28" }),
4171
- /* @__PURE__ */ jsx29("div", { className: "min-h-[180px] flex-1 md:min-h-full", children: /* @__PURE__ */ jsx29(UnifiedSkeleton, { className: "h-full w-full rounded-lg", "aria-label": "Loading company logo" }) })
4172
- ] }),
4173
- /* @__PURE__ */ jsx29("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: Array.from({ length: fields }).map((_, idx) => /* @__PURE__ */ jsxs25("div", { className: "flex flex-col space-y-2", children: [
4174
- /* @__PURE__ */ jsx29(TextSkeleton.Body, { className: "w-40" }),
4175
- /* @__PURE__ */ jsx29(InteractiveSkeleton.Input, {})
4176
- ] }, idx)) })
4177
- ]
4178
- }
4179
- );
4180
- }
4181
-
4182
- // src/components/loading/category-card-skeleton.tsx
4183
- import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
4184
- function CategoryCardSkeleton({ className }) {
4185
- return /* @__PURE__ */ jsxs26(
4186
- "article",
4187
- {
4188
- className: cn(
4189
- "box-border flex min-w-0 flex-col rounded-[12px] border border-ods-border bg-ods-card p-8",
4190
- className
4191
- ),
4192
- role: "status",
4193
- "aria-label": "Loading category card",
4194
- children: [
4195
- /* @__PURE__ */ jsx30("div", { className: "mb-8 flex items-center justify-center gap-6", children: Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ jsx30(UnifiedSkeleton, { variant: "circular", className: "h-10 w-10 flex-shrink-0", "aria-label": "Loading icon" }, i)) }),
4196
- /* @__PURE__ */ jsxs26("div", { className: "flex flex-1 flex-col space-y-3", children: [
4197
- /* @__PURE__ */ jsx30(TextSkeleton.Heading, { className: "w-3/4" }),
4198
- /* @__PURE__ */ jsx30(TextSkeleton.Body, { className: "w-1/2" }),
4199
- /* @__PURE__ */ jsx30(TextSkeleton.Body, { className: "w-full" })
4200
- ] }),
4201
- /* @__PURE__ */ jsx30("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ jsx30(UnifiedSkeleton, { className: "h-12 w-12 rounded-[6px]", "aria-label": "Loading button" }) })
4202
- ]
4203
- }
4204
- );
4205
- }
4206
-
4207
- // src/components/loading/category-vendor-selector-skeleton.tsx
4208
- import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
4209
- function CategoryVendorSelectorSkeleton({ subcategories = 3, className }) {
4210
- return /* @__PURE__ */ jsxs27(
4211
- "div",
4212
- {
4213
- className: cn("rounded-lg border border-ods-border bg-ods-card p-6", className),
4214
- role: "status",
4215
- "aria-label": "Loading category section",
4216
- children: [
4217
- /* @__PURE__ */ jsxs27("div", { className: "mb-6 max-w-xl space-y-2", children: [
4218
- /* @__PURE__ */ jsx31(TextSkeleton.Heading, { className: "w-1/2" }),
4219
- /* @__PURE__ */ jsx31(TextSkeleton.Body, { className: "w-3/4" })
4220
- ] }),
4221
- /* @__PURE__ */ jsx31("div", { className: "space-y-6", children: Array.from({ length: subcategories }).map((_, idx) => /* @__PURE__ */ jsxs27("div", { className: "space-y-2", children: [
4222
- /* @__PURE__ */ jsx31(TextSkeleton.Subheading, { className: "w-1/3" }),
4223
- /* @__PURE__ */ jsx31("div", { className: "grid grid-cols-2 gap-4 md:grid-cols-3", children: Array.from({ length: 2 }).map((__, j) => /* @__PURE__ */ jsx31(UnifiedSkeleton, { className: "h-20 rounded-lg" }, j)) })
4224
- ] }, idx)) })
4225
- ]
4226
- }
4227
- );
4228
- }
4229
-
4230
- // src/components/loading/wizard-layout-skeleton.tsx
4231
- import { jsx as jsx32, jsxs as jsxs28 } from "react/jsx-runtime";
4232
- function WizardLayoutSkeleton({ steps = 6, className }) {
4233
- return /* @__PURE__ */ jsxs28("div", { className: cn("space-y-6", className), role: "status", "aria-label": "Loading wizard layout", children: [
4234
- /* @__PURE__ */ jsx32("div", { className: "flex flex-wrap items-center gap-2", children: Array.from({ length: steps }).map((_, i) => /* @__PURE__ */ jsx32(UnifiedSkeleton, { className: "h-6 w-24 rounded" }, i)) }),
4235
- /* @__PURE__ */ jsxs28("div", { className: "max-w-2xl space-y-2", children: [
4236
- /* @__PURE__ */ jsx32(TextSkeleton.Heading, { className: "w-2/3" }),
4237
- /* @__PURE__ */ jsx32(TextSkeleton.Body, { className: "w-1/2" })
4238
- ] }),
4239
- /* @__PURE__ */ jsxs28("div", { className: "mt-10 flex justify-between", children: [
4240
- /* @__PURE__ */ jsx32(UnifiedSkeleton, { className: "h-10 w-24 rounded" }),
4241
- /* @__PURE__ */ jsx32(UnifiedSkeleton, { className: "h-10 w-32 rounded" })
4242
- ] })
4243
- ] });
4244
- }
4245
-
4246
- // src/components/loading/margin-report-skeleton.tsx
4247
- import { jsx as jsx33, jsxs as jsxs29 } from "react/jsx-runtime";
4248
- function MarginReportSkeleton({ animate = true, description, overlayContent }) {
4249
- return /* @__PURE__ */ jsxs29("main", { className: `bg-ods-bg ${animate ? "animate-pulse" : ""} relative min-h-screen`, children: [
4250
- /* @__PURE__ */ jsxs29("div", { className: "mx-auto max-w-[1920px] space-y-10 px-6 py-6 md:px-20 md:py-10", children: [
4251
- /* @__PURE__ */ jsxs29("div", { className: "space-y-3", children: [
4252
- /* @__PURE__ */ jsx33("div", { className: "h-10 w-72 rounded bg-ods-skeleton" }),
4253
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-80 rounded bg-ods-skeleton" })
4254
- ] }),
4255
- /* @__PURE__ */ jsx33("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-3", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsx33("div", { className: "h-32 rounded border border-ods-border bg-ods-card" }, i)) }),
4256
- /* @__PURE__ */ jsxs29("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: [
4257
- /* @__PURE__ */ jsxs29("div", { className: "flex animate-pulse items-center gap-4 rounded-lg border border-ods-border bg-ods-card p-6", children: [
4258
- /* @__PURE__ */ jsx33("div", { className: "h-14 w-14 rounded-lg bg-ods-skeleton" }),
4259
- /* @__PURE__ */ jsxs29("div", { className: "flex-1 space-y-2", children: [
4260
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-3/4 rounded bg-ods-skeleton" }),
4261
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-1/2 rounded bg-ods-skeleton" })
4262
- ] })
4263
- ] }),
4264
- /* @__PURE__ */ jsxs29("div", { className: "flex animate-pulse flex-col gap-4 rounded-lg border border-ods-border bg-ods-card p-6", children: [
4265
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center justify-between gap-4", children: [
4266
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
4267
- /* @__PURE__ */ jsx33("div", { className: "h-10 w-10 rounded-lg bg-ods-skeleton" }),
4268
- /* @__PURE__ */ jsxs29("div", { className: "space-y-1", children: [
4269
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-32 rounded bg-ods-skeleton" }),
4270
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-20 rounded bg-ods-skeleton" })
4271
- ] })
4272
- ] }),
4273
- /* @__PURE__ */ jsx33("div", { className: "h-6 w-36 rounded bg-ods-skeleton" })
4274
- ] }),
4275
- /* @__PURE__ */ jsx33("div", { className: "mt-4 h-4 w-40 rounded bg-ods-skeleton" })
4276
- ] })
4277
- ] }),
4278
- /* @__PURE__ */ jsx33("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: ["Commercial Stack", "Open-Source Stack"].map((label, idx) => /* @__PURE__ */ jsxs29(
4279
- "div",
4280
- {
4281
- className: "flex animate-pulse flex-col overflow-hidden rounded-lg border border-ods-border bg-ods-card",
4282
- children: [
4283
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center justify-between px-6 py-4", children: [
4284
- /* @__PURE__ */ jsx33("div", { className: "h-6 w-40 rounded bg-ods-skeleton" }),
4285
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
4286
- /* @__PURE__ */ jsx33("div", { className: "h-5 w-20 rounded bg-ods-skeleton" }),
4287
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-10 rounded bg-ods-skeleton" })
4288
- ] })
4289
- ] }),
4290
- /* @__PURE__ */ jsx33("div", { className: "flex flex-1 flex-col gap-3 p-3", children: Array.from({ length: 5 }).map((_, j) => /* @__PURE__ */ jsxs29(
4291
- "div",
4292
- {
4293
- className: "flex items-center justify-between rounded-lg border border-ods-border bg-ods-bg px-4 py-3",
4294
- children: [
4295
- /* @__PURE__ */ jsxs29("div", { className: "flex min-w-0 items-center gap-3", children: [
4296
- /* @__PURE__ */ jsx33("div", { className: "h-12 w-12 flex-shrink-0 rounded-lg bg-ods-skeleton" }),
4297
- /* @__PURE__ */ jsxs29("div", { className: "flex min-w-0 flex-col", children: [
4298
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-32 rounded bg-ods-skeleton" }),
4299
- /* @__PURE__ */ jsx33("div", { className: "mt-1 hidden h-3 w-24 rounded bg-ods-skeleton md:block" })
4300
- ] })
4301
- ] }),
4302
- /* @__PURE__ */ jsxs29("div", { className: "flex flex-shrink-0 items-center gap-1", children: [
4303
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-16 rounded bg-ods-skeleton" }),
4304
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-8 rounded bg-ods-skeleton" })
4305
- ] })
4306
- ]
4307
- },
4308
- j
4309
- )) })
4310
- ]
4311
- },
4312
- idx
4313
- )) }),
4314
- /* @__PURE__ */ jsx33("div", { className: "h-6 w-60 rounded bg-ods-skeleton" }),
4315
- /* @__PURE__ */ jsx33("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsx33("div", { className: "h-48 rounded border border-ods-border bg-ods-card" }, i)) }),
4316
- /* @__PURE__ */ jsxs29("div", { className: "space-y-6 rounded-3xl border border-ods-border p-8", children: [
4317
- /* @__PURE__ */ jsxs29("div", { className: "flex items-start gap-6", children: [
4318
- /* @__PURE__ */ jsxs29("div", { className: "min-w-0 flex-1 space-y-2", children: [
4319
- /* @__PURE__ */ jsx33("div", { className: "h-8 w-72 rounded bg-ods-skeleton" }),
4320
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-3/4 rounded bg-ods-skeleton" })
4321
- ] }),
4322
- /* @__PURE__ */ jsx33("div", { className: "h-12 w-12 shrink-0 rounded-md bg-ods-skeleton" })
4323
- ] }),
4324
- /* @__PURE__ */ jsx33("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsx33("div", { className: "h-32 rounded border border-ods-border bg-ods-card" }, i)) })
4325
- ] })
4326
- ] }),
4327
- overlayContent && /* @__PURE__ */ jsx33("div", { className: "pointer-events-none absolute inset-0 z-10 rounded-lg bg-ods-card/80", children: /* @__PURE__ */ jsxs29("div", { className: "pointer-events-auto fixed left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 flex-col items-center gap-4 px-4 text-center", children: [
4328
- description && /* @__PURE__ */ jsx33("h3", { children: description }),
4329
- overlayContent
4330
- ] }) })
4331
- ] });
4332
- }
4333
-
4334
- // src/components/loading/users-grid-skeleton.tsx
4335
- import { jsx as jsx34, jsxs as jsxs30 } from "react/jsx-runtime";
4336
- function UsersGridSkeleton({ rows = 10, className }) {
4337
- const skeletonRows = Array.from({ length: rows });
4338
- return /* @__PURE__ */ jsx34("div", { className: cn("animate-pulse overflow-x-auto rounded-lg border border-ods-border bg-ods-card", className), children: /* @__PURE__ */ jsxs30("table", { className: "min-w-full divide-y divide-ods-border", children: [
4339
- /* @__PURE__ */ jsx34("thead", { className: "bg-ods-skeleton", children: /* @__PURE__ */ jsx34("tr", { children: ["Name", "Email", "Role", "Created", "Last Sign-In"].map((h) => /* @__PURE__ */ jsx34("th", { className: "px-4 py-3 text-left text-ods-text-primary text-h6", children: h }, h)) }) }),
4340
- /* @__PURE__ */ jsx34("tbody", { className: "divide-y divide-ods-border", children: skeletonRows.map((_, idx) => /* @__PURE__ */ jsx34("tr", { children: Array.from({ length: 5 }).map((__, cell) => /* @__PURE__ */ jsx34("td", { className: "whitespace-nowrap px-4 py-3", children: /* @__PURE__ */ jsx34("div", { className: "h-4 w-full rounded bg-ods-border" }) }, cell)) }, idx)) })
4341
- ] }) });
4342
- }
4343
-
4344
- // src/components/loading/organization-icon-skeleton.tsx
4345
- import { jsx as jsx35 } from "react/jsx-runtime";
4346
- var sizeClasses2 = {
4347
- xs: "w-6 h-6",
4348
- sm: "w-8 h-8",
4349
- md: "w-10 h-10",
4350
- lg: "w-12 h-12",
4351
- l: "w-14 h-14",
4352
- xl: "w-16 h-16"
4353
- };
4354
- var backgroundClasses2 = {
4355
- dark: "bg-ods-bg border border-ods-border",
4356
- light: "bg-ods-card border border-ods-border",
4357
- white: "bg-white border border-[#E5E5E5]"
4358
- };
4359
- function OrganizationIconSkeleton({
4360
- size = "md",
4361
- className = "",
4362
- showBackground = true,
4363
- backgroundStyle = "dark"
4364
- }) {
4365
- const containerClasses = cn(
4366
- sizeClasses2[size],
4367
- "flex flex-shrink-0 items-center justify-center rounded-lg",
4368
- showBackground && backgroundClasses2[backgroundStyle],
4369
- !showBackground && "overflow-hidden",
4370
- className
4371
- );
4372
- return /* @__PURE__ */ jsx35("div", { className: containerClasses, role: "status", "aria-label": "Loading organization icon", children: /* @__PURE__ */ jsx35("div", { className: "h-1/2 w-1/2 animate-pulse rounded-sm bg-ods-border" }) });
4373
- }
4374
-
4375
- // src/components/loading/organization-card-skeleton.tsx
4376
- import { jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
4377
- function OrganizationCardSkeleton({
4378
- className,
4379
- containerClassName,
4380
- showFooter = true,
4381
- showDescription = true
4382
- }) {
4383
- return /* @__PURE__ */ jsx36(
4384
- "div",
4385
- {
4386
- className: cn(
4387
- containerClassName || "border border-ods-border bg-ods-card",
4388
- "flex h-full flex-col overflow-hidden rounded-lg",
4389
- className
4390
- ),
4391
- role: "status",
4392
- "aria-label": "Loading organization card",
4393
- children: /* @__PURE__ */ jsxs31("div", { className: "flex flex-col gap-3 p-4", children: [
4394
- /* @__PURE__ */ jsxs31("div", { className: "flex w-full items-start gap-3", children: [
4395
- /* @__PURE__ */ jsx36(
4396
- OrganizationIconSkeleton,
4397
- {
4398
- size: "xl",
4399
- backgroundStyle: "dark",
4400
- showBackground: true,
4401
- className: "h-[60px] w-[60px]"
4402
- }
4403
- ),
4404
- /* @__PURE__ */ jsxs31("div", { className: "flex min-w-0 flex-1 flex-col justify-center space-y-1 py-2", children: [
4405
- /* @__PURE__ */ jsx36(TextSkeleton.Subheading, { className: "w-3/4" }),
4406
- /* @__PURE__ */ jsx36(TextSkeleton.Caption, { className: "w-1/2" })
4407
- ] })
4408
- ] }),
4409
- showDescription && /* @__PURE__ */ jsx36("div", { className: "flex h-12 w-full items-center overflow-hidden", children: /* @__PURE__ */ jsxs31("div", { className: "w-full space-y-1", children: [
4410
- /* @__PURE__ */ jsx36(TextSkeleton.Body, { className: "w-full" }),
4411
- /* @__PURE__ */ jsx36(TextSkeleton.Body, { className: "w-2/3" })
4412
- ] }) }),
4413
- showFooter && /* @__PURE__ */ jsxs31("div", { className: "flex w-full min-w-0 items-center justify-between gap-2", children: [
4414
- /* @__PURE__ */ jsxs31("div", { className: "flex min-w-0 flex-shrink items-center gap-3 md:gap-4", children: [
4415
- /* @__PURE__ */ jsxs31("div", { className: "flex flex-shrink-0 items-center gap-1", children: [
4416
- /* @__PURE__ */ jsx36(MediaSkeleton.Icon, { size: "sm", className: "h-5 w-5" }),
4417
- /* @__PURE__ */ jsx36(TextSkeleton.Caption, { className: "w-8" })
4418
- ] }),
4419
- /* @__PURE__ */ jsxs31("div", { className: "flex flex-shrink-0 items-center gap-1", children: [
4420
- /* @__PURE__ */ jsx36(MediaSkeleton.Icon, { size: "sm", className: "h-5 w-5" }),
4421
- /* @__PURE__ */ jsx36(TextSkeleton.Caption, { className: "w-10" })
4422
- ] })
4423
- ] }),
4424
- /* @__PURE__ */ jsx36("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-1.5 rounded border border-ods-border bg-ods-bg px-2.5 py-1.5", children: [
4425
- /* @__PURE__ */ jsx36("div", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-border", children: /* @__PURE__ */ jsx36(MediaSkeleton.Icon, { size: "sm", className: "h-2.5 w-2.5" }) }),
4426
- /* @__PURE__ */ jsx36(TextSkeleton.Caption, { className: "w-16" })
4427
- ] }) })
4428
- ] })
4429
- ] })
4430
- }
4431
- );
4432
- }
4433
- function OrganizationCardSkeletonGrid({
4434
- count = 12,
4435
- className,
4436
- containerClassName,
4437
- showFooter = true,
4438
- showDescription = true
4439
- }) {
4440
- return /* @__PURE__ */ jsx36(
4441
- "div",
4442
- {
4443
- className: cn("grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6 lg:grid-cols-3", className),
4444
- role: "status",
4445
- "aria-label": `Loading ${count} organization cards`,
4446
- children: Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsx36(
4447
- OrganizationCardSkeleton,
4448
- {
4449
- containerClassName,
4450
- showFooter,
4451
- showDescription
4452
- },
4453
- index
4454
- ))
4455
- }
4456
- );
4457
- }
4458
-
4459
- // src/components/loading/device-card-skeleton.tsx
4460
- import { jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
4461
- function DeviceCardSkeleton({ className }) {
4462
- return /* @__PURE__ */ jsxs32(
4463
- "div",
4464
- {
4465
- className: cn("h-full rounded-[6px] border border-ods-border bg-ods-card", className),
4466
- role: "status",
4467
- "aria-label": "Loading device card",
4468
- children: [
4469
- /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-4 px-4 py-3", children: [
4470
- /* @__PURE__ */ jsx37("div", { className: "flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-[6px] border border-ods-border bg-ods-bg", children: /* @__PURE__ */ jsx37("div", { className: "h-4 w-4 animate-pulse rounded bg-ods-border" }) }),
4471
- /* @__PURE__ */ jsx37("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx37("div", { className: "h-6 w-3/4 animate-pulse rounded bg-ods-border" }) }),
4472
- /* @__PURE__ */ jsx37("div", { className: "h-12 w-12 flex-shrink-0 animate-pulse rounded-[6px] bg-ods-border" })
4473
- ] }),
4474
- /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-4 px-4 py-2", children: [
4475
- /* @__PURE__ */ jsx37("div", { className: "h-6 w-24 flex-shrink-0 animate-pulse rounded bg-ods-border" }),
4476
- /* @__PURE__ */ jsx37(OrganizationIconSkeleton, { size: "sm" }),
4477
- /* @__PURE__ */ jsx37("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx37("div", { className: "h-5 w-1/2 animate-pulse rounded bg-ods-border" }) })
4478
- ] }),
4479
- /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-4 px-4 py-2", children: [
4480
- /* @__PURE__ */ jsx37("div", { className: "h-6 w-20 flex-shrink-0 animate-pulse rounded-full bg-ods-border" }),
4481
- /* @__PURE__ */ jsx37("div", { className: "flex-1", children: /* @__PURE__ */ jsx37("div", { className: "h-5 w-40 animate-pulse rounded bg-ods-border" }) })
4482
- ] })
4483
- ]
4484
- }
4485
- );
4486
- }
4487
- function DeviceCardSkeletonGrid({ count = 12, className }) {
4488
- return /* @__PURE__ */ jsx37(
4489
- "div",
4490
- {
4491
- className: cn("grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4", className),
4492
- role: "status",
4493
- "aria-label": `Loading ${count} device cards`,
4494
- children: Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsx37(DeviceCardSkeleton, {}, index))
4495
- }
4496
- );
4497
- }
4498
-
4499
3668
  // src/components/vendor-page-skeleton.tsx
4500
- import { jsx as jsx38 } from "react/jsx-runtime";
3669
+ import { jsx as jsx25 } from "react/jsx-runtime";
4501
3670
  function VendorPageSkeleton() {
4502
- return /* @__PURE__ */ jsx38(VendorDetailLayoutSkeleton, {});
3671
+ return /* @__PURE__ */ jsx25(VendorDetailLayoutSkeleton, {});
4503
3672
  }
4504
3673
 
4505
3674
  // src/components/why-it-matters.tsx
4506
- import { jsx as jsx39, jsxs as jsxs33 } from "react/jsx-runtime";
3675
+ import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
4507
3676
 
4508
3677
  // src/components/yes-no-display.tsx
4509
- import { jsx as jsx40, jsxs as jsxs34 } from "react/jsx-runtime";
3678
+ import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
4510
3679
  function YesNoDisplay({ value, yesText = "Yes", noText = "No", customText, className = "" }) {
4511
3680
  if (customText) {
4512
- return /* @__PURE__ */ jsxs34("div", { className: `flex items-center gap-2 ${className}`, children: [
4513
- /* @__PURE__ */ jsx40(CheckCircleIcon2, { className: "h-6 w-6" }),
4514
- /* @__PURE__ */ jsx40("span", { className: "text-ods-text-primary text-h6", children: customText })
3681
+ return /* @__PURE__ */ jsxs22("div", { className: `flex items-center gap-2 ${className}`, children: [
3682
+ /* @__PURE__ */ jsx27(CheckCircleIcon2, { className: "h-6 w-6" }),
3683
+ /* @__PURE__ */ jsx27("span", { className: "text-ods-text-primary text-h6", children: customText })
4515
3684
  ] });
4516
3685
  }
4517
3686
  if (value) {
4518
- return /* @__PURE__ */ jsxs34("div", { className: `flex items-center gap-2 ${className}`, children: [
4519
- /* @__PURE__ */ jsx40(CheckCircleIcon2, { className: "h-6 w-6" }),
4520
- /* @__PURE__ */ jsx40("span", { className: "text-ods-text-primary text-h6", children: yesText })
3687
+ return /* @__PURE__ */ jsxs22("div", { className: `flex items-center gap-2 ${className}`, children: [
3688
+ /* @__PURE__ */ jsx27(CheckCircleIcon2, { className: "h-6 w-6" }),
3689
+ /* @__PURE__ */ jsx27("span", { className: "text-ods-text-primary text-h6", children: yesText })
4521
3690
  ] });
4522
3691
  }
4523
- return /* @__PURE__ */ jsxs34("div", { className: `flex items-center gap-2 ${className}`, children: [
4524
- /* @__PURE__ */ jsx40(XCircleIcon, { className: "h-6 w-6" }),
4525
- /* @__PURE__ */ jsx40("span", { className: "text-ods-text-secondary text-h6", children: noText })
3692
+ return /* @__PURE__ */ jsxs22("div", { className: `flex items-center gap-2 ${className}`, children: [
3693
+ /* @__PURE__ */ jsx27(XCircleIcon, { className: "h-6 w-6" }),
3694
+ /* @__PURE__ */ jsx27("span", { className: "text-ods-text-secondary text-h6", children: noText })
4526
3695
  ] });
4527
3696
  }
4528
3697
  function evaluateFeatureValue(value, dataType) {
@@ -4557,7 +3726,7 @@ function evaluateFeatureValue(value, dataType) {
4557
3726
 
4558
3727
  // src/components/made-with-love.tsx
4559
3728
  import { useState as useState6, useEffect as useEffect3 } from "react";
4560
- import { jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
3729
+ import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
4561
3730
  function MadeWithLove({ className = "", size = "md", showOnMobile = true }) {
4562
3731
  const [isMobile, setIsMobile] = useState6(false);
4563
3732
  const [isHovered, setIsHovered] = useState6(false);
@@ -4627,9 +3796,9 @@ function MadeWithLove({ className = "", size = "md", showOnMobile = true }) {
4627
3796
  marginLeft: "4px",
4628
3797
  textDecoration: "none"
4629
3798
  };
4630
- return /* @__PURE__ */ jsxs35("div", { style: containerStyle, className, children: [
3799
+ return /* @__PURE__ */ jsxs23("div", { style: containerStyle, className, children: [
4631
3800
  "Made with love by",
4632
- /* @__PURE__ */ jsxs35(
3801
+ /* @__PURE__ */ jsxs23(
4633
3802
  "a",
4634
3803
  {
4635
3804
  href: flamingoUrl,
@@ -4639,14 +3808,14 @@ function MadeWithLove({ className = "", size = "md", showOnMobile = true }) {
4639
3808
  onMouseEnter: () => setIsHovered(true),
4640
3809
  onMouseLeave: () => setIsHovered(false),
4641
3810
  children: [
4642
- /* @__PURE__ */ jsx41("div", { style: logoStyle, children: /* @__PURE__ */ jsx41(
3811
+ /* @__PURE__ */ jsx28("div", { style: logoStyle, children: /* @__PURE__ */ jsx28(
4643
3812
  FlamingoLogo2,
4644
3813
  {
4645
3814
  size: config.logoSize,
4646
3815
  color: "#f357bb"
4647
3816
  }
4648
3817
  ) }),
4649
- /* @__PURE__ */ jsx41("span", { style: textStyle, children: "Flamingo" })
3818
+ /* @__PURE__ */ jsx28("span", { style: textStyle, children: "Flamingo" })
4650
3819
  ]
4651
3820
  }
4652
3821
  )
@@ -4655,7 +3824,7 @@ function MadeWithLove({ className = "", size = "md", showOnMobile = true }) {
4655
3824
 
4656
3825
  // src/components/date-time-picker.tsx
4657
3826
  import DatePicker2 from "react-datepicker";
4658
- import { jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
3827
+ import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
4659
3828
  var inputClassName = cn(
4660
3829
  "flex h-10 w-full rounded-md border px-3 py-2 text-sm ring-offset-background",
4661
3830
  "file:border-0 file:bg-transparent file:text-sm file:font-medium",
@@ -4679,9 +3848,9 @@ function DateTimePicker({
4679
3848
  timeIntervals = 15,
4680
3849
  dateFormat = "MMMM d, yyyy h:mm aa"
4681
3850
  }) {
4682
- return /* @__PURE__ */ jsxs36("div", { className: cn("space-y-2", className), children: [
4683
- label && /* @__PURE__ */ jsx42(Label, { className: "font-semibold text-ods-text-secondary text-h5", children: label }),
4684
- /* @__PURE__ */ jsx42("div", { className: "w-full", children: /* @__PURE__ */ jsx42(
3851
+ return /* @__PURE__ */ jsxs24("div", { className: cn("space-y-2", className), children: [
3852
+ label && /* @__PURE__ */ jsx29(Label, { className: "font-semibold text-ods-text-secondary text-h5", children: label }),
3853
+ /* @__PURE__ */ jsx29("div", { className: "w-full", children: /* @__PURE__ */ jsx29(
4685
3854
  DatePicker2,
4686
3855
  {
4687
3856
  selected: value,
@@ -4696,7 +3865,7 @@ function DateTimePicker({
4696
3865
  className: inputClassName
4697
3866
  }
4698
3867
  ) }),
4699
- /* @__PURE__ */ jsx42(
3868
+ /* @__PURE__ */ jsx29(
4700
3869
  "style",
4701
3870
  {
4702
3871
  dangerouslySetInnerHTML: {
@@ -4807,7 +3976,7 @@ function DateTimePicker({
4807
3976
  }
4808
3977
 
4809
3978
  // src/components/authors/author-detail-view.tsx
4810
- import { jsx as jsx43, jsxs as jsxs37 } from "react/jsx-runtime";
3979
+ import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
4811
3980
  function AuthorDetailView({ author, proxyImageUrl, children, className }) {
4812
3981
  const runtime = useChatRuntime();
4813
3982
  const proxiedAvatar = author.avatarUrl ? proxyImageUrl ? proxyImageUrl(author.avatarUrl) : getProxiedImageUrl(author.avatarUrl, {
@@ -4817,14 +3986,14 @@ function AuthorDetailView({ author, proxyImageUrl, children, className }) {
4817
3986
  }) ?? author.avatarUrl : null;
4818
3987
  const subtitle = [author.jobTitle, author.company].filter(Boolean).join(" @ ");
4819
3988
  const bioText = formatBioText(author.about);
4820
- return /* @__PURE__ */ jsxs37("div", { className: cn("flex flex-col gap-5 md:gap-6", className), children: [
4821
- /* @__PURE__ */ jsxs37("div", { className: "flex w-full items-start gap-6", children: [
4822
- /* @__PURE__ */ jsx43("div", { className: "relative h-24 w-24 shrink-0", children: /* @__PURE__ */ jsx43("div", { className: "relative h-full w-full overflow-hidden rounded-full border border-ods-border bg-ods-bg-surface", children: proxiedAvatar ? /* @__PURE__ */ jsx43(next_image_default, { src: proxiedAvatar, alt: author.fullName, fill: true, className: "object-cover", unoptimized: true }) : /* @__PURE__ */ jsx43("div", { className: "flex h-full w-full items-center justify-center font-heading text-3xl text-ods-text-secondary", children: author.fullName.charAt(0).toUpperCase() }) }) }),
4823
- /* @__PURE__ */ jsxs37("div", { className: "flex min-w-0 flex-col justify-center gap-2", children: [
4824
- /* @__PURE__ */ jsx43("p", { className: "truncate leading-none text-ods-text-primary text-h2", children: author.fullName }),
4825
- subtitle && /* @__PURE__ */ jsx43("p", { className: "truncate font-body text-lg leading-none text-ods-text-secondary", children: subtitle }),
3989
+ return /* @__PURE__ */ jsxs25("div", { className: cn("flex flex-col gap-5 md:gap-6", className), children: [
3990
+ /* @__PURE__ */ jsxs25("div", { className: "flex w-full items-start gap-6", children: [
3991
+ /* @__PURE__ */ jsx30("div", { className: "relative h-24 w-24 shrink-0", children: /* @__PURE__ */ jsx30("div", { className: "relative h-full w-full overflow-hidden rounded-full border border-ods-border bg-ods-bg-surface", children: proxiedAvatar ? /* @__PURE__ */ jsx30(next_image_default, { src: proxiedAvatar, alt: author.fullName, fill: true, className: "object-cover", unoptimized: true }) : /* @__PURE__ */ jsx30("div", { className: "flex h-full w-full items-center justify-center font-heading text-3xl text-ods-text-secondary", children: author.fullName.charAt(0).toUpperCase() }) }) }),
3992
+ /* @__PURE__ */ jsxs25("div", { className: "flex min-w-0 flex-col justify-center gap-2", children: [
3993
+ /* @__PURE__ */ jsx30("p", { className: "truncate leading-none text-ods-text-primary text-h2", children: author.fullName }),
3994
+ subtitle && /* @__PURE__ */ jsx30("p", { className: "truncate font-body text-lg leading-none text-ods-text-secondary", children: subtitle }),
4826
3995
  author.socialLinks.length > 0 && // Ghost compact row (transparent 32px) — metadata, not CTAs.
4827
- /* @__PURE__ */ jsx43(
3996
+ /* @__PURE__ */ jsx30(
4828
3997
  SocialIconRow,
4829
3998
  {
4830
3999
  compact: true,
@@ -4837,8 +4006,8 @@ function AuthorDetailView({ author, proxyImageUrl, children, className }) {
4837
4006
  )
4838
4007
  ] })
4839
4008
  ] }),
4840
- bioText && /* @__PURE__ */ jsx43("p", { className: "text-ods-text-secondary text-h6", children: bioText }),
4841
- author.knowsAbout.length > 0 && /* @__PURE__ */ jsx43("div", { className: "flex flex-wrap gap-2", children: author.knowsAbout.map((topic) => /* @__PURE__ */ jsx43(StatusBadge, { text: topic, variant: "button", colorScheme: "cyan", singleLine: true }, topic)) }),
4009
+ bioText && /* @__PURE__ */ jsx30("p", { className: "text-ods-text-secondary text-h6", children: bioText }),
4010
+ author.knowsAbout.length > 0 && /* @__PURE__ */ jsx30("div", { className: "flex flex-wrap gap-2", children: author.knowsAbout.map((topic) => /* @__PURE__ */ jsx30(StatusBadge, { text: topic, variant: "button", colorScheme: "cyan", singleLine: true }, topic)) }),
4842
4011
  children
4843
4012
  ] });
4844
4013
  }