@reactufy/rebootui 1.0.4 → 1.0.6

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.
package/README.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # RebootUI
2
2
 
3
- A modern React component library built on Bootstrap 5, providing a comprehensive set of customizable UI components with flexible styling options.
3
+ A modern React component library built on **Bootstrap 5.3** (`bootstrap` ^5.3.8), with typed props and compound components where it helps.
4
+
5
+ **Package name:** `@reactufy/rebootui`
6
+
7
+ ## Requirements
8
+
9
+ - **React** 18 or 19 (`react`, `react-dom`)
10
+ - For **`<Navbar>`** navigation, **`Nav.Link`** uses [React Router](https://reactrouter.com/) (`react-router-dom` ^6.4 or ^7). Install it in your app when you use navbar links with the `to` prop.
4
11
 
5
12
  ## Installation
6
13
 
@@ -12,15 +19,13 @@ yarn add @reactufy/rebootui
12
19
  pnpm add @reactufy/rebootui
13
20
  ```
14
21
 
15
- ## Quick Start
16
-
17
- ### Option 1: Everything Included (Recommended for Quick Start)
22
+ ## Quick start
18
23
 
19
- Import the complete CSS bundle that includes Bootstrap + RebootUI enhancements:
24
+ ### Option 1: All-in-one CSS (good default)
20
25
 
21
26
  ```jsx
22
- import 'rebootui/dist/rebootui-complete.css';
23
- import { Button, Alert, Modal } from 'rebootui';
27
+ import '@reactufy/rebootui/dist/rebootui-complete.css';
28
+ import { Button, Alert, Modal } from '@reactufy/rebootui';
24
29
 
25
30
  function App() {
26
31
  return (
@@ -32,9 +37,9 @@ function App() {
32
37
  }
33
38
  ```
34
39
 
35
- ### Option 2: Custom Bootstrap Setup (Advanced)
40
+ ### Option 2: Your own Bootstrap build (advanced)
36
41
 
37
- If you want to customize Bootstrap variables, import only RebootUI's enhancements:
42
+ Compile Bootstrap yourself (e.g. Sass), then layer RebootUI tweaks:
38
43
 
39
44
  ```scss
40
45
  // your-custom-bootstrap.scss
@@ -46,106 +51,110 @@ $font-family-base: 'Your Font';
46
51
 
47
52
  ```jsx
48
53
  import './your-custom-bootstrap.css';
49
- import 'rebootui/dist/rebootui-overrides.css'; // Only RebootUI enhancements
50
- import { Button, Alert, Modal } from 'rebootui';
54
+ import '@reactufy/rebootui/dist/rebootui-overrides.css';
55
+ import { Button, Alert, Modal } from '@reactufy/rebootui';
51
56
  ```
52
57
 
53
- ### Option 3: Mix and Match
58
+ ### Option 3: Library Bootstrap + overrides
54
59
 
55
60
  ```jsx
56
- import 'rebootui/dist/bootstrap.css'; // Standard Bootstrap
57
- import 'rebootui/dist/rebootui-overrides.css'; // RebootUI enhancements
58
- import { Button, Alert, Modal } from 'rebootui';
61
+ import '@reactufy/rebootui/dist/bootstrap.css';
62
+ import '@reactufy/rebootui/dist/rebootui-overrides.css';
63
+ import { Button, Alert, Modal } from '@reactufy/rebootui';
59
64
  ```
60
65
 
61
- ## Available CSS Files
62
-
63
- | File | Size | Description |
64
- |------|------|-------------|
65
- | `rebootui-complete.css` | 267 KB | Bootstrap + RebootUI enhancements (all-in-one) |
66
- | `bootstrap.css` | 265 KB | Standard Bootstrap 5.3.7 |
67
- | `rebootui-overrides.css` | 1.6 KB | Only RebootUI enhancements (tooltips, popovers, layout) |
68
-
69
- ## Components
70
-
71
- ### Layout Components
72
- - **Container** - Responsive container with size options
73
- - **Row, Column** - Flexible grid system
74
- - **HStack, VStack** - Horizontal and vertical stacks
75
- - **Layout, LayoutHeader, LayoutSidebar, LayoutContent, LayoutFooter** - Page layout system
76
-
77
- ### UI Components
78
- - **Alert** - Contextual feedback messages
79
- - **Badge** - Small count and labeling component
80
- - **Button, ButtonGroup** - Interactive buttons with variants
81
- - **Spinner** - Loading indicators
82
- - **Progress** - Progress bars with animation
83
- - **Tooltip** - Hover tooltips
84
- - **Popover** - Contextual popover overlays
85
- - **Icon** - SVG icon system
86
- - **Heading, Text** - Typography components
87
- - **Table** - Responsive tables
88
-
89
- ### Complex Components
90
- - **Accordion** - Collapsible content panels
91
- - **Breadcrumb** - Navigation breadcrumbs
92
- - **Card** - Flexible content container
93
- - **Dropdown** - Dropdown menus
94
- - **ListGroup** - List of items
95
- - **Modal** - Dialog boxes
96
- - **Nav, Navbar** - Navigation components
97
- - **Offcanvas** - Sidebar drawer
98
- - **Pagination** - Page navigation
99
- - **Scrollspy** - Scroll-aware navigation
100
- - **Toast** - Notification messages
101
-
102
- ## TypeScript Support
103
-
104
- RebootUI is built with TypeScript and includes full type definitions:
66
+ ## CSS bundles
67
+
68
+ | Export | Description |
69
+ |--------|-------------|
70
+ | `@reactufy/rebootui/dist/rebootui-complete.css` | Bootstrap + RebootUI overrides (single file) |
71
+ | `@reactufy/rebootui/dist/bootstrap.css` | Bootstrap only (as built by this package) |
72
+ | `@reactufy/rebootui/dist/rebootui-overrides.css` | RebootUI-only tweaks (tooltips, popovers, layout helpers) |
73
+
74
+ Sizes change with Bootstrap releases; check your `node_modules` after install if you need exact bytes.
75
+
76
+ ## Icons
77
+
78
+ Bootstrap Icons are shipped as a sprite for the **`Icon`** component:
79
+
80
+ ```text
81
+ @reactufy/rebootui/assets/icons/icons.svg
82
+ ```
83
+
84
+ (Resolved from `dist` in the published package.)
85
+
86
+ ## Components (overview)
87
+
88
+ Grouped roughly as exported from the package. Many are **compound** (e.g. `Card.Header`, `Modal.Body`).
89
+
90
+ ### Layout
91
+
92
+ - **Container**, **Row**, **Column**
93
+ - **Layout**, **LayoutHeader**, **LayoutSidebar**, **LayoutContent**, **LayoutFooter**
94
+ - **Stack** (+ **Stack.Item**; flex / gap utilities)
95
+
96
+ ### UI
97
+
98
+ - **Alert**, **Badge**, **Button**, **ButtonGroup**, **Spinner**, **Progress**
99
+ - **Tooltip**, **Popover**
100
+ - **Icon**, **Image**, **Figure**, **Figcaption**
101
+ - **Heading**, **Text**, **Wrapper**, **List**, **ListItem**
102
+ - **Table** (and related table subcomponents / types)
103
+ - **DataTable**
104
+
105
+ ### Patterns
106
+
107
+ - **Accordion** (+ **Accordion.Item**)
108
+ - **Breadcrumb** (+ **Breadcrumb.Item**)
109
+ - **Card** (+ **Card.Header**, **Card.Body**, **Card.Footer**, **Card.Title**, **Card.Text**, **Card.Image**)
110
+ - **Dropdown** (+ **Dropdown.Toggle**, **Dropdown.Menu**, **Dropdown.Item**)
111
+ - **ListGroup** (+ **ListGroup.Item**)
112
+ - **Modal** (+ **Modal.Dialog**, **Modal.Header**, **Modal.Body**, **Modal.Footer**)
113
+ - **Nav** (+ **Nav.Item**, **Nav.Link**) · **Tabs** (+ **Tabs.Content**, **Tabs.Pane**) · **Navbar** (+ **Navbar.Brand**, **Navbar.Toggle**, **Navbar.Collapse**)
114
+ - **Offcanvas** (+ **Offcanvas.Header**, **Offcanvas.Body**)
115
+ - **Pagination** (+ **Pagination.Item**)
116
+ - **Toast** (+ **Toast.Header**, **Toast.Body**, **Toast.Container**)
117
+
118
+ ### Forms
119
+
120
+ - **Form**, **FormControl**, **FormLabel**, **FormGroup**, **FormSelect**, **FormCheck**, **FormFeedback**, **FormText**, **FormDatalist**
121
+ - **InputGroup**, **InputGroupText**
122
+
123
+ ## TypeScript
124
+
125
+ The library is written in TypeScript and ships typings (`dist/index.d.ts`). Components expose props types; shared enums live under `./types/*` re-exports.
105
126
 
106
127
  ```tsx
107
- import { Button, ButtonColor, ButtonSize } from 'rebootui';
128
+ import { Button, ButtonColor, ButtonSize } from '@reactufy/rebootui';
108
129
 
109
- // Type-safe props
110
- <Button
111
- color={ButtonColor.Primary}
112
- size={ButtonSize.Lg}
113
- >
130
+ <Button color={ButtonColor.Primary} size={ButtonSize.Lg}>
114
131
  Click me
115
132
  </Button>
116
133
  ```
117
134
 
118
- All components export their prop types and enums for type-safe development.
119
-
120
- ## What's Included in RebootUI Enhancements
121
-
122
- The `rebootui-overrides.css` file includes:
135
+ ## RebootUI overrides (`rebootui-overrides.css`)
123
136
 
124
- - **Tooltip positioning fixes** - Proper arrow centering
125
- - **Popover positioning fixes** - Consistent arrow placement
126
- - **Layout system** - Grid-based page layout with sidebar support
137
+ Intended to work on top of Bootstrap:
127
138
 
128
- These enhancements work with any Bootstrap setup, including your customized versions.
139
+ - Tooltip / popover arrow alignment fixes
140
+ - Layout helpers used by the layout components
129
141
 
130
- ## Browser Support
142
+ ## Browser support
131
143
 
132
- - Chrome (latest)
133
- - Firefox (latest)
134
- - Safari (latest)
135
- - Edge (latest)
144
+ Current versions of Chrome, Firefox, Safari, and Edge (same practical baseline as Bootstrap 5).
136
145
 
137
146
  ## Documentation
138
147
 
139
- For full documentation, interactive examples, and API reference, visit [your-docs-url]
148
+ Interactive docs live in the **`packages/docs`** app in this monorepo (`npm run dev` from the repository root runs the docs workspace).
140
149
 
141
150
  ## Contributing
142
151
 
143
- Contributions are welcome! Please feel free to submit a Pull Request.
152
+ Contributions are welcome. Please open a pull request against the main repository.
144
153
 
145
154
  ## License
146
155
 
147
- MIT © [Your Name]
156
+ MIT
148
157
 
149
158
  ## Credits
150
159
 
151
- Built with [Bootstrap 5](https://getbootstrap.com/) and [React](https://react.dev/)
160
+ Built with [Bootstrap](https://getbootstrap.com/) and [React](https://react.dev/).
@@ -1,4 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
1
+ <svg xmlns="http://www.w3.org/2000/svg">
2
2
  <symbol class="bi bi-0-circle" viewBox="0 0 16 16" id="0-circle">
3
3
  <path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
4
4
  <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/breadcrumb/BreadcrumbItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGnC,KAAK,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;AAE3D,KAAK,mBAAmB,GAAG;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzG,QAAA,MAAM,cAAc,GAAI,yDAOrB,mBAAmB,4CA2BrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/breadcrumb/BreadcrumbItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEnC,KAAK,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;AAE3D,KAAK,mBAAmB,GAAG;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzG,QAAA,MAAM,cAAc,GAAI,yDAOrB,mBAAmB,4CAuBrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Nav.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/nav/Nav.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,OAAO,MAAM,WAAW,CAAC;AAGhC,KAAK,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjD,KAAK,QAAQ,GAAG;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAE7D,QAAA,MAAM,GAAG,EAyBH,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG;IACvB,IAAI,EAAE,OAAO,OAAO,CAAC;IACrB,IAAI,EAAE,OAAO,OAAO,CAAC;CACxB,CAAC;AAOF,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"Nav.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/nav/Nav.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,OAAO,MAAM,WAAW,CAAC;AAGhC,KAAK,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjD,KAAK,QAAQ,GAAG;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAE7D,QAAA,MAAM,GAAG,EAkBH,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG;IACvB,IAAI,EAAE,OAAO,OAAO,CAAC;IACrB,IAAI,EAAE,OAAO,OAAO,CAAC;CACxB,CAAC;AAOF,eAAe,GAAG,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import React, { JSX } from "react";
2
2
  type AllowedProps = "id" | "style" | "className" | "href" | "target" | "rel" | "onClick";
3
3
  type NavLinkProps = {
4
+ /** Render as another component (e.g. `Link` from react-router-dom) instead of `<a>`. */
5
+ as?: React.ElementType;
4
6
  children: React.ReactNode;
5
7
  className?: string;
6
8
  to?: string;
@@ -8,6 +10,6 @@ type NavLinkProps = {
8
10
  disabled?: boolean;
9
11
  eventKey?: string;
10
12
  } & Partial<Pick<JSX.IntrinsicElements["a"], AllowedProps>>;
11
- declare const NavLink: ({ children, className, to, active, disabled, eventKey, onClick, href, ...rest }: NavLinkProps) => import("react/jsx-runtime").JSX.Element;
13
+ declare const NavLink: ({ as, children, className, to, active, disabled, eventKey, onClick, href, ...rest }: NavLinkProps) => import("react/jsx-runtime").JSX.Element;
12
14
  export default NavLink;
13
15
  //# sourceMappingURL=NavLink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavLink.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/nav/NavLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAKnC,KAAK,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEzF,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAE5D,QAAA,MAAM,OAAO,GAAI,iFAUd,YAAY,4CAmFd,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"NavLink.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/nav/NavLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGnC,KAAK,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEzF,KAAK,YAAY,GAAG;IAChB,wFAAwF;IACxF,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAE5D,QAAA,MAAM,OAAO,GAAI,qFAWd,YAAY,4CAqEd,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,11 +1,6 @@
1
1
  import { ReactNode } from "react";
2
2
  import TabPane from "./TabPane";
3
3
  import TabContent from "./TabContent";
4
- type TabsContextType = {
5
- activeKey: string;
6
- onSelect: (key: string) => void;
7
- };
8
- export declare const useTabsContext: () => TabsContextType;
9
4
  type TabsProps = {
10
5
  children: ReactNode;
11
6
  defaultActiveKey?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,SAAS,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,KAAK,eAAe,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAIF,eAAO,MAAM,cAAc,uBAM1B,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,yGAMpB,SAAS,4CAoBX,CAAC;AAGF,QAAA,MAAM,IAAI,EAAoB,OAAO,aAAa,GAAG;IACjD,IAAI,EAAE,OAAO,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,UAAU,CAAC;CAC9B,CAAC;AAKF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AAGtC,KAAK,SAAS,GAAG;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,yGAMpB,SAAS,4CAoBX,CAAC;AAGF,QAAA,MAAM,IAAI,EAAoB,OAAO,aAAa,GAAG;IACjD,IAAI,EAAE,OAAO,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,UAAU,CAAC;CAC9B,CAAC;AAKF,eAAe,IAAI,CAAC"}