@turk.net/mui 3.0.8 → 3.0.10

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/DESIGN_RULES.md CHANGED
@@ -37,7 +37,8 @@ Font weights: `400` (Regular), `500` (Medium), `600` (Semibold), `700` (Bold).
37
37
 
38
38
  | Context | Variant | Weight |
39
39
  |---------|---------|--------|
40
- | Page title | `display.lg.bold` or `display.md.semibold` | 600-700 |
40
+ | Page title (ana sayfa başlığı) | `display.lg.bold` or `display.md.semibold` | 600-700 |
41
+ | Page title (sayfa içi başlık) | `text.xl.medium` or `display.xs.bold` | 500-700 |
41
42
  | Section header | `text.lg.medium` or `text.md.semibold` | 500-600 |
42
43
  | Body text | `text.md.regular` or `text.sm.regular` | 400 |
43
44
  | Table header | `text.xs.medium` | 500 |
@@ -46,6 +47,7 @@ Font weights: `400` (Regular), `500` (Medium), `600` (Semibold), `700` (Bold).
46
47
  | Helper/error text | `text.xs.regular` | 400 |
47
48
  | Button text | `text.sm.medium` | 500 |
48
49
  | Chip/Badge text | `text.xs.medium` | 500 |
50
+ | Modal title | `text.lg.semibold` | 600 |
49
51
 
50
52
  ---
51
53
 
@@ -87,7 +89,7 @@ Component color props MUST use ONLY the values listed below:
87
89
  | `Checkbox` | `primary`, `error` |
88
90
  | `Radio` | `primary`, `error` |
89
91
  | `Switch` | `primary`, `error` |
90
- | `Chip` | `primary`, `secondary`, `error` |
92
+ | `Chip` | `primary`, `secondary`, `error`, `danger`, `success`, `informative`, `brand`, `severewarning`, `important` |
91
93
  | `Badge` | `default`, `brand`, `success`, `danger`, `severewarning`, `warning`, `important` |
92
94
  | `Alert` | `success`, `warning`, `error`, `info` |
93
95
 
@@ -180,8 +182,8 @@ function MyButton({ children }: { children: React.ReactNode }) {
180
182
 
181
183
  | Layout | Import | Use Case |
182
184
  |--------|--------|----------|
183
- | TabBased | `@turknet/onehub/layouts/app/TabBased` | Tab-based application layout |
184
- | WithSidebar | `@turknet/onehub/layouts/page/WithSidebar` | Sidebar + content layout |
185
+ | TabBased | `@turk.net/mui/layouts/app/TabBased` | Tab-based application layout |
186
+ | Dashboard | Modül başına özel (`src/components/layouts/dashboard/`) | Sidebar + content layout |
185
187
  | Empty | Custom per module | No layout (passthrough) |
186
188
  | Login | Custom per module | Authentication pages |
187
189
 
@@ -191,15 +193,17 @@ function MyButton({ children }: { children: React.ReactNode }) {
191
193
 
192
194
  ### 5.1 — Icon Source
193
195
 
194
- **MUST import icons from `@turknet/onehub/icons`** (SVG React components) or the project's Tune icon font.
196
+ **MUST import icons from `@turk.net/mui/icons/*`** (SVG React components — tercih edilen) or the project's Tune icon font.
195
197
 
196
198
  ```typescript
197
- // ✅ CORRECT — SVG icons
198
- import { CheckIcon, ChevronDownIcon } from '@turknet/onehub/icons';
199
+ // ✅ CORRECT — SVG icons (tercih edilen)
200
+ import Settings01Icon from "@turk.net/mui/icons/Settings01Icon";
201
+ import ArrowRightIcon from "@turk.net/mui/icons/ArrowRightIcon";
202
+ import SearchMdIcon from "@turk.net/mui/icons/SearchMdIcon";
199
203
 
200
- // ✅ CORRECT — Tune icon font
204
+ // ✅ CORRECT — Tune icon font (eski projelerde)
201
205
  import { TuneIcon } from '@/components/ui/icon';
202
- <TuneIcon name="check" />
206
+ <TuneIcon name="search-md" size="20px" />
203
207
  ```
204
208
 
205
209
  ### 5.2 — Icon Sizing
@@ -278,16 +282,36 @@ import * as yup from 'yup';
278
282
 
279
283
  ### 9.2 — Form Components
280
284
 
281
- | Field Type | MUI Component |
282
- |-----------|---------------|
283
- | Text input | `TextField` |
284
- | Dropdown | `Select` + `MenuItem` |
285
- | Autocomplete | `Autocomplete` |
286
- | Checkbox | `Checkbox` + `FormControlLabel` |
287
- | Radio group | `RadioGroup` + `Radio` + `FormControlLabel` |
288
- | Switch | `Switch` + `FormControlLabel` |
289
- | Date picker | `DatePicker` (`@mui/x-date-pickers`) |
290
- | Submit | `Button variant="contained" color="primary"` |
285
+ | Field Type | MUI Component | Notes |
286
+ |-----------|---------------|-------|
287
+ | Text input (standard) | `TextField variant="outlined"` | Varsayılan form alanı |
288
+ | Text input (login) | `TextField variant="filled"` | Login/parola sayfaları |
289
+ | Dropdown | `Select` + `MenuItem` | |
290
+ | Autocomplete | `Autocomplete` | |
291
+ | Checkbox | `Checkbox` + `FormControlLabel` | |
292
+ | Radio group | `RadioGroup` + `Radio` + `FormControlLabel` | |
293
+ | Switch | `Switch` + `FormControlLabel` | |
294
+ | Date picker | `DatePicker` (`@mui/x-date-pickers`) | `dayjs` adapter |
295
+ | Search (inline) | `InputBase` + search icon | Tablo üstü arama |
296
+ | Submit | `Button variant="contained" color="primary"` | |
297
+
298
+ ### 9.3 — Formik Configuration
299
+
300
+ ```typescript
301
+ import { useFormik } from "formik";
302
+ import * as Yup from "yup";
303
+
304
+ const form = useFormik({
305
+ initialValues: { email: "", password: "" },
306
+ validationSchema: Yup.object().shape({
307
+ email: Yup.string().required("Zorunlu alan"),
308
+ password: Yup.string().required("Zorunlu alan"),
309
+ }),
310
+ onSubmit: (values) => { /* ... */ },
311
+ validateOnChange: false, // Sadece submit'te validasyon
312
+ validateOnBlur: false,
313
+ });
314
+ ```
291
315
 
292
316
  ---
293
317
 
package/DESIGN_SOURCES.md CHANGED
@@ -39,6 +39,28 @@
39
39
 
40
40
  ## Module → Design Mapping
41
41
 
42
+ ### Activation Module (`tn.onehub.ui.activation`)
43
+
44
+ | Attribute | Value |
45
+ |-----------|-------|
46
+ | **App Path** | `/` (ana uygulama) |
47
+ | **Theme Package** | `@turk.net/mui` |
48
+ | **Figma Doc** | OneHub Pages & Layouts |
49
+ | **Layout** | `TabBasedLayout` from `@turk.net/mui/layouts/app/TabBased` |
50
+ | **Icon System** | `@turk.net/mui/icons/*` + TuneIcon font |
51
+ | **Key Pages** | Login, My Tasks, Team Tasks, Customers, Performance, Ticket Details, Customer Details |
52
+
53
+ ### Support Qualcomm Module (`tn.onehub.ui.supportqualcomm`)
54
+
55
+ | Attribute | Value |
56
+ |-----------|-------|
57
+ | **App Path** | `/communication` (örnek) |
58
+ | **Theme Package** | `@turk.net/mui` |
59
+ | **Figma Doc** | OneHub Pages & Layouts |
60
+ | **Layout** | `TabBasedLayout` from `@turk.net/mui/layouts/app/TabBased` |
61
+ | **Icon System** | `@turk.net/mui/icons/*` + TuneIcon font |
62
+ | **Key Pages** | Login, Form Templates, Sent Forms, Operational Feedbacks, Performance Results |
63
+
42
64
  ### Support Module (`tn.onehub.ui.task`)
43
65
 
44
66
  | Attribute | Value |
@@ -249,15 +249,24 @@ sx={{ padding: 8 }}
249
249
 
250
250
  ## Sizing System
251
251
 
252
- ### Component Height Table (from Figma)
252
+ ### Component Height Table (from Figma & Gerçek Projeler)
253
253
 
254
254
  | Component | Height | Notes |
255
255
  |-----------|--------|-------|
256
+ | Button (extra-small) | `24px` | ButtonGroup sayfa boyutu seçici |
257
+ | Button (small) | `28px` | Compact action button |
256
258
  | Button (medium) | `32px` | Standard action button |
257
- | Table Header | `40px` | |
258
- | Table Row | `56px` | |
259
- | Filter Button | `32px` | Same as button |
259
+ | Button (large) | `40px` | Primary CTA |
260
+ | Button (extra-large) | `48px` | Hero/large CTA |
261
+ | Table Header (MUI Table) | `40px` | TextField/Select ile aynı |
262
+ | Table Row (MUI Table) | `56px` | — |
263
+ | Filter Button | `32px` | Same as medium button |
260
264
  | Checkbox/Radio | `16px` | Square (width = height) |
265
+ | TabBased Header (top bar) | `56px` | Global header |
266
+ | Sidebar Width | `256px` | Dashboard sidebar |
267
+ | Modal Paper (default) | `800px` width | Desktop modal |
268
+ | Drawer (right panel) | `400px`-`800px` width | Variable |
269
+ | LinearProgress bar | `8px` height | Progress indicator |
261
270
 
262
271
  ---
263
272
 
@@ -268,4 +277,4 @@ sx={{ padding: 8 }}
268
277
  | **Family** | Inter (`var(--font-inter)`) |
269
278
  | **Weights** | 400 (Regular), 500 (Medium), 600 (Semibold), 700 (Bold) |
270
279
  | **Host Project Responsibility** | MUST define `@font-face` and set `--font-inter` CSS variable |
271
- | **Package** | Font files NOT distributed by `@turknet/onehub`. Host project must self-host. |
280
+ | **Package** | Font files NOT distributed by `@turk.net/mui`. Host project must self-host (via `next/font/google` — Inter). |
@@ -142,7 +142,9 @@ Detects MUI `color` prop values that are not valid for the specific component.
142
142
  // ❌ Error
143
143
  <Button color="success">Save</Button> // Valid: primary, secondary, error
144
144
  <TextField color="primary" /> // Valid: neutral, brand, danger
145
- <Chip color="success" /> // Valid: primary, secondary, error
145
+ <Chip color="success" /> // Valid: informative, brand, danger, success, severewarning, important, warning
146
+
147
+ <Chip color="gradient" /> // ❌ NOT valid
146
148
  <Badge color="primary" /> // Valid: default, brand, success, danger, ...warning, important
147
149
 
148
150
  // ✅ OK
@@ -254,7 +256,7 @@ These rules require human or AI judgment because context matters.
254
256
  | Correct MUI component selected for Figma pattern | Requires visual comparison |
255
257
  | Form uses Formik + Yup | Can check imports but can't verify correct usage |
256
258
  | Data fetching uses React Query | Can check imports but can't verify correct pattern |
257
- | Icons from correct source | `@turknet/onehub/icons` vs `@mui/icons-material` can be checked by import source |
259
+ | Icons from correct source | `@turk.net/mui/icons/*` vs `@mui/icons-material` can be checked by import source |
258
260
  | Accessibility (labels, keyboard nav) | Needs behavioral/visual verification |
259
261
  | Border radius matches element type | Context-dependent |
260
262
  | Shadow/elevation level appropriate | Context-dependent |
@@ -342,7 +344,7 @@ design-lint:
342
344
  name: Design Compliance Check
343
345
  script:
344
346
  - yarn lint:design
345
- - node node_modules/@turknet/onehub/scripts/verify-design.js src/
347
+ - node node_modules/@turk.net/mui/scripts/verify-design.js src/
346
348
  ```
347
349
 
348
350
  ---
package/LLM_EXAMPLES.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # LLM Examples — Correct vs. Incorrect Usage
2
2
 
3
- This document demonstrates correct and incorrect usage of Material UI components according to the `@turknet/onehub` theme package rules.
3
+ This document demonstrates correct and incorrect usage of Material UI components according to the `@turk.net/mui` theme package rules.
4
4
 
5
5
  ---
6
6
 
@@ -55,7 +55,7 @@ import { Button } from '@mui/material';
55
55
  </Button>
56
56
 
57
57
  // ✅ Button with icon
58
- import { DeleteIcon } from '@turknet/onehub/icons';
58
+ import { DeleteIcon } from '@turk.net/mui/icons/DeleteIcon';
59
59
 
60
60
  <Button
61
61
  variant="contained"
@@ -197,7 +197,7 @@ import { TextField } from '@mui/material';
197
197
  />
198
198
 
199
199
  // ✅ With icon/adornment
200
- import { SearchIcon } from '@turknet/onehub/icons';
200
+ import { SearchIcon } from '@turk.net/mui/icons/SearchIcon';
201
201
  import { InputAdornment } from '@mui/material';
202
202
 
203
203
  <TextField
@@ -892,7 +892,7 @@ import {
892
892
  ListItemButton,
893
893
  Divider
894
894
  } from '@mui/material';
895
- import { StarIcon } from '@turknet/onehub/icons';
895
+ import { StarIcon } from '@turk.net/mui/icons/StarIcon';
896
896
 
897
897
  // ✅ Basic List
898
898
  <List>
@@ -1171,7 +1171,7 @@ import { Paper, Typography, Box } from '@mui/material';
1171
1171
 
1172
1172
  ```tsx
1173
1173
  import { Chip, Badge, Avatar } from '@mui/material';
1174
- import { DeleteIcon, StarIcon } from '@turknet/onehub/icons';
1174
+ import { DeleteIcon, StarIcon } from '@turk.net/mui/icons';
1175
1175
 
1176
1176
  // ✅ Basic chip
1177
1177
  <Chip label="Kategori" variant="filled" color="primary" />
package/LLM_GUIDELINES.md CHANGED
@@ -1,4 +1,4 @@
1
- # LLM Guidelines - @turknet/onehub Material UI Theme Package
1
+ # LLM Guidelines - @turk.net/mui Material UI Theme Package
2
2
 
3
3
  > **MANDATORY**: You MUST read this document in its entirety. Using Material UI components according to the rules defined in this theme package is **mandatory**.
4
4
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  ### Purpose of This Package
22
22
 
23
- `@turknet/onehub` is a theme package that customizes Material UI components through **theme configuration**. It does **NOT** provide its own components — you use Material UI's base components through this theme.
23
+ `@turk.net/mui` is a theme package that customizes Material UI components through **theme configuration**. It does **NOT** provide its own components — you use Material UI's base components through this theme.
24
24
 
25
25
  ### Critical Rules
26
26
 
@@ -141,7 +141,7 @@ palette.[neutral|brand|danger]:
141
141
  | **Checkbox** | primary, error |
142
142
  | **Radio** | primary, error |
143
143
  | **Switch** | primary, error |
144
- | **Chip** | primary, secondary, error |
144
+ | **Chip** | informative, brand, danger, success, severewarning, important, warning |
145
145
  | **Alert** | success, warning, error, info (MUI defaults) |
146
146
  | **Badge** | primary, secondary, error, success, warning, info |
147
147
  | **Typography** | (default) |
@@ -294,7 +294,7 @@ text.xs.{regular|medium|semibold|bold} → 12px
294
294
  | Component | MUI Doc | Variants | Sizes | Colors | Typography | Purpose |
295
295
  |---|---|---|---|---|---|---|
296
296
  | **Typography** | [docs](https://mui.com/api/typography/) | display.*.*, text.*.* | - | (default) | display.xl2-xs, text.xl-xs | Text display, headings |
297
- | **Chip** | [docs](https://mui.com/api/chip/) | filled, outlined | small, medium | primary, secondary, error | text.xs - text.md | Label, category, tag |
297
+ | **Chip** | [docs](https://mui.com/api/chip/) | filled, tint, outline, ghost | small, medium | informative, brand, danger, success, severewarning, important, warning | text.xs - text.md | Label, category, tag, status |
298
298
  | **Badge** | [docs](https://mui.com/api/badge/) | - | small, medium | primary, secondary, error, success, warning, info | - | Info badge, counter |
299
299
  | **Avatar** | [docs](https://mui.com/api/avatar/) | - | small, medium, large | - | - | User profile picture |
300
300
  | **AvatarGroup** | [docs](https://mui.com/api/avatar-group/) | - | - | - | - | Avatar grouping |
@@ -365,7 +365,7 @@ text.xs.{regular|medium|semibold|bold} → 12px
365
365
  - **Material UI Official Documentation**: https://mui.com
366
366
  - **Material UI Theme**: https://mui.com/material-ui/customization/theming/
367
367
  - **Material UI Components API**: https://mui.com/material-ui/api/
368
- - **@turknet/onehub Repository**: Your project's repository link
368
+ - **@turk.net/mui Repository**: Your project's repository link
369
369
  - **Usage Examples**: You MUST read the `LLM_EXAMPLES.md` file
370
370
 
371
371
  ---
@@ -398,6 +398,60 @@ text.xs.{regular|medium|semibold|bold} → 12px
398
398
 
399
399
  ---
400
400
 
401
+ ## Layout & Figma Recognition
402
+
403
+ ### Figma "Header tab navigation" → TabBased Layout
404
+
405
+ **When a Figma design contains a layer named `"Header tab navigation"`:**
406
+
407
+ This indicates the page uses the TabBased layout (56px header toolbar with navigation buttons). The page content MUST be developed as a **tab** within the existing TabBased layout.
408
+
409
+ ```tsx
410
+ // ❌ WRONG — Do NOT implement the header in your page
411
+ function MyPage() {
412
+ return (
413
+ <Box>
414
+ <AppBar position="static">...</AppBar> // ← NEVER do this
415
+ <Box>page content</Box>
416
+ </Box>
417
+ );
418
+ }
419
+
420
+ // ✅ CORRECT — Page as a tab, layout provides header automatically
421
+ function MyPageContent() {
422
+ return (
423
+ <Box>
424
+ <Typography variant="display.xs.bold">Page Title</Typography>
425
+ {/* page content only */}
426
+ </Box>
427
+ );
428
+ }
429
+ ```
430
+
431
+ **Layout is handled by:** `@turk.net/mui/layouts/app/TabBased`
432
+
433
+ ### Figma "Card" / "Container" → Paper
434
+
435
+ **When a Figma design contains a layer named `"Card"` or `"Container"`** with:
436
+ - Background: `var(--Neutral-Background-2-Rest, #FAFAFA)` or white
437
+ - Box Shadow: `0 0 2px 0 rgba(0,0,0,0.12), 0 1px 2px 0 rgba(0,0,0,0.14)`
438
+
439
+ → Use `<Paper elevation={2}>` from `@mui/material`
440
+
441
+ ```tsx
442
+ // ✅ CORRECT
443
+ <Paper elevation={2}>
444
+ <Box sx={{ p: theme.spacing(4) }}>
445
+ <Typography variant="text.md.medium">Card Title</Typography>
446
+ {/* card content */}
447
+ </Box>
448
+ </Paper>
449
+ ```
450
+
451
+ Paper has `8px` borderRadius by default (from theme). If the Figma design has sharp corners, override with `sx={{ borderRadius: 0 }}`.
452
+
453
+ ---
454
+
401
455
  **Last Updated**: May 2026
402
456
  **Version**: 2.0+
403
- **Package**: @turknet/onehub
457
+ **Package**: @turk.net/mui
package/PAGE_PATTERNS.md CHANGED
@@ -495,6 +495,66 @@ enqueueSnackbar('Something went wrong', { variant: 'error' });
495
495
 
496
496
  ---
497
497
 
498
+ ---
499
+
500
+ ## Pattern 9: Figma Layer → Layout Decision
501
+
502
+ ### 9.1 — "Header tab navigation" Layer → TabBased Layout
503
+
504
+ **When a Figma design contains a layer named `"Header tab navigation"`:**
505
+
506
+ This is the TabBased layout's header (56px toolbar with navigation/action buttons). The page is designed as a **tab** within the existing TabBased layout.
507
+
508
+ **CRITICAL:** Do NOT implement this header in the page component. The header is handled by `@turk.net/mui/layouts/app/TabBased`.
509
+
510
+ ```tsx
511
+ // ❌ WRONG
512
+ function MyPage() {
513
+ return (
514
+ <Box>
515
+ <AppBar>...</AppBar> // ← Bunu yapma!
516
+ <Box>content</Box>
517
+ </Box>
518
+ );
519
+ }
520
+
521
+ // ✅ CORRECT
522
+ // Sayfa TabBased layout altında sekme olarak açılır
523
+ // Sadece içeriği geliştir, header'ı layout sağlar
524
+ function MyPageContent() {
525
+ return (
526
+ <Box sx={{ p: theme.spacing(4) }}>
527
+ <Typography variant="display.xs.bold">Sayfa Başlığı</Typography>
528
+ {/* sayfa içeriği */}
529
+ </Box>
530
+ );
531
+ }
532
+ ```
533
+
534
+ ### 9.2 — "Card" / "Container" Layer → Paper
535
+
536
+ **When a Figma design contains a layer named `"Card"` or `"Container"`** with these styles:
537
+
538
+ | Style | Value |
539
+ |-------|-------|
540
+ | Background | `var(--Neutral-Background-2-Rest, #FAFAFA)` or white |
541
+ | Box Shadow | `0 0 2px 0 rgba(0,0,0,0.12), 0 1px 2px 0 rgba(0,0,0,0.14)` |
542
+
543
+ → **Use `<Paper elevation={2}>`** from `@mui/material`
544
+
545
+ ```tsx
546
+ <Paper elevation={2}>
547
+ <Box sx={{ p: theme.spacing(4) }}>
548
+ <Typography variant="text.md.medium">Card Title</Typography>
549
+ {/* card content */}
550
+ </Box>
551
+ </Paper>
552
+ ```
553
+
554
+ **Corner radius:** Paper has `8px` borderRadius by default (from theme). If Figma shows sharp corners (0px), override with `sx={{ borderRadius: 0 }}`.
555
+
556
+ ---
557
+
498
558
  ## Quick Decision Guide
499
559
 
500
560
  | If you need to... | Use Pattern |
@@ -507,3 +567,5 @@ enqueueSnackbar('Something went wrong', { variant: 'error' });
507
567
  | Show feedback message | Pattern 6: Notifications |
508
568
  | Handle no-data state | Pattern 7: Empty State |
509
569
  | Handle loading state | Pattern 8: Loading State |
570
+ | Figma has "Header tab navigation" layer | Pattern 9.1: TabBased layout tab |
571
+ | Figma has "Card" / "Container" layer | Pattern 9.2: Paper elevation={2} |
package/SKILL_SETUP.md CHANGED
@@ -1,6 +1,6 @@
1
- # OpenCode Skill & Rule Setup — @turknet/onehub Design System
1
+ # OpenCode Skill & Rule Setup — @turk.net/mui Design System
2
2
 
3
- This document explains how to set up OpenCode skills, rules, and verification tools for projects using the `@turknet/onehub` MUI theme package.
3
+ This document explains how to set up OpenCode skills, rules, and verification tools for projects using the `@turk.net/mui` MUI theme package.
4
4
 
5
5
  ---
6
6
 
@@ -19,7 +19,7 @@ The complete design verification system ensures AI agents (LLMs) and developers
19
19
 
20
20
  - OpenCode CLI installed (`opencode` command works)
21
21
  - Project configured with `.opencode.json` or `.opencode/` directory
22
- - `@turknet/onehub` in `package.json` dependencies
22
+ - `@turk.net/mui` in `package.json` dependencies
23
23
 
24
24
  ---
25
25
 
@@ -34,7 +34,7 @@ The complete design verification system ensures AI agents (LLMs) and developers
34
34
  mkdir -p .opencode/skills/turknet-onehub-component-usage
35
35
 
36
36
  # Copy skill file from theme package
37
- cp node_modules/@turknet/onehub/.opencode/skills/turknet-onehub-component-usage/SKILL.md \
37
+ cp node_modules/@turk.net/mui/.opencode/skills/turknet-onehub-component-usage/SKILL.md \
38
38
  .opencode/skills/turknet-onehub-component-usage/SKILL.md
39
39
  ```
40
40
 
@@ -45,7 +45,7 @@ cp node_modules/@turknet/onehub/.opencode/skills/turknet-onehub-component-usage/
45
45
  mkdir -p .opencode/skills/onehub-design-verification
46
46
 
47
47
  # Copy skill file from theme package
48
- cp node_modules/@turknet/onehub/.opencode/skills/onehub-design-verification/SKILL.md \
48
+ cp node_modules/@turk.net/mui/.opencode/skills/onehub-design-verification/SKILL.md \
49
49
  .opencode/skills/onehub-design-verification/SKILL.md
50
50
  ```
51
51
 
@@ -58,7 +58,7 @@ The design-compliance rule automatically enforces design constraints whenever AI
58
58
  mkdir -p .opencode/rules
59
59
 
60
60
  # Copy rule file from theme package
61
- cp node_modules/@turknet/onehub/.opencode/rules/design-compliance.md \
61
+ cp node_modules/@turk.net/mui/.opencode/rules/design-compliance.md \
62
62
  .opencode/rules/design-compliance.md
63
63
  ```
64
64
 
@@ -69,7 +69,7 @@ cp node_modules/@turknet/onehub/.opencode/rules/design-compliance.md \
69
69
  mkdir -p scripts
70
70
 
71
71
  # Copy verification script
72
- cp node_modules/@turknet/onehub/scripts/verify-design.js \
72
+ cp node_modules/@turk.net/mui/scripts/verify-design.js \
73
73
  scripts/verify-design.js
74
74
  ```
75
75
 
@@ -171,7 +171,7 @@ your-project/
171
171
  ├── scripts/
172
172
  │ └── verify-design.js # Automated verification script
173
173
  ├── node_modules/
174
- │ └── @turknet/onehub/
174
+ │ └── @turk.net/mui/
175
175
  │ ├── DESIGN_RULES.md # Mandatory design rules
176
176
  │ ├── COMPONENT_MAP.md # Figma → MUI component mapping
177
177
  │ ├── COMPONENT_GLOSSARY.md # Valid component prop combinations
@@ -214,13 +214,13 @@ In OpenCode, available via `Ctrl+P`:
214
214
 
215
215
  ```bash
216
216
  # Read design rules
217
- cat node_modules/@turknet/onehub/DESIGN_RULES.md
217
+ cat node_modules/@turk.net/mui/DESIGN_RULES.md
218
218
 
219
219
  # Check component prop validity
220
- cat node_modules/@turknet/onehub/COMPONENT_GLOSSARY.md
220
+ cat node_modules/@turk.net/mui/COMPONENT_GLOSSARY.md
221
221
 
222
222
  # Find the right component for a Figma pattern
223
- cat node_modules/@turknet/onehub/COMPONENT_MAP.md
223
+ cat node_modules/@turk.net/mui/COMPONENT_MAP.md
224
224
  ```
225
225
 
226
226
  ---
@@ -348,14 +348,14 @@ Edit `scripts/verify-design.js` to adjust rule severity or add exceptions. The s
348
348
 
349
349
  Make sure you copied the script:
350
350
  ```bash
351
- cp node_modules/@turknet/onehub/scripts/verify-design.js scripts/
351
+ cp node_modules/@turk.net/mui/scripts/verify-design.js scripts/
352
352
  ```
353
353
 
354
354
  ---
355
355
 
356
356
  ## Design Reference Files
357
357
 
358
- All files are available in `node_modules/@turknet/onehub/` after installing:
358
+ All files are available in `node_modules/@turk.net/mui/` after installing:
359
359
 
360
360
  | File | What It Provides |
361
361
  |------|-----------------|
@@ -375,7 +375,7 @@ All files are available in `node_modules/@turknet/onehub/` after installing:
375
375
 
376
376
  For issues or suggestions:
377
377
 
378
- - **@turknet/onehub Repository**: Internal Git repository
378
+ - **@turk.net/mui Repository**: Internal Git repository
379
379
  - **OpenCode Docs**: https://opencode.ai
380
380
  - **Material UI Docs**: https://mui.com
381
381
 
package/dist/index.js CHANGED
@@ -1732,6 +1732,7 @@ function createButtonBase() {
1732
1732
  return {
1733
1733
  styleOverrides: {
1734
1734
  root: ({ theme: theme2 }) => ({
1735
+ textTransform: "unset",
1735
1736
  [`&.${material.buttonClasses.root}.${material.buttonClasses.disabled}`]: {
1736
1737
  backgroundColor: theme2.vars?.palette.neutral.background.disabled.rest,
1737
1738
  color: theme2.vars?.palette.neutral.foreground.disabled.rest,
@@ -1782,10 +1783,11 @@ function createButton() {
1782
1783
  props: { size: "extra-small" },
1783
1784
  style: {
1784
1785
  gap: theme2.spacing(2),
1785
- "--padding-x": theme2.spacing(3.5),
1786
+ "--padding-x": theme2.spacing(3),
1786
1787
  "--padding-y": theme2.spacing(2.75),
1787
1788
  fontSize: theme2.typography.text.xs.medium.fontSize,
1788
1789
  fontWeight: theme2.typography.text.xs.medium.fontWeight,
1790
+ minWidth: theme2.spacing(8.5),
1789
1791
  [`.${material.buttonClasses.icon}`]: {
1790
1792
  marginTop: theme2.spacing(-0.5),
1791
1793
  marginBottom: theme2.spacing(-0.5)
@@ -1817,6 +1819,7 @@ function createButton() {
1817
1819
  gap: theme2.spacing(2.5),
1818
1820
  "--padding-y": theme2.spacing(3.25),
1819
1821
  "--padding-x": theme2.spacing(4),
1822
+ minWidth: theme2.spacing(10),
1820
1823
  // -- ONLY ICON SIZE & SPACES
1821
1824
  [`& svg.${material.svgIconClasses.root}`]: {
1822
1825
  width: theme2.spacing(4),
@@ -1844,6 +1847,7 @@ function createButton() {
1844
1847
  fontSize: theme2.typography.text.md.medium.fontSize,
1845
1848
  fontWeight: theme2.typography.text.md.medium.fontWeight,
1846
1849
  gap: theme2.spacing(3),
1850
+ minWidth: theme2.spacing(12),
1847
1851
  "--padding-x": theme2.spacing(4.5),
1848
1852
  "--padding-y": theme2.spacing(4),
1849
1853
  [`.${material.buttonClasses.icon}`]: {
@@ -1874,6 +1878,7 @@ function createButton() {
1874
1878
  fontSize: theme2.typography.text.md.medium.fontSize,
1875
1879
  fontWeight: theme2.typography.text.md.medium.fontWeight,
1876
1880
  gap: theme2.spacing(3.5),
1881
+ minWidth: theme2.spacing(13),
1877
1882
  "--padding-x": theme2.spacing(5),
1878
1883
  "--padding-y": theme2.spacing(4.5),
1879
1884
  [`.${material.buttonClasses.icon}`]: {
@@ -1904,6 +1909,7 @@ function createButton() {
1904
1909
  fontSize: theme2.typography.text.lg.medium.fontSize,
1905
1910
  fontWeight: theme2.typography.text.lg.medium.fontWeight,
1906
1911
  gap: theme2.spacing(4),
1912
+ minWidth: theme2.spacing(15),
1907
1913
  "--padding-x": theme2.spacing(5.5),
1908
1914
  "--padding-y": theme2.spacing(5.25),
1909
1915
  [`.${material.buttonClasses.icon}`]: {
@@ -3511,9 +3517,72 @@ function createBadge() {
3511
3517
  }
3512
3518
  };
3513
3519
  }
3520
+ function createTabs() {
3521
+ return {
3522
+ styleOverrides: {
3523
+ root: ({ theme: theme2 }) => ({
3524
+ minHeight: "32px",
3525
+ variants: [
3526
+ {
3527
+ props: { indicatorColor: "primary" },
3528
+ style: {
3529
+ [`.${material.tabsClasses.indicator}`]: {
3530
+ backgroundColor: theme2.vars?.palette.brand.stroke.compound.rest
3531
+ }
3532
+ }
3533
+ },
3534
+ {
3535
+ props: { textColor: "primary" },
3536
+ style: {
3537
+ [`.${material.tabClasses.root}.${material.tabClasses.textColorPrimary}`]: {
3538
+ color: theme2.vars?.palette.neutral.foreground[2].rest
3539
+ },
3540
+ [`.${material.tabClasses.root}.${material.tabClasses.textColorPrimary}.${material.tabClasses.selected}`]: {
3541
+ color: theme2.vars?.palette.brand.foreground.compound.rest
3542
+ }
3543
+ }
3544
+ }
3545
+ ]
3546
+ })
3547
+ }
3548
+ };
3549
+ }
3550
+ function createTab() {
3551
+ return {
3552
+ defaultProps: {
3553
+ disableRipple: true,
3554
+ disableFocusRipple: true,
3555
+ disableTouchRipple: true
3556
+ },
3557
+ styleOverrides: {
3558
+ root: ({ theme: theme2 }) => ({
3559
+ textTransform: "unset",
3560
+ minHeight: theme2.spacing(8),
3561
+ height: theme2.spacing(8),
3562
+ padding: "0px 4px 11px",
3563
+ ":not(:last-child)": {
3564
+ marginRight: theme2.spacing(4)
3565
+ },
3566
+ variants: [
3567
+ {
3568
+ props: { color: "primary" },
3569
+ style: {
3570
+ color: theme2.vars?.palette.brand.foreground.compound.rest
3571
+ }
3572
+ }
3573
+ ]
3574
+ }),
3575
+ labelIcon: ({ theme: theme2 }) => ({
3576
+ padding: "0px 4px 11px",
3577
+ minHeight: theme2.spacing(8),
3578
+ height: theme2.spacing(8)
3579
+ })
3580
+ }
3581
+ };
3582
+ }
3514
3583
 
3515
3584
  // theme/components/index.tsx
3516
- var Components22 = {
3585
+ var Components23 = {
3517
3586
  MuiAutocomplete: createAutocomplete(),
3518
3587
  MuiAvatar: createAvatar(),
3519
3588
  MuiBadge: createBadge(),
@@ -3547,7 +3616,9 @@ var Components22 = {
3547
3616
  MuiSlider: createSlider(),
3548
3617
  MuiSwitch: createSwitch(),
3549
3618
  MuiTextField: createTextField(),
3550
- MuiTypography: createTypography()
3619
+ MuiTypography: createTypography(),
3620
+ MuiTab: createTab(),
3621
+ MuiTabs: createTabs()
3551
3622
  };
3552
3623
 
3553
3624
  // theme/typography/typographyVariants.ts
@@ -3915,7 +3986,7 @@ var theme = styles.createTheme({
3915
3986
  shape: {
3916
3987
  borderRadius: 8
3917
3988
  },
3918
- components: Components22,
3989
+ components: Components23,
3919
3990
  colorSchemes: colorSchemes_default
3920
3991
  });
3921
3992
  var theme_default = theme;