@ramme-io/ui 4.1.1 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/components/ai/AIChatThread/AIChatThread.js +76 -79
  2. package/dist/components/ai/ArchitectureReferenceCard/ArchitectureReferenceCard.js +14 -13
  3. package/dist/components/ai/CompanyProfileCard/CompanyProfileCard.js +20 -19
  4. package/dist/components/ai/CounterpartyGraphCard/CounterpartyGraphCard.js +22 -21
  5. package/dist/components/ai/DivergenceMetricsCard/DivergenceMetricsCard.js +23 -22
  6. package/dist/components/ai/LiveQuoteCard/LiveQuoteCard.js +29 -28
  7. package/dist/components/ai/NewsSummaryCard/NewsSummaryCard.js +23 -22
  8. package/dist/components/ai/StockChart/StockChart.js +33 -33
  9. package/dist/components/data-display/StatusBadge.d.ts +4 -3
  10. package/dist/components/data-display/StatusBadge.js +18 -18
  11. package/dist/components/feedback/Alert.js +19 -19
  12. package/dist/components/forms/SegmentedControl.js +10 -10
  13. package/dist/components/layout/DetailDrawer.d.ts +9 -1
  14. package/dist/components/layout/DetailDrawer.js +61 -51
  15. package/dist/components/layout/Drawer.js +47 -39
  16. package/dist/components/layout/Modal.js +28 -23
  17. package/dist/components/layout/Sheet.js +38 -36
  18. package/dist/formFieldFloor.test.d.ts +1 -0
  19. package/dist/index.css +1 -1
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.js +188 -186
  22. package/dist/lib/hooks/useDialogFocus.d.ts +1 -0
  23. package/dist/lib/hooks/useDialogFocus.js +46 -0
  24. package/dist/utils/apiBaseUrl.d.ts +1 -0
  25. package/dist/utils/apiBaseUrl.js +10 -0
  26. package/dist/wizardManifest.js +9 -4
  27. package/package.json +2 -2
  28. package/src/wizardManifest.ts +9 -4
  29. package/tailwind.preset.js +8 -0
package/dist/index.d.ts CHANGED
@@ -68,6 +68,7 @@ export * from './lib/hooks/useChartTheme';
68
68
  export * from './lib/hooks/useMediaQuery';
69
69
  export * from './lib/hooks/useBodyScrollLock';
70
70
  export * from './lib/hooks/useSheetGesture';
71
+ export * from './lib/hooks/useDialogFocus';
71
72
  export * from './components/hardware/CircularDial';
72
73
  export * from './components/hardware/HardwareCommandButton';
73
74
  export * from './components/hardware/Sparkline';
package/dist/index.js CHANGED
@@ -6,10 +6,10 @@ import { Loader as n } from "./blocks/ai/Loader.js";
6
6
  import { Actions as s, Suggestion as T } from "./blocks/ai/Actions.js";
7
7
  import { PromptInput as h } from "./blocks/ai/PromptInput.js";
8
8
  import { Message as c } from "./blocks/ai/Message.js";
9
- import { Conversation as g } from "./blocks/ai/Conversation.js";
9
+ import { Conversation as S } from "./blocks/ai/Conversation.js";
10
10
  import { ChatFAB as b } from "./blocks/ai/ChatFAB.js";
11
- import { AIChatThread as I } from "./components/ai/AIChatThread/AIChatThread.js";
12
- import { KeyInjectionOverlay as D } from "./components/ai/KeyInjectionOverlay.js";
11
+ import { AIChatThread as D } from "./components/ai/AIChatThread/AIChatThread.js";
12
+ import { KeyInjectionOverlay as A } from "./components/ai/KeyInjectionOverlay.js";
13
13
  import { TAY_DREAMBOAT_THEME as B, ThemeProvider as R, availableThemes as E, useTheme as v } from "./contexts/ThemeContext.js";
14
14
  import { AuthLayout as y } from "./components/auth/AuthLayout.js";
15
15
  import { LoginPage as w } from "./components/auth/LoginPage.js";
@@ -31,10 +31,10 @@ import { Alert as nr } from "./components/feedback/Alert.js";
31
31
  import { EmptyState as sr } from "./components/feedback/EmptyState.js";
32
32
  import { Skeleton as dr } from "./components/feedback/Skeleton.js";
33
33
  import { Plan as Cr } from "./components/feedback/Plan.js";
34
- import { TippyTooltip as Sr } from "./components/feedback/TippyTooltip.js";
34
+ import { TippyTooltip as gr } from "./components/feedback/TippyTooltip.js";
35
35
  import { Toast as ur } from "./components/feedback/Toast.js";
36
- import { ToastProvider as Pr, useToast as Ir } from "./components/feedback/ToastProvider.js";
37
- import { Label as Dr } from "./components/forms/Label.js";
36
+ import { ToastProvider as Pr, useToast as Dr } from "./components/feedback/ToastProvider.js";
37
+ import { Label as Ar } from "./components/forms/Label.js";
38
38
  import { ButtonGroup as Br } from "./components/forms/ButtonGroup.js";
39
39
  import { Checkbox as Er } from "./components/forms/Checkbox.js";
40
40
  import { ComboBox as Mr } from "./components/forms/ComboBox.js";
@@ -54,247 +54,249 @@ import { useChartTheme as mo } from "./lib/hooks/useChartTheme.js";
54
54
  import { MOBILE_BREAKPOINT_PX as po, MOBILE_BREAKPOINT_QUERY as fo, useIsMobile as xo, useMediaQuery as io } from "./lib/hooks/useMediaQuery.js";
55
55
  import { useBodyScrollLock as lo } from "./lib/hooks/useBodyScrollLock.js";
56
56
  import { DISMISS_THRESHOLD as To, FLICK_VELOCITY as ho, settleTo as Co, useSheetGesture as co } from "./lib/hooks/useSheetGesture.js";
57
- import { CircularDial as go } from "./components/hardware/CircularDial.js";
58
- import { HardwareCommandButton as bo } from "./components/hardware/HardwareCommandButton.js";
59
- import { Sparkline as Io } from "./components/hardware/Sparkline.js";
60
- import { EdgeInsightTerminal as Do } from "./components/hardware/EdgeInsightTerminal.js";
61
- import { DeviceCard as Bo } from "./blocks/iot/DeviceCard.js";
62
- import { WaterPumpControl as Eo } from "./blocks/iot/WaterPumpControl.js";
63
- import { TelemetryLog as Mo } from "./blocks/iot/TelemetryLog.js";
64
- import { DataCard as Fo } from "./components/molecular/DataCard.js";
65
- import { StateMatrix as ko } from "./components/molecular/StateMatrix.js";
66
- import { ConnectorOverlay as _o } from "./components/molecular/ConnectorOverlay.js";
67
- import { AppShell as Go } from "./components/layout/AppShell.js";
68
- import { SettingsContainer as Ko } from "./components/layout/SettingsContainer.js";
69
- import { DetailDrawer as Uo } from "./components/layout/DetailDrawer.js";
70
- import { RammeInspectorTrigger as Qo } from "./components/layout/RammeInspectorTrigger.js";
71
- import { AboutRamme as zo } from "./components/layout/AboutRamme.js";
72
- import { Header as Xo } from "./components/layout/Header.js";
73
- import { Toolbar as Jo } from "./components/layout/Toolbar.js";
74
- import { FilterPanel as $o } from "./components/layout/FilterPanel.js";
75
- import { Statusbar as oe } from "./components/layout/Statusbar.js";
76
- import { Accordion as te, AccordionItem as me } from "./components/layout/Accordion.js";
77
- import { Card as pe, CardContent as fe, CardDescription as xe, CardFooter as ie, CardHeader as ne, CardLabel as le, CardTitle as se } from "./components/layout/Card.js";
78
- import { Drawer as de } from "./components/layout/Drawer.js";
79
- import { Sheet as Ce } from "./components/layout/Sheet.js";
80
- import { DefinitionDescription as Se, DefinitionList as ge, DefinitionTerm as ue, List as be, ListItem as Pe } from "./components/layout/List.js";
81
- import { Modal as Ae } from "./components/layout/Modal.js";
82
- import { Sidebar as Le } from "./components/layout/Sidebar.js";
83
- import { ActionBar as Re } from "./components/layout/ActionBar.js";
84
- import { PageContainer as ve } from "./components/layout/PageContainer.js";
85
- import { PageHeader as ye } from "./components/layout/PageHeader.js";
86
- import { SectionHeader as we } from "./components/layout/SectionHeader.js";
87
- import { ButtonItem as Oe, UserNav as _e } from "./components/layout/UserNav.js";
88
- import { CollectionLayout as Ge } from "./components/layout/CollectionLayout.js";
89
- import { DenseMetricRibbon as Ke } from "./components/layout/DenseMetricRibbon.js";
90
- import { BreadcrumbItem as Ue, Breadcrumbs as Ye } from "./components/navigation/Breadcrumbs.js";
91
- import { Menu as We, MenuDivider as ze, MenuItem as je } from "./components/navigation/Menu.js";
92
- import { MobileNav as qe } from "./components/navigation/MobileNav.js";
93
- import { Pagination as Ze } from "./components/navigation/Pagination.js";
94
- import { Stepper as rt } from "./components/navigation/Stepper.js";
95
- import { TabPanel as et, Tabs as tt } from "./components/navigation/Tabs.js";
96
- import { FinancialAssetSchema as at, WatchlistEngine as pt } from "./blocks/engines/WatchlistEngine.js";
97
- import { Avatar as xt } from "./components/ui/Avatar.js";
98
- import { Badge as nt, badgeVariants as lt } from "./components/ui/Badge.js";
99
- import { Button as Tt, buttonVariants as dt } from "./components/ui/Button.js";
100
- import { Icon as Ct } from "./components/ui/Icon.js";
101
- import { BrandLogo as St } from "./components/ui/BrandLogo.js";
102
- import { cn as ut } from "./utils/cn.js";
103
- import { formatValue as Pt } from "./lib/formatters.js";
104
- import { ThemeSynthesizer as At } from "./components/theme/ThemeSynthesizer.js";
105
- import { AestheticProfileGrid as Lt } from "./components/theme/AestheticProfileGrid.js";
106
- import { FineTuningControls as Rt } from "./components/theme/FineTuningControls.js";
107
- import { PaletteSwatch as vt, ThemeLivePreview as Mt } from "./components/theme/ThemeLivePreview.js";
108
- import { ThemeSettings as Ft } from "./components/theme/ThemeSettings.js";
109
- import { ThemeLab as kt } from "./components/theme/ThemeLab.js";
110
- import { AESTHETIC_PROFILES as _t, generateFromProfile as Ht, generateFromPrompt as Gt, generateRandom as Vt, hslToCssString as Kt, hslToRgb as Nt, hslToRgbString as Ut, lightToDark as Yt, paletteToRgbVars as Qt } from "./lib/theme/ThemeGenerator.logic.js";
111
- import { THEME_TOKEN_VARS as zt, applyThemeToDom as jt, generateRandomTheme as Xt, getContrastColor as qt, hexToRgbTriplet as Jt, isCustomTheme as Zt, loadGoogleFont as $t, randomRgb as rm, tokensToVars as om } from "./lib/theme/themeUtils.js";
112
- import { generateThemeFromPrompt as tm } from "./lib/theme/themeAgent.js";
113
- import { CompanyProfileCard as am } from "./components/ai/CompanyProfileCard/CompanyProfileCard.js";
114
- import { CounterpartyGraphCard as fm } from "./components/ai/CounterpartyGraphCard/CounterpartyGraphCard.js";
115
- import { DivergenceMetricsCard as im } from "./components/ai/DivergenceMetricsCard/DivergenceMetricsCard.js";
116
- import { ArchitectureReferenceCard as lm } from "./components/ai/ArchitectureReferenceCard/ArchitectureReferenceCard.js";
117
- import { LiveQuoteCard as Tm } from "./components/ai/LiveQuoteCard/LiveQuoteCard.js";
118
- import { NewsSummaryCard as hm } from "./components/ai/NewsSummaryCard/NewsSummaryCard.js";
119
- import { StockChart as cm } from "./components/ai/StockChart/StockChart.js";
120
- import { TelemetryGraph as gm } from "./components/ai/TelemetryGraph/TelemetryGraph.js";
121
- import { ShowroomContainer as bm } from "./components/showroom/ShowroomContainer.js";
122
- import { ShowroomSidebar as Im } from "./components/showroom/ShowroomSidebar.js";
123
- import { ShowroomCanvas as Dm } from "./components/showroom/ShowroomCanvas.js";
124
- import { SkuBadge as Bm } from "./components/showroom/SkuBadge.js";
125
- import { resolvePreview as Em } from "./components/showroom/ShowroomRenderer.js";
57
+ import { useDialogFocus as So } from "./lib/hooks/useDialogFocus.js";
58
+ import { CircularDial as bo } from "./components/hardware/CircularDial.js";
59
+ import { HardwareCommandButton as Do } from "./components/hardware/HardwareCommandButton.js";
60
+ import { Sparkline as Ao } from "./components/hardware/Sparkline.js";
61
+ import { EdgeInsightTerminal as Bo } from "./components/hardware/EdgeInsightTerminal.js";
62
+ import { DeviceCard as Eo } from "./blocks/iot/DeviceCard.js";
63
+ import { WaterPumpControl as Mo } from "./blocks/iot/WaterPumpControl.js";
64
+ import { TelemetryLog as Fo } from "./blocks/iot/TelemetryLog.js";
65
+ import { DataCard as ko } from "./components/molecular/DataCard.js";
66
+ import { StateMatrix as _o } from "./components/molecular/StateMatrix.js";
67
+ import { ConnectorOverlay as Go } from "./components/molecular/ConnectorOverlay.js";
68
+ import { AppShell as Ko } from "./components/layout/AppShell.js";
69
+ import { SettingsContainer as Uo } from "./components/layout/SettingsContainer.js";
70
+ import { DetailDrawer as Qo } from "./components/layout/DetailDrawer.js";
71
+ import { RammeInspectorTrigger as zo } from "./components/layout/RammeInspectorTrigger.js";
72
+ import { AboutRamme as Xo } from "./components/layout/AboutRamme.js";
73
+ import { Header as Jo } from "./components/layout/Header.js";
74
+ import { Toolbar as $o } from "./components/layout/Toolbar.js";
75
+ import { FilterPanel as oe } from "./components/layout/FilterPanel.js";
76
+ import { Statusbar as te } from "./components/layout/Statusbar.js";
77
+ import { Accordion as ae, AccordionItem as pe } from "./components/layout/Accordion.js";
78
+ import { Card as xe, CardContent as ie, CardDescription as ne, CardFooter as le, CardHeader as se, CardLabel as Te, CardTitle as de } from "./components/layout/Card.js";
79
+ import { Drawer as Ce } from "./components/layout/Drawer.js";
80
+ import { Sheet as ge } from "./components/layout/Sheet.js";
81
+ import { DefinitionDescription as ue, DefinitionList as be, DefinitionTerm as Pe, List as De, ListItem as Ie } from "./components/layout/List.js";
82
+ import { Modal as Le } from "./components/layout/Modal.js";
83
+ import { Sidebar as Re } from "./components/layout/Sidebar.js";
84
+ import { ActionBar as ve } from "./components/layout/ActionBar.js";
85
+ import { PageContainer as ye } from "./components/layout/PageContainer.js";
86
+ import { PageHeader as we } from "./components/layout/PageHeader.js";
87
+ import { SectionHeader as Oe } from "./components/layout/SectionHeader.js";
88
+ import { ButtonItem as He, UserNav as Ge } from "./components/layout/UserNav.js";
89
+ import { CollectionLayout as Ke } from "./components/layout/CollectionLayout.js";
90
+ import { DenseMetricRibbon as Ue } from "./components/layout/DenseMetricRibbon.js";
91
+ import { BreadcrumbItem as Qe, Breadcrumbs as We } from "./components/navigation/Breadcrumbs.js";
92
+ import { Menu as je, MenuDivider as Xe, MenuItem as qe } from "./components/navigation/Menu.js";
93
+ import { MobileNav as Ze } from "./components/navigation/MobileNav.js";
94
+ import { Pagination as rt } from "./components/navigation/Pagination.js";
95
+ import { Stepper as et } from "./components/navigation/Stepper.js";
96
+ import { TabPanel as mt, Tabs as at } from "./components/navigation/Tabs.js";
97
+ import { FinancialAssetSchema as ft, WatchlistEngine as xt } from "./blocks/engines/WatchlistEngine.js";
98
+ import { Avatar as nt } from "./components/ui/Avatar.js";
99
+ import { Badge as st, badgeVariants as Tt } from "./components/ui/Badge.js";
100
+ import { Button as ht, buttonVariants as Ct } from "./components/ui/Button.js";
101
+ import { Icon as gt } from "./components/ui/Icon.js";
102
+ import { BrandLogo as ut } from "./components/ui/BrandLogo.js";
103
+ import { cn as Pt } from "./utils/cn.js";
104
+ import { formatValue as It } from "./lib/formatters.js";
105
+ import { ThemeSynthesizer as Lt } from "./components/theme/ThemeSynthesizer.js";
106
+ import { AestheticProfileGrid as Rt } from "./components/theme/AestheticProfileGrid.js";
107
+ import { FineTuningControls as vt } from "./components/theme/FineTuningControls.js";
108
+ import { PaletteSwatch as yt, ThemeLivePreview as Ft } from "./components/theme/ThemeLivePreview.js";
109
+ import { ThemeSettings as kt } from "./components/theme/ThemeSettings.js";
110
+ import { ThemeLab as _t } from "./components/theme/ThemeLab.js";
111
+ import { AESTHETIC_PROFILES as Gt, generateFromProfile as Vt, generateFromPrompt as Kt, generateRandom as Nt, hslToCssString as Ut, hslToRgb as Yt, hslToRgbString as Qt, lightToDark as Wt, paletteToRgbVars as zt } from "./lib/theme/ThemeGenerator.logic.js";
112
+ import { THEME_TOKEN_VARS as Xt, applyThemeToDom as qt, generateRandomTheme as Jt, getContrastColor as Zt, hexToRgbTriplet as $t, isCustomTheme as rm, loadGoogleFont as om, randomRgb as em, tokensToVars as tm } from "./lib/theme/themeUtils.js";
113
+ import { generateThemeFromPrompt as am } from "./lib/theme/themeAgent.js";
114
+ import { CompanyProfileCard as fm } from "./components/ai/CompanyProfileCard/CompanyProfileCard.js";
115
+ import { CounterpartyGraphCard as im } from "./components/ai/CounterpartyGraphCard/CounterpartyGraphCard.js";
116
+ import { DivergenceMetricsCard as lm } from "./components/ai/DivergenceMetricsCard/DivergenceMetricsCard.js";
117
+ import { ArchitectureReferenceCard as Tm } from "./components/ai/ArchitectureReferenceCard/ArchitectureReferenceCard.js";
118
+ import { LiveQuoteCard as hm } from "./components/ai/LiveQuoteCard/LiveQuoteCard.js";
119
+ import { NewsSummaryCard as cm } from "./components/ai/NewsSummaryCard/NewsSummaryCard.js";
120
+ import { StockChart as Sm } from "./components/ai/StockChart/StockChart.js";
121
+ import { TelemetryGraph as bm } from "./components/ai/TelemetryGraph/TelemetryGraph.js";
122
+ import { ShowroomContainer as Dm } from "./components/showroom/ShowroomContainer.js";
123
+ import { ShowroomSidebar as Am } from "./components/showroom/ShowroomSidebar.js";
124
+ import { ShowroomCanvas as Bm } from "./components/showroom/ShowroomCanvas.js";
125
+ import { SkuBadge as Em } from "./components/showroom/SkuBadge.js";
126
+ import { resolvePreview as Mm } from "./components/showroom/ShowroomRenderer.js";
126
127
  export {
127
- _t as AESTHETIC_PROFILES,
128
- I as AIChatThread,
128
+ Gt as AESTHETIC_PROFILES,
129
+ D as AIChatThread,
129
130
  a as AUTO_REGISTRY,
130
- zo as AboutRamme,
131
- te as Accordion,
132
- me as AccordionItem,
133
- Re as ActionBar,
131
+ Xo as AboutRamme,
132
+ ae as Accordion,
133
+ pe as AccordionItem,
134
+ ve as ActionBar,
134
135
  s as Actions,
135
136
  V as ActivityFeed,
136
- Lt as AestheticProfileGrid,
137
+ Rt as AestheticProfileGrid,
137
138
  nr as Alert,
138
- Go as AppShell,
139
- lm as ArchitectureReferenceCard,
139
+ Ko as AppShell,
140
+ Tm as ArchitectureReferenceCard,
140
141
  Y as AreaChart,
141
142
  y as AuthLayout,
142
- xt as Avatar,
143
- nt as Badge,
143
+ nt as Avatar,
144
+ st as Badge,
144
145
  W as BarChart,
145
- St as BrandLogo,
146
- Ue as BreadcrumbItem,
147
- Ye as Breadcrumbs,
148
- Tt as Button,
146
+ ut as BrandLogo,
147
+ Qe as BreadcrumbItem,
148
+ We as Breadcrumbs,
149
+ ht as Button,
149
150
  Br as ButtonGroup,
150
- Oe as ButtonItem,
151
- pe as Card,
152
- fe as CardContent,
153
- xe as CardDescription,
154
- ie as CardFooter,
155
- ne as CardHeader,
156
- le as CardLabel,
157
- se as CardTitle,
151
+ He as ButtonItem,
152
+ xe as Card,
153
+ ie as CardContent,
154
+ ne as CardDescription,
155
+ le as CardFooter,
156
+ se as CardHeader,
157
+ Te as CardLabel,
158
+ de as CardTitle,
158
159
  j as ChartWithTable,
159
160
  b as ChatFAB,
160
161
  Er as Checkbox,
161
- go as CircularDial,
162
+ bo as CircularDial,
162
163
  er as CodeBlock,
163
- Ge as CollectionLayout,
164
+ Ke as CollectionLayout,
164
165
  Mr as ComboBox,
165
- am as CompanyProfileCard,
166
- _o as ConnectorOverlay,
167
- g as Conversation,
168
- fm as CounterpartyGraphCard,
166
+ fm as CompanyProfileCard,
167
+ Go as ConnectorOverlay,
168
+ S as Conversation,
169
+ im as CounterpartyGraphCard,
169
170
  To as DISMISS_THRESHOLD,
170
- Fo as DataCard,
171
+ ko as DataCard,
171
172
  H as DataTable,
172
173
  Fr as DatePicker,
173
- Se as DefinitionDescription,
174
- ge as DefinitionList,
175
- ue as DefinitionTerm,
176
- Ke as DenseMetricRibbon,
177
- Uo as DetailDrawer,
178
- Bo as DeviceCard,
179
- im as DivergenceMetricsCard,
180
- de as Drawer,
181
- Do as EdgeInsightTerminal,
174
+ ue as DefinitionDescription,
175
+ be as DefinitionList,
176
+ Pe as DefinitionTerm,
177
+ Ue as DenseMetricRibbon,
178
+ Qo as DetailDrawer,
179
+ Eo as DeviceCard,
180
+ lm as DivergenceMetricsCard,
181
+ Ce as Drawer,
182
+ Bo as EdgeInsightTerminal,
182
183
  sr as EmptyState,
183
184
  ho as FLICK_VELOCITY,
184
185
  kr as FileUpload,
185
- $o as FilterPanel,
186
- at as FinancialAssetSchema,
187
- Rt as FineTuningControls,
186
+ oe as FilterPanel,
187
+ ft as FinancialAssetSchema,
188
+ vt as FineTuningControls,
188
189
  _r as FormTemplate,
189
- bo as HardwareCommandButton,
190
- Xo as Header,
191
- Ct as Icon,
190
+ Do as HardwareCommandButton,
191
+ Jo as Header,
192
+ gt as Icon,
192
193
  Gr as Input,
193
- D as KeyInjectionOverlay,
194
+ A as KeyInjectionOverlay,
194
195
  pr as KpiGrid,
195
- Dr as Label,
196
+ Ar as Label,
196
197
  q as LineChart,
197
- be as List,
198
- Pe as ListItem,
199
- Tm as LiveQuoteCard,
198
+ De as List,
199
+ Ie as ListItem,
200
+ hm as LiveQuoteCard,
200
201
  n as Loader,
201
202
  w as LoginPage,
202
203
  po as MOBILE_BREAKPOINT_PX,
203
204
  fo as MOBILE_BREAKPOINT_QUERY,
204
- We as Menu,
205
- ze as MenuDivider,
206
- je as MenuItem,
205
+ je as Menu,
206
+ Xe as MenuDivider,
207
+ qe as MenuItem,
207
208
  c as Message,
208
- qe as MobileNav,
209
- Ae as Modal,
209
+ Ze as MobileNav,
210
+ Le as Modal,
210
211
  Kr as MultiSelect,
211
- hm as NewsSummaryCard,
212
- ve as PageContainer,
213
- ye as PageHeader,
214
- Ze as Pagination,
215
- vt as PaletteSwatch,
212
+ cm as NewsSummaryCard,
213
+ ye as PageContainer,
214
+ we as PageHeader,
215
+ rt as Pagination,
216
+ yt as PaletteSwatch,
216
217
  Z as PieChart,
217
218
  Cr as Plan,
218
219
  h as PromptInput,
219
220
  Ur as Radio,
220
- Qo as RammeInspectorTrigger,
221
+ zo as RammeInspectorTrigger,
221
222
  rr as ScatterChart,
222
223
  Qr as SearchInput,
223
- we as SectionHeader,
224
+ Oe as SectionHeader,
224
225
  zr as SegmentedControl,
225
226
  Xr as Select,
226
- Ko as SettingsContainer,
227
- Ce as Sheet,
228
- Dm as ShowroomCanvas,
229
- bm as ShowroomContainer,
230
- Im as ShowroomSidebar,
231
- Le as Sidebar,
227
+ Uo as SettingsContainer,
228
+ ge as Sheet,
229
+ Bm as ShowroomCanvas,
230
+ Dm as ShowroomContainer,
231
+ Am as ShowroomSidebar,
232
+ Re as Sidebar,
232
233
  O as SignupPage,
233
234
  dr as Skeleton,
234
- Bm as SkuBadge,
235
- Io as Sparkline,
235
+ Em as SkuBadge,
236
+ Ao as Sparkline,
236
237
  mr as StatCard,
237
- ko as StateMatrix,
238
+ _o as StateMatrix,
238
239
  xr as StatusBadge,
239
- oe as Statusbar,
240
- rt as Stepper,
241
- cm as StockChart,
240
+ te as Statusbar,
241
+ et as Stepper,
242
+ Sm as StockChart,
242
243
  T as Suggestion,
243
244
  $r as Switch,
244
245
  B as TAY_DREAMBOAT_THEME,
245
- zt as THEME_TOKEN_VARS,
246
- et as TabPanel,
246
+ Xt as THEME_TOKEN_VARS,
247
+ mt as TabPanel,
247
248
  N as Table,
248
- tt as Tabs,
249
- gm as TelemetryGraph,
250
- Mo as TelemetryLog,
249
+ at as Tabs,
250
+ bm as TelemetryGraph,
251
+ Fo as TelemetryLog,
251
252
  Jr as Textarea,
252
- kt as ThemeLab,
253
- Mt as ThemeLivePreview,
253
+ _t as ThemeLab,
254
+ Ft as ThemeLivePreview,
254
255
  R as ThemeProvider,
255
- Ft as ThemeSettings,
256
- At as ThemeSynthesizer,
257
- Sr as TippyTooltip,
256
+ kt as ThemeSettings,
257
+ Lt as ThemeSynthesizer,
258
+ gr as TippyTooltip,
258
259
  ur as Toast,
259
260
  Pr as ToastProvider,
260
261
  ro as ToggleSwitch,
261
- Jo as Toolbar,
262
- _e as UserNav,
263
- pt as WatchlistEngine,
264
- Eo as WaterPumpControl,
265
- jt as applyThemeToDom,
262
+ $o as Toolbar,
263
+ Ge as UserNav,
264
+ xt as WatchlistEngine,
265
+ Mo as WaterPumpControl,
266
+ qt as applyThemeToDom,
266
267
  E as availableThemes,
267
- lt as badgeVariants,
268
- dt as buttonVariants,
269
- ut as cn,
270
- Pt as formatValue,
271
- Ht as generateFromProfile,
272
- Gt as generateFromPrompt,
273
- Vt as generateRandom,
274
- Xt as generateRandomTheme,
275
- tm as generateThemeFromPrompt,
276
- qt as getContrastColor,
277
- Jt as hexToRgbTriplet,
278
- Kt as hslToCssString,
279
- Nt as hslToRgb,
280
- Ut as hslToRgbString,
281
- Zt as isCustomTheme,
282
- Yt as lightToDark,
283
- $t as loadGoogleFont,
268
+ Tt as badgeVariants,
269
+ Ct as buttonVariants,
270
+ Pt as cn,
271
+ It as formatValue,
272
+ Vt as generateFromProfile,
273
+ Kt as generateFromPrompt,
274
+ Nt as generateRandom,
275
+ Jt as generateRandomTheme,
276
+ am as generateThemeFromPrompt,
277
+ Zt as getContrastColor,
278
+ $t as hexToRgbTriplet,
279
+ Ut as hslToCssString,
280
+ Yt as hslToRgb,
281
+ Qt as hslToRgbString,
282
+ rm as isCustomTheme,
283
+ Wt as lightToDark,
284
+ om as loadGoogleFont,
284
285
  f as mockChartData,
285
286
  x as mockTableData,
286
- Qt as paletteToRgbVars,
287
- rm as randomRgb,
288
- Em as resolvePreview,
287
+ zt as paletteToRgbVars,
288
+ em as randomRgb,
289
+ Mm as resolvePreview,
289
290
  Co as settleTo,
290
- om as tokensToVars,
291
+ tm as tokensToVars,
291
292
  lo as useBodyScrollLock,
292
293
  mo as useChartTheme,
293
294
  eo as useDataFetch,
295
+ So as useDialogFocus,
294
296
  xo as useIsMobile,
295
297
  io as useMediaQuery,
296
298
  co as useSheetGesture,
297
299
  v as useTheme,
298
- Ir as useToast,
300
+ Dr as useToast,
299
301
  t as wizardManifest
300
302
  };
@@ -0,0 +1 @@
1
+ export declare function useDialogFocus(isActive: boolean, containerRef: React.RefObject<HTMLElement | null>): void;
@@ -0,0 +1,46 @@
1
+ import { useRef as m, useEffect as b } from "react";
2
+ const y = [
3
+ "a[href]",
4
+ "button:not([disabled])",
5
+ 'input:not([disabled]):not([type="hidden"])',
6
+ "select:not([disabled])",
7
+ "textarea:not([disabled])",
8
+ '[tabindex]:not([tabindex="-1"])'
9
+ ].join(","), l = (o) => Array.from(o.querySelectorAll(y)).filter(
10
+ // offsetParent is null for display:none. A zero-size element is still
11
+ // reachable by keyboard, so size is not the test — visibility is.
12
+ (n) => !n.hasAttribute("aria-hidden") && n.getAttribute("tabindex") !== "-1"
13
+ );
14
+ function E(o, n) {
15
+ const i = m(null);
16
+ b(() => {
17
+ if (!o) return;
18
+ const e = n.current;
19
+ if (!e) return;
20
+ i.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
21
+ const s = () => {
22
+ (l(e)[0] ?? e).focus();
23
+ };
24
+ s();
25
+ const d = requestAnimationFrame(() => {
26
+ e.contains(document.activeElement) || s();
27
+ }), u = (t) => {
28
+ if (t.key !== "Tab") return;
29
+ const r = l(e);
30
+ if (r.length === 0) {
31
+ t.preventDefault(), e.focus();
32
+ return;
33
+ }
34
+ const a = r[0], f = r[r.length - 1], c = document.activeElement;
35
+ t.shiftKey && (c === a || !e.contains(c)) ? (t.preventDefault(), f.focus()) : !t.shiftKey && (c === f || !e.contains(c)) && (t.preventDefault(), a.focus());
36
+ };
37
+ return document.addEventListener("keydown", u, !0), () => {
38
+ cancelAnimationFrame(d), document.removeEventListener("keydown", u, !0);
39
+ const t = i.current;
40
+ t && document.contains(t) && t.focus();
41
+ };
42
+ }, [o, n]);
43
+ }
44
+ export {
45
+ E as useDialogFocus
46
+ };
@@ -0,0 +1 @@
1
+ export declare const apiBaseUrl: () => string;
@@ -0,0 +1,10 @@
1
+ const t = "http://localhost:8000", r = () => {
2
+ try {
3
+ return t;
4
+ } catch {
5
+ return t;
6
+ }
7
+ };
8
+ export {
9
+ r as apiBaseUrl
10
+ };
@@ -1098,7 +1098,7 @@ const e = {
1098
1098
  {
1099
1099
  id: "status-badge",
1100
1100
  name: "StatusBadge",
1101
- version: "1.0.1",
1101
+ version: "1.0.2",
1102
1102
  description: "A consistent status indicator featuring a color-coded dot and an optional text label. Essential for IoT devices and system states.",
1103
1103
  tags: [
1104
1104
  "status",
@@ -1117,7 +1117,7 @@ const e = {
1117
1117
  {
1118
1118
  name: "color",
1119
1119
  type: "string",
1120
- description: "Tailwind background class for the dot (e.g. 'bg-emerald-500'). Overrides the `status` preset's color when both are given."
1120
+ description: "Background class for the dot (e.g. 'bg-success'). Use a semantic token — a numeric shade does not adapt to the active theme. Overrides the `status` preset's colour when both are given."
1121
1121
  },
1122
1122
  {
1123
1123
  name: "label",
@@ -3671,7 +3671,7 @@ const e = {
3671
3671
  {
3672
3672
  id: "detail-drawer",
3673
3673
  name: "DetailDrawer",
3674
- version: "1.0.0",
3674
+ version: "1.0.2",
3675
3675
  description: 'A resizable side panel for inspecting one record without leaving the list. Strategic purpose: the master-detail companion — `push` compresses its siblings in a flex layout so the list stays visible and usable, while `overlay` floats above the page like a classic drawer. Use this for "click a row, see the detail" flows; use Modal when the task must block everything else.',
3676
3676
  tags: [
3677
3677
  "layout",
@@ -3696,7 +3696,7 @@ const e = {
3696
3696
  {
3697
3697
  name: "variant",
3698
3698
  type: "string",
3699
- description: "'push' compresses sibling flex content so the list stays visible; 'overlay' floats fixed above the page. Defaults to push."
3699
+ description: "'push' compresses sibling flex content so the list stays visible; 'overlay' floats fixed above the page. Defaults to overlay."
3700
3700
  },
3701
3701
  {
3702
3702
  name: "side",
@@ -3728,6 +3728,11 @@ const e = {
3728
3728
  type: "number",
3729
3729
  description: "Upper bound for resizing. Defaults to 60% of the window width."
3730
3730
  },
3731
+ {
3732
+ name: "title",
3733
+ type: "string",
3734
+ description: 'Names the panel for assistive technology. Not rendered: there is no header row to put it in, and adding one is a design decision. Without it an overlay announces only as "dialog".'
3735
+ },
3731
3736
  {
3732
3737
  name: "children",
3733
3738
  type: "ReactNode",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ramme-io/ui",
3
- "version": "4.1.1",
3
+ "version": "4.2.1",
4
4
  "description": "The structural component library for the Ramme Framework.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -54,7 +54,7 @@
54
54
  "tailwind-merge": "^3.3.1",
55
55
  "tippy.js": "^6.3.7",
56
56
  "zod": "^3.23.8",
57
- "@ramme-io/shared": "3.1.2"
57
+ "@ramme-io/shared": "3.2.0"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@storybook/addon-links": "^10.5.9",