@cloudgrid-io/ui 0.0.2 → 0.2.0

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 (187) hide show
  1. package/README.md +109 -0
  2. package/dist/blocks/agent-prompt.d.ts +37 -0
  3. package/dist/blocks/agent-prompt.d.ts.map +1 -0
  4. package/dist/blocks/agent-prompt.js +53 -0
  5. package/dist/blocks/agent-prompt.js.map +1 -0
  6. package/dist/blocks/card-grid.d.ts +38 -0
  7. package/dist/blocks/card-grid.d.ts.map +1 -0
  8. package/dist/blocks/card-grid.js +32 -0
  9. package/dist/blocks/card-grid.js.map +1 -0
  10. package/dist/blocks/compare-table.d.ts +13 -0
  11. package/dist/blocks/compare-table.d.ts.map +1 -0
  12. package/dist/blocks/compare-table.js +55 -0
  13. package/dist/blocks/compare-table.js.map +1 -0
  14. package/dist/blocks/creation-tile.d.ts +57 -0
  15. package/dist/blocks/creation-tile.d.ts.map +1 -0
  16. package/dist/blocks/creation-tile.js +32 -0
  17. package/dist/blocks/creation-tile.js.map +1 -0
  18. package/dist/blocks/cta-banner.d.ts +31 -0
  19. package/dist/blocks/cta-banner.d.ts.map +1 -0
  20. package/dist/blocks/cta-banner.js +31 -0
  21. package/dist/blocks/cta-banner.js.map +1 -0
  22. package/dist/blocks/drop-zone.d.ts +54 -0
  23. package/dist/blocks/drop-zone.d.ts.map +1 -0
  24. package/dist/blocks/drop-zone.js +121 -0
  25. package/dist/blocks/drop-zone.js.map +1 -0
  26. package/dist/blocks/feature-cells.d.ts +46 -0
  27. package/dist/blocks/feature-cells.d.ts.map +1 -0
  28. package/dist/blocks/feature-cells.js +46 -0
  29. package/dist/blocks/feature-cells.js.map +1 -0
  30. package/dist/blocks/hub-index.d.ts +55 -0
  31. package/dist/blocks/hub-index.d.ts.map +1 -0
  32. package/dist/blocks/hub-index.js +22 -0
  33. package/dist/blocks/hub-index.js.map +1 -0
  34. package/dist/blocks/logo.d.ts +24 -0
  35. package/dist/blocks/logo.d.ts.map +1 -0
  36. package/dist/blocks/logo.js +34 -0
  37. package/dist/blocks/logo.js.map +1 -0
  38. package/dist/blocks/option-card.d.ts +31 -0
  39. package/dist/blocks/option-card.d.ts.map +1 -0
  40. package/dist/blocks/option-card.js +32 -0
  41. package/dist/blocks/option-card.js.map +1 -0
  42. package/dist/blocks/page-heading.d.ts +33 -0
  43. package/dist/blocks/page-heading.d.ts.map +1 -0
  44. package/dist/blocks/page-heading.js +30 -0
  45. package/dist/blocks/page-heading.js.map +1 -0
  46. package/dist/blocks/plug-method.d.ts +76 -0
  47. package/dist/blocks/plug-method.d.ts.map +1 -0
  48. package/dist/blocks/plug-method.js +30 -0
  49. package/dist/blocks/plug-method.js.map +1 -0
  50. package/dist/blocks/pricing-tier-cards.d.ts +47 -0
  51. package/dist/blocks/pricing-tier-cards.d.ts.map +1 -0
  52. package/dist/blocks/pricing-tier-cards.js +12 -0
  53. package/dist/blocks/pricing-tier-cards.js.map +1 -0
  54. package/dist/blocks/pricing-tiers.d.ts +29 -0
  55. package/dist/blocks/pricing-tiers.d.ts.map +1 -0
  56. package/dist/blocks/pricing-tiers.js +30 -0
  57. package/dist/blocks/pricing-tiers.js.map +1 -0
  58. package/dist/blocks/quote.d.ts +27 -0
  59. package/dist/blocks/quote.d.ts.map +1 -0
  60. package/dist/blocks/quote.js +28 -0
  61. package/dist/blocks/quote.js.map +1 -0
  62. package/dist/blocks/rich-text.d.ts +38 -0
  63. package/dist/blocks/rich-text.d.ts.map +1 -0
  64. package/dist/blocks/rich-text.js +39 -0
  65. package/dist/blocks/rich-text.js.map +1 -0
  66. package/dist/blocks/stage-panel.d.ts +5 -0
  67. package/dist/blocks/stage-panel.d.ts.map +1 -0
  68. package/dist/blocks/stage-panel.js +30 -0
  69. package/dist/blocks/stage-panel.js.map +1 -0
  70. package/dist/blocks/step-item.d.ts +24 -0
  71. package/dist/blocks/step-item.d.ts.map +1 -0
  72. package/dist/blocks/step-item.js +34 -0
  73. package/dist/blocks/step-item.js.map +1 -0
  74. package/dist/blocks/tool-logo.d.ts +15 -0
  75. package/dist/blocks/tool-logo.d.ts.map +1 -0
  76. package/dist/blocks/tool-logo.js +59 -0
  77. package/dist/blocks/tool-logo.js.map +1 -0
  78. package/dist/blocks/tool-marks.d.ts +120 -0
  79. package/dist/blocks/tool-marks.d.ts.map +1 -0
  80. package/dist/blocks/tool-marks.js +94 -0
  81. package/dist/blocks/tool-marks.js.map +1 -0
  82. package/dist/index.d.ts +45 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +63 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/lib/cloudgrid-cn.d.ts +65 -0
  87. package/dist/lib/cloudgrid-cn.d.ts.map +1 -0
  88. package/dist/lib/cloudgrid-cn.js +90 -0
  89. package/dist/lib/cloudgrid-cn.js.map +1 -0
  90. package/dist/tokens/base.json +119 -38
  91. package/dist/tokens/surface-ink.json +63 -0
  92. package/dist/tokens/surface-panel.json +63 -0
  93. package/dist/tokens.css +115 -19
  94. package/dist/tokens.json +20 -2
  95. package/dist/ui/accordion.d.ts +7 -0
  96. package/dist/ui/accordion.d.ts.map +1 -0
  97. package/dist/ui/accordion.js +19 -0
  98. package/dist/ui/accordion.js.map +1 -0
  99. package/dist/ui/badge.d.ts +8 -0
  100. package/dist/ui/badge.d.ts.map +1 -0
  101. package/dist/ui/badge.js +34 -0
  102. package/dist/ui/badge.js.map +1 -0
  103. package/dist/ui/button.d.ts +9 -0
  104. package/dist/ui/button.d.ts.map +1 -0
  105. package/dist/ui/button.js +35 -0
  106. package/dist/ui/button.js.map +1 -0
  107. package/dist/ui/card.d.ts +12 -0
  108. package/dist/ui/card.d.ts.map +1 -0
  109. package/dist/ui/card.js +26 -0
  110. package/dist/ui/card.js.map +1 -0
  111. package/dist/ui/carousel.d.ts +37 -0
  112. package/dist/ui/carousel.d.ts.map +1 -0
  113. package/dist/ui/carousel.js +34 -0
  114. package/dist/ui/carousel.js.map +1 -0
  115. package/dist/ui/checkbox.d.ts +4 -0
  116. package/dist/ui/checkbox.d.ts.map +1 -0
  117. package/dist/ui/checkbox.js +10 -0
  118. package/dist/ui/checkbox.js.map +1 -0
  119. package/dist/ui/code-block.d.ts +9 -0
  120. package/dist/ui/code-block.d.ts.map +1 -0
  121. package/dist/ui/code-block.js +57 -0
  122. package/dist/ui/code-block.js.map +1 -0
  123. package/dist/ui/combobox.d.ts +25 -0
  124. package/dist/ui/combobox.d.ts.map +1 -0
  125. package/dist/ui/combobox.js +59 -0
  126. package/dist/ui/combobox.js.map +1 -0
  127. package/dist/ui/dialog.d.ts +18 -0
  128. package/dist/ui/dialog.d.ts.map +1 -0
  129. package/dist/ui/dialog.js +39 -0
  130. package/dist/ui/dialog.js.map +1 -0
  131. package/dist/ui/dropdown-menu.d.ts +30 -0
  132. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  133. package/dist/ui/dropdown-menu.js +53 -0
  134. package/dist/ui/dropdown-menu.js.map +1 -0
  135. package/dist/ui/input-group.d.ts +19 -0
  136. package/dist/ui/input-group.d.ts.map +1 -0
  137. package/dist/ui/input-group.js +59 -0
  138. package/dist/ui/input-group.js.map +1 -0
  139. package/dist/ui/input.d.ts +4 -0
  140. package/dist/ui/input.d.ts.map +1 -0
  141. package/dist/ui/input.js +9 -0
  142. package/dist/ui/input.js.map +1 -0
  143. package/dist/ui/number-field.d.ts +10 -0
  144. package/dist/ui/number-field.d.ts.map +1 -0
  145. package/dist/ui/number-field.js +39 -0
  146. package/dist/ui/number-field.js.map +1 -0
  147. package/dist/ui/panel.d.ts +36 -0
  148. package/dist/ui/panel.d.ts.map +1 -0
  149. package/dist/ui/panel.js +39 -0
  150. package/dist/ui/panel.js.map +1 -0
  151. package/dist/ui/select.d.ts +16 -0
  152. package/dist/ui/select.d.ts.map +1 -0
  153. package/dist/ui/select.js +36 -0
  154. package/dist/ui/select.js.map +1 -0
  155. package/dist/ui/separator.d.ts +4 -0
  156. package/dist/ui/separator.d.ts.map +1 -0
  157. package/dist/ui/separator.js +9 -0
  158. package/dist/ui/separator.js.map +1 -0
  159. package/dist/ui/skeleton.d.ts +3 -0
  160. package/dist/ui/skeleton.d.ts.map +1 -0
  161. package/dist/ui/skeleton.js +7 -0
  162. package/dist/ui/skeleton.js.map +1 -0
  163. package/dist/ui/sonner.d.ts +4 -0
  164. package/dist/ui/sonner.d.ts.map +1 -0
  165. package/dist/ui/sonner.js +36 -0
  166. package/dist/ui/sonner.js.map +1 -0
  167. package/dist/ui/switch.d.ts +6 -0
  168. package/dist/ui/switch.d.ts.map +1 -0
  169. package/dist/ui/switch.js +9 -0
  170. package/dist/ui/switch.js.map +1 -0
  171. package/dist/ui/table.d.ts +11 -0
  172. package/dist/ui/table.d.ts.map +1 -0
  173. package/dist/ui/table.js +30 -0
  174. package/dist/ui/table.js.map +1 -0
  175. package/dist/ui/tabs.d.ts +11 -0
  176. package/dist/ui/tabs.d.ts.map +1 -0
  177. package/dist/ui/tabs.js +38 -0
  178. package/dist/ui/tabs.js.map +1 -0
  179. package/dist/ui/textarea.d.ts +4 -0
  180. package/dist/ui/textarea.d.ts.map +1 -0
  181. package/dist/ui/textarea.js +8 -0
  182. package/dist/ui/textarea.js.map +1 -0
  183. package/dist/ui/tooltip.d.ts +8 -0
  184. package/dist/ui/tooltip.d.ts.map +1 -0
  185. package/dist/ui/tooltip.js +37 -0
  186. package/dist/ui/tooltip.js.map +1 -0
  187. package/package.json +42 -8
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Toaster as Sonner } from "sonner";
4
+ import { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, Loader2Icon } from "lucide-react";
5
+ // Pinned to light, and next-themes removed with it.
6
+ //
7
+ // The generated version read the theme from next-themes and defaulted to
8
+ // "system". That looks like it would give a dark-OS viewer dark toasts on a
9
+ // light-only brand, but measured under a dark OS it does not: the style block
10
+ // below pins --normal-bg, --normal-text and --normal-border to CloudGrid tokens,
11
+ // which overrides sonner's own palette whatever the theme prop says.
12
+ //
13
+ // So this is defensive rather than a fix. It removes a prop that suggests the
14
+ // component follows the OS when it does not, and it drops next-themes, which
15
+ // was a dependency doing nothing because the app has no ThemeProvider. Anything
16
+ // sonner styles that the block below does not cover would have followed the OS.
17
+ const Toaster = ({ ...props }) => {
18
+ return (_jsx(Sonner, { theme: "light", className: "toaster group", icons: {
19
+ success: (_jsx(CircleCheckIcon, { className: "size-4" })),
20
+ info: (_jsx(InfoIcon, { className: "size-4" })),
21
+ warning: (_jsx(TriangleAlertIcon, { className: "size-4" })),
22
+ error: (_jsx(OctagonXIcon, { className: "size-4" })),
23
+ loading: (_jsx(Loader2Icon, { className: "size-4 animate-spin" })),
24
+ }, style: {
25
+ "--normal-bg": "var(--popover)",
26
+ "--normal-text": "var(--popover-foreground)",
27
+ "--normal-border": "var(--border)",
28
+ "--border-radius": "var(--radius)",
29
+ }, toastOptions: {
30
+ classNames: {
31
+ toast: "cn-toast",
32
+ },
33
+ }, ...props }));
34
+ };
35
+ export { Toaster };
36
+ //# sourceMappingURL=sonner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonner.js","sourceRoot":"","sources":["../../src/ui/sonner.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,OAAO,IAAI,MAAM,EAAqB,MAAM,QAAQ,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtG,oDAAoD;AACpD,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,iFAAiF;AACjF,qEAAqE;AACrE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,EAAgB,EAAE,EAAE;IAC7C,OAAO,CACL,KAAC,MAAM,IACL,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE;YACL,OAAO,EAAE,CACP,KAAC,eAAe,IAAC,SAAS,EAAC,QAAQ,GAAG,CACvC;YACD,IAAI,EAAE,CACJ,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,GAAG,CAChC;YACD,OAAO,EAAE,CACP,KAAC,iBAAiB,IAAC,SAAS,EAAC,QAAQ,GAAG,CACzC;YACD,KAAK,EAAE,CACL,KAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,GAAG,CACpC;YACD,OAAO,EAAE,CACP,KAAC,WAAW,IAAC,SAAS,EAAC,qBAAqB,GAAG,CAChD;SACF,EACD,KAAK,EACH;YACE,aAAa,EAAE,gBAAgB;YAC/B,eAAe,EAAE,2BAA2B;YAC5C,iBAAiB,EAAE,eAAe;YAClC,iBAAiB,EAAE,eAAe;SACZ,EAE1B,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,KAAK,EAAE,UAAU;aAClB;SACF,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
2
+ declare function Switch({ className, size, ...props }: SwitchPrimitive.Root.Props & {
3
+ size?: "sm" | "default";
4
+ }): import("react").JSX.Element;
5
+ export { Switch };
6
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/ui/switch.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAIjE,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACxB,+BAiBA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
4
+ import { cn } from "../lib/cloudgrid-cn.js";
5
+ function Switch({ className, size = "default", ...props }) {
6
+ return (_jsx(SwitchPrimitive.Root, { "data-slot": "switch", "data-size": size, className: cn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: _jsx(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground" }) }));
7
+ }
8
+ export { Switch };
9
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../src/ui/switch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,SAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EAGT;IACC,OAAO,CACL,KAAC,eAAe,CAAC,IAAI,iBACT,QAAQ,eACP,IAAI,EACf,SAAS,EAAE,EAAE,CACX,kpBAAkpB,EAClpB,SAAS,CACV,KACG,KAAK,YAET,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAC,+eAA+e,GACzf,GACmB,CACxB,CAAA;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ declare function Table({ className, ...props }: React.ComponentProps<"table">): React.JSX.Element;
3
+ declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): React.JSX.Element;
4
+ declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): React.JSX.Element;
5
+ declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): React.JSX.Element;
6
+ declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): React.JSX.Element;
7
+ declare function TableHead({ className, ...props }: React.ComponentProps<"th">): React.JSX.Element;
8
+ declare function TableCell({ className, ...props }: React.ComponentProps<"td">): React.JSX.Element;
9
+ declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): React.JSX.Element;
10
+ export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
11
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/ui/table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAapE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQ1E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAW1E;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWpE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,qBAQjC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAA"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/cloudgrid-cn.js";
5
+ function Table({ className, ...props }) {
6
+ return (_jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-body-sm", className), ...props }) }));
7
+ }
8
+ function TableHeader({ className, ...props }) {
9
+ return (_jsx("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props }));
10
+ }
11
+ function TableBody({ className, ...props }) {
12
+ return (_jsx("tbody", { "data-slot": "table-body", className: cn("[&_tr:last-child]:border-0", className), ...props }));
13
+ }
14
+ function TableFooter({ className, ...props }) {
15
+ return (_jsx("tfoot", { "data-slot": "table-footer", className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props }));
16
+ }
17
+ function TableRow({ className, ...props }) {
18
+ return (_jsx("tr", { "data-slot": "table-row", className: cn("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted", className), ...props }));
19
+ }
20
+ function TableHead({ className, ...props }) {
21
+ return (_jsx("th", { "data-slot": "table-head", className: cn("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0", className), ...props }));
22
+ }
23
+ function TableCell({ className, ...props }) {
24
+ return (_jsx("td", { "data-slot": "table-cell", className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className), ...props }));
25
+ }
26
+ function TableCaption({ className, ...props }) {
27
+ return (_jsx("caption", { "data-slot": "table-caption", className: cn("mt-4 text-body-sm text-muted-foreground", className), ...props }));
28
+ }
29
+ export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
30
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/ui/table.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACnE,OAAO,CACL,2BACY,iBAAiB,EAC3B,SAAS,EAAC,iCAAiC,YAE3C,6BACY,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,GACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,KACvC,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACvE,OAAO,CACL,6BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAClD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACnE,OAAO,CACL,0BACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,2GAA2G,EAC3G,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,8GAA8G,EAC9G,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACwB;IAChC,OAAO,CACL,+BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,yCAAyC,EAAE,SAAS,CAAC,KAC/D,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare function Tabs({ className, orientation, ...props }: TabsPrimitive.Root.Props): import("react").JSX.Element;
4
+ declare const tabsListVariants: (props?: ({
5
+ variant?: "line" | "default" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare function TabsList({ className, variant, ...props }: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>): import("react").JSX.Element;
8
+ declare function TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props): import("react").JSX.Element;
9
+ declare function TabsContent({ className, ...props }: TabsPrimitive.Panel.Props): import("react").JSX.Element;
10
+ export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
11
+ //# sourceMappingURL=tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/ui/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,WAA0B,EAC1B,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,+BAY1B;AAED,QAAA,MAAM,gBAAgB;;8EAarB,CAAA;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,+BASlE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,+BAcpE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,+BAmBtE;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "../lib/cloudgrid-cn.js";
6
+ function Tabs({ className, orientation = "horizontal", ...props }) {
7
+ return (_jsx(TabsPrimitive.Root, { "data-slot": "tabs", "data-orientation": orientation, className: cn("group/tabs flex gap-2 data-horizontal:flex-col", className), ...props }));
8
+ }
9
+ const tabsListVariants = cva("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none", {
10
+ variants: {
11
+ variant: {
12
+ default: "bg-muted",
13
+ line: "gap-1 bg-transparent",
14
+ },
15
+ },
16
+ defaultVariants: {
17
+ variant: "default",
18
+ },
19
+ });
20
+ function TabsList({ className, variant = "default", ...props }) {
21
+ return (_jsx(TabsPrimitive.List, { "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant }), className), ...props }));
22
+ }
23
+ function TabsTrigger({ className, ...props }) {
24
+ return (_jsx(TabsPrimitive.Tab, { "data-slot": "tabs-trigger", className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-body-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className), ...props }));
25
+ }
26
+ function TabsContent({ className, ...props }) {
27
+ return (_jsx(TabsPrimitive.Panel, { "data-slot": "tabs-content", className: cn("flex-1 text-body-sm outline-none",
28
+ // The panel is deliberately focusable: Base UI gives it tabindex="0" so
29
+ // a keyboard user can reach panel content that contains no controls of
30
+ // its own. That is correct, but `outline-none` above then removed the
31
+ // only indicator it had, so it took focus with nothing visible at all.
32
+ // Measured: tabindex="0", :focus-visible matching, outline none, no
33
+ // shadow. That is a WCAG 2.4.7 failure on a stop every keyboard user
34
+ // passes through.
35
+ "focus-visible:ring-3 focus-visible:ring-ring", className), ...props }));
36
+ }
37
+ export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
38
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/ui/tabs.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,SAAS,IAAI,CAAC,EACZ,SAAS,EACT,WAAW,GAAG,YAAY,EAC1B,GAAG,KAAK,EACiB;IACzB,OAAO,CACL,KAAC,aAAa,CAAC,IAAI,iBACP,MAAM,sBACE,WAAW,EAC7B,SAAS,EAAE,EAAE,CACX,gDAAgD,EAChD,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,GAAG,CAC1B,yOAAyO,EACzO;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,sBAAsB;SAC7B;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAA;AAED,SAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,GAAG,KAAK,EACyD;IACjE,OAAO,CACL,KAAC,aAAa,CAAC,IAAI,iBACP,WAAW,kBACP,OAAO,EACrB,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA2B;IACnE,OAAO,CACL,KAAC,aAAa,CAAC,GAAG,iBACN,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,81BAA81B,EAC91B,+PAA+P,EAC/P,mJAAmJ,EACnJ,sYAAsY,EACtY,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA6B;IACrE,OAAO,CACL,KAAC,aAAa,CAAC,KAAK,iBACR,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,kCAAkC;QAClC,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,qEAAqE;QACrE,kBAAkB;QAClB,8CAA8C,EAC9C,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ declare function Textarea({ className, ...props }: React.ComponentProps<"textarea">): React.JSX.Element;
3
+ export { Textarea };
4
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/ui/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,qBAW1E;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../lib/cloudgrid-cn.js";
4
+ function Textarea({ className, ...props }) {
5
+ return (_jsx("textarea", { "data-slot": "textarea", className: cn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-body-md transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-body-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className), ...props }));
6
+ }
7
+ export { Textarea };
8
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../src/ui/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAoC;IACzE,OAAO,CACL,gCACY,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,6hBAA6hB,EAC7hB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
3
+ declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.Props): React.JSX.Element;
4
+ declare function Tooltip({ ...props }: TooltipPrimitive.Root.Props): React.JSX.Element;
5
+ declare function TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props): React.JSX.Element;
6
+ declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: TooltipPrimitive.Popup.Props & Pick<TooltipPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): React.JSX.Element;
7
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
8
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/ui/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAgBpE,iBAAS,eAAe,CAAC,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,qBAEhF;AAED,iBAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,qBAUzD;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,qBAcnE;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,IAAY,EACZ,UAAc,EACd,KAAgB,EAChB,WAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC7B,IAAI,CACF,gBAAgB,CAAC,UAAU,CAAC,KAAK,EACjC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAChD,qBA4BF;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
5
+ import { cn } from "../lib/cloudgrid-cn.js";
6
+ // Base UI 1.7.0 gives the tooltip no ARIA at all. Verified against the package:
7
+ // its dialog sets `role`, `aria-labelledby` and `aria-describedby`, and its
8
+ // tooltip sets none of the three. So the tooltip appeared on hover and on
9
+ // keyboard focus, read its text on screen, and was completely absent to a
10
+ // screen reader: no role, and nothing tying the text to the control it
11
+ // describes.
12
+ //
13
+ // That is the worst shape an accessibility bug can take, because it looks
14
+ // correct to everyone who can see it. This wrapper supplies both.
15
+ const TooltipContext = React.createContext(undefined);
16
+ function TooltipProvider({ delay = 0, ...props }) {
17
+ return _jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delay: delay, ...props });
18
+ }
19
+ function Tooltip({ ...props }) {
20
+ // One id per tooltip, shared by the trigger's aria-describedby and the
21
+ // popup's id. Generated here because Root is the only component that wraps
22
+ // both of them.
23
+ const id = React.useId();
24
+ return (_jsx(TooltipContext.Provider, { value: id, children: _jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) }));
25
+ }
26
+ function TooltipTrigger({ ...props }) {
27
+ const id = React.useContext(TooltipContext);
28
+ return (_jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", "aria-describedby": id, ...props }));
29
+ }
30
+ function TooltipContent({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) {
31
+ const id = React.useContext(TooltipContext);
32
+ return (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Positioner, { align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, className: "isolate z-50", children: _jsxs(TooltipPrimitive.Popup, { "data-slot": "tooltip-content",
33
+ // Both supplied here because the primitive supplies neither.
34
+ id: id, role: "tooltip", className: cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-caption text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props, children: [children, _jsx(TooltipPrimitive.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })] }) }) }));
35
+ }
36
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
37
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/ui/tooltip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEpE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,gFAAgF;AAChF,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,aAAa;AACb,EAAE;AACF,0EAA0E;AAC1E,kEAAkE;AAElE,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAqB,SAAS,CAAC,CAAA;AAEzE,SAAS,eAAe,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAmC;IAC/E,OAAO,KAAC,gBAAgB,CAAC,QAAQ,iBAAW,kBAAkB,EAAC,KAAK,EAAE,KAAK,KAAM,KAAK,GAAI,CAAA;AAC5F,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAA+B;IACxD,uEAAuE;IACvE,2EAA2E;IAC3E,gBAAgB;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;IACxB,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,YAChC,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,GAChC,CAC3B,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAkC;IAClE,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;IAC3C,OAAO,CACL,KAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,sBAMT,EAAE,KAChB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,IAAI,GAAG,KAAK,EACZ,UAAU,GAAG,CAAC,EACd,KAAK,GAAG,QAAQ,EAChB,WAAW,GAAG,CAAC,EACf,QAAQ,EACR,GAAG,KAAK,EAKP;IACD,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;IAC3C,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,cACtB,KAAC,gBAAgB,CAAC,UAAU,IAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,cAAc,YAExB,MAAC,gBAAgB,CAAC,KAAK,iBACX,iBAAiB;gBAC3B,6DAA6D;gBAC7D,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,EAAE,CACX,swBAAswB,EACtwB,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACT,KAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAC,0hBAA0hB,GAAG,IACxiB,GACG,GACN,CAC3B,CAAA;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,20 +1,25 @@
1
1
  {
2
2
  "name": "@cloudgrid-io/ui",
3
- "version": "0.0.2",
4
- "description": "CloudGrid brand design tokens: CSS variables, Tailwind theme, self-hosted fonts, machine-readable JSON.",
3
+ "version": "0.2.0",
4
+ "description": "CloudGrid design system: React components, brand design tokens, Tailwind theme, self-hosted fonts.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/",
7
- "access": "restricted"
7
+ "access": "public"
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git+https://github.com/cloudgrid-io/ui.git",
12
- "directory": "packages/tokens"
12
+ "directory": "packages/ui"
13
13
  },
14
14
  "files": [
15
- "dist"
15
+ "dist",
16
+ "README.md"
16
17
  ],
17
18
  "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "default": "./dist/index.js"
22
+ },
18
23
  "./tokens.css": "./dist/tokens.css",
19
24
  "./theme.css": "./dist/theme.css",
20
25
  "./shadcn.css": "./dist/shadcn.css",
@@ -24,15 +29,44 @@
24
29
  "./tokens/*.json": "./dist/tokens/*.json"
25
30
  },
26
31
  "dependencies": {
32
+ "@base-ui/react": "^1.7.0",
27
33
  "@fontsource-variable/jetbrains-mono": "^5.3.0",
28
34
  "@fontsource-variable/manrope": "^5.3.0",
29
- "@fontsource/saira-semi-condensed": "^5.3.0"
35
+ "@fontsource/saira-semi-condensed": "^5.3.0",
36
+ "class-variance-authority": "^0.7.1",
37
+ "clsx": "^2.1.1",
38
+ "lucide-react": "^1.31.0",
39
+ "sonner": "^2.0.8",
40
+ "tailwind-merge": "^3.6.0"
41
+ },
42
+ "sideEffects": [
43
+ "*.css"
44
+ ],
45
+ "peerDependencies": {
46
+ "react": ">=18",
47
+ "react-dom": ">=18"
48
+ },
49
+ "peerDependenciesMeta": {
50
+ "react": {
51
+ "optional": true
52
+ },
53
+ "react-dom": {
54
+ "optional": true
55
+ }
56
+ },
57
+ "devDependencies": {
58
+ "@types/react": "^19",
59
+ "@types/react-dom": "^19",
60
+ "react": "19.2.8",
61
+ "react-dom": "19.2.8",
62
+ "typescript": "^5.9.3"
30
63
  },
31
64
  "scripts": {
32
- "build": "node scripts/build.mjs",
65
+ "build": "node scripts/build.mjs && tsc -p tsconfig.build.json && node scripts/rewrite-aliases.mjs",
33
66
  "test": "node --test \"test/*.test.mjs\"",
34
67
  "import:tokens": "node scripts/import-design-tokens.mjs",
35
68
  "extract:dtcg": "node scripts/extract-dtcg.mjs",
36
- "verify:equivalence": "node scripts/verify-equivalence.mjs"
69
+ "verify:equivalence": "node scripts/verify-equivalence.mjs",
70
+ "typecheck": "tsc -p tsconfig.build.json --noEmit"
37
71
  }
38
72
  }