@ziyarago/ui 0.0.0-stage → 0.1.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/CHANGELOG.md +46 -0
- package/LICENSE +25 -0
- package/README.md +121 -2
- package/THIRD_PARTY_NOTICES.md +12 -0
- package/assets/3d/_sheet.png +0 -0
- package/assets/3d/archive.png +0 -0
- package/assets/3d/bag.png +0 -0
- package/assets/3d/cameraoff.png +0 -0
- package/assets/3d/comment.png +0 -0
- package/assets/3d/crowd.png +0 -0
- package/assets/3d/firstaid.png +0 -0
- package/assets/3d/flag.png +0 -0
- package/assets/3d/grain.png +0 -0
- package/assets/3d/guide.png +0 -0
- package/assets/3d/hotel.png +0 -0
- package/assets/3d/kaaba.png +0 -0
- package/assets/3d/logo.png +0 -0
- package/assets/3d/luggage.png +0 -0
- package/assets/3d/map.png +0 -0
- package/assets/3d/mosque.png +0 -0
- package/assets/3d/plane.png +0 -0
- package/assets/3d/profile.png +0 -0
- package/assets/3d/restaurant.png +0 -0
- package/assets/3d/ring360.png +0 -0
- package/assets/3d/shoes.png +0 -0
- package/assets/3d/star.png +0 -0
- package/assets/3d/store.png +0 -0
- package/assets/3d/taxi.png +0 -0
- package/assets/3d/threads.png +0 -0
- package/assets/3d/tour360.png +0 -0
- package/assets/3d/trash.png +0 -0
- package/assets/3d/umbrella.png +0 -0
- package/assets/3d/video.png +0 -0
- package/assets/3d/water.png +0 -0
- package/assets/brand/mark.png +0 -0
- package/assets/brand/ziyarago-logo-light.svg +21 -0
- package/assets/brand/ziyarago-logo.svg +21 -0
- package/assets/brand/ziyarago-mark-light.svg +13 -0
- package/assets/brand/ziyarago-mark.svg +13 -0
- package/assets/fonts/thmanyah/thmanyahsans-Black.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahsans-Bold.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahsans-Light.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahsans-Medium.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahsans-Regular.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahserifdisplay-Black.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahserifdisplay-Bold.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahserifdisplay-Light.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahserifdisplay-Medium.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahserifdisplay-Regular.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahseriftext-Black.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahseriftext-Bold.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahseriftext-Light.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahseriftext-Medium.otf +0 -0
- package/assets/fonts/thmanyah/thmanyahseriftext-Regular.otf +0 -0
- package/dist/llms-full.txt +2293 -0
- package/dist/llms.txt +239 -0
- package/dist/manifest.json +10254 -0
- package/dist/style.css +1357 -0
- package/dist/tokens.css +48 -0
- package/package.json +118 -4
- package/src/catalog.js +4 -0
- package/src/core/components.js +124 -0
- package/src/core/components2.js +163 -0
- package/src/core/components3.js +35 -0
- package/src/core/components4.js +58 -0
- package/src/core/components6.js +48 -0
- package/src/core/components7.js +42 -0
- package/src/core/dialog.js +65 -0
- package/src/core/index.js +9 -0
- package/src/core/pages.js +51 -0
- package/src/meta/README.md +29 -0
- package/src/meta/actions.js +161 -0
- package/src/meta/data.js +327 -0
- package/src/meta/domain.js +212 -0
- package/src/meta/feedback.js +153 -0
- package/src/meta/forms.js +453 -0
- package/src/meta/groups.js +16 -0
- package/src/meta/index.js +14 -0
- package/src/meta/layout.js +159 -0
- package/src/meta/media.js +104 -0
- package/src/meta/navigation.js +99 -0
- package/src/meta/overlay.js +264 -0
- package/src/meta/pages.js +229 -0
- package/src/meta/templates.json +2422 -0
- package/src/meta/typography.js +58 -0
- package/src/nuxt/module.mjs +29 -0
- package/src/nuxt/plugin.mjs +9 -0
- package/src/react/index.js +31 -0
- package/src/styles/components.css +162 -0
- package/src/styles/components2.css +68 -0
- package/src/styles/components3.css +29 -0
- package/src/styles/components4.css +18 -0
- package/src/styles/components5.css +5 -0
- package/src/styles/components6.css +19 -0
- package/src/styles/components7.css +44 -0
- package/src/styles/components8.css +47 -0
- package/src/styles/effects.css +43 -0
- package/src/styles/fonts.css +17 -0
- package/src/styles/index.css +21 -0
- package/src/styles/sizes/actions.css +126 -0
- package/src/styles/sizes/data.css +161 -0
- package/src/styles/sizes/domain.css +35 -0
- package/src/styles/sizes/feedback.css +69 -0
- package/src/styles/sizes/forms.css +122 -0
- package/src/styles/sizes/layout.css +15 -0
- package/src/styles/sizes/media.css +28 -0
- package/src/styles/sizes/navigation.css +146 -0
- package/src/styles/sizes/overlay.css +79 -0
- package/src/styles/sizes/typography.css +12 -0
- package/src/styles/tokens.css +47 -0
- package/src/theme.js +52 -0
- package/src/vue/index.js +29 -0
- package/tokens/tokens.json +9 -0
- package/types/core.d.ts +4 -0
- package/types/nuxt.d.ts +11 -0
- package/types/react.d.ts +189 -0
- package/types/shared.d.ts +18 -0
- package/types/theme.d.ts +6 -0
- package/types/vue.d.ts +192 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/* size overrides for the layout group. Only [data-size] selectors, see the size scale at the end of tokens.css */
|
|
2
|
+
.zg-div[data-size="xs"]{font-size:10px;gap:8px}.zg-div[data-size="sm"]{font-size:11px;gap:10px}.zg-div[data-size="lg"]{font-size:13px;gap:14px}.zg-div[data-size="xl"]{font-size:15px;gap:16px}
|
|
3
|
+
.zg-setsec[data-size="xs"]{padding:10px 0;gap:12px}.zg-setsec[data-size="sm"]{padding:14px 0;gap:16px}.zg-setsec[data-size="lg"]{padding:26px 0;gap:32px}.zg-setsec[data-size="xl"]{padding:34px 0;gap:40px}
|
|
4
|
+
.zg-setsec[data-size="xs"] b{font-size:13px!important}.zg-setsec[data-size="sm"] b{font-size:14px!important}.zg-setsec[data-size="lg"] b{font-size:18px!important}.zg-setsec[data-size="xl"] b{font-size:21px!important}
|
|
5
|
+
.zg-setsec[data-size="xs"] .zg-hint{font-size:11px!important}.zg-setsec[data-size="sm"] .zg-hint{font-size:12px!important}.zg-setsec[data-size="lg"] .zg-hint{font-size:14px!important}.zg-setsec[data-size="xl"] .zg-hint{font-size:15px!important}
|
|
6
|
+
.zg-setsec[data-size="xs"]>.zg-field{gap:8px!important}.zg-setsec[data-size="sm"]>.zg-field{gap:10px!important}.zg-setsec[data-size="lg"]>.zg-field{gap:18px!important}.zg-setsec[data-size="xl"]>.zg-field{gap:22px!important}
|
|
7
|
+
.zg-page-head[data-size="xs"] h1{font-size:20px}.zg-page-head[data-size="sm"] h1{font-size:24px}.zg-page-head[data-size="lg"] h1{font-size:clamp(32px,3.6vw,48px)}.zg-page-head[data-size="xl"] h1{font-size:clamp(38px,4.4vw,58px)}
|
|
8
|
+
.zg-page-head[data-size="xs"] p{font-size:12px}.zg-page-head[data-size="sm"] p{font-size:13px}.zg-page-head[data-size="lg"] p{font-size:17px}.zg-page-head[data-size="xl"] p{font-size:19px}
|
|
9
|
+
.zg-page-head[data-size="xs"]{gap:8px}.zg-page-head[data-size="sm"]{gap:12px}.zg-page-head[data-size="lg"]{gap:20px}.zg-page-head[data-size="xl"]{gap:24px}
|
|
10
|
+
.zg-liquid[data-size="xs"]{padding:8px}.zg-liquid[data-size="sm"]{padding:12px}.zg-liquid[data-size="lg"]{padding:28px}.zg-liquid[data-size="xl"]{padding:36px}
|
|
11
|
+
.zg-foot[data-size="xs"]{padding:8px 4px;gap:8px}.zg-foot[data-size="sm"]{padding:12px 4px;gap:12px}.zg-foot[data-size="lg"]{padding:24px 4px;gap:20px}.zg-foot[data-size="xl"]{padding:32px 4px;gap:24px}
|
|
12
|
+
.zg-foot[data-size="xs"] span,.zg-foot[data-size="xs"] a{font-size:11px!important}.zg-foot[data-size="sm"] span,.zg-foot[data-size="sm"] a{font-size:12px!important}.zg-foot[data-size="lg"] span,.zg-foot[data-size="lg"] a{font-size:15px!important}.zg-foot[data-size="xl"] span,.zg-foot[data-size="xl"] a{font-size:17px!important}
|
|
13
|
+
.zg-sort[data-size="xs"]{gap:4px;font-size:.8em}.zg-sort[data-size="sm"]{gap:5px;font-size:.9em}.zg-sort[data-size="lg"]{gap:8px;font-size:1.1em}.zg-sort[data-size="xl"]{gap:10px;font-size:1.25em}
|
|
14
|
+
.zg-sort[data-size="xs"] .zg-sort__i{padding:3px 4px 3px 8px;gap:6px;border-radius:10px}.zg-sort[data-size="sm"] .zg-sort__i{padding:5px 6px 5px 10px;gap:8px;border-radius:13px}
|
|
15
|
+
.zg-sort[data-size="lg"] .zg-sort__i{padding:11px 11px 11px 15px;gap:12px}.zg-sort[data-size="xl"] .zg-sort__i{padding:14px 14px 14px 18px;gap:14px}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* size overrides for the media group. Only [data-size] selectors, see the size scale at the end of tokens.css */
|
|
2
|
+
/* Gallery: thumbnails */
|
|
3
|
+
.zg-gal[data-size="xs"] .zg-gal__t{gap:4px}
|
|
4
|
+
.zg-gal[data-size="sm"] .zg-gal__t{gap:6px}
|
|
5
|
+
.zg-gal[data-size="md"] .zg-gal__t{gap:8px}
|
|
6
|
+
.zg-gal[data-size="lg"] .zg-gal__t{gap:10px}
|
|
7
|
+
.zg-gal[data-size="xl"] .zg-gal__t{gap:12px}
|
|
8
|
+
.zg-gal[data-size="xs"] .zg-gal__t button{width:48px;border-radius:8px}
|
|
9
|
+
.zg-gal[data-size="sm"] .zg-gal__t button{width:64px;border-radius:10px}
|
|
10
|
+
.zg-gal[data-size="md"] .zg-gal__t button{width:84px;border-radius:16px}
|
|
11
|
+
.zg-gal[data-size="lg"] .zg-gal__t button{width:112px;border-radius:18px}
|
|
12
|
+
.zg-gal[data-size="xl"] .zg-gal__t button{width:144px;border-radius:20px}
|
|
13
|
+
/* Carousel: slide height and caption */
|
|
14
|
+
.zg-car[data-size="xs"]{aspect-ratio:16/6}
|
|
15
|
+
.zg-car[data-size="sm"]{aspect-ratio:16/7}
|
|
16
|
+
.zg-car[data-size="md"]{aspect-ratio:16/8}
|
|
17
|
+
.zg-car[data-size="lg"]{aspect-ratio:16/9}
|
|
18
|
+
.zg-car[data-size="xl"]{aspect-ratio:16/10}
|
|
19
|
+
.zg-car[data-size="xs"] .zg-car__c{padding:28px 12px 14px;font-size:11px}
|
|
20
|
+
.zg-car[data-size="sm"] .zg-car__c{padding:36px 16px 16px;font-size:12px}
|
|
21
|
+
.zg-car[data-size="md"] .zg-car__c{padding:44px 20px 18px;font-size:14px}
|
|
22
|
+
.zg-car[data-size="lg"] .zg-car__c{padding:52px 24px 22px;font-size:16px}
|
|
23
|
+
.zg-car[data-size="xl"] .zg-car__c{padding:60px 28px 26px;font-size:18px}
|
|
24
|
+
/* bug fix: .zg-ibtn{position:relative} overrides the absolute arrows */
|
|
25
|
+
.zg-car>.zg-car__p,.zg-car>.zg-car__n{position:absolute}
|
|
26
|
+
.zg-car[data-size]{width:100%}
|
|
27
|
+
.zg-car[data-size] .zg-car__s{aspect-ratio:auto;height:100%}
|
|
28
|
+
.zg-gal[data-size]{flex:none;width:100%}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/* size overrides for the navigation group. Only [data-size] selectors, see the size scale at the end of tokens.css */
|
|
2
|
+
.zg-topnav[data-size="xs"]{padding-block:6px;gap:8px}
|
|
3
|
+
.zg-topnav[data-size="sm"]{padding-block:8px;gap:10px}
|
|
4
|
+
.zg-topnav[data-size="md"]{padding-block:10px;gap:12px}
|
|
5
|
+
.zg-topnav[data-size="lg"]{padding-block:14px;gap:14px}
|
|
6
|
+
.zg-topnav[data-size="xl"]{padding-block:18px;gap:16px}
|
|
7
|
+
.zg-topnav[data-size="xs"] .zg-topnav__brand{font-size:13px}
|
|
8
|
+
.zg-topnav[data-size="sm"] .zg-topnav__brand{font-size:15px}
|
|
9
|
+
.zg-topnav[data-size="md"] .zg-topnav__brand{font-size:18px}
|
|
10
|
+
.zg-topnav[data-size="lg"] .zg-topnav__brand{font-size:21px}
|
|
11
|
+
.zg-topnav[data-size="xl"] .zg-topnav__brand{font-size:24px}
|
|
12
|
+
.zg-topnav[data-size="xs"] .zg-navitem{height:28px;font-size:12px;padding-inline:8px}
|
|
13
|
+
.zg-topnav[data-size="sm"] .zg-navitem{height:32px;font-size:13px;padding-inline:10px}
|
|
14
|
+
.zg-topnav[data-size="md"] .zg-navitem{height:40px;font-size:14px;padding-inline:12px}
|
|
15
|
+
.zg-topnav[data-size="lg"] .zg-navitem{height:48px;font-size:15px;padding-inline:16px}
|
|
16
|
+
.zg-topnav[data-size="xl"] .zg-navitem{height:56px;font-size:16px;padding-inline:20px}
|
|
17
|
+
.zg-topnav[data-size="xs"] .zg-icon{width:14px!important;height:14px!important}
|
|
18
|
+
.zg-topnav[data-size="sm"] .zg-icon{width:16px!important;height:16px!important}
|
|
19
|
+
.zg-topnav[data-size="md"] .zg-icon{width:18px!important;height:18px!important}
|
|
20
|
+
.zg-topnav[data-size="lg"] .zg-icon{width:20px!important;height:20px!important}
|
|
21
|
+
.zg-topnav[data-size="xl"] .zg-icon{width:22px!important;height:22px!important}
|
|
22
|
+
.zg-sidenav[data-size="xs"]{--w:216px;padding:10px 10px}
|
|
23
|
+
.zg-sidenav[data-size="sm"]{--w:240px;padding:12px 10px}
|
|
24
|
+
.zg-sidenav[data-size="md"]{--w:272px;padding:16px 12px}
|
|
25
|
+
.zg-sidenav[data-size="lg"]{--w:304px;padding:18px 14px}
|
|
26
|
+
.zg-sidenav[data-size="xl"]{--w:336px;padding:20px 16px}
|
|
27
|
+
.zg-sidenav[data-size="xs"].zg-sidenav--collapsed{--w:56px}
|
|
28
|
+
.zg-sidenav[data-size="sm"].zg-sidenav--collapsed{--w:64px}
|
|
29
|
+
.zg-sidenav[data-size="md"].zg-sidenav--collapsed{--w:76px}
|
|
30
|
+
.zg-sidenav[data-size="lg"].zg-sidenav--collapsed{--w:88px}
|
|
31
|
+
.zg-sidenav[data-size="xl"].zg-sidenav--collapsed{--w:100px}
|
|
32
|
+
.zg-sidenav[data-size="xs"] .zg-navitem{height:34px;font-size:12px;padding-inline:10px}
|
|
33
|
+
.zg-sidenav[data-size="sm"] .zg-navitem{height:40px;font-size:13px;padding-inline:12px}
|
|
34
|
+
.zg-sidenav[data-size="md"] .zg-navitem{height:46px;font-size:14px;padding-inline:14px}
|
|
35
|
+
.zg-sidenav[data-size="lg"] .zg-navitem{height:54px;font-size:15px;padding-inline:16px}
|
|
36
|
+
.zg-sidenav[data-size="xl"] .zg-navitem{height:62px;font-size:16px;padding-inline:18px}
|
|
37
|
+
.zg-sidenav[data-size="xs"] .zg-sidenav--collapsed .zg-navitem,.zg-sidenav[data-size="xs"].zg-sidenav--collapsed .zg-navitem{padding:0}
|
|
38
|
+
.zg-sidenav[data-size="sm"] .zg-sidenav--collapsed .zg-navitem,.zg-sidenav[data-size="sm"].zg-sidenav--collapsed .zg-navitem{padding:0}
|
|
39
|
+
.zg-sidenav[data-size="md"] .zg-sidenav--collapsed .zg-navitem,.zg-sidenav[data-size="md"].zg-sidenav--collapsed .zg-navitem{padding:0}
|
|
40
|
+
.zg-sidenav[data-size="lg"] .zg-sidenav--collapsed .zg-navitem,.zg-sidenav[data-size="lg"].zg-sidenav--collapsed .zg-navitem{padding:0}
|
|
41
|
+
.zg-sidenav[data-size="xl"] .zg-sidenav--collapsed .zg-navitem,.zg-sidenav[data-size="xl"].zg-sidenav--collapsed .zg-navitem{padding:0}
|
|
42
|
+
.zg-sidenav[data-size="xs"] .zg-icon{width:14px!important;height:14px!important}
|
|
43
|
+
.zg-sidenav[data-size="sm"] .zg-icon{width:16px!important;height:16px!important}
|
|
44
|
+
.zg-sidenav[data-size="md"] .zg-icon{width:18px!important;height:18px!important}
|
|
45
|
+
.zg-sidenav[data-size="lg"] .zg-icon{width:20px!important;height:20px!important}
|
|
46
|
+
.zg-sidenav[data-size="xl"] .zg-icon{width:22px!important;height:22px!important}
|
|
47
|
+
.zg-sidenav[data-size="xs"] .zg-sidenav__brand{font-size:13px}
|
|
48
|
+
.zg-sidenav[data-size="sm"] .zg-sidenav__brand{font-size:15px}
|
|
49
|
+
.zg-sidenav[data-size="md"] .zg-sidenav__brand{font-size:18px}
|
|
50
|
+
.zg-sidenav[data-size="lg"] .zg-sidenav__brand{font-size:21px}
|
|
51
|
+
.zg-sidenav[data-size="xl"] .zg-sidenav__brand{font-size:24px}
|
|
52
|
+
.zg-sidenav[data-size="xs"] .zg-sidenav__group{font-size:9px}
|
|
53
|
+
.zg-sidenav[data-size="sm"] .zg-sidenav__group{font-size:10px}
|
|
54
|
+
.zg-sidenav[data-size="md"] .zg-sidenav__group{font-size:11px}
|
|
55
|
+
.zg-sidenav[data-size="lg"] .zg-sidenav__group{font-size:12px}
|
|
56
|
+
.zg-sidenav[data-size="xl"] .zg-sidenav__group{font-size:13px}
|
|
57
|
+
.zg-subnav[data-size="xs"]{min-width:180px;gap:1px}
|
|
58
|
+
.zg-subnav[data-size="sm"]{min-width:200px;gap:2px}
|
|
59
|
+
.zg-subnav[data-size="md"]{min-width:220px;gap:2px}
|
|
60
|
+
.zg-subnav[data-size="lg"]{min-width:250px;gap:3px}
|
|
61
|
+
.zg-subnav[data-size="xl"]{min-width:280px;gap:4px}
|
|
62
|
+
.zg-subnav[data-size="xs"] .zg-navitem{height:32px;font-size:12px;padding-inline:10px;border-radius:11px}
|
|
63
|
+
.zg-subnav[data-size="sm"] .zg-navitem{height:36px;font-size:13px;padding-inline:12px;border-radius:12px}
|
|
64
|
+
.zg-subnav[data-size="md"] .zg-navitem{height:42px;font-size:14px;padding-inline:14px;border-radius:14px}
|
|
65
|
+
.zg-subnav[data-size="lg"] .zg-navitem{height:50px;font-size:15px;padding-inline:16px;border-radius:17px}
|
|
66
|
+
.zg-subnav[data-size="xl"] .zg-navitem{height:58px;font-size:16px;padding-inline:18px;border-radius:19px}
|
|
67
|
+
.zg-subnav[data-size="xs"] .zg-icon{width:14px!important;height:14px!important}
|
|
68
|
+
.zg-subnav[data-size="sm"] .zg-icon{width:16px!important;height:16px!important}
|
|
69
|
+
.zg-subnav[data-size="md"] .zg-icon{width:16px!important;height:16px!important}
|
|
70
|
+
.zg-subnav[data-size="lg"] .zg-icon{width:18px!important;height:18px!important}
|
|
71
|
+
.zg-subnav[data-size="xl"] .zg-icon{width:20px!important;height:20px!important}
|
|
72
|
+
.zg-subnav[data-size="xs"] .zg-sidenav__group{font-size:9px}
|
|
73
|
+
.zg-subnav[data-size="sm"] .zg-sidenav__group{font-size:10px}
|
|
74
|
+
.zg-subnav[data-size="md"] .zg-sidenav__group{font-size:11px}
|
|
75
|
+
.zg-subnav[data-size="lg"] .zg-sidenav__group{font-size:12px}
|
|
76
|
+
.zg-subnav[data-size="xl"] .zg-sidenav__group{font-size:13px}
|
|
77
|
+
.zg-tabs[data-size="xs"]{gap:2px}
|
|
78
|
+
.zg-tabs[data-size="sm"]{gap:3px}
|
|
79
|
+
.zg-tabs[data-size="md"]{gap:4px}
|
|
80
|
+
.zg-tabs[data-size="lg"]{gap:6px}
|
|
81
|
+
.zg-tabs[data-size="xl"]{gap:8px}
|
|
82
|
+
.zg-tabs[data-size="xs"] button{height:32px;font-size:12px;padding:0 10px}
|
|
83
|
+
.zg-tabs[data-size="sm"] button{height:38px;font-size:13px;padding:0 12px}
|
|
84
|
+
.zg-tabs[data-size="md"] button{height:44px;font-size:14px;padding:0 16px}
|
|
85
|
+
.zg-tabs[data-size="lg"] button{height:52px;font-size:15px;padding:0 20px}
|
|
86
|
+
.zg-tabs[data-size="xl"] button{height:60px;font-size:16px;padding:0 24px}
|
|
87
|
+
.zg-tabs[data-size="xs"] button[aria-selected="true"]::after{inset-inline:8px;height:2px}
|
|
88
|
+
.zg-tabs[data-size="sm"] button[aria-selected="true"]::after{inset-inline:10px;height:2px}
|
|
89
|
+
.zg-tabs[data-size="md"] button[aria-selected="true"]::after{inset-inline:12px;height:3px}
|
|
90
|
+
.zg-tabs[data-size="lg"] button[aria-selected="true"]::after{inset-inline:14px;height:3px}
|
|
91
|
+
.zg-tabs[data-size="xl"] button[aria-selected="true"]::after{inset-inline:16px;height:4px}
|
|
92
|
+
.zg-pt[data-size="xs"]{gap:3px}
|
|
93
|
+
.zg-pt[data-size="sm"]{gap:4px}
|
|
94
|
+
.zg-pt[data-size="md"]{gap:6px}
|
|
95
|
+
.zg-pt[data-size="lg"]{gap:8px}
|
|
96
|
+
.zg-pt[data-size="xl"]{gap:10px}
|
|
97
|
+
.zg-pt[data-size="xs"] button{height:28px;font-size:12px;padding:0 10px;gap:6px}
|
|
98
|
+
.zg-pt[data-size="sm"] button{height:32px;font-size:13px;padding:0 12px;gap:6px}
|
|
99
|
+
.zg-pt[data-size="md"] button{height:38px;font-size:15px;padding:0 18px;gap:8px}
|
|
100
|
+
.zg-pt[data-size="lg"] button{height:46px;font-size:16px;padding:0 22px;gap:10px}
|
|
101
|
+
.zg-pt[data-size="xl"] button{height:54px;font-size:18px;padding:0 26px;gap:12px}
|
|
102
|
+
.zg-pt[data-size="xs"] .zg-icon{width:14px!important;height:14px!important}
|
|
103
|
+
.zg-pt[data-size="sm"] .zg-icon{width:16px!important;height:16px!important}
|
|
104
|
+
.zg-pt[data-size="md"] .zg-icon{width:16px!important;height:16px!important}
|
|
105
|
+
.zg-pt[data-size="lg"] .zg-icon{width:18px!important;height:18px!important}
|
|
106
|
+
.zg-pt[data-size="xl"] .zg-icon{width:20px!important;height:20px!important}
|
|
107
|
+
.zg-crumbs[data-size="xs"]{font-size:11px;gap:4px}
|
|
108
|
+
.zg-crumbs[data-size="sm"]{font-size:12px;gap:6px}
|
|
109
|
+
.zg-crumbs[data-size="md"]{font-size:13px;gap:8px}
|
|
110
|
+
.zg-crumbs[data-size="lg"]{font-size:15px;gap:10px}
|
|
111
|
+
.zg-crumbs[data-size="xl"]{font-size:17px;gap:12px}
|
|
112
|
+
.zg-crumbs[data-size="xs"] .zg-icon{width:10px!important;height:10px!important}
|
|
113
|
+
.zg-crumbs[data-size="sm"] .zg-icon{width:12px!important;height:12px!important}
|
|
114
|
+
.zg-crumbs[data-size="md"] .zg-icon{width:14px!important;height:14px!important}
|
|
115
|
+
.zg-crumbs[data-size="lg"] .zg-icon{width:16px!important;height:16px!important}
|
|
116
|
+
.zg-crumbs[data-size="xl"] .zg-icon{width:18px!important;height:18px!important}
|
|
117
|
+
.zg-pager[data-size="xs"]{gap:2px}
|
|
118
|
+
.zg-pager[data-size="sm"]{gap:3px}
|
|
119
|
+
.zg-pager[data-size="md"]{gap:4px}
|
|
120
|
+
.zg-pager[data-size="lg"]{gap:6px}
|
|
121
|
+
.zg-pager[data-size="xl"]{gap:8px}
|
|
122
|
+
.zg-pager[data-size="xs"] button{min-width:26px;height:26px;font-size:11px}
|
|
123
|
+
.zg-pager[data-size="sm"] button{min-width:30px;height:30px;font-size:12px}
|
|
124
|
+
.zg-pager[data-size="md"] button{min-width:36px;height:36px;font-size:13px}
|
|
125
|
+
.zg-pager[data-size="lg"] button{min-width:44px;height:44px;font-size:15px}
|
|
126
|
+
.zg-pager[data-size="xl"] button{min-width:52px;height:52px;font-size:17px}
|
|
127
|
+
.zg-acc[data-size="xs"]{padding:4px;border-radius:16px}
|
|
128
|
+
.zg-acc[data-size="sm"]{padding:5px;border-radius:20px}
|
|
129
|
+
.zg-acc[data-size="md"]{padding:6px;border-radius:24px}
|
|
130
|
+
.zg-acc[data-size="lg"]{padding:8px;border-radius:28px}
|
|
131
|
+
.zg-acc[data-size="xl"]{padding:10px;border-radius:32px}
|
|
132
|
+
.zg-acc[data-size="xs"] .zg-acc__h{min-height:36px;font-size:12px;padding:0 12px}
|
|
133
|
+
.zg-acc[data-size="sm"] .zg-acc__h{min-height:44px;font-size:13px;padding:0 14px}
|
|
134
|
+
.zg-acc[data-size="md"] .zg-acc__h{min-height:52px;font-size:15px;padding:0 16px}
|
|
135
|
+
.zg-acc[data-size="lg"] .zg-acc__h{min-height:60px;font-size:16px;padding:0 20px}
|
|
136
|
+
.zg-acc[data-size="xl"] .zg-acc__h{min-height:68px;font-size:18px;padding:0 24px}
|
|
137
|
+
.zg-acc[data-size="xs"] .zg-acc__b{font-size:12px;padding:0 12px 12px}
|
|
138
|
+
.zg-acc[data-size="sm"] .zg-acc__b{font-size:13px;padding:0 14px 12px}
|
|
139
|
+
.zg-acc[data-size="md"] .zg-acc__b{font-size:14px;padding:0 16px 16px}
|
|
140
|
+
.zg-acc[data-size="lg"] .zg-acc__b{font-size:15px;padding:0 20px 18px}
|
|
141
|
+
.zg-acc[data-size="xl"] .zg-acc__b{font-size:16px;padding:0 24px 20px}
|
|
142
|
+
.zg-acc[data-size="xs"] .zg-icon{width:12px!important;height:12px!important}
|
|
143
|
+
.zg-acc[data-size="sm"] .zg-icon{width:14px!important;height:14px!important}
|
|
144
|
+
.zg-acc[data-size="md"] .zg-icon{width:16px!important;height:16px!important}
|
|
145
|
+
.zg-acc[data-size="lg"] .zg-icon{width:18px!important;height:18px!important}
|
|
146
|
+
.zg-acc[data-size="xl"] .zg-icon{width:20px!important;height:20px!important}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/* size overrides for the overlay group. Only [data-size] selectors, see the size scale at the end of tokens.css */
|
|
2
|
+
|
|
3
|
+
/* Modal / ConfirmDialog: data-size lands on the scrim */
|
|
4
|
+
.zg-modal-scrim[data-size="xs"]{--m-w:320px;--m-hp:14px 16px 12px;--m-bp:16px;--m-fp:10px 16px 14px;--m-t:15px;--m-f:13px;--m-g:12px}
|
|
5
|
+
.zg-modal-scrim[data-size="sm"]{--m-w:420px;--m-hp:16px 18px 14px;--m-bp:18px;--m-fp:12px 18px 16px;--m-t:17px;--m-f:14px;--m-g:14px}
|
|
6
|
+
.zg-modal-scrim[data-size="md"]{--m-w:520px;--m-hp:20px 20px 16px;--m-bp:20px;--m-fp:14px 20px 18px;--m-t:18px;--m-f:14px;--m-g:16px}
|
|
7
|
+
.zg-modal-scrim[data-size="lg"]{--m-w:640px;--m-hp:24px 26px 18px;--m-bp:26px;--m-fp:16px 26px 22px;--m-t:20px;--m-f:15px;--m-g:18px}
|
|
8
|
+
.zg-modal-scrim[data-size="xl"]{--m-w:720px;--m-hp:28px 32px 20px;--m-bp:32px;--m-fp:18px 32px 26px;--m-t:22px;--m-f:16px;--m-g:20px}
|
|
9
|
+
.zg-modal-scrim[data-size]:not(.zg-drawer-scrim):not(.zg-sheet-scrim) .zg-modal:not(.zg-stepdlg){max-width:var(--m-w)}
|
|
10
|
+
.zg-modal-scrim[data-size] .zg-modal__head{padding:var(--m-hp)}
|
|
11
|
+
.zg-modal-scrim[data-size] .zg-modal__head h3{font-size:var(--m-t)}
|
|
12
|
+
.zg-modal-scrim[data-size] .zg-modal__body{padding:var(--m-bp);gap:var(--m-g);font-size:var(--m-f)}
|
|
13
|
+
.zg-modal-scrim[data-size] .zg-modal__foot{padding:var(--m-fp)}
|
|
14
|
+
|
|
15
|
+
/* StepDialog */
|
|
16
|
+
.zg-modal-scrim[data-size="xs"] .zg-stepdlg{max-width:640px;min-height:320px}
|
|
17
|
+
.zg-modal-scrim[data-size="sm"] .zg-stepdlg{max-width:740px;min-height:380px}
|
|
18
|
+
.zg-modal-scrim[data-size="md"] .zg-stepdlg{max-width:860px;min-height:420px}
|
|
19
|
+
.zg-modal-scrim[data-size="lg"] .zg-stepdlg{max-width:980px;min-height:480px}
|
|
20
|
+
.zg-modal-scrim[data-size="xl"] .zg-stepdlg{max-width:1100px;min-height:540px}
|
|
21
|
+
|
|
22
|
+
/* Drawer */
|
|
23
|
+
.zg-drawer-scrim[data-size="xs"] .zg-drawer{width:min(280px,100%)}
|
|
24
|
+
.zg-drawer-scrim[data-size="sm"] .zg-drawer{width:min(340px,100%)}
|
|
25
|
+
.zg-drawer-scrim[data-size="md"] .zg-drawer{width:min(420px,100%)}
|
|
26
|
+
.zg-drawer-scrim[data-size="lg"] .zg-drawer{width:min(520px,100%)}
|
|
27
|
+
.zg-drawer-scrim[data-size="xl"] .zg-drawer{width:min(640px,100%)}
|
|
28
|
+
|
|
29
|
+
/* BottomSheet / Actionsheet */
|
|
30
|
+
.zg-sheet-scrim[data-size="xs"] .zg-sheet{width:min(360px,100%);padding:8px 14px 14px;gap:8px}
|
|
31
|
+
.zg-sheet-scrim[data-size="sm"] .zg-sheet{width:min(460px,100%);padding:9px 16px 16px;gap:10px}
|
|
32
|
+
.zg-sheet-scrim[data-size="lg"] .zg-sheet{width:min(680px,100%);padding:12px 24px 24px;gap:14px}
|
|
33
|
+
.zg-sheet-scrim[data-size="xl"] .zg-sheet{width:min(800px,100%);padding:14px 28px 28px;gap:16px}
|
|
34
|
+
.zg-sheet-scrim[data-size="xs"] .zg-sheet__t{font-size:15px}
|
|
35
|
+
.zg-sheet-scrim[data-size="sm"] .zg-sheet__t{font-size:16px}
|
|
36
|
+
.zg-sheet-scrim[data-size="lg"] .zg-sheet__t{font-size:20px}
|
|
37
|
+
.zg-sheet-scrim[data-size="xl"] .zg-sheet__t{font-size:22px}
|
|
38
|
+
|
|
39
|
+
/* CommandPalette: width is an inline style, so !important is required */
|
|
40
|
+
.zg-modal-scrim[data-size="xs"] .zg-modal[aria-label="Command palette"]{max-width:400px!important}
|
|
41
|
+
.zg-modal-scrim[data-size="sm"] .zg-modal[aria-label="Command palette"]{max-width:480px!important}
|
|
42
|
+
.zg-modal-scrim[data-size="lg"] .zg-modal[aria-label="Command palette"]{max-width:640px!important}
|
|
43
|
+
.zg-modal-scrim[data-size="xl"] .zg-modal[aria-label="Command palette"]{max-width:720px!important}
|
|
44
|
+
|
|
45
|
+
/* Menu / Dropdown / ContextMenu / Popover / Popconfirm: data-size on the wrapper (.zg-dd, .zg-ctx) or on the static .zg-menu */
|
|
46
|
+
:is(.zg-dd,.zg-ctx,.zg-menu)[data-size="xs"]{--u-h:28px;--u-px:8px;--u-g:6px;--u-f:12px;--u-r:10px;--u-mw:160px;--u-pp:10px;--u-pg:8px;--u-pw:200px;--u-pf:12px}
|
|
47
|
+
:is(.zg-dd,.zg-ctx,.zg-menu)[data-size="sm"]{--u-h:32px;--u-px:10px;--u-g:8px;--u-f:13px;--u-r:12px;--u-mw:190px;--u-pp:12px;--u-pg:10px;--u-pw:220px;--u-pf:13px}
|
|
48
|
+
:is(.zg-dd,.zg-ctx,.zg-menu)[data-size="md"]{--u-h:40px;--u-px:12px;--u-g:10px;--u-f:14px;--u-r:14px;--u-mw:220px;--u-pp:14px;--u-pg:12px;--u-pw:240px;--u-pf:14px}
|
|
49
|
+
:is(.zg-dd,.zg-ctx,.zg-menu)[data-size="lg"]{--u-h:48px;--u-px:16px;--u-g:12px;--u-f:15px;--u-r:16px;--u-mw:260px;--u-pp:18px;--u-pg:14px;--u-pw:280px;--u-pf:15px}
|
|
50
|
+
:is(.zg-dd,.zg-ctx,.zg-menu)[data-size="xl"]{--u-h:56px;--u-px:20px;--u-g:14px;--u-f:16px;--u-r:18px;--u-mw:300px;--u-pp:22px;--u-pg:16px;--u-pw:320px;--u-pf:16px}
|
|
51
|
+
:is(.zg-dd,.zg-ctx,.zg-menu)[data-size] .zg-menu__i{min-height:var(--u-h);padding:0 var(--u-px);gap:var(--u-g);font-size:var(--u-f);border-radius:var(--u-r)}
|
|
52
|
+
:is(.zg-dd,.zg-ctx)[data-size] .zg-menu{min-width:var(--u-mw)}
|
|
53
|
+
.zg-menu[data-size]{min-width:var(--u-mw)}
|
|
54
|
+
:is(.zg-dd,.zg-ctx)[data-size] .zg-menu__i svg{width:calc(var(--u-f) + 2px);height:calc(var(--u-f) + 2px)}
|
|
55
|
+
.zg-dd[data-size] .zg-pop{min-width:var(--u-pw);padding:var(--u-pp);gap:var(--u-pg);font-size:var(--u-pf)}
|
|
56
|
+
.zg-dd[data-size] .zg-pop b{font-size:var(--u-pf)!important}
|
|
57
|
+
.zg-dd[data-size]>.zg-btn{height:var(--zg-sz-h);font-size:var(--zg-sz-fs);padding-inline:var(--zg-sz-px)}
|
|
58
|
+
|
|
59
|
+
/* Tooltip */
|
|
60
|
+
.zg-tip[data-size="xs"]::after{padding:3px 7px;font-size:10px;border-radius:7px}
|
|
61
|
+
.zg-tip[data-size="sm"]::after{padding:4px 9px;font-size:11px;border-radius:8px}
|
|
62
|
+
.zg-tip[data-size="lg"]::after{padding:8px 13px;font-size:13px;border-radius:12px}
|
|
63
|
+
.zg-tip[data-size="xl"]::after{padding:10px 16px;font-size:14px;border-radius:14px}
|
|
64
|
+
|
|
65
|
+
/* HoverCard */
|
|
66
|
+
.zg-hc[data-size="xs"] .zg-hc__c{width:200px;padding:10px;font-size:12px;border-radius:14px}
|
|
67
|
+
.zg-hc[data-size="sm"] .zg-hc__c{width:240px;padding:12px;font-size:13px;border-radius:16px}
|
|
68
|
+
.zg-hc[data-size="lg"] .zg-hc__c{width:340px;padding:18px;font-size:15px;border-radius:22px}
|
|
69
|
+
.zg-hc[data-size="xl"] .zg-hc__c{width:400px;padding:22px;font-size:16px;border-radius:24px}
|
|
70
|
+
|
|
71
|
+
/* CommandBar: md matches the current 32px buttons */
|
|
72
|
+
.zg-cb[data-size="xs"]{--cb-h:24px;--cb-p:3px;--cb-s:16px}
|
|
73
|
+
.zg-cb[data-size="sm"]{--cb-h:28px;--cb-p:3px;--cb-s:18px}
|
|
74
|
+
.zg-cb[data-size="md"]{--cb-h:32px;--cb-p:4px;--cb-s:20px}
|
|
75
|
+
.zg-cb[data-size="lg"]{--cb-h:40px;--cb-p:5px;--cb-s:24px}
|
|
76
|
+
.zg-cb[data-size="xl"]{--cb-h:48px;--cb-p:6px;--cb-s:28px}
|
|
77
|
+
.zg-cb[data-size]{padding:var(--cb-p)}
|
|
78
|
+
.zg-cb[data-size] .zg-ibtn{--h:var(--cb-h)}
|
|
79
|
+
.zg-cb[data-size] .zg-cb__s{height:var(--cb-s)}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* size overrides for the typography group. Only [data-size] selectors, see the size scale at the end of tokens.css */
|
|
2
|
+
.zg-text--xl{font-size:20px}
|
|
3
|
+
.zg-code-b[data-size="xs"] pre{font-size:11px;padding:10px}.zg-code-b[data-size="xs"] .zg-code-b__h{font-size:11px;padding:4px 4px 4px 10px}
|
|
4
|
+
.zg-code-b[data-size="sm"] pre{font-size:12px;padding:12px}.zg-code-b[data-size="sm"] .zg-code-b__h{font-size:11px;padding:6px 6px 6px 12px}
|
|
5
|
+
.zg-code-b[data-size="lg"] pre{font-size:14px;padding:20px}.zg-code-b[data-size="lg"] .zg-code-b__h{font-size:13px;padding:10px 10px 10px 20px}
|
|
6
|
+
.zg-code-b[data-size="xl"] pre{font-size:16px;padding:24px}.zg-code-b[data-size="xl"] .zg-code-b__h{font-size:14px;padding:12px 12px 12px 24px}
|
|
7
|
+
.zg-kbd[data-size="xs"]{min-width:18px;height:18px;padding:0 4px;font-size:10px;border-radius:5px}
|
|
8
|
+
.zg-kbd[data-size="sm"]{min-width:20px;height:20px;padding:0 5px;font-size:10.5px;border-radius:6px}
|
|
9
|
+
.zg-kbd[data-size="lg"]{min-width:26px;height:26px;padding:0 8px;font-size:12px;border-radius:8px}
|
|
10
|
+
.zg-kbd[data-size="xl"]{min-width:30px;height:30px;padding:0 10px;font-size:14px;border-radius:9px}
|
|
11
|
+
.zg-link[data-size="xs"]{font-size:.8em}.zg-link[data-size="sm"]{font-size:.9em}.zg-link[data-size="lg"]{font-size:1.1em}.zg-link[data-size="xl"]{font-size:1.25em}
|
|
12
|
+
.zg-link[data-size="xs"],.zg-link[data-size="sm"]{gap:3px}.zg-link[data-size="lg"],.zg-link[data-size="xl"]{gap:6px}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* @ziyarago/ui · tokens (OKLCH). Theme: [data-theme=dark|light] · Palette: [data-palette=gold|tamam] · Direction: dir=rtl */
|
|
2
|
+
:root,[data-palette="gold"]{--zg-brand:oklch(0.676 0.084 67.4);--zg-brand-hover:oklch(0.73 0.09 67.4);--zg-sky:oklch(0.703 0.09 229.6)}
|
|
3
|
+
[data-palette="tamam"]{--zg-brand:oklch(0.77 0.23 142);--zg-brand-hover:oklch(0.82 0.23 142);--zg-sky:oklch(0.72 0.1 200)}
|
|
4
|
+
:root,[data-theme="dark"]{--zg-pop:oklch(0.262 0.004 17.4);
|
|
5
|
+
--zg-on-brand:oklch(0.2 0.02 60);
|
|
6
|
+
--zg-brand-soft:color-mix(in oklch,var(--zg-brand) 22%,transparent);
|
|
7
|
+
--zg-brand-glow:color-mix(in oklch,var(--zg-brand) 40%,transparent);
|
|
8
|
+
--zg-brand-text:color-mix(in oklch,var(--zg-brand) 70%,white);
|
|
9
|
+
--zg-sky-text:oklch(0.8 0.08 226);
|
|
10
|
+
--zg-bg:oklch(0.216 0.003 17.4);
|
|
11
|
+
--zg-s1:oklch(1 0 0 / .055);--zg-s2:oklch(1 0 0 / .085);--zg-s3:oklch(1 0 0 / .13);
|
|
12
|
+
--zg-glass:oklch(0.235 0.006 40 / .92);
|
|
13
|
+
--zg-stroke:oklch(1 0 0 / .08);
|
|
14
|
+
--zg-text-1:oklch(0.97 0.004 70);--zg-text-2:oklch(0.82 0.008 70);--zg-text-3:oklch(0.66 0.01 70);
|
|
15
|
+
--zg-inv-bg:oklch(0.96 0.004 70);--zg-inv-fg:oklch(0.2 0.01 60);
|
|
16
|
+
--zg-green:oklch(0.76 0.15 150);--zg-amber:oklch(0.8 0.14 80);--zg-red:oklch(0.7 0.18 25);
|
|
17
|
+
--zg-rim:inset 0 1px 0 oklch(1 0 0 / .16),inset 0 0 0 1px oklch(1 0 0 / .07),inset 0 -1px 0 oklch(0 0 0 / .25);
|
|
18
|
+
--zg-shadow-1:0 8px 24px oklch(0 0 0 / .28);--zg-shadow-2:0 24px 64px oklch(0 0 0 / .5);
|
|
19
|
+
}
|
|
20
|
+
[data-theme="light"]{--zg-pop:oklch(0.985 0.003 70);
|
|
21
|
+
--zg-on-brand:oklch(0.2 0.02 60);
|
|
22
|
+
--zg-brand-text:oklch(0.45 0.07 65);
|
|
23
|
+
--zg-sky-text:oklch(0.48 0.08 230);
|
|
24
|
+
--zg-bg:oklch(0.919 0.007 67.6);
|
|
25
|
+
--zg-s1:oklch(1 0 0 / .62);--zg-s2:oklch(1 0 0 / .74);--zg-s3:oklch(1 0 0 / .88);
|
|
26
|
+
--zg-glass:oklch(0.975 0.004 70 / .94);
|
|
27
|
+
--zg-stroke:oklch(0.3 0.02 60 / .15);
|
|
28
|
+
--zg-text-1:oklch(0.2 0.01 60);--zg-text-2:oklch(0.36 0.012 60);--zg-text-3:oklch(0.47 0.012 60);
|
|
29
|
+
--zg-inv-bg:oklch(0.22 0.01 60);--zg-inv-fg:oklch(0.97 0.004 70);
|
|
30
|
+
--zg-green:oklch(0.5 0.14 150);--zg-amber:oklch(0.55 0.13 70);--zg-red:oklch(0.52 0.19 25);
|
|
31
|
+
--zg-rim:inset 0 1px 0 oklch(1 0 0 / .95),inset 0 0 0 1px oklch(1 0 0 / .45),0 0 0 1px oklch(0.3 0.02 60 / .13);
|
|
32
|
+
--zg-shadow-1:0 8px 24px oklch(0.4 0.03 60 / .17);--zg-shadow-2:0 24px 64px oklch(0.4 0.03 60 / .22);
|
|
33
|
+
}
|
|
34
|
+
:root{--zg-z-bar:50;--zg-z-pop:60;--zg-z-modal:200;
|
|
35
|
+
--zg-font:'Manrope','Thmanyah Sans',system-ui,sans-serif;--zg-font-ar:'Thmanyah Sans',system-ui,sans-serif;--zg-font-ar-display:'Thmanyah Serif Display','Thmanyah Sans',serif;--zg-font-ar-text:'Thmanyah Serif Text','Thmanyah Sans',serif;--zg-font-mono:'JetBrains Mono',ui-monospace,monospace;
|
|
36
|
+
--zg-h-xs:28px;--zg-h-sm:32px;--zg-h-md:40px;--zg-h-lg:48px;--zg-h-xl:56px;
|
|
37
|
+
--zg-r-card:32px;--zg-r-tile:20px;--zg-ease:cubic-bezier(.2,.8,.2,1);
|
|
38
|
+
}
|
|
39
|
+
[dir="rtl"]{--zg-font:var(--zg-font-ar)}
|
|
40
|
+
|
|
41
|
+
/* Size scale. Adapters put data-size="xs|sm|md|lg|xl" on a component root when it has a size prop.
|
|
42
|
+
Component CSS must read these only inside its own [data-size] selector, never in default rules, so sizes do not leak into children. */
|
|
43
|
+
[data-size="xs"]{--zg-sz-h:28px;--zg-sz-fs:12px;--zg-sz-px:10px;--zg-sz-gap:6px;--zg-sz-icon:14px;--zg-sz-pad:10px}
|
|
44
|
+
[data-size="sm"]{--zg-sz-h:32px;--zg-sz-fs:13px;--zg-sz-px:12px;--zg-sz-gap:8px;--zg-sz-icon:16px;--zg-sz-pad:12px}
|
|
45
|
+
[data-size="md"]{--zg-sz-h:40px;--zg-sz-fs:14px;--zg-sz-px:16px;--zg-sz-gap:10px;--zg-sz-icon:18px;--zg-sz-pad:16px}
|
|
46
|
+
[data-size="lg"]{--zg-sz-h:48px;--zg-sz-fs:15px;--zg-sz-px:20px;--zg-sz-gap:12px;--zg-sz-icon:20px;--zg-sz-pad:20px}
|
|
47
|
+
[data-size="xl"]{--zg-sz-h:56px;--zg-sz-fs:16px;--zg-sz-px:24px;--zg-sz-gap:14px;--zg-sz-icon:22px;--zg-sz-pad:24px}
|
package/src/theme.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Framework-free theme controller: palette, theme, direction, motion, effects, background → attributes on <html>. Persists to localStorage.
|
|
2
|
+
const KEY = 'zg-ui';
|
|
3
|
+
export const PALETTES = ['gold', 'tamam'];
|
|
4
|
+
export const BACKGROUNDS = ['none', 'aurora', 'sunset', 'ocean', 'emerald', 'rose', 'mesh'];
|
|
5
|
+
const DEFAULTS = { theme: 'dark', palette: 'gold', dir: 'ltr', motion: 'auto', effects: 'auto', bg: 'none' };
|
|
6
|
+
const read = () => { try { return JSON.parse(localStorage.getItem(KEY) || '{}'); } catch { return {}; } };
|
|
7
|
+
let cur = typeof localStorage === 'undefined' ? { ...DEFAULTS } : { ...DEFAULTS, ...read() };
|
|
8
|
+
const subs = new Set();
|
|
9
|
+
|
|
10
|
+
export const capable = () => {
|
|
11
|
+
if (typeof CSS === 'undefined' || !CSS.supports) return true;
|
|
12
|
+
const mem = typeof navigator !== 'undefined' ? navigator.deviceMemory : undefined;
|
|
13
|
+
const cores = typeof navigator !== 'undefined' ? navigator.hardwareConcurrency : undefined;
|
|
14
|
+
return CSS.supports('backdrop-filter', 'blur(1px)') && CSS.supports('color', 'oklch(0.5 0.1 100)') && (mem == null || mem >= 4) && (cores == null || cores >= 4);
|
|
15
|
+
};
|
|
16
|
+
const reduced = () => typeof matchMedia !== 'undefined' && matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
17
|
+
export const resolve = (s = cur) => ({
|
|
18
|
+
motion: s.motion === 'auto' ? (reduced() ? 'off' : 'on') : s.motion,
|
|
19
|
+
effects: s.effects === 'auto' ? (capable() ? 'full' : 'lite') : s.effects,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const apply = () => {
|
|
23
|
+
if (typeof document === 'undefined') return;
|
|
24
|
+
const r = document.documentElement, v = resolve();
|
|
25
|
+
r.dataset.theme = cur.theme; r.dataset.palette = cur.palette; r.dir = cur.dir;
|
|
26
|
+
r.dataset.motion = v.motion; r.dataset.fx = v.effects; r.dataset.bg = cur.bg;
|
|
27
|
+
try { localStorage.setItem(KEY, JSON.stringify(cur)); } catch {}
|
|
28
|
+
subs.forEach(f => f({ ...cur }));
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/** Inline script for <head>: applies the saved settings before first paint (no flash). */
|
|
32
|
+
export const themeInitScript = `try{var s=JSON.parse(localStorage.getItem('${KEY}')||'{}'),r=document.documentElement,d=r.dataset;if(s.theme)d.theme=s.theme;if(s.palette)d.palette=s.palette;if(s.dir)r.dir=s.dir;if(s.bg)d.bg=s.bg;var m=s.motion||'auto',f=s.effects||'auto';d.motion=m==='auto'?(matchMedia('(prefers-reduced-motion: reduce)').matches?'off':'on'):m;d.fx=f==='auto'?((CSS.supports('backdrop-filter','blur(1px)')&&(navigator.deviceMemory||8)>=4&&(navigator.hardwareConcurrency||8)>=4)?'full':'lite'):f}catch(e){}`;
|
|
33
|
+
|
|
34
|
+
export function useUiTheme() {
|
|
35
|
+
if (typeof document !== 'undefined') apply();
|
|
36
|
+
const set = o => { cur = { ...cur, ...o }; apply(); };
|
|
37
|
+
return {
|
|
38
|
+
get theme() { return cur.theme; }, get palette() { return cur.palette; }, get dir() { return cur.dir; },
|
|
39
|
+
get motion() { return cur.motion; }, get effects() { return cur.effects; }, get bg() { return cur.bg; },
|
|
40
|
+
get resolved() { return resolve(); },
|
|
41
|
+
palettes: PALETTES, backgrounds: BACKGROUNDS,
|
|
42
|
+
setTheme: t => set({ theme: t }), toggleTheme: () => set({ theme: cur.theme === 'dark' ? 'light' : 'dark' }),
|
|
43
|
+
setPalette: p => set({ palette: p }), setDir: d => set({ dir: d }), setLocale: l => set({ dir: l === 'ar' ? 'rtl' : 'ltr' }),
|
|
44
|
+
/** 'auto' follows prefers-reduced-motion, 'on' enables animations, 'off' disables them */
|
|
45
|
+
setMotion: m => set({ motion: m }),
|
|
46
|
+
/** 'auto' picks by browser capability, 'full' = blur, glow and animated backgrounds, 'lite' = flat and fast */
|
|
47
|
+
setEffects: e => set({ effects: e }),
|
|
48
|
+
setBackground: b => set({ bg: b }),
|
|
49
|
+
subscribe: f => { subs.add(f); return () => subs.delete(f); },
|
|
50
|
+
snapshot: () => ({ ...cur }),
|
|
51
|
+
};
|
|
52
|
+
}
|
package/src/vue/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Vue 3 adapter. Usage: import { UiButton, UiAppShell } from '@ziyarago/ui/vue'
|
|
2
|
+
import { h, ref, reactive, defineComponent, Teleport, cloneVNode, isVNode } from 'vue';
|
|
3
|
+
import { components } from '../core/index.js';
|
|
4
|
+
|
|
5
|
+
const C = {};
|
|
6
|
+
const vh = (t, p, ...k) => { const kids = k.flat(); if (p && typeof t === 'string') for (const key of Object.keys(p)) if (/^on[A-Z]/.test(key) && !key.startsWith('onVnode')) { const nk = 'on' + key[2] + key.slice(3).toLowerCase(); if (nk !== key) { p[nk] = p[key]; delete p[key]; } } return typeof t === 'string' || !kids.length ? h(t, p, kids.length ? kids : undefined) : h(t, p, { default: () => kids }); };
|
|
7
|
+
const wrap = (name, def) => defineComponent({
|
|
8
|
+
name: 'Ui' + name, inheritAttrs: false, emits: ['update:modelValue', 'change'],
|
|
9
|
+
setup(_, { attrs, slots, emit }) {
|
|
10
|
+
const state = reactive({ ...(def.state || {}) });
|
|
11
|
+
const set = o => Object.assign(state, o);
|
|
12
|
+
return () => {
|
|
13
|
+
const props = { ...attrs, onChange: v => { emit('update:modelValue', v); emit('change', v); } };
|
|
14
|
+
if (attrs.modelValue === undefined) delete props.modelValue;
|
|
15
|
+
const named = {}; for (const k of Object.keys(slots)) if (k !== 'default') named[k] = slots[k]();
|
|
16
|
+
const children = slots.default ? slots.default() : [];
|
|
17
|
+
const out = def.render({ C, h: vh, props, children, slots: named, state, set, portal: (kids, to) => h(Teleport, { to: to || 'body' }, kids) });
|
|
18
|
+
const sz = attrs.size;
|
|
19
|
+
return sz && isVNode(out) && typeof out.type === 'string' ? cloneVNode(out, { 'data-size': sz }) : out;
|
|
20
|
+
};
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
for (const [name, def] of Object.entries(components)) C[name] = wrap(name, def);
|
|
24
|
+
|
|
25
|
+
export const { Button: UiButton, IconButton: UiIconButton, Badge: UiBadge, Avatar: UiAvatar, Switch: UiSwitch, Checkbox: UiCheckbox, SegmentedControl: UiSegmentedControl, Tabs: UiTabs, FilterChips: UiFilterChips, TextField: UiTextField, Select: UiSelect, CodeInput: UiCodeInput, Stepper: UiStepper, Card: UiCard, Modal: UiModal, Drawer: UiDrawer, Toast: UiToast, Breadcrumbs: UiBreadcrumbs, Pagination: UiPagination, Progress: UiProgress, Ring: UiRing, KpiTile: UiKpiTile, DataTable: UiDataTable, KanbanColumn: UiKanbanColumn, KanbanCard: UiKanbanCard, Timeline: UiTimeline, TopNav: UiTopNav, SideNav: UiSideNav, AppShell: UiAppShell, PageHeader: UiPageHeader, AuthLayout: UiAuthLayout, LeadCard: UiLeadCard, HotelCard: UiHotelCard, TourCard: UiTourCard, PrayerTimes: UiPrayerTimes, RamadanTracker: UiRamadanTracker, CallRow: UiCallRow, Alert: UiAlert, Banner: UiBanner, Accordion: UiAccordion, Skeleton: UiSkeleton, Spinner: UiSpinner, Divider: UiDivider, EmptyState: UiEmptyState, ErrorPage: UiErrorPage, DataState: UiDataState, LoadingOverlay: UiLoadingOverlay, ConfirmDialog: UiConfirmDialog, Popconfirm: UiPopconfirm, Carousel: UiCarousel, Gallery: UiGallery, Code: UiCode, PricingCard: UiPricingCard, IntegrationCard: UiIntegrationCard, IncomingCall: UiIncomingCall, CallCard: UiCallCard, Dropdown: UiDropdown, Menu: UiMenu, Tooltip: UiTooltip, HoverCard: UiHoverCard, Popover: UiPopover, CopyButton: UiCopyButton, CommandBar: UiCommandBar, CommandPalette: UiCommandPalette, NotificationBell: UiNotificationBell, ToggleGroup: UiToggleGroup, Fab: UiFab, Textarea: UiTextarea, NumberInput: UiNumberInput, PasswordInput: UiPasswordInput, SearchInput: UiSearchInput, RadioGroup: UiRadioGroup, Slider: UiSlider, Rating: UiRating, ChipInput: UiChipInput, InlineEdit: UiInlineEdit, ColorPicker: UiColorPicker, FileUpload: UiFileUpload, Combobox: UiCombobox, MultiSelect: UiMultiSelect, GroupedSelect: UiGroupedSelect, PhoneInput: UiPhoneInput, Calendar: UiCalendar, DatePicker: UiDatePicker, TimePicker: UiTimePicker, FormField: UiFormField, LoginForm: UiLoginForm, StepForm: UiStepForm, Tag: UiTag, Kbd: UiKbd, StatsCard: UiStatsCard, KpiInline: UiKpiInline, MiniChart: UiMiniChart, Descriptions: UiDescriptions, LazyImage: UiLazyImage, SystemStatus: UiSystemStatus, TreeView: UiTreeView, CalendarView: UiCalendarView, SubNav: UiSubNav, ActionRail: UiActionRail, SplitLayout: UiSplitLayout, SettingsSection: UiSettingsSection, ScrollArea: UiScrollArea, DealCard: UiDealCard, PipelineBoard: UiPipelineBoard, ContactPanel: UiContactPanel, SalesFunnel: UiSalesFunnel, BookingCard: UiBookingCard, GuestCard: UiGuestCard, RoomGrid: UiRoomGrid, RoomCalendar: UiRoomCalendar, OccupancyChart: UiOccupancyChart, Chip: UiChip, IconTile: UiIconTile, StatusIcon: UiStatusIcon, UserCell: UiUserCell, StatRow: UiStatRow, CountryRow: UiCountryRow, StatLine: UiStatLine, StatStrip: UiStatStrip, VersusBar: UiVersusBar, SegBar: UiSegBar, HeroBanner: UiHeroBanner, TabTiles: UiTabTiles, PillTabs: UiPillTabs, PillSelect: UiPillSelect, ChartCard: UiChartCard, ActionCard: UiActionCard, Snackbar: UiSnackbar, TourPopover: UiTourPopover, ProfileHeader: UiProfileHeader, AuthSplit: UiAuthSplit, StatusPage: UiStatusPage, ValidatedField: UiValidatedField, Footer: UiFooter, DataGroup: UiDataGroup, OptionCard: UiOptionCard, OptionCards: UiOptionCards, RichEditor: UiRichEditor, RangeSlider: UiRangeSlider, RangeCalendar: UiRangeCalendar, StepDialog: UiStepDialog, FullscreenDialog: UiFullscreenDialog, PageDashboard: UiPageDashboard, PagePatterns: UiPagePatterns, PageCrm: UiPageCrm, PageBookings: UiPageBookings, PageCatalog: UiPageCatalog, PageDetail: UiPageDetail, PageSettings: UiPageSettings, PageUserList: UiPageUserList, PageProfile: UiPageProfile, PageForm: UiPageForm, PageOrder: UiPageOrder, PageAccount: UiPageAccount, PagePricing: UiPagePricing, PageFaq: UiPageFaq, PageAuth: UiPageAuth, PageStatus: UiPageStatus, TreeSelect: UiTreeSelect, ContextMenu: UiContextMenu, Sortable: UiSortable, Map: UiMap, ImageUpload: UiImageUpload, Screensaver: UiScreensaver, Tour: UiTour, Heading: UiHeading, Text: UiText, Box: UiBox, Center: UiCenter, HStack: UiHStack, VStack: UiVStack, Grid: UiGrid, Link: UiLink, Pressable: UiPressable, Icon: UiIcon, Portal: UiPortal, LiquidGlass: UiLiquidGlass, BottomSheet: UiBottomSheet, Actionsheet: UiActionsheet, ImageViewer: UiImageViewer, ChatAi: UiChatAi } = C;
|
|
26
|
+
export const install = app => { for (const [n, c] of Object.entries(C)) app.component('Ui' + n, c); };
|
|
27
|
+
export { fmt, setIconBase, rules } from '../core/index.js';
|
|
28
|
+
export { useUiTheme } from '../theme.js';
|
|
29
|
+
export default { install };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Design tokens for Flutter / native. Colors are sRGB hex approximations of the OKLCH source in src/styles/tokens.css.",
|
|
3
|
+
"palettes": { "gold": { "brand": "#BC926A", "sky": "#5FAACC" }, "tamam": { "brand": "#3FD13F", "sky": "#4FB5C4" } },
|
|
4
|
+
"dark": { "bg": "#1B1919", "text1": "#F1EDE8", "text2": "#D0CAC3", "text3": "#A19A93", "onBrand": "#1F1812", "green": "#6ED08F", "amber": "#E8B964", "red": "#E26E5F", "surface1": "#FFFFFF0E", "surface2": "#FFFFFF16", "surface3": "#FFFFFF21", "stroke": "#FFFFFF14" },
|
|
5
|
+
"light": { "bg": "#E7E3DF", "text1": "#241E18", "text2": "#4E4640", "text3": "#6C645D", "onBrand": "#1F1812", "green": "#2F7D4D", "amber": "#8A5F12", "red": "#B33A2C", "surface1": "#FFFFFF66", "surface2": "#FFFFFF8C", "surface3": "#FFFFFFBF", "stroke": "#4A3B2A1A" },
|
|
6
|
+
"radius": { "tile": 20, "card": 32, "pill": 999 },
|
|
7
|
+
"control": { "xs": 28, "sm": 32, "md": 40, "lg": 48, "xl": 56 },
|
|
8
|
+
"font": { "latin": "Manrope", "arabic": "Thmanyah Sans", "mono": "JetBrains Mono" }
|
|
9
|
+
}
|
package/types/core.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// Core (framework-neutral) entry. Most apps import from '@ziyarago/ui/vue' or '@ziyarago/ui/react' instead.
|
|
2
|
+
export { rules, setIconBase, fmt } from './shared';
|
|
3
|
+
export type * from './shared';
|
|
4
|
+
export const components: Record<string, { state?: Record<string, unknown>; slots?: string[]; render: (ctx: any) => unknown }>;
|
package/types/nuxt.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ModuleOptions {
|
|
2
|
+
css?: boolean;
|
|
3
|
+
prefix?: string;
|
|
4
|
+
theme?: false | { theme?: 'dark' | 'light'; palette?: 'gold' | 'tamam'; dir?: 'ltr' | 'rtl' };
|
|
5
|
+
}
|
|
6
|
+
declare const _default: import('@nuxt/schema').NuxtModule<ModuleOptions>;
|
|
7
|
+
export default _default;
|
|
8
|
+
declare module '@nuxt/schema' {
|
|
9
|
+
interface NuxtConfig { ziyarago?: ModuleOptions }
|
|
10
|
+
interface NuxtOptions { ziyarago?: ModuleOptions }
|
|
11
|
+
}
|