tr]:last:border-b-0', className)}
- {...props}
- />
- );
-}
-
-function TableRow({ className, ...props }: React.ComponentProps<'tr'>) {
- return (
-
- );
-}
-
-function TableHead({ className, ...props }: React.ComponentProps<'th'>) {
- return (
- [role=checkbox]]:translate-y-[2px]',
- className
- )}
- {...props}
- />
- );
-}
-
-function TableCell({ className, ...props }: React.ComponentProps<'td'>) {
- return (
- | [role=checkbox]]:translate-y-[2px]',
- className
- )}
- {...props}
- />
- );
-}
-
-function TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {
- return (
-
- );
-}
-
-export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/tabs.tsx b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/tabs.tsx
deleted file mode 100644
index 551f8ab27f..0000000000
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/tabs.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import * as TabsPrimitive from '@radix-ui/react-tabs';
-
-import { cn } from '@/lib/utils';
-
-function Tabs({ className, ...props }: React.ComponentProps) {
- return ;
-}
-
-function TabsList({ className, ...props }: React.ComponentProps) {
- return (
-
- );
-}
-
-function TabsTrigger({ className, ...props }: React.ComponentProps) {
- return (
-
- );
-}
-
-function TabsContent({ className, ...props }: React.ComponentProps) {
- return ;
-}
-
-export { Tabs, TabsList, TabsTrigger, TabsContent };
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/textarea.tsx b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/textarea.tsx
deleted file mode 100644
index abd118dfc0..0000000000
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/textarea.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from 'react';
-
-import { cn } from '@/lib/utils';
-
-function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {
- return (
-
- );
-}
-
-export { Textarea };
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/toggle-group.tsx b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/toggle-group.tsx
deleted file mode 100644
index f8f9e65dee..0000000000
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/toggle-group.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
-import { type VariantProps } from 'class-variance-authority';
-
-import { cn } from '@/lib/utils';
-import { toggleVariants } from '@/components/ui/toggle';
-
-const ToggleGroupContext = React.createContext>({
- size: 'default',
- variant: 'default',
-});
-
-function ToggleGroup({
- className,
- variant,
- size,
- children,
- ...props
-}: React.ComponentProps & VariantProps) {
- return (
-
- {children}
-
- );
-}
-
-function ToggleGroupItem({
- className,
- children,
- variant,
- size,
- ...props
-}: React.ComponentProps & VariantProps) {
- const context = React.useContext(ToggleGroupContext);
-
- return (
-
- {children}
-
- );
-}
-
-export { ToggleGroup, ToggleGroupItem };
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/toggle.tsx b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/toggle.tsx
deleted file mode 100644
index 0a8c50f9e1..0000000000
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/toggle.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import * as React from 'react';
-import * as TogglePrimitive from '@radix-ui/react-toggle';
-import { cva, type VariantProps } from 'class-variance-authority';
-
-import { cn } from '@/lib/utils';
-
-const toggleVariants = cva(
- "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
- {
- variants: {
- variant: {
- default: 'bg-transparent',
- outline: 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground',
- },
- size: {
- default: 'h-9 px-2 min-w-9',
- sm: 'h-8 px-1.5 min-w-8',
- lg: 'h-10 px-2.5 min-w-10',
- },
- },
- defaultVariants: {
- variant: 'default',
- size: 'default',
- },
- }
-);
-
-function Toggle({
- className,
- variant,
- size,
- ...props
-}: React.ComponentProps & VariantProps) {
- return (
-
- );
-}
-
-export { Toggle, toggleVariants };
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/tooltip.tsx b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/tooltip.tsx
deleted file mode 100644
index 9836055625..0000000000
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/components/ui/tooltip.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as React from 'react';
-import * as TooltipPrimitive from '@radix-ui/react-tooltip';
-
-import { cn } from '@/lib/utils';
-
-function TooltipProvider({ delayDuration = 0, ...props }: React.ComponentProps) {
- return ;
-}
-
-function Tooltip({ ...props }: React.ComponentProps) {
- return (
-
-
-
- );
-}
-
-function TooltipTrigger({ ...props }: React.ComponentProps) {
- return ;
-}
-
-function TooltipContent({
- className,
- sideOffset = 0,
- children,
- ...props
-}: React.ComponentProps) {
- return (
-
-
- {children}
-
-
-
- );
-}
-
-export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/index.css b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/index.css
index 7cee6fe5eb..0ce57a7dfe 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/index.css
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/src/index.css
@@ -1,381 +1,82 @@
-@import 'tailwindcss';
-
-@theme inline {
- /* Semantic colors - reference CSS variables for light/dark mode support */
- --color-background: hsl(var(--background));
- --color-foreground: hsl(var(--foreground));
- --color-card: hsl(var(--card));
- --color-card-foreground: hsl(var(--card-foreground));
- --color-popover: hsl(var(--popover));
- --color-popover-foreground: hsl(var(--popover-foreground));
- --color-primary: hsl(var(--primary));
- --color-primary-foreground: hsl(var(--primary-foreground));
- --color-secondary: hsl(var(--secondary));
- --color-secondary-foreground: hsl(var(--secondary-foreground));
- --color-muted: hsl(var(--muted));
- --color-muted-foreground: hsl(var(--muted-foreground));
- --color-accent: hsl(var(--accent));
- --color-accent-foreground: hsl(var(--accent-foreground));
- --color-destructive: hsl(var(--destructive));
- --color-destructive-foreground: hsl(var(--destructive-foreground));
- --color-success: hsl(var(--success));
- --color-success-foreground: hsl(var(--success-foreground));
- --color-warning: hsl(var(--warning));
- --color-warning-foreground: hsl(var(--warning-foreground));
- --color-border: hsl(var(--border));
- --color-input: hsl(var(--input));
- --color-ring: hsl(var(--ring));
-
- /* Chart colors */
- --color-chart-1: hsl(var(--chart-1));
- --color-chart-2: hsl(var(--chart-2));
- --color-chart-3: hsl(var(--chart-3));
- --color-chart-4: hsl(var(--chart-4));
- --color-chart-5: hsl(var(--chart-5));
-
- /* Extended Databricks palette - Grays */
- --color-gray-navigation: hsl(var(--gray-navigation));
- --color-gray-text: hsl(var(--gray-text));
- --color-gray-lines: hsl(var(--gray-lines));
-
- /* Lava scale */
- --color-lava-800: hsl(var(--lava-800));
- --color-lava-700: hsl(var(--lava-700));
- --color-lava-600: hsl(var(--lava-600));
- --color-lava-500: hsl(var(--lava-500));
- --color-lava-400: hsl(var(--lava-400));
- --color-lava-300: hsl(var(--lava-300));
-
- /* Navy scale */
- --color-navy-900: hsl(var(--navy-900));
- --color-navy-800: hsl(var(--navy-800));
- --color-navy-700: hsl(var(--navy-700));
- --color-navy-600: hsl(var(--navy-600));
- --color-navy-500: hsl(var(--navy-500));
- --color-navy-400: hsl(var(--navy-400));
- --color-navy-300: hsl(var(--navy-300));
-
- /* Green scale */
- --color-green-600: hsl(var(--green-600));
- --color-green-500: hsl(var(--green-500));
- --color-green-400: hsl(var(--green-400));
-
- /* Blue scale */
- --color-blue-600: hsl(var(--blue-600));
- --color-blue-500: hsl(var(--blue-500));
- --color-blue-400: hsl(var(--blue-400));
-
- /* Yellow scale */
- --color-yellow-600: hsl(var(--yellow-600));
- --color-yellow-500: hsl(var(--yellow-500));
- --color-yellow-400: hsl(var(--yellow-400));
-
- /* Border radius */
- --radius: 0.5rem;
- --radius-lg: var(--radius);
- --radius-md: calc(var(--radius) - 2px);
- --radius-sm: calc(var(--radius) - 4px);
+@import "@databricks/appkit-ui/styles.css";
+
+:root {
+ /* --radius: 0.625rem;
+ --background: oklch(1 0 0);
+ --foreground: oklch(0.141 0.005 285.823);
+ --card: oklch(1 0 0);
+ --card-foreground: oklch(0.141 0.005 285.823);
+ --popover: oklch(1 0 0);
+ --popover-foreground: oklch(0.141 0.005 285.823);
+ --primary: oklch(0.21 0.006 285.885);
+ --primary-foreground: oklch(0.985 0 0);
+ --secondary: oklch(0.967 0.001 286.375);
+ --secondary-foreground: oklch(0.21 0.006 285.885);
+ --muted: oklch(0.967 0.001 286.375);
+ --muted-foreground: oklch(0.552 0.016 285.938);
+ --accent: oklch(0.967 0.001 286.375);
+ --accent-foreground: oklch(0.21 0.006 285.885);
+ --destructive: oklch(0.577 0.245 27.325);
+ --destructive-foreground: oklch(0.985 0 0);
+ --success: oklch(0.603 0.135 166.892);
+ --success-foreground: oklch(1 0 0);
+ --warning: oklch(0.795 0.157 78.748);
+ --warning-foreground: oklch(0.199 0.027 238.732);
+ --border: oklch(0.92 0.004 286.32);
+ --input: oklch(0.92 0.004 286.32);
+ --ring: oklch(0.705 0.015 286.067);
+ --chart-1: oklch(0.646 0.222 41.116);
+ --chart-2: oklch(0.6 0.118 184.704);
+ --chart-3: oklch(0.398 0.07 227.392);
+ --chart-4: oklch(0.828 0.189 84.429);
+ --chart-5: oklch(0.769 0.188 70.08);
+ --sidebar: oklch(0.985 0 0);
+ --sidebar-foreground: oklch(0.141 0.005 285.823);
+ --sidebar-primary: oklch(0.21 0.006 285.885);
+ --sidebar-primary-foreground: oklch(0.985 0 0);
+ --sidebar-accent: oklch(0.967 0.001 286.375);
+ --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
+ --sidebar-border: oklch(0.92 0.004 286.32);
+ --sidebar-ring: oklch(0.705 0.015 286.067); */
}
-@layer base {
+@media (prefers-color-scheme: dark) {
:root {
- /* Light mode - Databricks Design System */
- /* Primary: Lava 600: #FF3621, Navy 800: #1B3139, Oat Light: #F9F7F4, Oat Medium: #EEEDE9, White: #FFFFFF */
- --background: 36 25% 97%; /* Oat Light */
- --foreground: 202 36% 16%; /* Navy 800 */
- --card: 0 0% 100%; /* White */
- --card-foreground: 202 36% 16%; /* Navy 800 */
- --popover: 0 0% 100%; /* White */
- --popover-foreground: 202 36% 16%; /* Navy 800 */
- --primary: 6 100% 56%; /* Lava 600 */
- --primary-foreground: 0 0% 100%;
- --secondary: 48 11% 92%; /* Oat Medium */
- --secondary-foreground: 202 36% 16%; /* Navy 800 */
- --muted: 48 11% 92%; /* Oat Medium */
- --muted-foreground: 189 19% 41%; /* Gray Text #5A6F77 */
- --accent: 6 100% 56%; /* Lava 600 */
- --accent-foreground: 0 0% 100%;
- --destructive: 351 72% 52%; /* Maroon 600 #98102A */
- --destructive-foreground: 0 0% 100%;
- --success: 162 100% 33%; /* Green 600 #00A972 */
- --success-foreground: 0 0% 100%;
- --warning: 45 100% 50%; /* Yellow 600 #FFAB00 */
- --warning-foreground: 202 36% 16%;
- --border: 192 14% 88%; /* Gray Lines #DCE0E2 */
- --input: 192 14% 88%;
- --ring: 6 100% 56%; /* Lava 600 */
- --radius: 0.5rem;
-
- /* Chart colors - Databricks extended palette */
- --chart-1: 6 100% 56%; /* Lava 600 */
- --chart-2: 162 100% 33%; /* Green 600 */
- --chart-3: 203 89% 36%; /* Blue 600 */
- --chart-4: 45 100% 50%; /* Yellow 600 */
- --chart-5: 351 72% 52%; /* Maroon 600 */
-
- /* Extended palette - functional colors */
- --gray-navigation: 198 19% 23%; /* #303F47 */
- --gray-text: 189 19% 41%; /* #5A6F77 */
- --gray-lines: 192 14% 88%; /* #DCE0E2 */
-
- /* Lava scale */
- --lava-800: 5 70% 30%; /* #801C17 */
- --lava-700: 2 66% 45%; /* #BD2B26 */
- --lava-600: 6 100% 56%; /* #FF3621 */
- --lava-500: 6 100% 64%; /* #FF5F46 */
- --lava-400: 5 100% 79%; /* #FF9E94 */
- --lava-300: 4 89% 85%; /* #FABFBA */
-
- /* Navy scale */
- --navy-900: 198 55% 10%; /* #0B2026 */
- --navy-800: 202 36% 16%; /* #1B3139 */
- --navy-700: 197 58% 18%; /* #143D4A */
- --navy-600: 197 57% 25%; /* #1B5162 */
- --navy-500: 194 21% 48%; /* #618794 */
- --navy-400: 200 17% 63%; /* #90A5B1 */
- --navy-300: 210 20% 80%; /* #C4CCD6 */
-
- /* Green scale */
- --green-600: 162 100% 33%; /* #00A972 */
- --green-500: 165 59% 49%; /* #42BA91 */
- --green-400: 164 45% 60%; /* #70C4AB */
-
- /* Blue scale */
- --blue-600: 203 89% 36%; /* #2272B4 */
- --blue-500: 203 69% 57%; /* #4299E0 */
- --blue-400: 203 100% 77%; /* #8ACAFF */
-
- /* Yellow scale */
- --yellow-600: 45 100% 50%; /* #FFAB00 */
- --yellow-500: 45 97% 59%; /* #FCBA33 */
- --yellow-400: 45 100% 70%; /* #FFCC66 */
- }
-
- @media (prefers-color-scheme: dark) {
- :root {
- /* Dark mode - Databricks Design System */
- --background: 202 36% 16%; /* Navy 800 */
- --foreground: 36 25% 97%; /* Oat Light */
- --card: 197 58% 18%; /* Navy 700 */
- --card-foreground: 36 25% 97%;
- --popover: 202 36% 20%;
- --popover-foreground: 36 25% 97%;
- --primary: 6 100% 64%; /* Lava 500 */
- --primary-foreground: 0 0% 100%;
- --secondary: 198 19% 23%; /* Gray Navigation */
- --secondary-foreground: 36 25% 97%;
- --muted: 197 57% 25%; /* Navy 600 */
- --muted-foreground: 200 17% 63%; /* Navy 400 */
- --accent: 6 100% 64%; /* Lava 500 */
- --accent-foreground: 0 0% 100%;
- --destructive: 351 72% 52%; /* Maroon 600 */
- --destructive-foreground: 0 0% 100%;
- --success: 165 59% 49%; /* Green 500 */
- --success-foreground: 0 0% 100%;
- --warning: 45 97% 59%; /* Yellow 500 */
- --warning-foreground: 202 36% 16%;
- --border: 194 21% 48%; /* Navy 500 */
- --input: 197 57% 25%; /* Navy 600 */
- --ring: 6 100% 64%;
-
- /* Chart colors - vibrant extended palette */
- --chart-1: 6 100% 64%; /* Lava 500 */
- --chart-2: 165 59% 49%; /* Green 500 */
- --chart-3: 203 69% 57%; /* Blue 500 */
- --chart-4: 45 97% 59%; /* Yellow 500 */
- --chart-5: 351 72% 52%; /* Maroon 600 */
-
- /* Extended palette inherits same values in dark mode */
- --gray-navigation: 198 19% 23%; /* #303F47 */
- --gray-text: 189 19% 41%; /* #5A6F77 */
- --gray-lines: 192 14% 88%; /* #DCE0E2 */
-
- /* Lava scale */
- --lava-800: 5 70% 30%; /* #801C17 */
- --lava-700: 2 66% 45%; /* #BD2B26 */
- --lava-600: 6 100% 56%; /* #FF3621 */
- --lava-500: 6 100% 64%; /* #FF5F46 */
- --lava-400: 5 100% 79%; /* #FF9E94 */
- --lava-300: 4 89% 85%; /* #FABFBA */
-
- /* Navy scale */
- --navy-900: 198 55% 10%; /* #0B2026 */
- --navy-800: 202 36% 16%; /* #1B3139 */
- --navy-700: 197 58% 18%; /* #143D4A */
- --navy-600: 197 57% 25%; /* #1B5162 */
- --navy-500: 194 21% 48%; /* #618794 */
- --navy-400: 200 17% 63%; /* #90A5B1 */
- --navy-300: 210 20% 80%; /* #C4CCD6 */
-
- /* Green scale */
- --green-600: 162 100% 33%; /* #00A972 */
- --green-500: 165 59% 49%; /* #42BA91 */
- --green-400: 164 45% 60%; /* #70C4AB */
-
- /* Blue scale */
- --blue-600: 203 89% 36%; /* #2272B4 */
- --blue-500: 203 69% 57%; /* #4299E0 */
- --blue-400: 203 100% 77%; /* #8ACAFF */
-
- /* Yellow scale */
- --yellow-600: 45 100% 50%; /* #FFAB00 */
- --yellow-500: 45 97% 59%; /* #FCBA33 */
- --yellow-400: 45 100% 70%; /* #FFCC66 */
- }
- }
-}
-
-@layer base {
- * {
- border-color: hsl(var(--border));
- }
-
- html {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- text-rendering: optimizeLegibility;
- }
-
- body {
- background-color: hsl(var(--background));
- color: hsl(var(--foreground));
- font-feature-settings: 'rlig' 1, 'calt' 1;
- transition: background-color 0.2s ease, color 0.2s ease;
- }
-
- /* Improved typography */
- h1, h2, h3, h4, h5, h6 {
- font-weight: 600;
- letter-spacing: -0.025em;
- }
-
- h1 {
- font-size: 2.25rem;
- line-height: 1.2;
- }
-
- h2 {
- font-size: 1.875rem;
- line-height: 1.3;
- }
-
- h3 {
- font-size: 1.5rem;
- line-height: 1.4;
- }
-
- h4 {
- font-size: 1.25rem;
- }
-
- h5 {
- font-size: 1.125rem;
- }
-
- p {
- line-height: 1.75rem;
- }
-
- /* Accessibility improvements */
- :focus-visible {
- outline: none;
- box-shadow: 0 0 0 2px hsl(var(--background)), 0 0 0 4px hsl(var(--ring));
- }
-
- /* Skip to main content link for screen readers */
- .skip-to-main {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- white-space: nowrap;
- border-width: 0;
- }
-
- .skip-to-main:focus {
- position: fixed;
- top: 1rem;
- left: 1rem;
- z-index: 50;
- width: auto;
- height: auto;
- padding: 0.5rem 1rem;
- margin: 0;
- overflow: visible;
- clip: auto;
- white-space: normal;
- background-color: hsl(var(--primary));
- color: hsl(var(--primary-foreground));
- border-radius: 0.375rem;
- }
-
- /* Ensure images are accessible */
- img {
- max-width: 100%;
- height: auto;
- }
-
- /* Better scrollbar styling */
- ::-webkit-scrollbar {
- width: 10px;
- height: 10px;
- }
-
- ::-webkit-scrollbar-track {
- background-color: hsl(var(--secondary));
- }
-
- ::-webkit-scrollbar-thumb {
- background-color: hsl(var(--muted-foreground) / 0.5);
- border-radius: 0.375rem;
- }
-
- ::-webkit-scrollbar-thumb:hover {
- background-color: hsl(var(--muted-foreground) / 0.7);
- }
-
- /* Selection styling */
- ::selection {
- background-color: hsl(var(--primary) / 0.2);
- }
-
- /* Reduced motion support */
- @media (prefers-reduced-motion: reduce) {
- *,
- *::before,
- *::after {
- animation-duration: 0.01ms !important;
- animation-iteration-count: 1 !important;
- transition-duration: 0.01ms !important;
- }
- }
-}
-
-@layer utilities {
- /* Screen reader only utility */
- .sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- white-space: nowrap;
- border-width: 0;
- }
-
- .focus\:not-sr-only:focus {
- position: static;
- width: auto;
- height: auto;
- padding: initial;
- margin: initial;
- overflow: visible;
- clip: auto;
- white-space: normal;
+ /* --background: oklch(0.141 0.005 285.823);
+ --foreground: oklch(0.985 0 0);
+ --card: oklch(0.21 0.006 285.885);
+ --card-foreground: oklch(0.985 0 0);
+ --popover: oklch(0.21 0.006 285.885);
+ --popover-foreground: oklch(0.985 0 0);
+ --primary: oklch(0.92 0.004 286.32);
+ --primary-foreground: oklch(0.21 0.006 285.885);
+ --secondary: oklch(0.274 0.006 286.033);
+ --secondary-foreground: oklch(0.985 0 0);
+ --muted: oklch(0.274 0.006 286.033);
+ --muted-foreground: oklch(0.705 0.015 286.067);
+ --accent: oklch(0.274 0.006 286.033);
+ --accent-foreground: oklch(0.985 0 0);
+ --destructive: oklch(0.704 0.191 22.216);
+ --destructive-foreground: oklch(0.985 0 0);
+ --success: oklch(0.67 0.12 167);
+ --success-foreground: oklch(1 0 0);
+ --warning: oklch(0.83 0.165 85);
+ --warning-foreground: oklch(0.199 0.027 238.732);
+ --border: oklch(1 0 0 / 10%);
+ --input: oklch(1 0 0 / 15%);
+ --ring: oklch(0.552 0.016 285.938);
+ --chart-1: oklch(0.488 0.243 264.376);
+ --chart-2: oklch(0.696 0.17 162.48);
+ --chart-3: oklch(0.769 0.188 70.08);
+ --chart-4: oklch(0.627 0.265 303.9);
+ --chart-5: oklch(0.645 0.246 16.439);
+ --sidebar: oklch(0.21 0.006 285.885);
+ --sidebar-foreground: oklch(0.985 0 0);
+ --sidebar-primary: oklch(0.488 0.243 264.376);
+ --sidebar-primary-foreground: oklch(0.985 0 0);
+ --sidebar-accent: oklch(0.274 0.006 286.033);
+ --sidebar-accent-foreground: oklch(0.985 0 0);
+ --sidebar-border: oklch(1 0 0 / 10%);
+ --sidebar-ring: oklch(0.552 0.016 285.938); */
}
}
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/tailwind.config.ts b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/tailwind.config.ts
index ceb2551dac..31dece86e9 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/tailwind.config.ts
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/client/tailwind.config.ts
@@ -4,103 +4,6 @@ import tailwindcssAnimate from 'tailwindcss-animate';
const config: Config = {
darkMode: ['class', 'media'],
content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
- theme: {
- extend: {
- borderRadius: {
- lg: 'var(--radius)',
- md: 'calc(var(--radius) - 2px)',
- sm: 'calc(var(--radius) - 4px)',
- },
- colors: {
- background: 'hsl(var(--background))',
- foreground: 'hsl(var(--foreground))',
- card: {
- DEFAULT: 'hsl(var(--card))',
- foreground: 'hsl(var(--card-foreground))',
- },
- popover: {
- DEFAULT: 'hsl(var(--popover))',
- foreground: 'hsl(var(--popover-foreground))',
- },
- primary: {
- DEFAULT: 'hsl(var(--primary))',
- foreground: 'hsl(var(--primary-foreground))',
- },
- secondary: {
- DEFAULT: 'hsl(var(--secondary))',
- foreground: 'hsl(var(--secondary-foreground))',
- },
- muted: {
- DEFAULT: 'hsl(var(--muted))',
- foreground: 'hsl(var(--muted-foreground))',
- },
- accent: {
- DEFAULT: 'hsl(var(--accent))',
- foreground: 'hsl(var(--accent-foreground))',
- },
- destructive: {
- DEFAULT: 'hsl(var(--destructive))',
- foreground: 'hsl(var(--destructive-foreground))',
- },
- success: {
- DEFAULT: 'hsl(var(--success))',
- foreground: 'hsl(var(--success-foreground))',
- },
- warning: {
- DEFAULT: 'hsl(var(--warning))',
- foreground: 'hsl(var(--warning-foreground))',
- },
- border: 'hsl(var(--border))',
- input: 'hsl(var(--input))',
- ring: 'hsl(var(--ring))',
- chart: {
- '1': 'hsl(var(--chart-1))',
- '2': 'hsl(var(--chart-2))',
- '3': 'hsl(var(--chart-3))',
- '4': 'hsl(var(--chart-4))',
- '5': 'hsl(var(--chart-5))',
- },
- // Databricks extended palette
- gray: {
- navigation: 'hsl(var(--gray-navigation))',
- text: 'hsl(var(--gray-text))',
- lines: 'hsl(var(--gray-lines))',
- },
- lava: {
- 800: 'hsl(var(--lava-800))',
- 700: 'hsl(var(--lava-700))',
- 600: 'hsl(var(--lava-600))',
- 500: 'hsl(var(--lava-500))',
- 400: 'hsl(var(--lava-400))',
- 300: 'hsl(var(--lava-300))',
- },
- navy: {
- 900: 'hsl(var(--navy-900))',
- 800: 'hsl(var(--navy-800))',
- 700: 'hsl(var(--navy-700))',
- 600: 'hsl(var(--navy-600))',
- 500: 'hsl(var(--navy-500))',
- 400: 'hsl(var(--navy-400))',
- 300: 'hsl(var(--navy-300))',
- },
- green: {
- 600: 'hsl(var(--green-600))',
- 500: 'hsl(var(--green-500))',
- 400: 'hsl(var(--green-400))',
- },
- blue: {
- 600: 'hsl(var(--blue-600))',
- 500: 'hsl(var(--blue-500))',
- 400: 'hsl(var(--blue-400))',
- },
- yellow: {
- 600: 'hsl(var(--yellow-600))',
- 500: 'hsl(var(--yellow-500))',
- 400: 'hsl(var(--yellow-400))',
- },
- },
- },
- },
plugins: [tailwindcssAnimate],
};
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/app-kit-sdk.md b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/appkit-sdk.md
similarity index 95%
rename from experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/app-kit-sdk.md
rename to experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/appkit-sdk.md
index 44825c26b7..5ab00768e1 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/app-kit-sdk.md
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/appkit-sdk.md
@@ -45,8 +45,7 @@ Use cases:
- Data that needs transformation before display
```typescript
-import { useAnalyticsQuery } from '@databricks/app-kit-ui/react';
-import { Skeleton } from '@/components/ui/skeleton';
+import { useAnalyticsQuery, Skeleton } from '@databricks/app-kit-ui/react';
interface QueryResult { column_name: string; value: number; }
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/frontend.md b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/frontend.md
index 10f4ba6e2b..a270b46b9e 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/frontend.md
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/frontend.md
@@ -2,16 +2,15 @@
## Visualization Components
-Components from `@databricks/app-kit-ui/react` handle data fetching, loading states, and error handling internally.
+Components from `@databricks/appkit-ui/react` handle data fetching, loading states, and error handling internally.
Available: `AreaChart`, `BarChart`, `LineChart`, `PieChart`, `RadarChart`, `DataTable`
**Basic Usage:**
```typescript
-import { BarChart, LineChart, DataTable } from '@databricks/app-kit-ui/react';
-import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
-import { sql } from "@databricks/app-kit-ui/js";
+import { BarChart, LineChart, DataTable, Card, CardContent, CardHeader, CardTitle } from '@databricks/appkit-ui/react';
+import { sql } from "@databricks/appkit-ui/js";
function MyDashboard() {
return (
@@ -39,7 +38,7 @@ Components automatically fetch data, show loading states, display errors, and re
**Custom Visualization (Recharts):**
```typescript
-import { BarChart } from '@databricks/app-kit-ui/react';
+import { BarChart } from '@databricks/appkit-ui/react';
import { Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts';
@@ -78,7 +77,7 @@ return ;
## Component Organization
-- Shared UI components: `client/src/components/ui/`
+- Shared UI components: `@databricks/appkit-ui/react`
- Feature components: `client/src/components/FeatureName.tsx`
- Split components when logic exceeds ~100 lines or component is reused
@@ -100,7 +99,7 @@ import 'leaflet/dist/leaflet.css';
## Best Practices
-- Use shadcn/radix components (Button, Input, Card, etc.) for consistent UI
+- Use shadcn/radix components (Button, Input, Card, etc.) for consistent UI, import them from `@databricks/appkit-ui/react`.
- **Use skeleton loaders**: Always use `` components instead of plain "Loading..." text
- Define result types in `shared/types.ts` for reuse between frontend and backend
- Handle nullable fields: `value={field || ''}` for inputs
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/sql-queries.md b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/sql-queries.md
index da5b1cbff8..2db77f0bfb 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/sql-queries.md
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/sql-queries.md
@@ -98,7 +98,7 @@ WHERE column_value >= :min_value
### Frontend Parameter Passing
```typescript
-import { sql } from "@databricks/app-kit-ui/js";
+import { sql } from "@databricks/appkit-ui/js";
const { data } = useAnalyticsQuery('filtered_data', {
min_value: sql.number(minValue),
@@ -115,7 +115,7 @@ Use `sql.date()` for date parameters with `YYYY-MM-DD` format strings.
**Frontend - Using Date Parameters:**
```typescript
-import { sql } from '@databricks/app-kit-ui/js';
+import { sql } from '@databricks/appkit-ui/js';
import { useState } from 'react';
function MyComponent() {
@@ -188,7 +188,7 @@ WHERE b.check_in >= CAST(:start_date AS DATE)
- All real dates fall within this range, so no filtering occurs
**Parameter Types Summary:**
-- ALWAYS use sql.* helper functions from the `@databricks/app-kit-ui/js` package to define SQL parameters
+- ALWAYS use sql.* helper functions from the `@databricks/appkit-ui/js` package to define SQL parameters
- **Strings/Numbers**: Use directly in SQL with `:param_name`
- **Dates**: Use with `CAST(:param AS DATE)` in SQL
- **Optional Strings**: Use empty string default, check with `(:param = '' OR column = :param)`
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/trpc.md b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/trpc.md
index 332de6bee2..acfb68c1b6 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/trpc.md
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/docs/trpc.md
@@ -15,7 +15,7 @@ Use tRPC ONLY for:
```typescript
// server/trpc.ts
import { initTRPC } from '@trpc/server';
-import { getRequestContext } from '@databricks/app-kit';
+import { getRequestContext } from '@databricks/appkit';
import { z } from 'zod';
const t = initTRPC.create({ transformer: superjson });
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/package-lock.json b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/package-lock.json
index 8d3a316861..f529029075 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/package-lock.json
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/package-lock.json
@@ -9,8 +9,8 @@
"version": "1.0.0",
"license": "Unlicensed",
"dependencies": {
- "@databricks/app-kit": "^0.0.2",
- "@databricks/app-kit-ui": "^0.0.2",
+ "@databricks/appkit": "^0.0.2",
+ "@databricks/appkit-ui": "^0.0.2",
"@databricks/sdk-experimental": "^0.14.2",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-alert-dialog": "^1.1.15",
@@ -56,9 +56,11 @@
"superjson": "^2.2.5",
"tailwind-merge": "^3.3.1",
"tailwindcss-animate": "^1.0.7",
+ "tw-animate-css": "^1.4.0",
"zod": "^4.1.13"
},
"devDependencies": {
+ "@ast-grep/napi": "^0.37.0",
"@eslint/compat": "^2.0.0",
"@eslint/js": "^9.39.1",
"@playwright/test": "^1.57.0",
@@ -100,6 +102,180 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@ast-grep/napi": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi/-/napi-0.37.0.tgz",
+ "integrity": "sha512-Hb4o6h1Pf6yRUAX07DR4JVY7dmQw+RVQMW5/m55GoiAT/VRoKCWBtIUPPOnqDVhbx1Cjfil9b6EDrgJsUAujEQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@ast-grep/napi-darwin-arm64": "0.37.0",
+ "@ast-grep/napi-darwin-x64": "0.37.0",
+ "@ast-grep/napi-linux-arm64-gnu": "0.37.0",
+ "@ast-grep/napi-linux-arm64-musl": "0.37.0",
+ "@ast-grep/napi-linux-x64-gnu": "0.37.0",
+ "@ast-grep/napi-linux-x64-musl": "0.37.0",
+ "@ast-grep/napi-win32-arm64-msvc": "0.37.0",
+ "@ast-grep/napi-win32-ia32-msvc": "0.37.0",
+ "@ast-grep/napi-win32-x64-msvc": "0.37.0"
+ }
+ },
+ "node_modules/@ast-grep/napi-darwin-arm64": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-darwin-arm64/-/napi-darwin-arm64-0.37.0.tgz",
+ "integrity": "sha512-QAiIiaAbLvMEg/yBbyKn+p1gX2/FuaC0SMf7D7capm/oG4xGMzdeaQIcSosF4TCxxV+hIH4Bz9e4/u7w6Bnk3Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ast-grep/napi-darwin-x64": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-darwin-x64/-/napi-darwin-x64-0.37.0.tgz",
+ "integrity": "sha512-zvcvdgekd4ySV3zUbUp8HF5nk5zqwiMXTuVzTUdl/w08O7JjM6XPOIVT+d2o/MqwM9rsXdzdergY5oY2RdhSPA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ast-grep/napi-linux-arm64-gnu": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-arm64-gnu/-/napi-linux-arm64-gnu-0.37.0.tgz",
+ "integrity": "sha512-L7Sj0lXy8X+BqSMgr1LB8cCoWk0rericdeu+dC8/c8zpsav5Oo2IQKY1PmiZ7H8IHoFBbURLf8iklY9wsD+cyA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ast-grep/napi-linux-arm64-musl": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-arm64-musl/-/napi-linux-arm64-musl-0.37.0.tgz",
+ "integrity": "sha512-LF9sAvYy6es/OdyJDO3RwkX3I82Vkfsng1sqUBcoWC1jVb1wX5YVzHtpQox9JrEhGl+bNp7FYxB4Qba9OdA5GA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ast-grep/napi-linux-x64-gnu": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-x64-gnu/-/napi-linux-x64-gnu-0.37.0.tgz",
+ "integrity": "sha512-TViz5/klqre6aSmJzswEIjApnGjJzstG/SE8VDWsrftMBMYt2PTu3MeluZVwzSqDao8doT/P+6U11dU05UOgxw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ast-grep/napi-linux-x64-musl": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-x64-musl/-/napi-linux-x64-musl-0.37.0.tgz",
+ "integrity": "sha512-/BcCH33S9E3ovOAEoxYngUNXgb+JLg991sdyiNP2bSoYd30a9RHrG7CYwW6fMgua3ijQ474eV6cq9yZO1bCpXg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ast-grep/napi-win32-arm64-msvc": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-arm64-msvc/-/napi-win32-arm64-msvc-0.37.0.tgz",
+ "integrity": "sha512-TjQA4cFoIEW2bgjLkaL9yqT4XWuuLa5MCNd0VCDhGRDMNQ9+rhwi9eLOWRaap3xzT7g+nlbcEHL3AkVCD2+b3A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ast-grep/napi-win32-ia32-msvc": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-ia32-msvc/-/napi-win32-ia32-msvc-0.37.0.tgz",
+ "integrity": "sha512-uNmVka8fJCdYsyOlF9aZqQMLTatEYBynjChVTzUfFMDfmZ0bihs/YTqJVbkSm8TZM7CUX82apvn50z/dX5iWRA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ast-grep/napi-win32-x64-msvc": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-x64-msvc/-/napi-win32-x64-msvc-0.37.0.tgz",
+ "integrity": "sha512-vCiFOT3hSCQuHHfZ933GAwnPzmL0G04JxQEsBRfqONywyT8bSdDc/ECpAfr3S9VcS4JZ9/F6tkePKW/Om2Dq2g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/@babel/code-frame": {
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
@@ -131,7 +307,6 @@
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.5",
@@ -383,10 +558,11 @@
"node": ">=6.9.0"
}
},
- "node_modules/@databricks/app-kit": {
+ "node_modules/@databricks/appkit": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@databricks/app-kit/-/app-kit-0.0.2.tgz",
- "integrity": "sha512-6q1gP5PMIOaaD4po6lfLdrxpfwVl3M4ICAHSzMkvfgPW82/y6vjooCc9BgvKFmQjPZnZpydK030VquevTuvlYA==",
+ "resolved": "https://registry.npmjs.org/@databricks/appkit/-/appkit-0.0.2.tgz",
+ "integrity": "sha512-BMMeaA0vR2aLXcDAytUKK7rreCQzVM9HFD3bkMBCwqjuxR2kbRJzFSBNk24AhzQp/aYVQvE8KRY2n0Zc6dEfgg==",
+ "hasInstallScript": true,
"dependencies": {
"@databricks/sdk-experimental": "^0.15.0",
"@opentelemetry/api": "^1.9.0",
@@ -405,26 +581,71 @@
"@opentelemetry/semantic-conventions": "^1.38.0",
"dotenv": "^16.6.1",
"express": "^4.22.0",
+ "pg": "^8.16.3",
"vite": "npm:rolldown-vite@7.1.14",
"ws": "^8.18.3",
"zod-to-ts": "^2.0.0"
+ },
+ "bin": {
+ "appkit-generate-types": "bin/generate-types.ts",
+ "appkit-setup": "bin/setup-claude.js"
}
},
- "node_modules/@databricks/app-kit-ui": {
+ "node_modules/@databricks/appkit-ui": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@databricks/app-kit-ui/-/app-kit-ui-0.0.2.tgz",
- "integrity": "sha512-lTXVl2tS3PxchFlEmsCx7+egOPL5qub7RtQnK+aHXYWmHhY+3ffXHcNNZRQHnFdGMfQbss7ohJhDOfXiqQJseA==",
+ "resolved": "https://registry.npmjs.org/@databricks/appkit-ui/-/appkit-ui-0.0.2.tgz",
+ "integrity": "sha512-df1itgJE2t1MGidHwcVvDBcdkw7EBS4yr8d7ZaeDT1Y6E3GbWikr/bTaC5epyqA9SaM76Lvwc2SVMlSfxtkCbA==",
+ "hasInstallScript": true,
"dependencies": {
+ "@hookform/resolvers": "^5.2.2",
+ "@radix-ui/react-accordion": "^1.2.12",
+ "@radix-ui/react-alert-dialog": "^1.1.15",
+ "@radix-ui/react-aspect-ratio": "^1.1.8",
+ "@radix-ui/react-avatar": "^1.1.11",
"@radix-ui/react-checkbox": "^1.3.3",
+ "@radix-ui/react-collapsible": "^1.1.12",
+ "@radix-ui/react-context-menu": "^2.2.16",
+ "@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
+ "@radix-ui/react-hover-card": "^1.1.15",
+ "@radix-ui/react-label": "^2.1.8",
+ "@radix-ui/react-menubar": "^1.1.16",
+ "@radix-ui/react-navigation-menu": "^1.2.14",
+ "@radix-ui/react-popover": "^1.1.15",
+ "@radix-ui/react-progress": "^1.1.8",
+ "@radix-ui/react-radio-group": "^1.3.8",
+ "@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-select": "^2.2.6",
+ "@radix-ui/react-separator": "^1.1.8",
+ "@radix-ui/react-slider": "^1.3.6",
"@radix-ui/react-slot": "^1.2.4",
+ "@radix-ui/react-switch": "^1.2.6",
+ "@radix-ui/react-tabs": "^1.1.13",
+ "@radix-ui/react-toggle": "^1.1.10",
+ "@radix-ui/react-toggle-group": "^1.1.11",
+ "@radix-ui/react-tooltip": "^1.2.8",
"@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.13.12",
+ "apache-arrow": "^21.1.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
+ "cmdk": "^1.1.1",
+ "date-fns": "^4.1.0",
+ "echarts-for-react": "^3.0.5",
+ "embla-carousel-react": "^8.6.0",
+ "input-otp": "^1.4.2",
"lucide-react": "^0.554.0",
- "tailwind-merge": "^3.4.0"
+ "next-themes": "^0.4.6",
+ "react-day-picker": "^9.11.3",
+ "react-hook-form": "^7.68.0",
+ "react-resizable-panels": "^3.0.6",
+ "sonner": "^2.0.7",
+ "tailwind-merge": "^3.4.0",
+ "vaul": "^1.1.2",
+ "zod": "^4.1.13"
+ },
+ "bin": {
+ "appkit-setup": "bin/setup-claude.js"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -432,7 +653,7 @@
"recharts": "^2.0.0 || ^3.0.0"
}
},
- "node_modules/@databricks/app-kit-ui/node_modules/lucide-react": {
+ "node_modules/@databricks/appkit-ui/node_modules/lucide-react": {
"version": "0.554.0",
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.554.0.tgz",
"integrity": "sha512-St+z29uthEJVx0Is7ellNkgTEhaeSoA42I7JjOCBCrc5X6LYMGSv0P/2uS5HDLTExP5tpiqRD2PyUEOS6s9UXA==",
@@ -441,7 +662,7 @@
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
- "node_modules/@databricks/app-kit/node_modules/@databricks/sdk-experimental": {
+ "node_modules/@databricks/appkit/node_modules/@databricks/sdk-experimental": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/@databricks/sdk-experimental/-/sdk-experimental-0.15.0.tgz",
"integrity": "sha512-HkoMiF7dNDt6WRW0xhi7oPlBJQfxJ9suJhEZRFt08VwLMaWcw2PiF8monfHlkD4lkufEYV6CTxi5njQkciqiHA==",
@@ -457,7 +678,7 @@
"npm": ">=10.0.0"
}
},
- "node_modules/@databricks/app-kit/node_modules/semver": {
+ "node_modules/@databricks/appkit/node_modules/semver": {
"version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
@@ -1187,6 +1408,18 @@
"node": ">=6"
}
},
+ "node_modules/@hookform/resolvers": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz",
+ "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/utils": "^0.3.0"
+ },
+ "peerDependencies": {
+ "react-hook-form": "^7.55.0"
+ }
+ },
"node_modules/@humanfs/core": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -1819,7 +2052,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
"integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=8.0.0"
}
@@ -1917,7 +2149,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz",
"integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -5204,6 +5435,15 @@
"integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==",
"license": "MIT"
},
+ "node_modules/@swc/helpers": {
+ "version": "0.5.17",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
+ "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.8.0"
+ }
+ },
"node_modules/@tailwindcss/node": {
"version": "4.1.17",
"resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.17.tgz",
@@ -5581,7 +5821,6 @@
"https://trpc.io/sponsor"
],
"license": "MIT",
- "peer": true,
"peerDependencies": {
"typescript": ">=5.7.2"
}
@@ -5678,6 +5917,18 @@
"assertion-error": "^2.0.1"
}
},
+ "node_modules/@types/command-line-args": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz",
+ "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/command-line-usage": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz",
+ "integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==",
+ "license": "MIT"
+ },
"node_modules/@types/connect": {
"version": "3.4.38",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
@@ -5884,7 +6135,6 @@
"integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
"devOptional": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"csstype": "^3.2.2"
}
@@ -5895,7 +6145,6 @@
"integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
"devOptional": true,
"license": "MIT",
- "peer": true,
"peerDependencies": {
"@types/react": "^19.2.0"
}
@@ -5994,7 +6243,6 @@
"integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.48.0",
"@typescript-eslint/types": "8.48.0",
@@ -6369,7 +6617,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -6456,6 +6703,26 @@
"node": ">=14"
}
},
+ "node_modules/apache-arrow": {
+ "version": "21.1.0",
+ "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-21.1.0.tgz",
+ "integrity": "sha512-kQrYLxhC+NTVVZ4CCzGF6L/uPVOzJmD1T3XgbiUnP7oTeVFOFgEUu6IKNwCDkpFoBVqDKQivlX4RUFqqnWFlEA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@swc/helpers": "^0.5.11",
+ "@types/command-line-args": "^5.2.3",
+ "@types/command-line-usage": "^5.0.4",
+ "@types/node": "^24.0.3",
+ "command-line-args": "^6.0.1",
+ "command-line-usage": "^7.0.1",
+ "flatbuffers": "^25.1.24",
+ "json-bignum": "^0.0.3",
+ "tslib": "^2.6.2"
+ },
+ "bin": {
+ "arrow2csv": "bin/arrow2csv.js"
+ }
+ },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -6474,6 +6741,15 @@
"node": ">=10"
}
},
+ "node_modules/array-back": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz",
+ "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.17"
+ }
+ },
"node_modules/array-buffer-byte-length": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
@@ -6806,7 +7082,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.25",
"caniuse-lite": "^1.0.30001754",
@@ -6940,6 +7215,21 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/chalk-template": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
+ "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk-template?sponsor=1"
+ }
+ },
"node_modules/cjs-module-lexer": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
@@ -7073,6 +7363,44 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
},
+ "node_modules/command-line-args": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.1.tgz",
+ "integrity": "sha512-Jr3eByUjqyK0qd8W0SGFW1nZwqCaNCtbXjRo2cRJC1OYxWl3MZ5t1US3jq+cO4sPavqgw4l9BMGX0CBe+trepg==",
+ "license": "MIT",
+ "dependencies": {
+ "array-back": "^6.2.2",
+ "find-replace": "^5.0.2",
+ "lodash.camelcase": "^4.3.0",
+ "typical": "^7.2.0"
+ },
+ "engines": {
+ "node": ">=12.20"
+ },
+ "peerDependencies": {
+ "@75lb/nature": "latest"
+ },
+ "peerDependenciesMeta": {
+ "@75lb/nature": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/command-line-usage": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz",
+ "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==",
+ "license": "MIT",
+ "dependencies": {
+ "array-back": "^6.2.2",
+ "chalk-template": "^0.4.0",
+ "table-layout": "^4.1.0",
+ "typical": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -7511,6 +7839,38 @@
"safe-buffer": "^5.0.1"
}
},
+ "node_modules/echarts": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-6.0.0.tgz",
+ "integrity": "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "2.3.0",
+ "zrender": "6.0.0"
+ }
+ },
+ "node_modules/echarts-for-react": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/echarts-for-react/-/echarts-for-react-3.0.5.tgz",
+ "integrity": "sha512-YpEI5Ty7O/2nvCfQ7ybNa+S90DwE8KYZWacGvJW4luUqywP7qStQ+pxDlYOmr4jGDu10mhEkiAuMKcUlT4W5vg==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "size-sensor": "^1.0.1"
+ },
+ "peerDependencies": {
+ "echarts": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
+ "react": "^15.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/echarts/node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
+ "license": "0BSD",
+ "peer": true
+ },
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -7528,8 +7888,7 @@
"version": "8.6.0",
"resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz",
"integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/embla-carousel-react": {
"version": "8.6.0",
@@ -7847,7 +8206,6 @@
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz",
"integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -8285,6 +8643,23 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
+ "node_modules/find-replace": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.2.tgz",
+ "integrity": "sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@75lb/nature": "latest"
+ },
+ "peerDependenciesMeta": {
+ "@75lb/nature": {
+ "optional": true
+ }
+ }
+ },
"node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -8314,6 +8689,12 @@
"node": ">=16"
}
},
+ "node_modules/flatbuffers": {
+ "version": "25.9.23",
+ "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-25.9.23.tgz",
+ "integrity": "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==",
+ "license": "Apache-2.0"
+ },
"node_modules/flatted": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
@@ -8966,6 +9347,16 @@
"node": "^20.17.0 || >=22.9.0"
}
},
+ "node_modules/input-otp": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz",
+ "integrity": "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc"
+ }
+ },
"node_modules/internal-slot": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
@@ -9499,6 +9890,14 @@
"bignumber.js": "^9.0.0"
}
},
+ "node_modules/json-bignum": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz",
+ "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -10395,6 +10794,46 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/pg": {
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz",
+ "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==",
+ "license": "MIT",
+ "dependencies": {
+ "pg-connection-string": "^2.9.1",
+ "pg-pool": "^3.10.1",
+ "pg-protocol": "^1.10.3",
+ "pg-types": "2.2.0",
+ "pgpass": "1.0.5"
+ },
+ "engines": {
+ "node": ">= 16.0.0"
+ },
+ "optionalDependencies": {
+ "pg-cloudflare": "^1.2.7"
+ },
+ "peerDependencies": {
+ "pg-native": ">=3.0.1"
+ },
+ "peerDependenciesMeta": {
+ "pg-native": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pg-cloudflare": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz",
+ "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/pg-connection-string": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz",
+ "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==",
+ "license": "MIT"
+ },
"node_modules/pg-int8": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
@@ -10404,6 +10843,15 @@
"node": ">=4.0.0"
}
},
+ "node_modules/pg-pool": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz",
+ "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "pg": ">=8.0"
+ }
+ },
"node_modules/pg-protocol": {
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz",
@@ -10426,6 +10874,15 @@
"node": ">=4"
}
},
+ "node_modules/pgpass": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
+ "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
+ "license": "MIT",
+ "dependencies": {
+ "split2": "^4.1.0"
+ }
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -10437,7 +10894,6 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12"
},
@@ -10521,7 +10977,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -10711,15 +11166,14 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz",
"integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-day-picker": {
- "version": "9.11.2",
- "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.11.2.tgz",
- "integrity": "sha512-TD/xMUGg2oiKX8jUR21MST5pj+7Y36097YtnDHQFlIcZOu3mbLLw2B2JqEByEGrR3HHveWYnKlyls6WqJgohAg==",
+ "version": "9.11.3",
+ "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.11.3.tgz",
+ "integrity": "sha512-7lD12UvGbkyXqgzbYIGQTbl+x29B9bAf+k0pP5Dcs1evfpKk6zv4EdH/edNc8NxcmCiTNXr2HIYPrSZ3XvmVBg==",
"license": "MIT",
"dependencies": {
"@date-fns/tz": "^1.4.1",
@@ -10742,7 +11196,6 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz",
"integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"scheduler": "^0.27.0"
},
@@ -10751,9 +11204,9 @@
}
},
"node_modules/react-hook-form": {
- "version": "7.66.1",
- "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.66.1.tgz",
- "integrity": "sha512-2KnjpgG2Rhbi+CIiIBQQ9Df6sMGH5ExNyFl4Hw9qO7pIqMBR8Bvu9RQyjl3JM4vehzCh9soiNUM/xYMswb2EiA==",
+ "version": "7.68.0",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.68.0.tgz",
+ "integrity": "sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
@@ -10778,7 +11231,6 @@
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
"integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/use-sync-external-store": "^0.0.6",
"use-sync-external-store": "^1.4.0"
@@ -10891,7 +11343,6 @@
"resolved": "https://registry.npmjs.org/recharts/-/recharts-3.5.0.tgz",
"integrity": "sha512-jWqBtu8L3VICXWa3g/y+bKjL8DDHSRme7DHD/70LQ/Tk0di1h11Y0kKC0nPh6YJ2oaa0k6anIFNhg6SfzHWdEA==",
"license": "MIT",
- "peer": true,
"workspaces": [
"www"
],
@@ -10922,8 +11373,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
"integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/redux-thunk": {
"version": "3.1.0",
@@ -11577,6 +12027,12 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/size-sensor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/size-sensor/-/size-sensor-1.0.2.tgz",
+ "integrity": "sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==",
+ "license": "ISC"
+ },
"node_modules/sonner": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz",
@@ -11596,6 +12052,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
"node_modules/stackback": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
@@ -11876,6 +12341,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/table-layout": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz",
+ "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==",
+ "license": "MIT",
+ "dependencies": {
+ "array-back": "^6.2.2",
+ "wordwrapjs": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=12.17"
+ }
+ },
"node_modules/tailwind-merge": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz",
@@ -11890,8 +12368,7 @@
"version": "4.1.17",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz",
"integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/tailwindcss-animate": {
"version": "1.0.7",
@@ -12002,7 +12479,6 @@
"integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==",
"devOptional": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "~0.25.0",
"get-tsconfig": "^4.7.5"
@@ -12017,6 +12493,15 @@
"fsevents": "~2.3.3"
}
},
+ "node_modules/tw-animate-css": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz",
+ "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Wombosvideo"
+ }
+ },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -12125,7 +12610,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"license": "Apache-2.0",
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -12158,6 +12642,15 @@
"typescript": ">=4.8.4 <6.0.0"
}
},
+ "node_modules/typical": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
+ "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.17"
+ }
+ },
"node_modules/unbox-primitive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
@@ -12315,6 +12808,19 @@
"node": ">= 0.8"
}
},
+ "node_modules/vaul": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz",
+ "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-dialog": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc"
+ }
+ },
"node_modules/victory-vendor": {
"version": "37.3.6",
"resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz",
@@ -12343,7 +12849,6 @@
"resolved": "https://registry.npmjs.org/rolldown-vite/-/rolldown-vite-7.1.14.tgz",
"integrity": "sha512-eSiiRJmovt8qDJkGyZuLnbxAOAdie6NCmmd0NkTC0RJI9duiSBTfr8X2mBYJOUFzxQa2USaHmL99J9uMxkjCyw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@oxc-project/runtime": "0.92.0",
"fdir": "^6.5.0",
@@ -12647,6 +13152,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/wordwrapjs": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.1.tgz",
+ "integrity": "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.17"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
@@ -12866,7 +13380,6 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz",
"integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==",
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
@@ -12893,6 +13406,23 @@
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
}
+ },
+ "node_modules/zrender": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-6.0.0.tgz",
+ "integrity": "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "tslib": "2.3.0"
+ }
+ },
+ "node_modules/zrender/node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
+ "license": "0BSD",
+ "peer": true
}
}
}
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/package.json b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/package.json
index 25989a69a1..480d310043 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/package.json
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/package.json
@@ -27,8 +27,8 @@
"license": "Unlicensed",
"description": "",
"dependencies": {
- "@databricks/app-kit": "^0.0.2",
- "@databricks/app-kit-ui": "^0.0.2",
+ "@databricks/appkit": "^0.0.2",
+ "@databricks/appkit-ui": "^0.0.2",
"@databricks/sdk-experimental": "^0.14.2",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-alert-dialog": "^1.1.15",
@@ -73,6 +73,7 @@
"sonner": "^2.0.7",
"superjson": "^2.2.5",
"tailwind-merge": "^3.3.1",
+ "tw-animate-css": "^1.4.0",
"tailwindcss-animate": "^1.0.7",
"zod": "^4.1.13"
},
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/scripts/generate-types.ts b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/scripts/generate-types.ts
index b392fe4e2f..633793a816 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/scripts/generate-types.ts
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/scripts/generate-types.ts
@@ -41,9 +41,9 @@ function generateTypes(): void {
}
const content = `// Auto-generated by AppKit - DO NOT EDIT
-import "@databricks/app-kit-ui/react";
+import "@databricks/appkit-ui/react";
-declare module "@databricks/app-kit-ui/react" {
+declare module "@databricks/appkit-ui/react" {
interface PluginRegistry {
${existingPluginRegistry}
}
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/server.ts b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/server.ts
index 0815bb84a2..b8331571d8 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/server.ts
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/server.ts
@@ -1,4 +1,4 @@
-import { analytics, createApp, server } from '@databricks/app-kit';
+import { analytics, createApp, server } from '@databricks/appkit';
import { appRouterMiddleware } from './trpc.js';
import type { Application } from 'express';
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/trpc.test.ts b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/trpc.test.ts
index fe0b17a40e..070d269008 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/trpc.test.ts
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/trpc.test.ts
@@ -1,8 +1,8 @@
import { describe, it, expect, vi, beforeEach } from 'vitest';
-// Mock @databricks/app-kit before importing the router
+// Mock @databricks/appkit before importing the router
const mockServingEndpointsQuery = vi.fn();
-vi.mock('@databricks/app-kit', () => ({
+vi.mock('@databricks/appkit', () => ({
getRequestContext: vi.fn(() => ({
serviceDatabricksClient: {
servingEndpoints: {
diff --git a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/trpc.ts b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/trpc.ts
index 5f8864a976..406dbaa12a 100644
--- a/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/trpc.ts
+++ b/experimental/apps-mcp/templates/appkit/template/{{.project_name}}/server/trpc.ts
@@ -2,7 +2,7 @@ import { initTRPC } from '@trpc/server';
import { createExpressMiddleware } from '@trpc/server/adapters/express';
import superjson from 'superjson';
import type express from 'express';
-import { getRequestContext } from '@databricks/app-kit';
+import { getRequestContext } from '@databricks/appkit';
import { z } from 'zod';
const t = initTRPC.create({
|