@ytspar/devbar 1.0.0-canary.cdf7fa2 → 1.0.0-canary.deff6e9

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 (122) hide show
  1. package/README.md +4 -0
  2. package/dist/GlobalDevBar.d.ts +111 -197
  3. package/dist/GlobalDevBar.d.ts.map +1 -0
  4. package/dist/GlobalDevBar.js +165 -2657
  5. package/dist/GlobalDevBar.js.map +1 -0
  6. package/dist/accessibility.d.ts +1 -0
  7. package/dist/accessibility.d.ts.map +1 -0
  8. package/dist/accessibility.js +1 -0
  9. package/dist/accessibility.js.map +1 -0
  10. package/dist/constants.d.ts +44 -12
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/constants.js +104 -121
  13. package/dist/constants.js.map +1 -0
  14. package/dist/debug.d.ts +4 -3
  15. package/dist/debug.d.ts.map +1 -0
  16. package/dist/debug.js +6 -4
  17. package/dist/debug.js.map +1 -0
  18. package/dist/earlyConsoleCapture.d.ts +4 -31
  19. package/dist/earlyConsoleCapture.d.ts.map +1 -0
  20. package/dist/earlyConsoleCapture.js +4 -74
  21. package/dist/earlyConsoleCapture.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +6 -1
  25. package/dist/index.js.map +1 -0
  26. package/dist/lazy/index.d.ts +1 -0
  27. package/dist/lazy/index.d.ts.map +1 -0
  28. package/dist/lazy/index.js +1 -0
  29. package/dist/lazy/index.js.map +1 -0
  30. package/dist/lazy/lazyHtml2Canvas.d.ts +5 -0
  31. package/dist/lazy/lazyHtml2Canvas.d.ts.map +1 -0
  32. package/dist/lazy/lazyHtml2Canvas.js +1 -0
  33. package/dist/lazy/lazyHtml2Canvas.js.map +1 -0
  34. package/dist/modules/index.d.ts +15 -0
  35. package/dist/modules/index.d.ts.map +1 -0
  36. package/dist/modules/index.js +14 -0
  37. package/dist/modules/index.js.map +1 -0
  38. package/dist/modules/keyboard.d.ts +15 -0
  39. package/dist/modules/keyboard.d.ts.map +1 -0
  40. package/dist/modules/keyboard.js +60 -0
  41. package/dist/modules/keyboard.js.map +1 -0
  42. package/dist/modules/performance.d.ts +26 -0
  43. package/dist/modules/performance.d.ts.map +1 -0
  44. package/dist/modules/performance.js +197 -0
  45. package/dist/modules/performance.js.map +1 -0
  46. package/dist/modules/rendering.d.ts +20 -0
  47. package/dist/modules/rendering.d.ts.map +1 -0
  48. package/dist/modules/rendering.js +1947 -0
  49. package/dist/modules/rendering.js.map +1 -0
  50. package/dist/modules/screenshot.d.ts +62 -0
  51. package/dist/modules/screenshot.d.ts.map +1 -0
  52. package/dist/modules/screenshot.js +325 -0
  53. package/dist/modules/screenshot.js.map +1 -0
  54. package/dist/modules/theme.d.ts +20 -0
  55. package/dist/modules/theme.d.ts.map +1 -0
  56. package/dist/modules/theme.js +60 -0
  57. package/dist/modules/theme.js.map +1 -0
  58. package/dist/modules/tooltips.d.ts +74 -0
  59. package/dist/modules/tooltips.d.ts.map +1 -0
  60. package/dist/modules/tooltips.js +553 -0
  61. package/dist/modules/tooltips.js.map +1 -0
  62. package/dist/modules/types.d.ts +118 -0
  63. package/dist/modules/types.d.ts.map +1 -0
  64. package/dist/modules/types.js +9 -0
  65. package/dist/modules/types.js.map +1 -0
  66. package/dist/modules/websocket.d.ts +16 -0
  67. package/dist/modules/websocket.d.ts.map +1 -0
  68. package/dist/modules/websocket.js +314 -0
  69. package/dist/modules/websocket.js.map +1 -0
  70. package/dist/network.d.ts +1 -0
  71. package/dist/network.d.ts.map +1 -0
  72. package/dist/network.js +5 -6
  73. package/dist/network.js.map +1 -0
  74. package/dist/outline.d.ts +1 -0
  75. package/dist/outline.d.ts.map +1 -0
  76. package/dist/outline.js +1 -0
  77. package/dist/outline.js.map +1 -0
  78. package/dist/presets.d.ts +9 -8
  79. package/dist/presets.d.ts.map +1 -0
  80. package/dist/presets.js +9 -8
  81. package/dist/presets.js.map +1 -0
  82. package/dist/schema.d.ts +1 -0
  83. package/dist/schema.d.ts.map +1 -0
  84. package/dist/schema.js +3 -3
  85. package/dist/schema.js.map +1 -0
  86. package/dist/settings.d.ts +7 -8
  87. package/dist/settings.d.ts.map +1 -0
  88. package/dist/settings.js +21 -17
  89. package/dist/settings.js.map +1 -0
  90. package/dist/storage.d.ts +1 -0
  91. package/dist/storage.d.ts.map +1 -0
  92. package/dist/storage.js +1 -0
  93. package/dist/storage.js.map +1 -0
  94. package/dist/types.d.ts +5 -4
  95. package/dist/types.d.ts.map +1 -0
  96. package/dist/types.js +3 -2
  97. package/dist/types.js.map +1 -0
  98. package/dist/ui/buttons.d.ts +3 -2
  99. package/dist/ui/buttons.d.ts.map +1 -0
  100. package/dist/ui/buttons.js +3 -2
  101. package/dist/ui/buttons.js.map +1 -0
  102. package/dist/ui/cards.d.ts +37 -0
  103. package/dist/ui/cards.d.ts.map +1 -0
  104. package/dist/ui/cards.js +134 -0
  105. package/dist/ui/cards.js.map +1 -0
  106. package/dist/ui/icons.d.ts +71 -2
  107. package/dist/ui/icons.d.ts.map +1 -0
  108. package/dist/ui/icons.js +148 -2
  109. package/dist/ui/icons.js.map +1 -0
  110. package/dist/ui/index.d.ts +3 -1
  111. package/dist/ui/index.d.ts.map +1 -0
  112. package/dist/ui/index.js +3 -1
  113. package/dist/ui/index.js.map +1 -0
  114. package/dist/ui/modals.d.ts +7 -2
  115. package/dist/ui/modals.d.ts.map +1 -0
  116. package/dist/ui/modals.js +51 -6
  117. package/dist/ui/modals.js.map +1 -0
  118. package/dist/utils.d.ts +3 -2
  119. package/dist/utils.d.ts.map +1 -0
  120. package/dist/utils.js +3 -2
  121. package/dist/utils.js.map +1 -0
  122. package/package.json +17 -14
@@ -1,7 +1,7 @@
1
1
  /**
2
- * DevBar Icons
2
+ * devbar Icons
3
3
  *
4
- * SVG icon creation utilities for the DevBar UI.
4
+ * SVG icon creation utilities for the devbar UI.
5
5
  */
6
6
  /**
7
7
  * Create an SVG icon element with the given path data
@@ -11,3 +11,72 @@ export declare function createSvgIcon(pathData: string, options: {
11
11
  fill?: boolean;
12
12
  stroke?: boolean;
13
13
  }): SVGSVGElement;
14
+ /** devbar wordmark viewBox dimensions */
15
+ export declare const DEVBAR_LOGO_VIEWBOX = "0 0 580.43 167.62";
16
+ /** devbar logo colors */
17
+ export declare const DEVBAR_LOGO_COLORS: {
18
+ /** Emerald green for dark mode */
19
+ readonly dark: "#10b981";
20
+ /** Darker emerald for light mode */
21
+ readonly light: "#047857";
22
+ };
23
+ /** devbar wordmark letter path data */
24
+ export declare const DEVBAR_LOGO_PATHS: {
25
+ readonly d: "M73.46,161.67l-6.41-.16-.1-7.56-5.52-.09v-21.54s6.94-.1,6.94-.1l.03-29.61,7.14-.19.25-22.45,9.06-.26.22-8.19,8.82-.08.32-5.87,30.1-.03.26,5.83,7.76-.07.08-20.29,6.17-.14-.02-21.58h26.12s.03,11.73.03,11.73l-3.46.3-.05,22.8-6.68.14-.05,32.83-6.94.1-.04,34.47-7.86.33-.05,34.45h-26.66s-.13-6.81-.13-6.81l-3.2.08-.05,1.8-5.88.18-.27,5.94h-29.79s-.13-5.95-.13-5.95ZM109.74,139.54l6.11-.13.07-19.02,6.12-.26.16-12.27,2.82-.52v-12.89s-3.8-.49-3.8-.49l-.37-8.03-15.85.03-.2,6.24-6.19.14-.04,22.21-8.52.15v24.28s3.28.13,3.28.13l.05,7.83,16.17.05.19-7.45Z";
26
+ readonly e: "M200.68,148.2l.13-8.62,7.57-.15.25-5.78,26.28-.19.04,5.66-4.84.24-.1,11.5-4.74.06-.15,7.09-4.52.16-.33,4.81-9.7.28-.07,4.36-41.06.02-.18-6.21-8.02-.24-.27-7.17-6.21-.21.13-17.79,4.92-.37.02-32.36,8.3-.13.09-19.13,5.63-.15.36-6.19,5.74-.28.27-5.76,6.21-.22.18-5.85h45.06s.35,5.93.35,5.93l5.5.23.31,5.65,6.41.14v28.86s-5.29.2-5.29.2l-.09,15.01h-54.52s-.17,15.16-.17,15.16l-2.48.57v10.93M188.1,106.02l28.63-.03.07-22.28-21.6-.03-.33,10.73-6.93.27.16,11.34Z";
27
+ readonly v: "M325.06,99.7l-7.88.15-.03,14.96-7.72.07-.04,16.62-6.64.14-.12,16.18-5.95.06-.16,7.13-4.53.12-.29,11.35-30.22-.07v-29.09s-4.87-.31-4.87-.31l-.02-44.28-4.87-.18v-26.98s25.36,0,25.36,0l.17,63.22c3.26.33,6.23.24,9.58-.06l.02-14.7,6.71-.23.05-17.25,7.87-.42.2-16.13,6.28-.32.07-14.13,26.57-.03.18,5.94-2.99.18-.12,11.36-6.39.34-.23,16.35Z";
28
+ readonly b: "M390.29,158.27l-.23,8.17h-28.6s.2-5.07.2-5.07l-8.04-.22.02-1.68-7.02.08-.19,6.91-21.06-.08-.14-26.82,5.48-.22.27-21.16,5.39-.31.08-21.12,5.46-.18.22-26.59,6.2-.41.26-21.44,4.93-.15.2-18.51,24.28-.18v22.97s-6.52.12-6.52.12l.06,19.15,7.37-.12.16-5.88h28.13s.25,5.77.25,5.77l4.95.13.18,5.76,5.04.45-.07,30.61-4.86.44-.17,22.83-7.23.34-.11,16.6-6.12.39-.19,9.31-8.57.09ZM387.51,93.06l-.14-7.17c-3.48,0-15.85.05-19.09-.09l-.09,8-5.99.29-.02,28.81-6.95.14.03,16.09,4.11.23.12,7.77h16.31s0-7.6,0-7.6l6.41-.11.06-15.85,5.2-.06";
29
+ readonly a: "M417.64,131.33l5.08-.1.2-9.47,7.45-.4.08-9.51,11.77-.12.21-5.99c3.64-.42,13.39,1.12,16.29-1.73l11.65-.23.32-6.23,8.81-.24.09-15.84-19.56-.04-.18,5.74-5.19.25v7.51s-23.11.1-23.11.1l-.32-7.21,2.65-.48.06-9.69,8.57-.15.22-8.1,7.93-.09.21-5.92h42.51s.43,5.82.43,5.82l5.32.19.4,5.74,5.9.32.16,29.4-7.26.25v30.71s-6.5.14-6.5.14v19.98s5.11.32,5.11.32v8.03s-26.37.03-26.37.03l-.24-9.44-5.85-.1-.2,4.78-6.35.1-.16,5.78-29.43-.02-.09-4.57-5-.14-.15-5.88-5.51-.19.03-23.34ZM461.97,145.81l.23-3.91,5.51-.09.05-8.29,6.01-.1-.04-17.33-10,.04-.12,4.69-10.87.13-.39,6.02-5.98.34v18.47s15.61.04,15.61.04Z";
30
+ readonly r: "M506.46,149.81l5.3-.22.03-28.17,6.48-.13.15-25.67,6.65-.35.02-29.71,22.63.18c-.07,2.81-.13,8.82-.04,11.59l7.1.1.27-4.36,6.49-.41.17-7.1,18.69-.02.04,24.62-27.68.06-.14,6.53-7.65.21-.14,22.22-6,.42-.06,23.2-5.78.25-.02,23.4-26.5-.03";
31
+ readonly dLeftEdge: "M59.47,37.37l.06,5.59-8.51.05-.12,6.47-7.89-.1v2.81s-2.22.06-2.22.06l-.1,6.93-9.9.25-.11,6.27-7.16.17-.05,7.97-5.32.18v21.01s11.16.19,11.16.19l.19,6.35,9.28.08.16,6.01,20.67.19.13,6.5-46.46-.14-.48-7.41-7.36-.44-.24-6.74-5.19-.23.13-21.7,6.84-.44.06-8.58,6.33-.23.09-7.19h6.27s.12-5.64.12-5.64l6.01-.1.52-4.41,5.36-.32.34-3.85,5.9-.31.46-3.45,7.54-.18.14-5.53,9.44-.07";
32
+ };
33
+ /** devbar wordmark polyline/polygon data */
34
+ export declare const DEVBAR_LOGO_SHAPES: {
35
+ readonly topBar: "214.17 22.67 204.58 22.7 204.66 15.98 196.08 15.68 195.86 7.9 148.96 7.93 148.81 13.79 114.91 13.79 114.94 7.24 143.91 7.19 144.14 0 214.17 0";
36
+ readonly dStep1: "114.43 21.6 92.3 21.3 92.17 14.42 114.63 14.43 114.43 21.6";
37
+ readonly dStep2: "91.89 29.07 73.29 29.04 73.34 21.96 91.87 21.65 91.89 29.07";
38
+ readonly dStep3: "72.95 35.82 59.81 35.85 59.8 29.34 72.79 29.46 72.95 35.82";
39
+ readonly dCounter: "109.74 139.54 109.55 146.99 93.38 146.94 93.33 139.12 90.04 138.99 90.04 114.71 98.57 114.55 98.61 92.35 104.8 92.21 105 85.97 120.85 85.93 121.22 93.96 125.02 94.45 125.03 107.34 122.21 107.86 122.05 120.14 115.92 120.4 115.85 139.42 109.74 139.54";
40
+ readonly eCounter: "188.1 106.02 187.94 94.68 194.87 94.41 195.2 83.68 216.81 83.71 216.73 105.99 188.1 106.02";
41
+ };
42
+ export interface CreateLogoOptions {
43
+ /** Width in pixels (default: 32) */
44
+ width?: number;
45
+ /** Height in pixels (default: 32) */
46
+ height?: number;
47
+ /** Fill color or 'currentColor' (default: uses theme-aware colors) */
48
+ fill?: string;
49
+ /** CSS class name for the SVG element */
50
+ className?: string;
51
+ /** Whether to include CSS for theme-aware colors (default: true) */
52
+ themed?: boolean;
53
+ }
54
+ /**
55
+ * Create a devbar logo SVG element.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * // Theme-aware logo (default)
60
+ * const logo = createDevBarLogo({ width: 48, height: 48 });
61
+ * document.body.appendChild(logo);
62
+ *
63
+ * // Custom color
64
+ * const customLogo = createDevBarLogo({ fill: '#ff0000' });
65
+ *
66
+ * // Use currentColor (inherits from parent)
67
+ * const inheritLogo = createDevBarLogo({ fill: 'currentColor' });
68
+ * ```
69
+ */
70
+ export declare function createDevBarLogo(options?: CreateLogoOptions): SVGSVGElement;
71
+ /**
72
+ * Get the devbar logo as an SVG string.
73
+ * Useful for SSR or when you need the raw SVG markup.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * const svgString = getDevBarLogoSvg({ width: 64 });
78
+ * // Use with a templating system or set via outerHTML
79
+ * ```
80
+ */
81
+ export declare function getDevBarLogoSvg(options?: CreateLogoOptions): string;
82
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/ui/icons.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,aAAa,CAmBf;AAMD,yCAAyC;AACzC,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAEvD,yBAAyB;AACzB,eAAO,MAAM,kBAAkB;IAC7B,kCAAkC;;IAElC,oCAAoC;;CAE5B,CAAC;AAEX,uCAAuC;AACvC,eAAO,MAAM,iBAAiB;;;;;;;;CASpB,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB;;;;;;;CAUrB,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,aAAa,CAkE/E;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAmCxE"}
package/dist/ui/icons.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * DevBar Icons
2
+ * devbar Icons
3
3
  *
4
- * SVG icon creation utilities for the DevBar UI.
4
+ * SVG icon creation utilities for the devbar UI.
5
5
  */
6
6
  /**
7
7
  * Create an SVG icon element with the given path data
@@ -23,3 +23,149 @@ export function createSvgIcon(pathData, options) {
23
23
  svg.appendChild(path);
24
24
  return svg;
25
25
  }
26
+ // ============================================================================
27
+ // devbar Logo — Pixel-art wordmark
28
+ // ============================================================================
29
+ /** devbar wordmark viewBox dimensions */
30
+ export const DEVBAR_LOGO_VIEWBOX = '0 0 580.43 167.62';
31
+ /** devbar logo colors */
32
+ export const DEVBAR_LOGO_COLORS = {
33
+ /** Emerald green for dark mode */
34
+ dark: '#10b981',
35
+ /** Darker emerald for light mode */
36
+ light: '#047857',
37
+ };
38
+ /** devbar wordmark letter path data */
39
+ export const DEVBAR_LOGO_PATHS = {
40
+ d: 'M73.46,161.67l-6.41-.16-.1-7.56-5.52-.09v-21.54s6.94-.1,6.94-.1l.03-29.61,7.14-.19.25-22.45,9.06-.26.22-8.19,8.82-.08.32-5.87,30.1-.03.26,5.83,7.76-.07.08-20.29,6.17-.14-.02-21.58h26.12s.03,11.73.03,11.73l-3.46.3-.05,22.8-6.68.14-.05,32.83-6.94.1-.04,34.47-7.86.33-.05,34.45h-26.66s-.13-6.81-.13-6.81l-3.2.08-.05,1.8-5.88.18-.27,5.94h-29.79s-.13-5.95-.13-5.95ZM109.74,139.54l6.11-.13.07-19.02,6.12-.26.16-12.27,2.82-.52v-12.89s-3.8-.49-3.8-.49l-.37-8.03-15.85.03-.2,6.24-6.19.14-.04,22.21-8.52.15v24.28s3.28.13,3.28.13l.05,7.83,16.17.05.19-7.45Z',
41
+ e: 'M200.68,148.2l.13-8.62,7.57-.15.25-5.78,26.28-.19.04,5.66-4.84.24-.1,11.5-4.74.06-.15,7.09-4.52.16-.33,4.81-9.7.28-.07,4.36-41.06.02-.18-6.21-8.02-.24-.27-7.17-6.21-.21.13-17.79,4.92-.37.02-32.36,8.3-.13.09-19.13,5.63-.15.36-6.19,5.74-.28.27-5.76,6.21-.22.18-5.85h45.06s.35,5.93.35,5.93l5.5.23.31,5.65,6.41.14v28.86s-5.29.2-5.29.2l-.09,15.01h-54.52s-.17,15.16-.17,15.16l-2.48.57v10.93M188.1,106.02l28.63-.03.07-22.28-21.6-.03-.33,10.73-6.93.27.16,11.34Z',
42
+ v: 'M325.06,99.7l-7.88.15-.03,14.96-7.72.07-.04,16.62-6.64.14-.12,16.18-5.95.06-.16,7.13-4.53.12-.29,11.35-30.22-.07v-29.09s-4.87-.31-4.87-.31l-.02-44.28-4.87-.18v-26.98s25.36,0,25.36,0l.17,63.22c3.26.33,6.23.24,9.58-.06l.02-14.7,6.71-.23.05-17.25,7.87-.42.2-16.13,6.28-.32.07-14.13,26.57-.03.18,5.94-2.99.18-.12,11.36-6.39.34-.23,16.35Z',
43
+ b: 'M390.29,158.27l-.23,8.17h-28.6s.2-5.07.2-5.07l-8.04-.22.02-1.68-7.02.08-.19,6.91-21.06-.08-.14-26.82,5.48-.22.27-21.16,5.39-.31.08-21.12,5.46-.18.22-26.59,6.2-.41.26-21.44,4.93-.15.2-18.51,24.28-.18v22.97s-6.52.12-6.52.12l.06,19.15,7.37-.12.16-5.88h28.13s.25,5.77.25,5.77l4.95.13.18,5.76,5.04.45-.07,30.61-4.86.44-.17,22.83-7.23.34-.11,16.6-6.12.39-.19,9.31-8.57.09ZM387.51,93.06l-.14-7.17c-3.48,0-15.85.05-19.09-.09l-.09,8-5.99.29-.02,28.81-6.95.14.03,16.09,4.11.23.12,7.77h16.31s0-7.6,0-7.6l6.41-.11.06-15.85,5.2-.06',
44
+ a: 'M417.64,131.33l5.08-.1.2-9.47,7.45-.4.08-9.51,11.77-.12.21-5.99c3.64-.42,13.39,1.12,16.29-1.73l11.65-.23.32-6.23,8.81-.24.09-15.84-19.56-.04-.18,5.74-5.19.25v7.51s-23.11.1-23.11.1l-.32-7.21,2.65-.48.06-9.69,8.57-.15.22-8.1,7.93-.09.21-5.92h42.51s.43,5.82.43,5.82l5.32.19.4,5.74,5.9.32.16,29.4-7.26.25v30.71s-6.5.14-6.5.14v19.98s5.11.32,5.11.32v8.03s-26.37.03-26.37.03l-.24-9.44-5.85-.1-.2,4.78-6.35.1-.16,5.78-29.43-.02-.09-4.57-5-.14-.15-5.88-5.51-.19.03-23.34ZM461.97,145.81l.23-3.91,5.51-.09.05-8.29,6.01-.1-.04-17.33-10,.04-.12,4.69-10.87.13-.39,6.02-5.98.34v18.47s15.61.04,15.61.04Z',
45
+ r: 'M506.46,149.81l5.3-.22.03-28.17,6.48-.13.15-25.67,6.65-.35.02-29.71,22.63.18c-.07,2.81-.13,8.82-.04,11.59l7.1.1.27-4.36,6.49-.41.17-7.1,18.69-.02.04,24.62-27.68.06-.14,6.53-7.65.21-.14,22.22-6,.42-.06,23.2-5.78.25-.02,23.4-26.5-.03',
46
+ dLeftEdge: 'M59.47,37.37l.06,5.59-8.51.05-.12,6.47-7.89-.1v2.81s-2.22.06-2.22.06l-.1,6.93-9.9.25-.11,6.27-7.16.17-.05,7.97-5.32.18v21.01s11.16.19,11.16.19l.19,6.35,9.28.08.16,6.01,20.67.19.13,6.5-46.46-.14-.48-7.41-7.36-.44-.24-6.74-5.19-.23.13-21.7,6.84-.44.06-8.58,6.33-.23.09-7.19h6.27s.12-5.64.12-5.64l6.01-.1.52-4.41,5.36-.32.34-3.85,5.9-.31.46-3.45,7.54-.18.14-5.53,9.44-.07',
47
+ };
48
+ /** devbar wordmark polyline/polygon data */
49
+ export const DEVBAR_LOGO_SHAPES = {
50
+ topBar: '214.17 22.67 204.58 22.7 204.66 15.98 196.08 15.68 195.86 7.9 148.96 7.93 148.81 13.79 114.91 13.79 114.94 7.24 143.91 7.19 144.14 0 214.17 0',
51
+ dStep1: '114.43 21.6 92.3 21.3 92.17 14.42 114.63 14.43 114.43 21.6',
52
+ dStep2: '91.89 29.07 73.29 29.04 73.34 21.96 91.87 21.65 91.89 29.07',
53
+ dStep3: '72.95 35.82 59.81 35.85 59.8 29.34 72.79 29.46 72.95 35.82',
54
+ dCounter: '109.74 139.54 109.55 146.99 93.38 146.94 93.33 139.12 90.04 138.99 90.04 114.71 98.57 114.55 98.61 92.35 104.8 92.21 105 85.97 120.85 85.93 121.22 93.96 125.02 94.45 125.03 107.34 122.21 107.86 122.05 120.14 115.92 120.4 115.85 139.42 109.74 139.54',
55
+ eCounter: '188.1 106.02 187.94 94.68 194.87 94.41 195.2 83.68 216.81 83.71 216.73 105.99 188.1 106.02',
56
+ };
57
+ /**
58
+ * Create a devbar logo SVG element.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * // Theme-aware logo (default)
63
+ * const logo = createDevBarLogo({ width: 48, height: 48 });
64
+ * document.body.appendChild(logo);
65
+ *
66
+ * // Custom color
67
+ * const customLogo = createDevBarLogo({ fill: '#ff0000' });
68
+ *
69
+ * // Use currentColor (inherits from parent)
70
+ * const inheritLogo = createDevBarLogo({ fill: 'currentColor' });
71
+ * ```
72
+ */
73
+ export function createDevBarLogo(options = {}) {
74
+ const { width = 32, height = 32, fill, className, themed = true } = options;
75
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
76
+ svg.setAttribute('width', String(width));
77
+ svg.setAttribute('height', String(height));
78
+ svg.setAttribute('viewBox', DEVBAR_LOGO_VIEWBOX);
79
+ svg.setAttribute('fill', 'none');
80
+ svg.setAttribute('aria-label', 'devbar logo');
81
+ if (className) {
82
+ svg.setAttribute('class', className);
83
+ }
84
+ // Add style element for themed colors if not using a custom fill
85
+ if (themed && !fill) {
86
+ const style = document.createElementNS('http://www.w3.org/2000/svg', 'style');
87
+ style.textContent = `
88
+ .devbar-logo-fill { fill: ${DEVBAR_LOGO_COLORS.dark}; }
89
+ @media (prefers-color-scheme: light) {
90
+ .devbar-logo-fill { fill: ${DEVBAR_LOGO_COLORS.light}; }
91
+ }
92
+ `;
93
+ svg.appendChild(style);
94
+ }
95
+ const fillValue = fill || (themed ? undefined : DEVBAR_LOGO_COLORS.dark);
96
+ const fillClass = !fill && themed ? 'devbar-logo-fill' : undefined;
97
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
98
+ if (fillValue) {
99
+ g.setAttribute('fill', fillValue);
100
+ }
101
+ else if (fillClass) {
102
+ g.setAttribute('class', fillClass);
103
+ }
104
+ // Letter paths
105
+ for (const d of Object.values(DEVBAR_LOGO_PATHS)) {
106
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
107
+ path.setAttribute('d', d);
108
+ g.appendChild(path);
109
+ }
110
+ // Top bar (polyline)
111
+ const topBar = document.createElementNS('http://www.w3.org/2000/svg', 'polyline');
112
+ topBar.setAttribute('points', DEVBAR_LOGO_SHAPES.topBar);
113
+ g.appendChild(topBar);
114
+ // Staircase steps
115
+ for (const key of ['dStep1', 'dStep2', 'dStep3']) {
116
+ const poly = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
117
+ poly.setAttribute('points', DEVBAR_LOGO_SHAPES[key]);
118
+ g.appendChild(poly);
119
+ }
120
+ // Letter counters (transparent holes)
121
+ for (const key of ['dCounter', 'eCounter']) {
122
+ const poly = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
123
+ poly.setAttribute('points', DEVBAR_LOGO_SHAPES[key]);
124
+ poly.setAttribute('fill', 'none');
125
+ g.appendChild(poly);
126
+ }
127
+ svg.appendChild(g);
128
+ return svg;
129
+ }
130
+ /**
131
+ * Get the devbar logo as an SVG string.
132
+ * Useful for SSR or when you need the raw SVG markup.
133
+ *
134
+ * @example
135
+ * ```ts
136
+ * const svgString = getDevBarLogoSvg({ width: 64 });
137
+ * // Use with a templating system or set via outerHTML
138
+ * ```
139
+ */
140
+ export function getDevBarLogoSvg(options = {}) {
141
+ const { width = 32, height = 32, fill, themed = true } = options;
142
+ const styleBlock = themed && !fill
143
+ ? `<style>
144
+ .devbar-logo-fill { fill: ${DEVBAR_LOGO_COLORS.dark}; }
145
+ @media (prefers-color-scheme: light) {
146
+ .devbar-logo-fill { fill: ${DEVBAR_LOGO_COLORS.light}; }
147
+ }
148
+ </style>`
149
+ : '';
150
+ const gFillAttr = fill
151
+ ? `fill="${fill}"`
152
+ : themed
153
+ ? 'class="devbar-logo-fill"'
154
+ : `fill="${DEVBAR_LOGO_COLORS.dark}"`;
155
+ const paths = Object.values(DEVBAR_LOGO_PATHS)
156
+ .map((d) => `<path d="${d}"/>`)
157
+ .join('\n');
158
+ return `<svg width="${width}" height="${height}" viewBox="${DEVBAR_LOGO_VIEWBOX}" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="devbar logo">
159
+ ${styleBlock}
160
+ <g ${gFillAttr}>
161
+ ${paths}
162
+ <polyline points="${DEVBAR_LOGO_SHAPES.topBar}"/>
163
+ <polygon points="${DEVBAR_LOGO_SHAPES.dStep1}"/>
164
+ <polygon points="${DEVBAR_LOGO_SHAPES.dStep2}"/>
165
+ <polygon points="${DEVBAR_LOGO_SHAPES.dStep3}"/>
166
+ <polygon points="${DEVBAR_LOGO_SHAPES.dCounter}" fill="none"/>
167
+ <polygon points="${DEVBAR_LOGO_SHAPES.eCounter}" fill="none"/>
168
+ </g>
169
+ </svg>`;
170
+ }
171
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/ui/icons.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,OAIC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IAC1E,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAC5E,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E,yCAAyC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEvD,yBAAyB;AACzB,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,kCAAkC;IAClC,IAAI,EAAE,SAAS;IACf,oCAAoC;IACpC,KAAK,EAAE,SAAS;CACR,CAAC;AAEX,uCAAuC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,CAAC,EAAE,miBAAmiB;IACtiB,CAAC,EAAE,ucAAuc;IAC1c,CAAC,EAAE,+UAA+U;IAClV,CAAC,EAAE,wgBAAwgB;IAC3gB,CAAC,EAAE,6kBAA6kB;IAChlB,CAAC,EAAE,yOAAyO;IAC5O,SAAS,EACP,kXAAkX;CAC5W,CAAC;AAEX,4CAA4C;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EACJ,+IAA+I;IACjJ,MAAM,EAAE,4DAA4D;IACpE,MAAM,EAAE,6DAA6D;IACrE,MAAM,EAAE,4DAA4D;IACpE,QAAQ,EACN,0PAA0P;IAC5P,QAAQ,EACN,4FAA4F;CACtF,CAAC;AAeX;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA6B,EAAE;IAC9D,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5E,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IAC1E,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACjD,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAE9C,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QAC9E,KAAK,CAAC,WAAW,GAAG;kCACU,kBAAkB,CAAC,IAAI;;oCAErB,kBAAkB,CAAC,KAAK;;KAEvD,CAAC;QACF,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnE,MAAM,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;IACtE,IAAI,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,eAAe;IACf,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,qBAAqB;IACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;IAClF,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAEtB,kBAAkB;IAClB,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAU,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAEnB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA6B,EAAE;IAC9D,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEjE,MAAM,UAAU,GACd,MAAM,IAAI,CAAC,IAAI;QACb,CAAC,CAAC;kCAC0B,kBAAkB,CAAC,IAAI;;oCAErB,kBAAkB,CAAC,KAAK;;aAE/C;QACP,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,SAAS,GAAG,IAAI;QACpB,CAAC,CAAC,SAAS,IAAI,GAAG;QAClB,CAAC,CAAC,MAAM;YACN,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,SAAS,kBAAkB,CAAC,IAAI,GAAG,CAAC;IAE1C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;SAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,eAAe,KAAK,aAAa,MAAM,cAAc,mBAAmB;EAC/E,UAAU;KACP,SAAS;EACZ,KAAK;oBACa,kBAAkB,CAAC,MAAM;mBAC1B,kBAAkB,CAAC,MAAM;mBACzB,kBAAkB,CAAC,MAAM;mBACzB,kBAAkB,CAAC,MAAM;mBACzB,kBAAkB,CAAC,QAAQ;mBAC3B,kBAAkB,CAAC,QAAQ;;OAEvC,CAAC;AACR,CAAC"}
@@ -1,8 +1,10 @@
1
1
  /**
2
- * DevBar UI Components
2
+ * devbar UI Components
3
3
  *
4
4
  * Re-exports all UI utilities.
5
5
  */
6
6
  export { createStyledButton, getButtonStyles } from './buttons.js';
7
+ export { type CardConfig, createCard, getCardContent, setCardEmpty } from './cards.js';
7
8
  export { createSvgIcon } from './icons.js';
8
9
  export { createEmptyMessage, createInfoBox, createModalBox, createModalContent, createModalHeader, createModalOverlay, type ModalConfig, } from './modals.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC"}
package/dist/ui/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  /**
2
- * DevBar UI Components
2
+ * devbar UI Components
3
3
  *
4
4
  * Re-exports all UI utilities.
5
5
  */
6
6
  export { createStyledButton, getButtonStyles } from './buttons.js';
7
+ export { createCard, getCardContent, setCardEmpty } from './cards.js';
7
8
  export { createSvgIcon } from './icons.js';
8
9
  export { createEmptyMessage, createInfoBox, createModalBox, createModalContent, createModalHeader, createModalOverlay, } from './modals.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAmB,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GAEnB,MAAM,aAAa,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * DevBar Modals
2
+ * devbar Modals
3
3
  *
4
- * Modal creation utilities for the DevBar UI.
4
+ * Modal creation utilities for the devbar UI.
5
5
  */
6
6
  /**
7
7
  * Configuration for creating a modal
@@ -13,6 +13,10 @@ export interface ModalConfig {
13
13
  onCopyMd: () => Promise<void>;
14
14
  onSave?: () => void;
15
15
  sweetlinkConnected: boolean;
16
+ /** Whether a save operation is in progress */
17
+ isSaving?: boolean;
18
+ /** Path where data was saved (shows confirmation) */
19
+ savedPath?: string | null;
16
20
  }
17
21
  /**
18
22
  * Create modal overlay with click-outside-to-close behavior
@@ -38,3 +42,4 @@ export declare function createEmptyMessage(text: string): HTMLDivElement;
38
42
  * Create a colored info box (for error states, cost estimates, etc.)
39
43
  */
40
44
  export declare function createInfoBox(color: string, title: string, content: string | HTMLElement[]): HTMLDivElement;
45
+ //# sourceMappingURL=modals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modals.d.ts","sourceRoot":"","sources":["../../src/ui/modals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,cAAc,CAQtE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAQ5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CA8GrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAQnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAU/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,GAC9B,cAAc,CA6BhB"}
package/dist/ui/modals.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * DevBar Modals
2
+ * devbar Modals
3
3
  *
4
- * Modal creation utilities for the DevBar UI.
4
+ * Modal creation utilities for the devbar UI.
5
5
  */
6
6
  import { MODAL_BOX_BASE_STYLES, MODAL_OVERLAY_STYLES } from '../constants.js';
7
7
  import { createStyledButton } from './buttons.js';
@@ -34,7 +34,7 @@ export function createModalBox(color) {
34
34
  * Create modal header with title, copy/save/close buttons
35
35
  */
36
36
  export function createModalHeader(config) {
37
- const { color, title, onClose, onCopyMd, onSave, sweetlinkConnected } = config;
37
+ const { color, title, onClose, onCopyMd, onSave, sweetlinkConnected, isSaving, savedPath } = config;
38
38
  const header = document.createElement('div');
39
39
  Object.assign(header.style, {
40
40
  display: 'flex',
@@ -42,6 +42,8 @@ export function createModalHeader(config) {
42
42
  justifyContent: 'space-between',
43
43
  padding: '16px 20px',
44
44
  borderBottom: `1px solid ${color}40`,
45
+ flexWrap: 'wrap',
46
+ gap: '8px',
45
47
  });
46
48
  const titleEl = document.createElement('h2');
47
49
  Object.assign(titleEl.style, {
@@ -53,7 +55,7 @@ export function createModalHeader(config) {
53
55
  titleEl.textContent = title;
54
56
  header.appendChild(titleEl);
55
57
  const headerButtons = document.createElement('div');
56
- Object.assign(headerButtons.style, { display: 'flex', gap: '10px' });
58
+ Object.assign(headerButtons.style, { display: 'flex', gap: '10px', alignItems: 'center' });
57
59
  // Copy MD button
58
60
  const copyBtn = createStyledButton({ color, text: 'Copy MD' });
59
61
  copyBtn.onclick = async () => {
@@ -71,8 +73,17 @@ export function createModalHeader(config) {
71
73
  headerButtons.appendChild(copyBtn);
72
74
  // Save button (if Sweetlink connected)
73
75
  if (sweetlinkConnected && onSave) {
74
- const saveBtn = createStyledButton({ color, text: 'Save' });
75
- saveBtn.onclick = onSave;
76
+ const saveBtn = createStyledButton({
77
+ color,
78
+ text: isSaving ? 'Saving...' : 'Save',
79
+ });
80
+ if (isSaving) {
81
+ saveBtn.style.opacity = '0.6';
82
+ saveBtn.style.cursor = 'not-allowed';
83
+ }
84
+ else {
85
+ saveBtn.onclick = onSave;
86
+ }
76
87
  headerButtons.appendChild(saveBtn);
77
88
  }
78
89
  // Close button - use same padding as other buttons for consistent height
@@ -85,6 +96,39 @@ export function createModalHeader(config) {
85
96
  closeBtn.onclick = onClose;
86
97
  headerButtons.appendChild(closeBtn);
87
98
  header.appendChild(headerButtons);
99
+ // Show saved path confirmation below buttons
100
+ if (savedPath) {
101
+ const savedConfirm = document.createElement('div');
102
+ Object.assign(savedConfirm.style, {
103
+ width: '100%',
104
+ marginTop: '4px',
105
+ padding: '8px 12px',
106
+ backgroundColor: `${color}15`,
107
+ border: `1px solid ${color}30`,
108
+ borderRadius: '6px',
109
+ fontSize: '0.75rem',
110
+ color: color,
111
+ display: 'flex',
112
+ alignItems: 'center',
113
+ gap: '6px',
114
+ });
115
+ // Checkmark icon
116
+ const checkmark = document.createElement('span');
117
+ checkmark.textContent = '✓';
118
+ Object.assign(checkmark.style, { fontWeight: '600' });
119
+ savedConfirm.appendChild(checkmark);
120
+ // Path text
121
+ const pathText = document.createElement('span');
122
+ Object.assign(pathText.style, {
123
+ color: '#9ca3af',
124
+ fontFamily: 'monospace',
125
+ fontSize: '0.6875rem',
126
+ wordBreak: 'break-all',
127
+ });
128
+ pathText.textContent = `Saved to ${savedPath}`;
129
+ savedConfirm.appendChild(pathText);
130
+ header.appendChild(savedConfirm);
131
+ }
88
132
  return header;
89
133
  }
90
134
  /**
@@ -144,3 +188,4 @@ export function createInfoBox(color, title, content) {
144
188
  }
145
189
  return box;
146
190
  }
191
+ //# sourceMappingURL=modals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modals.js","sourceRoot":"","sources":["../../src/ui/modals.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * DevBar Utility Functions
2
+ * devbar Utility Functions
3
3
  *
4
- * Re-exports shared utilities from @ytspar/sweetlink for use by DevBar components.
4
+ * Re-exports shared utilities from @ytspar/sweetlink for use by devbar components.
5
5
  * This avoids code duplication between packages.
6
6
  *
7
7
  * NOTE: We import from specific sub-paths to avoid pulling in Node.js-only modules
@@ -9,3 +9,4 @@
9
9
  */
10
10
  export { formatArg, formatArgs } from '@ytspar/sweetlink/browser/consoleCapture';
11
11
  export { canvasToDataUrl, copyCanvasToClipboard, delay, prepareForCapture, } from '@ytspar/sweetlink/browser/screenshotUtils';
12
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAGjF,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,EACL,iBAAiB,GAClB,MAAM,2CAA2C,CAAC"}
package/dist/utils.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * DevBar Utility Functions
2
+ * devbar Utility Functions
3
3
  *
4
- * Re-exports shared utilities from @ytspar/sweetlink for use by DevBar components.
4
+ * Re-exports shared utilities from @ytspar/sweetlink for use by devbar components.
5
5
  * This avoids code duplication between packages.
6
6
  *
7
7
  * NOTE: We import from specific sub-paths to avoid pulling in Node.js-only modules
@@ -11,3 +11,4 @@
11
11
  export { formatArg, formatArgs } from '@ytspar/sweetlink/browser/consoleCapture';
12
12
  // Re-export screenshot utilities from sweetlink's browser module
13
13
  export { canvasToDataUrl, copyCanvasToClipboard, delay, prepareForCapture, } from '@ytspar/sweetlink/browser/screenshotUtils';
14
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,yEAAyE;AACzE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAEjF,iEAAiE;AACjE,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,EACL,iBAAiB,GAClB,MAAM,2CAA2C,CAAC"}
package/package.json CHANGED
@@ -1,23 +1,26 @@
1
1
  {
2
2
  "name": "@ytspar/devbar",
3
- "version": "1.0.0-canary.cdf7fa2",
3
+ "version": "1.0.0-canary.deff6e9",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Development toolbar and utilities with Sweetlink integration - pure vanilla JS, no framework dependencies",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/ytspar/devtools.git",
9
+ "url": "git+https://github.com/ytspar/devbar.git",
10
10
  "directory": "packages/devbar"
11
11
  },
12
12
  "keywords": [
13
13
  "development",
14
14
  "debug",
15
- "devtools",
15
+ "devbar",
16
16
  "sweetlink",
17
17
  "vanilla-js"
18
18
  ],
19
19
  "author": "ytspar",
20
20
  "license": "MIT",
21
+ "sideEffects": [
22
+ "./dist/GlobalDevBar.js"
23
+ ],
21
24
  "main": "./dist/index.js",
22
25
  "types": "./dist/index.d.ts",
23
26
  "exports": {
@@ -37,26 +40,26 @@
37
40
  "README.md",
38
41
  "LICENSE"
39
42
  ],
43
+ "engines": {
44
+ "node": ">=20.0.0"
45
+ },
46
+ "bugs": {
47
+ "url": "https://github.com/ytspar/devbar/issues"
48
+ },
49
+ "homepage": "https://github.com/ytspar/devbar/tree/main/packages/devbar#readme",
40
50
  "scripts": {
41
51
  "build": "tsc",
52
+ "test": "vitest run",
42
53
  "typecheck": "tsc --noEmit",
43
54
  "clean": "rm -rf dist"
44
55
  },
45
- "peerDependencies": {
46
- "@ytspar/sweetlink": "^1.0.0 || ^2.0.0"
47
- },
48
- "peerDependenciesMeta": {
49
- "@ytspar/sweetlink": {
50
- "optional": true
51
- }
52
- },
53
56
  "dependencies": {
57
+ "@ytspar/sweetlink": "workspace:^",
54
58
  "axe-core": "^4.10.2",
55
- "html2canvas-pro": "^1.5.8"
59
+ "html2canvas-pro": "^1.5.13"
56
60
  },
57
61
  "devDependencies": {
58
- "@ytspar/sweetlink": "workspace:*",
59
- "@types/node": "^22.0.0",
62
+ "@types/node": "^24.0.0",
60
63
  "typescript": "^5.0.0"
61
64
  }
62
65
  }