@thebase/ui 1.1.2 → 1.1.4

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 (120) hide show
  1. package/CHANGELOG.md +42 -16
  2. package/README.md +37 -22
  3. package/bin/create-baseui-app.mjs +21 -8
  4. package/dist/apidoc/img/bash-plain.svg +1 -0
  5. package/dist/apidoc/img/c-original.svg +1 -0
  6. package/dist/apidoc/img/csharp-original.svg +1 -0
  7. package/dist/apidoc/img/dart-original.svg +1 -0
  8. package/dist/apidoc/img/go-original-wordmark.svg +1 -0
  9. package/dist/apidoc/img/java-original.svg +1 -0
  10. package/dist/apidoc/img/javascript-original.svg +1 -0
  11. package/dist/apidoc/img/kotlin-original.svg +10 -0
  12. package/dist/apidoc/img/lua.svg +7 -0
  13. package/dist/apidoc/img/nodejs-original.svg +1 -0
  14. package/dist/apidoc/img/objectivec-plain.svg +1 -0
  15. package/dist/apidoc/img/php-original.svg +2 -0
  16. package/dist/apidoc/img/python-original.svg +1 -0
  17. package/dist/apidoc/img/ruby-plain.svg +1 -0
  18. package/dist/apidoc/img/rust-original.svg +1 -0
  19. package/dist/apidoc/img/swift-original.svg +1 -0
  20. package/dist/apidoc/img/windows8-original.svg +1 -0
  21. package/dist/baseui.apidoc.esm.js +935 -0
  22. package/dist/baseui.apidoc.min.js +936 -0
  23. package/dist/baseui.esm.js +33 -11
  24. package/dist/baseui.min.css +1 -1
  25. package/dist/baseui.min.js +33 -11
  26. package/dist/baseui.pwa.esm.js +4 -4
  27. package/dist/baseui.registry.json +42 -5
  28. package/dist/baseui.templates.xml +470 -2
  29. package/dist/pwa-icons/apple-touch-icon.png +0 -0
  30. package/dist/pwa-icons/favicon-16x16.png +0 -0
  31. package/dist/pwa-icons/favicon-32x32.png +0 -0
  32. package/dist/pwa-icons/favicon.ico +0 -0
  33. package/dist/pwa-icons/icon-192.png +0 -0
  34. package/dist/pwa-icons/icon-512.png +0 -0
  35. package/dist/types/apidoc.d.ts +27 -0
  36. package/dist/types/pwa.d.ts +9 -1
  37. package/docs/analytics.md +5 -5
  38. package/docs/blocks.md +5 -4
  39. package/docs/components/accordion.md +3 -3
  40. package/docs/components/alert-dialog.md +2 -2
  41. package/docs/components/alert.md +2 -2
  42. package/docs/components/apidoc.md +79 -0
  43. package/docs/components/aspect-ratio.md +2 -2
  44. package/docs/components/attachment.md +3 -3
  45. package/docs/components/avatar.md +5 -5
  46. package/docs/components/badge.md +2 -2
  47. package/docs/components/block-viewer.md +4 -4
  48. package/docs/components/breadcrumb.md +3 -3
  49. package/docs/components/bubble.md +2 -2
  50. package/docs/components/button-group.md +2 -2
  51. package/docs/components/button.md +2 -2
  52. package/docs/components/calendar.md +5 -5
  53. package/docs/components/card.md +2 -2
  54. package/docs/components/carousel.md +5 -5
  55. package/docs/components/chart.md +5 -5
  56. package/docs/components/checkbox.md +2 -2
  57. package/docs/components/clipboard-button.md +2 -2
  58. package/docs/components/collapsible.md +2 -2
  59. package/docs/components/combobox.md +5 -5
  60. package/docs/components/command.md +5 -5
  61. package/docs/components/context-menu.md +5 -5
  62. package/docs/components/data-table.md +6 -6
  63. package/docs/components/date-picker.md +5 -5
  64. package/docs/components/dialog.md +4 -4
  65. package/docs/components/direction.md +2 -2
  66. package/docs/components/drawer.md +3 -3
  67. package/docs/components/dropdown-menu.md +3 -3
  68. package/docs/components/empty.md +3 -3
  69. package/docs/components/field.md +1 -1
  70. package/docs/components/form.md +3 -3
  71. package/docs/components/hover-card.md +2 -2
  72. package/docs/components/icon.md +3 -3
  73. package/docs/components/input-group.md +2 -2
  74. package/docs/components/input-otp.md +5 -5
  75. package/docs/components/input.md +22 -5
  76. package/docs/components/item.md +2 -2
  77. package/docs/components/kbd.md +2 -2
  78. package/docs/components/label.md +2 -2
  79. package/docs/components/markdown.md +4 -4
  80. package/docs/components/marker.md +2 -2
  81. package/docs/components/menubar.md +2 -2
  82. package/docs/components/message-scroller.md +5 -5
  83. package/docs/components/message.md +5 -5
  84. package/docs/components/native-select.md +2 -2
  85. package/docs/components/navigation-menu.md +3 -3
  86. package/docs/components/pagination.md +3 -3
  87. package/docs/components/popover.md +7 -7
  88. package/docs/components/progress.md +2 -2
  89. package/docs/components/pwa.md +2 -2
  90. package/docs/components/questionnaire.md +5 -5
  91. package/docs/components/radio-group.md +2 -2
  92. package/docs/components/resizable.md +5 -5
  93. package/docs/components/scroll-area.md +5 -5
  94. package/docs/components/select.md +2 -2
  95. package/docs/components/separator.md +2 -2
  96. package/docs/components/sheet.md +3 -3
  97. package/docs/components/shell.md +2 -2
  98. package/docs/components/sidebar.md +2 -2
  99. package/docs/components/skeleton.md +2 -2
  100. package/docs/components/slider.md +2 -2
  101. package/docs/components/spinner.md +3 -3
  102. package/docs/components/switch.md +2 -2
  103. package/docs/components/table.md +2 -2
  104. package/docs/components/tabs.md +4 -4
  105. package/docs/components/text-editor.md +2 -2
  106. package/docs/components/textarea.md +3 -3
  107. package/docs/components/theme-button.md +4 -4
  108. package/docs/components/toast.md +3 -3
  109. package/docs/components/toggle-group.md +5 -5
  110. package/docs/components/toggle.md +5 -5
  111. package/docs/components/tooltip.md +7 -7
  112. package/docs/components/typography.md +3 -3
  113. package/docs/icons.md +7 -7
  114. package/docs/installation.md +14 -13
  115. package/docs/owl-components.md +16 -16
  116. package/docs/registry.md +8 -8
  117. package/docs/runtime-api.md +3 -3
  118. package/docs/theming.md +5 -5
  119. package/docs/usage-guide.md +30 -27
  120. package/package.json +10 -1
package/CHANGELOG.md CHANGED
@@ -2,12 +2,38 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## [Unreleased]
6
+
7
+ ## [v1.1.3] - 2026-10-13
8
+
9
+ ### Added
10
+ - `ApiDoc` component (`b-ui="apidoc"` / pure Base `ApiDoc`): renders an OpenAPI 3 JSON document as browsable API documentation — grouped sidebar, per-operation parameters, request body, responses, callbacks, a Try It panel with request samples in 17 languages, and an Authorize dialog (API key, HTTP basic, bearer, OpenID Connect, OAuth2 flows). Props include `src`, `spec`, `serverUrl`, `theme`, `themeToggle`, `hash`, `operation`, `tryIt`, `authorize`, `languages`, `language`, `assetBase`, `oauthRedirectUri`, `height`; events `baseui:load`, `baseui:error`, `baseui:navigate`. Built from the Base UI's own `Button`, `Badge`, `Dialog`, `Tabs`, `Breadcrumb`, `Input`, `Textarea`, `NativeSelect` and `Checkbox`. See `docs/components/apidoc.md`.
11
+ - `apidoc-01` block (full-page API reference) and the `examples/apidoc/` demo with a Petstore spec.
12
+ - `Input`: Material-style outlined mode with `label`, `supportingText`, `errorText`, `leadingIcon`/`trailingIcon` and a `maxLength` counter (documented in `docs/components/input.md`).
13
+ - PWA toolkit: default logo and favicon set (`dist/pwa-icons/`: `favicon.ico`, 16/32 px favicons, `apple-touch-icon.png`, `icon-192.png`, `icon-512.png`). `create-baseui-app pwa` copies it into `<path>/icons/` without overwriting existing files, and the default manifest icons and precache list point at it. New optional `iconsBase` (manifest + service worker) and `manifestUrl` (service worker) config keys.
14
+ - Examples: the examples/landing site is now an installable, offline-capable PWA (`examples/pwa/`, generated from `baseui.pwa.config.js`). The service worker is served from `/examples-sw.js`; `deploy_landing.sh` stages it at the site root. New `momo_demo/` static `b-ui` business-admin demo.
15
+ - Build: ApiDoc's language logos are copied to `dist/apidoc/img/` and published (`dist/apidoc` added to `package.json` `files`).
16
+
17
+ ### Changed
18
+ - PWA toolkit: the default precache list no longer includes `/favicon.svg`; it precaches the default icon files instead.
19
+ - `npm run dev` server: serves `.ico` as `image/x-icon` and `.mjs` as JavaScript.
20
+ - Docs and examples: production pin examples now use `@1.1.3`; component counts in `docs/owl-components.md` and `docs/registry.md` now say 74.
21
+
22
+ ## [v1.1.2] - 2026-10-06
23
+
24
+ Backfilled entry (1.1.2 shipped without release notes).
25
+
26
+ ### Added
27
+ - PWA toolkit: `@thebase/ui/pwa` (`dist/baseui.pwa.esm.js`, types in `dist/types/pwa.d.ts`) exports `buildManifest` and `buildServiceWorker`.
28
+ - `create-baseui-app` CLI: `create`, `init`, `convert` and `pwa` commands to scaffold a Base UI project and generate `manifest.webmanifest` + `sw.js`. See `docs/usage-guide.md` §5b and `docs/components/pwa.md`.
29
+ - Examples: the landing page shows PWA install and visitor tracking (`examples/tracking.js`).
30
+
5
31
  ## [v1.1.1] - 2026-10-04
6
32
 
7
33
  ### Added
8
34
  - Analytics: `visitorContext()` export from `@thebase/ui/analytics` (and `window.thebase.analytics.visitorContext`). It returns the visitor's timezone (`tz`), browser language (`lang`) and a coarse screen bucket (`screen`: Mobile/Tablet/Laptop/Desktop). Pass it as `customProperties` to attach them to every event. Types are included as `BaseUIVisitorContext`. It's an additive export released as a patch by maintainer decision; nothing existing changed.
9
35
  - Docs: `docs/analytics.md` covers receiving events on your own backend (payload reference, Go Fiber v3 and FastAPI receivers), a "Sample dashboard" section, and "Visitor context". README has an Analytics section.
10
- - Examples: `examples/analytics/` contains a BaseUI analytics dashboard plus runnable Go Fiber and FastAPI sample backends (in-memory store, `GET /api/stats`, `DEMO_SEED=1` demo data). The landing page has an Analytics section, and the docs nav lists the Analytics guide.
36
+ - Examples: `examples/analytics/` contains a Base UI analytics dashboard plus runnable Go Fiber and FastAPI sample backends (in-memory store, `GET /api/stats`, `DEMO_SEED=1` demo data). The landing page has an Analytics section, and the docs nav lists the Analytics guide.
11
37
 
12
38
  ### Changed
13
39
  - Docs and examples: production pin examples now use `@1.1.1`.
@@ -16,8 +42,8 @@ All notable changes to this project are documented in this file.
16
42
  ## [v1.1.0] - 2026-10-04
17
43
 
18
44
  ### Added
19
- - Optional, standalone analytics service: `@thebase/ui/analytics`. Use `dist/baseui.analytics.esm.js`, or the `<script>` build `dist/baseui.analytics.min.js`, which sets `window.thebase.analytics`. It is not part of the main bundles and needs no other BaseUI file. Start it with `init({ backendUrl })`: events go to `<backendUrl>/api/event` (change the path with `apiPath`), and `domain` defaults to `location.hostname`. Pass a full `endpoint` instead when routing through a proxy. A URL without a scheme throws instead of silently posting to your own site. It is a cookieless tracker ported from `@plausible-analytics/tracker` 0.4.6 and keeps that package's options and compact payload. It covers automatic and SPA pageviews, engagement (time on page and scroll depth), outbound links, file downloads, form submissions, `thebase-event-*` / `thebase-revenue-*` class tagging, the `localStorage.thebase_ignore` opt-out, `customProperties` and `transformRequest`. After `init()` the tracker is bound to `window.thebase.track`. Types are in `dist/types/analytics.d.ts`; see `docs/analytics.md`. The upstream MIT notice is in `LICENSE`.
20
- - The browser global is now `window.thebase`, holding the same object as before (`version`, `register`, `component`, `mount`, `mountAll`, `destroy`, `theme`, `icons`). If a page script creates `window.thebase` before a BaseUI bundle loads, the runtime adds its methods to that object instead of replacing it.
45
+ - Optional, standalone analytics service: `@thebase/ui/analytics`. Use `dist/baseui.analytics.esm.js`, or the `<script>` build `dist/baseui.analytics.min.js`, which sets `window.thebase.analytics`. It is not part of the main bundles and needs no other Base UI file. Start it with `init({ backendUrl })`: events go to `<backendUrl>/api/event` (change the path with `apiPath`), and `domain` defaults to `location.hostname`. Pass a full `endpoint` instead when routing through a proxy. A URL without a scheme throws instead of silently posting to your own site. It is a cookieless tracker ported from `@plausible-analytics/tracker` 0.4.6 and keeps that package's options and compact payload. It covers automatic and SPA pageviews, engagement (time on page and scroll depth), outbound links, file downloads, form submissions, `thebase-event-*` / `thebase-revenue-*` class tagging, the `localStorage.thebase_ignore` opt-out, `customProperties` and `transformRequest`. After `init()` the tracker is bound to `window.thebase.track`. Types are in `dist/types/analytics.d.ts`; see `docs/analytics.md`. The upstream MIT notice is in `LICENSE`.
46
+ - The browser global is now `window.thebase`, holding the same object as before (`version`, `register`, `component`, `mount`, `mountAll`, `destroy`, `theme`, `icons`). If a page script creates `window.thebase` before a Base UI bundle loads, the runtime adds its methods to that object instead of replacing it.
21
47
 
22
48
  ### Changed
23
49
  - Docs: production pin examples now use `@1.1.0`. `docs/installation.md` and `docs/registry.md` list the analytics bundles and the `@thebase/ui/analytics` export.
@@ -31,17 +57,17 @@ First stable release. From here on the package follows [Semantic Versioning](htt
31
57
 
32
58
  ### Changed
33
59
  - Docs: production pin examples now use `@1.0.0`, or the `@1` major range to receive non-breaking updates. `docs/owl-components.md` documents the global component fallback below, and `docs/components/button.md` now lists `Button`'s `unstyled`, `attrs`, and `getRef` props.
34
- - Internal: shared prop and overlay helpers replace per-component copies (`optional()`/`slotProps` prop declarations, controlled-open and Bootstrap Collapse hooks, one binder for the static dialog/sheet/drawer overlays, one checkbox/radio enhancer). Every pure Owl component keeps exactly the same props, and every static adapter keeps the same attributes, events, and `element.BaseUI*` handles.
60
+ - Internal: shared prop and overlay helpers replace per-component copies (`optional()`/`slotProps` prop declarations, controlled-open and Bootstrap Collapse hooks, one binder for the static dialog/sheet/drawer overlays, one checkbox/radio enhancer). Every Base component keeps exactly the same props, and every static adapter keeps the same attributes, events, and `element.BaseUI*` handles.
35
61
 
36
62
  ### Fixed
37
- - Pure Owl: nested consumer components no longer crash with `Cannot find the definition of component "Icon"` (or `Button`, etc.) when their template uses a BaseUI component missing from their own `static components`. `Component` from `@base/owl` now falls back to the globally registered BaseUI components for every component, not just the root passed to `mount()`. A component's own `static components` entries still take precedence.
63
+ - Pure Base: nested consumer components no longer crash with `Cannot find the definition of component "Icon"` (or `Button`, etc.) when their template uses a Base UI component missing from their own `static components`. `Component` from `@base/owl` now falls back to the globally registered the Base UI components for every component, not just the root passed to `mount()`. A component's own `static components` entries still take precedence.
38
64
  - `Sidebar`: `SidebarMenu` now fills the remaining panel height and scrolls on its own when its items overflow, so a long nav list no longer pushes `SidebarFooter` off-screen.
39
65
 
40
66
  ## [v0.0.12] - 2026-09-13
41
67
 
42
68
  ### Changed
43
- - **Breaking**: `Tabs` restyled to match [shadcn/base's Tabs](https://ui.shadcn.com/docs/components/base/tabs) — `TabsList` is now a segmented pill control on a muted background by default (new `variant="'line'"`/`b-att-variant="line"` opts into a transparent underline list instead), and `TabContent`/`b-panel` render as bare panels with no default `Card` border/background (that chrome is now opt-in via `className` on `TabsContainer` or the consumer's own wrapper). New `orientation` prop (`"horizontal"`/`"vertical"`) on the pure Owl `Tabs` puts `TabsList` beside `TabsContainer` instead of above it.
44
- - Internal: every pure-Owl component's raw `<button>` (dialog, sheet, pwa, attachment, carousel, collapsible, calendar, dropdown-menu, popover, data-table, accordion, tabs, alert, input-group, sidebar, clipboard-button, theme-button, shell, questionnaire, alert-dialog, drawer, select, toggle, toggle-group) now renders through the shared `Button` component instead of hand-written markup. `Button` gained `unstyled` (opt out of forced `btn`/variant classes for components with their own bespoke styling), `attrs` (pass-through object for one-off attributes with no first-class prop), and `getRef` (reports the mounted root element for callers that need direct DOM access) to support this. No public prop-level API changes for any consuming component.
69
+ - **Breaking**: `Tabs` restyled to match [shadcn/base's Tabs](https://ui.shadcn.com/docs/components/base/tabs) — `TabsList` is now a segmented pill control on a muted background by default (new `variant="'line'"`/`b-att-variant="line"` opts into a transparent underline list instead), and `TabContent`/`b-panel` render as bare panels with no default `Card` border/background (that chrome is now opt-in via `className` on `TabsContainer` or the consumer's own wrapper). New `orientation` prop (`"horizontal"`/`"vertical"`) on the pure Base `Tabs` puts `TabsList` beside `TabsContainer` instead of above it.
70
+ - Internal: every pure Base component's raw `<button>` (dialog, sheet, pwa, attachment, carousel, collapsible, calendar, dropdown-menu, popover, data-table, accordion, tabs, alert, input-group, sidebar, clipboard-button, theme-button, shell, questionnaire, alert-dialog, drawer, select, toggle, toggle-group) now renders through the shared `Button` component instead of hand-written markup. `Button` gained `unstyled` (opt out of forced `btn`/variant classes for components with their own bespoke styling), `attrs` (pass-through object for one-off attributes with no first-class prop), and `getRef` (reports the mounted root element for callers that need direct DOM access) to support this. No public prop-level API changes for any consuming component.
45
71
 
46
72
  ### Added
47
73
  - `Toast`: new optional `action` slot (`<t t-set-slot="action">...</t>`, e.g. an "Undo" `<Button/>`) renders grouped tight against the close button on the trailing edge, matching the shadcn/ui toast layout. The toast root and static `[b-ui="toast"]` markup are now a flex row: wrap message content in `.bu-toast-content` (grows to fill available width) and the action/close controls in `.bu-toast-actions` (grouped on the trailing edge) — see `docs/components/toast.md` for the updated static markup. `Shell`'s `toast.actionLabel` now renders through the new `action` slot instead of inline in the default slot.
@@ -54,8 +80,8 @@ First stable release. From here on the package follows [Semantic Versioning](htt
54
80
 
55
81
  ### Changed
56
82
  - **Breaking**: every CSS custom property has been renamed from the `--baseui-*` prefix to `--b-*` (e.g. `--baseui-primary` → `--b-primary`). Aligns the token prefix with the existing `--b1`/`--b2_5` spacing scale and `[b-ui]`/`b-att-*` attribute convention. `BaseUI.theme.set()` now writes/reads `--b-*` tokens; any consumer CSS that directly referenced `--baseui-*` must update to `--b-*`.
57
- - **Breaking**: every component CSS class has been renamed from the `baseui-*` prefix to `bu-*` (e.g. `.baseui-alert` → `.bu-alert`), to shorten it and avoid colliding with third-party `b-*`-prefixed conventions (e.g. Buefy) while staying distinct from the `b-ui`/`b-att-*` attribute and `--b-*` token conventions. Any consumer markup, CSS, or pure-Owl `className` override referencing `.baseui-*` must update to `.bu-*`. The bare `.baseui` root/theme-scope class, file names, the `BaseUI` global, the `@thebase/ui` package name, and `storageKey="'baseui-theme'"` are untouched.
58
- - Every component's class-name string-building now goes through the shared `cn()` helper instead of ad hoc `classes.push()/join(" ")` logic; the pure-Owl `Toast`'s close control now composes the real `Button` component instead of a raw `<button>`.
83
+ - **Breaking**: every component CSS class has been renamed from the `baseui-*` prefix to `bu-*` (e.g. `.baseui-alert` → `.bu-alert`), to shorten it and avoid colliding with third-party `b-*`-prefixed conventions (e.g. Buefy) while staying distinct from the `b-ui`/`b-att-*` attribute and `--b-*` token conventions. Any consumer markup, CSS, or pure Base `className` override referencing `.baseui-*` must update to `.bu-*`. The bare `.baseui` root/theme-scope class, file names, the `BaseUI` global, the `@thebase/ui` package name, and `storageKey="'baseui-theme'"` are untouched.
84
+ - Every component's class-name string-building now goes through the shared `cn()` helper instead of ad hoc `classes.push()/join(" ")` logic; the pure Base `Toast`'s close control now composes the real `Button` component instead of a raw `<button>`.
59
85
 
60
86
  ## [v0.0.10] - 2026-09-02
61
87
 
@@ -94,29 +120,29 @@ First stable release. From here on the package follows [Semantic Versioning](htt
94
120
 
95
121
  ## [v0.0.4] - 2026-09-01
96
122
 
97
- Initial documented release. BaseUI is a self-contained component library (Owl v2 + Bootstrap 5 + GrapesJS page-builder tooling) with a shadcn-aligned component set, a live docs/examples app, and vendored runtime assets.
123
+ Initial documented release. The Base UI is a self-contained component library (Owl v2 + Bootstrap 5 + GrapesJS page-builder tooling) with a shadcn-aligned component set, a live docs/examples app, and vendored runtime assets.
98
124
 
99
125
  ### Added
100
- - Full BaseUI component set aligned with shadcn/ui coverage (Accordion, Alert, AlertDialog, Avatar, Badge, Breadcrumb, Button, Calendar, Card, Carousel, Chart, Checkbox, Collapsible, Combobox, Command, ContextMenu, DataTable, DatePicker, Dialog, Drawer, DropdownMenu, Empty, Field, Form, HoverCard, Input, InputGroup, InputOTP, Item, Kbd, Label, Marker, Menubar, NativeSelect, NavigationMenu, Pagination, Popover, Progress, RadioGroup, Resizable, ScrollArea, Select, Separator, Sheet, Shell, Sidebar, Skeleton, Slider, Spinner, Switch, Tabs, and more), plus Lucide icons and `b-*` component attributes.
101
- - Markdown component with live BaseUI/Mermaid previews, a copyable code pane with copy-to-clipboard toast, and a Template/Pure Owl Component code toggle for every block demo.
126
+ - Full the Base UI component set aligned with shadcn/ui coverage (Accordion, Alert, AlertDialog, Avatar, Badge, Breadcrumb, Button, Calendar, Card, Carousel, Chart, Checkbox, Collapsible, Combobox, Command, ContextMenu, DataTable, DatePicker, Dialog, Drawer, DropdownMenu, Empty, Field, Form, HoverCard, Input, InputGroup, InputOTP, Item, Kbd, Label, Marker, Menubar, NativeSelect, NavigationMenu, Pagination, Popover, Progress, RadioGroup, Resizable, ScrollArea, Select, Separator, Sheet, Shell, Sidebar, Skeleton, Slider, Spinner, Switch, Tabs, and more), plus Lucide icons and `b-*` component attributes.
127
+ - Markdown component with live BaseUI/Mermaid previews, a copyable code pane with copy-to-clipboard toast, and a Template/Base Component code toggle for every block demo.
102
128
  - Collaborative Milkdown Markdown editor and a TextEditor component.
103
129
  - Hash-routed examples/docs app unifying all component demos under one navigation shell, with a chart gallery and component previews embedded in docs.
104
130
  - Mobile support: sidecar CSS/XML for Sidebar, Shell, DataTable, and Markdown, plus per-component demo blocks.
105
131
  - QR page generator demo.
106
- - `style` prop support across all pure Owl components.
132
+ - `style` prop support across all Base components.
107
133
  - PWA support and ClipboardButton component.
108
134
  - Published `docs/*.md` and `docs/components/` inside the npm package (`package.json` `files`), plus `CHANGELOG.md`, so integration docs and per-component reference pages are reachable straight from unpkg/jsDelivr without cloning the repo. `docs/v2/` (vendored general Owl framework reference) and `docs/component-authoring.md` stay repo-only and are excluded.
109
135
 
110
136
  ### Changed
111
- - Consolidated BaseUI into a single self-contained bundle: vendored Bootstrap 5 and Owl under `src/runtime`, externalized Owl into `dist/owl.js` for lean CDN bundles, and deduped disclosure/modal logic.
112
- - Rewrote the Markdown live-preview to mount real Owl components instead of static templates.
137
+ - Consolidated the Base UI into a single self-contained bundle: vendored Bootstrap 5 and Owl under `src/runtime`, externalized Owl into `dist/owl.js` for lean CDN bundles, and deduped disclosure/modal logic.
138
+ - Rewrote the Markdown live-preview to mount real Base components instead of static templates.
113
139
  - Renamed Tabs sub-components and reworked the example shell (unified sidebar/shell collapse trigger, `baseui-text-xs` utility).
114
140
  - Merged shell collapse trigger into the sidebar trigger.
115
141
  - Renamed the published npm package from `@the-base/baseui` to `@thebase/ui`.
116
142
  - Vendored Lucide icon sources into `src/icons/` (flat, git-tracked) instead of generating them only into the gitignored `dist/icons/lucide/` build output; the lucide loader module moved to `src/runtime/`.
117
143
  - `dist/` and `package-lock.json` are now gitignored, since `dist/` is purely a build artifact.
118
144
  - Consolidated duplicated class-name string-building logic (`DropdownMenu`, `Sidebar`, `Form`, `Field`) into a single shared `classNames()` helper in `prop-aliases.js`.
119
- - Switched the QR page consumer demo to load BaseUI directly from `/dist/` instead of a vendored copy; bumped its service worker cache to `v4`.
145
+ - Switched the QR page consumer demo to load the Base UI directly from `/dist/` instead of a vendored copy; bumped its service worker cache to `v4`.
120
146
  - Rewrote `README.md`'s release notes to point at `CHANGELOG.md` instead of embedded version narrative; corrected the published component count; documented the CDN doc-access URLs and which docs are excluded from the package.
121
147
 
122
148
  ### Fixed
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # The Base UI
2
2
 
3
- The Base UI is a CDN-installable UI kit built with Bootstrap 5 styling and Owl-enhanced behavior. The primary way to consume it is as **pure Owl components** (`<Button/>`-style imports into your own Owl app); the static `b-ui` markup adapter is the alternative for plain static HTML, server-rendered pages, and Base HUB website pages that have no Owl app of their own.
3
+ The Base UI is a CDN-installable UI kit built with Bootstrap 5 styling and Owl framework enhanced behavior. The primary way to consume it is as **Base components** (`<Button/>`-style imports into your own application); the base static markup (`b-ui`) adapter is the alternative for plain static HTML, server-rendered pages, and Base HUB website pages that have no application of their own.
4
4
 
5
5
  Its strong points: **no build step** — every component runs straight from a CDN `<script>`/import map, nothing to compile; **modular component design** — each component is a self-contained unit you import or mark up individually, not a monolith; **vanilla JavaScript/TypeScript** — no framework lock-in, no JSX, no compiler-specific syntax to learn; and this combination makes it well suited to building **WYSIWYG website builders**, where components must mount, unmount, and re-render dynamically from user-driven markup or drag-and-drop edits rather than a fixed build-time component tree.
6
6
 
7
- Both APIs load straight from a CDN — jsDelivr or unpkg — no build step, no self-hosting required. The snippets below use the `@latest` tag for readability; pin an exact version instead (e.g. `@1.1.1`, or `@1` to take only non-breaking updates) for any production page, since `@latest` can change what your page loads the moment a new version ships. Pure Owl usage:
7
+ Both APIs load straight from a CDN — jsDelivr or unpkg — no build step, no self-hosting required. The snippets below use the `@latest` tag for readability; pin an exact version instead (e.g. `@1.1.3`, or `@1` to take only non-breaking updates) for any production page, since `@latest` can change what your page loads the moment a new version ships. Pure Base usage:
8
8
 
9
9
  ```html
10
10
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.css">
@@ -39,26 +39,26 @@ Both APIs load straight from a CDN — jsDelivr or unpkg — no build step, no s
39
39
  </script>
40
40
  ```
41
41
 
42
- [unpkg](https://unpkg.com/@thebase/ui@latest/) mirrors the same files as an alternative CDN — swap any `cdn.jsdelivr.net/npm` URL above for `unpkg.com` (e.g. `https://unpkg.com/@thebase/ui@latest/dist/baseui.esm.js`) if jsDelivr is unreachable in your environment. See [Pure Owl Components](docs/owl-components.md) for the full API, npm/bundler usage, and mixing with the static adapter.
42
+ [unpkg](https://unpkg.com/@thebase/ui@latest/) mirrors the same files as an alternative CDN — swap any `cdn.jsdelivr.net/npm` URL above for `unpkg.com` (e.g. `https://unpkg.com/@thebase/ui@latest/dist/baseui.esm.js`) if jsDelivr is unreachable in your environment. See [Base Components](docs/owl-components.md) for the full API, npm/bundler usage, and mixing with the static adapter.
43
43
 
44
- If you have no Owl app, use the static `b-ui` markup adapter instead — one stylesheet and one script tag, no import map:
44
+ If you have no application, use the base static markup (`b-ui`) adapter instead — one stylesheet and one script tag, no import map:
45
45
 
46
46
  ```html
47
47
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.css">
48
48
  <script src="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.js" defer></script>
49
49
  ```
50
50
 
51
- `dist/baseui.min.js`/`baseui.esm.js` are fully self-contained and back both APIs above: Bootstrap's JS bundle, the Owl runtime, every pure Owl component class, and the theme helper are all embedded in load order (Bootstrap, then Owl, then BaseUI) — one file, nothing else to load first. There is no separate `baseui.owl.*`/`baseui.components.esm.js`/`baseui.theme.esm.js`. (`dist/bootstrap.bundle.min.js` still ships standalone, unmodified, for a project that wants vendored Bootstrap JS on its own — BaseUI itself never needs it loaded separately.)
51
+ `dist/baseui.min.js`/`baseui.esm.js` are fully self-contained and back both APIs above: Bootstrap's JS bundle, the Owl runtime, every Base component class, and the theme helper are all embedded in load order (Bootstrap, then Owl, then the Base UI) — one file, nothing else to load first. There is no separate `baseui.owl.*`/`baseui.components.esm.js`/`baseui.theme.esm.js`. (`dist/bootstrap.bundle.min.js` still ships standalone, unmodified, for a project that wants vendored Bootstrap JS on its own — the Base UI itself never needs it loaded separately.)
52
52
 
53
- BaseUI exposes every component (73 in the current registry) as a real Owl component class — see [Pure Owl Components](docs/owl-components.md) for the complete API, npm/bundler usage, and mixing with the static adapter.
53
+ The Base UI exposes every component (74 in the current registry) as a real Owl component class — see [Base Components](docs/owl-components.md) for the complete API, npm/bundler usage, and mixing with the static adapter.
54
54
 
55
55
  For app-level theme controls, import `createThemeController`/`BaseUITheme` as `@base/theme` in browser import maps (pointing at the same `dist/baseui.esm.js`) or straight from `@thebase/ui` in npm/bundler apps, to create persisted light/dark toggles like the documentation pages use.
56
56
 
57
- Every component ships both APIs from `src/components/<name>/`: the static `b-ui` adapter (`<name>.js`, using `b-att-*` attributes and `baseui:*` events) and a pure Owl component class (`<name>.component.js`, exported from `@thebase/ui/components`). A few components' pure Owl treatment is intentionally lighter or reshaped versus their static markup-driven adapter — most notably `chart` (a slotted container; static Chart.js bootstrapping stays a `b-ui`-only concern) and the data-driven `data-table`/`combobox`/`command`/`calendar` (props-driven instead of slot/markup-driven). See each component's doc page under `docs/components/` for specifics.
57
+ Every component ships both APIs from `src/components/<name>/`: the static `b-ui` adapter (`<name>.js`, using `b-att-*` attributes and `baseui:*` events) and a Base component class (`<name>.component.js`, exported from `@thebase/ui/components`). A few components' pure Base treatment is intentionally lighter or reshaped versus their static markup-driven adapter — most notably `chart` (a slotted container; static Chart.js bootstrapping stays a `b-ui`-only concern) and the data-driven `data-table`/`combobox`/`command`/`calendar` (props-driven instead of slot/markup-driven). See each component's doc page under `docs/components/` for specifics.
58
58
 
59
59
  ## Analytics
60
60
 
61
- BaseUI also ships an optional, cookieless web-analytics service (from 1.1.0). It is a standalone bundle — not part of `dist/baseui.min.js`/`baseui.esm.js`, with no Owl, Bootstrap, or component runtime dependency (~5.6 KB minified) — so you can load it with or without the rest of BaseUI. Nothing is collected until the page calls `init()`:
61
+ The Base UI also ships an optional, cookieless web-analytics service (from 1.1.0). It is a standalone bundle — not part of `dist/baseui.min.js`/`baseui.esm.js`, with no Owl, Bootstrap, or component runtime dependency (~5.6 KB minified) — so you can load it with or without the rest of the Base UI. Nothing is collected until the page calls `init()`:
62
62
 
63
63
  ```html
64
64
  <script type="module">
@@ -68,20 +68,35 @@ BaseUI also ships an optional, cookieless web-analytics service (from 1.1.0). It
68
68
  </script>
69
69
  ```
70
70
 
71
- From npm, use `import { init, track } from "@thebase/ui/analytics"`; for a classic `<script>` tag, `dist/baseui.analytics.min.js` sets `window.thebase.analytics`. It covers automatic and SPA pageviews, engagement (time on page and scroll depth), outbound links, file downloads, form submissions, and `thebase-event-*` class tagging. See [Analytics](docs/analytics.md) for every option, the payload format, opt-out, and sample Go Fiber / FastAPI backends. [`examples/analytics/`](examples/analytics/) holds a ready-to-run BaseUI dashboard for the collected data.
71
+ From npm, use `import { init, track } from "@thebase/ui/analytics"`; for a classic `<script>` tag, `dist/baseui.analytics.min.js` sets `window.thebase.analytics`. It covers automatic and SPA pageviews, engagement (time on page and scroll depth), outbound links, file downloads, form submissions, and `thebase-event-*` class tagging. See [Analytics](docs/analytics.md) for every option, the payload format, opt-out, and sample Go Fiber / FastAPI backends. [`examples/analytics/`](examples/analytics/) holds a ready-to-run the Base UI dashboard for the collected data.
72
+
73
+ ## PWA toolkit and CLI
74
+
75
+ The Base UI can scaffold and ship installable apps (from 1.1.2). The `create-baseui-app` CLI creates a static-importmap or Vite project (`create`, `init`, `convert`) and generates `manifest.webmanifest`, `sw.js` and a default icon set (`pwa`, icons from 1.1.3); the same generators are exported from `@thebase/ui/pwa` as `buildManifest` / `buildServiceWorker`.
76
+
77
+ ```sh
78
+ npx create-baseui-app create my-app
79
+ npx create-baseui-app pwa . --config baseui.pwa.config.js
80
+ ```
81
+
82
+ See [Usage Guide §5b](docs/usage-guide.md) and the [PWA component](docs/components/pwa.md). The examples site itself is an installable PWA (`examples/pwa/`).
83
+
84
+ ## ApiDoc
85
+
86
+ New in 1.1.3: `ApiDoc` (`b-ui="apidoc"`) renders an OpenAPI 3 JSON file as browsable API docs — grouped sidebar, parameters, request bodies, responses, a Try It panel with code samples in 17 languages, and an Authorize dialog. See [ApiDoc](docs/components/apidoc.md), the `apidoc-01` block, and the live demo in [`examples/apidoc/`](examples/apidoc/).
72
87
 
73
88
  ## Release notes
74
89
 
75
- See [CHANGELOG.md](CHANGELOG.md) for the full version history. Current version: **1.1.1**.
90
+ See [CHANGELOG.md](CHANGELOG.md) for the full version history. Current version: **1.1.3**.
76
91
 
77
92
  ## Versioning policy
78
93
 
79
- From 1.0.0 on, BaseUI follows [Semantic Versioning](https://semver.org/). The public API covered by this promise is:
94
+ From 1.0.0 on, the Base UI follows [Semantic Versioning](https://semver.org/). The public API covered by this promise is:
80
95
 
81
- - Pure Owl component classes, their names, props, slots, and callback props exported from `@thebase/ui`.
96
+ - Base component classes, their names, props, slots, and callback props exported from `@thebase/ui`.
82
97
  - Static markup: `b-ui`/`b-icon` names, `b-att-*` attributes, and `baseui:*` events.
83
98
  - CSS: `bu-*` class names and `--b-*` design tokens.
84
- - Runtime exports (`BaseUI`, `Component`, `mount`, `xml`, `cn`, `mergeStyle`, theme helpers), including `Component`'s fallback to globally registered BaseUI components, and the published `dist/` file names and package `exports` paths.
99
+ - Runtime exports (`BaseUI`, `Component`, `mount`, `xml`, `cn`, `mergeStyle`, theme helpers), including `Component`'s fallback to globally registered the Base UI components, and the published `dist/` file names and package `exports` paths.
85
100
 
86
101
  What each release type means:
87
102
 
@@ -91,13 +106,13 @@ What each release type means:
91
106
 
92
107
  Anything prefixed `_`, undocumented internals, and the `docs/`/`examples/` sources are not part of the public API. Neither are the source-level authoring helpers described in [Component Authoring](docs/component-authoring.md) (`optional()`, `slotProps`, the `open-state.js` hooks, `bindBootstrapOverlay()`): they aren't exported from the package and may change in any release. Deprecated APIs keep working until the next major and are flagged in the CHANGELOG first.
93
108
 
94
- Pinning: use an exact version (`@1.1.1`) when you need byte-identical output, or the major range (`@1` on jsDelivr/unpkg, `^1.0.0` in npm) to receive fixes and features without breaking changes. Avoid `@latest` in production — it will move to the next major.
109
+ Pinning: use an exact version (`@1.1.3`) when you need byte-identical output, or the major range (`@1` on jsDelivr/unpkg, `^1.0.0` in npm) to receive fixes and features without breaking changes. Avoid `@latest` in production — it will move to the next major.
95
110
 
96
111
  ## Project Documents
97
112
 
98
113
  Use these documents as the canonical project map:
99
114
 
100
- - [Usage Guide](docs/usage-guide.md) is the single entry point for integrating BaseUI into a consumer project — start here, then follow its links into the reference docs below.
115
+ - [Usage Guide](docs/usage-guide.md) is the single entry point for integrating the Base UI into a consumer project — start here, then follow its links into the reference docs below.
101
116
  - [Installation](docs/installation.md) covers CDN, npm, self-hosted usage, icon assets, pinned versions, and release guardrails.
102
117
  - [Analytics](docs/analytics.md) documents the optional, standalone cookieless analytics service (`@thebase/ui/analytics`).
103
118
  - [Runtime API](docs/runtime-api.md) documents the `window.thebase` global, mounting lifecycle, theming API, and destroy behavior.
@@ -105,10 +120,10 @@ Use these documents as the canonical project map:
105
120
  - [Theming](docs/theming.md) describes `b-theme`, runtime theme overrides, shadcn-aligned tokens, Bootstrap variable mapping, and shared example theme persistence.
106
121
  - [Built-in Icons](docs/icons.md) covers the Lucide icon library, `b-icon` markup, accessibility rules, self-hosted icon paths, and JavaScript helpers.
107
122
  - [Component Authoring](docs/component-authoring.md) defines the `src/components/<name>/` source contract, component registration rules, event naming, cleanup requirements, and CSS scoping policy. Repo-only — not published to npm (see below).
108
- - [Pure Owl Components](docs/owl-components.md) covers the pure Owl component API (`@thebase/ui` + `dist/baseui.templates.xml`), what to load, and common mistakes.
123
+ - [Base Components](docs/owl-components.md) covers the Base component API (`@thebase/ui` + `dist/baseui.templates.xml`), what to load, and common mistakes.
109
124
  - [Blocks](docs/blocks.md) documents copyable static shadcn-style blocks, source stylesheet ownership under `examples/blocks/`, gallery/viewer URLs, and block icon rules.
110
125
  - [Component Reference](docs/components/button.md) starts the per-component documentation set in `docs/components/`; each component page includes usage, attributes, events, accessibility notes, and test guidance where relevant.
111
- - [Frontend Implementation Plan](.agents/planning/2026-08-11-frontend-baseui-bootstrap-owl-implementation-plan.md) records the completed BaseUI 1.0.0 delivery checklist and earlier decisions for engineering context.
126
+ - [Frontend Implementation Plan](.agents/planning/2026-08-11-frontend-baseui-bootstrap-owl-implementation-plan.md) records the completed the Base UI 1.0.0 delivery checklist and earlier decisions for engineering context.
112
127
  - [Historical Product Plan](.agents/knowledge/baseUI/2026-08-11-baseui-bootstrap-owl-plan.md) preserves the original Bootstrap 5 + Owl product brief; use current `docs/` and registry files when they disagree with older planning assumptions.
113
128
 
114
129
  The links above work as-is when browsing this repo. `docs/*.md` and `docs/components/` also ship inside the published npm package (see `files` in `package.json`), so the same docs are reachable straight from a CDN without cloning the repo — no HTML rendering, just the raw Markdown source:
@@ -119,7 +134,7 @@ https://unpkg.com/@thebase/ui@latest/docs/components/button.md
119
134
  https://cdn.jsdelivr.net/npm/@thebase/ui@latest/docs/usage-guide.md
120
135
  ```
121
136
 
122
- Drop the version (`@thebase/ui/docs/...`) to always resolve to latest, or pin a version the way the rest of this README recommends pinning `dist/` assets. `docs/v2/` (the vendored general Owl framework reference) and `docs/component-authoring.md` (BaseUI's own component-authoring contract) are intentionally **not** published — they're development-time references for working inside this repo, not something a consumer needs to use the library.
137
+ Drop the version (`@thebase/ui/docs/...`) to always resolve to latest, or pin a version the way the rest of this README recommends pinning `dist/` assets. `docs/v2/` (the vendored general Owl framework reference) and `docs/component-authoring.md` (the Base UI's own component-authoring contract) are intentionally **not** published — they're development-time references for working inside this repo, not something a consumer needs to use the library.
123
138
 
124
139
  ## Development
125
140
 
@@ -129,11 +144,11 @@ npm run build
129
144
  npm run dev
130
145
  ```
131
146
 
132
- Open `examples/index.html` through the dev server to test the browser build.
147
+ Open `examples/index.html` through the dev server to test the browser build. Standalone demos: `examples/apidoc/` (ApiDoc with a Petstore spec), `examples/analytics/` (dashboard + Go/FastAPI backends), and `momo_demo/` (static `b-ui` business-admin page).
133
148
 
134
- `examples/index.html` is the single Owl app shell for docs, the component gallery, the block gallery, icons, and the chart catalog, all reachable through one `main-nav` and hash routes (`#/docs`, `#/components`, `#/blocks`, `#/icons`, `#/chart`). Old bookmarked URLs like `/docs` and `/blocks` redirect to their hash-route equivalent. Each block has a shadcn-style Preview/Code/responsive viewer plus its source stylesheet colocated in `examples/blocks/`. `examples/charts/index.html` mirrors the current shadcn chart catalog with interactive BaseUI examples for area, bar, line, pie, radar, radial, and tooltip charts, and is embedded inline at `#/chart`.
149
+ `examples/index.html` is the single application shell for docs, the component gallery, the block gallery, icons, and the chart catalog, all reachable through one `main-nav` and hash routes (`#/docs`, `#/components`, `#/blocks`, `#/icons`, `#/chart`). Old bookmarked URLs like `/docs` and `/blocks` redirect to their hash-route equivalent. Each block has a shadcn-style Preview/Code/responsive viewer plus its source stylesheet colocated in `examples/blocks/`. `examples/charts/index.html` mirrors the current shadcn chart catalog with interactive the Base UI examples for area, bar, line, pie, radar, radial, and tooltip charts, and is embedded inline at `#/chart`.
135
150
 
136
- BaseUI includes the full Lucide SVG icon set as a built-in icon library. Use `<span b-icon="search"></span>` in HTML, or `thebase.icons.lucide.url("search")` from JavaScript. Builds publish all SVGs to `dist/icons/lucide/` and an index at `dist/icons/lucide.json`.
151
+ The Base UI includes the full Lucide SVG icon set as a built-in icon library. Use `<span b-icon="search"></span>` in HTML, or `thebase.icons.lucide.url("search")` from JavaScript. Builds publish all SVGs to `dist/icons/lucide/` and an index at `dist/icons/lucide.json`.
137
152
 
138
153
  ## Package Scripts
139
154
 
@@ -145,6 +160,6 @@ BaseUI includes the full Lucide SVG icon set as a built-in icon library. Use `<s
145
160
 
146
161
  ## Distribution
147
162
 
148
- The npm package publishes the built `dist/` artifacts plus package metadata. The browser build bundles Bootstrap CSS, and `dist/baseui.min.js`/`baseui.esm.js` embed Bootstrap's JS bundle, the Owl runtime, every pure Owl component class, and the theme helper directly (Bootstrap then Owl then BaseUI, in that load order) — consumers install BaseUI with one stylesheet and one script tag for either API. Bootstrap's JS drives every component that has a Bootstrap JS equivalent (modal, dropdown, collapse, tab, toast, carousel, tooltip, popover, alert); BaseUI's `.behavior.js`/`runtime/*.js` helpers wrap Bootstrap's JS API instead of reimplementing it, for both the static and pure-Owl APIs. `dist/bootstrap.bundle.min.js` also ships standalone (unmodified) and `dist/baseui.icons.esm.js` stays a separate, deliberate exception (2000+ generated icon components would blow the main bundle's size budget), as does the opt-in analytics service (`dist/baseui.analytics.esm.js`/`.min.js`, so pages that don't track pay nothing for it) — everything else is one file. Every shipped CSS/JS artifact is minified — there are no unminified twins to keep in sync.
163
+ The npm package publishes the built `dist/` artifacts plus package metadata. The browser build bundles Bootstrap CSS, and `dist/baseui.min.js`/`baseui.esm.js` embed Bootstrap's JS bundle, the Owl runtime, every Base component class, and the theme helper directly (Bootstrap then Owl then the Base UI, in that load order) — consumers install the Base UI with one stylesheet and one script tag for either API. Bootstrap's JS drives every component that has a Bootstrap JS equivalent (modal, dropdown, collapse, tab, toast, carousel, tooltip, popover, alert); the Base UI's `.behavior.js`/`runtime/*.js` helpers wrap Bootstrap's JS API instead of reimplementing it, for both the static and pure Base APIs. `dist/bootstrap.bundle.min.js` also ships standalone (unmodified) and `dist/baseui.icons.esm.js` stays a separate, deliberate exception (2000+ generated icon components would blow the main bundle's size budget), as do the ApiDoc language logos (`dist/apidoc/img/`, loaded on demand) and the opt-in analytics service (`dist/baseui.analytics.esm.js`/`.min.js`, so pages that don't track pay nothing for it) — everything else is one file. Every shipped CSS/JS artifact is minified — there are no unminified twins to keep in sync.
149
164
 
150
165
  The published tarball also carries `docs/*.md` and `docs/components/` (see the "Project Documents" section above), `README.md`, `CHANGELOG.md`, and `LICENSE` — `docs/v2/` and `docs/component-authoring.md` are deliberately excluded from `package.json`'s `files` list since they're development-time-only references for working inside this repo.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
3
3
  import { spawnSync } from "node:child_process";
4
4
  import path from "node:path";
5
5
  import { pathToFileURL } from "node:url";
@@ -26,7 +26,7 @@ function toTitle(appName) {
26
26
  .join(" ");
27
27
  }
28
28
 
29
- /** Builds the fixed set of Vite + BaseUI scaffold files for a project named `appName`. */
29
+ /** Builds the fixed set of Vite + the Base UI scaffold files for a project named `appName`. */
30
30
  function buildTemplateFiles(appName, baseuiVersion) {
31
31
  const title = toTitle(appName);
32
32
 
@@ -136,7 +136,7 @@ export class App extends Component {
136
136
 
137
137
  "README.md": `# ${title}
138
138
 
139
- Scaffolded with \`@thebase/ui\`'s CLI (Vite + BaseUI, pure Owl API).
139
+ Scaffolded with \`@thebase/ui\`'s CLI (Vite + BaseUI, pure Base API).
140
140
 
141
141
  \`\`\`sh
142
142
  npm install
@@ -176,7 +176,7 @@ await mountPage(${componentName}, pageTemplates);
176
176
  `;
177
177
  }
178
178
 
179
- /** Builds a 4-page Vite + BaseUI starter (landing, login, signup, an authenticated home shell) for a
179
+ /** Builds a 4-page Vite + the Base UI starter (landing, login, signup, an authenticated home shell) for a
180
180
  * project named `appName` — each page is its own Owl root mounted by its own HTML entry, composed
181
181
  * from the same blocks as `examples/blocks/login-03.html`, `signup-03.html` and `sidebar-02.html`. */
182
182
  function buildStarterFiles(appName, baseuiVersion) {
@@ -280,7 +280,7 @@ export class Landing extends Component {
280
280
  <section class="container py-5 text-center">
281
281
  <h1 class="display-5 fw-bold mb-3">Build faster with ${title}</h1>
282
282
  <p class="lead text-muted mx-auto mb-4" style="max-width: 40rem">
283
- A starter scaffold wired up with BaseUI — pure Owl components, Bootstrap styling, and the pages you need to ship day one.
283
+ A starter scaffold wired up with BaseUI — Base components, Bootstrap styling, and the pages you need to ship day one.
284
284
  </p>
285
285
  <div class="d-flex justify-content-center gap-3">
286
286
  <Button icon="'rocket'" onClick="() => window.location.assign('/signup.html')">Get started</Button>
@@ -304,7 +304,7 @@ export class Landing extends Component {
304
304
  </div>
305
305
  <div class="col-12 col-md-4">
306
306
  <Card className="'h-100'">
307
- <CardHeader className="'d-flex align-items-center gap-2'"><Icon name="'component'"/><CardTitle>Pure Owl components</CardTitle></CardHeader>
307
+ <CardHeader className="'d-flex align-items-center gap-2'"><Icon name="'component'"/><CardTitle>Base components</CardTitle></CardHeader>
308
308
  <CardBody>Every page composes real BaseUI components — swap or extend without fighting the markup.</CardBody>
309
309
  </Card>
310
310
  </div>
@@ -497,7 +497,7 @@ export class Home extends Component {
497
497
 
498
498
  "README.md": `# ${title}
499
499
 
500
- Scaffolded with \`@thebase/ui\`'s CLI (\`create-baseui-app init\`): Vite + BaseUI, pure Owl API, 4 pages.
500
+ Scaffolded with \`@thebase/ui\`'s CLI (\`create-baseui-app init\`): Vite + BaseUI, pure Base API, 4 pages.
501
501
 
502
502
  - \`/\` — landing page (header, hero, features, footer)
503
503
  - \`/login.html\` — login (redirects to \`/home.html\` on submit)
@@ -672,7 +672,7 @@ async function cmdPwa(argv) {
672
672
  }
673
673
 
674
674
  const { manifest, serviceWorker } = (await import(pathToFileURL(configPath).href)).default;
675
- const { buildManifest, buildServiceWorker } = await import("../dist/baseui.pwa.esm.js");
675
+ const { buildManifest, buildServiceWorker, DEFAULT_ICON_FILES } = await import("../dist/baseui.pwa.esm.js");
676
676
 
677
677
  writeFileSync(
678
678
  path.join(targetDir, "manifest.webmanifest"),
@@ -680,9 +680,21 @@ async function cmdPwa(argv) {
680
680
  );
681
681
  writeFileSync(path.join(targetDir, "sw.js"), buildServiceWorker(serviceWorker));
682
682
 
683
+ copyDefaultIcons(path.join(targetDir, "icons"), DEFAULT_ICON_FILES);
684
+
683
685
  console.log(`Wrote manifest.webmanifest and sw.js in ${targetDir}`);
684
686
  }
685
687
 
688
+ /** Gives a PWA the default the Base UI logo/favicon set, without replacing any icon the app already has. */
689
+ function copyDefaultIcons(iconsDir, files) {
690
+ mkdirSync(iconsDir, { recursive: true });
691
+ const source = new URL("../dist/pwa-icons/", import.meta.url);
692
+ for (const file of files) {
693
+ const target = path.join(iconsDir, file);
694
+ if (!existsSync(target)) copyFileSync(new URL(file, source), target);
695
+ }
696
+ }
697
+
686
698
  function printHelp() {
687
699
  console.log(`@thebase/ui project CLI
688
700
 
@@ -703,6 +715,7 @@ Usage:
703
715
  create-baseui-app pwa [path] [--config <file>]
704
716
  Generate manifest.webmanifest + sw.js in [path] (default ".") from a
705
717
  baseui.pwa.config.js config file (default name, override with --config).
718
+ Also copies the default logo/favicon set into [path]/icons/ (existing files kept).
706
719
  `);
707
720
  }
708
721
 
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#293138" d="M112.205 26.129 71.8 2.142A15.326 15.326 0 0 0 64.005 0c-2.688 0-5.386.717-7.796 2.152L15.795 26.14C10.976 28.999 8 34.289 8 40.018v47.975c0 5.729 2.967 11.019 7.796 13.878L56.2 125.858A15.193 15.193 0 0 0 63.995 128a15.32 15.32 0 0 0 7.796-2.142l40.414-23.987c4.819-2.86 7.796-8.16 7.796-13.878V40.007c0-5.718-2.967-11.019-7.796-13.878zm-31.29 74.907.063 3.448c0 .418-.267.889-.588 1.06l-2.046 1.178c-.321.16-.6-.032-.6-.45l-.032-3.394c-1.745.728-3.523.9-4.647.45-.214-.086-.31-.397-.225-.761l.739-3.116c.064-.246.193-.493.364-.643a.725.725 0 0 1 .193-.139c.117-.064.235-.075.332-.032 1.22.407 2.773.214 4.272-.535 1.907-.964 3.18-2.913 3.16-4.84-.022-1.757-.964-2.474-3.267-2.496-2.934.01-5.675-.567-5.718-4.894-.032-3.555 1.81-7.26 4.744-9.595l-.032-3.48c0-.428.257-.9.589-1.07l1.98-1.264c.322-.161.6.043.6.46l.033 3.48c1.456-.578 2.72-.738 3.865-.47.247.064.364.406.257.802l-.77 3.084a1.372 1.372 0 0 1-.354.622.825.825 0 0 1-.203.15c-.108.053-.204.064-.3.053-.525-.118-1.767-.385-3.727.6-2.056 1.038-2.773 2.827-2.763 4.155.022 1.585.825 2.066 3.63 2.11 3.738.064 5.344 1.691 5.387 5.45.053 3.684-1.917 7.657-4.937 10.077zm21.18-5.794c0 .322-.042.621-.31.771l-10.216 6.211c-.267.161-.482.022-.482-.3V99.29c0-.321.193-.492.46-.653l10.067-6.018c.268-.16.482-.022.482.3zm7.026-58.993L70.89 59.86c-4.765 2.784-8.278 5.911-8.288 11.662v47.107c0 3.437 1.392 5.665 3.523 6.318a12.81 12.81 0 0 1-2.12.204c-2.239 0-4.445-.61-6.383-1.757L17.219 99.408c-3.951-2.345-6.403-6.725-6.403-11.426V40.007c0-4.7 2.452-9.08 6.403-11.426L57.634 4.594a12.555 12.555 0 0 1 6.382-1.756c2.238 0 4.444.61 6.382 1.756l40.415 23.987c3.33 1.981 5.579 5.397 6.21 9.242-1.36-2.86-4.38-3.63-7.902-1.574z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#a9bacd" d="M125 50c-4-32-24-50-62-50C29 0 3 24 3 64c0 39 24 64 64 64 32 0 55-19 58-50H87c-2 11-8 20-20 20-21 0-24-16-24-33 0-23 8-35 22-35 13 0 20 7 22 20z" /></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#9B4F96" d="M115.4 30.7L67.1 2.9c-.8-.5-1.9-.7-3.1-.7-1.2 0-2.3.3-3.1.7l-48 27.9c-1.7 1-2.9 3.5-2.9 5.4v55.7c0 1.1.2 2.4 1 3.5l106.8-62c-.6-1.2-1.5-2.1-2.4-2.7z"/><path fill="#68217A" d="M10.7 95.3c.5.8 1.2 1.5 1.9 1.9l48.2 27.9c.8.5 1.9.7 3.1.7 1.2 0 2.3-.3 3.1-.7l48-27.9c1.7-1 2.9-3.5 2.9-5.4V36.1c0-.9-.1-1.9-.6-2.8l-106.6 62z"/><path fill="#fff" d="M85.3 76.1C81.1 83.5 73.1 88.5 64 88.5c-13.5 0-24.5-11-24.5-24.5s11-24.5 24.5-24.5c9.1 0 17.1 5 21.3 12.5l13-7.5c-6.8-11.9-19.6-20-34.3-20-21.8 0-39.5 17.7-39.5 39.5s17.7 39.5 39.5 39.5c14.6 0 27.4-8 34.2-19.8l-12.9-7.6zM97 66.2l.9-4.3h-4.2v-4.7h5.1L100 51h4.9l-1.2 6.1h3.8l1.2-6.1h4.8l-1.2 6.1h2.4v4.7h-3.3l-.9 4.3h4.2v4.7h-5.1l-1.2 6h-4.9l1.2-6h-3.8l-1.2 6h-4.8l1.2-6h-2.4v-4.7H97zm4.8 0h3.8l.9-4.3h-3.8l-.9 4.3z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#00c4b3" d="M35.2 34.9l-8.3-8.3v59.7l.1 2.8c0 1.3.2 2.8.7 4.3l65.6 23.1 16.3-7.2-74.4-74.4z"/><path d="M27.7 93.4zm81.9 15.9l-16.3 7.2-65.4-23.1c1.3 4.8 4 10.1 7 13.2l21.3 21.2 47.6.1 5.8-18.6z" fill="#22d3c5"/><path fill="#0075c9" d="M1.7 65.1C-.4 67.3.7 72 4 75.5l14.7 14.8 9.2 3.3c-.3-1.5-.7-3-.7-4.3l-.1-2.8-.2-59.8m82.7 82.6l7.2-16.4-23-65.6c-1.5-.3-3-.6-4.3-.7l-2.9-.1-59.6.1"/><path d="M93.6 27.3c.2 0 .2 0 0 0 .2 0 .2 0 0 0zm16 82l17.7-5.8V54.8l-20.4-20.5c-3-3-8.3-5.8-13.2-7l23.1 65.6" fill="#00a8e1"/><path fill="#00c4b3" d="M90.5 18.2L75.7 3.5c-3.4-3.4-8-4.4-10.4-2.3L26.9 26.6h59.5l2.9.1c1.3 0 2.8.2 4.3.7l-3.1-9.2z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><g fill="#00acd7" fill-rule="evenodd"><path d="M11.156 54.829c-.243 0-.303-.122-.182-.303l1.273-1.637c.12-.182.424-.303.666-.303H34.55c.243 0 .303.182.182.364l-1.03 1.576c-.121.181-.424.363-.606.363zM2.004 60.404c-.242 0-.303-.12-.182-.303l1.273-1.636c.121-.182.424-.303.667-.303h27.636c.242 0 .364.182.303.364l-.485 1.454c-.06.243-.303.364-.545.364zM16.67 65.98c-.242 0-.302-.182-.181-.364l.848-1.515c.122-.182.364-.363.607-.363h12.12c.243 0 .364.181.364.424l-.12 1.454c0 .243-.243.425-.425.425zM79.58 53.738c-3.819.97-6.425 1.697-10.182 2.666-.91.243-.97.303-1.758-.606-.909-1.03-1.576-1.697-2.848-2.303-3.819-1.878-7.516-1.333-10.97.91-4.121 2.666-6.242 6.605-6.182 11.514.06 4.849 3.394 8.849 8.182 9.516 4.121.545 7.576-.91 10.303-4 .545-.667 1.03-1.394 1.636-2.243H56.064c-1.272 0-1.575-.788-1.151-1.818.788-1.879 2.242-5.03 3.09-6.606.183-.364.607-.97 1.516-.97h22.06c-.12 1.637-.12 3.273-.363 4.91-.667 4.363-2.303 8.363-4.97 11.878-4.364 5.758-10.06 9.333-17.273 10.303-5.939.788-11.454-.364-16.302-4-4.485-3.394-7.03-7.879-7.697-13.454-.788-6.606 1.151-12.546 5.151-17.758 4.303-5.636 10-9.212 16.97-10.485 5.697-1.03 11.151-.363 16.06 2.97 3.212 2.121 5.515 5.03 7.03 8.545.364.546.122.849-.606 1.03z"/><path d="M99.64 87.253c-5.515-.122-10.546-1.697-14.788-5.334-3.576-3.09-5.818-7.03-6.545-11.697-1.091-6.848.787-12.909 4.909-18.302 4.424-5.819 9.757-8.849 16.97-10.122 6.181-1.09 12-.484 17.272 3.091 4.788 3.273 7.757 7.697 8.545 13.515 1.03 8.182-1.333 14.849-6.97 20.546-4 4.06-8.909 6.606-14.545 7.757-1.636.303-3.273.364-4.848.546zm14.424-24.485c-.06-.788-.06-1.394-.182-2-1.09-6-6.606-9.394-12.363-8.06-5.637 1.272-9.273 4.848-10.606 10.545-1.091 4.727 1.212 9.515 5.575 11.454 3.334 1.455 6.667 1.273 9.879-.363 4.788-2.485 7.394-6.364 7.697-11.576z" fill-rule="nonzero"/></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#0074BD" d="M47.617 98.12s-4.767 2.774 3.397 3.71c9.892 1.13 14.947.968 25.845-1.092 0 0 2.871 1.795 6.873 3.351-24.439 10.47-55.308-.607-36.115-5.969zm-2.988-13.665s-5.348 3.959 2.823 4.805c10.567 1.091 18.91 1.18 33.354-1.6 0 0 1.993 2.025 5.132 3.131-29.542 8.64-62.446.68-41.309-6.336z"/><path fill="#EA2D2E" d="M69.802 61.271c6.025 6.935-1.58 13.17-1.58 13.17s15.289-7.891 8.269-17.777c-6.559-9.215-11.587-13.792 15.635-29.58 0 .001-42.731 10.67-22.324 34.187z"/><path fill="#0074BD" d="M102.123 108.229s3.529 2.91-3.888 5.159c-14.102 4.272-58.706 5.56-71.094.171-4.451-1.938 3.899-4.625 6.526-5.192 2.739-.593 4.303-.485 4.303-.485-4.953-3.487-32.013 6.85-13.743 9.815 49.821 8.076 90.817-3.637 77.896-9.468zM49.912 70.294s-22.686 5.389-8.033 7.348c6.188.828 18.518.638 30.011-.326 9.39-.789 18.813-2.474 18.813-2.474s-3.308 1.419-5.704 3.053c-23.042 6.061-67.544 3.238-54.731-2.958 10.832-5.239 19.644-4.643 19.644-4.643zm40.697 22.747c23.421-12.167 12.591-23.86 5.032-22.285-1.848.385-2.677.72-2.677.72s.688-1.079 2-1.543c14.953-5.255 26.451 15.503-4.823 23.725 0-.002.359-.327.468-.617z"/><path fill="#EA2D2E" d="M76.491 1.587S89.459 14.563 64.188 34.51c-20.266 16.006-4.621 25.13-.007 35.559-11.831-10.673-20.509-20.07-14.688-28.815C58.041 28.42 81.722 22.195 76.491 1.587z"/><path fill="#0074BD" d="M52.214 126.021c22.476 1.437 57-.8 57.817-11.436 0 0-1.571 4.032-18.577 7.231-19.186 3.612-42.854 3.191-56.887.874 0 .001 2.875 2.381 17.647 3.331z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#F0DB4F" d="M1.408 1.408h125.184v125.185H1.408z"/><path fill="#323330" d="M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z"/></svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
2
+ <defs>
3
+ <linearGradient id="a" x1="500.003" x2="-.097" y1="579.106" y2="1079.206" gradientTransform="translate(15.534 -96.774) scale(.1939)" gradientUnits="userSpaceOnUse">
4
+ <stop offset=".003" stop-color="#e44857"/>
5
+ <stop offset=".469" stop-color="#c711e1"/>
6
+ <stop offset="1" stop-color="#7f52ff"/>
7
+ </linearGradient>
8
+ </defs>
9
+ <path fill="url(#a)" d="M112.484 112.484H15.516V15.516h96.968L64 64Zm0 0"/>
10
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 255.845 255.842">
2
+ <path fill="#00007d" d="M225.768 127.94c0-54.024-43.845-97.869-97.869-97.869-54.023 0-97.869 43.845-97.869 97.87 0 54.023 43.846 97.868 97.87 97.868 54.023 0 97.868-43.845 97.868-97.869"/>
3
+ <path fill="#fff" d="M197.114 87.391c0-15.823-12.842-28.665-28.665-28.665-15.824 0-28.666 12.842-28.666 28.665 0 15.823 12.842 28.665 28.666 28.665 15.823 0 28.665-12.842 28.665-28.665"/>
4
+ <path fill="#00007d" d="M254.434 30.07c0-15.822-12.842-28.664-28.665-28.664-15.823 0-28.665 12.842-28.665 28.665 0 15.823 12.842 28.665 28.665 28.665 15.823 0 28.665-12.842 28.665-28.665"/>
5
+ <path fill="#fff" d="M61.169 113.673h8.558v55.653h31.698v7.526H61.169v-63.18M116.865 130.79v30.58c0 2.35.363 4.272 1.09 5.763 1.34 2.752 3.839 4.129 7.497 4.129 5.25 0 8.824-2.41 10.723-7.226 1.033-2.58 1.55-6.121 1.55-10.623V130.79h7.74v46.062h-7.31l.086-6.795c-.986 1.75-2.21 3.226-3.674 4.43-2.898 2.409-6.414 3.613-10.55 3.613-6.443 0-10.832-2.194-13.167-6.58-1.266-2.351-1.899-5.49-1.899-9.42v-31.31h7.914M182.798 148.976c1.778-.228 2.968-.973 3.57-2.232.343-.691.516-1.684.516-2.98 0-2.647-.938-4.568-2.812-5.763-1.875-1.194-4.557-1.792-8.048-1.792-4.034 0-6.896 1.095-8.585 3.285-.944 1.211-1.559 3.012-1.845 5.403h-7.225c.143-5.693 1.983-9.654 5.52-11.883 3.536-2.228 7.639-3.342 12.307-3.342 5.412 0 9.808 1.032 13.188 3.097 3.35 2.064 5.026 5.276 5.026 9.634v26.538c0 .803.165 1.448.495 1.935.329.486 1.024.73 2.086.73.344 0 .73-.022 1.16-.065.43-.043.89-.107 1.377-.193v5.72c-1.204.344-2.122.559-2.752.645-.631.086-1.492.129-2.58.129-2.667 0-4.603-.946-5.807-2.838-.631-1.003-1.075-2.423-1.334-4.257-1.577 2.064-3.842 3.856-6.795 5.375-2.953 1.519-6.208 2.279-9.763 2.279-4.273 0-7.763-1.296-10.472-3.888-2.71-2.591-4.065-5.834-4.065-9.729 0-4.267 1.333-7.574 4-9.922 2.667-2.348 6.164-3.795 10.494-4.34l12.344-1.546zm-16.3 20.914c1.634 1.287 3.569 1.93 5.806 1.93 2.723 0 5.36-.63 7.913-1.888 4.3-2.09 6.451-5.511 6.451-10.263v-6.227c-.944.605-2.16 1.108-3.648 1.51-1.488.404-2.947.69-4.378.862l-4.679.601c-2.804.373-4.913.96-6.326 1.76-2.395 1.345-3.591 3.49-3.591 6.437 0 2.231.817 3.99 2.451 5.278z"/>
6
+ <path fill="#929292" d="m132.45 255.842-.102-2.935c3.63-.126 7.288-.412 10.874-.85l.356 2.914c-3.67.448-7.414.741-11.127.871zm-11.16-.09a129.13 129.13 0 0 1-11.112-1.053l.403-2.909c3.582.498 7.236.844 10.858 1.029zm33.299-2.618-.61-2.872c3.545-.752 7.097-1.67 10.558-2.73l.86 2.808a127.516 127.516 0 0 1-10.808 2.794zm-55.39-.453c-3.613-.83-7.233-1.83-10.761-2.974l.905-2.793a124.63 124.63 0 0 0 10.512 2.905zm76.72-6.075-1.103-2.72a124.905 124.905 0 0 0 9.916-4.534l1.336 2.615a127.93 127.93 0 0 1-10.15 4.64zm-97.945-.808a128.1 128.1 0 0 1-10.08-4.812l1.38-2.592c3.201 1.704 6.514 3.286 9.848 4.7zm117.802-9.341-1.56-2.488a126.271 126.271 0 0 0 8.982-6.19l1.77 2.344a129.22 129.22 0 0 1-9.192 6.334zm-137.5-1.143a129.107 129.107 0 0 1-9.088-6.487l1.808-2.314a126.012 126.012 0 0 0 8.88 6.34zm155.3-12.3-1.966-2.18c2.691-2.427 5.309-5 7.779-7.648l2.148 2.002a129.597 129.597 0 0 1-7.962 7.827zm-172.879-1.438a129.437 129.437 0 0 1-7.83-7.957l2.18-1.967a126.536 126.536 0 0 0 7.652 7.776zm188.093-14.875-2.312-1.809a126.198 126.198 0 0 0 6.343-8.877l2.461 1.601a128.971 128.971 0 0 1-6.492 9.085zm-203.036-1.687a128.8 128.8 0 0 1-6.338-9.188l2.487-1.56a125.953 125.953 0 0 0 6.193 8.977zM240.96 188l-2.592-1.38c1.706-3.201 3.289-6.513 4.705-9.846l2.703 1.15A128.24 128.24 0 0 1 240.96 188zm-227.058-1.878a128.078 128.078 0 0 1-4.645-10.148l2.72-1.104a124.897 124.897 0 0 0 4.538 9.914zm235.788-18.66-2.792-.908a124.597 124.597 0 0 0 2.91-10.51l2.861.658a127.588 127.588 0 0 1-2.979 10.76zM5.518 165.453a127.414 127.414 0 0 1-2.8-10.807l2.872-.611a124.604 124.604 0 0 0 2.735 10.557zm249.175-19.73-2.908-.405c.499-3.581.847-7.234 1.033-10.857l2.933.151a129.047 129.047 0 0 1-1.058 11.11zM.876 143.637A129.35 129.35 0 0 1 0 132.51l2.934-.103c.128 3.627.416 7.285.856 10.873zm252.035-20.084a125.48 125.48 0 0 0-.856-10.877l2.914-.358c.452 3.682.747 7.427.876 11.132zM3.017 121.498l-2.932-.149c.188-3.708.54-7.446 1.047-11.112l2.909.402c-.496 3.582-.84 7.235-1.024 10.859zm247.237-19.582a125.61 125.61 0 0 0-2.732-10.563l2.808-.859a128.518 128.518 0 0 1 2.796 10.811zM6.007 99.912l-2.862-.655a127.484 127.484 0 0 1 2.968-10.762l2.793.904a124.54 124.54 0 0 0-2.9 10.513zM243.88 81.068c-1.358-3.36-2.88-6.7-4.525-9.928l2.616-1.333a128.637 128.637 0 0 1 4.63 10.161zM12.72 79.175l-2.703-1.146a127.956 127.956 0 0 1 4.806-10.081l2.592 1.378a125.062 125.062 0 0 0-4.695 9.85zm10.233-19.25-2.462-1.6a129.05 129.05 0 0 1 6.483-9.09l2.314 1.806a126.246 126.246 0 0 0-6.335 8.884zM36.37 42.74l-2.15-2a129.429 129.429 0 0 1 7.954-7.835l1.968 2.179a126.539 126.539 0 0 0-7.772 7.656zm16.177-14.61-1.772-2.341a128.99 128.99 0 0 1 9.185-6.343l1.562 2.486a125.92 125.92 0 0 0-8.975 6.198zm143.494-5.1-.161-.103 1.597-2.464.155.1zm-9.568-5.626a125.705 125.705 0 0 0-9.854-4.682l1.143-2.704a128.38 128.38 0 0 1 10.085 4.791zM71 16.54l-1.338-2.613a127.854 127.854 0 0 1 10.145-4.65l1.105 2.72a125.005 125.005 0 0 0-9.912 4.543zm95.393-7.624a125.475 125.475 0 0 0-10.517-2.9l.656-2.862c3.614.829 7.236 1.828 10.764 2.968zm-75.206-.576-.862-2.807a127.612 127.612 0 0 1 10.806-2.806l.612 2.872a124.668 124.668 0 0 0-10.556 2.74zm53.958-4.297c-3.59-.499-7.244-.845-10.862-1.03l.15-2.932c3.702.189 7.443.544 11.116 1.054zM112.5 3.796 112.14.88C115.81.43 119.554.133 123.267 0l.105 2.934c-3.629.13-7.286.42-10.873.862z"/>
7
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="url(#a)" d="M66.958.825a6.07 6.07 0 0 0-6.035 0L11.103 29.76c-1.895 1.072-2.96 3.095-2.96 5.24v57.988c0 2.143 1.183 4.167 2.958 5.24l49.82 28.934a6.07 6.07 0 0 0 6.036 0l49.82-28.935c1.894-1.072 2.958-3.096 2.958-5.24V35c0-2.144-1.183-4.167-2.958-5.24z"/><path fill="url(#b)" d="M116.897 29.76 66.841.825A8.161 8.161 0 0 0 65.302.23L9.21 96.798a6.251 6.251 0 0 0 1.657 1.43l50.057 28.934c1.42.833 3.076 1.072 4.615.595l52.66-96.925a3.702 3.702 0 0 0-1.302-1.072z"/><path fill="url(#c)" d="M116.898 98.225c1.42-.833 2.485-2.262 2.958-3.81L65.066.108c-1.42-.238-2.959-.119-4.26.715L11.104 29.639l53.606 98.355c.71-.12 1.54-.358 2.25-.715z"/><defs><linearGradient id="a" x1="34.513" x2="27.157" y1="15.535" y2="30.448" gradientTransform="translate(-129.242 -73.715) scale(6.18523)" gradientUnits="userSpaceOnUse"><stop stop-color="#3F873F"/><stop offset=".33" stop-color="#3F8B3D"/><stop offset=".637" stop-color="#3E9638"/><stop offset=".934" stop-color="#3DA92E"/><stop offset="1" stop-color="#3DAE2B"/></linearGradient><linearGradient id="b" x1="30.009" x2="50.533" y1="23.359" y2="8.288" gradientTransform="translate(-129.242 -73.715) scale(6.18523)" gradientUnits="userSpaceOnUse"><stop offset=".138" stop-color="#3F873F"/><stop offset=".402" stop-color="#52A044"/><stop offset=".713" stop-color="#64B749"/><stop offset=".908" stop-color="#6ABF4B"/></linearGradient><linearGradient id="c" x1="21.917" x2="40.555" y1="22.261" y2="22.261" gradientTransform="translate(-129.242 -73.715) scale(6.18523)" gradientUnits="userSpaceOnUse"><stop offset=".092" stop-color="#6ABF4B"/><stop offset=".287" stop-color="#64B749"/><stop offset=".598" stop-color="#52A044"/><stop offset=".862" stop-color="#3F873F"/></linearGradient></defs></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><g fill="#0b5a9d"><path d="M63.877 125.392c-32.671 0-60.37-27.594-60.627-60.469a59.94 59.94 0 0117.506-42.759 60.939 60.939 0 0143.279-18.36 60.081 60.081 0 0142.647 17.71 60.145 60.145 0 0118.157 42.522c.151 33.604-26.864 61.021-60.469 61.363h-.493zm.19-118.406a57.774 57.774 0 00-41.01 17.427 56.775 56.775 0 00-16.63 40.484c.236 31.159 26.495 57.286 57.43 57.286h.414c31.863-.29 57.504-26.266 57.385-58.128a56.97 56.97 0 00-17.217-40.273A56.7 56.7 0 0064.068 6.986z"/><path d="M16.89 82.383V46.865h8.64v3.183h-4.583v29.218h4.584v3.183l-8.642-.066zM46.213 64.272c0 6.478-3.933 10.167-9.26 10.167s-8.877-4.156-8.877-9.831c0-5.939 3.722-10.121 9.167-10.121s8.97 4.36 8.97 9.785zm-14.415.29c0 3.932 1.973 7.05 5.36 7.05s5.333-3.183 5.333-7.195c0-3.643-1.796-7.083-5.334-7.083s-5.392 3.328-5.392 7.307l.033-.08zM49.205 55.158c1.69-.29 3.407-.434 5.123-.428a9.17 9.17 0 015.537 1.223 4.062 4.062 0 012.006 3.61 4.48 4.48 0 01-3.183 4.183c2.269.46 3.9 2.46 3.9 4.775a5.016 5.016 0 01-1.861 3.978c-1.368 1.21-3.643 1.796-7.162 1.796a33.966 33.966 0 01-4.327-.257l-.033-18.88zm3.499 7.622h1.795c2.433 0 3.801-1.145 3.801-2.782 0-1.638-1.368-2.644-3.61-2.644a9.779 9.779 0 00-2.006.145l.02 5.28zm0 8.878c.618.065 1.243.092 1.86.078 2.263 0 4.262-.861 4.262-3.182s-1.94-3.183-4.373-3.183h-1.75v6.287zM69.54 54.901h3.517v12.554c0 5.334-2.577 7.116-6.365 7.116a9.313 9.313 0 01-2.973-.507l.428-2.834c.703.224 1.44.335 2.183.349 2.006 0 3.183-.921 3.183-4.262l.026-12.416zM83.067 65.357v2.434h-7.32v-2.434h7.32zM100.158 73.63c-1.585.632-3.281.921-4.978.862-6.129 0-9.851-3.834-9.851-9.707-.283-5.353 3.827-9.923 9.18-10.206.375-.02.757-.02 1.131.006a11.112 11.112 0 014.775.862l-.783 2.801a9.476 9.476 0 00-3.788-.75c-3.932 0-6.76 2.467-6.76 7.116 0 4.235 2.499 6.971 6.734 6.971a9.806 9.806 0 003.834-.717l.506 2.762zM111.2 46.766v35.61h-8.641v-3.182h4.583V49.949h-4.583v-3.183h8.64z"/></g></svg>
@@ -0,0 +1,2 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="url(#a)" d="M0 64c0 18.593 28.654 33.667 64 33.667 35.346 0 64-15.074 64-33.667 0-18.593-28.655-33.667-64-33.667C28.654 30.333 0 45.407 0 64Z"/><path fill="#777bb3" d="M64 95.167c33.965 0 61.5-13.955 61.5-31.167 0-17.214-27.535-31.167-61.5-31.167S2.5 46.786 2.5 64c0 17.212 27.535 31.167 61.5 31.167Z"/><path d="M34.772 67.864c2.793 0 4.877-.515 6.196-1.53 1.306-1.006 2.207-2.747 2.68-5.175.44-2.27.272-3.854-.5-4.71-.788-.874-2.493-1.317-5.067-1.317h-4.464l-2.473 12.732zM20.173 83.547a.694.694 0 0 1-.68-.828l6.557-33.738a.695.695 0 0 1 .68-.561h14.134c4.442 0 7.748 1.206 9.827 3.585 2.088 2.39 2.734 5.734 1.917 9.935-.333 1.711-.905 3.3-1.7 4.724a15.818 15.818 0 0 1-3.128 3.92c-1.531 1.432-3.264 2.472-5.147 3.083-1.852.604-4.232.91-7.07.91h-5.724l-1.634 8.408a.695.695 0 0 1-.682.562z"/><path fill="#fff" d="M34.19 55.826h3.891c3.107 0 4.186.682 4.553 1.089.607.674.723 2.097.331 4.112-.439 2.257-1.253 3.858-2.42 4.756-1.194.92-3.138 1.386-5.773 1.386h-2.786l2.205-11.342zm6.674-8.1H26.731a1.39 1.39 0 0 0-1.364 1.123L18.81 82.588a1.39 1.39 0 0 0 1.363 1.653h7.35a1.39 1.39 0 0 0 1.363-1.124l1.525-7.846h5.151c2.912 0 5.364-.318 7.287-.944 1.977-.642 3.796-1.731 5.406-3.237a16.522 16.522 0 0 0 3.259-4.087c.831-1.487 1.429-3.147 1.775-4.931.86-4.423.161-7.964-2.076-10.524-2.216-2.537-5.698-3.823-10.349-3.823zM30.301 68.557h4.471c2.963 0 5.17-.557 6.62-1.675 1.451-1.116 2.428-2.98 2.938-5.591.485-2.508.264-4.277-.665-5.308-.931-1.03-2.791-1.546-5.584-1.546h-5.036l-2.743 14.12m10.563-19.445c4.252 0 7.353 1.117 9.303 3.348 1.95 2.232 2.536 5.347 1.76 9.346-.322 1.648-.863 3.154-1.625 4.518-.764 1.366-1.76 2.614-2.991 3.747-1.468 1.373-3.097 2.352-4.892 2.935-1.794.584-4.08.875-6.857.875h-6.296l-1.743 8.97h-7.35l6.558-33.739h14.133"/><path d="M69.459 74.577a.694.694 0 0 1-.682-.827l2.9-14.928c.277-1.42.209-2.438-.19-2.87-.245-.263-.979-.704-3.15-.704h-5.256l-3.646 18.768a.695.695 0 0 1-.683.56h-7.29a.695.695 0 0 1-.683-.826l6.558-33.739a.695.695 0 0 1 .682-.561h7.29a.695.695 0 0 1 .683.826L64.41 48.42h5.653c4.307 0 7.227.758 8.928 2.321 1.733 1.593 2.275 4.14 1.608 7.573l-3.051 15.702a.695.695 0 0 1-.682.56h-7.407z"/><path fill="#fff" d="M65.31 38.755h-7.291a1.39 1.39 0 0 0-1.364 1.124l-6.557 33.738a1.39 1.39 0 0 0 1.363 1.654h7.291a1.39 1.39 0 0 0 1.364-1.124l3.537-18.205h4.682c2.168 0 2.624.463 2.641.484.132.14.305.795.019 2.264l-2.9 14.927a1.39 1.39 0 0 0 1.364 1.654h7.408a1.39 1.39 0 0 0 1.363-1.124l3.051-15.7c.715-3.686.103-6.45-1.82-8.217-1.836-1.686-4.91-2.505-9.398-2.505h-4.81l1.421-7.315a1.39 1.39 0 0 0-1.364-1.655zm0 1.39-1.743 8.968h6.496c4.087 0 6.907.714 8.457 2.14 1.553 1.426 2.017 3.735 1.398 6.93l-3.052 15.699h-7.407l2.901-14.928c.33-1.698.208-2.856-.365-3.474-.573-.617-1.793-.926-3.658-.926h-5.829l-3.756 19.327H51.46l6.558-33.739h7.292z"/><path d="M92.136 67.864c2.793 0 4.878-.515 6.198-1.53 1.304-1.006 2.206-2.747 2.679-5.175.44-2.27.273-3.854-.5-4.71-.788-.874-2.493-1.317-5.067-1.317h-4.463l-2.475 12.732zM77.54 83.547a.694.694 0 0 1-.682-.828l6.557-33.738a.695.695 0 0 1 .682-.561H98.23c4.442 0 7.748 1.206 9.826 3.585 2.089 2.39 2.734 5.734 1.917 9.935a15.878 15.878 0 0 1-1.699 4.724 15.838 15.838 0 0 1-3.128 3.92c-1.53 1.432-3.265 2.472-5.147 3.083-1.852.604-4.232.91-7.071.91h-5.723l-1.633 8.408a.695.695 0 0 1-.683.562z"/><path fill="#fff" d="M91.555 55.826h3.891c3.107 0 4.186.682 4.552 1.089.61.674.724 2.097.333 4.112-.44 2.257-1.254 3.858-2.421 4.756-1.195.92-3.139 1.386-5.773 1.386h-2.786l2.204-11.342zm6.674-8.1H84.096a1.39 1.39 0 0 0-1.363 1.123l-6.558 33.739a1.39 1.39 0 0 0 1.364 1.653h7.35a1.39 1.39 0 0 0 1.363-1.124l1.525-7.846h5.15c2.911 0 5.364-.318 7.286-.944 1.978-.642 3.797-1.731 5.408-3.238a16.52 16.52 0 0 0 3.258-4.086c.832-1.487 1.428-3.147 1.775-4.931.86-4.423.162-7.964-2.076-10.524-2.216-2.537-5.697-3.823-10.35-3.823zM87.666 68.557h4.47c2.964 0 5.17-.557 6.622-1.675 1.45-1.116 2.428-2.98 2.936-5.591.487-2.508.266-4.277-.665-5.308-.93-1.03-2.791-1.546-5.583-1.546h-5.035Zm10.563-19.445c4.251 0 7.354 1.117 9.303 3.348 1.95 2.232 2.537 5.347 1.759 9.346-.32 1.648-.862 3.154-1.624 4.518-.763 1.366-1.76 2.614-2.992 3.747-1.467 1.373-3.097 2.352-4.892 2.935-1.793.584-4.078.875-6.856.875h-6.295l-1.745 8.97h-7.35l6.558-33.739h14.133"/><defs><radialGradient id="a" cx="0" cy="0" r="1" gradientTransform="matrix(84.04136 0 0 84.04136 38.426 42.169)" gradientUnits="userSpaceOnUse"><stop stop-color="#AEB2D5"/><stop offset=".3" stop-color="#AEB2D5"/><stop offset=".75" stop-color="#484C89"/><stop offset="1" stop-color="#484C89"/></radialGradient></defs></svg>
2
+
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><linearGradient id="python-original-a" gradientUnits="userSpaceOnUse" x1="70.252" y1="1237.476" x2="170.659" y2="1151.089" gradientTransform="matrix(.563 0 0 -.568 -29.215 707.817)"><stop offset="0" stop-color="#5A9FD4"/><stop offset="1" stop-color="#306998"/></linearGradient><linearGradient id="python-original-b" gradientUnits="userSpaceOnUse" x1="209.474" y1="1098.811" x2="173.62" y2="1149.537" gradientTransform="matrix(.563 0 0 -.568 -29.215 707.817)"><stop offset="0" stop-color="#FFD43B"/><stop offset="1" stop-color="#FFE873"/></linearGradient><path fill="url(#python-original-a)" d="M63.391 1.988c-4.222.02-8.252.379-11.8 1.007-10.45 1.846-12.346 5.71-12.346 12.837v9.411h24.693v3.137H29.977c-7.176 0-13.46 4.313-15.426 12.521-2.268 9.405-2.368 15.275 0 25.096 1.755 7.311 5.947 12.519 13.124 12.519h8.491V67.234c0-8.151 7.051-15.34 15.426-15.34h24.665c6.866 0 12.346-5.654 12.346-12.548V15.833c0-6.693-5.646-11.72-12.346-12.837-4.244-.706-8.645-1.027-12.866-1.008zM50.037 9.557c2.55 0 4.634 2.117 4.634 4.721 0 2.593-2.083 4.69-4.634 4.69-2.56 0-4.633-2.097-4.633-4.69-.001-2.604 2.073-4.721 4.633-4.721z" transform="translate(0 10.26)"/><path fill="url(#python-original-b)" d="M91.682 28.38v10.966c0 8.5-7.208 15.655-15.426 15.655H51.591c-6.756 0-12.346 5.783-12.346 12.549v23.515c0 6.691 5.818 10.628 12.346 12.547 7.816 2.297 15.312 2.713 24.665 0 6.216-1.801 12.346-5.423 12.346-12.547v-9.412H63.938v-3.138h37.012c7.176 0 9.852-5.005 12.348-12.519 2.578-7.735 2.467-15.174 0-25.096-1.774-7.145-5.161-12.521-12.348-12.521h-9.268zM77.809 87.927c2.561 0 4.634 2.097 4.634 4.692 0 2.602-2.074 4.719-4.634 4.719-2.55 0-4.633-2.117-4.633-4.719 0-2.595 2.083-4.692 4.633-4.692z" transform="translate(0 10.26)"/><radialGradient id="python-original-c" cx="1825.678" cy="444.45" r="26.743" gradientTransform="matrix(0 -.24 -1.055 0 532.979 557.576)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#B8B8B8" stop-opacity=".498"/><stop offset="1" stop-color="#7F7F7F" stop-opacity="0"/></radialGradient><path opacity=".444" fill="url(#python-original-c)" d="M97.309 119.597c0 3.543-14.816 6.416-33.091 6.416-18.276 0-33.092-2.873-33.092-6.416 0-3.544 14.815-6.417 33.092-6.417 18.275 0 33.091 2.872 33.091 6.417z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#d91404" d="m35.971 111.33 81.958 11.188c-9.374-15.606-18.507-30.813-27.713-46.144Zm89.71-86.383L93.513 73.339c-.462.696-1.061 1.248-.41 2.321 8.016 13.237 15.969 26.513 23.942 39.777 1.258 2.095 2.53 4.182 4.157 6.192l4.834-96.58zM16.252 66.22c.375.355 1.311.562 1.747.347 7.689-3.779 15.427-7.474 22.948-11.564 2.453-1.333 4.339-3.723 6.452-5.661 6.997-6.417 13.983-12.847 20.966-19.278.427-.395.933-.777 1.188-1.275 2.508-4.902 4.973-9.829 7.525-14.898-3.043-1.144-5.928-2.263-8.849-3.281-.396-.138-1.02.136-1.449.375-6.761 3.777-13.649 7.353-20.195 11.472-3.275 2.061-5.943 5.098-8.843 7.743-4.674 4.266-9.342 8.542-13.948 12.882a24.011 24.011 0 0 0-3.288 3.854c-3.15 4.587-6.206 9.24-9.402 14.025 1.786 1.847 3.41 3.613 5.148 5.259zm28.102-6.271-11.556 48.823 54.3-34.987zm76.631-34.846-46.15 7.71 15.662 38.096zM44.996 56.644l41.892 13.6c-5.25-12.79-10.32-25.133-15.495-37.737ZM16.831 75.643 2.169 110.691l27.925-.825Zm13.593 26.096.346-.076c3.353-13.941 6.754-27.786 10.177-42.272L18.544 71.035c3.819 9.926 7.891 20.397 11.88 30.704zm84.927-78.897c-4.459-1.181-8.918-2.366-13.379-3.539-6.412-1.686-12.829-3.351-19.237-5.052-.801-.213-1.38-.352-1.851.613-2.265 4.64-4.6 9.245-6.901 13.868-.071.143-.056.328-.111.687l41.47-6.285zM89.482 12.288l36.343 10.054-6.005-17.11-30.285 6.715ZM33.505 114.007c-4.501-.519-9.122-.042-13.687.037-3.75.063-7.5.206-11.25.323-.386.012-.771.09-1.156.506 31.003 2.866 62.005 5.732 93.007 8.6l.063-.414-29.815-4.07c-12.384-1.691-24.747-3.551-37.162-4.982ZM2.782 99.994c3.995-9.27 7.973-18.546 11.984-27.809.401-.929.37-1.56-.415-2.308-1.678-1.597-3.237-3.318-5.071-5.226-2.479 12.24-4.897 24.177-7.317 36.113l.271.127c.185-.297.411-.578.548-.897zm78.74-90.153c6.737-1.738 13.572-3.097 20.367-4.613.44-.099.87-.244 1.303-.368l-.067-.332-29.194 3.928c2.741 1.197 4.853 2.091 7.591 1.385z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path d="M62.96.242c-.232.135-1.203 1.528-2.16 3.097-2.4 3.94-2.426 3.942-5.65.55-2.098-2.208-2.605-2.612-3.28-2.607-.44.002-.995.152-1.235.332-.24.18-.916 1.612-1.504 3.183-1.346 3.6-1.41 3.715-2.156 3.86-.46.086-1.343-.407-3.463-1.929-1.565-1.125-3.1-2.045-3.411-2.045-1.291 0-1.655.706-2.27 4.4-.78 4.697-.754 4.681-4.988 2.758-1.71-.776-3.33-1.41-3.603-1.41-.274 0-.792.293-1.15.652-.652.652-.653.655-.475 4.246l.178 3.595-.68.364c-.602.322-1.017.283-3.684-.348-3.48-.822-4.216-.8-4.92.15l-.516.693.692 2.964c.38 1.63.745 3.2.814 3.487.067.287-.05.746-.26 1.02-.348.448-.717.49-3.94.44-5.452-.086-5.761.382-3.51 5.3.718 1.56 1.305 2.98 1.305 3.15 0 .898-.717 1.224-3.794 1.727-1.722.28-3.218.51-3.326.51-.107 0-.43.235-.717.522-.937.936-.671 1.816 1.453 4.814 2.646 3.735 2.642 3.75-1.73 5.421-4.971 1.902-5.072 2.37-1.287 5.96 3.525 3.344 3.53 3.295-.461 5.804C.208 62.8.162 62.846.085 63.876c-.093 1.253-.071 1.275 3.538 3.48 3.57 2.18 3.57 2.246.067 5.56C-.078 76.48.038 77 5.013 78.877c4.347 1.64 4.353 1.66 1.702 5.394-1.502 2.117-1.981 3-1.981 3.653 0 1.223.637 1.535 4.44 2.174 3.206.54 3.92.857 3.92 1.741 0 .182-.588 1.612-1.307 3.177-2.236 4.87-1.981 5.275 3.31 5.275 4.93 0 4.799-.15 3.737 4.294-.8 3.35-.813 3.992-.088 4.715.554.556 1.6.494 4.87-.289 2.499-.596 2.937-.637 3.516-.328l.66.354-.177 3.594c-.178 3.593-.177 3.595.475 4.248.358.36.884.652 1.165.652.282 0 1.903-.63 3.604-1.404 4.22-1.916 4.194-1.932 4.973 2.75.617 3.711.977 4.4 2.294 4.4.327 0 1.83-.88 3.34-1.958 2.654-1.893 3.342-2.19 4.049-1.74.182.115.89 1.67 1.572 3.455 1.003 2.625 1.37 3.31 1.929 3.576 1.062.51 1.72.1 4.218-2.62 3.016-3.286 3.14-3.27 5.602.72 2.72 4.406 3.424 4.396 6.212-.089 2.402-3.864 2.374-3.862 5.621-.47 2.157 2.25 2.616 2.61 3.343 2.61.464 0 1.019-.175 1.23-.388.214-.213.92-1.786 1.568-3.496.649-1.71 1.321-3.2 1.495-3.31.687-.436 1.398-.13 4.048 1.752 1.56 1.108 3.028 1.96 3.377 1.96 1.296 0 1.764-.92 2.302-4.535.46-3.082.554-3.378 1.16-3.685.596-.302.954-.2 3.75 1.07 1.701.77 3.323 1.402 3.604 1.402.282 0 .816-.302 1.184-.672l.672-.67-.184-3.448c-.177-3.29-.16-3.468.364-3.943.54-.488.596-.486 3.615.204 3.656.835 4.338.857 5.025.17.671-.67.664-.818-.254-4.69-1.03-4.346-1.168-4.19 3.78-4.19 3.374 0 3.75-.049 4.18-.523.718-.793.547-1.702-.896-4.779-.729-1.55-1.32-2.96-1.315-3.135.024-.914.743-1.227 4.065-1.767 2.033-.329 3.553-.71 3.829-.96.923-.833.584-1.918-1.523-4.873-2.642-3.703-2.63-3.738 1.599-5.297 5.064-1.866 5.209-2.488 1.419-6.09-3.51-3.335-3.512-3.317.333-5.677 4.648-2.853 4.655-3.496.082-6.335-3.933-2.44-3.93-2.406-.405-5.753 3.78-3.593 3.678-4.063-1.295-5.965-4.388-1.679-4.402-1.72-1.735-5.38 1.588-2.18 1.982-2.903 1.982-3.65 0-1.306-.586-1.598-4.436-2.22-3.216-.52-3.924-.835-3.924-1.75 0-.174.588-1.574 1.307-3.113 1.406-3.013 1.604-4.22.808-4.94-.428-.387-1-.443-4.067-.392-3.208.054-3.618.008-4.063-.439-.486-.488-.48-.557.278-3.725.931-3.88.935-3.975.17-4.694-.777-.73-1.262-.718-4.826.121-2.597.612-3.027.653-3.617.337l-.67-.36.185-3.582.186-3.58-.67-.67c-.369-.37-.891-.67-1.163-.67-.27 0-1.884.64-3.583 1.421-2.838 1.306-3.143 1.393-3.757 1.072-.612-.32-.714-.637-1.237-3.829-.603-3.693-.977-4.412-2.288-4.412-.311 0-1.853.925-3.426 2.055-2.584 1.856-2.93 2.032-3.574 1.807-.533-.186-.843-.59-1.221-1.599-.28-.742-.817-2.172-1.194-3.177-.762-2.028-1.187-2.482-2.328-2.482-.637 0-1.213.458-3.28 2.604-3.25 3.375-3.261 3.374-5.65-.545C66.073 1.78 65.075.382 64.81.24c-.597-.32-1.3-.32-1.85.002m2.96 11.798c2.83 2.014 1.326 6.75-2.144 6.75-3.368 0-5.064-4.057-2.66-6.36 1.358-1.3 3.304-1.459 4.805-.39m-3.558 12.507c1.855.705 2.616.282 6.852-3.8l3.182-3.07 1.347.18c4.225.56 12.627 4.25 17.455 7.666 4.436 3.14 10.332 9.534 12.845 13.93l.537.942-2.38 5.364c-1.31 2.95-2.382 5.673-2.382 6.053 0 .878.576 2.267 1.13 2.726.234.195 2.457 1.265 4.939 2.378l4.51 2.025.178 1.148c.23 1.495.26 5.167.052 6.21l-.163.816h-2.575c-2.987 0-2.756-.267-2.918 3.396-.118 2.656-.76 4.124-2.22 5.075-2.377 1.551-6.304 1.27-7.97-.57-.255-.284-.752-1.705-1.105-3.16-1.03-4.254-2.413-6.64-5.193-8.965-.878-.733-1.595-1.418-1.595-1.522 0-.102.965-.915 2.145-1.803 4.298-3.24 6.77-7.012 7.04-10.747.519-7.126-5.158-13.767-13.602-15.92-2.002-.51-2.857-.526-27.624-.526-14.057 0-25.56-.092-25.56-.204 0-.263 3.125-3.295 4.965-4.816 5.054-4.178 11.618-7.465 18.417-9.22l2.35-.61 3.34 3.387c1.839 1.863 3.64 3.5 4.003 3.637M20.3 46.34c1.539 1.008 2.17 3.54 1.26 5.062-1.405 2.356-4.966 2.455-6.373.178-2.046-3.309 1.895-7.349 5.113-5.24m90.672.13c4.026 2.454.906 8.493-3.404 6.586-2.877-1.273-2.97-5.206-.155-6.64 1.174-.6 2.523-.579 3.56.053M32.163 61.5v15.02h-13.28l-.526-2.285c-1.036-4.5-1.472-9.156-1.211-12.969l.182-2.679 4.565-2.047c2.864-1.283 4.706-2.262 4.943-2.625 1.038-1.584.94-2.715-.518-5.933l-.68-1.502h6.523V61.5M70.39 47.132c2.843.74 4.345 2.245 4.349 4.355.002 1.55-.765 2.52-2.67 3.38-1.348.61-1.562.625-10.063.708l-8.686.084v-8.92h7.782c6.078 0 8.112.086 9.288.393m-2.934 21.554c1.41.392 3.076 1.616 3.93 2.888.898 1.337 1.423 3.076 2.667 8.836 1.05 4.87 1.727 6.46 3.62 8.532 2.345 2.566 1.8 2.466 13.514 2.466 5.61 0 10.198.09 10.198.2 0 .197-3.863 4.764-4.03 4.764-.048 0-2.066-.422-4.484-.939-6.829-1.458-7.075-1.287-8.642 6.032l-1.008 4.702-.91.448c-1.518.75-6.453 2.292-9.01 2.82-4.228.87-8.828 1.162-12.871.821-6.893-.585-16.02-3.259-16.377-4.8-.075-.327-.535-2.443-1.018-4.704-.485-2.26-1.074-4.404-1.31-4.764-1.13-1.724-2.318-1.83-7.547-.674-1.98.44-3.708.796-3.84.796-.248 0-3.923-4.249-3.923-4.535 0-.09 8.728-.194 19.396-.23l19.395-.066.07-6.89c.05-4.865-.018-6.997-.23-7.25-.234-.284-1.485-.358-6.011-.358H53.32v-8.36l6.597.001c3.626.002 7.02.12 7.539.264M37.57 100.02c3.084 1.88 1.605 6.804-2.043 6.8-3.74 0-5.127-4.88-1.94-6.826 1.055-.643 2.908-.63 3.983.026m56.48.206c1.512 1.108 2.015 3.413 1.079 4.95-2.46 4.034-8.612.827-6.557-3.419 1.01-2.085 3.695-2.837 5.478-1.53"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#f05138" d="M126.33 34.06a39.32 39.32 0 00-.79-7.83 28.78 28.78 0 00-2.65-7.58 28.84 28.84 0 00-4.76-6.32 23.42 23.42 0 00-6.62-4.55 27.27 27.27 0 00-7.68-2.53c-2.65-.51-5.56-.51-8.21-.76H30.25a45.46 45.46 0 00-6.09.51 21.82 21.82 0 00-5.82 1.52c-.53.25-1.32.51-1.85.76a33.82 33.82 0 00-5 3.28c-.53.51-1.06.76-1.59 1.26a22.41 22.41 0 00-4.76 6.32 23.61 23.61 0 00-2.65 7.58 78.5 78.5 0 00-.79 7.83v60.39a39.32 39.32 0 00.79 7.83 28.78 28.78 0 002.65 7.58 28.84 28.84 0 004.76 6.32 23.42 23.42 0 006.62 4.55 27.27 27.27 0 007.68 2.53c2.65.51 5.56.51 8.21.76h63.22a45.08 45.08 0 008.21-.76 27.27 27.27 0 007.68-2.53 30.13 30.13 0 006.62-4.55 22.41 22.41 0 004.76-6.32 23.61 23.61 0 002.65-7.58 78.49 78.49 0 00.79-7.83V34.06z"/><path fill="#fefefe" d="M85 96.5c-11.11 6.13-26.38 6.76-41.75.47A64.53 64.53 0 0113.84 73a50 50 0 0010.85 6.32c15.87 7.1 31.73 6.61 42.9 0-15.9-11.66-29.4-26.82-39.46-39.2a43.47 43.47 0 01-5.29-6.82c12.16 10.61 31.5 24 38.38 27.79a271.77 271.77 0 01-27-32.34 266.8 266.8 0 0044.47 34.87c.71.38 1.26.7 1.7 1a32.7 32.7 0 001.21-3.51c3.71-12.89-.53-27.54-9.79-39.67C93.25 33.81 106 57.05 100.66 76.51c-.14.53-.29 1-.45 1.55l.19.22c10.59 12.63 7.68 26 6.35 23.5C101 91 90.37 94.33 85 96.5z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#00ADEF" d="M126 1.637l-67 9.834v49.831l67-.534zM1.647 66.709l.003 42.404 50.791 6.983-.04-49.057zm56.82.68l.094 49.465 67.376 9.509.016-58.863zM1.61 19.297l.047 42.383 50.791-.289-.023-49.016z"/></svg>