@flamingo-stack/openframe-frontend-core 0.0.581 → 0.0.582-1958.5391.1

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-HVSZYUGP.js → chunk-53ZVUW2M.js} +5 -5
  4. package/dist/{chunk-R5JVRFSW.js → chunk-5U2FU5LM.js} +3 -3
  5. package/dist/{chunk-AIALG25H.cjs → chunk-7WE6FGGK.cjs} +69 -69
  6. package/dist/{chunk-AIALG25H.cjs.map → chunk-7WE6FGGK.cjs.map} +1 -1
  7. package/dist/{chunk-EZVABFEO.js → chunk-CJW6KZD3.js} +2 -2
  8. package/dist/{chunk-GMQEHDN2.cjs → chunk-E4TK2BBD.cjs} +5 -5
  9. package/dist/{chunk-GMQEHDN2.cjs.map → chunk-E4TK2BBD.cjs.map} +1 -1
  10. package/dist/{chunk-KAEVE7W2.js → chunk-EULY3BXB.js} +2 -2
  11. package/dist/{chunk-HJVKPG55.js → chunk-F227VMPL.js} +125 -15
  12. package/dist/{chunk-HJVKPG55.js.map → chunk-F227VMPL.js.map} +1 -1
  13. package/dist/{chunk-GVM37TRU.js → chunk-GAL6EXUY.js} +4 -4
  14. package/dist/{chunk-ZEZMGXYV.js → chunk-H7K76TPX.js} +5 -5
  15. package/dist/{chunk-U3W2ZVN4.cjs → chunk-HMEEW73F.cjs} +2058 -300
  16. package/dist/chunk-HMEEW73F.cjs.map +1 -0
  17. package/dist/{chunk-LWDIDSCF.js → chunk-IB23CRL2.js} +3 -3
  18. package/dist/{chunk-6U45VX5J.cjs → chunk-IVJ6TBVW.cjs} +43 -43
  19. package/dist/{chunk-6U45VX5J.cjs.map → chunk-IVJ6TBVW.cjs.map} +1 -1
  20. package/dist/{chunk-JW53WPB5.js → chunk-IZGXIZWF.js} +3 -3
  21. package/dist/chunk-JMWLF2GL.cjs +1055 -0
  22. package/dist/chunk-JMWLF2GL.cjs.map +1 -0
  23. package/dist/{chunk-OKA3DJJ3.js → chunk-JUXCEHK2.js} +2 -2
  24. package/dist/{chunk-GUC4JK6O.cjs → chunk-KS7NKONC.cjs} +9 -9
  25. package/dist/{chunk-GUC4JK6O.cjs.map → chunk-KS7NKONC.cjs.map} +1 -1
  26. package/dist/{chunk-WHFEG6UU.cjs → chunk-LHQ6RVFE.cjs} +22 -22
  27. package/dist/{chunk-WHFEG6UU.cjs.map → chunk-LHQ6RVFE.cjs.map} +1 -1
  28. package/dist/{chunk-YU2UJPAT.cjs → chunk-LOJ5KQ6B.cjs} +466 -356
  29. package/dist/chunk-LOJ5KQ6B.cjs.map +1 -0
  30. package/dist/{chunk-BTKMTVN5.cjs → chunk-M3ERSHPM.cjs} +4 -4
  31. package/dist/{chunk-BTKMTVN5.cjs.map → chunk-M3ERSHPM.cjs.map} +1 -1
  32. package/dist/{chunk-KNBXZ22O.cjs → chunk-RBMVTCRM.cjs} +3 -3
  33. package/dist/{chunk-KNBXZ22O.cjs.map → chunk-RBMVTCRM.cjs.map} +1 -1
  34. package/dist/{chunk-PBRXT7TD.cjs → chunk-RILGQ2OY.cjs} +10 -10
  35. package/dist/{chunk-PBRXT7TD.cjs.map → chunk-RILGQ2OY.cjs.map} +1 -1
  36. package/dist/{chunk-DSPQVZFE.cjs → chunk-RQMS2CF5.cjs} +24 -24
  37. package/dist/{chunk-DSPQVZFE.cjs.map → chunk-RQMS2CF5.cjs.map} +1 -1
  38. package/dist/{chunk-W2TXSZTM.cjs → chunk-S2ZXUQLR.cjs} +21 -21
  39. package/dist/{chunk-W2TXSZTM.cjs.map → chunk-S2ZXUQLR.cjs.map} +1 -1
  40. package/dist/{chunk-7CP5KY5W.js → chunk-SM6JAZ4C.js} +3 -3
  41. package/dist/{chunk-3GXNCJZI.js → chunk-T4DIAKIK.js} +3 -3
  42. package/dist/{chunk-UKHM2S6I.cjs → chunk-TMNFC24G.cjs} +15 -15
  43. package/dist/{chunk-UKHM2S6I.cjs.map → chunk-TMNFC24G.cjs.map} +1 -1
  44. package/dist/{chunk-ESWXXWCL.js → chunk-U6GFESVF.js} +2 -2
  45. package/dist/{chunk-VXUUSLD5.js → chunk-XA5UPYWE.js} +2669 -911
  46. package/dist/chunk-XA5UPYWE.js.map +1 -0
  47. package/dist/{chunk-SEZ25E22.cjs → chunk-XNSEZVV4.cjs} +10 -10
  48. package/dist/{chunk-SEZ25E22.cjs.map → chunk-XNSEZVV4.cjs.map} +1 -1
  49. package/dist/{chunk-VDRCKHML.cjs → chunk-YU4QZ6I6.cjs} +3 -3
  50. package/dist/{chunk-VDRCKHML.cjs.map → chunk-YU4QZ6I6.cjs.map} +1 -1
  51. package/dist/{chunk-GAHKWML7.js → chunk-ZSENCE55.js} +6 -6
  52. package/dist/components/case-studies/index.cjs +9 -9
  53. package/dist/components/case-studies/index.js +3 -3
  54. package/dist/components/chat/index.cjs +2 -2
  55. package/dist/components/chat/index.js +1 -1
  56. package/dist/components/contact/index.cjs +4 -4
  57. package/dist/components/contact/index.js +3 -3
  58. package/dist/components/docs/index.cjs +7 -7
  59. package/dist/components/docs/index.js +6 -6
  60. package/dist/components/embeds/index.cjs +4 -4
  61. package/dist/components/embeds/index.js +3 -3
  62. package/dist/components/faq/index.cjs +4 -4
  63. package/dist/components/faq/index.js +3 -3
  64. package/dist/components/features/index.cjs +5 -3
  65. package/dist/components/features/index.cjs.map +1 -1
  66. package/dist/components/features/index.js +4 -2
  67. package/dist/components/features/push-button-selector.d.ts +29 -1
  68. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  69. package/dist/components/features/video.d.ts +12 -0
  70. package/dist/components/features/video.d.ts.map +1 -1
  71. package/dist/components/help-center-pages/index.cjs +23 -23
  72. package/dist/components/help-center-pages/index.js +14 -14
  73. package/dist/components/index.cjs +70 -899
  74. package/dist/components/index.cjs.map +1 -1
  75. package/dist/components/index.js +247 -1076
  76. package/dist/components/index.js.map +1 -1
  77. package/dist/components/meeting-scheduler/index.cjs +21 -21
  78. package/dist/components/meeting-scheduler/index.js +2 -2
  79. package/dist/components/navigation/index.cjs +6 -6
  80. package/dist/components/navigation/index.js +5 -5
  81. package/dist/components/onboarding-guides/index.cjs +6 -6
  82. package/dist/components/onboarding-guides/index.js +5 -5
  83. package/dist/components/tickets/index.cjs +7 -7
  84. package/dist/components/tickets/index.js +6 -6
  85. package/dist/components/ui/index.cjs +3 -3
  86. package/dist/components/ui/index.js +2 -2
  87. package/dist/index.cjs +9 -7
  88. package/dist/index.cjs.map +1 -1
  89. package/dist/index.js +8 -6
  90. package/dist/index.js.map +1 -1
  91. package/package.json +1 -1
  92. package/src/components/features/.push-button-selector.md +1 -1
  93. package/src/components/features/__tests__/video-playback-failure.test.tsx +250 -0
  94. package/src/components/features/push-button-selector.tsx +142 -17
  95. package/src/components/features/video.tsx +198 -16
  96. package/dist/chunk-IHFQ5VVR.js +0 -1867
  97. package/dist/chunk-IHFQ5VVR.js.map +0 -1
  98. package/dist/chunk-M4KQWGEL.cjs +0 -1867
  99. package/dist/chunk-M4KQWGEL.cjs.map +0 -1
  100. package/dist/chunk-U3W2ZVN4.cjs.map +0 -1
  101. package/dist/chunk-VXUUSLD5.js.map +0 -1
  102. package/dist/chunk-YU2UJPAT.cjs.map +0 -1
  103. /package/dist/{chunk-HVSZYUGP.js.map → chunk-53ZVUW2M.js.map} +0 -0
  104. /package/dist/{chunk-R5JVRFSW.js.map → chunk-5U2FU5LM.js.map} +0 -0
  105. /package/dist/{chunk-EZVABFEO.js.map → chunk-CJW6KZD3.js.map} +0 -0
  106. /package/dist/{chunk-KAEVE7W2.js.map → chunk-EULY3BXB.js.map} +0 -0
  107. /package/dist/{chunk-GVM37TRU.js.map → chunk-GAL6EXUY.js.map} +0 -0
  108. /package/dist/{chunk-ZEZMGXYV.js.map → chunk-H7K76TPX.js.map} +0 -0
  109. /package/dist/{chunk-LWDIDSCF.js.map → chunk-IB23CRL2.js.map} +0 -0
  110. /package/dist/{chunk-JW53WPB5.js.map → chunk-IZGXIZWF.js.map} +0 -0
  111. /package/dist/{chunk-OKA3DJJ3.js.map → chunk-JUXCEHK2.js.map} +0 -0
  112. /package/dist/{chunk-7CP5KY5W.js.map → chunk-SM6JAZ4C.js.map} +0 -0
  113. /package/dist/{chunk-3GXNCJZI.js.map → chunk-T4DIAKIK.js.map} +0 -0
  114. /package/dist/{chunk-ESWXXWCL.js.map → chunk-U6GFESVF.js.map} +0 -0
  115. /package/dist/{chunk-GAHKWML7.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-3GXNCJZI.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-GVM37TRU.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-HVSZYUGP.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-IHFQ5VVR.js";
65
+ } from "../chunk-2EIGO6ZS.js";
85
66
  import {
86
67
  FileDownloadCard,
87
68
  GoogleSheetsViewer,
88
69
  PdfViewer
89
- } from "../chunk-EZVABFEO.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-JW53WPB5.js";
80
+ } from "../chunk-IZGXIZWF.js";
100
81
  import {
101
82
  MobileNavigationDropdown,
102
83
  MultiLevelNavigation,
103
84
  StickySectionNav,
104
85
  useSectionNavigation
105
- } from "../chunk-KAEVE7W2.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-OKA3DJJ3.js";
94
+ } from "../chunk-JUXCEHK2.js";
114
95
  import {
115
96
  EmptyState,
116
97
  UnifiedPagination
117
98
  } from "../chunk-Z2FZ5HP2.js";
118
- import "../chunk-R5JVRFSW.js";
99
+ import "../chunk-5U2FU5LM.js";
119
100
  import {
120
101
  ArticleAuthorByline,
121
102
  DetailPageSkeleton
122
- } from "../chunk-ESWXXWCL.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-LWDIDSCF.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-VXUUSLD5.js";
608
+ } from "../chunk-XA5UPYWE.js";
581
609
  import "../chunk-L2SLFCXP.js";
582
610
  import "../chunk-BJXDHKUX.js";
583
611
  import {
@@ -803,6 +831,7 @@ import {
803
831
  TooltipTrigger,
804
832
  UnarchiveChatModal,
805
833
  UserDisplay,
834
+ VIDEO_PLAYBACK_FAILED_EVENT,
806
835
  Video,
807
836
  VideoBiteCard,
808
837
  VideoBitesStrip,
@@ -940,7 +969,7 @@ import {
940
969
  useVideoOriginPreconnect,
941
970
  useVideoWarmup,
942
971
  usesCanonicalStatusStyle
943
- } from "../chunk-HJVKPG55.js";
972
+ } from "../chunk-F227VMPL.js";
944
973
  import {
945
974
  scrollElementIntoView
946
975
  } from "../chunk-JRYS4VMV.js";
@@ -2127,305 +2156,9 @@ function CommentComposer({
2127
2156
  ] });
2128
2157
  }
2129
2158
 
2130
- // src/components/content-loading-container.tsx
2131
- import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
2132
- function ContentLoadingContainer({
2133
- isLoading,
2134
- children,
2135
- skeletonComponent,
2136
- className,
2137
- minHeight = "min-h-[300px] md:min-h-[800px]",
2138
- loadingOpacity = 1,
2139
- transitionDuration = 300
2140
- }) {
2141
- return /* @__PURE__ */ jsxs8(
2142
- "div",
2143
- {
2144
- className: cn("relative w-full transition-all ease-in-out", minHeight, className),
2145
- style: {
2146
- transitionDuration: `${transitionDuration}ms`
2147
- },
2148
- role: "region",
2149
- "aria-label": isLoading ? "Loading content" : "Content loaded",
2150
- "aria-live": "polite",
2151
- children: [
2152
- isLoading && /* @__PURE__ */ jsx10(
2153
- "div",
2154
- {
2155
- className: "absolute inset-0 z-10 bg-ods-bg",
2156
- style: {
2157
- opacity: loadingOpacity,
2158
- transition: `opacity ${transitionDuration}ms ease-in-out`
2159
- },
2160
- role: "status",
2161
- "aria-label": "Loading content",
2162
- children: skeletonComponent
2163
- }
2164
- ),
2165
- /* @__PURE__ */ jsx10(
2166
- "div",
2167
- {
2168
- className: cn("relative transition-opacity ease-in-out", isLoading && "opacity-0"),
2169
- style: {
2170
- transitionDuration: `${transitionDuration}ms`
2171
- },
2172
- "aria-hidden": isLoading,
2173
- children
2174
- }
2175
- )
2176
- ]
2177
- }
2178
- );
2179
- }
2180
- function useContentLoading(isLoading) {
2181
- const containerProps = {
2182
- "aria-busy": isLoading,
2183
- "data-loading": isLoading
2184
- };
2185
- const getSkeletonCount = (contentType) => {
2186
- return contentType === "vendor" ? 12 : 6;
2187
- };
2188
- const getMinHeight = (contentType) => {
2189
- return contentType === "vendor" ? "min-h-[400px] md:min-h-[900px]" : "min-h-[300px] md:min-h-[800px]";
2190
- };
2191
- return {
2192
- containerProps,
2193
- getSkeletonCount,
2194
- getMinHeight
2195
- };
2196
- }
2197
-
2198
- // src/components/dynamic-skeleton.tsx
2199
- import React from "react";
2200
-
2201
- // src/hooks/use-theme-aware.ts
2202
- function useThemeAware() {
2203
- return {
2204
- themeColors: {},
2205
- platformContext: "default",
2206
- isDarkMode: false,
2207
- platform: "default",
2208
- isDark: false,
2209
- accentColor: "#FFC008"
2210
- };
2211
- }
2212
-
2213
- // src/components/dynamic-skeleton.tsx
2214
- import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
2215
- var sizePresets = {
2216
- sm: { width: "4rem", height: "1rem" },
2217
- md: { width: "8rem", height: "1.5rem" },
2218
- lg: { width: "12rem", height: "2rem" },
2219
- xl: { width: "16rem", height: "2.5rem" }
2220
- };
2221
- var variantStyles = {
2222
- text: "rounded",
2223
- avatar: "rounded-full aspect-square",
2224
- card: "rounded-lg",
2225
- button: "rounded-md",
2226
- image: "rounded-lg aspect-video",
2227
- custom: ""
2228
- };
2229
- function DynamicSkeleton({
2230
- animation = "shimmer",
2231
- variant = "text",
2232
- size = "md",
2233
- width,
2234
- height,
2235
- lines = 1,
2236
- platformAware = true,
2237
- includeAriaLabel = true,
2238
- className,
2239
- children
2240
- }) {
2241
- const { platform, isDark, accentColor } = useThemeAware();
2242
- const dimensions = React.useMemo(() => {
2243
- if (width || height) {
2244
- return {
2245
- width: typeof width === "number" ? `${width}px` : width,
2246
- height: typeof height === "number" ? `${height}px` : height
2247
- };
2248
- }
2249
- if (variant === "avatar") {
2250
- const avatarSize = sizePresets[size].height;
2251
- return { width: avatarSize, height: avatarSize };
2252
- }
2253
- return sizePresets[size];
2254
- }, [width, height, size, variant]);
2255
- const platformStyles = React.useMemo(() => {
2256
- if (!platformAware) return {};
2257
- const baseOpacity = isDark ? 0.1 : 0.15;
2258
- const accentOpacity = isDark ? 0.05 : 0.08;
2259
- return {
2260
- "--skeleton-base": `color-mix(in srgb, var(--color-bg-skeleton) ${baseOpacity * 100}%, transparent)`,
2261
- "--skeleton-highlight": `color-mix(in srgb, ${accentColor} ${accentOpacity * 100}%, var(--color-bg-skeleton))`,
2262
- "--skeleton-accent": `color-mix(in srgb, ${accentColor} 10%, transparent)`
2263
- };
2264
- }, [platformAware, isDark, accentColor]);
2265
- const animationClasses = {
2266
- pulse: "animate-pulse",
2267
- shimmer: "ods-loading-dynamic",
2268
- wave: "skeleton-wave",
2269
- static: ""
2270
- };
2271
- const baseClasses = cn(
2272
- "bg-ods-skeleton",
2273
- variantStyles[variant],
2274
- animationClasses[animation],
2275
- platformAware && `skeleton-platform-${platform}`,
2276
- className
2277
- );
2278
- if (variant === "text" && lines > 1) {
2279
- return /* @__PURE__ */ jsx11(
2280
- "div",
2281
- {
2282
- className: "space-y-2",
2283
- style: platformStyles,
2284
- role: "status",
2285
- "aria-label": includeAriaLabel ? "Loading content..." : void 0,
2286
- children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ jsx11(
2287
- "div",
2288
- {
2289
- className: cn(
2290
- baseClasses,
2291
- index === lines - 1 && "w-3/4"
2292
- // Last line shorter
2293
- ),
2294
- style: {
2295
- ...dimensions,
2296
- width: index === lines - 1 ? "75%" : dimensions.width
2297
- }
2298
- },
2299
- index
2300
- ))
2301
- }
2302
- );
2303
- }
2304
- return /* @__PURE__ */ jsx11(
2305
- "div",
2306
- {
2307
- className: baseClasses,
2308
- style: { ...dimensions, ...platformStyles },
2309
- role: "status",
2310
- "aria-label": includeAriaLabel ? "Loading content..." : void 0,
2311
- children
2312
- }
2313
- );
2314
- }
2315
- var SkeletonPresets = {
2316
- /**
2317
- * Card skeleton with header, content, and actions
2318
- */
2319
- Card: ({ showActions = true, showImage = false }) => /* @__PURE__ */ jsxs9("div", { className: "space-y-4 rounded-lg border border-ods-border bg-ods-card p-6", children: [
2320
- showImage && /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "image", className: "h-40 w-full" }),
2321
- /* @__PURE__ */ jsxs9("div", { className: "space-y-2", children: [
2322
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "lg" }),
2323
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", lines: 2, size: "md" })
2324
- ] }),
2325
- showActions && /* @__PURE__ */ jsxs9("div", { className: "flex gap-2 pt-2", children: [
2326
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "button", width: "6rem", height: "2.5rem" }),
2327
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "button", width: "4rem", height: "2.5rem" })
2328
- ] })
2329
- ] }),
2330
- /**
2331
- * User profile skeleton
2332
- */
2333
- Profile: () => /* @__PURE__ */ jsxs9("div", { className: "flex items-start gap-4 p-4", children: [
2334
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "avatar", size: "lg" }),
2335
- /* @__PURE__ */ jsxs9("div", { className: "flex-1 space-y-2", children: [
2336
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "lg", width: "8rem" }),
2337
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm", width: "12rem" }),
2338
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", lines: 2, size: "md" })
2339
- ] })
2340
- ] }),
2341
- /**
2342
- * Navigation skeleton
2343
- */
2344
- 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: [
2345
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "avatar", size: "sm" }),
2346
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "md" })
2347
- ] }, index)) }),
2348
- /**
2349
- * Table skeleton
2350
- */
2351
- Table: ({ rows = 5, columns = 4 }) => /* @__PURE__ */ jsxs9("div", { className: "space-y-3", children: [
2352
- /* @__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}`)) }),
2353
- 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}`))
2354
- ] }),
2355
- /**
2356
- * Vendor grid skeleton (specific to the app)
2357
- */
2358
- 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: [
2359
- /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-3", children: [
2360
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "avatar", size: "md" }),
2361
- /* @__PURE__ */ jsxs9("div", { className: "flex-1", children: [
2362
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "md", width: "6rem" }),
2363
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm", width: "4rem", className: "mt-1" })
2364
- ] })
2365
- ] }),
2366
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", lines: 2, size: "sm" }),
2367
- /* @__PURE__ */ jsxs9("div", { className: "flex gap-2", children: [
2368
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "custom", width: "3rem", height: "1.25rem", className: "rounded-full" }),
2369
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "custom", width: "4rem", height: "1.25rem", className: "rounded-full" })
2370
- ] })
2371
- ] }, index)) }),
2372
- /**
2373
- * Blog post skeleton
2374
- */
2375
- BlogPost: () => /* @__PURE__ */ jsxs9("article", { className: "space-y-6", children: [
2376
- /* @__PURE__ */ jsxs9("div", { className: "space-y-2", children: [
2377
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "xl", width: "75%" }),
2378
- /* @__PURE__ */ jsxs9("div", { className: "flex gap-4 text-sm", children: [
2379
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm", width: "4rem" }),
2380
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", size: "sm", width: "6rem" })
2381
- ] })
2382
- ] }),
2383
- /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "image", className: "h-64 w-full" }),
2384
- /* @__PURE__ */ jsx11("div", { className: "space-y-3", children: Array.from({ length: 4 }, (_, index) => /* @__PURE__ */ jsx11(DynamicSkeleton, { variant: "text", lines: 3, size: "md" }, index)) })
2385
- ] })
2386
- };
2387
- function PlatformSkeletonContainer({
2388
- children,
2389
- isLoading,
2390
- skeletonType = "Card",
2391
- skeletonProps = {}
2392
- }) {
2393
- const { platform } = useThemeAware();
2394
- if (!isLoading) {
2395
- return /* @__PURE__ */ jsx11(Fragment2, { children });
2396
- }
2397
- const SkeletonComponent = SkeletonPresets[skeletonType];
2398
- return /* @__PURE__ */ jsx11("div", { className: `platform-skeleton skeleton-${platform}`, children: /* @__PURE__ */ jsx11(SkeletonComponent, { ...skeletonProps }) });
2399
- }
2400
- function ProgressiveSkeleton({
2401
- // Named only to keep it out of the `...props` spread: the stage NAMES are
2402
- // unused, `currentStage` alone selects the skeleton shape below.
2403
- stages: _stages = ["basic", "detailed", "interactive"],
2404
- currentStage = 0,
2405
- children,
2406
- ...props
2407
- }) {
2408
- const { platform } = useThemeAware();
2409
- const stageConfig = {
2410
- 0: { animation: "pulse", variant: "text" },
2411
- 1: { animation: "shimmer", variant: "card" },
2412
- 2: { animation: "wave", variant: "custom" }
2413
- };
2414
- const config = stageConfig[currentStage] || stageConfig[0];
2415
- return /* @__PURE__ */ jsx11(
2416
- DynamicSkeleton,
2417
- {
2418
- ...props,
2419
- ...config,
2420
- className: cn(props.className, `skeleton-stage-${currentStage}`, `skeleton-platform-${platform}`),
2421
- children
2422
- }
2423
- );
2424
- }
2425
-
2426
2159
  // src/components/filter-chip.tsx
2427
2160
  import { X as X2 } from "lucide-react";
2428
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
2161
+ import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
2429
2162
  function FilterChip({
2430
2163
  label,
2431
2164
  variant = "unselected",
@@ -2457,7 +2190,7 @@ function FilterChip({
2457
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",
2458
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"
2459
2192
  };
2460
- return /* @__PURE__ */ jsxs10(
2193
+ return /* @__PURE__ */ jsxs8(
2461
2194
  "div",
2462
2195
  {
2463
2196
  className: cn(baseClasses, variantClasses[variant], className),
@@ -2471,7 +2204,7 @@ function FilterChip({
2471
2204
  "aria-pressed": onClick && variant === "selected" ? true : void 0,
2472
2205
  "aria-disabled": disabled,
2473
2206
  children: [
2474
- /* @__PURE__ */ jsx12(
2207
+ /* @__PURE__ */ jsx10(
2475
2208
  "span",
2476
2209
  {
2477
2210
  className: cn(
@@ -2482,7 +2215,7 @@ function FilterChip({
2482
2215
  children: label
2483
2216
  }
2484
2217
  ),
2485
- removable && onRemove && /* @__PURE__ */ jsx12(
2218
+ removable && onRemove && /* @__PURE__ */ jsx10(
2486
2219
  "button",
2487
2220
  {
2488
2221
  type: "button",
@@ -2501,7 +2234,7 @@ function FilterChip({
2501
2234
  ),
2502
2235
  "aria-label": `Remove ${label} filter`,
2503
2236
  tabIndex: disabled ? -1 : 0,
2504
- 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" })
2505
2238
  }
2506
2239
  )
2507
2240
  ]
@@ -2514,7 +2247,7 @@ import { Suspense } from "react";
2514
2247
 
2515
2248
  // src/components/social-icon-row.tsx
2516
2249
  import { Mail } from "lucide-react";
2517
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
2250
+ import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
2518
2251
  var defaultLinks = [
2519
2252
  { platform: "github", href: "https://github.com/flamingo-stack", label: "GitHub" },
2520
2253
  { platform: "linkedin", href: "https://linkedin.com/company/flamingo.run", label: "LinkedIn" },
@@ -2524,44 +2257,44 @@ function renderSocialIcon(platform) {
2524
2257
  const normalizedPlatform = platform.toLowerCase().trim();
2525
2258
  switch (normalizedPlatform) {
2526
2259
  case "github":
2527
- return /* @__PURE__ */ jsx13(GitHubIcon, { className: "h-5 w-5" });
2260
+ return /* @__PURE__ */ jsx11(GitHubIcon, { className: "h-5 w-5" });
2528
2261
  case "twitter":
2529
2262
  case "x":
2530
- return /* @__PURE__ */ jsx13(XLogo, { className: "h-5 w-5" });
2263
+ return /* @__PURE__ */ jsx11(XLogo, { className: "h-5 w-5" });
2531
2264
  case "reddit":
2532
- return /* @__PURE__ */ jsx13(RedditIcon, { className: "h-5 w-5", variant: "white" });
2265
+ return /* @__PURE__ */ jsx11(RedditIcon, { className: "h-5 w-5", variant: "white" });
2533
2266
  case "linkedin":
2534
- return /* @__PURE__ */ jsx13(LinkedInIcon, { className: "h-5 w-5" });
2267
+ return /* @__PURE__ */ jsx11(LinkedInIcon, { className: "h-5 w-5" });
2535
2268
  case "luma":
2536
- return /* @__PURE__ */ jsx13(LumaIcon, { className: "h-5 w-5" });
2269
+ return /* @__PURE__ */ jsx11(LumaIcon, { className: "h-5 w-5" });
2537
2270
  case "whatsapp":
2538
- return /* @__PURE__ */ jsx13(WhatsAppIcon, { className: "h-5 w-5" });
2271
+ return /* @__PURE__ */ jsx11(WhatsAppIcon, { className: "h-5 w-5" });
2539
2272
  case "email":
2540
2273
  case "mail":
2541
- return /* @__PURE__ */ jsx13(Mail, { className: "h-5 w-5" });
2274
+ return /* @__PURE__ */ jsx11(Mail, { className: "h-5 w-5" });
2542
2275
  case "website":
2543
2276
  case "web":
2544
2277
  case "url":
2545
- return /* @__PURE__ */ jsx13(GlobeIcon, { className: "h-5 w-5" });
2278
+ return /* @__PURE__ */ jsx11(GlobeIcon, { className: "h-5 w-5" });
2546
2279
  case "slack":
2547
- return /* @__PURE__ */ jsx13(SlackIcon, { className: "h-5 w-5", injectedColor: "white" });
2280
+ return /* @__PURE__ */ jsx11(SlackIcon, { className: "h-5 w-5", injectedColor: "white" });
2548
2281
  case "discord":
2549
- return /* @__PURE__ */ jsx13(MessageCircleIcon, { className: "h-5 w-5" });
2282
+ return /* @__PURE__ */ jsx11(MessageCircleIcon, { className: "h-5 w-5" });
2550
2283
  case "telegram":
2551
- return /* @__PURE__ */ jsx13(TelegramIcon, { className: "h-5 w-5" });
2284
+ return /* @__PURE__ */ jsx11(TelegramIcon, { className: "h-5 w-5" });
2552
2285
  case "youtube":
2553
2286
  case "yt":
2554
- return /* @__PURE__ */ jsx13(YouTubeIcon, { className: "h-5 w-5" });
2287
+ return /* @__PURE__ */ jsx11(YouTubeIcon, { className: "h-5 w-5" });
2555
2288
  case "instagram":
2556
2289
  case "ig":
2557
- return /* @__PURE__ */ jsx13(InstagramIcon, { className: "h-5 w-5" });
2290
+ return /* @__PURE__ */ jsx11(InstagramIcon, { className: "h-5 w-5" });
2558
2291
  case "facebook":
2559
2292
  case "fb":
2560
- return /* @__PURE__ */ jsx13(FacebookIcon, { className: "h-5 w-5" });
2293
+ return /* @__PURE__ */ jsx11(FacebookIcon, { className: "h-5 w-5" });
2561
2294
  case "copy":
2562
- 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)" });
2563
2296
  default:
2564
- return /* @__PURE__ */ jsx13(GlobeIcon, { className: "h-5 w-5" });
2297
+ return /* @__PURE__ */ jsx11(GlobeIcon, { className: "h-5 w-5" });
2565
2298
  }
2566
2299
  }
2567
2300
  function SocialIconRow({
@@ -2574,7 +2307,7 @@ function SocialIconRow({
2574
2307
  const resolvedVariant = variant !== void 0 ? variant : compact ? "transparent" : "outline";
2575
2308
  const renderButton = (link, index) => {
2576
2309
  const ariaLabel = link.label || link.platform;
2577
- return link.onClick ? /* @__PURE__ */ jsx13(
2310
+ return link.onClick ? /* @__PURE__ */ jsx11(
2578
2311
  Button,
2579
2312
  {
2580
2313
  type: "button",
@@ -2590,7 +2323,7 @@ function SocialIconRow({
2590
2323
  // Props-based linking — Button renders the anchor itself
2591
2324
  // (openInNewTab carries target="_blank" + rel="noopener noreferrer");
2592
2325
  // no asChild/<a> nesting.
2593
- /* @__PURE__ */ jsx13(
2326
+ /* @__PURE__ */ jsx11(
2594
2327
  Button,
2595
2328
  {
2596
2329
  variant: resolvedVariant,
@@ -2610,33 +2343,33 @@ function SocialIconRow({
2610
2343
  const external = links.filter((l) => l.visibility !== "internal");
2611
2344
  const internal = links.filter((l) => l.visibility === "internal");
2612
2345
  if (external.length > 0 && internal.length > 0) {
2613
- return /* @__PURE__ */ jsxs11("div", { className: rowClass, children: [
2346
+ return /* @__PURE__ */ jsxs9("div", { className: rowClass, children: [
2614
2347
  external.map((l, i) => renderButton(l, i)),
2615
- /* @__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" }),
2616
2349
  internal.map((l, i) => renderButton(l, external.length + i))
2617
2350
  ] });
2618
2351
  }
2619
2352
  }
2620
- 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)) });
2621
2354
  }
2622
2355
 
2623
2356
  // src/components/footer.tsx
2624
- 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";
2625
2358
  function NavLinkSkeleton() {
2626
- 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" });
2627
2360
  }
2628
2361
  function Footer({ config, renderLink }) {
2629
2362
  if (!config) {
2630
2363
  console.warn("Footer: No config provided");
2631
2364
  return null;
2632
2365
  }
2633
- return /* @__PURE__ */ jsx14(UniversalFooter, { config, renderLink });
2366
+ return /* @__PURE__ */ jsx12(UniversalFooter, { config, renderLink });
2634
2367
  }
2635
2368
  function UniversalFooter({
2636
2369
  config,
2637
2370
  renderLink
2638
2371
  }) {
2639
- const defaultRenderLink = (link) => /* @__PURE__ */ jsx14(
2372
+ const defaultRenderLink = (link) => /* @__PURE__ */ jsx12(
2640
2373
  "a",
2641
2374
  {
2642
2375
  href: link.href,
@@ -2645,21 +2378,21 @@ function UniversalFooter({
2645
2378
  }
2646
2379
  );
2647
2380
  const linkRenderer = renderLink || defaultRenderLink;
2648
- return /* @__PURE__ */ jsxs12(
2381
+ return /* @__PURE__ */ jsxs10(
2649
2382
  "footer",
2650
2383
  {
2651
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`,
2652
2385
  children: [
2653
- /* @__PURE__ */ jsxs12("div", { className: "grid w-full grid-cols-2 items-start gap-6 md:gap-8 lg:grid-cols-4", children: [
2654
- /* @__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: [
2655
- /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
2656
- config.logo && /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(Skeleton, { className: "h-8 w-8" }), children: config.logo }),
2657
- 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 })
2658
2391
  ] }),
2659
- !config.moveDescriptionToRight && /* @__PURE__ */ jsxs12(Fragment3, { children: [
2660
- /* @__PURE__ */ jsx14("p", { className: "font-body text-sm font-medium leading-[1.43] text-ods-text-primary md:text-sm", children: config.description }),
2661
- config.belowDescriptionContent && /* @__PURE__ */ jsx14(Suspense, { fallback: /* @__PURE__ */ jsx14(Skeleton, { className: "h-8 w-full" }), children: config.belowDescriptionContent }),
2662
- !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(
2663
2396
  SocialIconRow,
2664
2397
  {
2665
2398
  className: "pt-2",
@@ -2667,22 +2400,22 @@ function UniversalFooter({
2667
2400
  }
2668
2401
  )
2669
2402
  ] }),
2670
- 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 })
2671
2404
  ] }),
2672
- config.sections.map((section, index) => /* @__PURE__ */ jsxs12("div", { className: "col-span-1 flex flex-col items-start gap-3 text-left", children: [
2673
- /* @__PURE__ */ jsx14("h3", { className: "tracking-[-0.02em] text-ods-text-muted text-h5", children: section.title }),
2674
- /* @__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)) })
2675
2408
  ] }, index)),
2676
- 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 }) }),
2677
- (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: [
2678
- config.moveDescriptionToRight && /* @__PURE__ */ jsxs12(Fragment3, { children: [
2679
- /* @__PURE__ */ jsx14("p", { className: "font-body text-sm font-medium leading-[1.43] text-ods-text-primary md:text-sm", children: config.description }),
2680
- 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 })
2681
2414
  ] }),
2682
- 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 })
2683
2416
  ] })
2684
2417
  ] }),
2685
- /* @__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: [
2686
2419
  "\xA9 ",
2687
2420
  (/* @__PURE__ */ new Date()).getFullYear(),
2688
2421
  " ",
@@ -3002,20 +2735,20 @@ var blogFilterConfig = {
3002
2735
 
3003
2736
  // src/components/footer-waitlist-button.tsx
3004
2737
  import { useCallback } from "react";
3005
- import { jsx as jsx15 } from "react/jsx-runtime";
2738
+ import { jsx as jsx13 } from "react/jsx-runtime";
3006
2739
  function FooterWaitlistButton({ className }) {
3007
2740
  const router = useRouter();
3008
2741
  const runtime = useChatRuntime();
3009
2742
  const handleClick = useCallback(() => {
3010
2743
  executeNavigationImperative({ runtime, href: "/waitlist#top", fallbackNavigate: router.push });
3011
2744
  }, [router, runtime]);
3012
- 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" });
3013
2746
  }
3014
2747
 
3015
2748
  // src/components/hero-image-uploader.tsx
3016
2749
  import { Loader2, Image as ImageIcon2, Upload, X as X3 } from "lucide-react";
3017
2750
  import { useRef, useState as useState3 } from "react";
3018
- 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";
3019
2752
  function readUploadedUrl(payload) {
3020
2753
  if (typeof payload !== "object" || payload === null) return null;
3021
2754
  if ("data" in payload) {
@@ -3118,53 +2851,53 @@ function HeroImageUploader({
3118
2851
  onChange(void 0);
3119
2852
  };
3120
2853
  const heightStyle = typeof height === "number" ? `${height}px` : height;
3121
- return /* @__PURE__ */ jsxs13("div", { className: "h-full max-h-full min-h-[300px] w-full space-y-2", children: [
3122
- 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(
3123
2856
  "div",
3124
2857
  {
3125
2858
  className: "group relative flex aspect-square h-auto w-full items-center justify-center overflow-hidden md:aspect-auto md:h-full",
3126
2859
  style: { height: heightStyle },
3127
2860
  children: [
3128
- /* @__PURE__ */ jsx16(next_image_default, { src: imageUrl, className: `object-${objectFit}`, alt: "Cover", fill: true, sizes: "100vw", unoptimized: true }),
3129
- /* @__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: [
3130
- 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(
3131
2864
  Button,
3132
2865
  {
3133
2866
  variant: "outline",
3134
2867
  size: "icon",
3135
2868
  onClick: openDialog,
3136
2869
  className: "h-12 w-12 rounded-full bg-white text-black hover:bg-gray-100",
3137
- children: /* @__PURE__ */ jsx16(Upload, { className: "h-5 w-5" })
2870
+ children: /* @__PURE__ */ jsx14(Upload, { className: "h-5 w-5" })
3138
2871
  }
3139
2872
  ),
3140
- /* @__PURE__ */ jsx16(
2873
+ /* @__PURE__ */ jsx14(
3141
2874
  Button,
3142
2875
  {
3143
2876
  variant: "outline",
3144
2877
  size: "icon",
3145
2878
  onClick: () => handleRemove(),
3146
2879
  className: "h-12 w-12 rounded-full bg-white text-black hover:bg-gray-100",
3147
- children: /* @__PURE__ */ jsx16(X3, { className: "h-5 w-5" })
2880
+ children: /* @__PURE__ */ jsx14(X3, { className: "h-5 w-5" })
3148
2881
  }
3149
2882
  )
3150
2883
  ] })
3151
2884
  ]
3152
2885
  }
3153
- ) : /* @__PURE__ */ jsx16(
2886
+ ) : /* @__PURE__ */ jsx14(
3154
2887
  "div",
3155
2888
  {
3156
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`,
3157
2890
  style: { height: heightStyle },
3158
2891
  onClick: openDialog,
3159
- children: uploading ? /* @__PURE__ */ jsx16(Loader2, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs13(Fragment4, { children: [
3160
- /* @__PURE__ */ jsx16(ImageIcon2, { className: "h-12 w-12 text-ods-text-secondary" }),
3161
- /* @__PURE__ */ jsx16("span", { className: "mt-2 text-ods-text-primary text-h6", children: "Upload cover image" }),
3162
- /* @__PURE__ */ jsx16("span", { className: "mt-1 text-ods-text-secondary text-h6", children: "Click to upload or drag and drop" }),
3163
- /* @__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" })
3164
2897
  ] })
3165
2898
  }
3166
2899
  ),
3167
- /* @__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" })
3168
2901
  ] });
3169
2902
  }
3170
2903
 
@@ -3183,13 +2916,13 @@ var CommunityIcon2 = MessageSquare;
3183
2916
  var CompareIcon2 = GitCompare;
3184
2917
 
3185
2918
  // src/components/icons-block.tsx
3186
- import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
2919
+ import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
3187
2920
  var SunIcon2 = Sun;
3188
2921
  var MoonIcon2 = Moon;
3189
2922
  var CheckCircleIcon3 = CheckCircle;
3190
2923
  var GitHubIcon2 = Github;
3191
2924
  var PlusCircleIcon2 = PlusCircle;
3192
- var OpenmspLogo2 = () => /* @__PURE__ */ jsx17("div", { children: "Logo" });
2925
+ var OpenmspLogo2 = () => /* @__PURE__ */ jsx15("div", { children: "Logo" });
3193
2926
  var availableIcons = [
3194
2927
  VendorDirectoryIcon2,
3195
2928
  OpenSourceIcon2,
@@ -3252,17 +2985,17 @@ function ResponsiveIconsBlock({ loading = false }) {
3252
2985
  return iconGrid[row]?.[col] || availableIcons[0];
3253
2986
  };
3254
2987
  if (loading || iconGrid.length === 0) {
3255
- return /* @__PURE__ */ jsx17(
2988
+ return /* @__PURE__ */ jsx15(
3256
2989
  "div",
3257
2990
  {
3258
2991
  className: "relative h-[80px] w-full overflow-hidden bg-[#1A1A1A] md:h-[112px]",
3259
2992
  role: "presentation",
3260
2993
  "aria-hidden": "true",
3261
- 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" })
3262
2995
  }
3263
2996
  );
3264
2997
  }
3265
- return /* @__PURE__ */ jsxs14(
2998
+ return /* @__PURE__ */ jsxs12(
3266
2999
  "div",
3267
3000
  {
3268
3001
  className: "relative z-10 h-[80px] w-full overflow-hidden bg-[#1A1A1A] md:h-[112px]",
@@ -3270,14 +3003,14 @@ function ResponsiveIconsBlock({ loading = false }) {
3270
3003
  role: "presentation",
3271
3004
  "aria-hidden": "true",
3272
3005
  children: [
3273
- /* @__PURE__ */ jsx17("style", { children: `
3006
+ /* @__PURE__ */ jsx15("style", { children: `
3274
3007
  .icons-block svg,
3275
3008
  .icons-block svg * {
3276
3009
  filter: grayscale(100%) brightness(0) invert(1) brightness(0.4) !important;
3277
3010
  fill: currentColor !important;
3278
3011
  }
3279
3012
  ` }),
3280
- /* @__PURE__ */ jsx17(
3013
+ /* @__PURE__ */ jsx15(
3281
3014
  "div",
3282
3015
  {
3283
3016
  className: "icons-block grid h-full w-full",
@@ -3289,7 +3022,7 @@ function ResponsiveIconsBlock({ loading = false }) {
3289
3022
  const col = idx % displayColumns;
3290
3023
  const row = Math.floor(idx / displayColumns);
3291
3024
  const IconComponent = getIconForIndex(idx);
3292
- return /* @__PURE__ */ jsx17(
3025
+ return /* @__PURE__ */ jsx15(
3293
3026
  "div",
3294
3027
  {
3295
3028
  className: "flex h-full w-full items-center justify-center",
@@ -3302,7 +3035,7 @@ function ResponsiveIconsBlock({ loading = false }) {
3302
3035
  boxSizing: "border-box"
3303
3036
  },
3304
3037
  role: "presentation",
3305
- 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" })
3306
3039
  },
3307
3040
  idx
3308
3041
  );
@@ -3318,7 +3051,7 @@ function ResponsiveIconsBlock({ loading = false }) {
3318
3051
  import { Check, RotateCcw } from "lucide-react";
3319
3052
  import { useCallback as useCallback2, useState as useState5 } from "react";
3320
3053
  import Cropper from "react-easy-crop";
3321
- import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
3054
+ import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
3322
3055
  function loadImage(src) {
3323
3056
  return new Promise((resolve, reject) => {
3324
3057
  const img = new Image();
@@ -3405,7 +3138,7 @@ var ImageCropper = ({
3405
3138
  onCancel?.();
3406
3139
  }
3407
3140
  };
3408
- return /* @__PURE__ */ jsxs15(
3141
+ return /* @__PURE__ */ jsxs13(
3409
3142
  "div",
3410
3143
  {
3411
3144
  className: cn("relative flex w-full flex-col gap-4", className),
@@ -3413,7 +3146,7 @@ var ImageCropper = ({
3413
3146
  tabIndex: 0,
3414
3147
  "aria-label": "Image cropper",
3415
3148
  children: [
3416
- /* @__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(
3417
3150
  Cropper,
3418
3151
  {
3419
3152
  image: src,
@@ -3430,10 +3163,10 @@ var ImageCropper = ({
3430
3163
  objectFit: "contain"
3431
3164
  }
3432
3165
  ) }),
3433
- /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-4", children: [
3434
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
3435
- /* @__PURE__ */ jsx18("span", { className: "min-w-[60px] text-h6", children: "Zoom" }),
3436
- /* @__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(
3437
3170
  Slider,
3438
3171
  {
3439
3172
  min: 1,
@@ -3446,9 +3179,9 @@ var ImageCropper = ({
3446
3179
  }
3447
3180
  )
3448
3181
  ] }),
3449
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
3450
- /* @__PURE__ */ jsx18("span", { className: "min-w-[60px] text-h6", children: "Rotate" }),
3451
- /* @__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(
3452
3185
  Slider,
3453
3186
  {
3454
3187
  min: 0,
@@ -3460,12 +3193,12 @@ var ImageCropper = ({
3460
3193
  className: "flex-1"
3461
3194
  }
3462
3195
  ),
3463
- /* @__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" }) })
3464
3197
  ] })
3465
3198
  ] }),
3466
- /* @__PURE__ */ jsxs15("div", { className: "mt-2 flex justify-end gap-2", children: [
3467
- onCancel && /* @__PURE__ */ jsx18(Button, { variant: "outline", onClick: onCancel, "aria-label": "Cancel crop", children: "Cancel" }),
3468
- /* @__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(
3469
3202
  Button,
3470
3203
  {
3471
3204
  variant: "accent",
@@ -3473,7 +3206,7 @@ var ImageCropper = ({
3473
3206
  const result = await exportCrop();
3474
3207
  if (result) onComplete(result);
3475
3208
  },
3476
- leftIcon: /* @__PURE__ */ jsx18(Check, { className: "h-4 w-4" }),
3209
+ leftIcon: /* @__PURE__ */ jsx16(Check, { className: "h-4 w-4" }),
3477
3210
  "aria-label": "Apply crop",
3478
3211
  children: "Apply"
3479
3212
  }
@@ -3485,19 +3218,19 @@ var ImageCropper = ({
3485
3218
  };
3486
3219
 
3487
3220
  // src/components/metric-value.tsx
3488
- import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
3221
+ import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
3489
3222
  function MetricValue({ value, label, className }) {
3490
- 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: [
3491
3224
  value,
3492
- /* @__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 })
3493
3226
  ] });
3494
3227
  }
3495
3228
 
3496
3229
  // src/components/msp-display.tsx
3497
- import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
3230
+ import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
3498
3231
  function MSPDisplay({ name, logoUrl, size = 40, className }) {
3499
- return /* @__PURE__ */ jsxs17("div", { className: cn("flex min-w-0 items-center gap-2", className), children: [
3500
- /* @__PURE__ */ jsx20(
3232
+ return /* @__PURE__ */ jsxs15("div", { className: cn("flex min-w-0 items-center gap-2", className), children: [
3233
+ /* @__PURE__ */ jsx18(
3501
3234
  SquareAvatar,
3502
3235
  {
3503
3236
  src: logoUrl ? getProxiedImageUrl(logoUrl) || logoUrl : void 0,
@@ -3506,16 +3239,16 @@ function MSPDisplay({ name, logoUrl, size = 40, className }) {
3506
3239
  sizePx: size
3507
3240
  }
3508
3241
  ),
3509
- /* @__PURE__ */ jsx20("h2", { className: "truncate pl-2", children: name })
3242
+ /* @__PURE__ */ jsx18("h2", { className: "truncate pl-2", children: name })
3510
3243
  ] });
3511
3244
  }
3512
3245
 
3513
3246
  // src/components/open-source-features.tsx
3514
3247
  import { Terminal, DollarSign as DollarSign2, Network, Users as Users2 } from "lucide-react";
3515
- import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
3248
+ import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
3516
3249
 
3517
3250
  // src/components/pricing-display.tsx
3518
- import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
3251
+ import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
3519
3252
  var PRICING_STYLES = {
3520
3253
  // Comparison table style (current default)
3521
3254
  comparison: {
@@ -3551,11 +3284,11 @@ function PricingDisplay({
3551
3284
  styleConfig = PRICING_STYLES.comparison
3552
3285
  }) {
3553
3286
  if (typeof pricing === "string") {
3554
- return /* @__PURE__ */ jsx22(LegacyPricingDisplay, { pricing, className, styleConfig });
3287
+ return /* @__PURE__ */ jsx20(LegacyPricingDisplay, { pricing, className, styleConfig });
3555
3288
  }
3556
3289
  const pricingArray = Array.isArray(pricing) ? pricing : [pricing];
3557
3290
  if (!pricingArray || pricingArray.length === 0) {
3558
- return /* @__PURE__ */ jsx22(
3291
+ return /* @__PURE__ */ jsx20(
3559
3292
  "span",
3560
3293
  {
3561
3294
  className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize} ${styleConfig.fontFamily} ${className}`,
@@ -3567,9 +3300,9 @@ function PricingDisplay({
3567
3300
  const item = pricingArray[0];
3568
3301
  const price = item.ranges?.[0]?.min || 0;
3569
3302
  const unit = item.ranges?.[0]?.unit;
3570
- return /* @__PURE__ */ jsxs19("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3571
- /* @__PURE__ */ jsx22("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: formatPriceValue(price, styleConfig.showTildePrefix) }),
3572
- 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: [
3573
3306
  "/",
3574
3307
  unit
3575
3308
  ] })
@@ -3579,9 +3312,9 @@ function PricingDisplay({
3579
3312
  (item) => formatPriceValue(item.ranges?.[0]?.min || 0, styleConfig.showTildePrefix)
3580
3313
  );
3581
3314
  const itemWithUnit = pricingArray.find((item) => item.ranges?.[0]?.unit);
3582
- return /* @__PURE__ */ jsxs19("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3583
- /* @__PURE__ */ jsx22("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: priceValues.join(" | ") }),
3584
- 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: [
3585
3318
  "/",
3586
3319
  itemWithUnit.ranges[0].unit
3587
3320
  ] })
@@ -3602,7 +3335,7 @@ function LegacyPricingDisplay({
3602
3335
  styleConfig = PRICING_STYLES.comparison
3603
3336
  }) {
3604
3337
  if (pricing === "Free" || pricing === "No pricing data") {
3605
- return /* @__PURE__ */ jsx22(
3338
+ return /* @__PURE__ */ jsx20(
3606
3339
  "span",
3607
3340
  {
3608
3341
  className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize} ${styleConfig.fontFamily} ${className}`,
@@ -3664,9 +3397,9 @@ function LegacyPricingDisplay({
3664
3397
  };
3665
3398
  };
3666
3399
  const { mainValue, secondaryInfo } = parsePricing(pricing);
3667
- return /* @__PURE__ */ jsxs19("span", { className: `${styleConfig.fontFamily} ${className}`, children: [
3668
- /* @__PURE__ */ jsx22("span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: mainValue }),
3669
- 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 })
3670
3403
  ] });
3671
3404
  }
3672
3405
  function formatPricingForDisplay(pricing) {
@@ -3674,7 +3407,7 @@ function formatPricingForDisplay(pricing) {
3674
3407
  }
3675
3408
 
3676
3409
  // src/components/results-count.tsx
3677
- 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";
3678
3411
  function ResultsCount({ currentPage, pageSize, totalResults, resultType, sortingMessage }) {
3679
3412
  if (totalResults === 0) {
3680
3413
  return null;
@@ -3684,7 +3417,7 @@ function ResultsCount({ currentPage, pageSize, totalResults, resultType, sorting
3684
3417
  const plural = resultType === "vendors" ? "vendors" : "posts";
3685
3418
  const singular = resultType === "vendors" ? "vendor" : "post";
3686
3419
  const displayType = totalResults === 1 ? singular : plural;
3687
- 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: [
3688
3421
  "Showing ",
3689
3422
  startIndex,
3690
3423
  "-",
@@ -3693,7 +3426,7 @@ function ResultsCount({ currentPage, pageSize, totalResults, resultType, sorting
3693
3426
  totalResults,
3694
3427
  " ",
3695
3428
  displayType,
3696
- sortingMessage && /* @__PURE__ */ jsxs20("span", { className: "ml-2 text-ods-accent", children: [
3429
+ sortingMessage && /* @__PURE__ */ jsxs18("span", { className: "ml-2 text-ods-accent", children: [
3697
3430
  "\u2022 ",
3698
3431
  sortingMessage
3699
3432
  ] })
@@ -3704,14 +3437,14 @@ function ResultsCount({ currentPage, pageSize, totalResults, resultType, sorting
3704
3437
  import { Boxes, Database, Hand, Plug, ShieldCheck, Sparkles } from "lucide-react";
3705
3438
 
3706
3439
  // src/components/openframe-logo.tsx
3707
- import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
3440
+ import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
3708
3441
  var OpenFrameLogo2 = ({
3709
3442
  className,
3710
3443
  lowerPathColor,
3711
3444
  upperPathColor,
3712
3445
  ...props
3713
3446
  }) => {
3714
- return /* @__PURE__ */ jsx24(
3447
+ return /* @__PURE__ */ jsx22(
3715
3448
  "svg",
3716
3449
  {
3717
3450
  ...props,
@@ -3725,30 +3458,30 @@ var OpenFrameLogo2 = ({
3725
3458
  "--fill-0": "currentColor",
3726
3459
  ...props.style
3727
3460
  },
3728
- children: /* @__PURE__ */ jsxs21("g", { children: [
3729
- /* @__PURE__ */ jsxs21("g", { children: [
3730
- /* @__PURE__ */ jsx24(
3461
+ children: /* @__PURE__ */ jsxs19("g", { children: [
3462
+ /* @__PURE__ */ jsxs19("g", { children: [
3463
+ /* @__PURE__ */ jsx22(
3731
3464
  "path",
3732
3465
  {
3733
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",
3734
3467
  fill: lowerPathColor ?? "#ffffff"
3735
3468
  }
3736
3469
  ),
3737
- /* @__PURE__ */ jsx24(
3470
+ /* @__PURE__ */ jsx22(
3738
3471
  "path",
3739
3472
  {
3740
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",
3741
3474
  fill: lowerPathColor ?? "#ffffff"
3742
3475
  }
3743
3476
  ),
3744
- /* @__PURE__ */ jsx24(
3477
+ /* @__PURE__ */ jsx22(
3745
3478
  "path",
3746
3479
  {
3747
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",
3748
3481
  fill: lowerPathColor ?? "#ffffff"
3749
3482
  }
3750
3483
  ),
3751
- /* @__PURE__ */ jsx24(
3484
+ /* @__PURE__ */ jsx22(
3752
3485
  "path",
3753
3486
  {
3754
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",
@@ -3756,7 +3489,7 @@ var OpenFrameLogo2 = ({
3756
3489
  }
3757
3490
  )
3758
3491
  ] }),
3759
- /* @__PURE__ */ jsx24(
3492
+ /* @__PURE__ */ jsx22(
3760
3493
  "path",
3761
3494
  {
3762
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",
@@ -3769,7 +3502,7 @@ var OpenFrameLogo2 = ({
3769
3502
  };
3770
3503
 
3771
3504
  // src/components/vendor-tag.tsx
3772
- import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
3505
+ import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
3773
3506
  function VendorTag({ type, text, className = "", hidden = false, size = "md", accentColor }) {
3774
3507
  const baseClasses = cn(
3775
3508
  "flex items-center gap-1.5 whitespace-nowrap rounded border border-ods-border bg-ods-bg",
@@ -3781,99 +3514,99 @@ function VendorTag({ type, text, className = "", hidden = false, size = "md", ac
3781
3514
  return {
3782
3515
  text: "Placeholder",
3783
3516
  textColor: "text-ods-text-primary",
3784
- 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" }) })
3785
3518
  };
3786
3519
  case "ai":
3787
3520
  return {
3788
3521
  text: "AI Selected",
3789
3522
  textColor: "text-ods-text-primary",
3790
- 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" }) })
3791
3524
  };
3792
3525
  case "manual":
3793
3526
  return {
3794
3527
  text: "Manually Selected",
3795
3528
  textColor: "text-ods-text-secondary",
3796
- 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" }) })
3797
3530
  };
3798
3531
  case "open-source":
3799
3532
  return {
3800
3533
  text: text || "Open Source",
3801
- icon: /* @__PURE__ */ jsx25(
3534
+ icon: /* @__PURE__ */ jsx23(
3802
3535
  "div",
3803
3536
  {
3804
3537
  className: "flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm bg-ods-accent",
3805
3538
  style: accentColor ? { backgroundColor: accentColor } : void 0,
3806
- 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" })
3807
3540
  }
3808
3541
  )
3809
3542
  };
3810
3543
  case "commercial":
3811
3544
  return {
3812
3545
  text: text || "Commercial Vendor",
3813
- 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" }) })
3814
3547
  };
3815
3548
  // platform-capability tags — same neutral icon-box chrome as 'commercial'
3816
3549
  case "api":
3817
3550
  return {
3818
3551
  text: text || "API",
3819
- 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" }) })
3820
3553
  };
3821
3554
  case "data":
3822
3555
  return {
3823
3556
  text: text || "Data",
3824
- 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" }) })
3825
3558
  };
3826
3559
  case "k8s":
3827
3560
  return {
3828
3561
  text: text || "K8s",
3829
- 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" }) })
3830
3563
  };
3831
3564
  case "secured":
3832
3565
  return {
3833
3566
  text: text || "Secured",
3834
- 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" }) })
3835
3568
  };
3836
3569
  case "free":
3837
3570
  return {
3838
3571
  text: text || "Free",
3839
- 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: "$" }) })
3840
3573
  };
3841
3574
  case "freemium":
3842
3575
  return {
3843
3576
  text: text || "Freemium",
3844
- 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: "$" }) })
3845
3578
  };
3846
3579
  case "paid":
3847
3580
  return {
3848
3581
  text: text || "Paid",
3849
- 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" }) })
3850
3583
  };
3851
3584
  case "enterprise":
3852
3585
  return {
3853
3586
  text: text || "Enterprise",
3854
- 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" }) })
3855
3588
  };
3856
3589
  case "recommended":
3857
3590
  return {
3858
3591
  text: text || "Recommended",
3859
- 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" }) })
3860
3593
  };
3861
3594
  case "classification": {
3862
3595
  const classificationType = text?.toLowerCase();
3863
3596
  if (classificationType === "open_source") {
3864
3597
  return {
3865
3598
  text: "Open Source",
3866
- 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" }) })
3867
3600
  };
3868
3601
  } else if (classificationType === "commercial") {
3869
3602
  return {
3870
3603
  text: "Commercial Vendor",
3871
- 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" }) })
3872
3605
  };
3873
3606
  } else if (classificationType === "openframe_selected") {
3874
3607
  return {
3875
3608
  text: "OpenFrame Selected",
3876
- icon: /* @__PURE__ */ jsx25(
3609
+ icon: /* @__PURE__ */ jsx23(
3877
3610
  OpenFrameLogo2,
3878
3611
  {
3879
3612
  lowerPathColor: "currentColor",
@@ -3885,14 +3618,14 @@ function VendorTag({ type, text, className = "", hidden = false, size = "md", ac
3885
3618
  } else {
3886
3619
  return {
3887
3620
  text: text || "Classification",
3888
- 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" }) })
3889
3622
  };
3890
3623
  }
3891
3624
  }
3892
3625
  case "openframe_selected":
3893
3626
  return {
3894
3627
  text: text || "OpenFrame Selected",
3895
- icon: /* @__PURE__ */ jsx25(
3628
+ icon: /* @__PURE__ */ jsx23(
3896
3629
  OpenFrameLogo2,
3897
3630
  {
3898
3631
  lowerPathColor: "currentColor",
@@ -3909,19 +3642,19 @@ function VendorTag({ type, text, className = "", hidden = false, size = "md", ac
3909
3642
  }
3910
3643
  };
3911
3644
  const { text: displayText, icon, textColor } = getTagContent();
3912
- return /* @__PURE__ */ jsxs22("div", { className: cn(baseClasses, className, hidden && "invisible"), children: [
3645
+ return /* @__PURE__ */ jsxs20("div", { className: cn(baseClasses, className, hidden && "invisible"), children: [
3913
3646
  icon,
3914
- /* @__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 })
3915
3648
  ] });
3916
3649
  }
3917
3650
 
3918
3651
  // src/components/selection-source-badge.tsx
3919
- import { jsx as jsx26 } from "react/jsx-runtime";
3652
+ import { jsx as jsx24 } from "react/jsx-runtime";
3920
3653
  function SelectionSourceBadge({ source, hidden = false }) {
3921
3654
  if (!source) {
3922
3655
  return null;
3923
3656
  }
3924
- return /* @__PURE__ */ jsx26(
3657
+ return /* @__PURE__ */ jsx24(
3925
3658
  VendorTag,
3926
3659
  {
3927
3660
  type: source?.toLowerCase(),
@@ -3932,596 +3665,33 @@ function SelectionSourceBadge({ source, hidden = false }) {
3932
3665
  );
3933
3666
  }
3934
3667
 
3935
- // src/components/loading/content-skeleton.tsx
3936
- import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
3937
- function ParagraphSkeleton({ className, lines = 4 }) {
3938
- const lineWidths = ["w-full", "w-full", "w-5/6", "w-3/4", "w-4/5", "w-2/3"];
3939
- 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)) });
3940
- }
3941
- function ListSkeleton({
3942
- className,
3943
- items = 5,
3944
- showIcons = false,
3945
- showActions = false
3946
- }) {
3947
- 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: [
3948
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
3949
- showIcons && /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
3950
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-32 md:w-48" })
3951
- ] }),
3952
- showActions && /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2", children: [
3953
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-8" }),
3954
- /* @__PURE__ */ jsx27(UnifiedSkeleton, { variant: "default", className: "h-4 w-4" })
3955
- ] })
3956
- ] }, index)) });
3957
- }
3958
- function TableSkeleton({
3959
- className,
3960
- rows = 5,
3961
- columns = 4
3962
- }) {
3963
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-4", className), children: [
3964
- /* @__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)) }),
3965
- /* @__PURE__ */ jsx27("div", { className: "space-y-3", children: Array.from({ length: rows }).map((_, rowIndex) => /* @__PURE__ */ jsx27(
3966
- "div",
3967
- {
3968
- className: "grid gap-4 border-b border-ods-divider py-2",
3969
- style: { gridTemplateColumns: `repeat(${columns}, 1fr)` },
3970
- children: Array.from({ length: columns }).map((_cell, colIndex) => /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" }, colIndex))
3971
- },
3972
- rowIndex
3973
- )) })
3974
- ] });
3975
- }
3976
- function FormSkeleton({ className, fields = 4 }) {
3977
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-6", className), children: [
3978
- Array.from({ length: fields }).map((_, index) => /* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
3979
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-24" }),
3980
- /* @__PURE__ */ jsx27(InteractiveSkeleton.Input, {}),
3981
- index % 3 === 0 && /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-48" })
3982
- ] }, index)),
3983
- /* @__PURE__ */ jsxs23("div", { className: "flex gap-4 pt-4", children: [
3984
- /* @__PURE__ */ jsx27(InteractiveSkeleton.Button, {}),
3985
- /* @__PURE__ */ jsx27(InteractiveSkeleton.Button, { className: "bg-ods-border" })
3986
- ] })
3987
- ] });
3988
- }
3989
- function NavigationSkeleton({
3990
- className,
3991
- items = 6,
3992
- horizontal = true
3993
- }) {
3994
- return /* @__PURE__ */ jsx27(
3995
- "nav",
3996
- {
3997
- className: cn("flex gap-4 md:gap-6", !horizontal && "flex-col", className),
3998
- role: "status",
3999
- "aria-label": "Loading navigation",
4000
- children: Array.from({ length: items }).map((_, index) => /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-16 md:w-20" }, index))
4001
- }
4002
- );
4003
- }
4004
- function ProfileSkeleton({
4005
- className,
4006
- showBio = true,
4007
- showStats = true
4008
- }) {
4009
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-4", className), children: [
4010
- /* @__PURE__ */ jsxs23("div", { className: "flex items-start gap-4", children: [
4011
- /* @__PURE__ */ jsx27(MediaSkeleton.Avatar, { size: "lg" }),
4012
- /* @__PURE__ */ jsxs23("div", { className: "flex-1 space-y-2", children: [
4013
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "w-1/2" }),
4014
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-1/3" }),
4015
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" })
4016
- ] })
4017
- ] }),
4018
- showBio && /* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
4019
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-full" }),
4020
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-4/5" }),
4021
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-3/4" })
4022
- ] }),
4023
- showStats && /* @__PURE__ */ jsxs23("div", { className: "flex gap-6", children: [
4024
- /* @__PURE__ */ jsxs23("div", { className: "text-center", children: [
4025
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "mx-auto w-8" }),
4026
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "mx-auto w-12" })
4027
- ] }),
4028
- /* @__PURE__ */ jsxs23("div", { className: "text-center", children: [
4029
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "mx-auto w-8" }),
4030
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "mx-auto w-16" })
4031
- ] }),
4032
- /* @__PURE__ */ jsxs23("div", { className: "text-center", children: [
4033
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "mx-auto w-8" }),
4034
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "mx-auto w-14" })
4035
- ] })
4036
- ] })
4037
- ] });
4038
- }
4039
- function CommentSkeleton({
4040
- className,
4041
- showRating = false,
4042
- showReplies = false
4043
- }) {
4044
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-3", className), children: [
4045
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
4046
- /* @__PURE__ */ jsx27(MediaSkeleton.Avatar, { size: "sm" }),
4047
- /* @__PURE__ */ jsxs23("div", { className: "flex flex-1 items-center gap-4", children: [
4048
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-24" }),
4049
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-16" }),
4050
- showRating && /* @__PURE__ */ jsx27("div", { className: "flex gap-1", children: Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }, i)) })
4051
- ] })
4052
- ] }),
4053
- /* @__PURE__ */ jsxs23("div", { className: "ml-11 space-y-2", children: [
4054
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-full" }),
4055
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-3/4" }),
4056
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-1/2" })
4057
- ] }),
4058
- /* @__PURE__ */ jsxs23("div", { className: "ml-11 flex gap-4", children: [
4059
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-12" }),
4060
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-16" }),
4061
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-8" })
4062
- ] }),
4063
- 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: [
4064
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
4065
- /* @__PURE__ */ jsx27(MediaSkeleton.Avatar, { size: "sm" }),
4066
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-20" }),
4067
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-12" })
4068
- ] }),
4069
- /* @__PURE__ */ jsxs23("div", { className: "ml-11", children: [
4070
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-full" }),
4071
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" })
4072
- ] })
4073
- ] }, index)) })
4074
- ] });
4075
- }
4076
- function FeatureListSkeleton({
4077
- className,
4078
- features = 6,
4079
- showIcons = true,
4080
- grouped = false
4081
- }) {
4082
- if (grouped) {
4083
- 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: [
4084
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "w-1/3" }),
4085
- /* @__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: [
4086
- showIcons && /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
4087
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" })
4088
- ] }, featureIndex)) })
4089
- ] }, groupIndex)) });
4090
- }
4091
- 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: [
4092
- showIcons && /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
4093
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-2/3" })
4094
- ] }, index)) });
4095
- }
4096
- function TimelineSkeleton({ className, items = 5 }) {
4097
- 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: [
4098
- /* @__PURE__ */ jsxs23("div", { className: "flex flex-col items-center", children: [
4099
- /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
4100
- index < items - 1 && /* @__PURE__ */ jsx27("div", { className: "mt-2 h-12 w-px bg-ods-border" })
4101
- ] }),
4102
- /* @__PURE__ */ jsxs23("div", { className: "flex-1 space-y-2", children: [
4103
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3", children: [
4104
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-1/3" }),
4105
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-16" })
4106
- ] }),
4107
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-full" }),
4108
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-3/4" })
4109
- ] })
4110
- ] }, index)) });
4111
- }
4112
- function PricingSkeleton({ className, plans = 3 }) {
4113
- return /* @__PURE__ */ jsx27(
4114
- "div",
4115
- {
4116
- className: cn(
4117
- "grid gap-6",
4118
- plans === 2 && "grid-cols-1 md:grid-cols-2",
4119
- plans === 3 && "grid-cols-1 md:grid-cols-3",
4120
- plans === 4 && "grid-cols-1 md:grid-cols-2 lg:grid-cols-4",
4121
- className
4122
- ),
4123
- 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: [
4124
- /* @__PURE__ */ jsx27(TextSkeleton.Subheading, { className: "w-1/2" }),
4125
- /* @__PURE__ */ jsxs23("div", { className: "space-y-1", children: [
4126
- /* @__PURE__ */ jsx27(TextSkeleton.Heading, { className: "w-1/3" }),
4127
- /* @__PURE__ */ jsx27(TextSkeleton.Caption, { className: "w-1/4" })
4128
- ] }),
4129
- /* @__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: [
4130
- /* @__PURE__ */ jsx27(MediaSkeleton.Icon, { size: "sm" }),
4131
- /* @__PURE__ */ jsx27(TextSkeleton.Body, { className: "w-3/4" })
4132
- ] }, featureIndex)) }),
4133
- /* @__PURE__ */ jsx27(InteractiveSkeleton.Button, { className: "w-full" })
4134
- ] }) }, index))
4135
- }
4136
- );
4137
- }
4138
-
4139
- // src/components/profile/ProfileLoadingSkeleton.tsx
4140
- import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
4141
- function ProfileLoadingSkeleton({ className }) {
4142
- return /* @__PURE__ */ jsxs24("div", { className: cn("space-y-6", className), children: [
4143
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center space-x-4", children: [
4144
- /* @__PURE__ */ jsx28("div", { className: "h-16 w-16 animate-pulse rounded-full bg-ods-skeleton" }),
4145
- /* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
4146
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-32 animate-pulse rounded bg-ods-skeleton" }),
4147
- /* @__PURE__ */ jsx28("div", { className: "h-3 w-24 animate-pulse rounded bg-ods-skeleton" })
4148
- ] })
4149
- ] }),
4150
- /* @__PURE__ */ jsxs24("div", { className: "space-y-4", children: [
4151
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-full animate-pulse rounded bg-ods-skeleton" }),
4152
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-3/4 animate-pulse rounded bg-ods-skeleton" }),
4153
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-1/2 animate-pulse rounded bg-ods-skeleton" })
4154
- ] })
4155
- ] });
4156
- }
4157
-
4158
- // src/components/loading/msp-profile-form-skeleton.tsx
4159
- import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
4160
- function MspProfileFormSkeleton({ className, fields = 4 }) {
4161
- return /* @__PURE__ */ jsxs25(
4162
- "div",
4163
- {
4164
- className: cn("grid grid-cols-1 items-stretch gap-6 md:grid-cols-2", className),
4165
- role: "status",
4166
- "aria-label": "Loading MSP profile form",
4167
- children: [
4168
- /* @__PURE__ */ jsxs25("div", { className: "flex h-full flex-col space-y-2", children: [
4169
- /* @__PURE__ */ jsx29(TextSkeleton.Body, { className: "w-28" }),
4170
- /* @__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" }) })
4171
- ] }),
4172
- /* @__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: [
4173
- /* @__PURE__ */ jsx29(TextSkeleton.Body, { className: "w-40" }),
4174
- /* @__PURE__ */ jsx29(InteractiveSkeleton.Input, {})
4175
- ] }, idx)) })
4176
- ]
4177
- }
4178
- );
4179
- }
4180
-
4181
- // src/components/loading/category-card-skeleton.tsx
4182
- import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
4183
- function CategoryCardSkeleton({ className }) {
4184
- return /* @__PURE__ */ jsxs26(
4185
- "article",
4186
- {
4187
- className: cn(
4188
- "box-border flex min-w-0 flex-col rounded-[12px] border border-ods-border bg-ods-card p-8",
4189
- className
4190
- ),
4191
- role: "status",
4192
- "aria-label": "Loading category card",
4193
- children: [
4194
- /* @__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)) }),
4195
- /* @__PURE__ */ jsxs26("div", { className: "flex flex-1 flex-col space-y-3", children: [
4196
- /* @__PURE__ */ jsx30(TextSkeleton.Heading, { className: "w-3/4" }),
4197
- /* @__PURE__ */ jsx30(TextSkeleton.Body, { className: "w-1/2" }),
4198
- /* @__PURE__ */ jsx30(TextSkeleton.Body, { className: "w-full" })
4199
- ] }),
4200
- /* @__PURE__ */ jsx30("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ jsx30(UnifiedSkeleton, { className: "h-12 w-12 rounded-[6px]", "aria-label": "Loading button" }) })
4201
- ]
4202
- }
4203
- );
4204
- }
4205
-
4206
- // src/components/loading/category-vendor-selector-skeleton.tsx
4207
- import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
4208
- function CategoryVendorSelectorSkeleton({ subcategories = 3, className }) {
4209
- return /* @__PURE__ */ jsxs27(
4210
- "div",
4211
- {
4212
- className: cn("rounded-lg border border-ods-border bg-ods-card p-6", className),
4213
- role: "status",
4214
- "aria-label": "Loading category section",
4215
- children: [
4216
- /* @__PURE__ */ jsxs27("div", { className: "mb-6 max-w-xl space-y-2", children: [
4217
- /* @__PURE__ */ jsx31(TextSkeleton.Heading, { className: "w-1/2" }),
4218
- /* @__PURE__ */ jsx31(TextSkeleton.Body, { className: "w-3/4" })
4219
- ] }),
4220
- /* @__PURE__ */ jsx31("div", { className: "space-y-6", children: Array.from({ length: subcategories }).map((_, idx) => /* @__PURE__ */ jsxs27("div", { className: "space-y-2", children: [
4221
- /* @__PURE__ */ jsx31(TextSkeleton.Subheading, { className: "w-1/3" }),
4222
- /* @__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)) })
4223
- ] }, idx)) })
4224
- ]
4225
- }
4226
- );
4227
- }
4228
-
4229
- // src/components/loading/wizard-layout-skeleton.tsx
4230
- import { jsx as jsx32, jsxs as jsxs28 } from "react/jsx-runtime";
4231
- function WizardLayoutSkeleton({ steps = 6, className }) {
4232
- return /* @__PURE__ */ jsxs28("div", { className: cn("space-y-6", className), role: "status", "aria-label": "Loading wizard layout", children: [
4233
- /* @__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)) }),
4234
- /* @__PURE__ */ jsxs28("div", { className: "max-w-2xl space-y-2", children: [
4235
- /* @__PURE__ */ jsx32(TextSkeleton.Heading, { className: "w-2/3" }),
4236
- /* @__PURE__ */ jsx32(TextSkeleton.Body, { className: "w-1/2" })
4237
- ] }),
4238
- /* @__PURE__ */ jsxs28("div", { className: "mt-10 flex justify-between", children: [
4239
- /* @__PURE__ */ jsx32(UnifiedSkeleton, { className: "h-10 w-24 rounded" }),
4240
- /* @__PURE__ */ jsx32(UnifiedSkeleton, { className: "h-10 w-32 rounded" })
4241
- ] })
4242
- ] });
4243
- }
4244
-
4245
- // src/components/loading/margin-report-skeleton.tsx
4246
- import { jsx as jsx33, jsxs as jsxs29 } from "react/jsx-runtime";
4247
- function MarginReportSkeleton({ animate = true, description, overlayContent }) {
4248
- return /* @__PURE__ */ jsxs29("main", { className: `bg-ods-bg ${animate ? "animate-pulse" : ""} relative min-h-screen`, children: [
4249
- /* @__PURE__ */ jsxs29("div", { className: "mx-auto max-w-[1920px] space-y-10 px-6 py-6 md:px-20 md:py-10", children: [
4250
- /* @__PURE__ */ jsxs29("div", { className: "space-y-3", children: [
4251
- /* @__PURE__ */ jsx33("div", { className: "h-10 w-72 rounded bg-ods-skeleton" }),
4252
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-80 rounded bg-ods-skeleton" })
4253
- ] }),
4254
- /* @__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)) }),
4255
- /* @__PURE__ */ jsxs29("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: [
4256
- /* @__PURE__ */ jsxs29("div", { className: "flex animate-pulse items-center gap-4 rounded-lg border border-ods-border bg-ods-card p-6", children: [
4257
- /* @__PURE__ */ jsx33("div", { className: "h-14 w-14 rounded-lg bg-ods-skeleton" }),
4258
- /* @__PURE__ */ jsxs29("div", { className: "flex-1 space-y-2", children: [
4259
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-3/4 rounded bg-ods-skeleton" }),
4260
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-1/2 rounded bg-ods-skeleton" })
4261
- ] })
4262
- ] }),
4263
- /* @__PURE__ */ jsxs29("div", { className: "flex animate-pulse flex-col gap-4 rounded-lg border border-ods-border bg-ods-card p-6", children: [
4264
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center justify-between gap-4", children: [
4265
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
4266
- /* @__PURE__ */ jsx33("div", { className: "h-10 w-10 rounded-lg bg-ods-skeleton" }),
4267
- /* @__PURE__ */ jsxs29("div", { className: "space-y-1", children: [
4268
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-32 rounded bg-ods-skeleton" }),
4269
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-20 rounded bg-ods-skeleton" })
4270
- ] })
4271
- ] }),
4272
- /* @__PURE__ */ jsx33("div", { className: "h-6 w-36 rounded bg-ods-skeleton" })
4273
- ] }),
4274
- /* @__PURE__ */ jsx33("div", { className: "mt-4 h-4 w-40 rounded bg-ods-skeleton" })
4275
- ] })
4276
- ] }),
4277
- /* @__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(
4278
- "div",
4279
- {
4280
- className: "flex animate-pulse flex-col overflow-hidden rounded-lg border border-ods-border bg-ods-card",
4281
- children: [
4282
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center justify-between px-6 py-4", children: [
4283
- /* @__PURE__ */ jsx33("div", { className: "h-6 w-40 rounded bg-ods-skeleton" }),
4284
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
4285
- /* @__PURE__ */ jsx33("div", { className: "h-5 w-20 rounded bg-ods-skeleton" }),
4286
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-10 rounded bg-ods-skeleton" })
4287
- ] })
4288
- ] }),
4289
- /* @__PURE__ */ jsx33("div", { className: "flex flex-1 flex-col gap-3 p-3", children: Array.from({ length: 5 }).map((_, j) => /* @__PURE__ */ jsxs29(
4290
- "div",
4291
- {
4292
- className: "flex items-center justify-between rounded-lg border border-ods-border bg-ods-bg px-4 py-3",
4293
- children: [
4294
- /* @__PURE__ */ jsxs29("div", { className: "flex min-w-0 items-center gap-3", children: [
4295
- /* @__PURE__ */ jsx33("div", { className: "h-12 w-12 flex-shrink-0 rounded-lg bg-ods-skeleton" }),
4296
- /* @__PURE__ */ jsxs29("div", { className: "flex min-w-0 flex-col", children: [
4297
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-32 rounded bg-ods-skeleton" }),
4298
- /* @__PURE__ */ jsx33("div", { className: "mt-1 hidden h-3 w-24 rounded bg-ods-skeleton md:block" })
4299
- ] })
4300
- ] }),
4301
- /* @__PURE__ */ jsxs29("div", { className: "flex flex-shrink-0 items-center gap-1", children: [
4302
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-16 rounded bg-ods-skeleton" }),
4303
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-8 rounded bg-ods-skeleton" })
4304
- ] })
4305
- ]
4306
- },
4307
- j
4308
- )) })
4309
- ]
4310
- },
4311
- idx
4312
- )) }),
4313
- /* @__PURE__ */ jsx33("div", { className: "h-6 w-60 rounded bg-ods-skeleton" }),
4314
- /* @__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)) }),
4315
- /* @__PURE__ */ jsxs29("div", { className: "space-y-6 rounded-3xl border border-ods-border p-8", children: [
4316
- /* @__PURE__ */ jsxs29("div", { className: "flex items-start gap-6", children: [
4317
- /* @__PURE__ */ jsxs29("div", { className: "min-w-0 flex-1 space-y-2", children: [
4318
- /* @__PURE__ */ jsx33("div", { className: "h-8 w-72 rounded bg-ods-skeleton" }),
4319
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-3/4 rounded bg-ods-skeleton" })
4320
- ] }),
4321
- /* @__PURE__ */ jsx33("div", { className: "h-12 w-12 shrink-0 rounded-md bg-ods-skeleton" })
4322
- ] }),
4323
- /* @__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)) })
4324
- ] })
4325
- ] }),
4326
- 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: [
4327
- description && /* @__PURE__ */ jsx33("h3", { children: description }),
4328
- overlayContent
4329
- ] }) })
4330
- ] });
4331
- }
4332
-
4333
- // src/components/loading/users-grid-skeleton.tsx
4334
- import { jsx as jsx34, jsxs as jsxs30 } from "react/jsx-runtime";
4335
- function UsersGridSkeleton({ rows = 10, className }) {
4336
- const skeletonRows = Array.from({ length: rows });
4337
- 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: [
4338
- /* @__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)) }) }),
4339
- /* @__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)) })
4340
- ] }) });
4341
- }
4342
-
4343
- // src/components/loading/organization-icon-skeleton.tsx
4344
- import { jsx as jsx35 } from "react/jsx-runtime";
4345
- var sizeClasses2 = {
4346
- xs: "w-6 h-6",
4347
- sm: "w-8 h-8",
4348
- md: "w-10 h-10",
4349
- lg: "w-12 h-12",
4350
- l: "w-14 h-14",
4351
- xl: "w-16 h-16"
4352
- };
4353
- var backgroundClasses2 = {
4354
- dark: "bg-ods-bg border border-ods-border",
4355
- light: "bg-ods-card border border-ods-border",
4356
- white: "bg-white border border-[#E5E5E5]"
4357
- };
4358
- function OrganizationIconSkeleton({
4359
- size = "md",
4360
- className = "",
4361
- showBackground = true,
4362
- backgroundStyle = "dark"
4363
- }) {
4364
- const containerClasses = cn(
4365
- sizeClasses2[size],
4366
- "flex flex-shrink-0 items-center justify-center rounded-lg",
4367
- showBackground && backgroundClasses2[backgroundStyle],
4368
- !showBackground && "overflow-hidden",
4369
- className
4370
- );
4371
- 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" }) });
4372
- }
4373
-
4374
- // src/components/loading/organization-card-skeleton.tsx
4375
- import { jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
4376
- function OrganizationCardSkeleton({
4377
- className,
4378
- containerClassName,
4379
- showFooter = true,
4380
- showDescription = true
4381
- }) {
4382
- return /* @__PURE__ */ jsx36(
4383
- "div",
4384
- {
4385
- className: cn(
4386
- containerClassName || "border border-ods-border bg-ods-card",
4387
- "flex h-full flex-col overflow-hidden rounded-lg",
4388
- className
4389
- ),
4390
- role: "status",
4391
- "aria-label": "Loading organization card",
4392
- children: /* @__PURE__ */ jsxs31("div", { className: "flex flex-col gap-3 p-4", children: [
4393
- /* @__PURE__ */ jsxs31("div", { className: "flex w-full items-start gap-3", children: [
4394
- /* @__PURE__ */ jsx36(
4395
- OrganizationIconSkeleton,
4396
- {
4397
- size: "xl",
4398
- backgroundStyle: "dark",
4399
- showBackground: true,
4400
- className: "h-[60px] w-[60px]"
4401
- }
4402
- ),
4403
- /* @__PURE__ */ jsxs31("div", { className: "flex min-w-0 flex-1 flex-col justify-center space-y-1 py-2", children: [
4404
- /* @__PURE__ */ jsx36(TextSkeleton.Subheading, { className: "w-3/4" }),
4405
- /* @__PURE__ */ jsx36(TextSkeleton.Caption, { className: "w-1/2" })
4406
- ] })
4407
- ] }),
4408
- 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: [
4409
- /* @__PURE__ */ jsx36(TextSkeleton.Body, { className: "w-full" }),
4410
- /* @__PURE__ */ jsx36(TextSkeleton.Body, { className: "w-2/3" })
4411
- ] }) }),
4412
- showFooter && /* @__PURE__ */ jsxs31("div", { className: "flex w-full min-w-0 items-center justify-between gap-2", children: [
4413
- /* @__PURE__ */ jsxs31("div", { className: "flex min-w-0 flex-shrink items-center gap-3 md:gap-4", children: [
4414
- /* @__PURE__ */ jsxs31("div", { className: "flex flex-shrink-0 items-center gap-1", children: [
4415
- /* @__PURE__ */ jsx36(MediaSkeleton.Icon, { size: "sm", className: "h-5 w-5" }),
4416
- /* @__PURE__ */ jsx36(TextSkeleton.Caption, { className: "w-8" })
4417
- ] }),
4418
- /* @__PURE__ */ jsxs31("div", { className: "flex flex-shrink-0 items-center gap-1", children: [
4419
- /* @__PURE__ */ jsx36(MediaSkeleton.Icon, { size: "sm", className: "h-5 w-5" }),
4420
- /* @__PURE__ */ jsx36(TextSkeleton.Caption, { className: "w-10" })
4421
- ] })
4422
- ] }),
4423
- /* @__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: [
4424
- /* @__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" }) }),
4425
- /* @__PURE__ */ jsx36(TextSkeleton.Caption, { className: "w-16" })
4426
- ] }) })
4427
- ] })
4428
- ] })
4429
- }
4430
- );
4431
- }
4432
- function OrganizationCardSkeletonGrid({
4433
- count = 12,
4434
- className,
4435
- containerClassName,
4436
- showFooter = true,
4437
- showDescription = true
4438
- }) {
4439
- return /* @__PURE__ */ jsx36(
4440
- "div",
4441
- {
4442
- className: cn("grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6 lg:grid-cols-3", className),
4443
- role: "status",
4444
- "aria-label": `Loading ${count} organization cards`,
4445
- children: Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsx36(
4446
- OrganizationCardSkeleton,
4447
- {
4448
- containerClassName,
4449
- showFooter,
4450
- showDescription
4451
- },
4452
- index
4453
- ))
4454
- }
4455
- );
4456
- }
4457
-
4458
- // src/components/loading/device-card-skeleton.tsx
4459
- import { jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
4460
- function DeviceCardSkeleton({ className }) {
4461
- return /* @__PURE__ */ jsxs32(
4462
- "div",
4463
- {
4464
- className: cn("h-full rounded-[6px] border border-ods-border bg-ods-card", className),
4465
- role: "status",
4466
- "aria-label": "Loading device card",
4467
- children: [
4468
- /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-4 px-4 py-3", children: [
4469
- /* @__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" }) }),
4470
- /* @__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" }) }),
4471
- /* @__PURE__ */ jsx37("div", { className: "h-12 w-12 flex-shrink-0 animate-pulse rounded-[6px] bg-ods-border" })
4472
- ] }),
4473
- /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-4 px-4 py-2", children: [
4474
- /* @__PURE__ */ jsx37("div", { className: "h-6 w-24 flex-shrink-0 animate-pulse rounded bg-ods-border" }),
4475
- /* @__PURE__ */ jsx37(OrganizationIconSkeleton, { size: "sm" }),
4476
- /* @__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" }) })
4477
- ] }),
4478
- /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-4 px-4 py-2", children: [
4479
- /* @__PURE__ */ jsx37("div", { className: "h-6 w-20 flex-shrink-0 animate-pulse rounded-full bg-ods-border" }),
4480
- /* @__PURE__ */ jsx37("div", { className: "flex-1", children: /* @__PURE__ */ jsx37("div", { className: "h-5 w-40 animate-pulse rounded bg-ods-border" }) })
4481
- ] })
4482
- ]
4483
- }
4484
- );
4485
- }
4486
- function DeviceCardSkeletonGrid({ count = 12, className }) {
4487
- return /* @__PURE__ */ jsx37(
4488
- "div",
4489
- {
4490
- className: cn("grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4", className),
4491
- role: "status",
4492
- "aria-label": `Loading ${count} device cards`,
4493
- children: Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsx37(DeviceCardSkeleton, {}, index))
4494
- }
4495
- );
4496
- }
4497
-
4498
3668
  // src/components/vendor-page-skeleton.tsx
4499
- import { jsx as jsx38 } from "react/jsx-runtime";
3669
+ import { jsx as jsx25 } from "react/jsx-runtime";
4500
3670
  function VendorPageSkeleton() {
4501
- return /* @__PURE__ */ jsx38(VendorDetailLayoutSkeleton, {});
3671
+ return /* @__PURE__ */ jsx25(VendorDetailLayoutSkeleton, {});
4502
3672
  }
4503
3673
 
4504
3674
  // src/components/why-it-matters.tsx
4505
- import { jsx as jsx39, jsxs as jsxs33 } from "react/jsx-runtime";
3675
+ import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
4506
3676
 
4507
3677
  // src/components/yes-no-display.tsx
4508
- import { jsx as jsx40, jsxs as jsxs34 } from "react/jsx-runtime";
3678
+ import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
4509
3679
  function YesNoDisplay({ value, yesText = "Yes", noText = "No", customText, className = "" }) {
4510
3680
  if (customText) {
4511
- return /* @__PURE__ */ jsxs34("div", { className: `flex items-center gap-2 ${className}`, children: [
4512
- /* @__PURE__ */ jsx40(CheckCircleIcon2, { className: "h-6 w-6" }),
4513
- /* @__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 })
4514
3684
  ] });
4515
3685
  }
4516
3686
  if (value) {
4517
- return /* @__PURE__ */ jsxs34("div", { className: `flex items-center gap-2 ${className}`, children: [
4518
- /* @__PURE__ */ jsx40(CheckCircleIcon2, { className: "h-6 w-6" }),
4519
- /* @__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 })
4520
3690
  ] });
4521
3691
  }
4522
- return /* @__PURE__ */ jsxs34("div", { className: `flex items-center gap-2 ${className}`, children: [
4523
- /* @__PURE__ */ jsx40(XCircleIcon, { className: "h-6 w-6" }),
4524
- /* @__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 })
4525
3695
  ] });
4526
3696
  }
4527
3697
  function evaluateFeatureValue(value, dataType) {
@@ -4556,7 +3726,7 @@ function evaluateFeatureValue(value, dataType) {
4556
3726
 
4557
3727
  // src/components/made-with-love.tsx
4558
3728
  import { useState as useState6, useEffect as useEffect3 } from "react";
4559
- import { jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
3729
+ import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
4560
3730
  function MadeWithLove({ className = "", size = "md", showOnMobile = true }) {
4561
3731
  const [isMobile, setIsMobile] = useState6(false);
4562
3732
  const [isHovered, setIsHovered] = useState6(false);
@@ -4626,9 +3796,9 @@ function MadeWithLove({ className = "", size = "md", showOnMobile = true }) {
4626
3796
  marginLeft: "4px",
4627
3797
  textDecoration: "none"
4628
3798
  };
4629
- return /* @__PURE__ */ jsxs35("div", { style: containerStyle, className, children: [
3799
+ return /* @__PURE__ */ jsxs23("div", { style: containerStyle, className, children: [
4630
3800
  "Made with love by",
4631
- /* @__PURE__ */ jsxs35(
3801
+ /* @__PURE__ */ jsxs23(
4632
3802
  "a",
4633
3803
  {
4634
3804
  href: flamingoUrl,
@@ -4638,14 +3808,14 @@ function MadeWithLove({ className = "", size = "md", showOnMobile = true }) {
4638
3808
  onMouseEnter: () => setIsHovered(true),
4639
3809
  onMouseLeave: () => setIsHovered(false),
4640
3810
  children: [
4641
- /* @__PURE__ */ jsx41("div", { style: logoStyle, children: /* @__PURE__ */ jsx41(
3811
+ /* @__PURE__ */ jsx28("div", { style: logoStyle, children: /* @__PURE__ */ jsx28(
4642
3812
  FlamingoLogo2,
4643
3813
  {
4644
3814
  size: config.logoSize,
4645
3815
  color: "#f357bb"
4646
3816
  }
4647
3817
  ) }),
4648
- /* @__PURE__ */ jsx41("span", { style: textStyle, children: "Flamingo" })
3818
+ /* @__PURE__ */ jsx28("span", { style: textStyle, children: "Flamingo" })
4649
3819
  ]
4650
3820
  }
4651
3821
  )
@@ -4654,7 +3824,7 @@ function MadeWithLove({ className = "", size = "md", showOnMobile = true }) {
4654
3824
 
4655
3825
  // src/components/date-time-picker.tsx
4656
3826
  import DatePicker2 from "react-datepicker";
4657
- import { jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
3827
+ import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
4658
3828
  var inputClassName = cn(
4659
3829
  "flex h-10 w-full rounded-md border px-3 py-2 text-sm ring-offset-background",
4660
3830
  "file:border-0 file:bg-transparent file:text-sm file:font-medium",
@@ -4678,9 +3848,9 @@ function DateTimePicker({
4678
3848
  timeIntervals = 15,
4679
3849
  dateFormat = "MMMM d, yyyy h:mm aa"
4680
3850
  }) {
4681
- return /* @__PURE__ */ jsxs36("div", { className: cn("space-y-2", className), children: [
4682
- label && /* @__PURE__ */ jsx42(Label, { className: "font-semibold text-ods-text-secondary text-h5", children: label }),
4683
- /* @__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(
4684
3854
  DatePicker2,
4685
3855
  {
4686
3856
  selected: value,
@@ -4695,7 +3865,7 @@ function DateTimePicker({
4695
3865
  className: inputClassName
4696
3866
  }
4697
3867
  ) }),
4698
- /* @__PURE__ */ jsx42(
3868
+ /* @__PURE__ */ jsx29(
4699
3869
  "style",
4700
3870
  {
4701
3871
  dangerouslySetInnerHTML: {
@@ -4806,7 +3976,7 @@ function DateTimePicker({
4806
3976
  }
4807
3977
 
4808
3978
  // src/components/authors/author-detail-view.tsx
4809
- import { jsx as jsx43, jsxs as jsxs37 } from "react/jsx-runtime";
3979
+ import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
4810
3980
  function AuthorDetailView({ author, proxyImageUrl, children, className }) {
4811
3981
  const runtime = useChatRuntime();
4812
3982
  const proxiedAvatar = author.avatarUrl ? proxyImageUrl ? proxyImageUrl(author.avatarUrl) : getProxiedImageUrl(author.avatarUrl, {
@@ -4816,14 +3986,14 @@ function AuthorDetailView({ author, proxyImageUrl, children, className }) {
4816
3986
  }) ?? author.avatarUrl : null;
4817
3987
  const subtitle = [author.jobTitle, author.company].filter(Boolean).join(" @ ");
4818
3988
  const bioText = formatBioText(author.about);
4819
- return /* @__PURE__ */ jsxs37("div", { className: cn("flex flex-col gap-5 md:gap-6", className), children: [
4820
- /* @__PURE__ */ jsxs37("div", { className: "flex w-full items-start gap-6", children: [
4821
- /* @__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() }) }) }),
4822
- /* @__PURE__ */ jsxs37("div", { className: "flex min-w-0 flex-col justify-center gap-2", children: [
4823
- /* @__PURE__ */ jsx43("p", { className: "truncate leading-none text-ods-text-primary text-h2", children: author.fullName }),
4824
- 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 }),
4825
3995
  author.socialLinks.length > 0 && // Ghost compact row (transparent 32px) — metadata, not CTAs.
4826
- /* @__PURE__ */ jsx43(
3996
+ /* @__PURE__ */ jsx30(
4827
3997
  SocialIconRow,
4828
3998
  {
4829
3999
  compact: true,
@@ -4836,8 +4006,8 @@ function AuthorDetailView({ author, proxyImageUrl, children, className }) {
4836
4006
  )
4837
4007
  ] })
4838
4008
  ] }),
4839
- bioText && /* @__PURE__ */ jsx43("p", { className: "text-ods-text-secondary text-h6", children: bioText }),
4840
- 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)) }),
4841
4011
  children
4842
4012
  ] });
4843
4013
  }
@@ -5792,6 +4962,7 @@ export {
5792
4962
  UsersGridSkeleton,
5793
4963
  UsersGroupIcon,
5794
4964
  UsersIcon,
4965
+ VIDEO_PLAYBACK_FAILED_EVENT,
5795
4966
  VendorDetailLayoutSkeleton,
5796
4967
  VendorDirectoryIcon,
5797
4968
  VendorDisplayButton,