pelatform-ui 1.2.0 → 1.2.2

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,9 @@
1
1
  # pelatform-ui
2
2
 
3
- A Modern and Minimal React UI Library built with TailwindCSS. The main package that provides access to all Pelatform UI components, hooks, and utilities through a unified interface. This package includes all the components, hooks, and utilities from the other Pelatform UI packages.
3
+ [![Version](https://img.shields.io/npm/v/pelatform-ui.svg)](https://www.npmjs.com/package/pelatform-ui)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ A Modern and Minimal React UI Library built with TailwindCSS. The main package that provides access to all Pelatform UI components, hooks, and utilities through a unified interface.
4
7
 
5
8
  ## Installation
6
9
 
@@ -26,22 +29,20 @@ import "pelatform-ui/css";
26
29
 
27
30
  pelatform-ui is the main entry point that consolidates all Pelatform UI packages:
28
31
 
29
- - **@@pelatform/ui.general** - Core utilities and types
30
- - **@@pelatform/ui.hook** - React hooks (15 hooks)
31
- - **@@pelatform/ui.animation** - Animation components (14 components)
32
- - **@@pelatform/ui.aria** - Accessible ARIA components (2 components)
33
- - **@@pelatform/ui.base** - Base headless components (40+ components)
34
- - **@@pelatform/ui.default** - Styled default components (71 components)
35
-
36
- Plus additional ready-to-use components for layouts, navigation, and UI elements.
32
+ - **@pelatform/ui.components** - All UI components (172 components)
33
+ - Animation (18 components)
34
+ - Base (77 headless components)
35
+ - Radix (77 styled components)
36
+ - **@pelatform/ui.hook** - React hooks (18 hooks)
37
+ - **Custom components** - Ready-to-use layouts, navigation, providers, and utilities
37
38
 
38
39
  ## Import Paths
39
40
 
40
41
  ```typescript
41
42
  // Main exports (utilities, types, icons)
42
- import { cn, cva, googleTrackEvent } from "pelatform-ui";
43
+ import { cn, cva } from "pelatform-ui";
43
44
 
44
- // Hooks
45
+ // React hooks
45
46
  import { useHydrated, useMobile, useMediaQuery } from "pelatform-ui/hooks";
46
47
 
47
48
  // Animation components
@@ -51,16 +52,13 @@ import {
51
52
  Marquee,
52
53
  } from "pelatform-ui/animation";
53
54
 
54
- // ARIA components
55
- import { DateField, ShowMore } from "pelatform-ui/aria";
56
-
57
- // Base components
55
+ // Base headless components (full styling control)
58
56
  import { Button, Input, Select } from "pelatform-ui/base";
59
57
 
60
- // Default styled components
61
- import { Card, DataGrid, Kanban } from "pelatform-ui/default";
58
+ // Radix styled components (pre-styled)
59
+ import { Card, DataGrid, Calendar } from "pelatform-ui/radix";
62
60
 
63
- // All components (base + default + custom)
61
+ // Custom Pelatform components
64
62
  import { SiteHeader, SiteFooter, CommandMenu } from "pelatform-ui/components";
65
63
 
66
64
  // Styles
@@ -70,7 +68,7 @@ import "pelatform-ui/css";
70
68
  ## Quick Start
71
69
 
72
70
  ```typescript
73
- import { Button, Card, Input } from "pelatform-ui/default";
71
+ import { Card, Button, Input } from "pelatform-ui/radix";
74
72
  import { useHydrated } from "pelatform-ui/hooks";
75
73
  import "pelatform-ui/css";
76
74
 
@@ -88,7 +86,7 @@ function App() {
88
86
  }
89
87
  ```
90
88
 
91
- ## Components
89
+ ## Custom Components
92
90
 
93
91
  ### Layout Components
94
92
 
@@ -113,9 +111,6 @@ function App() {
113
111
  ### Feedback Components
114
112
 
115
113
  - **Alert** - Alert notifications
116
- - **AlertToast** - Toast notifications
117
- - **AlertNotification** - Notification alerts
118
- - **AlertComingsoon** - Coming soon alert
119
114
  - **Dialog** - Modal dialog
120
115
  - **ScreenLoader** - Loading screen
121
116
 
@@ -127,20 +122,18 @@ function App() {
127
122
  - **DotsPattern** - Dot pattern background
128
123
  - **GridBackground** - Grid pattern background
129
124
  - **HexagonBadge** - Hexagon-shaped badge
130
- - **Icons** - Icon components
131
125
  - **ImageInput** - Image upload input
132
126
  - **LanguageSwitcher** - Language selector
133
127
  - **Logo** - Brand logo
134
128
  - **ModeSwitcher** - Theme mode toggle
135
129
  - **MovingBorder** - Animated border effect
136
- - **Subscribe** - Email subscription
137
130
  - **Toolbar** - Toolbar component
138
131
  - **UserAvatar** - User avatar display
139
132
 
140
133
  ### Provider Components
141
134
 
142
135
  - **QueryProvider** - TanStack Query provider
143
- - **ThemeProvider** - Theme management (next-themes + tooltip)
136
+ - **ThemeProvider** - Theme management (next-themes)
144
137
 
145
138
  ### MDX Components
146
139
 
@@ -154,7 +147,6 @@ function App() {
154
147
  ### Utility Components
155
148
 
156
149
  - **Fonts** - Font configuration
157
- - **RecaptchaPopover** - reCAPTCHA integration
158
150
  - **Shared** - Shared utilities
159
151
 
160
152
  ## Theme Management
@@ -178,23 +170,48 @@ function App({ children }) {
178
170
 
179
171
  ## Hooks
180
172
 
181
- 15 production-ready hooks for common use cases:
173
+ 18 production-ready hooks for common use cases:
174
+
175
+ ### Analytics & Tracking
182
176
 
183
177
  - **useAnalytics** - CRUD operation tracking
184
- - **useBodyClass** - Body class management
185
- - **useCopyToClipboard** - Clipboard operations
186
- - **useFileUpload** - File upload with drag & drop
187
- - **useHydrated** - SSR-safe hydration detection
178
+
179
+ ### Responsive Design
180
+
188
181
  - **useMediaQuery** - Media query tracking
182
+ - **useIsMobile** - Mobile detection
183
+ - **useViewport** - Viewport dimensions
184
+ - **useIntersectionObserver** - Intersection observation
185
+
186
+ ### Form & Input Management
187
+
188
+ - **useFileUpload** - File upload with drag & drop
189
+ - **useSliderInput** - Slider input management
190
+ - **useCopyToClipboard** - Clipboard operations
191
+
192
+ ### Navigation & Scrolling
193
+
189
194
  - **useMenu** - Menu navigation state
190
- - **useMobile** - Mobile detection
191
- - **useMounted** - Mount state detection
195
+ - **useScrollPosition** - Scroll tracking
196
+
197
+ ### DOM Management
198
+
199
+ - **useBodyClass** - Body class management
192
200
  - **useMutationObserver** - DOM mutation observation
201
+
202
+ ### Platform Detection
203
+
204
+ - **useIsMac** - macOS detection
205
+
206
+ ### Security
207
+
193
208
  - **useRecaptchaV2** - reCAPTCHA integration
209
+
210
+ ### Utilities
211
+
212
+ - **useMounted** - Mount state detection
213
+ - **useHydrated** - SSR-safe hydration detection
194
214
  - **useRemoveGAParams** - GA parameter cleanup
195
- - **useScrollPosition** - Scroll tracking
196
- - **useSliderInput** - Slider input management
197
- - **useViewport** - Viewport dimensions
198
215
 
199
216
  ## Styling
200
217
 
@@ -218,8 +235,8 @@ Full TypeScript support with comprehensive type definitions for all components a
218
235
 
219
236
  ## Features
220
237
 
221
- - 100+ total components across all packages
222
- - 15 React hooks for common use cases
238
+ - 172+ total components across all packages
239
+ - 18 React hooks for common use cases
223
240
  - Full dark mode support
224
241
  - Responsive design
225
242
  - Accessibility (WCAG 2.1)
@@ -233,9 +250,10 @@ Full TypeScript support with comprehensive type definitions for all components a
233
250
 
234
251
  ### Production Dependencies
235
252
 
236
- - `@radix-ui/react-dialog`
237
- - `radix-ui`
238
- - `tw-animate-css`
253
+ - `class-variance-authority` - Component variants
254
+ - `clsx` - Conditional className
255
+ - `tailwind-merge` - Tailwind class merging
256
+ - `tw-animate-css` - Animation utilities
239
257
 
240
258
  ### Peer Dependencies
241
259
 
@@ -0,0 +1,101 @@
1
+ @layer components {
2
+ .apexcharts-text,
3
+ .apexcharts-title-text,
4
+ .apexcharts-legend-text {
5
+ font-family: inherit !important;
6
+ }
7
+
8
+ .apexcharts-title-text {
9
+ font-weight: var(--font-weight-normal);
10
+ }
11
+
12
+ .apexcharts-pie-label {
13
+ @apply text-xs;
14
+ }
15
+
16
+ .apexcharts-toolbar {
17
+ text-align: start !important;
18
+ }
19
+
20
+ .apexcharts-menu {
21
+ border: 1px solid var(--color-border) !important;
22
+ box-shadow: var(--box-shadow-sm) !important;
23
+ background-color: var(--color-background) !important;
24
+ border-radius: 0.625rem !important;
25
+ padding: 0.5rem 0 !important;
26
+ overflow: hidden;
27
+ min-width: 10rem !important;
28
+ }
29
+
30
+ .apexcharts-menu .apexcharts-menu-item {
31
+ padding: 0.5rem 0.5rem !important;
32
+ }
33
+
34
+ .apexcharts-menu .apexcharts-menu-item:hover {
35
+ background-color: var(--gray-100) !important;
36
+ }
37
+
38
+ .apexcharts-tooltip {
39
+ border: 1px solid var(--color-border) !important;
40
+ box-shadow: var(--box-shadow-sm) !important;
41
+ background-color: var(--color-background) !important;
42
+ border-radius: 0.625rem !important;
43
+ color: var(--color-secondary-foreground) !important;
44
+ }
45
+
46
+ .apexcharts-tooltip .apexcharts-tooltip-title {
47
+ @apply text-foreground text-sm font-medium;
48
+ padding: 0.25rem 0.5rem !important;
49
+ background-color: transparent !important;
50
+ border-bottom: 1px solid var(--color-border) !important;
51
+ }
52
+
53
+ .apexcharts-xaxistooltip {
54
+ border: 1px solid var(--color-border) !important;
55
+ box-shadow: var(--box-shadow-sm) !important;
56
+ background-color: var(--color-background) !important;
57
+ border-radius: 0.625rem;
58
+ color: var(--color-foreground);
59
+ }
60
+
61
+ .apexcharts-xaxistooltip:before {
62
+ border-bottom: 0 !important;
63
+ }
64
+
65
+ .apexcharts-legend {
66
+ display: flex;
67
+ flex-direction: column;
68
+ @apply gap-2;
69
+ }
70
+
71
+ .apexcharts-legend .apexcharts-legend-series {
72
+ @apply gap-1;
73
+ display: flex;
74
+ align-items: center;
75
+ }
76
+
77
+ .apexcharts-legend .apexcharts-legend-series .apexcharts-legend-text {
78
+ @apply text-muted-foreground text-sm font-medium;
79
+ }
80
+
81
+ .apexcharts-card-rounded .apexcharts-canvas svg {
82
+ border-bottom-left-radius: var(--radius-xl);
83
+ border-bottom-right-radius: var(--radius-xl);
84
+ }
85
+
86
+ .apexcharts-rounded-sm .apexcharts-canvas svg {
87
+ border-radius: var(--radius-sm);
88
+ }
89
+
90
+ .apexcharts-rounded .apexcharts-canvas svg {
91
+ border-radius: var(--radius-md);
92
+ }
93
+
94
+ .apexcharts-rounded-lg .apexcharts-canvas svg {
95
+ border-radius: var(--radius-lg);
96
+ }
97
+
98
+ .apexcharts-rounded-xl .apexcharts-canvas svg {
99
+ border-radius: var(--radius-xl);
100
+ }
101
+ }
@@ -0,0 +1,19 @@
1
+ @layer components {
2
+ .bg-book-bind-bg {
3
+ background: linear-gradient(90deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 100%);
4
+ }
5
+
6
+ .bg-book-pages {
7
+ background: linear-gradient(90deg, #f1f1f1 0%, #ffffff 100%);
8
+ }
9
+
10
+ .shadow-book {
11
+ box-shadow:
12
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1),
13
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
14
+ }
15
+
16
+ .book-bg {
17
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0) 100%);
18
+ }
19
+ }
@@ -0,0 +1,12 @@
1
+ @layer components {
2
+ .animate-move {
3
+ animation: move 0.6s ease-out forwards;
4
+ will-change: transform;
5
+ }
6
+
7
+ .grid-container {
8
+ @apply container max-w-7xl;
9
+ margin-inline: auto;
10
+ padding-inline: 0rem;
11
+ }
12
+ }
@@ -0,0 +1,51 @@
1
+ @layer components {
2
+ .pf-image-input {
3
+ @apply relative inline-flex size-20 cursor-pointer items-center justify-center;
4
+
5
+ input[type="file"] {
6
+ @apply absolute size-0 appearance-none opacity-0;
7
+ }
8
+ }
9
+
10
+ .pf-image-input-remove {
11
+ @apply bg-background border-border end-px top-px absolute z-1 flex size-5 cursor-pointer items-center justify-center rounded-full border shadow-sm;
12
+
13
+ i {
14
+ @apply text-muted-foreground text-[11px];
15
+ }
16
+
17
+ svg {
18
+ @apply text-muted-foreground size-3.25;
19
+ }
20
+
21
+ &:hover {
22
+ i {
23
+ @apply text-foreground;
24
+ }
25
+
26
+ svg {
27
+ @apply text-foreground;
28
+ }
29
+ }
30
+ }
31
+
32
+ .pf-image-input-placeholder {
33
+ @apply border-border pf-image-input-empty:border-border relative size-full overflow-hidden rounded-full border bg-cover bg-no-repeat;
34
+ }
35
+
36
+ .pf-image-input-preview {
37
+ @apply relative size-full overflow-hidden rounded-full bg-cover bg-no-repeat;
38
+ }
39
+ }
40
+
41
+ @custom-variant pf-image-input-empty {
42
+ [data-pf-image-input-initialized].empty & {
43
+ @slot;
44
+ }
45
+ }
46
+
47
+ @custom-variant image-input-changed {
48
+ [data-pf-image-input-initialized].changed & {
49
+ @slot;
50
+ }
51
+ }
@@ -0,0 +1,25 @@
1
+ @layer components {
2
+ /* Base Leaflet container styles */
3
+ .leaflet-container {
4
+ /* Leaflet pane and control styles */
5
+ & .leaflet-pane,
6
+ & .leaflet-top,
7
+ & .leaflet-bottom,
8
+ & .leaflet-control {
9
+ z-index: 1 !important;
10
+ }
11
+
12
+ /* Leaflet popup content wrapper styles */
13
+ & .leaflet-popup-content-wrapper {
14
+ border-radius: var(--radius-md);
15
+ text-align: center;
16
+ background-color: var(--color-popover);
17
+
18
+ /* Leaflet popup content styles */
19
+ & .leaflet-popup-content {
20
+ font-family: inherit;
21
+ @apply text-xs;
22
+ }
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,34 @@
1
+ @layer utilities {
2
+ .bg-dashed {
3
+ background-image: linear-gradient(
4
+ 45deg,
5
+ var(--color-border) 12.5%,
6
+ transparent 12.5%,
7
+ transparent 50%,
8
+ var(--color-border) 50%,
9
+ var(--color-border) 62.5%,
10
+ transparent 62.5%,
11
+ transparent 100%
12
+ );
13
+ background-size: 0.25rem 0.25rem;
14
+ }
15
+
16
+ .grid-magicpattern {
17
+ width: 100%;
18
+ height: 100%;
19
+ background-size: cover;
20
+ background-position: center center;
21
+ background-repeat: repeat;
22
+ background-image: url("data:image/svg+xml;utf8,%3Csvg viewBox=%220 0 2000 1400%22 xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cmask id=%22b%22 x=%220%22 y=%220%22 width=%222000%22 height=%221400%22%3E%3Cpath fill=%22url(%23a)%22 d=%22M0 0h2000v1400H0z%22%2F%3E%3C%2Fmask%3E%3Cpath fill=%22%23fff%22 d=%22M0 0h2000v1400H0z%22%2F%3E%3Cg style=%22transform-origin:center center%22 stroke=%22%23d8d8d88f%22 stroke-width=%222%22 mask=%22url(%23b)%22%3E%3Cpath fill=%22none%22 d=%22M0 0h100v100H0zM100 0h100v100H100zM200 0h100v100H200zM300 0h100v100H300z%22%2F%3E%3Cpath fill=%22%23d8d8d878%22 d=%22M400 0h100v100H400z%22%2F%3E%3Cpath fill=%22%23d8d8d808%22 d=%22M500 0h100v100H500z%22%2F%3E%3Cpath fill=%22none%22 d=%22M600 0h100v100H600zM700 0h100v100H700zM800 0h100v100H800zM900 0h100v100H900z%22%2F%3E%3Cpath fill=%22%23d8d8d826%22 d=%22M1000 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d852%22 d=%22M1100 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d805%22 d=%22M1200 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d888%22 d=%22M1300 0h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1400 0h100v100h-100zM1500 0h100v100h-100zM1600 0h100v100h-100zM1700 0h100v100h-100zM1800 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d816%22 d=%22M1900 0h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M0 100h100v100H0zM100 100h100v100H100z%22%2F%3E%3Cpath fill=%22%23d8d8d842%22 d=%22M200 100h100v100H200z%22%2F%3E%3Cpath fill=%22%23d8d8d87d%22 d=%22M300 100h100v100H300z%22%2F%3E%3Cpath fill=%22%23d8d8d836%22 d=%22M400 100h100v100H400z%22%2F%3E%3Cpath fill=%22%23d8d8d82e%22 d=%22M500 100h100v100H500z%22%2F%3E%3Cpath fill=%22%23d8d8d85b%22 d=%22M600 100h100v100H600z%22%2F%3E%3Cpath fill=%22%23d8d8d888%22 d=%22M700 100h100v100H700z%22%2F%3E%3Cpath fill=%22none%22 d=%22M800 100h100v100H800zM900 100h100v100H900z%22%2F%3E%3Cpath fill=%22%23d8d8d83a%22 d=%22M1000 100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1100 100h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d88e%22 d=%22M1200 100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 100h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d80c%22 d=%22M1400 100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1500 100h100v100h-100zM1600 100h100v100h-100zM1700 100h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d827%22 d=%22M1800 100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 100h100v100h-100zM0 200h100v100H0zM100 200h100v100H100zM200 200h100v100H200zM300 200h100v100H300zM400 200h100v100H400zM500 200h100v100H500zM600 200h100v100H600zM700 200h100v100H700zM800 200h100v100H800zM900 200h100v100H900zM1000 200h100v100h-100zM1100 200h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d838%22 d=%22M1200 200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 200h100v100h-100zM1400 200h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d818%22 d=%22M1500 200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1600 200h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d865%22 d=%22M1700 200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1800 200h100v100h-100zM1900 200h100v100h-100zM0 300h100v100H0zM100 300h100v100H100zM200 300h100v100H200zM300 300h100v100H300zM400 300h100v100H400z%22%2F%3E%3Cpath fill=%22%23d8d8d85a%22 d=%22M500 300h100v100H500z%22%2F%3E%3Cpath fill=%22none%22 d=%22M600 300h100v100H600zM700 300h100v100H700z%22%2F%3E%3Cpath fill=%22%23d8d8d866%22 d=%22M800 300h100v100H800z%22%2F%3E%3Cpath fill=%22none%22 d=%22M900 300h100v100H900zM1000 300h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d871%22 d=%22M1100 300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1200 300h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d872%22 d=%22M1300 300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1400 300h100v100h-100zM1500 300h100v100h-100zM1600 300h100v100h-100zM1700 300h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d80d%22 d=%22M1800 300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 300h100v100h-100zM0 400h100v100H0zM100 400h100v100H100z%22%2F%3E%3Cpath fill=%22%23d8d8d838%22 d=%22M200 400h100v100H200z%22%2F%3E%3Cpath fill=%22none%22 d=%22M300 400h100v100H300z%22%2F%3E%3Cpath fill=%22%23d8d8d86f%22 d=%22M400 400h100v100H400z%22%2F%3E%3Cpath fill=%22%23d8d8d855%22 d=%22M500 400h100v100H500z%22%2F%3E%3Cpath fill=%22none%22 d=%22M600 400h100v100H600zM700 400h100v100H700zM800 400h100v100H800zM900 400h100v100H900zM1000 400h100v100h-100zM1100 400h100v100h-100zM1200 400h100v100h-100zM1300 400h100v100h-100zM1400 400h100v100h-100zM1500 400h100v100h-100zM1600 400h100v100h-100zM1700 400h100v100h-100zM1800 400h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d826%22 d=%22M1900 400h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M0 500h100v100H0z%22%2F%3E%3Cpath fill=%22%23d8d8d849%22 d=%22M100 500h100v100H100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M200 500h100v100H200zM300 500h100v100H300z%22%2F%3E%3Cpath fill=%22%23d8d8d838%22 d=%22M400 500h100v100H400z%22%2F%3E%3Cpath fill=%22none%22 d=%22M500 500h100v100H500zM600 500h100v100H600zM700 500h100v100H700z%22%2F%3E%3Cpath fill=%22%23d8d8d811%22 d=%22M800 500h100v100H800z%22%2F%3E%3Cpath fill=%22none%22 d=%22M900 500h100v100H900z%22%2F%3E%3Cpath fill=%22%23d8d8d82d%22 d=%22M1000 500h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1100 500h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d80b%22 d=%22M1200 500h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 500h100v100h-100zM1400 500h100v100h-100zM1500 500h100v100h-100zM1600 500h100v100h-100zM1700 500h100v100h-100zM1800 500h100v100h-100zM1900 500h100v100h-100zM0 600h100v100H0z%22%2F%3E%3Cpath fill=%22%23d8d8d85f%22 d=%22M100 600h100v100H100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M200 600h100v100H200zM300 600h100v100H300zM400 600h100v100H400zM500 600h100v100H500zM600 600h100v100H600zM700 600h100v100H700zM800 600h100v100H800z%22%2F%3E%3Cpath fill=%22%23d8d8d854%22 d=%22M900 600h100v100H900z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1000 600h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d833%22 d=%22M1100 600h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1200 600h100v100h-100zM1300 600h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d838%22 d=%22M1400 600h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d84e%22 d=%22M1500 600h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1600 600h100v100h-100zM1700 600h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d801%22 d=%22M1800 600h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 600h100v100h-100zM0 700h100v100H0zM100 700h100v100H100zM200 700h100v100H200z%22%2F%3E%3Cpath fill=%22%23d8d8d821%22 d=%22M300 700h100v100H300z%22%2F%3E%3Cpath fill=%22none%22 d=%22M400 700h100v100H400zM500 700h100v100H500zM600 700h100v100H600zM700 700h100v100H700z%22%2F%3E%3Cpath fill=%22%23d8d8d826%22 d=%22M800 700h100v100H800z%22%2F%3E%3Cpath fill=%22%23d8d8d86d%22 d=%22M900 700h100v100H900z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1000 700h100v100h-100zM1100 700h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d876%22 d=%22M1200 700h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 700h100v100h-100zM1400 700h100v100h-100zM1500 700h100v100h-100zM1600 700h100v100h-100zM1700 700h100v100h-100zM1800 700h100v100h-100zM1900 700h100v100h-100zM0 800h100v100H0zM100 800h100v100H100zM200 800h100v100H200z%22%2F%3E%3Cpath fill=%22%23d8d8d859%22 d=%22M300 800h100v100H300z%22%2F%3E%3Cpath fill=%22none%22 d=%22M400 800h100v100H400z%22%2F%3E%3Cpath fill=%22%23d8d8d889%22 d=%22M500 800h100v100H500z%22%2F%3E%3Cpath fill=%22%23d8d8d858%22 d=%22M600 800h100v100H600z%22%2F%3E%3Cpath fill=%22none%22 d=%22M700 800h100v100H700zM800 800h100v100H800zM900 800h100v100H900zM1000 800h100v100h-100zM1100 800h100v100h-100zM1200 800h100v100h-100zM1300 800h100v100h-100zM1400 800h100v100h-100zM1500 800h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d831%22 d=%22M1600 800h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1700 800h100v100h-100zM1800 800h100v100h-100zM1900 800h100v100h-100zM0 900h100v100H0z%22%2F%3E%3Cpath fill=%22%23d8d8d816%22 d=%22M100 900h100v100H100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M200 900h100v100H200zM300 900h100v100H300zM400 900h100v100H400zM500 900h100v100H500z%22%2F%3E%3Cpath fill=%22%23d8d8d869%22 d=%22M600 900h100v100H600z%22%2F%3E%3Cpath fill=%22%23d8d8d809%22 d=%22M700 900h100v100H700z%22%2F%3E%3Cpath fill=%22none%22 d=%22M800 900h100v100H800zM900 900h100v100H900zM1000 900h100v100h-100zM1100 900h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d820%22 d=%22M1200 900h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 900h100v100h-100zM1400 900h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d82c%22 d=%22M1500 900h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1600 900h100v100h-100zM1700 900h100v100h-100zM1800 900h100v100h-100zM1900 900h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d82f%22 d=%22M0 1000h100v100H0z%22%2F%3E%3Cpath fill=%22%23d8d8d881%22 d=%22M100 1000h100v100H100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M200 1000h100v100H200z%22%2F%3E%3Cpath fill=%22%23d8d8d85c%22 d=%22M300 1000h100v100H300z%22%2F%3E%3Cpath fill=%22none%22 d=%22M400 1000h100v100H400zM500 1000h100v100H500zM600 1000h100v100H600zM700 1000h100v100H700zM800 1000h100v100H800zM900 1000h100v100H900zM1000 1000h100v100h-100zM1100 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d85c%22 d=%22M1200 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d832%22 d=%22M1300 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1400 1000h100v100h-100zM1500 1000h100v100h-100zM1600 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d81d%22 d=%22M1700 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1800 1000h100v100h-100zM1900 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d853%22 d=%22M0 1100h100v100H0z%22%2F%3E%3Cpath fill=%22none%22 d=%22M100 1100h100v100H100z%22%2F%3E%3Cpath fill=%22%23d8d8d849%22 d=%22M200 1100h100v100H200z%22%2F%3E%3Cpath fill=%22none%22 d=%22M300 1100h100v100H300zM400 1100h100v100H400zM500 1100h100v100H500zM600 1100h100v100H600z%22%2F%3E%3Cpath fill=%22%23d8d8d81d%22 d=%22M700 1100h100v100H700z%22%2F%3E%3Cpath fill=%22none%22 d=%22M800 1100h100v100H800zM900 1100h100v100H900zM1000 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d863%22 d=%22M1100 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d83f%22 d=%22M1200 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 1100h100v100h-100zM1400 1100h100v100h-100zM1500 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d824%22 d=%22M1600 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1700 1100h100v100h-100zM1800 1100h100v100h-100zM1900 1100h100v100h-100zM0 1200h100v100H0z%22%2F%3E%3Cpath fill=%22%23d8d8d850%22 d=%22M100 1200h100v100H100z%22%2F%3E%3Cpath fill=%22%23d8d8d87f%22 d=%22M200 1200h100v100H200z%22%2F%3E%3Cpath fill=%22none%22 d=%22M300 1200h100v100H300zM400 1200h100v100H400zM500 1200h100v100H500zM600 1200h100v100H600zM700 1200h100v100H700zM800 1200h100v100H800zM900 1200h100v100H900zM1000 1200h100v100h-100zM1100 1200h100v100h-100zM1200 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d838%22 d=%22M1300 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d888%22 d=%22M1400 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1500 1200h100v100h-100zM1600 1200h100v100h-100zM1700 1200h100v100h-100zM1800 1200h100v100h-100zM1900 1200h100v100h-100zM0 1300h100v100H0zM100 1300h100v100H100zM200 1300h100v100H200zM300 1300h100v100H300z%22%2F%3E%3Cpath fill=%22%23d8d8d838%22 d=%22M400 1300h100v100H400z%22%2F%3E%3Cpath fill=%22none%22 d=%22M500 1300h100v100H500zM600 1300h100v100H600zM700 1300h100v100H700zM800 1300h100v100H800z%22%2F%3E%3Cpath fill=%22%23d8d8d841%22 d=%22M900 1300h100v100H900z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1000 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d862%22 d=%22M1100 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1200 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d842%22 d=%22M1300 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d854%22 d=%22M1400 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1500 1300h100v100h-100zM1600 1300h100v100h-100zM1700 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22%23d8d8d840%22 d=%22M1800 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 1300h100v100h-100z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CradialGradient id=%22a%22%3E%3Cstop offset=%220%22 stop-color=%22%23fff%22 stop-opacity=%22.838%22%2F%3E%3Cstop offset=%2286.5%25%22 stop-color=%22%23fff%22 stop-opacity=%220%22%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E");
23
+ }
24
+ .dark {
25
+ .grid-magicpattern {
26
+ width: 100%;
27
+ height: 100%;
28
+ background-size: cover;
29
+ background-position: center center;
30
+ background-repeat: repeat;
31
+ background-image: url("data:image/svg+xml;utf8,%3Csvg viewBox=%220 0 2000 1400%22 xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cmask id=%22b%22 x=%220%22 y=%220%22 width=%222000%22 height=%221400%22%3E%3Cpath fill=%22url(%23a)%22 d=%22M0 0h2000v1400H0z%22%2F%3E%3C%2Fmask%3E%3Cpath d=%22M0 0h2000v1400H0z%22%2F%3E%3Cg style=%22transform-origin:center center%22 stroke=%22%236565658f%22 stroke-width=%222%22 mask=%22url(%23b)%22%3E%3Cpath fill=%22none%22 d=%22M0 0h100v100H0zM100 0h100v100H100zM200 0h100v100H200z%22%2F%3E%3Cpath fill=%22%2365656582%22 d=%22M300 0h100v100H300z%22%2F%3E%3Cpath fill=%22none%22 d=%22M400 0h100v100H400zM500 0h100v100H500zM600 0h100v100H600zM700 0h100v100H700zM800 0h100v100H800zM900 0h100v100H900z%22%2F%3E%3Cpath fill=%22%2365656534%22 d=%22M1000 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656539%22 d=%22M1100 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656580%22 d=%22M1200 0h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 0h100v100h-100zM1400 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656567%22 d=%22M1500 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656574%22 d=%22M1600 0h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1700 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656584%22 d=%22M1800 0h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 0h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565657b%22 d=%22M0 100h100v100H0z%22%2F%3E%3Cpath fill=%22none%22 d=%22M100 100h100v100H100zM200 100h100v100H200zM300 100h100v100H300z%22%2F%3E%3Cpath fill=%22%2365656555%22 d=%22M400 100h100v100H400z%22%2F%3E%3Cpath fill=%22none%22 d=%22M500 100h100v100H500zM600 100h100v100H600zM700 100h100v100H700z%22%2F%3E%3Cpath fill=%22%2365656504%22 d=%22M800 100h100v100H800z%22%2F%3E%3Cpath fill=%22none%22 d=%22M900 100h100v100H900zM1000 100h100v100h-100zM1100 100h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656515%22 d=%22M1200 100h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565653f%22 d=%22M1300 100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1400 100h100v100h-100zM1500 100h100v100h-100zM1600 100h100v100h-100zM1700 100h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656531%22 d=%22M1800 100h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565657f%22 d=%22M1900 100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M0 200h100v100H0zM100 200h100v100H100z%22%2F%3E%3Cpath fill=%22%2365656550%22 d=%22M200 200h100v100H200z%22%2F%3E%3Cpath fill=%22none%22 d=%22M300 200h100v100H300z%22%2F%3E%3Cpath fill=%22%236565654a%22 d=%22M400 200h100v100H400z%22%2F%3E%3Cpath fill=%22none%22 d=%22M500 200h100v100H500zM600 200h100v100H600zM700 200h100v100H700zM800 200h100v100H800zM900 200h100v100H900z%22%2F%3E%3Cpath fill=%22%2365656563%22 d=%22M1000 200h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656540%22 d=%22M1100 200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1200 200h100v100h-100zM1300 200h100v100h-100zM1400 200h100v100h-100zM1500 200h100v100h-100zM1600 200h100v100h-100zM1700 200h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656563%22 d=%22M1800 200h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565657e%22 d=%22M1900 200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M0 300h100v100H0zM100 300h100v100H100zM200 300h100v100H200z%22%2F%3E%3Cpath fill=%22%2365656510%22 d=%22M300 300h100v100H300z%22%2F%3E%3Cpath fill=%22%2365656514%22 d=%22M400 300h100v100H400z%22%2F%3E%3Cpath fill=%22none%22 d=%22M500 300h100v100H500zM600 300h100v100H600z%22%2F%3E%3Cpath fill=%22%236565656a%22 d=%22M700 300h100v100H700z%22%2F%3E%3Cpath fill=%22%236565651e%22 d=%22M800 300h100v100H800z%22%2F%3E%3Cpath fill=%22none%22 d=%22M900 300h100v100H900zM1000 300h100v100h-100zM1100 300h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565653d%22 d=%22M1200 300h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656572%22 d=%22M1300 300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1400 300h100v100h-100zM1500 300h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656584%22 d=%22M1600 300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1700 300h100v100h-100zM1800 300h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656562%22 d=%22M1900 300h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565650b%22 d=%22M0 400h100v100H0z%22%2F%3E%3Cpath fill=%22%236565652e%22 d=%22M100 400h100v100H100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M200 400h100v100H200zM300 400h100v100H300zM400 400h100v100H400z%22%2F%3E%3Cpath fill=%22%236565655a%22 d=%22M500 400h100v100H500z%22%2F%3E%3Cpath fill=%22none%22 d=%22M600 400h100v100H600z%22%2F%3E%3Cpath fill=%22%2365656541%22 d=%22M700 400h100v100H700z%22%2F%3E%3Cpath fill=%22none%22 d=%22M800 400h100v100H800zM900 400h100v100H900zM1000 400h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656557%22 d=%22M1100 400h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1200 400h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565651a%22 d=%22M1300 400h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656503%22 d=%22M1400 400h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1500 400h100v100h-100zM1600 400h100v100h-100zM1700 400h100v100h-100zM1800 400h100v100h-100zM1900 400h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565654b%22 d=%22M0 500h100v100H0z%22%2F%3E%3Cpath fill=%22none%22 d=%22M100 500h100v100H100zM200 500h100v100H200zM300 500h100v100H300zM400 500h100v100H400zM500 500h100v100H500zM600 500h100v100H600z%22%2F%3E%3Cpath fill=%22%236565656a%22 d=%22M700 500h100v100H700z%22%2F%3E%3Cpath fill=%22%2365656559%22 d=%22M800 500h100v100H800z%22%2F%3E%3Cpath fill=%22%2365656507%22 d=%22M900 500h100v100H900z%22%2F%3E%3Cpath fill=%22%2365656505%22 d=%22M1000 500h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1100 500h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656586%22 d=%22M1200 500h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656577%22 d=%22M1300 500h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1400 500h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656532%22 d=%22M1500 500h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1600 500h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656571%22 d=%22M1700 500h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656526%22 d=%22M1800 500h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 500h100v100h-100zM0 600h100v100H0zM100 600h100v100H100z%22%2F%3E%3Cpath fill=%22%2365656587%22 d=%22M200 600h100v100H200z%22%2F%3E%3Cpath fill=%22none%22 d=%22M300 600h100v100H300z%22%2F%3E%3Cpath fill=%22%2365656574%22 d=%22M400 600h100v100H400z%22%2F%3E%3Cpath fill=%22%2365656543%22 d=%22M500 600h100v100H500z%22%2F%3E%3Cpath fill=%22%2365656528%22 d=%22M600 600h100v100H600z%22%2F%3E%3Cpath fill=%22none%22 d=%22M700 600h100v100H700zM800 600h100v100H800zM900 600h100v100H900zM1000 600h100v100h-100zM1100 600h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656502%22 d=%22M1200 600h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 600h100v100h-100zM1400 600h100v100h-100zM1500 600h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565656c%22 d=%22M1600 600h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1700 600h100v100h-100zM1800 600h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565653d%22 d=%22M1900 600h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M0 700h100v100H0zM100 700h100v100H100z%22%2F%3E%3Cpath fill=%22%236565655b%22 d=%22M200 700h100v100H200z%22%2F%3E%3Cpath fill=%22none%22 d=%22M300 700h100v100H300z%22%2F%3E%3Cpath fill=%22%2365656551%22 d=%22M400 700h100v100H400z%22%2F%3E%3Cpath fill=%22none%22 d=%22M500 700h100v100H500zM600 700h100v100H600zM700 700h100v100H700z%22%2F%3E%3Cpath fill=%22%2365656539%22 d=%22M800 700h100v100H800z%22%2F%3E%3Cpath fill=%22none%22 d=%22M900 700h100v100H900zM1000 700h100v100h-100zM1100 700h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656543%22 d=%22M1200 700h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656555%22 d=%22M1300 700h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656541%22 d=%22M1400 700h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656509%22 d=%22M1500 700h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1600 700h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656554%22 d=%22M1700 700h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1800 700h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656565%22 d=%22M1900 700h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565654d%22 d=%22M0 800h100v100H0z%22%2F%3E%3Cpath fill=%22none%22 d=%22M100 800h100v100H100zM200 800h100v100H200zM300 800h100v100H300zM400 800h100v100H400zM500 800h100v100H500zM600 800h100v100H600zM700 800h100v100H700z%22%2F%3E%3Cpath fill=%22%2365656570%22 d=%22M800 800h100v100H800z%22%2F%3E%3Cpath fill=%22none%22 d=%22M900 800h100v100H900zM1000 800h100v100h-100zM1100 800h100v100h-100zM1200 800h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656555%22 d=%22M1300 800h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1400 800h100v100h-100zM1500 800h100v100h-100zM1600 800h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565654b%22 d=%22M1700 800h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1800 800h100v100h-100zM1900 800h100v100h-100zM0 900h100v100H0zM100 900h100v100H100zM200 900h100v100H200zM300 900h100v100H300zM400 900h100v100H400zM500 900h100v100H500zM600 900h100v100H600zM700 900h100v100H700zM800 900h100v100H800z%22%2F%3E%3Cpath fill=%22%236565656e%22 d=%22M900 900h100v100H900z%22%2F%3E%3Cpath fill=%22%2365656577%22 d=%22M1000 900h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1100 900h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565651c%22 d=%22M1200 900h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1300 900h100v100h-100zM1400 900h100v100h-100zM1500 900h100v100h-100zM1600 900h100v100h-100zM1700 900h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656516%22 d=%22M1800 900h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 900h100v100h-100zM0 1000h100v100H0z%22%2F%3E%3Cpath fill=%22%2365656576%22 d=%22M100 1000h100v100H100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M200 1000h100v100H200zM300 1000h100v100H300zM400 1000h100v100H400zM500 1000h100v100H500z%22%2F%3E%3Cpath fill=%22%2365656555%22 d=%22M600 1000h100v100H600z%22%2F%3E%3Cpath fill=%22none%22 d=%22M700 1000h100v100H700zM800 1000h100v100H800z%22%2F%3E%3Cpath fill=%22%236565658c%22 d=%22M900 1000h100v100H900z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1000 1000h100v100h-100zM1100 1000h100v100h-100zM1200 1000h100v100h-100zM1300 1000h100v100h-100zM1400 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656549%22 d=%22M1500 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1600 1000h100v100h-100zM1700 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656553%22 d=%22M1800 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656516%22 d=%22M1900 1000h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M0 1100h100v100H0zM100 1100h100v100H100zM200 1100h100v100H200z%22%2F%3E%3Cpath fill=%22%236565657b%22 d=%22M300 1100h100v100H300z%22%2F%3E%3Cpath fill=%22%2365656556%22 d=%22M400 1100h100v100H400z%22%2F%3E%3Cpath fill=%22%2365656569%22 d=%22M500 1100h100v100H500z%22%2F%3E%3Cpath fill=%22%236565654a%22 d=%22M600 1100h100v100H600z%22%2F%3E%3Cpath fill=%22none%22 d=%22M700 1100h100v100H700z%22%2F%3E%3Cpath fill=%22%2365656503%22 d=%22M800 1100h100v100H800z%22%2F%3E%3Cpath fill=%22none%22 d=%22M900 1100h100v100H900zM1000 1100h100v100h-100zM1100 1100h100v100h-100zM1200 1100h100v100h-100zM1300 1100h100v100h-100zM1400 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656518%22 d=%22M1500 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1600 1100h100v100h-100zM1700 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656564%22 d=%22M1800 1100h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 1100h100v100h-100zM0 1200h100v100H0zM100 1200h100v100H100zM200 1200h100v100H200zM300 1200h100v100H300zM400 1200h100v100H400zM500 1200h100v100H500z%22%2F%3E%3Cpath fill=%22%236565650a%22 d=%22M600 1200h100v100H600z%22%2F%3E%3Cpath fill=%22%2365656565%22 d=%22M700 1200h100v100H700z%22%2F%3E%3Cpath fill=%22none%22 d=%22M800 1200h100v100H800zM900 1200h100v100H900zM1000 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656544%22 d=%22M1100 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1200 1200h100v100h-100zM1300 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656568%22 d=%22M1400 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1500 1200h100v100h-100zM1600 1200h100v100h-100zM1700 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656563%22 d=%22M1800 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1900 1200h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656565%22 d=%22M0 1300h100v100H0z%22%2F%3E%3Cpath fill=%22none%22 d=%22M100 1300h100v100H100zM200 1300h100v100H200zM300 1300h100v100H300zM400 1300h100v100H400z%22%2F%3E%3Cpath fill=%22%2365656545%22 d=%22M500 1300h100v100H500z%22%2F%3E%3Cpath fill=%22%2365656549%22 d=%22M600 1300h100v100H600z%22%2F%3E%3Cpath fill=%22%236565651d%22 d=%22M700 1300h100v100H700z%22%2F%3E%3Cpath fill=%22%2365656585%22 d=%22M800 1300h100v100H800z%22%2F%3E%3Cpath fill=%22%2365656580%22 d=%22M900 1300h100v100H900z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1000 1300h100v100h-100zM1100 1300h100v100h-100zM1200 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22%236565652c%22 d=%22M1300 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1400 1300h100v100h-100zM1500 1300h100v100h-100zM1600 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22%2365656540%22 d=%22M1700 1300h100v100h-100z%22%2F%3E%3Cpath fill=%22none%22 d=%22M1800 1300h100v100h-100zM1900 1300h100v100h-100z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CradialGradient id=%22a%22%3E%3Cstop offset=%220%22 stop-color=%22%23fff%22 stop-opacity=%22.838%22%2F%3E%3Cstop offset=%2286.5%25%22 stop-color=%22%23fff%22 stop-opacity=%220%22%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E");
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,89 @@
1
+ @layer components {
2
+ /* Base pf-rating styles */
3
+ .pf-rating {
4
+ display: inline-flex;
5
+ align-items: stretch;
6
+
7
+ & input {
8
+ appearance: none;
9
+ position: absolute;
10
+ inset-inline-start: 9999px;
11
+
12
+ &[disabled] {
13
+ display: none;
14
+ }
15
+ }
16
+ }
17
+
18
+ /* pf-rating on state */
19
+ .pf-rating-on {
20
+ @apply text-yellow-400;
21
+ }
22
+
23
+ /* pf-rating off state */
24
+ .pf-rating-off {
25
+ @apply text-muted-foreground;
26
+ }
27
+
28
+ /* pf-rating label base styles */
29
+ .pf-rating-label {
30
+ display: inline-flex !important;
31
+ align-items: center;
32
+
33
+ & .pf-rating-on {
34
+ display: none !important;
35
+ }
36
+
37
+ & .pf-rating-off {
38
+ display: inline-flex !important;
39
+ }
40
+ }
41
+
42
+ /* Hover and checked states for pf-rating label */
43
+ .pf-rating:hover label.pf-rating-label,
44
+ label.pf-rating-label,
45
+ label.pf-rating-label.checked,
46
+ div.pf-rating-label.checked {
47
+ & .pf-rating-on {
48
+ display: inline-flex !important;
49
+ }
50
+
51
+ & .pf-rating-off {
52
+ display: none !important;
53
+ }
54
+ }
55
+
56
+ /* Sibling hover and checked states */
57
+ label.pf-rating-label:hover ~ label.pf-rating-label,
58
+ .pf-rating-input:checked ~ .pf-rating-label {
59
+ & .pf-rating-on {
60
+ display: none !important;
61
+ }
62
+
63
+ & .pf-rating-off {
64
+ display: inline-flex !important;
65
+ }
66
+ }
67
+
68
+ /* Indeterminate pf-rating label state */
69
+ .pf-rating-label.indeterminate {
70
+ position: relative;
71
+
72
+ & .pf-rating-on {
73
+ display: inline-flex !important;
74
+ position: absolute;
75
+ z-index: 1;
76
+ overflow: hidden;
77
+ inset-inline-start: 0;
78
+ }
79
+
80
+ & .pf-rating-off {
81
+ display: inline-flex !important;
82
+ }
83
+ }
84
+
85
+ /* Cursor for label */
86
+ label.pf-rating-label {
87
+ cursor: pointer;
88
+ }
89
+ }