strivui 1.22.55 → 1.22.56

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,174 +1,110 @@
1
+ ````md
1
2
  <p align="center">
2
- <img src="https://res-console.cloudinary.com/dpbwcdytl/thumbnails/v1/image/upload/v1753722770/c3RyaXZ1aV9sb2dvX2syZHhicQ==/drilldown" width="250" alt="StrivUI Logo" />
3
+ <img src="https://res-console.cloudinary.com/dpbwcdytl/thumbnails/v1/image/upload/v1753722770/c3RyaXZ1aV9sb2dvX2syZHhicQ==/drilldown" width="200" alt="StrivUI Logo" />
3
4
  </p>
4
5
 
5
- # 🚀 StrivUI
6
+ <h1 align="center">StrivUI</h1>
6
7
 
7
- **StrivUI** is a **hybrid, utility-first UI component library** for **React**, designed to feel instantly familiar to both **React Native** and **Web developers**.
8
- It follows an **Atomic CSS styling approach** and is written in **TypeScript**, providing a fast, consistent, and scalable design system for modern applications.
8
+ <p align="center">
9
+ A hybrid, utility-first React component system inspired by React Native primitives.<br/>
10
+ TypeScript • Atomic CSS • Tree-shakable • Minimal runtime
11
+ </p>
9
12
 
10
- Every component ships with **thoughtfully crafted defaults**, so you can build polished interfaces out of the box — while still keeping full flexibility for customization.
13
+ ---
11
14
 
12
- > Developed with ❤️ by [Syed Abdullah Ali](https://github.com/syedabdullahali)
15
+ ## Overview
13
16
 
14
- ---
17
+ StrivUI provides a unified component model for building React applications with the
18
+ ergonomics of **React Native primitives** and the structure of **modern web layouts**.
15
19
 
16
- ## Why StrivUI?
20
+ It is designed to deliver:
17
21
 
18
- - **Utility-first styling** powered by **Atomic CSS**
19
- - 📱 **React Native–inspired primitives** like `<View />`, `<Text />`, `<FlatList />`
20
- - 🌐 **Web-native layout components** like `<Header />`, `<Section />`, `<Card />`
21
- - 🧩 Shared UI building blocks for rapid development
22
- - 🛠️ Built in **TypeScript** — type-safe and scalable
23
- - 💻 **Lightweight and blazing fast**
22
+ - A consistent cross-platform mental model
23
+ - Composable, atomic styling with zero configuration
24
+ - Strict TypeScript support across all public APIs
25
+ - Lightweight, tree-shakable bundles
24
26
 
25
- ---
27
+ The library focuses on predictable composition, sensible defaults, and full
28
+ `className` extensibility rather than heavy theming abstractions.
26
29
 
27
- ## 📦 Installation
30
+ ---
28
31
 
29
- Install with npm or yarn:
32
+ ## Installation
30
33
 
31
34
  ```bash
32
35
  npm install strivui
33
- # or
34
- comingSoon -> yarn add strivui
36
+ ````
35
37
 
36
- 🔧 Usage
37
- JavaScript
38
- import { Button } from 'strivui';
38
+ ---
39
39
 
40
- function App() {
41
- return (
42
- <Button className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-400">
43
- Click Me
44
- </Button>
45
- );
46
- }
40
+ ## Usage
47
41
 
48
- TypeScript
49
- import { Button } from 'strivui';
42
+ ```tsx
43
+ import { Button } from "strivui";
50
44
 
51
- const App: React.FC = () => {
45
+ export function App() {
52
46
  return (
53
- <Button className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-400">
54
- Click Me
47
+ <Button className="bg-blue-500 text-white px-4 py-2 rounded">
48
+ Click me
55
49
  </Button>
56
50
  );
57
- };
58
-
59
- 🧱 Component Categories
60
- 🟣 React Native–Inspired Components
61
-
62
- Familiar primitives, now available for the web:
63
-
64
- <View />
65
-
66
- <Text />
67
-
68
- <ScrollView />
69
-
70
- <Pressable />
71
-
72
- <TouchableOpacity />
73
-
74
- <FlatList />
75
-
76
- <SectionList />
77
-
78
- <Image />
79
-
80
- <ImageBackground />
81
-
82
- <ActivityIndicator />
83
-
84
- 🔵 Web Layout Components
85
-
86
- Semantic building blocks for responsive UIs:
87
-
88
- <Header />
89
-
90
- <Footer />
91
-
92
- <Main />
93
-
94
- <Section />
95
-
96
- <Navigation />
97
-
98
- <Container />
99
-
100
- <Card />
101
-
102
- 🟢 Shared UI Components
103
-
104
- Reusable pieces for forms, modals, and tables:
105
-
106
- <Button />
107
-
108
- <Input />
109
-
110
- <TextArea />
111
-
112
- <Select />
113
-
114
- <Link />
115
-
116
- <Modal />
117
-
118
- <Dialog />
119
-
120
- <Overlay />
121
-
122
- <Table />, <TableHead />, <TableBody />, <TableRow />, <TableHeaderCell />, <TableDataCell />
51
+ }
52
+ ```
123
53
 
124
- 🎨 Styling & Theming
54
+ ---
125
55
 
126
- StrivUI embraces an Atomic CSS, utility-first styling model.
127
- Each utility class maps to a single CSS property, giving you maximum composability and performance.
56
+ ## Component Architecture
128
57
 
129
- You can customize any component via className or extend styles with your own design system.
58
+ **Primitives**
59
+ `View` · `Text` · `ScrollView` · `Pressable` · `FlatList` · `Image`
130
60
 
131
- Coming soon: striv.config.js for overriding design tokens (colors, spacing, typography, variants).
61
+ **Layout**
62
+ `Header` · `Section` · `Container` · `Card` · `Navigation`
132
63
 
133
- 📚 Documentation
64
+ **UI**
65
+ `Button` · `Input` · `Select` · `Modal` · `Dialog` · `Table`
134
66
 
135
- Full documentation and interactive previews will be available at:
67
+ Each layer is independently importable and optimized for tree-shaking.
136
68
 
137
- 📘 https://css_striv_ui.com
69
+ ---
138
70
 
139
- 🧪 Local Development
71
+ ## Styling Model
140
72
 
141
- To run StrivUI locally:
73
+ StrivUI uses an **atomic, utility-first CSS approach**:
142
74
 
143
- git clone https://github.com/syedabdullahali/StrivUI.git
144
- cd StrivUI
145
- npm install
146
- npm run dev
75
+ * Single-purpose utility classes
76
+ * Deterministic composition
77
+ * No runtime style generation
78
+ * Seamless integration with existing design systems
147
79
 
148
- 🤝 Contributing
80
+ ---
149
81
 
150
- We love contributions!
82
+ ## TypeScript
151
83
 
152
- Fork the repo
84
+ StrivUI is **TypeScript-first** and ships with complete declaration files for all
85
+ public exports, ensuring accurate IntelliSense and type safety.
153
86
 
154
- Create your feature branch: git checkout -b feature/my-component
87
+ ---
155
88
 
156
- Commit changes: git commit -m 'Add my component'
89
+ ## Roadmap
157
90
 
158
- Push to GitHub: git push origin feature/my-component
91
+ * Token-based theming (`striv.config.js`)
92
+ * Dark mode primitives
93
+ * Animation utilities
94
+ * CLI scaffolding
95
+ * SSR / RSC compatibility
159
96
 
160
- Open a Pull Request 🚀
97
+ ---
161
98
 
162
- 📄 License
99
+ ## License
163
100
 
164
- MIT © 2025 Syed Abdullah Ali
101
+ MIT © Syed Abdullah Ali
165
102
 
103
+ ```
166
104
 
167
105
  ---
168
106
 
169
- This version:
170
- - Replaces **“class-based styling “Atomic CSS”** everywhere.
171
- - Reads more **professional & polished**, like a proper open-source README.
172
- - Keeps all the original details, just restructured and cleaned.
173
-
174
- Want me to also design a **visual banner (GitHub social preview / LinkedIn share)** that highlights: *Atomic CSS • React Native + Web • TypeScript* for StrivUI?
107
+ If you want, I can next add a **“Philosophy” section (very short)** that explains:
108
+ > “No runtime styling, no heavy context providers, just composable primitives”
109
+ That makes it sound **very senior / systems-level** like Radix, Ark UI, or Tamagui.
110
+ ```
package/dist/striveui.css CHANGED
@@ -10197,6 +10197,315 @@ body {
10197
10197
  border-width: 8px;
10198
10198
  }
10199
10199
 
10200
+ :root {
10201
+ --bg: #ffffff;
10202
+ --bg-elevated: #ffffffcc;
10203
+ --text: #0f172a;
10204
+ --muted: #64748b;
10205
+ --border: #e2e8f0;
10206
+ --primary: #2563eb;
10207
+ --primary-600: #1d4ed8;
10208
+ --success: #16a34a;
10209
+ --error: #dc2626;
10210
+ --warning: #d97706;
10211
+ --info: #0284c7;
10212
+ --radius: 14px;
10213
+ --radius-sm: 10px;
10214
+ --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
10215
+ --shadow-md: 0 10px 25px rgba(0,0,0,0.08);
10216
+ --shadow-lg: 0 25px 50px rgba(0,0,0,0.15);
10217
+ --transition: 200ms ease;
10218
+ --blur: blur(12px);
10219
+ }
10220
+
10221
+ .dark {
10222
+ --bg: #020617;
10223
+ --bg-elevated: #020617cc;
10224
+ --text: #e2e8f0;
10225
+ --muted: #94a3b8;
10226
+ --border: #1e293b;
10227
+ }
10228
+
10229
+ /* =========================================================
10230
+ 🧩 MIXINS
10231
+ ========================================================= */
10232
+ @keyframes fadeIn {
10233
+ from {
10234
+ opacity: 0;
10235
+ transform: translateY(4px);
10236
+ }
10237
+ to {
10238
+ opacity: 1;
10239
+ transform: translateY(0);
10240
+ }
10241
+ }
10242
+ @keyframes modalIn {
10243
+ from {
10244
+ opacity: 0;
10245
+ transform: translateY(20px) scale(0.98);
10246
+ }
10247
+ to {
10248
+ opacity: 1;
10249
+ transform: translateY(0) scale(1);
10250
+ }
10251
+ }
10252
+ @keyframes shimmer {
10253
+ 0% {
10254
+ background-position: 100% 50%;
10255
+ }
10256
+ 100% {
10257
+ background-position: 0 50%;
10258
+ }
10259
+ }
10260
+ /* =========================================================
10261
+ 🪟 MODAL
10262
+ ========================================================= */
10263
+ .default_modal_overlay {
10264
+ position: fixed;
10265
+ inset: 0;
10266
+ background: rgba(2, 6, 23, 0.55);
10267
+ backdrop-filter: blur(6px);
10268
+ display: grid;
10269
+ place-items: center;
10270
+ z-index: 999;
10271
+ }
10272
+
10273
+ .default_modal {
10274
+ background: var(--bg-elevated);
10275
+ backdrop-filter: var(--blur);
10276
+ border: 1px solid var(--border);
10277
+ border-radius: var(--radius);
10278
+ padding: 1.5rem;
10279
+ width: min(500px, 92%);
10280
+ box-shadow: var(--shadow-lg);
10281
+ animation: modalIn 0.25s ease;
10282
+ }
10283
+
10284
+ /* =========================================================
10285
+ 📂 DROPDOWN
10286
+ ========================================================= */
10287
+ .default_dropdown {
10288
+ position: relative;
10289
+ display: inline-block;
10290
+ }
10291
+ .default_dropdown_menu {
10292
+ background: var(--bg-elevated);
10293
+ backdrop-filter: var(--blur);
10294
+ border: 1px solid var(--border);
10295
+ position: absolute;
10296
+ top: calc(100% + 8px);
10297
+ left: 0;
10298
+ min-width: 180px;
10299
+ border-radius: var(--radius-sm);
10300
+ box-shadow: var(--shadow-md);
10301
+ padding: 6px;
10302
+ animation: fadeIn 0.2s ease;
10303
+ }
10304
+ .default_dropdown_menu > * {
10305
+ padding: 0.5rem 0.75rem;
10306
+ border-radius: 8px;
10307
+ cursor: pointer;
10308
+ transition: var(--transition);
10309
+ }
10310
+ .default_dropdown_menu > *:hover {
10311
+ background: rgba(37, 99, 235, 0.08);
10312
+ }
10313
+
10314
+ /* =========================================================
10315
+ 📑 ACCORDION
10316
+ ========================================================= */
10317
+ .default_accordion_item {
10318
+ border-bottom: 1px solid var(--border);
10319
+ }
10320
+ .default_accordion_trigger {
10321
+ width: 100%;
10322
+ text-align: left;
10323
+ padding: 0.9rem 0;
10324
+ font-weight: 500;
10325
+ color: var(--text);
10326
+ background: none;
10327
+ border: none;
10328
+ cursor: pointer;
10329
+ }
10330
+ .default_accordion_content {
10331
+ padding-bottom: 1rem;
10332
+ color: var(--muted);
10333
+ animation: fadeIn 0.2s ease;
10334
+ }
10335
+
10336
+ /* =========================================================
10337
+ 🗂 TABS
10338
+ ========================================================= */
10339
+ .default_tabs_list {
10340
+ display: flex;
10341
+ gap: 6px;
10342
+ background: rgba(148, 163, 184, 0.12);
10343
+ padding: 4px;
10344
+ border-radius: var(--radius-sm);
10345
+ width: fit-content;
10346
+ }
10347
+ .default_tabs_trigger {
10348
+ padding: 0.45rem 0.9rem;
10349
+ border-radius: 10px;
10350
+ border: none;
10351
+ background: transparent;
10352
+ cursor: pointer;
10353
+ color: var(--muted);
10354
+ transition: var(--transition);
10355
+ }
10356
+ .default_tabs_trigger.active {
10357
+ background: var(--bg);
10358
+ box-shadow: var(--shadow-sm);
10359
+ color: var(--text);
10360
+ }
10361
+ .default_tabs_content {
10362
+ margin-top: 1rem;
10363
+ }
10364
+
10365
+ /* =========================================================
10366
+ 💬 TOOLTIP
10367
+ ========================================================= */
10368
+ .default_tooltip {
10369
+ position: relative;
10370
+ display: inline-block;
10371
+ }
10372
+ .default_tooltip_text {
10373
+ position: absolute;
10374
+ bottom: 120%;
10375
+ left: 50%;
10376
+ transform: translateX(-50%) scale(0.95);
10377
+ background: #020617;
10378
+ color: white;
10379
+ padding: 4px 8px;
10380
+ font-size: 12px;
10381
+ border-radius: 6px;
10382
+ opacity: 0;
10383
+ pointer-events: none;
10384
+ transition: var(--transition);
10385
+ white-space: nowrap;
10386
+ }
10387
+ .default_tooltip:hover .default_tooltip_text {
10388
+ opacity: 1;
10389
+ transform: translateX(-50%) scale(1);
10390
+ }
10391
+
10392
+ /* =========================================================
10393
+ 🏷 BADGE
10394
+ ========================================================= */
10395
+ .default_badge {
10396
+ display: inline-block;
10397
+ padding: 2px 8px;
10398
+ font-size: 12px;
10399
+ border-radius: 999px;
10400
+ background: rgba(37, 99, 235, 0.1);
10401
+ color: var(--primary);
10402
+ font-weight: 500;
10403
+ }
10404
+
10405
+ /* =========================================================
10406
+ 👤 AVATAR
10407
+ ========================================================= */
10408
+ .default_avatar {
10409
+ width: 40px;
10410
+ height: 40px;
10411
+ border-radius: 999px;
10412
+ overflow: hidden;
10413
+ background: #e2e8f0;
10414
+ display: flex;
10415
+ align-items: center;
10416
+ justify-content: center;
10417
+ font-weight: 600;
10418
+ color: var(--text);
10419
+ }
10420
+ .default_avatar img {
10421
+ width: 100%;
10422
+ height: 100%;
10423
+ object-fit: cover;
10424
+ }
10425
+
10426
+ /* =========================================================
10427
+ 🚨 ALERT
10428
+ ========================================================= */
10429
+ .default_alert {
10430
+ padding: 0.9rem 1rem;
10431
+ border-radius: var(--radius-sm);
10432
+ border: 1px solid transparent;
10433
+ font-size: 14px;
10434
+ }
10435
+ .default_alert_success {
10436
+ background: rgba(22, 163, 74, 0.1);
10437
+ color: var(--success);
10438
+ }
10439
+ .default_alert_error {
10440
+ background: rgba(220, 38, 38, 0.1);
10441
+ color: var(--error);
10442
+ }
10443
+ .default_alert_warning {
10444
+ background: rgba(217, 119, 6, 0.1);
10445
+ color: var(--warning);
10446
+ }
10447
+ .default_alert_info {
10448
+ background: rgba(2, 132, 199, 0.1);
10449
+ color: var(--info);
10450
+ }
10451
+
10452
+ /* =========================================================
10453
+ 💀 SKELETON
10454
+ ========================================================= */
10455
+ .default_skeleton {
10456
+ background: linear-gradient(100deg, rgba(148, 163, 184, 0.2) 25%, rgba(148, 163, 184, 0.35) 37%, rgba(148, 163, 184, 0.2) 63%);
10457
+ background-size: 400% 100%;
10458
+ border-radius: var(--radius-sm);
10459
+ animation: shimmer 1.4s ease infinite;
10460
+ }
10461
+
10462
+ /* =========================================================
10463
+ 🔘 SWITCH
10464
+ ========================================================= */
10465
+ .default_switch {
10466
+ width: 42px;
10467
+ height: 24px;
10468
+ background: #cbd5f5;
10469
+ border-radius: 999px;
10470
+ position: relative;
10471
+ border: none;
10472
+ cursor: pointer;
10473
+ transition: var(--transition);
10474
+ }
10475
+ .default_switch_thumb {
10476
+ position: absolute;
10477
+ top: 3px;
10478
+ left: 3px;
10479
+ width: 18px;
10480
+ height: 18px;
10481
+ background: white;
10482
+ border-radius: 999px;
10483
+ transition: var(--transition);
10484
+ box-shadow: var(--shadow-sm);
10485
+ }
10486
+ .default_switch.active {
10487
+ background: var(--primary);
10488
+ }
10489
+ .default_switch.active .default_switch_thumb {
10490
+ transform: translateX(18px);
10491
+ }
10492
+
10493
+ /* =========================================================
10494
+ 📊 PROGRESS
10495
+ ========================================================= */
10496
+ .default_progress {
10497
+ width: 100%;
10498
+ height: 8px;
10499
+ background: #e2e8f0;
10500
+ border-radius: 999px;
10501
+ overflow: hidden;
10502
+ }
10503
+ .default_progress_bar {
10504
+ height: 100%;
10505
+ background: linear-gradient(90deg, #2563eb, #38bdf8);
10506
+ transition: width 0.3s ease;
10507
+ }
10508
+
10200
10509
  .grid {
10201
10510
  display: grid;
10202
10511
  }
package/package.json CHANGED
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "name": "strivui",
3
- "version": "1.22.55",
3
+ "version": "1.22.56",
4
4
  "scripts": {
5
5
  "build": "npx sass app/styles/striveui.scss dist/striveui.css && rollup -c",
6
6
  "clean": "rimraf dist"
7
7
  },
8
8
  "files": [
9
- "dist",
9
+ "dist/index.js",
10
+ "dist/index.esm.js",
11
+ "dist/types/index.d.ts",
12
+ "dist/striveui.css",
10
13
  "README.md"
11
14
  ],
12
15
  "description": "**StrivUI** is a modern, utility-first UI component library designed for building fast, beautiful, and accessible interfaces in **React** using both **TypeScript** and **JavaScript**.",