@tenerife.music/ui 0.0.7 → 1.0.0
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 +168 -136
- package/dist/applyMode-Bh7sEqT6.js +144 -0
- package/dist/applyMode-DCenL-Bg.cjs +2 -0
- package/dist/brand-C5R2semX.js +45 -0
- package/dist/brand-DQb18Frh.cjs +2 -0
- package/dist/colors-BGRiFoSZ.cjs +2 -0
- package/dist/colors-ClemXPPi.js +377 -0
- package/dist/components/admin/Dashboard.d.ts.map +1 -1
- package/dist/components/admin/UserManagement.d.ts.map +1 -1
- package/dist/components/auth/LoginForm.d.ts.map +1 -1
- package/dist/components/auth/ProfileCard.d.ts.map +1 -1
- package/dist/components/auth/RegisterForm.d.ts.map +1 -1
- package/dist/components/cards/EventCard.d.ts.map +1 -1
- package/dist/components/cards/VenueCard.d.ts.map +1 -1
- package/dist/components/controls/LanguageSelector.d.ts.map +1 -1
- package/dist/components/data/List.d.ts.map +1 -1
- package/dist/components/data/Table.d.ts +2 -2
- package/dist/components/data/Table.d.ts.map +1 -1
- package/dist/components/data/Timeline.d.ts.map +1 -1
- package/dist/components/feedback/Alert.d.ts +1 -1
- package/dist/components/feedback/Alert.d.ts.map +1 -1
- package/dist/components/feedback/ConsentBanner.d.ts.map +1 -1
- package/dist/components/feedback/Progress.d.ts.map +1 -1
- package/dist/components/feedback/Skeleton.d.ts.map +1 -1
- package/dist/components/filters/DateRangePicker.d.ts.map +1 -1
- package/dist/components/filters/FilterBar.d.ts +14 -1
- package/dist/components/filters/FilterBar.d.ts.map +1 -1
- package/dist/components/filters/FilterSelect.d.ts +2 -2
- package/dist/components/filters/FilterSelect.d.ts.map +1 -1
- package/dist/components/filters/PriceRangeSlider.d.ts.map +1 -1
- package/dist/components/filters/SearchFilters.d.ts.map +1 -1
- package/dist/components/filters/SearchInput.d.ts +1 -1
- package/dist/components/filters/SearchInput.d.ts.map +1 -1
- package/dist/components/filters/types.d.ts +9 -9
- package/dist/components/filters/types.d.ts.map +1 -1
- package/dist/components/forms/FormInput.d.ts +3 -7
- package/dist/components/forms/FormInput.d.ts.map +1 -1
- package/dist/components/forms/FormSelect.d.ts.map +1 -1
- package/dist/components/forms/FormTextarea.d.ts +2 -6
- package/dist/components/forms/FormTextarea.d.ts.map +1 -1
- package/dist/components/icons/TrendingIcon.d.ts.map +1 -1
- package/dist/components/image/Image.d.ts +4 -4
- package/dist/components/image/Image.d.ts.map +1 -1
- package/dist/components/layout/Container.d.ts +2 -2
- package/dist/components/layout/Container.d.ts.map +1 -1
- package/dist/components/layout/Flex.d.ts +1 -1
- package/dist/components/layout/Flex.d.ts.map +1 -1
- package/dist/components/layout/Footer.d.ts.map +1 -1
- package/dist/components/layout/Grid.d.ts +3 -3
- package/dist/components/layout/Grid.d.ts.map +1 -1
- package/dist/components/layout/ModeHero.d.ts.map +1 -1
- package/dist/components/layout/Navbar.d.ts.map +1 -1
- package/dist/components/layout/Section.d.ts +2 -2
- package/dist/components/layout/Section.d.ts.map +1 -1
- package/dist/components/layout/Stack.d.ts +1 -1
- package/dist/components/layout/Stack.d.ts.map +1 -1
- package/dist/components/menus/DropdownMenu.d.ts +2 -2
- package/dist/components/menus/DropdownMenu.d.ts.map +1 -1
- package/dist/components/menus/NavigationMenu.d.ts +2 -2
- package/dist/components/menus/NavigationMenu.d.ts.map +1 -1
- package/dist/components/menus/Tabs.d.ts +2 -2
- package/dist/components/menus/Tabs.d.ts.map +1 -1
- package/dist/components/modals/ConfirmDialog.d.ts.map +1 -1
- package/dist/components/modals/CustomDialog.d.ts +1 -2
- package/dist/components/modals/CustomDialog.d.ts.map +1 -1
- package/dist/components/modals/Modal.d.ts +2 -2
- package/dist/components/modals/Modal.d.ts.map +1 -1
- package/dist/components/modals/ModalProvider.d.ts +2 -2
- package/dist/components/modals/ModalProvider.d.ts.map +1 -1
- package/dist/components/modals/SimpleModal.d.ts +1 -2
- package/dist/components/modals/SimpleModal.d.ts.map +1 -1
- package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/navigation/Pagination.d.ts.map +1 -1
- package/dist/components/overlays/OverlayPortal.d.ts +3 -3
- package/dist/components/overlays/OverlayPortal.d.ts.map +1 -1
- package/dist/components/overlays/Popover.d.ts +11 -11
- package/dist/components/overlays/Popover.d.ts.map +1 -1
- package/dist/components/overlays/Tooltip.d.ts +9 -9
- package/dist/components/overlays/Tooltip.d.ts.map +1 -1
- package/dist/components/primitives/Badge.d.ts +1 -1
- package/dist/components/primitives/Badge.d.ts.map +1 -1
- package/dist/components/primitives/Button.d.ts +1 -1
- package/dist/components/primitives/Button.d.ts.map +1 -1
- package/dist/components/primitives/Card.d.ts +1 -1
- package/dist/components/primitives/Card.d.ts.map +1 -1
- package/dist/components/primitives/Divider.d.ts.map +1 -1
- package/dist/components/primitives/Link.d.ts +2 -2
- package/dist/components/primitives/Link.d.ts.map +1 -1
- package/dist/components/primitives/ThemeSwitch.d.ts.map +1 -1
- package/dist/components/primitives/Typography.d.ts +4 -4
- package/dist/components/primitives/Typography.d.ts.map +1 -1
- package/dist/components/search/SearchBar.d.ts.map +1 -1
- package/dist/components/sections/ArticlesSection.d.ts.map +1 -1
- package/dist/components/sections/TrendingSection.d.ts +7 -3
- package/dist/components/sections/TrendingSection.d.ts.map +1 -1
- package/dist/components/skeletons/EventCardSkeleton.d.ts.map +1 -1
- package/dist/components/skeletons/VenueCardSkeleton.d.ts.map +1 -1
- package/dist/components/toasts/Toast.d.ts +2 -2
- package/dist/components/toasts/Toast.d.ts.map +1 -1
- package/dist/components/toasts/ToastProvider.d.ts +3 -3
- package/dist/components/toasts/ToastProvider.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +2 -2
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/card.d.ts +1 -1
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/dialog.d.ts +2 -2
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/label.d.ts +1 -1
- package/dist/components/ui/label.d.ts.map +1 -1
- package/dist/components/ui/toast.d.ts +3 -3
- package/dist/components/ui/toast.d.ts.map +1 -1
- package/dist/components/ui/toaster.d.ts.map +1 -1
- package/dist/components/ui/tooltip.d.ts +2 -2
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/dark-Cvoy1uFT.js +30 -0
- package/dist/dark-OOhiqt1q.cjs +2 -0
- package/dist/default-BKgH1D9-.js +8 -0
- package/dist/default-Ddg7Haf2.cjs +2 -0
- package/dist/hooks/use-toast.d.ts +3 -3
- package/dist/hooks/use-toast.d.ts.map +1 -1
- package/dist/hooks/useDebounce.d.ts +20 -0
- package/dist/hooks/useDebounce.d.ts.map +1 -0
- package/dist/hooks/useModal.d.ts +5 -5
- package/dist/hooks/useModal.d.ts.map +1 -1
- package/dist/hooks/useToast.d.ts +2 -2
- package/dist/hooks/useToast.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +17 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +2170 -2196
- package/dist/preset.cjs +1 -1
- package/dist/preset.d.ts.map +1 -1
- package/dist/preset.mjs +1 -1
- package/dist/radius-CAu4qr9R.js +185 -0
- package/dist/radius-Cz6tayZG.cjs +2 -0
- package/dist/theme/ThemeProvider.d.ts +45 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/applyMode.d.ts +31 -0
- package/dist/theme/applyMode.d.ts.map +1 -1
- package/dist/theme/index.cjs +1 -1
- package/dist/theme/index.d.ts +2 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.mjs +102 -97
- package/dist/theme/motion.d.ts.map +1 -1
- package/dist/theme/typography.d.ts.map +1 -1
- package/dist/themes/brand.d.ts +7 -0
- package/dist/themes/brand.d.ts.map +1 -0
- package/dist/themes/dark.d.ts +7 -0
- package/dist/themes/dark.d.ts.map +1 -0
- package/dist/themes/default.d.ts +7 -0
- package/dist/themes/default.d.ts.map +1 -0
- package/dist/themes/index.d.ts +22 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/types.d.ts +64 -0
- package/dist/themes/types.d.ts.map +1 -0
- package/dist/tokens/colors.d.ts +260 -38
- package/dist/tokens/colors.d.ts.map +1 -1
- package/dist/tokens/css-variables.d.ts +250 -0
- package/dist/tokens/css-variables.d.ts.map +1 -0
- package/dist/tokens/index.cjs +4 -1
- package/dist/tokens/index.d.ts +4 -1
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.mjs +1025 -167
- package/dist/tokens/motion.d.ts +358 -0
- package/dist/tokens/motion.d.ts.map +1 -0
- package/dist/tokens/radius.d.ts +130 -2
- package/dist/tokens/radius.d.ts.map +1 -1
- package/dist/tokens/shadows.d.ts +172 -0
- package/dist/tokens/shadows.d.ts.map +1 -0
- package/dist/tokens/spacing.d.ts +155 -1
- package/dist/tokens/spacing.d.ts.map +1 -1
- package/dist/tokens/typography.d.ts +285 -21
- package/dist/tokens/typography.d.ts.map +1 -1
- package/package.json +53 -18
- package/dist/radius-CuOZD6Mk.cjs +0 -2
- package/dist/radius-NOytgRst.js +0 -22
package/README.md
CHANGED
|
@@ -1,197 +1,229 @@
|
|
|
1
|
-
|
|
1
|
+
🌴 Tenerife UI — Premium React Component Library
|
|
2
|
+
Elegant. Token-driven. Fully Typed. Built for Luxury Interfaces.
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+

|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
## 📦 Installation
|
|
9
|
-
|
|
10
|
-
```bash
|
|
6
|
+
<p align="center"> <img src="https://raw.githubusercontent.com/Tureckiy-zart/tenerife-ui/main/.github/banner.png" width="100%" /> </p> <p align="center"> <strong> A high-end, fully tokenized design system crafted for modern React apps.<br/> Built with Tailwind, CVA, TypeScript and a luxury-first aesthetic. </strong> </p> <p align="center"> <img src="https://img.shields.io/badge/React-18+-blue?style=for-the-badge"/> <img src="https://img.shields.io/badge/TailwindCSS-3.4-38b2ac?style=for-the-badge"/> <img src="https://img.shields.io/badge/TypeScript-Strict-blue?style=for-the-badge"/> <img src="https://img.shields.io/badge/Design%20Tokens-Complete-purple?style=for-the-badge"/> <img src="https://img.shields.io/badge/CVA-Variants-success?style=for-the-badge"/> </p>
|
|
7
|
+
🚀 Quick Start
|
|
11
8
|
npm install @tenerife.music/ui
|
|
12
9
|
# or
|
|
13
10
|
pnpm add @tenerife.music/ui
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
import { Button, Card, EventCard } from '@tenerife.music/ui';
|
|
22
|
-
import '@tenerife.music/ui/styles'; // Import styles
|
|
23
|
-
|
|
24
|
-
function App() {
|
|
25
|
-
return (
|
|
26
|
-
<div>
|
|
27
|
-
<Button variant="default">Click me</Button>
|
|
28
|
-
<Card>
|
|
29
|
-
<CardHeader>Title</CardHeader>
|
|
30
|
-
<CardContent>Content</CardContent>
|
|
31
|
-
</Card>
|
|
32
|
-
</div>
|
|
33
|
-
);
|
|
11
|
+
|
|
12
|
+
Use a component:
|
|
13
|
+
|
|
14
|
+
import { Button } from "@tenerife.music/ui";
|
|
15
|
+
|
|
16
|
+
export function Demo() {
|
|
17
|
+
return <Button variant="primary">Book Now</Button>;
|
|
34
18
|
}
|
|
35
|
-
```
|
|
36
19
|
|
|
37
|
-
|
|
20
|
+
🎨 Tenerife UI Design Philosophy
|
|
38
21
|
|
|
39
|
-
|
|
22
|
+
Tenerife UI создана для:
|
|
40
23
|
|
|
41
|
-
|
|
24
|
+
luxury проектов
|
|
42
25
|
|
|
43
|
-
|
|
44
|
-
- **Day/Night Themes**: Automatic theme switching support
|
|
45
|
-
- **TypeScript**: Full type safety with TypeScript
|
|
46
|
-
- **Tailwind CSS**: Built with Tailwind CSS for styling
|
|
47
|
-
- **shadcn/ui Based**: Built on top of shadcn/ui primitives
|
|
48
|
-
- **Accessible**: ARIA-compliant components via Radix UI
|
|
49
|
-
- **Tree-shakeable**: Import only what you need
|
|
26
|
+
продвинутых приложений
|
|
50
27
|
|
|
51
|
-
|
|
28
|
+
маркетплейсов
|
|
52
29
|
|
|
53
|
-
|
|
30
|
+
платформ с глубокой эстетикой
|
|
54
31
|
|
|
55
|
-
|
|
56
|
-
2. **Tenerife Primitives**: Re-exported with Tenerife branding
|
|
57
|
-
3. **Complex Components**: Higher-level components (EventCard, VenueCard, etc.)
|
|
32
|
+
темных и светлых тем
|
|
58
33
|
|
|
59
|
-
|
|
34
|
+
брендированных интерфейсов
|
|
60
35
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- **Forms**: FormInput, FormSelect, FormTextarea
|
|
64
|
-
- **Feedback**: Alert, Progress, Skeleton, Toast
|
|
65
|
-
- **Navigation**: Breadcrumbs, Pagination, Tabs
|
|
66
|
-
- **Data**: Table, List, Timeline
|
|
67
|
-
- **Cards**: EventCard, VenueCard
|
|
68
|
-
- **Modals**: Modal, Dialog, ConfirmDialog
|
|
36
|
+
Это библиотека не «ещё одна коллекция кнопок».
|
|
37
|
+
Это — архитектурно правильная, премиальная, коммерческая дизайн-система.
|
|
69
38
|
|
|
70
|
-
|
|
39
|
+
🧩 Component Overview
|
|
40
|
+
UI Primitives
|
|
71
41
|
|
|
72
|
-
|
|
42
|
+
Button
|
|
73
43
|
|
|
74
|
-
|
|
75
|
-
// Set theme
|
|
76
|
-
document.documentElement.setAttribute('data-mode', 'day'); // or 'night'
|
|
77
|
-
```
|
|
44
|
+
Input / Textarea / Select
|
|
78
45
|
|
|
79
|
-
|
|
46
|
+
Label
|
|
80
47
|
|
|
81
|
-
|
|
48
|
+
Card
|
|
82
49
|
|
|
83
|
-
|
|
84
|
-
import { Button, Input, Card } from '@tenerife.music/ui';
|
|
50
|
+
Badge
|
|
85
51
|
|
|
86
|
-
|
|
87
|
-
<Input placeholder="Enter text..." />
|
|
88
|
-
<Card>Card content</Card>
|
|
89
|
-
```
|
|
52
|
+
Overlays
|
|
90
53
|
|
|
91
|
-
|
|
54
|
+
Modal
|
|
92
55
|
|
|
93
|
-
|
|
94
|
-
import { EventCard, VenueCard, SearchBar } from '@tenerife.music/ui';
|
|
56
|
+
Tooltip
|
|
95
57
|
|
|
96
|
-
|
|
97
|
-
<VenueCard venue={venueData} />
|
|
98
|
-
<SearchBar onSearch={handleSearch} />
|
|
99
|
-
```
|
|
58
|
+
Popover
|
|
100
59
|
|
|
101
|
-
|
|
60
|
+
Toast
|
|
102
61
|
|
|
103
|
-
|
|
104
|
-
import { FormInput, FormSelect } from '@tenerife.music/ui';
|
|
105
|
-
import { useForm } from 'react-hook-form';
|
|
62
|
+
Search & Filters
|
|
106
63
|
|
|
107
|
-
|
|
64
|
+
SearchBar
|
|
108
65
|
|
|
109
|
-
|
|
110
|
-
<FormSelect {...register('category')} options={options} />
|
|
111
|
-
```
|
|
66
|
+
FilterBar
|
|
112
67
|
|
|
113
|
-
|
|
68
|
+
FilterSelect
|
|
114
69
|
|
|
115
|
-
|
|
70
|
+
Layout
|
|
116
71
|
|
|
117
|
-
|
|
118
|
-
- pnpm (recommended) or npm
|
|
72
|
+
Grid
|
|
119
73
|
|
|
120
|
-
|
|
74
|
+
Section
|
|
121
75
|
|
|
122
|
-
|
|
123
|
-
# Clone repository
|
|
124
|
-
git clone https://github.com/tenerife-music/tenerife-ui.git
|
|
125
|
-
cd tenerife-ui
|
|
76
|
+
Navbar
|
|
126
77
|
|
|
127
|
-
|
|
128
|
-
pnpm install
|
|
78
|
+
Hero / ModeHero
|
|
129
79
|
|
|
130
|
-
|
|
131
|
-
|
|
80
|
+
Data
|
|
81
|
+
|
|
82
|
+
Table
|
|
83
|
+
|
|
84
|
+
List
|
|
85
|
+
|
|
86
|
+
Complex
|
|
87
|
+
|
|
88
|
+
VenueCard
|
|
89
|
+
|
|
90
|
+
EventCard
|
|
91
|
+
|
|
92
|
+
CTA Blocks
|
|
93
|
+
|
|
94
|
+
📦 Core System Overview (DO NOT REMOVE)
|
|
95
|
+
|
|
96
|
+
Ключевой системный блок.
|
|
97
|
+
Не удалять, не переносить, не изменять структуру.
|
|
98
|
+
|
|
99
|
+
🏗 Installation
|
|
100
|
+
npm install @tenerife.music/ui
|
|
101
|
+
|
|
102
|
+
import { ThemeProvider } from "@tenerife.music/ui";
|
|
103
|
+
|
|
104
|
+
export default function App() {
|
|
105
|
+
return (
|
|
106
|
+
<ThemeProvider>
|
|
107
|
+
<YourApp />
|
|
108
|
+
</ThemeProvider>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
🎨 Design Tokens System
|
|
113
|
+
Цвета
|
|
114
|
+
|
|
115
|
+
100+ токенов
|
|
116
|
+
|
|
117
|
+
Полные оттеночные шкалы
|
|
118
|
+
|
|
119
|
+
surface tokens
|
|
132
120
|
|
|
133
|
-
|
|
134
|
-
pnpm build
|
|
121
|
+
semantic + text tokens
|
|
135
122
|
|
|
136
|
-
|
|
137
|
-
pnpm test
|
|
138
|
-
```
|
|
123
|
+
day/night mode
|
|
139
124
|
|
|
140
|
-
|
|
125
|
+
Типографика
|
|
141
126
|
|
|
142
|
-
|
|
143
|
-
- `pnpm dev` - Watch mode for development
|
|
144
|
-
- `pnpm test` - Run tests
|
|
145
|
-
- `pnpm test:coverage` - Run tests with coverage
|
|
146
|
-
- `pnpm storybook` - Start Storybook
|
|
147
|
-
- `pnpm lint` - Lint code
|
|
148
|
-
- `pnpm typecheck` - Type check
|
|
127
|
+
fluid clamp scale
|
|
149
128
|
|
|
150
|
-
|
|
129
|
+
13 стилей
|
|
151
130
|
|
|
152
|
-
|
|
131
|
+
9 весов
|
|
153
132
|
|
|
154
|
-
|
|
155
|
-
# Update version
|
|
156
|
-
npm version patch|minor|major
|
|
133
|
+
6 line-heights
|
|
157
134
|
|
|
158
|
-
|
|
159
|
-
npm publish
|
|
160
|
-
```
|
|
135
|
+
6 tracking options
|
|
161
136
|
|
|
162
|
-
|
|
137
|
+
Spacing
|
|
163
138
|
|
|
164
|
-
|
|
139
|
+
scale 0–96
|
|
165
140
|
|
|
166
|
-
|
|
167
|
-
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
168
|
-
3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
|
|
169
|
-
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
170
|
-
5. Open a Pull Request
|
|
141
|
+
semantic tokens
|
|
171
142
|
|
|
172
|
-
|
|
143
|
+
layout tokens
|
|
173
144
|
|
|
174
|
-
|
|
145
|
+
Shadows
|
|
175
146
|
|
|
176
|
-
|
|
147
|
+
elevation 1–5
|
|
177
148
|
|
|
178
|
-
|
|
179
|
-
- [Issues](https://github.com/tenerife-music/tenerife-ui/issues)
|
|
180
|
-
- [Changelog](CHANGELOG.md)
|
|
149
|
+
colored shadows
|
|
181
150
|
|
|
182
|
-
|
|
151
|
+
glow
|
|
152
|
+
|
|
153
|
+
focus rings
|
|
154
|
+
|
|
155
|
+
Radius
|
|
156
|
+
|
|
157
|
+
none → 3xl
|
|
158
|
+
|
|
159
|
+
full-radius
|
|
160
|
+
|
|
161
|
+
Motion
|
|
162
|
+
|
|
163
|
+
easing
|
|
164
|
+
|
|
165
|
+
durations
|
|
166
|
+
|
|
167
|
+
transitions
|
|
168
|
+
|
|
169
|
+
⚙️ How Tenerife UI Works
|
|
170
|
+
★ Token-first architecture
|
|
171
|
+
|
|
172
|
+
Никаких raw стилей.
|
|
173
|
+
Всё — через токены.
|
|
174
|
+
|
|
175
|
+
★ Tailwind + CSS Variables
|
|
176
|
+
|
|
177
|
+
Цвета, spacing, shadows, radius — генерируются автоматически.
|
|
178
|
+
|
|
179
|
+
★ CVA для вариативности
|
|
180
|
+
|
|
181
|
+
Компоненты имеют единый Variant API.
|
|
182
|
+
|
|
183
|
+
★ Strict TypeScript
|
|
184
|
+
|
|
185
|
+
Идеальный DX и подсказки.
|
|
186
|
+
|
|
187
|
+
★ Theme Engine
|
|
188
|
+
|
|
189
|
+
Instant day/night mode.
|
|
190
|
+
|
|
191
|
+
🧱 Folder Structure
|
|
192
|
+
src/
|
|
193
|
+
components/
|
|
194
|
+
tokens/
|
|
195
|
+
theme/
|
|
196
|
+
layouts/
|
|
197
|
+
overlays/
|
|
198
|
+
search/
|
|
199
|
+
data/
|
|
200
|
+
|
|
201
|
+
📸 Component Preview
|
|
202
|
+
|
|
203
|
+
[](https://Tureckiy-zart.github.io/tenerife-ui/)
|
|
204
|
+
|
|
205
|
+
(Добавить скриншоты/видео позже)
|
|
206
|
+
|
|
207
|
+
🔧 Development
|
|
208
|
+
pnpm install
|
|
209
|
+
pnpm dev
|
|
210
|
+
pnpm storybook
|
|
183
211
|
|
|
184
|
-
|
|
185
|
-
- [Radix UI](https://www.radix-ui.com/) - Accessible component primitives
|
|
186
|
-
- [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework
|
|
212
|
+
🛠 Contributing
|
|
187
213
|
|
|
188
|
-
|
|
214
|
+
Before contributing, please read:
|
|
189
215
|
|
|
190
|
-
|
|
191
|
-
**Last Updated:** 2025-01-29
|
|
216
|
+
TYPING_STANDARD.md
|
|
192
217
|
|
|
218
|
+
STRUCTURE_OF_WORK.md
|
|
193
219
|
|
|
220
|
+
COMPONENT_GUIDELINES.md
|
|
194
221
|
|
|
222
|
+
📜 License
|
|
195
223
|
|
|
224
|
+
MIT — Commercial-friendly.
|
|
196
225
|
|
|
226
|
+
🎤 Author’s Note
|
|
197
227
|
|
|
228
|
+
Tenerife UI — это мой личный подход к созданию коммерческой, красивой и премиальной UI-системы.
|
|
229
|
+
Если ты строишь интерфейсы с эстетикой “дорого, стильно и технологично” — ты дома
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { p as D, a as I, s as S, b as P, c as h, d as C, t as b } from "./colors-ClemXPPi.js";
|
|
3
|
+
const $ = {
|
|
4
|
+
default: () => import("./default-BKgH1D9-.js").then((e) => e.defaultTheme),
|
|
5
|
+
dark: () => import("./dark-Cvoy1uFT.js").then((e) => e.darkTheme),
|
|
6
|
+
brand: () => import("./brand-C5R2semX.js").then((e) => e.brandTheme)
|
|
7
|
+
};
|
|
8
|
+
async function F(e) {
|
|
9
|
+
const t = $[e];
|
|
10
|
+
if (!t)
|
|
11
|
+
throw new Error(`Theme "${e}" not found`);
|
|
12
|
+
return await t();
|
|
13
|
+
}
|
|
14
|
+
const k = "data-mode", g = "data-theme-name", E = "data-theme", T = "dark";
|
|
15
|
+
function L(e = "day", t = "tm_mode", n = !0) {
|
|
16
|
+
if (typeof window > "u") return e;
|
|
17
|
+
const r = document.documentElement, o = r.getAttribute(k);
|
|
18
|
+
if (o === "day" || o === "night")
|
|
19
|
+
return o;
|
|
20
|
+
const s = r.getAttribute(E);
|
|
21
|
+
if (s === "day" || s === "night")
|
|
22
|
+
return s;
|
|
23
|
+
try {
|
|
24
|
+
const a = localStorage.getItem(t);
|
|
25
|
+
if (a === "day" || a === "night")
|
|
26
|
+
return a;
|
|
27
|
+
const u = localStorage.getItem("theme");
|
|
28
|
+
if (u === "dark") return "night";
|
|
29
|
+
if (u === "light") return "day";
|
|
30
|
+
} catch {
|
|
31
|
+
}
|
|
32
|
+
return n && typeof window < "u" ? window.matchMedia("(prefers-color-scheme: dark)").matches ? "night" : "day" : e;
|
|
33
|
+
}
|
|
34
|
+
let i = null;
|
|
35
|
+
async function _(e) {
|
|
36
|
+
if (e === "default")
|
|
37
|
+
return i = null, null;
|
|
38
|
+
try {
|
|
39
|
+
const t = await F(e);
|
|
40
|
+
return i = t, t;
|
|
41
|
+
} catch (t) {
|
|
42
|
+
return console.warn(`Failed to load theme "${e}":`, t), i = null, null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function f(e, t) {
|
|
46
|
+
return t ? { ...e, ...t } : e;
|
|
47
|
+
}
|
|
48
|
+
function l(e, t) {
|
|
49
|
+
return t ? { ...e, ...t } : e;
|
|
50
|
+
}
|
|
51
|
+
function x(e) {
|
|
52
|
+
const t = i, n = f(D, t == null ? void 0 : t.primaryColors), r = f(I, t == null ? void 0 : t.accentColors), o = f(S, t == null ? void 0 : t.secondaryColors), s = {
|
|
53
|
+
day: l(P.day, t == null ? void 0 : t.baseColorsDay),
|
|
54
|
+
night: l(P.night, t == null ? void 0 : t.baseColorsNight)
|
|
55
|
+
}, a = {
|
|
56
|
+
day: l(h.day, t == null ? void 0 : t.surfaceColorsDay),
|
|
57
|
+
night: l(h.night, t == null ? void 0 : t.surfaceColorsNight)
|
|
58
|
+
}, u = {
|
|
59
|
+
day: l(C.day, t == null ? void 0 : t.semanticColorsDay),
|
|
60
|
+
night: l(C.night, t == null ? void 0 : t.semanticColorsNight)
|
|
61
|
+
}, m = {
|
|
62
|
+
day: l(b.day, t == null ? void 0 : t.textColorsDay),
|
|
63
|
+
night: l(b.night, t == null ? void 0 : t.textColorsNight)
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
primaryColors: n,
|
|
67
|
+
accentColors: r,
|
|
68
|
+
secondaryColors: o,
|
|
69
|
+
baseColors: s,
|
|
70
|
+
surfaceColors: a,
|
|
71
|
+
semanticColors: u,
|
|
72
|
+
textColors: m
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function M(e) {
|
|
76
|
+
if (typeof document > "u") return;
|
|
77
|
+
const t = document.documentElement, n = x(), {
|
|
78
|
+
primaryColors: r,
|
|
79
|
+
accentColors: o,
|
|
80
|
+
secondaryColors: s,
|
|
81
|
+
baseColors: a,
|
|
82
|
+
surfaceColors: u,
|
|
83
|
+
semanticColors: m,
|
|
84
|
+
textColors: A
|
|
85
|
+
} = n, y = a[e];
|
|
86
|
+
t.style.setProperty("--background", y.background), t.style.setProperty("--foreground", y.foreground), t.style.setProperty("--card", y.card), t.style.setProperty("--card-foreground", y.cardForeground), t.style.setProperty("--popover", y.popover), t.style.setProperty("--popover-foreground", y.popoverForeground), t.style.setProperty("--border", y.border), t.style.setProperty("--input", y.input), t.style.setProperty("--ring", y.ring);
|
|
87
|
+
const d = u[e];
|
|
88
|
+
t.style.setProperty("--surface-base", d.base), t.style.setProperty("--surface-elevated1", d.elevated1), t.style.setProperty("--surface-elevated2", d.elevated2), t.style.setProperty("--surface-elevated3", d.elevated3), t.style.setProperty("--surface-overlay", d.overlay), t.style.setProperty("--surface-glass", d.glass);
|
|
89
|
+
const c = m[e];
|
|
90
|
+
t.style.setProperty("--semantic-success", c.success), t.style.setProperty("--semantic-success-foreground", c.successForeground), t.style.setProperty("--semantic-error", c.error), t.style.setProperty("--semantic-error-foreground", c.errorForeground), t.style.setProperty("--semantic-warning", c.warning), t.style.setProperty("--semantic-warning-foreground", c.warningForeground), t.style.setProperty("--semantic-info", c.info), t.style.setProperty("--semantic-info-foreground", c.infoForeground);
|
|
91
|
+
const p = A[e];
|
|
92
|
+
t.style.setProperty("--text-primary", p.primary), t.style.setProperty("--text-secondary", p.secondary), t.style.setProperty("--text-tertiary", p.tertiary), t.style.setProperty("--text-muted", p.muted), t.style.setProperty("--text-inverse", p.inverse), t.style.setProperty("--primary-50", r[50]), t.style.setProperty("--primary-100", r[100]), t.style.setProperty("--primary-200", r[200]), t.style.setProperty("--primary-300", r[300]), t.style.setProperty("--primary-400", r[400]), t.style.setProperty("--primary-500", r[500]), t.style.setProperty("--primary-600", r[600]), t.style.setProperty("--primary-700", r[700]), t.style.setProperty("--primary-800", r[800]), t.style.setProperty("--primary-900", r[900]), t.style.setProperty("--primary-950", r[950]), t.style.setProperty("--accent-50", o[50]), t.style.setProperty("--accent-100", o[100]), t.style.setProperty("--accent-200", o[200]), t.style.setProperty("--accent-300", o[300]), t.style.setProperty("--accent-400", o[400]), t.style.setProperty("--accent-500", o[500]), t.style.setProperty("--accent-600", o[600]), t.style.setProperty("--accent-700", o[700]), t.style.setProperty("--accent-800", o[800]), t.style.setProperty("--accent-900", o[900]), t.style.setProperty("--accent-950", o[950]), t.style.setProperty("--secondary-50", s[50]), t.style.setProperty("--secondary-100", s[100]), t.style.setProperty("--secondary-200", s[200]), t.style.setProperty("--secondary-300", s[300]), t.style.setProperty("--secondary-400", s[400]), t.style.setProperty("--secondary-500", s[500]), t.style.setProperty("--secondary-600", s[600]), t.style.setProperty("--secondary-700", s[700]), t.style.setProperty("--secondary-800", s[800]), t.style.setProperty("--secondary-900", s[900]), t.style.setProperty("--secondary-950", s[950]), e === "day" ? (t.style.setProperty("--tm-primary", s[500]), t.style.setProperty("--tm-primary-foreground", "0 0% 100%"), t.style.setProperty("--tm-secondary", "0 0% 95.7%"), t.style.setProperty("--tm-secondary-foreground", "0 0% 6.7%"), t.style.setProperty("--tm-accent", "0 0% 89.8%"), t.style.setProperty("--tm-accent-foreground", "0 0% 6.7%")) : (t.style.setProperty("--tm-primary", o[500]), t.style.setProperty("--tm-primary-foreground", "0 0% 100%"), t.style.setProperty("--tm-secondary", "240 10% 7%"), t.style.setProperty("--tm-secondary-foreground", "0 0% 89.8%"), t.style.setProperty("--tm-accent", "240 10% 10%"), t.style.setProperty("--tm-accent-foreground", "0 0% 89.8%")), t.style.setProperty("--muted", y.card), t.style.setProperty("--muted-foreground", y.cardForeground), t.style.setProperty("--destructive", c.error), t.style.setProperty("--destructive-foreground", c.errorForeground);
|
|
93
|
+
}
|
|
94
|
+
async function w(e, t = "default") {
|
|
95
|
+
if (typeof document > "u") return;
|
|
96
|
+
await _(t);
|
|
97
|
+
const { documentElement: n, body: r } = document;
|
|
98
|
+
n.setAttribute(k, e), n.setAttribute(E, e), n.setAttribute(g, t), e === "night" ? n.classList.add(T) : n.classList.remove(T), M(e);
|
|
99
|
+
const o = x(), { background: s, foreground: a } = o.baseColors[e];
|
|
100
|
+
r && (r.dataset.mode = e, r.dataset.theme = t, r.style.backgroundColor = `hsl(${s})`, r.style.color = `hsl(${a})`);
|
|
101
|
+
}
|
|
102
|
+
function R(e) {
|
|
103
|
+
if (typeof document < "u") {
|
|
104
|
+
const n = document.documentElement.getAttribute(g) || "default";
|
|
105
|
+
w(e, n);
|
|
106
|
+
} else
|
|
107
|
+
w(e, "default");
|
|
108
|
+
}
|
|
109
|
+
function B(e = "default", t = "tm_theme") {
|
|
110
|
+
if (typeof window > "u") return e;
|
|
111
|
+
const r = document.documentElement.getAttribute(g);
|
|
112
|
+
if (r === "default" || r === "dark" || r === "brand")
|
|
113
|
+
return r;
|
|
114
|
+
try {
|
|
115
|
+
const o = localStorage.getItem(t);
|
|
116
|
+
if (o === "default" || o === "dark" || o === "brand")
|
|
117
|
+
return o;
|
|
118
|
+
} catch {
|
|
119
|
+
}
|
|
120
|
+
return e;
|
|
121
|
+
}
|
|
122
|
+
function U(e, t = "tm_mode") {
|
|
123
|
+
if (!(typeof window > "u"))
|
|
124
|
+
try {
|
|
125
|
+
localStorage.setItem(t, e), localStorage.setItem("theme", e === "night" ? "dark" : "light");
|
|
126
|
+
} catch {
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function H(e, t = "tm_theme") {
|
|
130
|
+
if (!(typeof window > "u"))
|
|
131
|
+
try {
|
|
132
|
+
localStorage.setItem(t, e);
|
|
133
|
+
} catch {
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
export {
|
|
137
|
+
w as a,
|
|
138
|
+
H as b,
|
|
139
|
+
L as c,
|
|
140
|
+
R as d,
|
|
141
|
+
B as g,
|
|
142
|
+
_ as l,
|
|
143
|
+
U as p
|
|
144
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";const a=require("./colors-BGRiFoSZ.cjs"),A={default:()=>Promise.resolve().then(()=>require("./default-Ddg7Haf2.cjs")).then(t=>t.defaultTheme),dark:()=>Promise.resolve().then(()=>require("./dark-OOhiqt1q.cjs")).then(t=>t.darkTheme),brand:()=>Promise.resolve().then(()=>require("./brand-DQb18Frh.cjs")).then(t=>t.brandTheme)};async function D(t){const e=A[t];if(!e)throw new Error(`Theme "${t}" not found`);return await e()}const b="data-mode",h="data-theme-name",T="data-theme",C="dark";function I(t="day",e="tm_mode",n=!0){if(typeof window>"u")return t;const r=document.documentElement,o=r.getAttribute(b);if(o==="day"||o==="night")return o;const s=r.getAttribute(T);if(s==="day"||s==="night")return s;try{const c=localStorage.getItem(e);if(c==="day"||c==="night")return c;const i=localStorage.getItem("theme");if(i==="dark")return"night";if(i==="light")return"day"}catch{}return n&&typeof window<"u"?window.matchMedia("(prefers-color-scheme: dark)").matches?"night":"day":t}let m=null;async function w(t){if(t==="default")return m=null,null;try{const e=await D(t);return m=e,e}catch(e){return console.warn(`Failed to load theme "${t}":`,e),m=null,null}}function g(t,e){return e?{...t,...e}:t}function u(t,e){return e?{...t,...e}:t}function k(t){const e=m,n=g(a.primaryColors,e==null?void 0:e.primaryColors),r=g(a.accentColors,e==null?void 0:e.accentColors),o=g(a.secondaryColors,e==null?void 0:e.secondaryColors),s={day:u(a.baseColors.day,e==null?void 0:e.baseColorsDay),night:u(a.baseColors.night,e==null?void 0:e.baseColorsNight)},c={day:u(a.surfaceColors.day,e==null?void 0:e.surfaceColorsDay),night:u(a.surfaceColors.night,e==null?void 0:e.surfaceColorsNight)},i={day:u(a.semanticColors.day,e==null?void 0:e.semanticColorsDay),night:u(a.semanticColors.night,e==null?void 0:e.semanticColorsNight)},f={day:u(a.textColors.day,e==null?void 0:e.textColorsDay),night:u(a.textColors.night,e==null?void 0:e.textColorsNight)};return{primaryColors:n,accentColors:r,secondaryColors:o,baseColors:s,surfaceColors:c,semanticColors:i,textColors:f}}function x(t){if(typeof document>"u")return;const e=document.documentElement,n=k(),{primaryColors:r,accentColors:o,secondaryColors:s,baseColors:c,surfaceColors:i,semanticColors:f,textColors:E}=n,y=c[t];e.style.setProperty("--background",y.background),e.style.setProperty("--foreground",y.foreground),e.style.setProperty("--card",y.card),e.style.setProperty("--card-foreground",y.cardForeground),e.style.setProperty("--popover",y.popover),e.style.setProperty("--popover-foreground",y.popoverForeground),e.style.setProperty("--border",y.border),e.style.setProperty("--input",y.input),e.style.setProperty("--ring",y.ring);const d=i[t];e.style.setProperty("--surface-base",d.base),e.style.setProperty("--surface-elevated1",d.elevated1),e.style.setProperty("--surface-elevated2",d.elevated2),e.style.setProperty("--surface-elevated3",d.elevated3),e.style.setProperty("--surface-overlay",d.overlay),e.style.setProperty("--surface-glass",d.glass);const l=f[t];e.style.setProperty("--semantic-success",l.success),e.style.setProperty("--semantic-success-foreground",l.successForeground),e.style.setProperty("--semantic-error",l.error),e.style.setProperty("--semantic-error-foreground",l.errorForeground),e.style.setProperty("--semantic-warning",l.warning),e.style.setProperty("--semantic-warning-foreground",l.warningForeground),e.style.setProperty("--semantic-info",l.info),e.style.setProperty("--semantic-info-foreground",l.infoForeground);const p=E[t];e.style.setProperty("--text-primary",p.primary),e.style.setProperty("--text-secondary",p.secondary),e.style.setProperty("--text-tertiary",p.tertiary),e.style.setProperty("--text-muted",p.muted),e.style.setProperty("--text-inverse",p.inverse),e.style.setProperty("--primary-50",r[50]),e.style.setProperty("--primary-100",r[100]),e.style.setProperty("--primary-200",r[200]),e.style.setProperty("--primary-300",r[300]),e.style.setProperty("--primary-400",r[400]),e.style.setProperty("--primary-500",r[500]),e.style.setProperty("--primary-600",r[600]),e.style.setProperty("--primary-700",r[700]),e.style.setProperty("--primary-800",r[800]),e.style.setProperty("--primary-900",r[900]),e.style.setProperty("--primary-950",r[950]),e.style.setProperty("--accent-50",o[50]),e.style.setProperty("--accent-100",o[100]),e.style.setProperty("--accent-200",o[200]),e.style.setProperty("--accent-300",o[300]),e.style.setProperty("--accent-400",o[400]),e.style.setProperty("--accent-500",o[500]),e.style.setProperty("--accent-600",o[600]),e.style.setProperty("--accent-700",o[700]),e.style.setProperty("--accent-800",o[800]),e.style.setProperty("--accent-900",o[900]),e.style.setProperty("--accent-950",o[950]),e.style.setProperty("--secondary-50",s[50]),e.style.setProperty("--secondary-100",s[100]),e.style.setProperty("--secondary-200",s[200]),e.style.setProperty("--secondary-300",s[300]),e.style.setProperty("--secondary-400",s[400]),e.style.setProperty("--secondary-500",s[500]),e.style.setProperty("--secondary-600",s[600]),e.style.setProperty("--secondary-700",s[700]),e.style.setProperty("--secondary-800",s[800]),e.style.setProperty("--secondary-900",s[900]),e.style.setProperty("--secondary-950",s[950]),t==="day"?(e.style.setProperty("--tm-primary",s[500]),e.style.setProperty("--tm-primary-foreground","0 0% 100%"),e.style.setProperty("--tm-secondary","0 0% 95.7%"),e.style.setProperty("--tm-secondary-foreground","0 0% 6.7%"),e.style.setProperty("--tm-accent","0 0% 89.8%"),e.style.setProperty("--tm-accent-foreground","0 0% 6.7%")):(e.style.setProperty("--tm-primary",o[500]),e.style.setProperty("--tm-primary-foreground","0 0% 100%"),e.style.setProperty("--tm-secondary","240 10% 7%"),e.style.setProperty("--tm-secondary-foreground","0 0% 89.8%"),e.style.setProperty("--tm-accent","240 10% 10%"),e.style.setProperty("--tm-accent-foreground","0 0% 89.8%")),e.style.setProperty("--muted",y.card),e.style.setProperty("--muted-foreground",y.cardForeground),e.style.setProperty("--destructive",l.error),e.style.setProperty("--destructive-foreground",l.errorForeground)}async function P(t,e="default"){if(typeof document>"u")return;await w(e);const{documentElement:n,body:r}=document;n.setAttribute(b,t),n.setAttribute(T,t),n.setAttribute(h,e),t==="night"?n.classList.add(C):n.classList.remove(C),x(t);const o=k(),{background:s,foreground:c}=o.baseColors[t];r&&(r.dataset.mode=t,r.dataset.theme=e,r.style.backgroundColor=`hsl(${s})`,r.style.color=`hsl(${c})`)}function M(t){if(typeof document<"u"){const n=document.documentElement.getAttribute(h)||"default";P(t,n)}else P(t,"default")}function S(t="default",e="tm_theme"){if(typeof window>"u")return t;const r=document.documentElement.getAttribute(h);if(r==="default"||r==="dark"||r==="brand")return r;try{const o=localStorage.getItem(e);if(o==="default"||o==="dark"||o==="brand")return o}catch{}return t}function F(t,e="tm_mode"){if(!(typeof window>"u"))try{localStorage.setItem(e,t),localStorage.setItem("theme",t==="night"?"dark":"light")}catch{}}function _(t,e="tm_theme"){if(!(typeof window>"u"))try{localStorage.setItem(e,t)}catch{}}exports.applyDocumentMode=M;exports.applyDocumentTheme=P;exports.getInitialMode=I;exports.getInitialTheme=S;exports.loadThemeOverride=w;exports.persistMode=F;exports.persistTheme=_;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const o = {
|
|
3
|
+
name: "brand",
|
|
4
|
+
description: "Brand-specific theme with custom color palette",
|
|
5
|
+
// Override primary colors - warmer blue tones for brand
|
|
6
|
+
primaryColors: {
|
|
7
|
+
500: "210 75% 45%",
|
|
8
|
+
// Brighter, warmer blue
|
|
9
|
+
600: "210 70% 40%",
|
|
10
|
+
700: "210 65% 35%"
|
|
11
|
+
},
|
|
12
|
+
// Override accent colors - vibrant purple-pink gradient
|
|
13
|
+
accentColors: {
|
|
14
|
+
400: "285 75% 65%",
|
|
15
|
+
// Softer purple
|
|
16
|
+
500: "285 80% 60%",
|
|
17
|
+
// Vibrant purple-pink
|
|
18
|
+
600: "285 75% 55%"
|
|
19
|
+
},
|
|
20
|
+
// Override secondary colors - teal accent for brand
|
|
21
|
+
secondaryColors: {
|
|
22
|
+
400: "170 85% 50%",
|
|
23
|
+
// Brighter teal
|
|
24
|
+
500: "170 90% 45%",
|
|
25
|
+
// Vibrant teal (#00d9b8)
|
|
26
|
+
600: "170 85% 40%"
|
|
27
|
+
},
|
|
28
|
+
// Override semantic colors for day mode - brand-aligned colors
|
|
29
|
+
semanticColorsDay: {
|
|
30
|
+
success: "145 75% 40%",
|
|
31
|
+
// Brand-aligned green
|
|
32
|
+
info: "210 75% 50%"
|
|
33
|
+
// Brand primary blue
|
|
34
|
+
},
|
|
35
|
+
// Override semantic colors for night mode
|
|
36
|
+
semanticColorsNight: {
|
|
37
|
+
success: "145 70% 48%",
|
|
38
|
+
// Brighter brand green
|
|
39
|
+
info: "210 75% 55%"
|
|
40
|
+
// Brighter brand blue
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
export {
|
|
44
|
+
o as brandTheme
|
|
45
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={name:"brand",description:"Brand-specific theme with custom color palette",primaryColors:{500:"210 75% 45%",600:"210 70% 40%",700:"210 65% 35%"},accentColors:{400:"285 75% 65%",500:"285 80% 60%",600:"285 75% 55%"},secondaryColors:{400:"170 85% 50%",500:"170 90% 45%",600:"170 85% 40%"},semanticColorsDay:{success:"145 75% 40%",info:"210 75% 50%"},semanticColorsNight:{success:"145 70% 48%",info:"210 75% 55%"}};exports.brandTheme=e;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";const a={50:"210 40% 98%",100:"210 40% 96%",200:"217 32.6% 17.5%",300:"216 28% 26%",400:"215 25% 27%",500:"215 20% 35%",600:"215 16% 47%",700:"216 12% 54%",800:"217 10% 62%",900:"222 47.4% 11.2%",950:"222 84% 4.9%"},e={50:"280 100% 98%",100:"280 65% 96%",200:"280 60% 85%",300:"280 55% 75%",400:"280 50% 65%",500:"280 70% 67%",600:"259 65% 58%",700:"259 60% 50%",800:"259 55% 45%",900:"259 50% 40%",950:"259 45% 30%"},s={50:"173 100% 98%",100:"173 100% 95%",200:"173 100% 85%",300:"173 100% 70%",400:"173 100% 55%",500:"173 100% 37%",600:"173 100% 32%",700:"173 95% 27%",800:"173 90% 22%",900:"173 85% 17%",950:"173 80% 12%"},o={day:{base:"0 0% 100%",elevated1:"0 0% 98%",elevated2:"0 0% 96%",elevated3:"0 0% 94%",overlay:"0 0% 0% / 0.5",glass:"0 0% 100% / 0.8"},night:{base:"240 10% 3.9%",elevated1:"240 10% 5.1%",elevated2:"240 10% 6.3%",elevated3:"240 10% 7.5%",overlay:"0 0% 0% / 0.7",glass:"240 10% 10% / 0.9"}},r={day:{success:"142 76% 36%",successForeground:"0 0% 100%",error:"0 84.2% 60.2%",errorForeground:"0 0% 98%",warning:"38 92% 50%",warningForeground:"0 0% 9%",info:"199 89% 48%",infoForeground:"0 0% 100%"},night:{success:"142 70% 45%",successForeground:"0 0% 100%",error:"0 62.8% 30.6%",errorForeground:"0 0% 98%",warning:"38 92% 60%",warningForeground:"0 0% 9%",info:"199 89% 55%",infoForeground:"0 0% 100%"}},n={day:{primary:"0 0% 9%",secondary:"0 0% 45%",tertiary:"0 0% 65%",muted:"0 0% 45.1%",inverse:"0 0% 100%"},night:{primary:"0 0% 89.8%",secondary:"240 5% 64.9%",tertiary:"240 5% 50%",muted:"240 5% 64.9%",inverse:"0 0% 9%"}},c={day:{background:"0 0% 100%",foreground:"0 0% 9%",card:"0 0% 100%",cardForeground:"0 0% 9%",popover:"0 0% 100%",popoverForeground:"0 0% 9%",border:"0 0% 89.8%",input:"0 0% 89.8%",ring:"0 0% 3.9%"},night:{background:"240 10% 3.9%",foreground:"0 0% 89.8%",card:"240 10% 3.9%",cardForeground:"0 0% 89.8%",popover:"240 10% 5.1%",popoverForeground:"0 0% 89.8%",border:"240 3.7% 15.9%",input:"240 3.7% 15.9%",ring:"240 4.9% 83.9%"}},t={day:{...c.day,primary:"hsl(var(--tm-primary))",primaryForeground:"hsl(var(--tm-primary-foreground))",secondary:"hsl(var(--tm-secondary))",secondaryForeground:"hsl(var(--tm-secondary-foreground))",muted:"hsl(var(--muted))",mutedForeground:"hsl(var(--muted-foreground))",accent:"hsl(var(--tm-accent))",accentForeground:"hsl(var(--tm-accent-foreground))",destructive:`hsl(${r.day.error})`,destructiveForeground:r.day.errorForeground,chart1:"hsl(12, 76%, 61%)",chart2:"hsl(173, 58%, 39%)",chart3:"hsl(197, 37%, 24%)",chart4:"hsl(43, 74%, 66%)",chart5:"hsl(27, 87%, 67%)"},night:{...c.night,primary:"hsl(var(--tm-primary))",primaryForeground:"hsl(var(--tm-primary-foreground))",secondary:"hsl(var(--tm-secondary))",secondaryForeground:"hsl(var(--tm-secondary-foreground))",muted:"hsl(var(--muted))",mutedForeground:"hsl(var(--muted-foreground))",accent:"hsl(var(--tm-accent))",accentForeground:"hsl(var(--tm-accent-foreground))",destructive:`hsl(${r.night.error})`,destructiveForeground:r.night.errorForeground,chart1:"hsl(220, 70%, 50%)",chart2:"hsl(160, 60%, 45%)",chart3:"hsl(30, 80%, 55%)",chart4:"hsl(280, 65%, 60%)",chart5:"hsl(340, 75%, 55%)"}},d={"--primary-50":a[50],"--primary-100":a[100],"--primary-200":a[200],"--primary-300":a[300],"--primary-400":a[400],"--primary-500":a[500],"--primary-600":a[600],"--primary-700":a[700],"--primary-800":a[800],"--primary-900":a[900],"--primary-950":a[950],"--accent-50":e[50],"--accent-100":e[100],"--accent-200":e[200],"--accent-300":e[300],"--accent-400":e[400],"--accent-500":e[500],"--accent-600":e[600],"--accent-700":e[700],"--accent-800":e[800],"--accent-900":e[900],"--accent-950":e[950],"--secondary-50":s[50],"--secondary-100":s[100],"--secondary-200":s[200],"--secondary-300":s[300],"--secondary-400":s[400],"--secondary-500":s[500],"--secondary-600":s[600],"--secondary-700":s[700],"--secondary-800":s[800],"--secondary-900":s[900],"--secondary-950":s[950],"--surface-base":o.day.base,"--surface-elevated1":o.day.elevated1,"--surface-elevated2":o.day.elevated2,"--surface-elevated3":o.day.elevated3,"--surface-overlay":o.day.overlay,"--surface-glass":o.day.glass,"--semantic-success":r.day.success,"--semantic-success-foreground":r.day.successForeground,"--semantic-error":r.day.error,"--semantic-error-foreground":r.day.errorForeground,"--semantic-warning":r.day.warning,"--semantic-warning-foreground":r.day.warningForeground,"--semantic-info":r.day.info,"--semantic-info-foreground":r.day.infoForeground,"--text-primary":n.day.primary,"--text-secondary":n.day.secondary,"--text-tertiary":n.day.tertiary,"--text-muted":n.day.muted,"--text-inverse":n.day.inverse},l={background:"hsl(var(--background))",foreground:"hsl(var(--foreground))",card:{DEFAULT:"hsl(var(--card))",foreground:"hsl(var(--card-foreground))"},popover:{DEFAULT:"hsl(var(--popover))",foreground:"hsl(var(--popover-foreground))"},primary:{DEFAULT:"hsl(var(--tm-primary))",foreground:"hsl(var(--tm-primary-foreground))",50:"hsl(var(--primary-50))",100:"hsl(var(--primary-100))",200:"hsl(var(--primary-200))",300:"hsl(var(--primary-300))",400:"hsl(var(--primary-400))",500:"hsl(var(--primary-500))",600:"hsl(var(--primary-600))",700:"hsl(var(--primary-700))",800:"hsl(var(--primary-800))",900:"hsl(var(--primary-900))",950:"hsl(var(--primary-950))"},secondary:{DEFAULT:"hsl(var(--tm-secondary))",foreground:"hsl(var(--tm-secondary-foreground))",50:"hsl(var(--secondary-50))",100:"hsl(var(--secondary-100))",200:"hsl(var(--secondary-200))",300:"hsl(var(--secondary-300))",400:"hsl(var(--secondary-400))",500:"hsl(var(--secondary-500))",600:"hsl(var(--secondary-600))",700:"hsl(var(--secondary-700))",800:"hsl(var(--secondary-800))",900:"hsl(var(--secondary-900))",950:"hsl(var(--secondary-950))"},accent:{DEFAULT:"hsl(var(--tm-accent))",foreground:"hsl(var(--tm-accent-foreground))",50:"hsl(var(--accent-50))",100:"hsl(var(--accent-100))",200:"hsl(var(--accent-200))",300:"hsl(var(--accent-300))",400:"hsl(var(--accent-400))",500:"hsl(var(--accent-500))",600:"hsl(var(--accent-600))",700:"hsl(var(--accent-700))",800:"hsl(var(--accent-800))",900:"hsl(var(--accent-900))",950:"hsl(var(--accent-950))"},muted:{DEFAULT:"hsl(var(--muted))",foreground:"hsl(var(--muted-foreground))"},destructive:{DEFAULT:"hsl(var(--destructive))",foreground:"hsl(var(--destructive-foreground))"},success:{DEFAULT:"hsl(var(--semantic-success))",foreground:"hsl(var(--semantic-success-foreground))"},error:{DEFAULT:"hsl(var(--semantic-error))",foreground:"hsl(var(--semantic-error-foreground))"},warning:{DEFAULT:"hsl(var(--semantic-warning))",foreground:"hsl(var(--semantic-warning-foreground))"},info:{DEFAULT:"hsl(var(--semantic-info))",foreground:"hsl(var(--semantic-info-foreground))"},surface:{base:"hsl(var(--surface-base))",elevated1:"hsl(var(--surface-elevated1))",elevated2:"hsl(var(--surface-elevated2))",elevated3:"hsl(var(--surface-elevated3))",overlay:"hsl(var(--surface-overlay))",glass:"hsl(var(--surface-glass))"},text:{primary:"hsl(var(--text-primary))",secondary:"hsl(var(--text-secondary))",tertiary:"hsl(var(--text-tertiary))",muted:"hsl(var(--text-muted))",inverse:"hsl(var(--text-inverse))"},border:"hsl(var(--border))",input:"hsl(var(--input))",ring:"hsl(var(--ring))",chart:{1:"hsl(var(--chart-1))",2:"hsl(var(--chart-2))",3:"hsl(var(--chart-3))",4:"hsl(var(--chart-4))",5:"hsl(var(--chart-5))"}};exports.accentColors=e;exports.baseColors=c;exports.colorCSSVariables=d;exports.cssVariableColorTokens=t;exports.primaryColors=a;exports.secondaryColors=s;exports.semanticColors=r;exports.surfaceColors=o;exports.tailwindThemeColors=l;exports.textColors=n;
|