lapikit 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,7 +60,7 @@
60
60
  let componentClass = $derived(
61
61
  useClassName({
62
62
  baseClass: 'kit-btn',
63
- className: `${className ?? ''} kit-btn--${safeVariant}`.trim(),
63
+ className: `${className ?? ''}`.trim(),
64
64
  sClass,
65
65
  classProps
66
66
  })
@@ -212,10 +212,8 @@
212
212
  --kit-btn-bg: var(--kit-surface-2);
213
213
  --kit-btn-fg: var(--kit-fg);
214
214
  --kit-btn-bd: var(--kit-border);
215
- --kit-btn-bg--hover: color-mix(in oklab, var(--kit-btn-bg), var(--kit-fg) 6%);
216
- --kit-btn-bg--active: color-mix(in oklab, var(--kit-btn-bg), var(--kit-fg) 10%);
217
- --kit-btn-bd--hover: color-mix(in oklab, var(--kit-btn-bd), var(--kit-fg) 12%);
218
- --kit-btn-font: var(--kit-font);
215
+ --kit-btn-hover-bg: color-mix(in oklab, var(--kit-btn-bg), var(--kit-btn-fg) 6%);
216
+ --kit-btn-active-bg: color-mix(in oklab, var(--kit-btn-bg), var(--kit-btn-fg) 10%);
219
217
  --kit-btn-h-xs: 28px;
220
218
  --kit-btn-h-sm: 32px;
221
219
  --kit-btn-h-md: 40px;
@@ -226,10 +224,9 @@
226
224
  --kit-btn-px-md: 16px;
227
225
  --kit-btn-px-lg: 20px;
228
226
  --kit-btn-px-xl: 24px;
229
- --btn-density-scale: 1;
230
- --btn-density-height-scale: 1;
231
- --btn-radius: 8px;
232
- --btn-shape: var(--btn-radius);
227
+ --kit-btn-density-scale: 1;
228
+ --kit-btn-density-h-scale: 1;
229
+ --kit-btn-radius: 8px;
233
230
  --kit-btn-gap: 0.45em;
234
231
 
235
232
  position: relative;
@@ -237,12 +234,12 @@
237
234
  box-sizing: border-box;
238
235
  align-items: center;
239
236
  justify-content: center;
240
- font-family: var(--kit-btn-font);
241
- background: var(--btn-bg);
242
- color: var(--btn-fg);
243
- height: max(28px, calc(var(--btn-h) * var(--btn-density-height-scale)));
244
- padding-inline: calc(var(--btn-px) * var(--btn-density-scale));
245
- border-radius: var(--btn-radius);
237
+ font-family: var(--kit-font);
238
+ background: var(--kit-btn-bg);
239
+ color: var(--kit-btn-fg);
240
+ height: max(28px, calc(var(--kit-btn-h) * var(--kit-btn-density-h-scale)));
241
+ padding-inline: calc(var(--kit-btn-px) * var(--kit-btn-density-scale));
242
+ border-radius: var(--kit-btn-radius);
246
243
  text-decoration: none;
247
244
  white-space: nowrap;
248
245
  user-select: none;
@@ -254,35 +251,35 @@
254
251
  }
255
252
 
256
253
  .kit-btn:hover {
257
- background: var(--btn-hover-bg);
258
- color: var(--btn-hover-fg);
259
- text-decoration: var(--btn-decoration);
254
+ background: var(--kit-btn-hover-bg);
255
+ color: var(--kit-btn-fg);
256
+ text-decoration: var(--kit-btn-decoration);
260
257
  }
261
258
 
262
259
  .kit-btn:has(> :is(input[type='checkbox'], input[type='radio']):checked) {
263
- background: var(--btn-active-bg);
264
- color: var(--btn-active-fg);
265
- text-decoration: var(--btn-decoration);
260
+ background: var(--kit-btn-active-bg);
261
+ color: var(--kit-btn-fg);
262
+ text-decoration: var(--kit-btn-decoration);
266
263
  }
267
264
 
268
265
  .kit-btn:has(> :is(input[type='checkbox'], input[type='radio']):checked):hover {
269
- background: var(--btn-hover-bg);
270
- color: var(--btn-hover-fg);
271
- text-decoration: var(--btn-decoration);
266
+ background: var(--kit-btn-hover-bg);
267
+ color: var(--kit-btn-fg);
268
+ text-decoration: var(--kit-btn-decoration);
272
269
  }
273
270
 
274
271
  .kit-btn:active,
275
272
  .kit-btn[data-active='true'] {
276
- background: var(--btn-active-bg);
277
- color: var(--btn-active-fg);
278
- text-decoration: var(--btn-decoration);
273
+ background: var(--kit-btn-active-bg);
274
+ color: var(--kit-btn-fg);
275
+ text-decoration: var(--kit-btn-decoration);
279
276
  transform: translateY(1px);
280
277
  }
281
278
 
282
279
  .kit-btn[data-active='true']:hover {
283
- background: var(--btn-hover-bg);
284
- color: var(--btn-hover-fg);
285
- text-decoration: var(--btn-decoration);
280
+ background: var(--kit-btn-hover-bg);
281
+ color: var(--kit-btn-fg);
282
+ text-decoration: var(--kit-btn-decoration);
286
283
  }
287
284
 
288
285
  :is(.kit-btn:focus-visible, .kit-btn:has(> input:focus-visible)) {
@@ -302,51 +299,45 @@
302
299
  }
303
300
 
304
301
  .kit-btn > :is(input[type='checkbox'], input[type='radio']):after {
305
- --btn-content: attr(aria-label);
306
- content: var(--btn-content);
302
+ content: attr(aria-label);
307
303
  cursor: pointer;
308
304
  }
309
305
 
310
306
  /* variant */
311
307
  .kit-btn[data-variant='filled'] {
312
- /* default style*/
313
- --btn-bg: var(--kit-accent);
314
- --btn-fg: white;
315
- --btn-hover-bg: color-mix(in oklab, var(--kit-accent), black 10%);
316
- --btn-hover-fg: var(--btn-fg);
317
- --btn-active-bg: color-mix(in oklab, var(--kit-accent), black 16%);
318
- --btn-active-fg: var(--btn-fg);
308
+ --kit-btn-bg: var(--kit-accent);
309
+ --kit-btn-fg: white;
310
+ --kit-btn-hover-bg: color-mix(in oklab, var(--kit-btn-bg), black 10%);
311
+ --kit-btn-active-bg: color-mix(in oklab, var(--kit-btn-bg), black 16%);
319
312
  }
320
313
 
321
314
  .kit-btn[data-variant='outline'] {
322
315
  --outline-color: var(--kit-accent);
316
+ --kit-btn-bg: transparent;
317
+ --kit-btn-fg: var(--kit-accent);
318
+ --kit-btn-hover-bg: color-mix(in oklab, var(--kit-btn-fg), transparent 80%);
319
+ --kit-btn-active-bg: color-mix(in oklab, var(--kit-btn-fg), transparent 92%);
323
320
  }
324
321
 
325
- .kit-btn[data-variant='outline'],
326
322
  .kit-btn[data-variant='text'] {
327
- --btn-bg: transparent;
328
- --btn-fg: var(--kit-accent);
329
- --btn-hover-bg: color-mix(in oklab, var(--kit-accent), transparent 80%);
330
- --btn-hover-fg: var(--btn-fg);
331
- --btn-active-bg: color-mix(in oklab, var(--kit-accent), transparent 92%);
332
- --btn-active-fg: var(--btn-fg);
323
+ --kit-btn-bg: transparent;
324
+ --kit-btn-fg: var(--kit-accent);
325
+ --kit-btn-hover-bg: color-mix(in oklab, var(--kit-btn-fg), transparent 80%);
326
+ --kit-btn-active-bg: color-mix(in oklab, var(--kit-btn-fg), transparent 92%);
333
327
  }
334
328
 
335
329
  .kit-btn[data-variant='link'] {
336
- --btn-bg: transparent;
337
- --btn-fg: var(--kit-accent);
338
- --btn-hover-fg: var(--btn-fg);
339
- --btn-active-fg: var(--btn-fg);
340
- --btn-decoration: underline;
330
+ --kit-btn-bg: transparent;
331
+ --kit-btn-fg: var(--kit-accent);
332
+ --kit-btn-decoration: underline;
341
333
  height: inherit;
342
334
  padding: 0;
343
335
  }
344
336
 
345
337
  /* size */
346
338
  .kit-btn[data-size='xs'] {
347
- --btn-h: var(--kit-btn-h-xs);
348
- --btn-height: var(--kit-btn-h-xs);
349
- --btn-px: var(--kit-btn-px-xs);
339
+ --kit-btn-h: var(--kit-btn-h-xs);
340
+ --kit-btn-px: var(--kit-btn-px-xs);
350
341
  font-size: 12px;
351
342
  }
352
343
  .kit-btn[data-size='xs'] :global(.kit-icon:not([data-size])) {
@@ -354,9 +345,8 @@
354
345
  }
355
346
 
356
347
  .kit-btn[data-size='sm'] {
357
- --btn-h: var(--kit-btn-h-sm);
358
- --btn-height: var(--kit-btn-h-sm);
359
- --btn-px: var(--kit-btn-px-sm);
348
+ --kit-btn-h: var(--kit-btn-h-sm);
349
+ --kit-btn-px: var(--kit-btn-px-sm);
360
350
  font-size: 13px;
361
351
  }
362
352
  .kit-btn[data-size='sm'] :global(.kit-icon:not([data-size])) {
@@ -364,9 +354,8 @@
364
354
  }
365
355
 
366
356
  .kit-btn[data-size='md'] {
367
- --btn-h: var(--kit-btn-h-md);
368
- --btn-height: var(--kit-btn-h-md);
369
- --btn-px: var(--kit-btn-px-md);
357
+ --kit-btn-h: var(--kit-btn-h-md);
358
+ --kit-btn-px: var(--kit-btn-px-md);
370
359
  font-size: 14px;
371
360
  }
372
361
  .kit-btn[data-size='md'] :global(.kit-icon:not([data-size])) {
@@ -374,9 +363,8 @@
374
363
  }
375
364
 
376
365
  .kit-btn[data-size='lg'] {
377
- --btn-h: var(--kit-btn-h-lg);
378
- --btn-height: var(--kit-btn-h-lg);
379
- --btn-px: var(--kit-btn-px-lg);
366
+ --kit-btn-h: var(--kit-btn-h-lg);
367
+ --kit-btn-px: var(--kit-btn-px-lg);
380
368
  font-size: 15px;
381
369
  }
382
370
  .kit-btn[data-size='lg'] :global(.kit-icon:not([data-size])) {
@@ -384,9 +372,8 @@
384
372
  }
385
373
 
386
374
  .kit-btn[data-size='xl'] {
387
- --btn-h: var(--kit-btn-h-xl);
388
- --btn-height: var(--kit-btn-h-xl);
389
- --btn-px: var(--kit-btn-px-xl);
375
+ --kit-btn-h: var(--kit-btn-h-xl);
376
+ --kit-btn-px: var(--kit-btn-px-xl);
390
377
  font-size: 16px;
391
378
  }
392
379
  .kit-btn[data-size='xl'] :global(.kit-icon:not([data-size])) {
@@ -395,43 +382,43 @@
395
382
 
396
383
  /* density */
397
384
  .kit-btn[data-density='default'] {
398
- --btn-density-scale: 1;
399
- --btn-density-height-scale: 1;
385
+ --kit-btn-density-scale: 1;
386
+ --kit-btn-density-h-scale: 1;
400
387
  }
401
388
 
402
389
  .kit-btn[data-density='compact'] {
403
- --btn-density-scale: 0.9;
404
- --btn-density-height-scale: 0.92;
390
+ --kit-btn-density-scale: 0.9;
391
+ --kit-btn-density-h-scale: 0.92;
405
392
  }
406
393
 
407
394
  .kit-btn[data-density='comfortable'] {
408
- --btn-density-scale: 1.1;
409
- --btn-density-height-scale: 1.08;
395
+ --kit-btn-density-scale: 1.1;
396
+ --kit-btn-density-h-scale: 1.08;
410
397
  }
411
398
 
412
399
  /* rounded */
413
400
  .kit-btn[data-rounded='0'] {
414
- --btn-radius: 0;
401
+ --kit-btn-radius: 0;
415
402
  }
416
403
 
417
404
  .kit-btn[data-rounded='xs'] {
418
- --btn-radius: 2px;
405
+ --kit-btn-radius: 2px;
419
406
  }
420
407
 
421
408
  .kit-btn[data-rounded='sm'] {
422
- --btn-radius: 4px;
409
+ --kit-btn-radius: 4px;
423
410
  }
424
411
 
425
412
  .kit-btn[data-rounded='md'] {
426
- --btn-radius: 8px;
413
+ --kit-btn-radius: 8px;
427
414
  }
428
415
 
429
416
  .kit-btn[data-rounded='lg'] {
430
- --btn-radius: 16px;
417
+ --kit-btn-radius: 16px;
431
418
  }
432
419
 
433
420
  .kit-btn[data-rounded='xl'] {
434
- --btn-radius: 99999px;
421
+ --kit-btn-radius: 99999px;
435
422
  }
436
423
 
437
424
  .kit-btn[data-wide='true'] {
@@ -439,10 +426,6 @@
439
426
  max-width: 16rem;
440
427
  }
441
428
 
442
- .kit-btn .outline {
443
- pointer-events: none;
444
- }
445
-
446
429
  .kit-btn__inner {
447
430
  display: inline-flex;
448
431
  align-items: center;
@@ -503,8 +486,8 @@
503
486
  }
504
487
 
505
488
  .kit-btn[data-icon='true'] {
506
- width: max(28px, calc(var(--btn-h) * var(--btn-density-height-scale)));
507
- min-width: max(28px, calc(var(--btn-h) * var(--btn-density-height-scale)));
489
+ width: max(28px, calc(var(--kit-btn-h) * var(--kit-btn-density-h-scale)));
490
+ min-width: max(28px, calc(var(--kit-btn-h) * var(--kit-btn-density-h-scale)));
508
491
  padding-inline: 0;
509
492
  }
510
493
 
@@ -514,16 +497,15 @@
514
497
 
515
498
  .kit-btn[data-disabled='true'] {
516
499
  pointer-events: none;
517
- background: color-mix(in oklab, var(--btn-bg), transparent 70%);
518
- color: color-mix(in oklab, var(--btn-fg), transparent 45%);
519
-
500
+ background: color-mix(in oklab, var(--kit-btn-bg), transparent 70%);
501
+ color: color-mix(in oklab, var(--kit-btn-fg), transparent 45%);
520
502
  user-select: none;
521
503
  cursor: not-allowed;
522
504
  }
523
505
 
524
506
  .kit-btn[data-disabled='true'] :global(.kit-icon) {
525
- color: color-mix(in oklab, var(--btn-fg), transparent 45%) !important;
526
- --kit-icon-color: color-mix(in oklab, var(--btn-fg), transparent 45%) !important;
507
+ color: color-mix(in oklab, var(--kit-btn-fg), transparent 45%) !important;
508
+ --kit-icon-color: color-mix(in oklab, var(--kit-btn-fg), transparent 45%) !important;
527
509
  }
528
510
 
529
511
  .kit-btn[data-disabled='true'] :global(.kit-icon img),
@@ -64,7 +64,7 @@
64
64
  let componentClass = $derived(
65
65
  useClassName({
66
66
  baseClass: 'kit-card',
67
- className: `${className ?? ''} kit-card--${safeVariant}`.trim(),
67
+ className: `${className ?? ''}`.trim(),
68
68
  sClass,
69
69
  classProps
70
70
  })
@@ -88,6 +88,7 @@
88
88
  type={resolvedType}
89
89
  disabled={resolvedDisabled}
90
90
  tabindex={resolvedTabIndex}
91
+ data-variant={safeVariant}
91
92
  data-density={safeDensity}
92
93
  data-rounded={rounded}
93
94
  data-interactive={isInteractive}
@@ -111,25 +112,19 @@
111
112
  .kit-card {
112
113
  --kit-card-bg: var(--kit-surface-2);
113
114
  --kit-card-fg: var(--kit-fg);
114
- --kit-card-outline-color: var(--kit-border);
115
+ --kit-card-bd: var(--kit-border);
115
116
  --kit-card-radius: var(--kit-radius-2);
116
117
  --kit-card-padding-compact: var(--kit-space-1);
117
118
  --kit-card-padding-default: var(--kit-space-2);
118
119
  --kit-card-padding-comfortable: var(--kit-space-3);
119
-
120
- --card-shape: var(--kit-card-radius);
121
- --card-bg: var(--kit-card-bg);
122
- --card-fg: var(--kit-card-fg);
123
- --card-hover-bg: color-mix(in oklab, var(--card-bg), var(--card-fg) 6%);
124
- --card-active-bg: color-mix(in oklab, var(--card-bg), var(--card-fg) 10%);
125
- --card-hover-fg: var(--card-fg);
126
- --card-active-fg: var(--card-fg);
120
+ --kit-card-hover-bg: color-mix(in oklab, var(--kit-card-bg), var(--kit-card-fg) 6%);
121
+ --kit-card-active-bg: color-mix(in oklab, var(--kit-card-bg), var(--kit-card-fg) 10%);
127
122
 
128
123
  display: flex;
129
124
  flex-direction: column;
130
125
  gap: var(--kit-space-2);
131
- background: var(--card-bg);
132
- color: var(--card-fg);
126
+ background: var(--kit-card-bg);
127
+ color: var(--kit-card-fg);
133
128
  border: 0;
134
129
  border-radius: var(--kit-card-radius);
135
130
  box-sizing: border-box;
@@ -182,28 +177,26 @@
182
177
  padding: var(--kit-card-padding-comfortable);
183
178
  }
184
179
 
185
- .kit-card--outline {
186
- --outline-color: var(--kit-accent);
187
- --card-bg: transparent;
188
- --card-fg: var(--kit-accent);
189
- --card-hover-bg: color-mix(in oklab, var(--kit-accent), transparent 80%);
190
- --card-active-bg: color-mix(in oklab, var(--kit-accent), transparent 92%);
191
- --kit-card-outline-color: var(--outline-color);
180
+ .kit-card[data-variant='filled'] {
181
+ --kit-card-bg: var(--kit-accent);
182
+ --kit-card-fg: white;
183
+ --kit-card-hover-bg: color-mix(in oklab, var(--kit-card-bg), black 10%);
184
+ --kit-card-active-bg: color-mix(in oklab, var(--kit-card-bg), black 16%);
192
185
  }
193
186
 
194
- .kit-card--filled {
195
- --card-bg: var(--kit-accent);
196
- --card-fg: white;
197
- --card-hover-bg: color-mix(in oklab, var(--kit-accent), black 10%);
198
- --card-active-bg: color-mix(in oklab, var(--kit-accent), black 16%);
187
+ .kit-card[data-variant='outline'] {
188
+ --kit-card-bg: transparent;
189
+ --kit-card-fg: var(--kit-accent);
190
+ --kit-card-bd: var(--kit-accent);
191
+ --kit-card-hover-bg: color-mix(in oklab, var(--kit-card-fg), transparent 80%);
192
+ --kit-card-active-bg: color-mix(in oklab, var(--kit-card-fg), transparent 92%);
199
193
  }
200
194
 
201
- .kit-card--text {
202
- background: transparent;
203
- --card-bg: transparent;
204
- --card-fg: var(--kit-accent);
205
- --card-hover-bg: color-mix(in oklab, var(--kit-accent), transparent 80%);
206
- --card-active-bg: color-mix(in oklab, var(--kit-accent), transparent 92%);
195
+ .kit-card[data-variant='text'] {
196
+ --kit-card-bg: transparent;
197
+ --kit-card-fg: var(--kit-accent);
198
+ --kit-card-hover-bg: color-mix(in oklab, var(--kit-card-fg), transparent 80%);
199
+ --kit-card-active-bg: color-mix(in oklab, var(--kit-card-fg), transparent 92%);
207
200
  }
208
201
 
209
202
  .kit-card[data-interactive='true'][data-disabled='false'] {
@@ -212,28 +205,24 @@
212
205
 
213
206
  .kit-card[data-interactive='true'][data-disabled='false']:hover {
214
207
  translate: 0 -1px;
215
- background: var(--card-hover-bg);
216
- color: var(--card-hover-fg);
208
+ background: var(--kit-card-hover-bg);
217
209
  box-shadow: 0 10px 28px hsl(220 35% 8% / 0.12);
218
210
  }
219
211
 
220
- .kit-card--text[data-interactive='true'][data-disabled='false']:hover {
221
- background: var(--card-hover-bg);
222
- color: var(--card-hover-fg);
212
+ .kit-card[data-variant='text'][data-interactive='true'][data-disabled='false']:hover {
213
+ background: var(--kit-card-hover-bg);
223
214
  }
224
215
 
225
216
  .kit-card[data-interactive='true'][data-active='true'][data-disabled='false'],
226
217
  .kit-card[data-interactive='true'][data-disabled='false']:active {
227
218
  translate: 0 0;
228
- background: var(--card-active-bg);
229
- color: var(--card-active-fg);
219
+ background: var(--kit-card-active-bg);
230
220
  box-shadow: 0 4px 14px hsl(220 35% 8% / 0.1);
231
221
  }
232
222
 
233
- .kit-card--text[data-interactive='true'][data-active='true'][data-disabled='false'],
234
- .kit-card--text[data-interactive='true'][data-disabled='false']:active {
235
- background: var(--card-active-bg);
236
- color: var(--card-active-fg);
223
+ .kit-card[data-variant='text'][data-interactive='true'][data-active='true'][data-disabled='false'],
224
+ .kit-card[data-variant='text'][data-interactive='true'][data-disabled='false']:active {
225
+ background: var(--kit-card-active-bg);
237
226
  }
238
227
 
239
228
  .kit-card[data-interactive='true'][data-disabled='false']:focus-visible {
@@ -247,9 +236,7 @@
247
236
  }
248
237
 
249
238
  .kit-card .outline {
250
- --outline-color: var(--kit-card-outline-color);
251
- --btn-radius: var(--kit-card-radius);
252
- pointer-events: none;
239
+ --outline-color: var(--kit-card-bd);
253
240
  }
254
241
 
255
242
  .kit-card__media {