@eventcatalog/core 3.18.5 → 3.19.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 (77) hide show
  1. package/dist/analytics/analytics.cjs +1 -1
  2. package/dist/analytics/analytics.js +2 -2
  3. package/dist/analytics/log-build.cjs +1 -1
  4. package/dist/analytics/log-build.js +3 -3
  5. package/dist/catalog-to-astro-content-directory.cjs +1 -1
  6. package/dist/{chunk-JEZODNLN.js → chunk-26A45SNU.js} +1 -1
  7. package/dist/{chunk-2IVWMV2T.js → chunk-6OQXRJWI.js} +1 -1
  8. package/dist/{chunk-5J4CB7HN.js → chunk-FK7TCLJJ.js} +1 -1
  9. package/dist/{chunk-Z3BWXNQW.js → chunk-NXKN2YAU.js} +1 -1
  10. package/dist/{chunk-SSNGN2OB.js → chunk-XKHNXR3Q.js} +1 -1
  11. package/dist/constants.cjs +1 -1
  12. package/dist/constants.js +1 -1
  13. package/dist/eventcatalog.cjs +2 -2
  14. package/dist/eventcatalog.js +5 -5
  15. package/dist/generate.cjs +1 -1
  16. package/dist/generate.js +3 -3
  17. package/dist/utils/cli-logger.cjs +1 -1
  18. package/dist/utils/cli-logger.js +2 -2
  19. package/eventcatalog/astro.config.mjs +33 -2
  20. package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +3 -3
  21. package/eventcatalog/src/components/ChatPanel/ChatPanelButton.tsx +1 -1
  22. package/eventcatalog/src/components/CopyAsMarkdown.tsx +9 -9
  23. package/eventcatalog/src/components/EnvironmentDropdown.tsx +1 -1
  24. package/eventcatalog/src/components/Grids/DomainGrid.tsx +6 -6
  25. package/eventcatalog/src/components/Grids/MessageGrid.tsx +5 -5
  26. package/eventcatalog/src/components/Grids/components.tsx +3 -3
  27. package/eventcatalog/src/components/Header.astro +6 -6
  28. package/eventcatalog/src/components/MDX/Accordion/Accordion.tsx +1 -1
  29. package/eventcatalog/src/components/MDX/Accordion/AccordionGroup.astro +1 -1
  30. package/eventcatalog/src/components/MDX/Attachments.astro +1 -1
  31. package/eventcatalog/src/components/MDX/EntityPropertiesTable/EntityPropertiesTable.astro +1 -1
  32. package/eventcatalog/src/components/MDX/MessageTable/MessageTable.client.tsx +2 -2
  33. package/eventcatalog/src/components/MDX/NodeGraph/NodeGraphPortal.tsx +1 -1
  34. package/eventcatalog/src/components/MDX/RemoteFile.astro +1 -1
  35. package/eventcatalog/src/components/MDX/ResourceGroupTable/ResourceGroupTable.client.tsx +2 -2
  36. package/eventcatalog/src/components/MDX/SchemaViewer/SchemaViewerRoot.astro +1 -1
  37. package/eventcatalog/src/components/MDX/Tabs/Tabs.astro +1 -1
  38. package/eventcatalog/src/components/MDX/Tiles/Tile.astro +1 -1
  39. package/eventcatalog/src/components/SchemaExplorer/AvroSchemaViewer.tsx +6 -6
  40. package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.tsx +10 -10
  41. package/eventcatalog/src/components/SchemaExplorer/OwnersSection.tsx +1 -1
  42. package/eventcatalog/src/components/SchemaExplorer/ProducersConsumersSection.tsx +2 -2
  43. package/eventcatalog/src/components/SchemaExplorer/SchemaCodeModal.tsx +2 -2
  44. package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +3 -3
  45. package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsHeader.tsx +5 -5
  46. package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +3 -3
  47. package/eventcatalog/src/components/SchemaExplorer/SchemaViewerModal.tsx +2 -2
  48. package/eventcatalog/src/components/SchemaExplorer/VersionHistoryModal.tsx +2 -2
  49. package/eventcatalog/src/components/Search/Search.astro +1 -1
  50. package/eventcatalog/src/components/Search/SearchModal.tsx +1 -1
  51. package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +1 -1
  52. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +2 -2
  53. package/eventcatalog/src/components/Studio/StudioPageModal.tsx +2 -2
  54. package/eventcatalog/src/components/Tables/Discover/DiscoverTable.tsx +4 -4
  55. package/eventcatalog/src/components/Tables/Table.tsx +2 -2
  56. package/eventcatalog/src/enterprise/auth/error.astro +3 -2
  57. package/eventcatalog/src/enterprise/auth/login.astro +1 -0
  58. package/eventcatalog/src/enterprise/auth/unauthorized.astro +2 -2
  59. package/eventcatalog/src/enterprise/plans/index.astro +15 -15
  60. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +3 -0
  61. package/eventcatalog/src/layouts/VisualiserLayout.astro +1 -1
  62. package/eventcatalog/src/pages/diagrams/[id]/[version]/embed.astro +1 -0
  63. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -1
  64. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -1
  65. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +1 -1
  66. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -1
  67. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -1
  68. package/eventcatalog/src/pages/docs/custom/feature.astro +6 -6
  69. package/eventcatalog/src/pages/docs/custom/index.astro +6 -6
  70. package/eventcatalog/src/pages/index.astro +1 -1
  71. package/eventcatalog/src/pages/schemas/explorer/index.astro +1 -1
  72. package/eventcatalog/src/pages/studio.astro +3 -3
  73. package/eventcatalog/src/remark-plugins/directives.ts +1 -1
  74. package/eventcatalog/src/styles/tailwind.css +84 -0
  75. package/eventcatalog/src/utils/icon-map.ts +76 -0
  76. package/package.json +7 -7
  77. package/eventcatalog/tailwind.config.mjs +0 -103
@@ -284,7 +284,7 @@ const MessageTable = (props: MessageTableProps) => {
284
284
  <div className="overflow-x-auto">
285
285
  <div className="inline-block min-w-full py-2 align-middle">
286
286
  <div className="max-w-full overflow-hidden">
287
- <table className="min-w-full table-fixed divide-y divide-[rgb(var(--ec-page-border))] rounded-sm bg-[rgb(var(--ec-page-bg))]">
287
+ <table className="min-w-full table-fixed divide-y divide-[rgb(var(--ec-page-border))] rounded-xs bg-[rgb(var(--ec-page-bg))]">
288
288
  <thead>
289
289
  <tr>
290
290
  <th
@@ -373,7 +373,7 @@ const MessageTable = (props: MessageTableProps) => {
373
373
  </p>
374
374
  </div>
375
375
  <div>
376
- <nav className="isolate inline-flex -space-x-px rounded-md shadow-sm" aria-label="Pagination">
376
+ <nav className="isolate inline-flex -space-x-px rounded-md shadow-xs" aria-label="Pagination">
377
377
  <button
378
378
  onClick={() => setCurrentPage(currentPage - 1)}
379
379
  disabled={currentPage === 1}
@@ -1,7 +1,7 @@
1
1
  const NodeGraphPortal = (props: any) => {
2
2
  return (
3
3
  <div
4
- className="h-[30em] my-6 mb-12 w-full relative !border !border-[rgb(var(--ec-page-border))] rounded-md overflow-hidden"
4
+ className="h-[30em] my-6 mb-12 w-full relative border! border-[rgb(var(--ec-page-border))]! rounded-md overflow-hidden"
5
5
  id={`${props.id}-portal`}
6
6
  style={{
7
7
  maxHeight: props.maxHeight ? `${props.maxHeight}em` : `30em`,
@@ -141,7 +141,7 @@ if (renderAs === 'auto') {
141
141
  <div class="remote-file-content">
142
142
  {finalRenderAs === 'schema' ? (
143
143
  <div class="not-prose my-4">
144
- {title && <h2 class="text-3xl font-bold mb-2 !mt-0">{title}</h2>}
144
+ {title && <h2 class="text-3xl font-bold mb-2 mt-0!">{title}</h2>}
145
145
  <JSONSchemaViewer client:load schema={processedData} maxHeight={maxHeight} expand={false} search={true} />
146
146
  </div>
147
147
  ) : (
@@ -290,7 +290,7 @@ const ResourceGroupTable = (props: ResourceGroupTableProps) => {
290
290
  <div className="overflow-x-auto">
291
291
  <div className="inline-block min-w-full py-2 align-middle">
292
292
  <div className="max-w-full overflow-hidden">
293
- <table className="min-w-full table-fixed divide-y divide-[rgb(var(--ec-page-border))] rounded-sm bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))]">
293
+ <table className="min-w-full table-fixed divide-y divide-[rgb(var(--ec-page-border))] rounded-xs bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))]">
294
294
  <thead>
295
295
  <tr>
296
296
  <th
@@ -387,7 +387,7 @@ const ResourceGroupTable = (props: ResourceGroupTableProps) => {
387
387
  </p>
388
388
  </div>
389
389
  <div>
390
- <nav className="isolate inline-flex -space-x-px rounded-md shadow-sm" aria-label="Pagination">
390
+ <nav className="isolate inline-flex -space-x-px rounded-md shadow-xs" aria-label="Pagination">
391
391
  <button
392
392
  onClick={() => setCurrentPage(currentPage - 1)}
393
393
  disabled={currentPage === 1}
@@ -76,7 +76,7 @@ try {
76
76
  data-expand={schema.expand ? 'true' : 'false'}
77
77
  data-search={schema.search !== false ? 'true' : 'false'}
78
78
  >
79
- {schema.title && <h2 class="text-2xl font-bold mb-2 !mt-0">{schema.title}</h2>}
79
+ {schema.title && <h2 class="text-2xl font-bold mb-2 mt-0!">{schema.title}</h2>}
80
80
 
81
81
  {/* Render AvroSchemaViewer for Avro schemas */}
82
82
  {schema.isAvroSchema ? (
@@ -41,7 +41,7 @@ const tabsId = Math.random().toString(36).substring(2, 9);
41
41
  {
42
42
  tabItems.map((item) => (
43
43
  <button
44
- class="whitespace-nowrap py-4 px-1 border-b-2 px-6 font-bold text-sm border-transparent text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] hover:border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] focus:outline-none tab-button"
44
+ class="whitespace-nowrap py-4 px-1 border-b-2 px-6 font-bold text-sm border-transparent text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] hover:border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] focus:outline-hidden tab-button"
45
45
  data-tab={item.id}
46
46
  aria-selected="false"
47
47
  >
@@ -28,7 +28,7 @@ function startsWithProtocol(str: string) {
28
28
  <a
29
29
  href={startsWithProtocol(href) ? href : buildUrl(href)}
30
30
  target={openWindow ? '_blank' : '_self'}
31
- class="tile-card block relative bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl p-8 h-48 transition-all duration-300 ease-out hover:border-[rgb(var(--ec-accent)/0.5)] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2 overflow-hidden"
31
+ class="tile-card block relative bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl p-8 h-48 transition-all duration-300 ease-out hover:border-[rgb(var(--ec-accent)/0.5)] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2 overflow-hidden"
32
32
  >
33
33
  <!-- Icon centered in card with grid background -->
34
34
  <div class="relative h-full flex items-center justify-center">
@@ -320,12 +320,12 @@ export default function AvroSchemaViewer({
320
320
 
321
321
  return (
322
322
  <div
323
- className={`${heightClass} ${overflowClass} flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md shadow-sm`}
323
+ className={`${heightClass} ${overflowClass} flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md shadow-xs`}
324
324
  style={containerStyle}
325
325
  >
326
326
  {/* Toolbar */}
327
327
  {searchBool && (
328
- <div className="flex-shrink-0 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] pt-4 px-4 pb-3 border-b border-[rgb(var(--ec-page-border))] shadow-sm">
328
+ <div className="flex-shrink-0 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] pt-4 px-4 pb-3 border-b border-[rgb(var(--ec-page-border))] shadow-xs">
329
329
  <div className="flex flex-col sm:flex-row gap-3">
330
330
  <div className="flex-1 relative">
331
331
  <input
@@ -334,7 +334,7 @@ export default function AvroSchemaViewer({
334
334
  value={searchQuery}
335
335
  onChange={(e) => setSearchQuery(e.target.value)}
336
336
  placeholder="Search fields..."
337
- className="w-full px-3 py-1.5 pr-20 text-sm border border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] rounded-md focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:border-transparent"
337
+ className="w-full px-3 py-1.5 pr-20 text-sm border border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] rounded-md focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:border-transparent"
338
338
  onKeyDown={(e) => {
339
339
  if (e.key === 'Enter') {
340
340
  e.preventDefault();
@@ -373,7 +373,7 @@ export default function AvroSchemaViewer({
373
373
  {onOpenFullscreen && (
374
374
  <button
375
375
  onClick={onOpenFullscreen}
376
- className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
376
+ className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
377
377
  title="Open in fullscreen"
378
378
  >
379
379
  <svg
@@ -394,13 +394,13 @@ export default function AvroSchemaViewer({
394
394
  )}
395
395
  <button
396
396
  onClick={handleExpandAll}
397
- className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
397
+ className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
398
398
  >
399
399
  Expand All
400
400
  </button>
401
401
  <button
402
402
  onClick={handleCollapseAll}
403
- className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
403
+ className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
404
404
  >
405
405
  Collapse All
406
406
  </button>
@@ -228,7 +228,7 @@ const NestedVariantSelector = ({
228
228
  <select
229
229
  value={selectedIndex}
230
230
  onChange={(e) => setSelectedIndex(parseInt(e.target.value))}
231
- className="form-select text-xs border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-sm focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] py-1"
231
+ className="form-select text-xs border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-xs focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] py-1"
232
232
  >
233
233
  {variants.map((variant: any, index: number) => (
234
234
  <option key={index} value={index}>
@@ -293,7 +293,7 @@ const SchemaProperty = ({ name, details, isRequired, level, isListItem = false,
293
293
  aria-expanded={isExpanded}
294
294
  aria-controls={contentId}
295
295
  onClick={() => setIsExpanded(!isExpanded)}
296
- className="property-toggle text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] pt-0.5 focus:outline-none w-3 text-center flex-shrink-0"
296
+ className="property-toggle text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] pt-0.5 focus:outline-hidden w-3 text-center flex-shrink-0"
297
297
  >
298
298
  <span className={`icon-collapsed font-mono text-xs ${isExpanded ? 'hidden' : ''}`}>&gt;</span>
299
299
  <span className={`icon-expanded font-mono text-xs ${!isExpanded ? 'hidden' : ''}`}>v</span>
@@ -396,7 +396,7 @@ const SchemaProperty = ({ name, details, isRequired, level, isListItem = false,
396
396
  <select
397
397
  value={selectedVariantIndex}
398
398
  onChange={(e) => setSelectedVariantIndex(parseInt(e.target.value))}
399
- className="form-select text-xs border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-sm focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] py-1"
399
+ className="form-select text-xs border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-xs focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] py-1"
400
400
  >
401
401
  {details.variants.map((variant: any, index: number) => (
402
402
  <option key={index} value={index}>
@@ -667,12 +667,12 @@ export default function JSONSchemaViewer({
667
667
  return (
668
668
  <div
669
669
  id={id}
670
- className={`${heightClass} ${overflowClass} flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md shadow-sm`}
670
+ className={`${heightClass} ${overflowClass} flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md shadow-xs`}
671
671
  style={containerStyle}
672
672
  >
673
673
  {/* Toolbar */}
674
674
  {searchBool && (
675
- <div className="flex-shrink-0 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] pt-4 px-4 mb-4 pb-3 border-b border-[rgb(var(--ec-page-border))] shadow-sm">
675
+ <div className="flex-shrink-0 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] pt-4 px-4 mb-4 pb-3 border-b border-[rgb(var(--ec-page-border))] shadow-xs">
676
676
  <div className="flex flex-col sm:flex-row gap-3">
677
677
  <div className="flex-1 relative">
678
678
  <input
@@ -681,7 +681,7 @@ export default function JSONSchemaViewer({
681
681
  value={searchQuery}
682
682
  onChange={(e) => setSearchQuery(e.target.value)}
683
683
  placeholder="Search properties..."
684
- className="w-full px-3 py-1.5 pr-20 text-sm border border-[rgb(var(--ec-input-border))] rounded-md bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:border-transparent"
684
+ className="w-full px-3 py-1.5 pr-20 text-sm border border-[rgb(var(--ec-input-border))] rounded-md bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:border-transparent"
685
685
  onKeyDown={(e) => {
686
686
  if (e.key === 'Enter') {
687
687
  e.preventDefault();
@@ -720,7 +720,7 @@ export default function JSONSchemaViewer({
720
720
  {onOpenFullscreen && (
721
721
  <button
722
722
  onClick={onOpenFullscreen}
723
- className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
723
+ className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
724
724
  title="Open in fullscreen"
725
725
  >
726
726
  <svg
@@ -741,13 +741,13 @@ export default function JSONSchemaViewer({
741
741
  )}
742
742
  <button
743
743
  onClick={handleExpandAll}
744
- className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
744
+ className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
745
745
  >
746
746
  Expand All
747
747
  </button>
748
748
  <button
749
749
  onClick={handleCollapseAll}
750
- className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
750
+ className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
751
751
  >
752
752
  Collapse All
753
753
  </button>
@@ -790,7 +790,7 @@ export default function JSONSchemaViewer({
790
790
  <select
791
791
  value={selectedVariantIndex}
792
792
  onChange={(e) => setSelectedVariantIndex(parseInt(e.target.value))}
793
- className="form-select text-sm border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-sm focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] flex-1 sm:flex-initial"
793
+ className="form-select text-sm border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-xs focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] flex-1 sm:flex-initial"
794
794
  >
795
795
  {variants.map((variant: any, index: number) => (
796
796
  <option key={index} value={index}>
@@ -42,7 +42,7 @@ export default function OwnersSection({ message, isExpanded, onToggle }: OwnersS
42
42
  <a
43
43
  key={`${owner.id}-${idx}`}
44
44
  href={owner.href}
45
- className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-[rgb(var(--ec-accent))] hover:shadow-sm transition-all"
45
+ className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-[rgb(var(--ec-accent))] hover:shadow-xs transition-all"
46
46
  title={owner.name}
47
47
  >
48
48
  <div className="flex items-center justify-center w-5 h-5 bg-gradient-to-b from-[rgb(var(--ec-accent-gradient-from))] to-[rgb(var(--ec-accent-gradient-to))] rounded-full">
@@ -54,7 +54,7 @@ export default function ProducersConsumersSection({ message, isExpanded, onToggl
54
54
  <a
55
55
  key={`${producer.id}-${idx}`}
56
56
  href={buildUrl(`/docs/services/${producer.id}/${producer.version}`)}
57
- className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-sm transition-all"
57
+ className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-xs transition-all"
58
58
  title={`View ${producer.id}`}
59
59
  >
60
60
  <div className="flex items-center justify-center w-5 h-5 bg-gradient-to-b from-pink-500 to-pink-600 rounded-full">
@@ -75,7 +75,7 @@ export default function ProducersConsumersSection({ message, isExpanded, onToggl
75
75
  <a
76
76
  key={`${consumer.id}-${idx}`}
77
77
  href={buildUrl(`/docs/services/${consumer.id}/${consumer.version}`)}
78
- className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-sm transition-all"
78
+ className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-xs transition-all"
79
79
  title={`View ${consumer.id}`}
80
80
  >
81
81
  <div className="flex items-center justify-center w-5 h-5 bg-gradient-to-b from-pink-500 to-pink-600 rounded-full">
@@ -20,7 +20,7 @@ export default function SchemaCodeModal({ isOpen, onOpenChange, message, onCopy,
20
20
  <Dialog.Root open={isOpen} onOpenChange={onOpenChange}>
21
21
  <Dialog.Portal>
22
22
  <Dialog.Overlay className="fixed inset-0 bg-black/50 data-[state=open]:animate-overlayShow z-50" />
23
- <Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-white shadow-xl focus:outline-none data-[state=open]:animate-contentShow z-[100] flex flex-col">
23
+ <Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-white shadow-xl focus:outline-hidden data-[state=open]:animate-contentShow z-[100] flex flex-col">
24
24
  {/* Header */}
25
25
  <div className="flex items-center justify-between p-6 border-b border-gray-200 flex-shrink-0">
26
26
  <div className="flex items-center gap-3">
@@ -80,7 +80,7 @@ export default function SchemaCodeModal({ isOpen, onOpenChange, message, onCopy,
80
80
  <Dialog.Close asChild>
81
81
  <button
82
82
  type="button"
83
- className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
83
+ className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
84
84
  >
85
85
  Close
86
86
  </button>
@@ -94,7 +94,7 @@ export default function SchemaContentViewer({
94
94
  return (
95
95
  <a
96
96
  href={specUrl}
97
- className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-sm"
97
+ className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-xs"
98
98
  title="View full specification"
99
99
  >
100
100
  <svg
@@ -118,7 +118,7 @@ export default function SchemaContentViewer({
118
118
  {onOpenFullscreen && (
119
119
  <button
120
120
  onClick={onOpenFullscreen}
121
- className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-sm"
121
+ className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-xs"
122
122
  title="Open in fullscreen"
123
123
  >
124
124
  <ArrowsPointingOutIcon className="h-3.5 w-3.5" />
@@ -127,7 +127,7 @@ export default function SchemaContentViewer({
127
127
  )}
128
128
  <button
129
129
  onClick={onCopy}
130
- className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-sm"
130
+ className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-xs"
131
131
  title="Copy code"
132
132
  >
133
133
  <ClipboardDocumentIcon className="h-3.5 w-3.5" />
@@ -70,7 +70,7 @@ export default function SchemaDetailsHeader({
70
70
  <select
71
71
  value={selectedVersion || message.data.version}
72
72
  onChange={(e) => onVersionChange(e.target.value)}
73
- className="appearance-none text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] border border-[rgb(var(--ec-page-border))] rounded-md pl-2.5 pr-7 py-1 focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent))] focus:border-[rgb(var(--ec-accent))] cursor-pointer hover:bg-[rgb(var(--ec-input-bg))] transition-colors"
73
+ className="appearance-none text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] border border-[rgb(var(--ec-page-border))] rounded-md pl-2.5 pr-7 py-1 focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent))] focus:border-[rgb(var(--ec-accent))] cursor-pointer hover:bg-[rgb(var(--ec-input-bg))] transition-colors"
74
74
  >
75
75
  {availableVersions.map((v) => (
76
76
  <option key={v.data.version} value={v.data.version}>
@@ -127,7 +127,7 @@ export default function SchemaDetailsHeader({
127
127
  onClick={() => onViewModeChange('code')}
128
128
  className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
129
129
  schemaViewMode === 'code'
130
- ? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-sm'
130
+ ? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-xs'
131
131
  : 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
132
132
  }`}
133
133
  title="View raw code"
@@ -140,7 +140,7 @@ export default function SchemaDetailsHeader({
140
140
  onClick={() => onViewModeChange('schema')}
141
141
  className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
142
142
  schemaViewMode === 'schema'
143
- ? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-sm'
143
+ ? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-xs'
144
144
  : 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
145
145
  }`}
146
146
  title="View as schema"
@@ -154,7 +154,7 @@ export default function SchemaDetailsHeader({
154
154
  onClick={() => onViewModeChange('diff')}
155
155
  className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
156
156
  schemaViewMode === 'diff'
157
- ? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-sm'
157
+ ? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-xs'
158
158
  : 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
159
159
  }`}
160
160
  title="View version diffs"
@@ -176,7 +176,7 @@ export default function SchemaDetailsHeader({
176
176
  onClick={() => onViewModeChange('api')}
177
177
  className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
178
178
  schemaViewMode === 'api'
179
- ? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-sm'
179
+ ? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-xs'
180
180
  : 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
181
181
  }`}
182
182
  title="API access"
@@ -357,7 +357,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
357
357
  {/* Split View - Full Height */}
358
358
  <div className="flex-1 flex gap-4 overflow-hidden">
359
359
  {/* Left: Schema List */}
360
- <div className="w-[320px] flex-shrink-0 flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg overflow-hidden shadow-sm">
360
+ <div className="w-[320px] flex-shrink-0 flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg overflow-hidden shadow-xs">
361
361
  {/* Search Header */}
362
362
  <div className="flex-shrink-0 p-3 border-b border-[rgb(var(--ec-page-border))]">
363
363
  {/* Search + Format Filter Row */}
@@ -372,7 +372,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
372
372
  placeholder="Search schemas..."
373
373
  value={searchQuery}
374
374
  onChange={(e) => setSearchQuery(e.target.value)}
375
- className="w-full rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-input-bg))] py-2 pl-9 pr-8 text-sm text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:border-[rgb(var(--ec-accent))] focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] transition-all"
375
+ className="w-full rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-input-bg))] py-2 pl-9 pr-8 text-sm text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:border-[rgb(var(--ec-accent))] focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] transition-all"
376
376
  />
377
377
  {searchQuery && (
378
378
  <button onClick={() => setSearchQuery('')} className="absolute inset-y-0 right-0 flex items-center pr-2.5">
@@ -385,7 +385,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
385
385
  <select
386
386
  value={selectedSchemaType}
387
387
  onChange={(e) => setSelectedSchemaType(e.target.value)}
388
- className="flex-shrink-0 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-input-bg))] border border-[rgb(var(--ec-page-border))] rounded-md px-2 py-2 focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] focus:border-[rgb(var(--ec-accent))] cursor-pointer hover:bg-[rgb(var(--ec-content-hover))] transition-colors"
388
+ className="flex-shrink-0 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-input-bg))] border border-[rgb(var(--ec-page-border))] rounded-md px-2 py-2 focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] focus:border-[rgb(var(--ec-accent))] cursor-pointer hover:bg-[rgb(var(--ec-content-hover))] transition-colors"
389
389
  >
390
390
  <option value="all">All formats</option>
391
391
  {schemaTypes.map((type) => {
@@ -27,7 +27,7 @@ export default function SchemaViewerModal({
27
27
  <Dialog.Root open={isOpen} onOpenChange={onOpenChange}>
28
28
  <Dialog.Portal>
29
29
  <Dialog.Overlay className="fixed inset-0 bg-black/50 data-[state=open]:animate-overlayShow z-50" />
30
- <Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] shadow-xl focus:outline-none data-[state=open]:animate-contentShow z-[100] flex flex-col">
30
+ <Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] shadow-xl focus:outline-hidden data-[state=open]:animate-contentShow z-[100] flex flex-col">
31
31
  {/* Header */}
32
32
  <div className="flex items-center justify-between p-6 border-b border-[rgb(var(--ec-page-border))] flex-shrink-0">
33
33
  <div className="flex items-center gap-3">
@@ -64,7 +64,7 @@ export default function SchemaViewerModal({
64
64
  <Dialog.Close asChild>
65
65
  <button
66
66
  type="button"
67
- className="px-4 py-2 text-sm font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md hover:bg-[rgb(var(--ec-content-hover))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2 transition-colors"
67
+ className="px-4 py-2 text-sm font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md hover:bg-[rgb(var(--ec-content-hover))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2 transition-colors"
68
68
  >
69
69
  Close
70
70
  </button>
@@ -22,7 +22,7 @@ export default function VersionHistoryModal({
22
22
  <Dialog.Root open={isOpen} onOpenChange={onOpenChange}>
23
23
  <Dialog.Portal>
24
24
  <Dialog.Overlay className="fixed inset-0 bg-black/50 data-[state=open]:animate-overlayShow z-50" />
25
- <Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-white shadow-xl focus:outline-none data-[state=open]:animate-contentShow z-[100] flex flex-col">
25
+ <Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-white shadow-xl focus:outline-hidden data-[state=open]:animate-contentShow z-[100] flex flex-col">
26
26
  {/* Header */}
27
27
  <div className="flex items-center justify-between p-6 border-b border-gray-200 flex-shrink-0">
28
28
  <div className="flex items-center gap-3">
@@ -59,7 +59,7 @@ export default function VersionHistoryModal({
59
59
  <Dialog.Close asChild>
60
60
  <button
61
61
  type="button"
62
- className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
62
+ className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
63
63
  >
64
64
  Close
65
65
  </button>
@@ -11,7 +11,7 @@ import SearchModal from './SearchModal.tsx';
11
11
  name="search"
12
12
  placeholder="Search EventCatalog"
13
13
  autocomplete="off"
14
- class="block w-full rounded-md caret-transparent border-0 py-1.5 pr-14 !pl-10 text-[rgb(var(--ec-header-text))] bg-[rgb(var(--ec-dropdown-bg))] shadow-sm ring-1 ring-inset ring-[rgb(var(--ec-dropdown-border))] placeholder:text-[rgb(var(--ec-icon-color))] font-light sm:text-sm sm:leading-6"
14
+ class="block w-full rounded-md caret-transparent border-0 py-1.5 pr-14 pl-10! text-[rgb(var(--ec-header-text))] bg-[rgb(var(--ec-dropdown-bg))] shadow-xs ring-1 ring-inset ring-[rgb(var(--ec-dropdown-border))] placeholder:text-[rgb(var(--ec-icon-color))] font-light sm:text-sm sm:leading-6"
15
15
  />
16
16
  <MagnifyingGlassIcon className="absolute inset-y-0 left-0 h-9 w-8 flex items-center pl-4 text-[rgb(var(--ec-icon-color))]" />
17
17
  <div class="absolute inset-y-0 right-0 flex py-1.5 pr-6">
@@ -387,7 +387,7 @@ export default function SearchModal() {
387
387
  />
388
388
  <Combobox.Input
389
389
  ref={inputRef}
390
- className="h-12 w-full border-0 bg-transparent pl-11 pr-4 text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:ring-0 sm:text-sm focus:outline-none"
390
+ className="h-12 w-full border-0 bg-transparent pl-11 pr-4 text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:ring-0 sm:text-sm focus:outline-hidden"
391
391
  placeholder="Search..."
392
392
  onChange={(event) => setQuery(event.target.value)}
393
393
  value={query}
@@ -190,7 +190,7 @@ export default function SearchBar({ nodes, onSelectResult, onSearchChange }: Pro
190
190
  placeholder="Search resources..."
191
191
  value={searchQuery}
192
192
  onChange={(e) => handleSearchChange(e.target.value)}
193
- className="w-full !pl-9 !pr-8 !py-2 !text-sm !bg-[rgb(var(--ec-input-bg))] !border !border-[rgb(var(--ec-input-border))] !rounded-lg focus:!outline-none focus:!ring-2 focus:!ring-[rgb(var(--ec-accent))] focus:!border-transparent !text-[rgb(var(--ec-input-text))] placeholder:!text-[rgb(var(--ec-input-placeholder))]"
193
+ className="w-full pl-9! pr-8! py-2! text-sm! bg-[rgb(var(--ec-input-bg))]! border! border-[rgb(var(--ec-input-border))]! rounded-lg! focus:outline-hidden! focus:ring-2! focus:ring-[rgb(var(--ec-accent))]! focus:border-transparent! text-[rgb(var(--ec-input-text))]! placeholder:text-[rgb(var(--ec-input-placeholder))]!"
194
194
  />
195
195
  {searchQuery && (
196
196
  <button
@@ -910,7 +910,7 @@ export default function NestedSideBar() {
910
910
  'group flex items-center justify-between w-full px-3 py-1.5 rounded-lg cursor-pointer text-left transition-colors hover:bg-[rgb(var(--ec-content-hover))] active:bg-[rgb(var(--ec-content-hover))]';
911
911
  const parentClasses = itemHasChildren ? 'font-medium' : '';
912
912
  const activeClasses = isActive
913
- ? 'bg-[rgb(var(--ec-accent-subtle))] hover:bg-[rgb(var(--ec-accent-subtle))] !rounded-none'
913
+ ? 'bg-[rgb(var(--ec-accent-subtle))] hover:bg-[rgb(var(--ec-accent-subtle))] rounded-none!'
914
914
  : '';
915
915
 
916
916
  // Leaf item with href → render as link
@@ -1122,7 +1122,7 @@ export default function NestedSideBar() {
1122
1122
  onClick={() => navigateToFavorite(fav)}
1123
1123
  className={cn(
1124
1124
  'group flex items-center justify-between w-full px-3 py-1.5 rounded-lg cursor-pointer text-left transition-colors hover:bg-amber-500/10 active:bg-amber-500/20',
1125
- isActive && 'bg-[rgb(var(--ec-accent-subtle))] hover:bg-[rgb(var(--ec-accent-subtle))] !rounded-none'
1125
+ isActive && 'bg-[rgb(var(--ec-accent-subtle))] hover:bg-[rgb(var(--ec-accent-subtle))] rounded-none!'
1126
1126
  )}
1127
1127
  >
1128
1128
  <div className="flex items-center gap-2.5 min-w-0 flex-1">
@@ -52,7 +52,7 @@ const StudioPageModal: React.FC = () => {
52
52
  <Dialog.Root open={isOpen} onOpenChange={setIsOpen}>
53
53
  <Dialog.Portal>
54
54
  <Dialog.Overlay className="fixed inset-0 bg-black/50 data-[state=open]:animate-overlayShow z-50" />
55
- <Dialog.Content className="fixed top-1/2 left-1/2 w-[90vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg bg-white p-6 shadow-xl focus:outline-none data-[state=open]:animate-contentShow z-[100]">
55
+ <Dialog.Content className="fixed top-1/2 left-1/2 w-[90vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg bg-white p-6 shadow-xl focus:outline-hidden data-[state=open]:animate-contentShow z-[100]">
56
56
  <Dialog.Title className="text-lg font-semibold text-gray-900 mb-3">Open EventCatalog Studio</Dialog.Title>
57
57
 
58
58
  <Dialog.Description className="text-sm text-gray-600 mb-6">
@@ -134,7 +134,7 @@ const StudioPageModal: React.FC = () => {
134
134
  <Dialog.Close asChild>
135
135
  <button
136
136
  type="button"
137
- className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
137
+ className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
138
138
  onClick={() => setIsOpen(false)}
139
139
  >
140
140
  Close
@@ -441,7 +441,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
441
441
  value={globalFilter}
442
442
  onChange={(value) => setGlobalFilter(String(value))}
443
443
  placeholder={`Search ${collectionLabel.toLowerCase()}...`}
444
- className="w-full px-3 py-2 text-sm bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-page-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
444
+ className="w-full px-3 py-2 text-sm bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-page-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
445
445
  />
446
446
 
447
447
  {/* Message Filters Section */}
@@ -695,7 +695,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
695
695
  value={tableFilter}
696
696
  onChange={(e) => setTableFilter(e.target.value)}
697
697
  placeholder="Filter..."
698
- className="pl-9 pr-3 py-1.5 text-sm w-48 bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-page-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
698
+ className="pl-9 pr-3 py-1.5 text-sm w-48 bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-page-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
699
699
  />
700
700
  {tableFilter && (
701
701
  <button
@@ -709,7 +709,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
709
709
  </div>
710
710
 
711
711
  {/* Table */}
712
- <div className="rounded-xl border border-[rgb(var(--ec-page-border))] overflow-hidden shadow-sm">
712
+ <div className="rounded-xl border border-[rgb(var(--ec-page-border))] overflow-hidden shadow-xs">
713
713
  <table className="min-w-full divide-y divide-[rgb(var(--ec-page-border))]">
714
714
  <thead className="bg-[rgb(var(--ec-content-hover))] sticky top-0 z-10 border-b-2 border-[rgb(var(--ec-page-border))]">
715
715
  {table.getHeaderGroups().map((headerGroup, index) => (
@@ -822,7 +822,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
822
822
  onChange={(e) => {
823
823
  table.setPageSize(Number(e.target.value));
824
824
  }}
825
- className="px-3 py-2 text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg hover:border-[rgb(var(--ec-icon-color))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] transition-colors"
825
+ className="px-3 py-2 text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg hover:border-[rgb(var(--ec-icon-color))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] transition-colors"
826
826
  >
827
827
  {[10, 20, 30, 40, 50].map((pageSize) => (
828
828
  <option key={pageSize} value={pageSize}>
@@ -353,7 +353,7 @@ export const Table = <T extends TCollectionTypes>({
353
353
  onChange={(e) => {
354
354
  table.setPageSize(Number(e.target.value));
355
355
  }}
356
- className="px-3 py-2 text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg hover:border-[rgb(var(--ec-icon-color))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] transition-colors"
356
+ className="px-3 py-2 text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg hover:border-[rgb(var(--ec-icon-color))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] transition-colors"
357
357
  >
358
358
  {[10, 20, 30, 40, 50].map((pageSize) => (
359
359
  <option key={pageSize} value={pageSize}>
@@ -428,7 +428,7 @@ function Filter<T extends TCollectionTypes>({ column }: { column: Column<TData<T
428
428
  value={(columnFilterValue ?? '') as string}
429
429
  onChange={(value) => column.setFilterValue(value)}
430
430
  placeholder={!column?.columnDef?.meta?.filterVariant ? `Search (${uniqueCount})...` : 'Search...'}
431
- className="w-full px-3 py-2 text-sm bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-input-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
431
+ className="w-full px-3 py-2 text-sm bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-input-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
432
432
  list={column.id + 'list'}
433
433
  />
434
434
  </div>
@@ -1,4 +1,5 @@
1
1
  ---
2
+ import '../../styles/tailwind.css';
2
3
  // src/pages/auth/error.astro
3
4
 
4
5
  const { searchParams } = new URL(Astro.request.url);
@@ -46,14 +47,14 @@ const errorMessage = errorMessages[error] || errorMessages.Default;
46
47
  <div class="space-y-4">
47
48
  <a
48
49
  href="/auth/login"
49
- class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
50
+ class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-xs text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
50
51
  >
51
52
  Try Again
52
53
  </a>
53
54
 
54
55
  <a
55
56
  href="/"
56
- class="w-full flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
57
+ class="w-full flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-xs text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
57
58
  >
58
59
  Back to Home
59
60
  </a>
@@ -1,4 +1,5 @@
1
1
  ---
2
+ import '../../styles/tailwind.css';
2
3
  import config from '@config';
3
4
  const { title, logo } = config;
4
5
  import { join } from 'node:path';
@@ -37,7 +37,7 @@ import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
37
37
  <div class="flex flex-col sm:flex-row gap-4 justify-center">
38
38
  <button
39
39
  onclick="history.back()"
40
- class="inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
40
+ class="inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md shadow-xs hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
41
41
  >
42
42
  <svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
43
43
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
@@ -47,7 +47,7 @@ import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
47
47
 
48
48
  <a
49
49
  href="/dashboard"
50
- class="inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md shadow-sm hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
50
+ class="inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md shadow-xs hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
51
51
  >
52
52
  <svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
53
53
  <path