@powerhousedao/design-system 6.2.0-dev.3 → 6.2.0-dev.30

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 (95) hide show
  1. package/dist/{command-B5BuEBfZ.d.ts → command-By1kGfcI.d.ts} +3 -3
  2. package/dist/command-By1kGfcI.d.ts.map +1 -0
  3. package/dist/connect/components/toast/toast.d.ts.map +1 -1
  4. package/dist/connect/components/toast/toast.js +5 -5
  5. package/dist/connect/components/toast/toast.js.map +1 -1
  6. package/dist/connect/index.d.ts +24 -3
  7. package/dist/connect/index.d.ts.map +1 -1
  8. package/dist/connect/index.js +641 -584
  9. package/dist/connect/index.js.map +1 -1
  10. package/dist/id-autocomplete-list-option-CB5B07Hi.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/json-viewer-DaTgmzkS.d.ts.map +1 -1
  13. package/dist/{src-BrrPQVce.js → src-CfIIbIOi.js} +11 -11
  14. package/dist/src-CfIIbIOi.js.map +1 -0
  15. package/dist/style.css +79 -16
  16. package/dist/ui/components/button/button.js +1 -1
  17. package/dist/ui/components/button/button.js.map +1 -1
  18. package/dist/ui/components/character-counter/character-counter.js +6 -6
  19. package/dist/ui/components/character-counter/character-counter.js.map +1 -1
  20. package/dist/ui/components/checkbox/checkbox-base.js +1 -1
  21. package/dist/ui/components/checkbox/checkbox-base.js.map +1 -1
  22. package/dist/ui/components/checkbox/checkbox.js +1 -1
  23. package/dist/ui/components/checkbox/checkbox.js.map +1 -1
  24. package/dist/ui/components/command/command.d.ts +1 -1
  25. package/dist/ui/components/command/command.js +5 -5
  26. package/dist/ui/components/command/command.js.map +1 -1
  27. package/dist/ui/components/form-description/form-description.js +1 -1
  28. package/dist/ui/components/form-description/form-description.js.map +1 -1
  29. package/dist/ui/components/form-label/form-label.js +3 -3
  30. package/dist/ui/components/form-label/form-label.js.map +1 -1
  31. package/dist/ui/components/form-message/form-message.js +3 -3
  32. package/dist/ui/components/form-message/form-message.js.map +1 -1
  33. package/dist/ui/components/form-message/message-list.js +3 -3
  34. package/dist/ui/components/form-message/message-list.js.map +1 -1
  35. package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.js +3 -3
  36. package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.js.map +1 -1
  37. package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.js +10 -10
  38. package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.js.map +1 -1
  39. package/dist/ui/components/id-autocomplete/id-autocomplete-list.js +1 -1
  40. package/dist/ui/components/id-autocomplete/id-autocomplete-list.js.map +1 -1
  41. package/dist/ui/components/id-autocomplete/id-autocomplete.js +1 -1
  42. package/dist/ui/components/id-autocomplete/id-autocomplete.js.map +1 -1
  43. package/dist/ui/components/index.d.ts +1 -1
  44. package/dist/ui/components/input/input.js +1 -1
  45. package/dist/ui/components/input/input.js.map +1 -1
  46. package/dist/ui/components/input/splitted-input-diff.js +2 -2
  47. package/dist/ui/components/input/splitted-input-diff.js.map +1 -1
  48. package/dist/ui/components/input/subcomponent/input-diff.js +1 -1
  49. package/dist/ui/components/input/subcomponent/input-diff.js.map +1 -1
  50. package/dist/ui/components/input/subcomponent/text-diff.js +3 -3
  51. package/dist/ui/components/input/subcomponent/text-diff.js.map +1 -1
  52. package/dist/ui/components/json-viewer/json-viewer.js +6 -5
  53. package/dist/ui/components/json-viewer/json-viewer.js.map +1 -1
  54. package/dist/ui/components/popover/popover.js +1 -1
  55. package/dist/ui/components/popover/popover.js.map +1 -1
  56. package/dist/ui/components/radio-group-field/radio.js +3 -3
  57. package/dist/ui/components/radio-group-field/radio.js.map +1 -1
  58. package/dist/ui/components/search-autocomplete/search-autocomplete.js +13 -13
  59. package/dist/ui/components/search-autocomplete/search-autocomplete.js.map +1 -1
  60. package/dist/ui/components/select-field/content.js +8 -8
  61. package/dist/ui/components/select-field/content.js.map +1 -1
  62. package/dist/ui/components/select-field/select-field.js +1 -1
  63. package/dist/ui/components/select-field/select-field.js.map +1 -1
  64. package/dist/ui/components/select-field/selected-content.js +7 -7
  65. package/dist/ui/components/select-field/selected-content.js.map +1 -1
  66. package/dist/ui/components/select-field/subcomponents/CommandItemList.d.ts.map +1 -1
  67. package/dist/ui/components/select-field/subcomponents/CommandItemList.js +9 -9
  68. package/dist/ui/components/select-field/subcomponents/CommandItemList.js.map +1 -1
  69. package/dist/ui/components/sidebar/sidebar.js +5 -5
  70. package/dist/ui/components/sidebar/sidebar.js.map +1 -1
  71. package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.js +1 -1
  72. package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.js.map +1 -1
  73. package/dist/ui/components/sidebar/subcomponents/sidebar-header.js +3 -3
  74. package/dist/ui/components/sidebar/subcomponents/sidebar-header.js.map +1 -1
  75. package/dist/ui/components/sidebar/subcomponents/sidebar-item.js +7 -7
  76. package/dist/ui/components/sidebar/subcomponents/sidebar-item.js.map +1 -1
  77. package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.js +1 -1
  78. package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.js.map +1 -1
  79. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.js +1 -1
  80. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.js.map +1 -1
  81. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.js +4 -4
  82. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.js.map +1 -1
  83. package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.js +5 -5
  84. package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.js.map +1 -1
  85. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.js +2 -2
  86. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.js.map +1 -1
  87. package/dist/ui/components/sidebar/subcomponents/status-icon.js +6 -6
  88. package/dist/ui/components/sidebar/subcomponents/status-icon.js.map +1 -1
  89. package/dist/ui/components/tooltip/tooltip.js +1 -1
  90. package/dist/ui/components/tooltip/tooltip.js.map +1 -1
  91. package/dist/ui/index.d.ts +1 -1
  92. package/package.json +23 -8
  93. package/theme.css +145 -17
  94. package/dist/command-B5BuEBfZ.d.ts.map +0 -1
  95. package/dist/src-BrrPQVce.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"search-result-counter.js","names":["SearchResultCounter","isSearching","activeIndex","totalResults"],"sources":["../../../../../../src/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.tsx"],"sourcesContent":["interface SearchResultCounterProps {\n isSearching: boolean;\n activeIndex: number;\n totalResults: number;\n}\n\nexport const SearchResultCounter: React.FC<SearchResultCounterProps> = ({\n isSearching,\n activeIndex,\n totalResults,\n}) => {\n if (isSearching) {\n return (\n <div className=\"h-4 w-6 animate-pulse rounded-sm bg-gray-200 dark:bg-slate-800\" />\n );\n }\n\n return (\n <div className=\"text-xs\">\n {totalResults > 0 ? (\n <>\n <span className=\"text-gray-700 dark:text-slate-50\">\n {activeIndex + 1}\n </span>\n <span className=\"text-gray-500 dark:text-slate-700\">\n /{totalResults}\n </span>\n </>\n ) : (\n <span className=\"text-gray-500 dark:text-slate-700\">0/0</span>\n )}\n </div>\n );\n};\n"],"mappings":";;AAMA,MAAaA,uBAA2D,EACtEC,aACAC,aACAC,mBACI;AACJ,KAAIF,YACF,QACE,oBAAC,OAAD,EAAK,WAAU,kEAAmE,CAAA;AAItF,QACE,oBAAC,OAAD;EAAK,WAAU;YACZE,eAAe,IACd,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,QAAD;GAAM,WAAU;aACbD,cAAc;GACX,CAAA,EACN,qBAAC,QAAD;GAAM,WAAU;aAAhB,CAAmD,KAC/CC,aACE;KACL,EAAA,CAAA,GAEH,oBAAC,QAAD;GAAM,WAAU;aAAoC;GACrD,CAAA;EACG,CAAA"}
1
+ {"version":3,"file":"search-result-counter.js","names":["SearchResultCounter","isSearching","activeIndex","totalResults"],"sources":["../../../../../../src/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.tsx"],"sourcesContent":["interface SearchResultCounterProps {\n isSearching: boolean;\n activeIndex: number;\n totalResults: number;\n}\n\nexport const SearchResultCounter: React.FC<SearchResultCounterProps> = ({\n isSearching,\n activeIndex,\n totalResults,\n}) => {\n if (isSearching) {\n return <div className=\"h-4 w-6 animate-pulse rounded-sm bg-secondary\" />;\n }\n\n return (\n <div className=\"text-xs\">\n {totalResults > 0 ? (\n <>\n <span className=\"text-foreground\">{activeIndex + 1}</span>\n <span className=\"text-muted-foreground\">/{totalResults}</span>\n </>\n ) : (\n <span className=\"text-muted-foreground\">0/0</span>\n )}\n </div>\n );\n};\n"],"mappings":";;AAMA,MAAaA,uBAA2D,EACtEC,aACAC,aACAC,mBACI;AACJ,KAAIF,YACF,QAAO,oBAAC,OAAD,EAAK,WAAU,iDAAkD,CAAA;AAG1E,QACE,oBAAC,OAAD;EAAK,WAAU;YACZE,eAAe,IACd,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,QAAD;GAAM,WAAU;aAAmBD,cAAc;GAAQ,CAAA,EACzD,qBAAC,QAAD;GAAM,WAAU;aAAhB,CAAwC,KAAEC,aAAmB;KAC5D,EAAA,CAAA,GAEH,oBAAC,QAAD;GAAM,WAAU;aAAwB;GACzC,CAAA;EACG,CAAA"}
@@ -15,7 +15,7 @@ const SidebarSearch = ({ showStatusFilter }) => {
15
15
  if (searchControlsRef.current) setSearchControlsPaddingRight(searchControlsRef.current.clientWidth + 16);
16
16
  }, [searchTerm]);
17
17
  return /* @__PURE__ */ jsxs("div", {
18
- className: "flex w-full gap-2 border-t border-gray-300 p-2 dark:border-slate-800",
18
+ className: "flex w-full gap-2 border-t border-sidebar-border p-2",
19
19
  children: [/* @__PURE__ */ jsxs("div", {
20
20
  className: "relative flex-1",
21
21
  children: [
@@ -35,7 +35,7 @@ const SidebarSearch = ({ showStatusFilter }) => {
35
35
  /* @__PURE__ */ jsx(Search, {
36
36
  height: 16,
37
37
  width: 16,
38
- className: "absolute top-1/2 left-2 -translate-y-1/2 text-gray-700 dark:text-slate-50"
38
+ className: "absolute top-1/2 left-2 -translate-y-1/2 text-foreground"
39
39
  }),
40
40
  searchTerm && /* @__PURE__ */ jsxs("div", {
41
41
  ref: searchControlsRef,
@@ -47,7 +47,7 @@ const SidebarSearch = ({ showStatusFilter }) => {
47
47
  totalResults: searchResults.length
48
48
  }),
49
49
  /* @__PURE__ */ jsxs("div", {
50
- className: "flex flex-col text-gray-500 dark:text-slate-700",
50
+ className: "flex flex-col text-muted-foreground",
51
51
  children: [/* @__PURE__ */ jsx(SearchNavigationArrow, {
52
52
  direction: "up",
53
53
  isDisabled: activeSearchIndex === 0,
@@ -62,7 +62,7 @@ const SidebarSearch = ({ showStatusFilter }) => {
62
62
  onClick: () => changeSearchTerm(""),
63
63
  height: 16,
64
64
  width: 16,
65
- className: "cursor-pointer text-gray-500 hover:text-gray-700 active:text-gray-900 dark:text-slate-700 dark:hover:text-slate-600 dark:active:text-slate-300"
65
+ className: "cursor-pointer text-muted-foreground hover:hover-effect active:active-effect"
66
66
  })
67
67
  ]
68
68
  })
@@ -71,7 +71,7 @@ const SidebarSearch = ({ showStatusFilter }) => {
71
71
  type: "button",
72
72
  onClick: toggleStatusFilter,
73
73
  tabIndex: 1,
74
- className: twMerge("rounded-md border border-gray-300 px-2 py-1 text-sm text-gray-500", isStatusFilterEnabled ? "border-blue-500 bg-blue-100 text-blue-900" : "hover:bg-gray-100 hover:text-gray-700"),
74
+ className: twMerge("rounded-md border border-border px-2 py-1 text-sm text-muted-foreground", isStatusFilterEnabled ? "border-info bg-info/10 text-info" : "hover:hover-effect"),
75
75
  children: /* @__PURE__ */ jsx(Tabler, {
76
76
  height: 16,
77
77
  width: 16
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-search.js","names":["useLayoutEffect","useRef","useState","twMerge","Input","CrossCircle","Search","Tabler","useSidebar","SearchNavigationArrow","SearchResultCounter","SidebarSearch","showStatusFilter","searchTerm","isSearching","searchResults","activeSearchIndex","isStatusFilterEnabled","changeSearchTerm","nextSearchResult","previousSearchResult","toggleStatusFilter","searchControlsRef","searchControlsPaddingRight","setSearchControlsPaddingRight","current","clientWidth","e","target","value","key","paddingRight","length"],"sources":["../../../../../../src/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Input } from \"../../../input/input.js\";\nimport CrossCircle from \"../../../../../powerhouse/components/icon-components/CrossCircle.js\";\nimport Search from \"../../../../../powerhouse/components/icon-components/Search.js\";\nimport Tabler from \"../../../../../powerhouse/components/icon-components/Tabler.js\";\nimport { useSidebar } from \"../sidebar-provider/index.js\";\nimport { SearchNavigationArrow } from \"./search-navigation-arrow.js\";\nimport { SearchResultCounter } from \"./search-result-counter.js\";\n\ninterface SidebarSearchProps {\n showStatusFilter: boolean;\n}\n\nexport const SidebarSearch: React.FC<SidebarSearchProps> = ({\n showStatusFilter,\n}) => {\n const {\n searchTerm,\n isSearching,\n searchResults,\n activeSearchIndex,\n isStatusFilterEnabled,\n changeSearchTerm,\n nextSearchResult,\n previousSearchResult,\n toggleStatusFilter,\n } = useSidebar();\n const searchControlsRef = useRef<HTMLDivElement>(null);\n const [searchControlsPaddingRight, setSearchControlsPaddingRight] =\n useState(16);\n\n useLayoutEffect(() => {\n if (searchControlsRef.current) {\n setSearchControlsPaddingRight(searchControlsRef.current.clientWidth + 16);\n }\n }, [searchTerm]);\n\n return (\n <div className=\"flex w-full gap-2 border-t border-gray-300 p-2 dark:border-slate-800\">\n <div className=\"relative flex-1\">\n <Input\n type=\"search\"\n value={searchTerm}\n onChange={(e) => changeSearchTerm(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\") {\n nextSearchResult();\n } else if (e.key === \"ArrowUp\") {\n previousSearchResult();\n }\n }}\n tabIndex={1}\n placeholder=\"Search\"\n className=\"w-full appearance-none pl-8 [&::-webkit-search-cancel-button]:hidden\"\n style={{ paddingRight: searchControlsPaddingRight }}\n />\n\n <Search\n height={16}\n width={16}\n className=\"absolute top-1/2 left-2 -translate-y-1/2 text-gray-700 dark:text-slate-50\"\n />\n\n {/* Search controls - only shown when there's a search term */}\n {searchTerm && (\n <div\n ref={searchControlsRef}\n className=\"absolute top-1/2 right-2 flex -translate-y-1/2 items-center gap-2 select-none\"\n >\n <SearchResultCounter\n isSearching={isSearching}\n activeIndex={activeSearchIndex}\n totalResults={searchResults.length}\n />\n\n <div className=\"flex flex-col text-gray-500 dark:text-slate-700\">\n <SearchNavigationArrow\n direction=\"up\"\n isDisabled={activeSearchIndex === 0}\n onClick={previousSearchResult}\n />\n <SearchNavigationArrow\n direction=\"down\"\n isDisabled={activeSearchIndex === searchResults.length - 1}\n onClick={nextSearchResult}\n />\n </div>\n\n {/* Clear search button */}\n <CrossCircle\n onClick={() => changeSearchTerm(\"\")}\n height={16}\n width={16}\n className=\"cursor-pointer text-gray-500 hover:text-gray-700 active:text-gray-900 dark:text-slate-700 dark:hover:text-slate-600 dark:active:text-slate-300\"\n />\n </div>\n )}\n </div>\n\n {showStatusFilter && (\n <button\n type=\"button\"\n onClick={toggleStatusFilter}\n tabIndex={1}\n className={twMerge(\n \"rounded-md border border-gray-300 px-2 py-1 text-sm text-gray-500\",\n isStatusFilterEnabled\n ? \"border-blue-500 bg-blue-100 text-blue-900\"\n : \"hover:bg-gray-100 hover:text-gray-700\",\n )}\n >\n <Tabler height={16} width={16} />\n </button>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAcA,MAAaW,iBAA+C,EAC1DC,uBACI;CACJ,MAAM,EACJC,YACAC,aACAC,eACAC,mBACAC,uBACAC,kBACAC,kBACAC,sBACAC,uBACEb,YAAY;CAChB,MAAMc,oBAAoBrB,OAAuB,KAAK;CACtD,MAAM,CAACsB,4BAA4BC,iCACjCtB,SAAS,GAAG;AAEdF,uBAAsB;AACpB,MAAIsB,kBAAkBG,QACpBD,+BAA8BF,kBAAkBG,QAAQC,cAAc,GAAG;IAE1E,CAACb,WAAW,CAAC;AAEhB,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,oBAAC,OAAD;KACE,MAAK;KACL,OAAOA;KACP,WAAWc,MAAMT,iBAAiBS,EAAEC,OAAOC,MAAM;KACjD,YAAYF,MAAM;AAChB,UAAIA,EAAEG,QAAQ,eAAeH,EAAEG,QAAQ,QACrCX,mBAAkB;eACTQ,EAAEG,QAAQ,UACnBV,uBAAsB;;KAG1B,UAAU;KACV,aAAY;KACZ,WAAU;KACV,OAAO,EAAEW,cAAcR,4BAA4B;KAAC,CAAA;IAGtD,oBAAC,QAAD;KACE,QAAQ;KACR,OAAO;KACP,WAAU;KAA2E,CAAA;IAItFV,cACC,qBAAC,OAAD;KACE,KAAKS;KACL,WAAU;eAFZ;MAIE,oBAAC,qBAAD;OACeR;OACb,aAAaE;OACb,cAAcD,cAAciB;OAAO,CAAA;MAGrC,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,oBAAC,uBAAD;QACE,WAAU;QACV,YAAYhB,sBAAsB;QAClC,SAASI;QAAqB,CAAA,EAEhC,oBAAC,uBAAD;QACE,WAAU;QACV,YAAYJ,sBAAsBD,cAAciB,SAAS;QACzD,SAASb;QAAiB,CAAA,CAEzB;;MAGL,oBAAC,aAAD;OACE,eAAeD,iBAAiB,GAAG;OACnC,QAAQ;OACR,OAAO;OACP,WAAU;OAAgJ,CAAA;MAG/J;;IACE;MAEJN,oBACC,oBAAC,UAAD;GACE,MAAK;GACL,SAASS;GACT,UAAU;GACV,WAAWlB,QACT,qEACAc,wBACI,8CACA,wCACL;aAED,oBAAC,QAAD;IAAQ,QAAQ;IAAI,OAAO;IAAG,CAAA;GAEjC,CAAA,CACG"}
1
+ {"version":3,"file":"sidebar-search.js","names":["useLayoutEffect","useRef","useState","twMerge","Input","CrossCircle","Search","Tabler","useSidebar","SearchNavigationArrow","SearchResultCounter","SidebarSearch","showStatusFilter","searchTerm","isSearching","searchResults","activeSearchIndex","isStatusFilterEnabled","changeSearchTerm","nextSearchResult","previousSearchResult","toggleStatusFilter","searchControlsRef","searchControlsPaddingRight","setSearchControlsPaddingRight","current","clientWidth","e","target","value","key","paddingRight","length"],"sources":["../../../../../../src/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Input } from \"../../../input/input.js\";\nimport CrossCircle from \"../../../../../powerhouse/components/icon-components/CrossCircle.js\";\nimport Search from \"../../../../../powerhouse/components/icon-components/Search.js\";\nimport Tabler from \"../../../../../powerhouse/components/icon-components/Tabler.js\";\nimport { useSidebar } from \"../sidebar-provider/index.js\";\nimport { SearchNavigationArrow } from \"./search-navigation-arrow.js\";\nimport { SearchResultCounter } from \"./search-result-counter.js\";\n\ninterface SidebarSearchProps {\n showStatusFilter: boolean;\n}\n\nexport const SidebarSearch: React.FC<SidebarSearchProps> = ({\n showStatusFilter,\n}) => {\n const {\n searchTerm,\n isSearching,\n searchResults,\n activeSearchIndex,\n isStatusFilterEnabled,\n changeSearchTerm,\n nextSearchResult,\n previousSearchResult,\n toggleStatusFilter,\n } = useSidebar();\n const searchControlsRef = useRef<HTMLDivElement>(null);\n const [searchControlsPaddingRight, setSearchControlsPaddingRight] =\n useState(16);\n\n useLayoutEffect(() => {\n if (searchControlsRef.current) {\n setSearchControlsPaddingRight(searchControlsRef.current.clientWidth + 16);\n }\n }, [searchTerm]);\n\n return (\n <div className=\"flex w-full gap-2 border-t border-sidebar-border p-2\">\n <div className=\"relative flex-1\">\n <Input\n type=\"search\"\n value={searchTerm}\n onChange={(e) => changeSearchTerm(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\") {\n nextSearchResult();\n } else if (e.key === \"ArrowUp\") {\n previousSearchResult();\n }\n }}\n tabIndex={1}\n placeholder=\"Search\"\n className=\"w-full appearance-none pl-8 [&::-webkit-search-cancel-button]:hidden\"\n style={{ paddingRight: searchControlsPaddingRight }}\n />\n\n <Search\n height={16}\n width={16}\n className=\"absolute top-1/2 left-2 -translate-y-1/2 text-foreground\"\n />\n\n {/* Search controls - only shown when there's a search term */}\n {searchTerm && (\n <div\n ref={searchControlsRef}\n className=\"absolute top-1/2 right-2 flex -translate-y-1/2 items-center gap-2 select-none\"\n >\n <SearchResultCounter\n isSearching={isSearching}\n activeIndex={activeSearchIndex}\n totalResults={searchResults.length}\n />\n\n <div className=\"flex flex-col text-muted-foreground\">\n <SearchNavigationArrow\n direction=\"up\"\n isDisabled={activeSearchIndex === 0}\n onClick={previousSearchResult}\n />\n <SearchNavigationArrow\n direction=\"down\"\n isDisabled={activeSearchIndex === searchResults.length - 1}\n onClick={nextSearchResult}\n />\n </div>\n\n {/* Clear search button */}\n <CrossCircle\n onClick={() => changeSearchTerm(\"\")}\n height={16}\n width={16}\n className=\"cursor-pointer text-muted-foreground hover:hover-effect active:active-effect\"\n />\n </div>\n )}\n </div>\n\n {showStatusFilter && (\n <button\n type=\"button\"\n onClick={toggleStatusFilter}\n tabIndex={1}\n className={twMerge(\n \"rounded-md border border-border px-2 py-1 text-sm text-muted-foreground\",\n isStatusFilterEnabled\n ? \"border-info bg-info/10 text-info\"\n : \"hover:hover-effect\",\n )}\n >\n <Tabler height={16} width={16} />\n </button>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAcA,MAAaW,iBAA+C,EAC1DC,uBACI;CACJ,MAAM,EACJC,YACAC,aACAC,eACAC,mBACAC,uBACAC,kBACAC,kBACAC,sBACAC,uBACEb,YAAY;CAChB,MAAMc,oBAAoBrB,OAAuB,KAAK;CACtD,MAAM,CAACsB,4BAA4BC,iCACjCtB,SAAS,GAAG;AAEdF,uBAAsB;AACpB,MAAIsB,kBAAkBG,QACpBD,+BAA8BF,kBAAkBG,QAAQC,cAAc,GAAG;IAE1E,CAACb,WAAW,CAAC;AAEhB,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,oBAAC,OAAD;KACE,MAAK;KACL,OAAOA;KACP,WAAWc,MAAMT,iBAAiBS,EAAEC,OAAOC,MAAM;KACjD,YAAYF,MAAM;AAChB,UAAIA,EAAEG,QAAQ,eAAeH,EAAEG,QAAQ,QACrCX,mBAAkB;eACTQ,EAAEG,QAAQ,UACnBV,uBAAsB;;KAG1B,UAAU;KACV,aAAY;KACZ,WAAU;KACV,OAAO,EAAEW,cAAcR,4BAA4B;KAAC,CAAA;IAGtD,oBAAC,QAAD;KACE,QAAQ;KACR,OAAO;KACP,WAAU;KAA0D,CAAA;IAIrEV,cACC,qBAAC,OAAD;KACE,KAAKS;KACL,WAAU;eAFZ;MAIE,oBAAC,qBAAD;OACeR;OACb,aAAaE;OACb,cAAcD,cAAciB;OAAO,CAAA;MAGrC,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,oBAAC,uBAAD;QACE,WAAU;QACV,YAAYhB,sBAAsB;QAClC,SAASI;QAAqB,CAAA,EAEhC,oBAAC,uBAAD;QACE,WAAU;QACV,YAAYJ,sBAAsBD,cAAciB,SAAS;QACzD,SAASb;QAAiB,CAAA,CAEzB;;MAGL,oBAAC,aAAD;OACE,eAAeD,iBAAiB,GAAG;OACnC,QAAQ;OACR,OAAO;OACP,WAAU;OAA8E,CAAA;MAG7F;;IACE;MAEJN,oBACC,oBAAC,UAAD;GACE,MAAK;GACL,SAASS;GACT,UAAU;GACV,WAAWlB,QACT,2EACAc,wBACI,qCACA,qBACL;aAED,oBAAC,QAAD;IAAQ,QAAQ;IAAI,OAAO;IAAG,CAAA;GAEjC,CAAA,CACG"}
@@ -10,8 +10,8 @@ const SidebarSkeletonItem = ({ depth, textWidth, style }) => {
10
10
  style: { paddingLeft: depth * 24 + 8 },
11
11
  children: [/* @__PURE__ */ jsx("div", {
12
12
  className: "flex size-4 min-w-4 items-center justify-center",
13
- children: /* @__PURE__ */ jsx("div", { className: "size-4 min-w-4 animate-pulse rounded-sm bg-gray-200 dark:bg-slate-600" })
14
- }), /* @__PURE__ */ jsx("div", { className: twMerge("h-4 animate-pulse rounded-sm bg-gray-200 dark:bg-slate-600", textWidth) })]
13
+ children: /* @__PURE__ */ jsx("div", { className: "size-4 min-w-4 animate-pulse rounded-sm bg-secondary" })
14
+ }), /* @__PURE__ */ jsx("div", { className: twMerge("h-4 animate-pulse rounded-sm bg-secondary", textWidth) })]
15
15
  })
16
16
  });
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-skeleton-item.js","names":["twMerge","SidebarSkeletonItem","depth","textWidth","style","paddingLeft"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-skeleton-item.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\n\ninterface SidebarSkeletonItemProps {\n depth: number;\n textWidth: string;\n style?: React.CSSProperties;\n}\n\nexport const SidebarSkeletonItem = ({\n depth,\n textWidth,\n style,\n}: SidebarSkeletonItemProps) => {\n const paddingLeft = depth * 24;\n\n return (\n <div style={style} className=\"flex items-center px-2\">\n <div\n className=\"flex h-8 w-full items-center gap-2 px-2 py-1\"\n style={{ paddingLeft: paddingLeft + 8 }}\n >\n {/* Chevron icon skeleton */}\n <div className=\"flex size-4 min-w-4 items-center justify-center\">\n <div className=\"size-4 min-w-4 animate-pulse rounded-sm bg-gray-200 dark:bg-slate-600\" />\n </div>\n\n {/* Text content skeleton */}\n <div\n className={twMerge(\n \"h-4 animate-pulse rounded-sm bg-gray-200 dark:bg-slate-600\",\n textWidth,\n )}\n />\n </div>\n </div>\n );\n};\n"],"mappings":";;;AAQA,MAAaC,uBAAuB,EAClCC,OACAC,WACAC,YAC8B;AAG9B,QACE,oBAAC,OAAD;EAAYA;EAAO,WAAU;YAC3B,qBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAEC,aANKH,QAAQ,KAMc,GAAG;aAFzC,CAKE,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,OAAD,EAAK,WAAU,yEAAuE,CAAA;IACnF,CAAA,EAGL,oBAAC,OAAD,EACE,WAAWF,QACT,8DACAG,UACD,EAAC,CAAA,CAED;;EACD,CAAA"}
1
+ {"version":3,"file":"sidebar-skeleton-item.js","names":["twMerge","SidebarSkeletonItem","depth","textWidth","style","paddingLeft"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-skeleton-item.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\n\ninterface SidebarSkeletonItemProps {\n depth: number;\n textWidth: string;\n style?: React.CSSProperties;\n}\n\nexport const SidebarSkeletonItem = ({\n depth,\n textWidth,\n style,\n}: SidebarSkeletonItemProps) => {\n const paddingLeft = depth * 24;\n\n return (\n <div style={style} className=\"flex items-center px-2\">\n <div\n className=\"flex h-8 w-full items-center gap-2 px-2 py-1\"\n style={{ paddingLeft: paddingLeft + 8 }}\n >\n {/* Chevron icon skeleton */}\n <div className=\"flex size-4 min-w-4 items-center justify-center\">\n <div className=\"size-4 min-w-4 animate-pulse rounded-sm bg-secondary\" />\n </div>\n\n {/* Text content skeleton */}\n <div\n className={twMerge(\n \"h-4 animate-pulse rounded-sm bg-secondary\",\n textWidth,\n )}\n />\n </div>\n </div>\n );\n};\n"],"mappings":";;;AAQA,MAAaC,uBAAuB,EAClCC,OACAC,WACAC,YAC8B;AAG9B,QACE,oBAAC,OAAD;EAAYA;EAAO,WAAU;YAC3B,qBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAEC,aANKH,QAAQ,KAMc,GAAG;aAFzC,CAKE,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,OAAD,EAAK,WAAU,wDAAsD,CAAA;IAClE,CAAA,EAGL,oBAAC,OAAD,EACE,WAAWF,QACT,6CACAG,UACD,EAAC,CAAA,CAED;;EACD,CAAA"}
@@ -6,34 +6,34 @@ const STATUS_ICON_MAP = {
6
6
  [NodeStatus.CREATED]: { icon: /* @__PURE__ */ jsx(Created, {
7
7
  height: 16,
8
8
  width: 16,
9
- className: "text-green-900"
9
+ className: "text-success"
10
10
  }) },
11
11
  [NodeStatus.MODIFIED]: { icon: /* @__PURE__ */ jsx(Modified, {
12
12
  height: 16,
13
13
  width: 16,
14
- className: "text-blue-900"
14
+ className: "text-info"
15
15
  }) },
16
16
  [NodeStatus.REMOVED]: { icon: /* @__PURE__ */ jsx(Removed, {
17
17
  height: 16,
18
18
  width: 16,
19
- className: "text-red-900"
19
+ className: "text-destructive"
20
20
  }) },
21
21
  [NodeStatus.MOVED]: { icon: /* @__PURE__ */ jsx(Moved, {
22
22
  height: 16,
23
23
  width: 16,
24
- className: "text-blue-900"
24
+ className: "text-info"
25
25
  }) },
26
26
  [NodeStatus.DUPLICATED]: { icon: /* @__PURE__ */ jsx(Duplicated, {
27
27
  height: 16,
28
28
  width: 16,
29
- className: "text-blue-900"
29
+ className: "text-info"
30
30
  }) }
31
31
  };
32
32
  const StatusIcon = ({ status, isDescendenceModified }) => {
33
33
  if (status === NodeStatus.UNCHANGED) return isDescendenceModified ? /* @__PURE__ */ jsx(DescendenceModified, {
34
34
  height: 16,
35
35
  width: 16,
36
- className: "text-gray-500"
36
+ className: "text-muted-foreground"
37
37
  }) : null;
38
38
  return STATUS_ICON_MAP[status].icon;
39
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"status-icon.js","names":["Created","DescendenceModified","Duplicated","Modified","Moved","Removed","NodeStatus","STATUS_ICON_MAP","CREATED","icon","MODIFIED","REMOVED","MOVED","DUPLICATED","StatusIcon","status","isDescendenceModified","UNCHANGED"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/status-icon.tsx"],"sourcesContent":["import Created from \"../../../../powerhouse/components/icon-components/Created.js\";\nimport DescendenceModified from \"../../../../powerhouse/components/icon-components/DescendenceModified.js\";\nimport Duplicated from \"../../../../powerhouse/components/icon-components/Duplicated.js\";\nimport Modified from \"../../../../powerhouse/components/icon-components/Modified.js\";\nimport Moved from \"../../../../powerhouse/components/icon-components/Moved.js\";\nimport Removed from \"../../../../powerhouse/components/icon-components/Removed.js\";\nimport { NodeStatus } from \"../types.js\";\n\ninterface StatusIconProps {\n status: NodeStatus;\n isDescendenceModified?: boolean;\n}\n\nconst STATUS_ICON_MAP: Record<\n Exclude<NodeStatus, NodeStatus.UNCHANGED>,\n { icon: React.ReactNode }\n> = {\n [NodeStatus.CREATED]: {\n icon: <Created height={16} width={16} className=\"text-green-900\" />,\n },\n [NodeStatus.MODIFIED]: {\n icon: <Modified height={16} width={16} className=\"text-blue-900\" />,\n },\n [NodeStatus.REMOVED]: {\n icon: <Removed height={16} width={16} className=\"text-red-900\" />,\n },\n [NodeStatus.MOVED]: {\n icon: <Moved height={16} width={16} className=\"text-blue-900\" />,\n },\n [NodeStatus.DUPLICATED]: {\n icon: <Duplicated height={16} width={16} className=\"text-blue-900\" />,\n },\n};\n\nexport const StatusIcon = ({\n status,\n isDescendenceModified,\n}: StatusIconProps) => {\n if (status === NodeStatus.UNCHANGED) {\n return isDescendenceModified ? (\n <DescendenceModified height={16} width={16} className=\"text-gray-500\" />\n ) : null;\n }\n\n return STATUS_ICON_MAP[status].icon;\n};\n"],"mappings":";;;;AAaA,MAAMO,kBAGF;EACDD,WAAWE,UAAU,EACpBC,MAAM,oBAAC,SAAD;EAAS,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAgB,CAAA,EACjE;EACAH,WAAWI,WAAW,EACrBD,MAAM,oBAAC,UAAD;EAAU,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAe,CAAA,EACjE;EACAH,WAAWK,UAAU,EACpBF,MAAM,oBAAC,SAAD;EAAS,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAc,CAAA,EAC/D;EACAH,WAAWM,QAAQ,EAClBH,MAAM,oBAAC,OAAD;EAAO,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAe,CAAA,EAC9D;EACAH,WAAWO,aAAa,EACvBJ,MAAM,oBAAC,YAAD;EAAY,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAe,CAAA,EACpE;CACD;AAED,MAAaK,cAAc,EACzBC,QACAC,4BACqB;AACrB,KAAID,WAAWT,WAAWW,UACxB,QAAOD,wBACL,oBAAC,qBAAD;EAAqB,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAkB,CAAA,GACtE;AAGN,QAAOT,gBAAgBQ,QAAQN"}
1
+ {"version":3,"file":"status-icon.js","names":["Created","DescendenceModified","Duplicated","Modified","Moved","Removed","NodeStatus","STATUS_ICON_MAP","CREATED","icon","MODIFIED","REMOVED","MOVED","DUPLICATED","StatusIcon","status","isDescendenceModified","UNCHANGED"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/status-icon.tsx"],"sourcesContent":["import Created from \"../../../../powerhouse/components/icon-components/Created.js\";\nimport DescendenceModified from \"../../../../powerhouse/components/icon-components/DescendenceModified.js\";\nimport Duplicated from \"../../../../powerhouse/components/icon-components/Duplicated.js\";\nimport Modified from \"../../../../powerhouse/components/icon-components/Modified.js\";\nimport Moved from \"../../../../powerhouse/components/icon-components/Moved.js\";\nimport Removed from \"../../../../powerhouse/components/icon-components/Removed.js\";\nimport { NodeStatus } from \"../types.js\";\n\ninterface StatusIconProps {\n status: NodeStatus;\n isDescendenceModified?: boolean;\n}\n\nconst STATUS_ICON_MAP: Record<\n Exclude<NodeStatus, NodeStatus.UNCHANGED>,\n { icon: React.ReactNode }\n> = {\n [NodeStatus.CREATED]: {\n icon: <Created height={16} width={16} className=\"text-success\" />,\n },\n [NodeStatus.MODIFIED]: {\n icon: <Modified height={16} width={16} className=\"text-info\" />,\n },\n [NodeStatus.REMOVED]: {\n icon: <Removed height={16} width={16} className=\"text-destructive\" />,\n },\n [NodeStatus.MOVED]: {\n icon: <Moved height={16} width={16} className=\"text-info\" />,\n },\n [NodeStatus.DUPLICATED]: {\n icon: <Duplicated height={16} width={16} className=\"text-info\" />,\n },\n};\n\nexport const StatusIcon = ({\n status,\n isDescendenceModified,\n}: StatusIconProps) => {\n if (status === NodeStatus.UNCHANGED) {\n return isDescendenceModified ? (\n <DescendenceModified\n height={16}\n width={16}\n className=\"text-muted-foreground\"\n />\n ) : null;\n }\n\n return STATUS_ICON_MAP[status].icon;\n};\n"],"mappings":";;;;AAaA,MAAMO,kBAGF;EACDD,WAAWE,UAAU,EACpBC,MAAM,oBAAC,SAAD;EAAS,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAc,CAAA,EAC/D;EACAH,WAAWI,WAAW,EACrBD,MAAM,oBAAC,UAAD;EAAU,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAW,CAAA,EAC7D;EACAH,WAAWK,UAAU,EACpBF,MAAM,oBAAC,SAAD;EAAS,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAkB,CAAA,EACnE;EACAH,WAAWM,QAAQ,EAClBH,MAAM,oBAAC,OAAD;EAAO,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAW,CAAA,EAC1D;EACAH,WAAWO,aAAa,EACvBJ,MAAM,oBAAC,YAAD;EAAY,QAAQ;EAAI,OAAO;EAAI,WAAU;EAAW,CAAA,EAChE;CACD;AAED,MAAaK,cAAc,EACzBC,QACAC,4BACqB;AACrB,KAAID,WAAWT,WAAWW,UACxB,QAAOD,wBACL,oBAAC,qBAAD;EACE,QAAQ;EACR,OAAO;EACP,WAAU;EACV,CAAA,GACA;AAGN,QAAOT,gBAAgBQ,QAAQN"}
@@ -7,7 +7,7 @@ const TooltipContent = /* @__PURE__ */ forwardRef(({ children, className, ...pro
7
7
  return /* @__PURE__ */ jsx(Content, {
8
8
  ref,
9
9
  ...props,
10
- className: twMerge("z-50 overflow-hidden rounded-md text-sm", "border border-gray-200 bg-gray-50 text-gray-900 dark:border-slate-500 dark:bg-slate-600 dark:text-slate-100", "px-3 py-1.5 shadow-md", "data-[state=open]:animate-zoom-in", "data-[state=closed]:animate-zoom-out", "data-[side=bottom]:animate-slide-in-from-top", "data-[side=left]:animate-slide-in-from-right", "data-[side=right]:animate-slide-in-from-left", "data-[side=top]:animate-slide-in-from-bottom", className),
10
+ className: twMerge("z-50 overflow-hidden rounded-md text-sm", "border border-border bg-popover text-popover-foreground", "px-3 py-1.5 shadow-md", "data-[state=open]:animate-zoom-in", "data-[state=closed]:animate-zoom-out", "data-[side=bottom]:animate-slide-in-from-top", "data-[side=left]:animate-slide-in-from-right", "data-[side=right]:animate-slide-in-from-left", "data-[side=top]:animate-slide-in-from-bottom", className),
11
11
  children
12
12
  });
13
13
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","names":["twMerge","Content","Portal","Provider","Root","Trigger","forwardRef","TooltipContent","children","className","props","ref","Tooltip","content","triggerAsChild","delayDuration","open","defaultOpen","onOpenChange","rest","undefined","TooltipProvider","TooltipRoot","TooltipTrigger"],"sources":["../../../../src/ui/components/tooltip/tooltip.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport type {\n TooltipContentProps,\n TooltipProps as TooltipPrimitiveProps,\n} from \"@radix-ui/react-tooltip\";\nimport {\n Content,\n Portal,\n Provider,\n Root,\n Trigger,\n} from \"@radix-ui/react-tooltip\";\nimport { forwardRef } from \"react\";\n\ninterface TooltipProps\n extends TooltipPrimitiveProps, Omit<TooltipContentProps, \"content\"> {\n content: React.ReactNode;\n className?: string;\n triggerAsChild?: boolean;\n}\n\nconst TooltipContent = forwardRef<\n React.ElementRef<typeof Content>,\n TooltipContentProps\n>(({ children, className, ...props }, ref) => {\n return (\n <Content\n ref={ref}\n {...props}\n className={twMerge(\n // Base styles\n \"z-50 overflow-hidden rounded-md text-sm\",\n // Colors & Border\n \"border border-gray-200 bg-gray-50 text-gray-900 dark:border-slate-500 dark:bg-slate-600 dark:text-slate-100\",\n // Padding & Shadow\n \"px-3 py-1.5 shadow-md\",\n // Animations\n \"data-[state=open]:animate-zoom-in\",\n \"data-[state=closed]:animate-zoom-out\",\n // Slide animations based on position\n \"data-[side=bottom]:animate-slide-in-from-top\",\n \"data-[side=left]:animate-slide-in-from-right\",\n \"data-[side=right]:animate-slide-in-from-left\",\n \"data-[side=top]:animate-slide-in-from-bottom\",\n className,\n )}\n >\n {children}\n </Content>\n );\n});\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n triggerAsChild = false,\n delayDuration = 0,\n ...props\n}) => {\n const { open, defaultOpen, onOpenChange, ...rest } = props;\n\n return (\n <Root\n defaultOpen={defaultOpen}\n delayDuration={delayDuration}\n onOpenChange={onOpenChange}\n open={open}\n >\n <Trigger\n asChild={triggerAsChild}\n type={triggerAsChild ? undefined : \"button\"} // Prevent form submission when default trigger is clicked\n >\n {children}\n </Trigger>\n <Portal>\n <TooltipContent sideOffset={3} {...rest}>\n {content}\n </TooltipContent>\n </Portal>\n </Root>\n );\n};\n\nexport {\n Tooltip,\n TooltipContent,\n Provider as TooltipProvider,\n Root as TooltipRoot,\n Trigger as TooltipTrigger,\n type TooltipProps,\n};\n"],"mappings":";;;;;AAqBA,MAAMO,iBAAiBD,4BAGpB,EAAEE,UAAUC,WAAW,GAAGC,SAASC,QAAQ;AAC5C,QACE,oBAAC,SAAD;EACOA;EACL,GAAID;EACJ,WAAWV,QAET,2CAEA,+GAEA,yBAEA,qCACA,wCAEA,gDACA,gDACA,gDACA,gDACAS,UACD;EAEAD;EACO,CAAA;EAEZ;AAEF,MAAMI,WAAmC,EACvCC,SACAL,UACAM,iBAAiB,OACjBC,gBAAgB,GAChB,GAAGL,YACC;CACJ,MAAM,EAAEM,MAAMC,aAAaC,cAAc,GAAGC,SAAST;AAErD,QACE,qBAAC,MAAD;EACeO;EACEF;EACDG;EACRF;YAJR,CAME,oBAAC,SAAD;GACE,SAASF;GACT,MAAMA,iBAAiBM,KAAAA,IAAY;GAElCZ;GACM,CAAA,EACT,oBAAC,QAAD,EAAA,UACE,oBAAC,gBAAD;GAAgB,YAAY;GAAG,GAAIW;aAChCN;GACa,CAAA,EACV,CAAA,CACH"}
1
+ {"version":3,"file":"tooltip.js","names":["twMerge","Content","Portal","Provider","Root","Trigger","forwardRef","TooltipContent","children","className","props","ref","Tooltip","content","triggerAsChild","delayDuration","open","defaultOpen","onOpenChange","rest","undefined","TooltipProvider","TooltipRoot","TooltipTrigger"],"sources":["../../../../src/ui/components/tooltip/tooltip.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport type {\n TooltipContentProps,\n TooltipProps as TooltipPrimitiveProps,\n} from \"@radix-ui/react-tooltip\";\nimport {\n Content,\n Portal,\n Provider,\n Root,\n Trigger,\n} from \"@radix-ui/react-tooltip\";\nimport { forwardRef } from \"react\";\n\ninterface TooltipProps\n extends TooltipPrimitiveProps, Omit<TooltipContentProps, \"content\"> {\n content: React.ReactNode;\n className?: string;\n triggerAsChild?: boolean;\n}\n\nconst TooltipContent = forwardRef<\n React.ElementRef<typeof Content>,\n TooltipContentProps\n>(({ children, className, ...props }, ref) => {\n return (\n <Content\n ref={ref}\n {...props}\n className={twMerge(\n // Base styles\n \"z-50 overflow-hidden rounded-md text-sm\",\n // Colors & Border\n \"border border-border bg-popover text-popover-foreground\",\n // Padding & Shadow\n \"px-3 py-1.5 shadow-md\",\n // Animations\n \"data-[state=open]:animate-zoom-in\",\n \"data-[state=closed]:animate-zoom-out\",\n // Slide animations based on position\n \"data-[side=bottom]:animate-slide-in-from-top\",\n \"data-[side=left]:animate-slide-in-from-right\",\n \"data-[side=right]:animate-slide-in-from-left\",\n \"data-[side=top]:animate-slide-in-from-bottom\",\n className,\n )}\n >\n {children}\n </Content>\n );\n});\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n triggerAsChild = false,\n delayDuration = 0,\n ...props\n}) => {\n const { open, defaultOpen, onOpenChange, ...rest } = props;\n\n return (\n <Root\n defaultOpen={defaultOpen}\n delayDuration={delayDuration}\n onOpenChange={onOpenChange}\n open={open}\n >\n <Trigger\n asChild={triggerAsChild}\n type={triggerAsChild ? undefined : \"button\"} // Prevent form submission when default trigger is clicked\n >\n {children}\n </Trigger>\n <Portal>\n <TooltipContent sideOffset={3} {...rest}>\n {content}\n </TooltipContent>\n </Portal>\n </Root>\n );\n};\n\nexport {\n Tooltip,\n TooltipContent,\n Provider as TooltipProvider,\n Root as TooltipRoot,\n Trigger as TooltipTrigger,\n type TooltipProps,\n};\n"],"mappings":";;;;;AAqBA,MAAMO,iBAAiBD,4BAGpB,EAAEE,UAAUC,WAAW,GAAGC,SAASC,QAAQ;AAC5C,QACE,oBAAC,SAAD;EACOA;EACL,GAAID;EACJ,WAAWV,QAET,2CAEA,2DAEA,yBAEA,qCACA,wCAEA,gDACA,gDACA,gDACA,gDACAS,UACD;EAEAD;EACO,CAAA;EAEZ;AAEF,MAAMI,WAAmC,EACvCC,SACAL,UACAM,iBAAiB,OACjBC,gBAAgB,GAChB,GAAGL,YACC;CACJ,MAAM,EAAEM,MAAMC,aAAaC,cAAc,GAAGC,SAAST;AAErD,QACE,qBAAC,MAAD;EACeO;EACEF;EACDG;EACRF;YAJR,CAME,oBAAC,SAAD;GACE,SAASF;GACT,MAAMA,iBAAiBM,KAAAA,IAAY;GAElCZ;GACM,CAAA,EACT,oBAAC,QAAD,EAAA,UACE,oBAAC,gBAAD;GAAgB,YAAY;GAAG,GAAIW;aAChCN;GACa,CAAA,EACV,CAAA,CACH"}
@@ -4,7 +4,7 @@ import { n as ButtonProps, r as buttonVariants, t as Button } from "../button-C8
4
4
  import { n as CharacterCounterProps, t as CharacterCounter } from "../character-counter-BWoglM2P.js";
5
5
  import { n as CheckboxValue, t as CheckboxBase } from "../checkbox-base-CZo-4eL0.js";
6
6
  import { n as CheckboxProps, t as Checkbox } from "../checkbox-CGBtXQnI.js";
7
- import { a as CommandItem, i as CommandInput, n as CommandEmpty, o as CommandList, r as CommandGroup, s as CommandLoading, t as Command } from "../command-B5BuEBfZ.js";
7
+ import { a as CommandItem, i as CommandInput, n as CommandEmpty, o as CommandList, r as CommandGroup, s as CommandLoading, t as Command } from "../command-By1kGfcI.js";
8
8
  import { n as RadioGroupFieldProps, t as RadioGroupField } from "../radio-group-field-BN654-SO.js";
9
9
  import { n as SelectFieldProps, r as SelectFieldRaw, t as SelectField } from "../select-field-C97QIhUL.js";
10
10
  import { n as EnumFieldProps, t as EnumField } from "../enum-field-Cct-i2Uz.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@powerhousedao/design-system",
3
- "version": "6.2.0-dev.3",
4
- "description": "",
3
+ "version": "6.2.0-dev.30",
4
+ "description": "Powerhouse document-engineering design system — GraphQL scalar UI components for building consistent Powerhouse editors.",
5
5
  "files": [
6
6
  "dist",
7
7
  "theme.css"
@@ -9,7 +9,8 @@
9
9
  "type": "module",
10
10
  "repository": {
11
11
  "type": "git",
12
- "url": "https://github.com/powerhouse-inc/powerhouse"
12
+ "url": "https://github.com/powerhouse-inc/powerhouse",
13
+ "directory": "packages/design-system"
13
14
  },
14
15
  "publishConfig": {
15
16
  "access": "public"
@@ -64,7 +65,7 @@
64
65
  "bugs": {
65
66
  "url": "https://github.com/powerhouse-inc/design-system/issues"
66
67
  },
67
- "homepage": "https://github.com/powerhouse-inc/design-system#readme",
68
+ "homepage": "https://academy.vetra.io/academy/Reference/EditorsUI/DocumentEngineering",
68
69
  "devDependencies": {
69
70
  "@babel/core": "^7.29.0",
70
71
  "@babel/plugin-transform-react-pure-annotations": "^7.27.1",
@@ -107,9 +108,9 @@
107
108
  "tailwindcss": "4.2.2",
108
109
  "tsdown": "0.21.1",
109
110
  "tsx": "4.21.0",
110
- "vite": "8.0.8",
111
+ "vite": "8.0.10",
111
112
  "vitest": "4.1.1",
112
- "@powerhousedao/config": "6.2.0-dev.3"
113
+ "@powerhousedao/config": "6.2.0-dev.30"
113
114
  },
114
115
  "peerDependencies": {
115
116
  "react": ">=19.0.0",
@@ -143,9 +144,23 @@
143
144
  "tailwind-merge": "3.4.0",
144
145
  "type-fest": "5.6.0",
145
146
  "usehooks-ts": "^3.1.1",
146
- "@powerhousedao/reactor-browser": "6.2.0-dev.3",
147
- "@powerhousedao/shared": "6.2.0-dev.3"
147
+ "@powerhousedao/reactor-browser": "6.2.0-dev.30",
148
+ "@powerhousedao/shared": "6.2.0-dev.30"
148
149
  },
150
+ "keywords": [
151
+ "powerhouse",
152
+ "vetra",
153
+ "document-model",
154
+ "local-first",
155
+ "event-sourcing",
156
+ "design-system",
157
+ "components",
158
+ "react",
159
+ "graphql",
160
+ "scalars",
161
+ "ui",
162
+ "editor"
163
+ ],
149
164
  "scripts": {
150
165
  "tsc": "tsc",
151
166
  "lint": "eslint",
package/theme.css CHANGED
@@ -15,16 +15,6 @@
15
15
  --color-gray-700: hsl(189 5% 29%);
16
16
  --color-gray-800: hsl(200 4% 26%);
17
17
  --color-gray-900: hsl(192 5% 21%);
18
- --color-gray-50: hsl(0 0% 99%);
19
- --color-gray-100: hsl(0 0% 96%);
20
- --color-gray-200: hsl(0 0% 94%);
21
- --color-gray-300: hsl(210 3% 85%);
22
- --color-gray-400: hsl(180 2% 78%);
23
- --color-gray-500: hsl(200 2% 63%);
24
- --color-gray-600: hsl(200 4% 44%);
25
- --color-gray-700: hsl(189 5% 29%);
26
- --color-gray-800: hsl(200 4% 26%);
27
- --color-gray-900: hsl(192 5% 21%);
28
18
  --color-slate-50: hsl(210 20% 99%);
29
19
  --color-slate-100: hsl(210 20% 96%);
30
20
  --color-slate-200: hsl(210 9% 90%);
@@ -35,7 +25,8 @@
35
25
  --color-slate-700: hsl(204 9% 11%);
36
26
  --color-slate-800: hsl(195 9% 9%);
37
27
  --color-slate-900: hsl(195 6% 6%);
38
- --color-blue-100: hsl(209 100% 99%);
28
+ --color-blue-50: hsl(209 100% 96%);
29
+ --color-blue-100: hsl(209 100% 89%);
39
30
  --color-blue-200: hsl(209 97% 85%);
40
31
  --color-blue-300: hsl(209 100% 80%);
41
32
  --color-blue-400: hsl(209 100% 75%);
@@ -44,7 +35,8 @@
44
35
  --color-blue-700: hsl(209 100% 60%);
45
36
  --color-blue-800: hsl(209 100% 55%);
46
37
  --color-blue-900: hsl(209 100% 50%);
47
- --color-green-100: hsl(134 51% 99%);
38
+ --color-green-50: hsl(134 51% 96%);
39
+ --color-green-100: hsl(134 51% 89%);
48
40
  --color-green-200: hsl(135 52% 83%);
49
41
  --color-green-300: hsl(136 52% 77%);
50
42
  --color-green-400: hsl(136 53% 72%);
@@ -53,7 +45,8 @@
53
45
  --color-green-700: hsl(136 52% 55%);
54
46
  --color-green-800: hsl(136 53% 49%);
55
47
  --color-green-900: hsl(136 53% 43%);
56
- --color-purple-100: hsl(262 79% 99%);
48
+ --color-purple-50: hsl(262 79% 96%);
49
+ --color-purple-100: hsl(262 79% 89%);
57
50
  --color-purple-200: hsl(263 79% 89%);
58
51
  --color-purple-300: hsl(263 79% 85%);
59
52
  --color-purple-400: hsl(264 77% 81%);
@@ -62,7 +55,8 @@
62
55
  --color-purple-700: hsl(263 78% 70%);
63
56
  --color-purple-800: hsl(263 78% 66%);
64
57
  --color-purple-900: hsl(263 78% 63%);
65
- --color-red-100: hsl(3 82% 99%);
58
+ --color-red-50: hsl(3 82% 96%);
59
+ --color-red-100: hsl(3 82% 89%);
66
60
  --color-red-200: hsl(3 82% 91%);
67
61
  --color-red-300: hsl(6 82% 87%);
68
62
  --color-red-400: hsl(5 82% 83%);
@@ -71,7 +65,8 @@
71
65
  --color-red-700: hsl(4 81% 69%);
72
66
  --color-red-800: hsl(5 81% 61%);
73
67
  --color-red-900: hsl(5 81% 56%);
74
- --color-orange-100: hsl(33 100% 99%);
68
+ --color-orange-50: hsl(33 100% 96%);
69
+ --color-orange-100: hsl(33 100% 89%);
75
70
  --color-orange-200: hsl(32 100% 85%);
76
71
  --color-orange-300: hsl(32 100% 80%);
77
72
  --color-orange-400: hsl(32 100% 75%);
@@ -80,7 +75,8 @@
80
75
  --color-orange-700: hsl(32 100% 60%);
81
76
  --color-orange-800: hsl(33 100% 55%);
82
77
  --color-orange-900: hsl(32 100% 50%);
83
- --color-yellow-100: hsl(46 100% 99%);
78
+ --color-yellow-50: hsl(46 100% 96%);
79
+ --color-yellow-100: hsl(46 100% 89%);
84
80
  --color-yellow-200: hsl(47 100% 86%);
85
81
  --color-yellow-300: hsl(47 100% 79%);
86
82
  --color-yellow-400: hsl(47 100% 69%);
@@ -89,7 +85,8 @@
89
85
  --color-yellow-700: hsl(47 100% 51%);
90
86
  --color-yellow-800: hsl(47 100% 50%);
91
87
  --color-yellow-900: hsl(47 100% 49%);
92
- --color-charcoal-100: hsl(214 16% 99%);
88
+ --color-charcoal-50: hsl(214 16% 96%);
89
+ --color-charcoal-100: hsl(214 16% 89%);
93
90
  --color-charcoal-200: hsl(219 17% 84%);
94
91
  --color-charcoal-300: hsl(221 17% 67%);
95
92
  --color-charcoal-400: hsl(17 17% 58%);
@@ -229,3 +226,134 @@
229
226
  }
230
227
  }
231
228
  }
229
+
230
+ :root {
231
+ --background: var(--color-gray-50);
232
+ --foreground: var(--color-gray-800);
233
+ --card: var(--color-white);
234
+ --card-foreground: var(--color-gray-800);
235
+ --popover: var(--color-white);
236
+ --popover-foreground: var(--color-gray-800);
237
+ --primary: var(--color-gray-800);
238
+ --primary-foreground: var(--color-white);
239
+ --secondary: var(--color-gray-200);
240
+ --secondary-foreground: var(--color-gray-700);
241
+ --muted: var(--color-gray-100);
242
+ --muted-foreground: var(--color-gray-500);
243
+ --accent: var(--color-gray-100);
244
+ --accent-foreground: var(--color-gray-800);
245
+ --border: var(--color-gray-200);
246
+ --input: var(--color-gray-200);
247
+ --ring: var(--color-blue-500);
248
+ --hover: 0.95;
249
+ --active: 0.9;
250
+ --disabled: 0.5;
251
+
252
+ --destructive: var(--color-red-900);
253
+ --destructive-foreground: var(--color-white);
254
+ --info: var(--color-blue-900);
255
+ --info-foreground: var(--color-white);
256
+ --success: var(--color-green-900);
257
+ --success-foreground: var(--color-white);
258
+ --warning: var(--color-orange-900);
259
+ --warning-foreground: var(--color-white);
260
+
261
+ --chart-1: var(--color-blue-600);
262
+ --chart-2: var(--color-green-600);
263
+ --chart-3: var(--color-orange-600);
264
+ --chart-4: var(--color-purple-600);
265
+ --chart-5: var(--color-red-600);
266
+
267
+ --sidebar: var(--background);
268
+ --sidebar-foreground: var(--foreground);
269
+ --sidebar-primary: var(--primary);
270
+ --sidebar-primary-foreground: var(--primary-foreground);
271
+ --sidebar-accent: var(--accent);
272
+ --sidebar-accent-foreground: var(--accent-foreground);
273
+ --sidebar-border: var(--border);
274
+ --sidebar-ring: var(--ring);
275
+ }
276
+
277
+ .dark {
278
+ --background: var(--color-slate-800);
279
+ --foreground: var(--color-slate-100);
280
+ --card: var(--color-slate-700);
281
+ --card-foreground: var(--color-slate-100);
282
+ --popover: var(--color-slate-700);
283
+ --popover-foreground: var(--color-slate-100);
284
+ --primary: var(--color-slate-100);
285
+ --primary-foreground: var(--color-slate-900);
286
+ --secondary: var(--color-slate-600);
287
+ --secondary-foreground: var(--color-slate-100);
288
+ --muted: var(--color-slate-700);
289
+ --muted-foreground: var(--color-slate-300);
290
+ --accent: var(--color-slate-700);
291
+ --accent-foreground: var(--color-slate-100);
292
+ --border: var(--color-slate-500);
293
+ --input: var(--color-slate-500);
294
+ --hover: 1.25;
295
+ --active: 1.4;
296
+ }
297
+
298
+ @theme inline {
299
+ --color-background: var(--background);
300
+ --color-foreground: var(--foreground);
301
+ --color-card: var(--card);
302
+ --color-card-foreground: var(--card-foreground);
303
+ --color-popover: var(--popover);
304
+ --color-popover-foreground: var(--popover-foreground);
305
+ --color-primary: var(--primary);
306
+ --color-primary-foreground: var(--primary-foreground);
307
+ --color-secondary: var(--secondary);
308
+ --color-secondary-foreground: var(--secondary-foreground);
309
+ --color-muted: var(--muted);
310
+ --color-muted-foreground: var(--muted-foreground);
311
+ --color-accent: var(--accent);
312
+ --color-accent-foreground: var(--accent-foreground);
313
+ --color-destructive: var(--destructive);
314
+ --color-destructive-foreground: var(--destructive-foreground);
315
+ --color-border: var(--border);
316
+ --color-input: var(--input);
317
+ --color-ring: var(--ring);
318
+
319
+ --color-info: var(--info);
320
+ --color-info-foreground: var(--info-foreground);
321
+ --color-success: var(--success);
322
+ --color-success-foreground: var(--success-foreground);
323
+ --color-warning: var(--warning);
324
+ --color-warning-foreground: var(--warning-foreground);
325
+
326
+ --color-chart-1: var(--chart-1);
327
+ --color-chart-2: var(--chart-2);
328
+ --color-chart-3: var(--chart-3);
329
+ --color-chart-4: var(--chart-4);
330
+ --color-chart-5: var(--chart-5);
331
+
332
+ --color-sidebar: var(--sidebar);
333
+ --color-sidebar-foreground: var(--sidebar-foreground);
334
+ --color-sidebar-primary: var(--sidebar-primary);
335
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
336
+ --color-sidebar-accent: var(--sidebar-accent);
337
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
338
+ --color-sidebar-border: var(--sidebar-border);
339
+ --color-sidebar-ring: var(--sidebar-ring);
340
+ }
341
+
342
+ @utility hover-effect {
343
+ filter: brightness(var(--hover));
344
+ transition: filter 0.2s ease-in-out;
345
+ cursor: pointer;
346
+ }
347
+
348
+ @utility active-effect {
349
+ filter: brightness(var(--active));
350
+ transition: filter 0.1s ease-in-out;
351
+ }
352
+
353
+ @utility disabled-effect {
354
+ cursor: not-allowed;
355
+ opacity: var(--disabled);
356
+ filter: grayscale(1);
357
+ outline: none;
358
+ box-shadow: none;
359
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-B5BuEBfZ.d.ts","names":[],"sources":["../src/ui/components/command/command.tsx"],"mappings":";;;cAKM,OAAA,EAAO,KAAA,CAAA,yBAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;cAeP,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAAA,CAAA,iBAAA,CAAA,KAAA,CAAA,mBAAA,CAAA,gBAAA,GAAA,gBAAA,iBAAA,KAAA,CAAA,mBAAA,CAAA,gBAAA;;;;;;;;;;cA2CZ,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA;;;;;;;;;cAqBX,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,IAAA;;;;;;;;;;cAMd,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA;;;;;;;cAMZ,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA;;;;;;;;;;;cAgBZ,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA"}